skill
molecule-publish
Public Made by Adomby adom
Publish molecules AND generic boards to the Adom wiki - one publisher, two shapes: OCCT conversion (molecule mode with stats gates, or plain for boards), component packaging, adom-wiki publish, APM render assets + component dependencies. Companion to adom-molecule-import.
← Commit history
Publish 2.5.1
4 files changed
+24−4
SKILL.md+7@@ -180,6 +180,13 @@ in APM with no BOM panel (#247, the Taprite carriers). Do it every publish: `board -> library -> components` (matches APM's board->library architecture; reference shape: barrett-land/usb3-to-ethernet-dataonly-molecule-library).+ **A library page's tags are `["library", <topical>...]` and MUST NOT+ contain `board` or `molecule` (#5).** The kind tag is what Nucleus keys+ on (priority `project > molecule > circuit > board > library`), so a+ stray `board`/`molecule` on a library wins and the page renders as a+ board/molecule in the gallery instead of a hidden library. Do NOT copy+ the parent board's/molecule's kind tag onto its library — the library is+ neither. 5. **Order + one version per cycle**: publish component pages first, then the library, then the board — a dep must exist when the depender publishes. Merge everything BEFORE the board's Stage 3 publish so each
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "molecule-publish",- "version": "2.5.0",+ "version": "2.5.1", "type": "skill", "description": "Publish molecules AND generic boards to the Adom wiki - one publisher, two shapes: OCCT conversion (molecule mode with stats gates, or plain for boards), component packaging, adom-wiki publish, APM render assets + component dependencies. Companion to adom-molecule-import.", "tags": [
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "molecule-publish",- "version": "2.5.0",+ "version": "2.5.1", "type": "skill", "description": "Publish molecules AND generic boards to the Adom wiki - one publisher, two shapes: OCCT conversion (molecule mode with stats gates, or plain for boards), component packaging, adom-wiki publish, APM render assets + component dependencies. Companion to adom-molecule-import.", "tags": [
scripts/component_graph.py+15−2@@ -180,8 +180,21 @@ def cmd_gate(a): slug = pkg.get("slug", "") fails, warns = [], [] - # the board's OWN slug must be MPN-shaped for components (#142)- if pkg.get("type") == "component" and pkg.get("component", {}).get("category") != "board":+ tags = [str(t).lower() for t in (pkg.get("tags") or [])]+ is_library = "library" in tags or slug.endswith("-library")++ # A library page must NOT carry a board/molecule KIND tag (#5): Nucleus keys+ # on the kind (project > molecule > circuit > board > library), so a stray+ # 'board'/'molecule' wins and the library renders as a board/molecule. The+ # library inherits the parent's kind tag if the generator isn't careful.+ if is_library:+ stray = [t for t in ("board", "molecule", "circuit", "project") if t in tags]+ if stray:+ fails.append(f"library page carries kind tag(s) {stray} - a library is none of "+ "these; tag it ['library', <topical>...] only (#5)")++ # the board's OWN slug must be MPN-shaped for components (#142) - NOT libraries+ elif pkg.get("type") == "component" and pkg.get("component", {}).get("category") != "board": if LCSC_RE.match(slug): fails.append(f"slug '{slug}' is an LCSC/distributor code, not an MPN (#142)") if VALUE_NAMED_RE.match(slug) or VALUE_RE.match(slug):