adom-chiplinter — 3D chip ↔ KiCad footprint linter
UnreviewedDetect every chip's electrical-contact features (legs / pins / pads / balls / tabs) automatically from a 3D model, validate against the KiCad footprint, and bake an annotated GLB so downstream tools c
name: adom-chiplinter
user-invocable: true
description: "3D chip ↔ KiCad footprint linter. Detect every chip's electrical-contact features (legs / pins / pads / balls / tabs) automatically from a 3D model, and validate placement against the KiCad footprint. Stage 5b pin-1 vision validation catches rotational ambiguity in QFN/QFP/BGA/SOIC packages where 4-fold or 2-fold symmetric pad layouts make the bake-time orientation an arbitrary tie-break. Use when: linting a 3D chip against a footprint, finding pin-1, validating pad alignment, baking annotated GLBs with chip-pad / FP-pad scene-graph entries for downstream Adom tools, debugging chip placement, building a chip test library. Trigger words: chiplinter, chip linter, validate chip footprint, chip pad detection, pin-1 detection, pin-1 vision, footprint vs 3d model, bbox-fit chip, chip rotational symmetry, chip-pads alignment, bake annotated glb, chiplinter inspect, chiplinter sweep, chiplinter run."
adom-chiplinter — 3D chip ↔ KiCad footprint linter
Detects every chip's electrical-contact features (legs / pins / pads / balls /
tabs) automatically from a 3D GLB model, validates placement against the KiCad
footprint, and bakes an annotated GLB so downstream Adom tools can read pad
positions from the scene graph.
The "north star": you point chiplinter at a chip directory containing the GLB,
KiCad footprint, datasheet PDF, and info.json, and it answers the question
"are these aligned?" — with no human override required.
Quick start
# Lint a single chip
chiplinter run path/to/chip-dir
# Lint every chip under test-cases/ and produce a coverage matrix
chiplinter sweep test-cases/
# Open the interactive inspector in a Hydrogen webview
chiplinter inspect path/to/chip-dir --port 18420
A chip directory contains:
<mpn>.kicad_mod— KiCad footprint<mpn>.glb— 3D model (color-preserving GLB fromstep2glbor kicad-cli)<mpn>.pdf— datasheet (optional, used by Stage 0 datasheet extraction)info.json— structural classification + provenance
Detection pipeline
Five stages, self-validating:
| Stage | What it does |
|---|---|
| 0 | Datasheet extraction (Claude vision → <mpn>-datasheet.json sidecar) |
| 1 | Load + classify (footprint pads, GLB triangles, body materials) |
| 2 | Z-band slab + 2D rasterize + connected-components → detected pad bboxes |
| 3 | 24-rotation fit-test + Hungarian matching (kind-aware inside-test) |
| 4 | Material-color rescue (filter to gold/metal triangles for inset pads) |
| 5 | Vision rescue (top-down render → Claude vision detects pin-1 indicator) |
Stage 3 produces both the orientation transform and the per-pad correspondence
in one pass. Stage 5b (pin-1 vision) is the deciding factor for rotationally-
symmetric chips — see "Rotational symmetry" below.
Pin-1 confidence model
The bake step writes chiplinter_pin1_marker.extras.chiplinter.confidence based
on pad-fit symmetry detection:
| Confidence | When | Meaning |
|---|---|---|
high |
orient #0 uniquely won at 100% | kicad-packages3d STEPs author pin-1 in the conventional position; FP authors pad-1 in the matching position. Identity-rotation match means the chip's authored pin-1 indicator aligns by construction. |
ambiguous |
multiple rotations tied at 100% | The chip's pad layout is rotationally symmetric (QFN/QFP/BGA/SOIC). Vision validation is the deciding factor. |
assumed |
a non-identity rotation won uniquely | Position derives from FP pad-1; chip-body indicator is the ground truth. Verify visually before reflow. |
verified |
vision confirmed indicator at expected quadrant | High confidence — both pad geometry and the manufacturer's chip-body indicator agree. |
conflict |
vision saw indicator at a different quadrant | Real disagreement. Downstream tools should refuse to auto-flow; human review required. |
vision_inconclusive |
vision ran but couldn't see an indicator | Falls back to bake-time confidence. |
Rotational symmetry
For QFN/QFP/BGA/SOIC packages with N-fold symmetric pad layouts, multiple
orientations of the chip will fit the footprint at 100% coverage. The bake step
detects ties by running the FP-projection raycast at every one of the 24
axis-aligned rotations; if more than one rotation matches the max hit count,
the marker carries rotational_symmetry_detected: true andtied_orientations: [0, 1, 2, 3] (or [0, 2] for 2-fold, etc.).
In this case bake-time confidence is ambiguous — the manufacturer's pin-1
indicator on the chip body is the only signal that breaks the tie. Pin-1 vision
validation is built in: render top-down via chiplinter inspect, click
"Validate pin-1," and the inspector ships a labeled top-down PNG to Claude
vision with a structured-output schema. The result writes back to the baked
GLB extras.
Output artifacts
chiplinter run <chip-dir> produces:
chiplinter-report.json— per-pad verdict + scoring metadatachiplinter-inspector.json— manifest for the inspector webview<mpn>-chiplinter.glb(after baking) — annotated GLB with three named groups:chiplinter_chip_pads(under__root__) — chip-frame rectangle mesheschiplinter_fp_pads(at scene root) — FP pads in PCB framechiplinter_pin1_marker— pin-1 location + confidence metadata
chiplinter sweep produces a coverage matrix (coverage-matrix.json +coverage.html) showing every chip's pass/warn/refuse status across the
detection pipeline.
Inspector webview
chiplinter inspect <chip-dir> --port 18420 serves an interactive Babylon.js
webview at http://localhost:18420 showing:
- The chip GLB rendered with FP pad bboxes + raycast lines + pin-1 marker
- Per-pad walkthrough that proves each FP pad ↔ chip-surface association
- 24-orientation iteration table with coverage % and σ
- One-click "Bake annotated GLB" → writes
<mpn>-chiplinter.glb - One-click "Validate pin-1" → captures top-down PNG, ships to vision, shows
verdict (Verified / Conflict / Inconclusive) with the bake-time symmetry
context
The inspector uses a vendored ESM build of adom-3d-viewer-babylon9 (Babylon
9.5.0 with the new Inspector v9). Open the page in a Hydrogen webview tab —
not in the deprecated Adom Viewer panel.
CLI flags
Usage: chiplinter <COMMAND>
Commands:
run Run detection on one chip directory; emits chiplinter-report.json
sweep Run all chips under a test-cases directory; emits coverage matrix
inspect Generate inspector manifest + serve the webview
install Deploy this binary + SKILL.md to the user's PATH
help Print this message or the help of the given subcommand(s)
Run options:
--verbose Detailed per-band diagnostics
Inspect options:
--port <PORT> [default: 18420]
--no-serve Generate manifest only, don't serve
Sweep options:
[cases_dir] [default: test-cases]
Required infra (auto-checked by chiplinter install)
step2glb— used to convert STEP → color-preserving GLB at chip-staging time
(chiplinter consumes pre-staged GLBs, but the staging pipeline assumes
step2glb is on PATH)claudeCLI — used for Stage 5b pin-1 vision validationadom-wiki(optional) — for publishing chip libraries
Troubleshooting
chiplinter inspectshows blank canvas — the vendored 3d-viewer assets
weren't installed alongside the binary. The binary must be co-located withweb/inspector.htmlandvendor/3d-viewer/. For now, runinspectfrom a
checkout ofadom-inc/adom-chiplinter.- Vision verdict is "conflict" — the manufacturer pin-1 indicator on the
chip body disagrees with KiCad pad-1's quadrant. For 4-fold symmetric chips
this is a true ambiguity that needs human review before reflow. chiplinter sweepREFUSES on multiple chips — checkinfo.jsonfor thestructural_typefield; some classes (smd_inset_pads,hybrid_smd_plus_mech_clip) need Stage 4 material rescue or Stage 5 vision
rescue, which require the corresponding flags to be enabled inDetectionParams.
Related
adom-3d-viewer-babylon9— vendored 3D viewer ESM bundle (Babylon 9.5.0 +
Inspector v9). Also published to the Adom Wiki.adom-chipfit— sister tool, validates a chip GLB against a footprint with a
simpler single-chip scope; chiplinter is the rebuilt "north-star" detector.step2glb— STEP → GLB converter; chiplinter consumes the GLB output.