$npx -y skills add ForgeCAD/forgecad-public-kit --skill forgecad-inspect-modelSelect, run, and interpret ForgeCAD inspection evidence for collisions, sections, wall thickness, components, masks, depth, normals, surface continuity, and fit.
| 1 | # Inspect Model |
| 2 | |
| 3 | Use `forgecad inspect ...` when a shaded render is too ambiguous and you need structured evidence: a bundle directory with evidence PNGs plus a root `manifest.json` (or, for `inspect section`, a probe directory with `result.json`, `section.svg`, `section.png`). Inspection is not a substitute artifact: look inside with sections, masks, `--focus`/`--hide`, and transparency — never edit the model into a cutaway or exploded default to make inspecting easier. Output dirs: let `inspect` allocate its timestamped directory by default (repeated probes never collide); use `/tmp/<model>-inspect` for throwaway bundles, a project directory only for persistent artifacts. |
| 4 | |
| 5 | Routing: authoring/API questions → `forgecad` skill; creating a new model → `forgecad-build-model`. |
| 6 | |
| 7 | ## Workflow |
| 8 | |
| 9 | 1. **Identify the failure question.** What would make the model wrong: overlap, thin walls, hidden cavity failure, disconnected or accidentally fused bodies, floating parts, orientation artifacts, identity confusion? |
| 10 | 2. **Confirm the model executes.** If in doubt, run `forgecad run model.forge.js` first; add `--debug-imports` for suspect imports. |
| 11 | 3. **Pick ONE targeted evidence command** from the table below. `forgecad inspect evidence` lists everything available. |
| 12 | 4. **Summarize the manifest first**, then use `jq` against `manifest.json` for targeted follow-up. The helper ships beside this SKILL.md — invoke it skill-dir-relative; it accepts the bundle directory or a `manifest.json` path: |
| 13 | |
| 14 | ```bash |
| 15 | python <this-skill-dir>/summarize_manifest.py /tmp/model-inspect |
| 16 | ``` |
| 17 | |
| 18 | 5. **Inspect the PNGs, not only the JSON.** View identity/context images first, then the risk evidence's view, then orthogonal cameras (`front`, `right`, `top`) when iso hides the issue, sections only when internals matter. In automation, resolve file paths through the manifest — custom cameras break canonical filenames. |
| 19 | 6. **Isolate intentional overlaps** with `--focus "A,B"` or `--hide "C"` so the remaining report stays meaningful. |
| 20 | 7. **Treat findings as model bugs**: unexpected collisions, critical thin regions, high unresolved thickness area, wrong component counts, floating bodies, or surprising gaps mean fix the model and reinspect. |
| 21 | 8. **Report honestly.** Include the exact command, bundle path, manifest highlights, and the PNG views actually inspected. Never claim geometry is verified if you only ran `forgecad run`. |
| 22 | |
| 23 | ## Evidence Selection |
| 24 | |
| 25 | | Question | Evidence command | |
| 26 | |----------|------------------| |
| 27 | | Quick visual sanity | `inspect visual image` | |
| 28 | | Kinematic rig, joints, axes, and links | `inspect visual rig` | |
| 29 | | Object naming and identity | `inspect visual objects` | |
| 30 | | Exact local section measurement, bore widths, rib thickness through a chosen line | `inspect section --ray ...` | |
| 31 | | Hidden internals, cavities, pockets, screw paths, captured components | `inspect sections at\|stack\|sample` | |
| 32 | | Multi-part interference, fit checks, ghost parts, moving clearances | `inspect fit interference` | |
| 33 | | Printability, shell walls, ribs, bosses, snaps, slots | `inspect manufacture thickness` plus `inspect sections at\|stack\|sample` when internals matter | |
| 34 | | Parts without a mesh-contact path to the ground | `inspect physical floating` | |
| 35 | | Accidental fusion, connected solids | `inspect physical components` | |
| 36 | | Air gaps between physical components | `inspect physical gaps` | |
| 37 | | Surface orientation, occlusion, faceting, strange protrusions | `inspect visual depth` or `inspect visual normals` | |
| 38 | | Loft, fillet, skin, and sweep surface continuity | `inspect surface zebra` or `inspect visual normals` | |
| 39 | | Reference-vs-candidate reconstruction comparison | `inspect compare overlay --with reference.3mf` | |
| 40 | |
| 41 | ## Section Probe + Replay |
| 42 | |
| 43 | The agent-native measure-then-recheck loop: |
| 44 | |
| 45 | ```bash |
| 46 | forgecad inspect section model.forge.js --plane yz --ray bore:-20,0:20,0 |
| 47 | forgecad inspect replay outputs/inspect/<probe>/result.json --source candidate.forge.js |
| 48 | ``` |
| 49 | |
| 50 | The probe's `result.json` field contract (frames, rulers, gaps, replaySpec) is documented in the forgecad skill's `docs/guides/inspection-bundles.md`. |
| 51 | |
| 52 | ## Misread Traps |
| 53 | |
| 54 | - Face-touching is not a collision; collision findings are positive-volume overlaps. |
| 55 | - Gray/unresolved thickness area means the evidence is incomplete, not that the model is safe. |
| 56 | - Distance/gap figures are bbox-gap metrics between components, not closest-surface distances. |
| 57 | - Depth, normals, and zebra are visual aids (heatmap, camera-view normals, stripe shader), not exact measurements or curvature proofs. |
| 58 | - Resolve mask colors through the manifest's object list, never by object order. |
| 59 | |
| 60 | ## Reference |
| 61 | |
| 62 | Bundle/manifest contract, evidence semantics, and current limits: the forgecad skill's `docs/guides/inspection-bundles.md`. CLI |