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+30−4@@ -50,6 +50,8 @@ step2glb convert <name>.step --board <name>.kicad_pcb --pin medium \ ``` Requires `step2glb` >= 0.11.0 (`adom-wiki pkg install adom/adom-step2glb`).+(No `adom-wiki` on the container? Bootstrap it first:+`curl -fsSL https://wiki.adom.inc/download/adom/adom-wiki-cli/1.0.2/adom-wiki-cli-v1.0.2 -o ~/.local/bin/adom-wiki && chmod +x ~/.local/bin/adom-wiki` — then keep using `adom-wiki`, not legacy tools.) It posts multipart to `/convert?molecule=true&pin=...`, polls the job, downloads the GLB **and** `<slug>_footprint.json` + `<slug>_symbol.json` beside it, prints the full stats block, and emits gate hints on failures.@@ -75,7 +77,7 @@ Artifacts: `GET /jobs/{id}/result` → `<name>.glb`, ``` <slug>/- package.json # slug, version, type: "component", description ≥20 chars, tags+ package.json # see REQUIRED fields below <slug>.glb # OCCT artifact — MUST be named exactly <slug>.glb (see below) <name>.kicad_pcb|.brd # board source <name>.kicad_sch|.sch # schematic source@@ -85,6 +87,23 @@ Artifacts: `GET /jobs/{id}/result` → `<name>.glb`, [extras: silk PNGs, .f3d, .usdz, gerbers, bom, cpl] ``` +`package.json` REQUIRED fields (publish 400s or silently under-registers+without them):++```json+{+ "slug": "<slug>", "version": "1.0.0", "type": "component",+ "description": "<≥20 chars>", "tags": ["molecule", "..."],+ "component": { "mpn": "<name>", "manufacturer": "", "category": "other" },+ "hero": { "headline": "...", "subhead": "...", "screenshot": "screenshots/hero.png" }+}+```++- The **`component` block is what creates the page's component_metadata row —+ without it `metadata.model_3d_path` is never set and imports fail** with+ "no published GLB" even though the file is there.+- The **`hero` block + `screenshots/hero.png` are hard-required** at publish.+ Do NOT include a `page.json` — the server generates it, and a hand-made one can blank the page brief or override org/visibility on reindex. @@ -105,12 +124,19 @@ adom-wiki page visibility <owner>/<slug> --preset open # or private Verify before declaring done: - `adom-wiki api /api/v1/pages/<slug>` → `metadata.model_3d_path` is set-- **the GLB at `model_3d_path` is YOUR anchored one** — download it and check- for the anchor node (a plain publish-time conversion has none):+- **the GLB at `model_3d_path` is byte-identical to YOUR gated conversion+ output** — this is the anchoring proof. (Do NOT inspect the GLB for a+ `molecule_anchor` node: the optimizer flattens it away by design — the+ anchoring survives as baked geometry, not as a node. A gate on that node+ false-fails every properly converted molecule.) ```bash curl -fsSL "https://wiki.adom.inc/blob/component/<slug>/<slug>.glb" -o /tmp/check.glb- python3 -c "import struct,json,sys; d=open('/tmp/check.glb','rb').read(); l=struct.unpack('<I',d[12:16])[0]; j=json.loads(d[20:20+l]); ok=any(n.get('name')=='molecule_anchor' for n in j.get('nodes',[])); print('anchored GLB' if ok else 'PLAIN GLB — STOP: re-push your OCCT GLB as <slug>.glb'); sys.exit(0 if ok else 1)"+ sha256sum /tmp/check.glb <slug>.glb # MUST match — if not, the page is+ # serving a different GLB (e.g. the wiki's plain auto-conversion): re-push+ # your OCCT GLB as <slug>.glb and re-verify. ```+ Your conversion's stats block (`molecule_anchored: true`, no warnings) plus+ this checksum equals a verified anchored GLB on the page. - the page's Files tab shows the full bundle (registry and git layers are separate — publish alone does not populate Files)
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "molecule-publish",- "version": "1.1.0",+ "version": "1.1.1", "type": "skill", "description": "Publish a molecule source bundle (STEP + schematic + board + metadata) to the Adom wiki: OCCT molecule-mode conversion with stats gates, component packaging, adom-wiki publish. EDA-agnostic middle of the pipeline; companion to adom-molecule-import.", "tags": [
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "molecule-publish",- "version": "1.1.0",+ "version": "1.1.1", "type": "skill", "description": "Publish a molecule source bundle (STEP + schematic + board + metadata) to the Adom wiki: OCCT molecule-mode conversion with stats gates, component packaging, adom-wiki publish. EDA-agnostic middle of the pipeline; companion to adom-molecule-import.", "tags": [