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
SKILL.md+52−6@@ -139,14 +139,24 @@ plain one shadows it and every import silently gets an unanchored model. (This is exactly what broke the COSMIIC boards.) Matching the name ensures your anchored GLB is the one `model_3d_path` resolves to. -## Stage 2.5 — Component dependencies (BEFORE publish — one version per cycle)+## Stage 2.5 — Component dependencies (AUTOMATED, BEFORE publish) APM lists a board/molecule's components from `package.json.dependencies`-(one-hop expand). Map the design's BOM parts to wiki component slugs and-MERGE them into the Stage 2 `package.json` — before Stage 3's publish, so-each publish cycle produces exactly ONE registry version (a deps-only-follow-up publish creates an extra version whose renders are identical:-harmless under APM's dedup, but noise in the version selector).+(one-hop expand). This stage is NOT optional and NOT the user's job — a+publish that skips it produces a board that looks successful but shows up+in APM with no BOM panel (#247, the Taprite carriers). Do it every publish:++1. **Parse the BOM** (BOM CSV beside the sources, else the `.kicad_sch`).+2. **Electrical rows only** — skip logos, silkscreen art, fiducials,+ mounting holes, DIN adapters, graphic/mechanical symbols.+3. **Resolve the real MPN** for each row (never value names — #142). A row+ with no MPN and no unambiguous standard part = FLAG for human+ resolution; report it, never silently drop it.+4. **MERGE** owner-qualified refs into the Stage 2 `package.json` — before+ Stage 3's publish, so each publish cycle produces exactly ONE registry+ version (a deps-only follow-up publish creates an extra version whose+ renders are identical: harmless under APM's dedup, but noise in the+ version selector). - Mapping helper: `skills/publish-board/kicad_board_bundle.py` on the `adom/adom-project-manager` page (`adom-wiki repo clone adom/adom-project-manager`).@@ -160,6 +170,31 @@ harmless under APM's dedup, but noise in the version selector). - Known behavior to keep in mind: deps are real registry deps, so `pkg install <board>` will pull the component pages too. +## Stage 2.6 — Auto-create missing component pages++A dep that references a nonexistent page dangles. For each electrical BOM+part with no wiki page, CREATE one (then reference it) — report created vs+reused vs flagged:++- **Page standard**: `type: component`, slug/title = normalized MPN, with+ `<MPN>.kicad_sym` + `<MPN>.kicad_mod` + STEP + **step2glb** GLB ++ `<MPN>.adom-lbr.json` + hero + `component` block.+- **Asset sources, in order**: KiCad stdlib via `service-kicad`+ (`fp fetch <lib> <name>`, `sym fetch <lib>`, `model fetch <lib>.3dshapes/+ <name>.step`); the board's own embedded footprints/symbols for custom+ parts (extract the `(footprint ...)` block from the `.kicad_pcb`, the+ lib symbol from the `.kicad_sch`).+- **adom-lbr JSON**: `adom-lbr import-kicad --sym <f> --fp <f> --mpn <MPN>`;+ also ship the Fusion `.lbr` from `adom-lbr generate`.+- **3D is hard-required by publish lint.** If the part's model exists only+ in the designer's local library (footprint `(model ...)` pointing at a+ local path), FLAG the page as pending with the exact missing file — do+ NOT fabricate geometry and do NOT drop the part. The dep is added only+ once the page exists.+- Hero: render the GLB with adom-glb2png (iso view), or for pending-3D+ parts a real KiCad footprint render (`service-kicad pcb export svg` on a+ small custom sheet).+ ## Stage 3 — Publish + verify ```bash@@ -228,6 +263,17 @@ today; EAGLE/Fusion (`.brd`/`.sch`) pages report "nothing rendered" and skip gracefully — APM shows a static version label for them (Fusion rendering is landing in APM; nothing changes on this side when it does). +## Publish completion checklist (a publish is NOT done until all pass)++- [ ] `metadata.model_3d_path` set; page GLB sha256 == your gated conversion+- [ ] `dependencies` populated from the BOM (Stage 2.5) — `{}` on a board+ with electrical parts is a FAILED publish, not a done one+- [ ] every referenced component page exists (Stage 2.6), or is explicitly+ flagged pending with what it needs+- [ ] `render/manifest.json` on the page with `current` == the version you+ just published (Stage 3.5)+- [ ] molecule shape only: provenance stamp + footprint/symbol artifacts+ ## Stage 4 — Handoff Import to Hydrogen is `adom-molecule-import`'s job (ships with
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "molecule-publish",- "version": "2.1.4",+ "version": "2.2.0", "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.1.4",+ "version": "2.2.0", "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": [