forgecad 0.10.3 → 0.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/assets/{AdminPage-CK7ObBz3.js → AdminPage-B3L3W1Uo.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-Ds7Z2doN.js → BenchmarkPage-DXKVXMrJ.js} +2 -2
  3. package/dist/assets/{BlogPage-DlPbpt6A.js → BlogPage-B7BWxOCg.js} +1 -1
  4. package/dist/assets/{DocsPage-vZb3b3Y0.js → DocsPage-BPGGwht1.js} +28 -43
  5. package/dist/assets/{EditorApp-HLoKfe15.js → EditorApp-BWUGCdD5.js} +49 -16
  6. package/dist/assets/{EmbedViewer--KnqBKrJ.js → EmbedViewer-DygByZS2.js} +2 -2
  7. package/dist/assets/{LandingPageProofDriven-C_LssmnA.js → LandingPageProofDriven-BoVE7JGY.js} +54 -36
  8. package/dist/assets/{LegalPage-DGsyo4n1.js → LegalPage-Din8wv8d.js} +2 -2
  9. package/dist/assets/{PricingPage-BOE27B-R.js → PricingPage-C2PMzmDc.js} +2 -2
  10. package/dist/assets/{SettingsPage-f47cnk39.js → SettingsPage-BlJDCRe8.js} +1 -1
  11. package/dist/assets/{app-D6ccu2Xx.js → app-BsRYSfxY.js} +238 -3714
  12. package/dist/assets/{backendInit-DbTkQN9J.js → backendInit-6C0DLgH0.js} +5972 -1566
  13. package/dist/assets/cli/{render-BsngirjC.js → render-XXol_ET7.js} +724 -112
  14. package/dist/assets/{constructionHistoryWorker-PCwXrTDB.js → constructionHistoryWorker-cTHWRJEi.js} +528 -252
  15. package/dist/assets/{evalWorker-CS63PfZu.js → evalWorker-BssDYW9u.js} +1453 -902
  16. package/dist/assets/{inspectWorker-Y4cOzNyA.js → inspectWorker-ymhBV4Ll.js} +2635 -1024
  17. package/dist/assets/{jointPose-AMvCywzS.js → jointPose-B0blBj9A.js} +1 -1
  18. package/dist/assets/{landing-proof-driven-ORyigZ6p.css → landing-proof-driven-Cpf-MIbI.css} +73 -13
  19. package/dist/assets/{manifold-Crd_F2qx.js → manifold-B_7QXpGB.js} +1 -1
  20. package/dist/assets/{manifold-k2kRcc85.js → manifold-CNShmpEJ.js} +1 -1
  21. package/dist/assets/{manifold-CBry38ly.js → manifold-CYlIm-M6.js} +2 -2
  22. package/dist/assets/{reportWorker-CWvn0CEv.js → reportWorker-Cb5eyM7D.js} +1407 -892
  23. package/dist/cli/render.html +1 -1
  24. package/dist/docs/index.html +2 -2
  25. package/dist/docs-raw/AI/usage.md +17 -15
  26. package/dist/docs-raw/component-model.md +2 -2
  27. package/dist/docs-raw/generated/concepts.md +5 -1
  28. package/dist/docs-raw/generated/core.md +26 -0
  29. package/dist/docs-raw/generated/runtime-names.md +1 -1
  30. package/dist/docs-raw/guides/inspection-bundles.md +1 -1
  31. package/dist/docs-raw/simulation-workflow.md +1 -1
  32. package/dist/docs-raw/skills/{forgecad-make-a-model.md → forgecad-build-model.md} +18 -8
  33. package/dist/docs-raw/skills/{forgecad-spec-by-walking-through-it.md → forgecad-design-spec.md} +6 -6
  34. package/dist/docs-raw/skills/{forgecad-model-grader.md → forgecad-grade-model.md} +8 -6
  35. package/{dist-skill/website/skills/forgecad-visual-spec.md → dist/docs-raw/skills/forgecad-image-prompt.md} +7 -7
  36. package/dist/docs-raw/skills/{forgecad-render-inspect.md → forgecad-inspect-model.md} +6 -6
  37. package/{dist-skill/website/skills/forgecad-project.md → dist/docs-raw/skills/forgecad-project-sync.md} +5 -5
  38. package/dist/docs-raw/skills/{forgecad-3d-reconstruction.md → forgecad-reconstruct-cad-file.md} +7 -7
  39. package/dist/docs-raw/skills/{forgecad-image-replicator.md → forgecad-reconstruct-from-images.md} +12 -12
  40. package/dist/docs-raw/skills/{forgecad-mujoco-verify.md → forgecad-verify-mujoco.md} +6 -6
  41. package/dist/docs-raw/skills/index.md +9 -12
  42. package/dist/index.html +9 -9
  43. package/dist/llms.txt +7 -7
  44. package/dist/sitemap.xml +16 -16
  45. package/dist-cli/{check-compiler-HPF2T2FS.js → check-compiler-4RPB6SB5.js} +1 -1
  46. package/dist-cli/{check-query-propagation-HYSLTXAB.js → check-query-propagation-KN3DFQTX.js} +1 -1
  47. package/dist-cli/{chunk-WLUKAW3H.js → chunk-UHBRMYA6.js} +28802 -28152
  48. package/dist-cli/forgecad.js +660 -9
  49. package/dist-skill/CONTEXT.md +27 -1
  50. package/dist-skill/docs/generated/core.md +26 -0
  51. package/dist-skill/docs/generated/runtime-names.md +1 -1
  52. package/dist-skill/docs/guides/inspection-bundles.md +1 -1
  53. package/dist-skill/library/README.md +9 -12
  54. package/dist-skill/library/{forgecad-make-a-model → forgecad-build-model}/SKILL.md +16 -6
  55. package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/SKILL.md +4 -4
  56. package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/references/master-prompt.md +1 -1
  57. package/dist-skill/library/{forgecad-model-grader → forgecad-grade-model}/SKILL.md +6 -4
  58. package/dist-skill/library/forgecad-grade-model/agents/openai.yaml +4 -0
  59. package/dist-skill/library/{forgecad-visual-spec → forgecad-image-prompt}/SKILL.md +5 -5
  60. package/dist-skill/library/forgecad-image-prompt/agents/openai.yaml +4 -0
  61. package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/SKILL.md +4 -4
  62. package/dist-skill/library/{forgecad-project → forgecad-project-sync}/SKILL.md +3 -3
  63. package/dist-skill/library/{forgecad-3d-reconstruction → forgecad-reconstruct-cad-file}/SKILL.md +5 -5
  64. package/dist-skill/library/forgecad-reconstruct-cad-file/agents/openai.yaml +4 -0
  65. package/dist-skill/library/{forgecad-image-replicator → forgecad-reconstruct-from-images}/SKILL.md +10 -10
  66. package/dist-skill/library/forgecad-reconstruct-from-images/agents/openai.yaml +4 -0
  67. package/dist-skill/library/{forgecad-mujoco-verify → forgecad-verify-mujoco}/SKILL.md +4 -4
  68. package/dist-skill/website/skills/{forgecad-make-a-model.md → forgecad-build-model.md} +18 -8
  69. package/dist-skill/website/skills/{forgecad-spec-by-walking-through-it.md → forgecad-design-spec.md} +6 -6
  70. package/dist-skill/website/skills/{forgecad-model-grader.md → forgecad-grade-model.md} +8 -6
  71. package/{dist/docs-raw/skills/forgecad-visual-spec.md → dist-skill/website/skills/forgecad-image-prompt.md} +7 -7
  72. package/dist-skill/website/skills/{forgecad-render-inspect.md → forgecad-inspect-model.md} +6 -6
  73. package/{dist/docs-raw/skills/forgecad-project.md → dist-skill/website/skills/forgecad-project-sync.md} +5 -5
  74. package/dist-skill/website/skills/{forgecad-3d-reconstruction.md → forgecad-reconstruct-cad-file.md} +7 -7
  75. package/dist-skill/website/skills/{forgecad-image-replicator.md → forgecad-reconstruct-from-images.md} +12 -12
  76. package/dist-skill/website/skills/{forgecad-mujoco-verify.md → forgecad-verify-mujoco.md} +6 -6
  77. package/dist-skill/website/skills/index.md +9 -12
  78. package/examples/api/texture-projection.forge.js +75 -0
  79. package/examples/assets/uv-grid.png +0 -0
  80. package/package.json +1 -1
  81. package/dist/docs-raw/skills/forgecad-blockout-model.md +0 -49
  82. package/dist/docs-raw/skills/forgecad-component-model.md +0 -53
  83. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +0 -60
  84. package/dist-skill/library/forgecad-3d-reconstruction/agents/openai.yaml +0 -4
  85. package/dist-skill/library/forgecad-blockout-model/SKILL.md +0 -42
  86. package/dist-skill/library/forgecad-component-model/SKILL.md +0 -46
  87. package/dist-skill/library/forgecad-image-replicator/agents/openai.yaml +0 -4
  88. package/dist-skill/library/forgecad-model-grader/agents/openai.yaml +0 -4
  89. package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +0 -48
  90. package/dist-skill/library/forgecad-reconstruction-benchmark/agents/openai.yaml +0 -4
  91. package/dist-skill/library/forgecad-visual-spec/agents/openai.yaml +0 -4
  92. package/dist-skill/website/skills/forgecad-blockout-model.md +0 -49
  93. package/dist-skill/website/skills/forgecad-component-model.md +0 -53
  94. package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +0 -60
  95. /package/dist/assets/{landing-proof-driven-DiGqdtWa.js → landing-proof-driven-BxZZh5r5.js} +0 -0
  96. /package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/references/default-profiles.md +0 -0
  97. /package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/summarize_manifest.py +0 -0
  98. /package/dist-skill/library/{forgecad-image-replicator → forgecad-reconstruct-from-images}/scripts/compare_images.py +0 -0
  99. /package/dist-skill/library/{forgecad-mujoco-verify → forgecad-verify-mujoco}/scripts/mujoco_verify.py +0 -0
@@ -97,7 +97,7 @@ To verify installation, ask the agent:
97
97
  What ForgeCAD skills are available?
98
98
  ```
99
99
 
100
- You should see `forgecad` plus companion skills such as `forgecad-make-a-model`, `forgecad-render-inspect`, `forgecad-spec-by-walking-through-it`, and `forgecad-project`.
100
+ You should see `forgecad` plus companion skills such as `forgecad-build-model`, `forgecad-inspect-model`, `forgecad-design-spec`, and `forgecad-project-sync`.
101
101
 
102
102
  If you only want the core modeling skill without companion workflows:
103
103
 
@@ -130,16 +130,17 @@ push when the result is ready for the browser.
130
130
  ### Mechanism Or Assembly
131
131
 
132
132
  ```text
133
- Use forgecad-component-model and forgecad. Parts must build at origin. The
134
- assembly positions parts with connectors or explicit assembly-level placement.
135
- Validate with forgecad run, inspect physical components, inspect fit interference and visual objects,
136
- and run parameter checks before calling it done.
133
+ Use forgecad-build-model and forgecad. For multi-part assemblies, parts must
134
+ build at origin, expose connectors/metadata, and let the parent assembly position
135
+ them with connectors or matchTo(). Validate with forgecad run, inspect physical
136
+ components, inspect fit interference and visual objects, and run parameter
137
+ checks before calling it done.
137
138
  ```
138
139
 
139
- ### Image Or Product Replication
140
+ ### Image Or Product Reconstruction
140
141
 
141
142
  ```text
142
- Use the ForgeCAD image-replication workflow. Treat the reference images as
143
+ Use forgecad-reconstruct-from-images. Treat the reference images as
143
144
  evidence, infer dimensions explicitly, build real CAD geometry, and compare
144
145
  renders against the references. Do not stop at a decorative approximation.
145
146
  Validate with forgecad run and targeted forgecad inspect evidence before finalizing.
@@ -205,14 +206,15 @@ For the full command reference, see [ForgeCAD CLI](../CLI.md).
205
206
  | Skill | Use it for |
206
207
  |---|---|
207
208
  | `forgecad` | Core model authoring, editing, debugging, imports, assembly, render/export commands, and CLI validation. |
208
- | `forgecad-spec-by-walking-through-it` | Designing in a git-reviewed document before code: fuzzy-request intake and process choice, the HLD (requirements, alternatives, decisions), and the LLD (exact dimensions, constraints, parameters, verification). |
209
- | `forgecad-make-a-model` | Creating a new `.forge.js` model in the active ForgeCAD project and validating it. |
210
- | `forgecad-component-model` | Building or reviewing multi-file assemblies where parts build at origin and the parent assembly positions them through connectors. |
211
- | `forgecad-blockout-model` | Making rough concept geometry to explore proportions, layout, motion envelope, or spatial intuition before detailed modeling. |
212
- | `forgecad-image-replicator` | Recreating an object from reference images as real ForgeCAD geometry through camera-calibrated render/compare/iterate loops. |
213
- | `forgecad-render-inspect` | Generating and interpreting `forgecad inspect <family> <mode>` bundles for fit interference, wall thickness, connectivity, masks, depth, normals, and sections. |
214
- | `forgecad-visual-spec` | Producing builder-honest image prompts from a concrete model, HLD, LLD, or build brief. |
215
- | `forgecad-project` | Managing forgecad.io projects from the CLI: init, clone, pull, push, file commands, members, publish, and shares. |
209
+ | `forgecad-design-spec` | Designing in a git-reviewed document before code: fuzzy-request intake and process choice, the HLD (requirements, alternatives, decisions), and the LLD (exact dimensions, constraints, parameters, verification). |
210
+ | `forgecad-build-model` | Creating a new `.forge.js` model in the active ForgeCAD project, including multi-part assembly discipline and validation. |
211
+ | `forgecad-reconstruct-cad-file` | Reconstructing a readable parametric ForgeCAD model from an existing STL, OBJ, 3MF, STEP, or STP file. |
212
+ | `forgecad-reconstruct-from-images` | Recreating an object from reference images as real ForgeCAD geometry through camera-calibrated render/compare/iterate loops. |
213
+ | `forgecad-inspect-model` | Generating and interpreting `forgecad inspect <family> <mode>` bundles for fit interference, wall thickness, connectivity, masks, depth, normals, and sections. |
214
+ | `forgecad-grade-model` | Reviewing and scoring a model against a requirement, brief, prompt, reference, or acceptance criteria. |
215
+ | `forgecad-verify-mujoco` | Verifying MJCF exports in MuJoCo with dynamics, contacts, controls, joint travel, and rendered evidence. |
216
+ | `forgecad-image-prompt` | Producing builder-honest image prompts from a concrete model, HLD, LLD, or build brief. |
217
+ | `forgecad-project-sync` | Managing forgecad.io projects from the CLI: init, clone, pull, push, file commands, members, publish, and shares. |
216
218
 
217
219
  The source prompts for CLI-shipped companion skills live in the repository under `agent-skill-library/`. Public export is controlled by `forgecad-public: true` in each skill's `SKILL.md` frontmatter. Repo-local operational skills live under `.agents/skills/` and are not shipped through the CLI. To list the current public set from a source checkout:
218
220
 
@@ -5,7 +5,7 @@ skill-order: 4
5
5
 
6
6
  # The Component Model
7
7
 
8
- Long-form rationale for ForgeCAD's multi-part architecture. The enforceable rule sheet anti-patterns, design gate, file-structure rules — lives in the `forgecad-component-model` skill (`agent-skill-library/forgecad-component-model/SKILL.md`). Connector and joint mechanics (frame semantics, mating, mirrored-revolute handedness) live in the assembly JSDoc, surfaced in `docs/skill/generated/assembly.md`.
8
+ Long-form rationale for ForgeCAD's multi-part architecture. The public rule sheet is embedded where agents need it: `forgecad-build-model` for authoring and `forgecad-grade-model` for review caps. Connector and joint mechanics (frame semantics, mating, mirrored-revolute handedness) live in the assembly JSDoc, surfaced in `docs/skill/generated/assembly.md`.
9
9
 
10
10
  ## The Principle
11
11
 
@@ -44,4 +44,4 @@ One file per project-specific assembly is the default because it maximizes local
44
44
 
45
45
  ## Enforcement
46
46
 
47
- The anti-pattern list and the three-question design gate live in the `forgecad-component-model` skill; every multi-part example and agent-built assembly must pass that gate.
47
+ The anti-pattern list and design gate are enforced by the public build and grading skills; every multi-part example and agent-built assembly must pass that gate.
@@ -17,7 +17,7 @@ Every public API function belongs to one of 16 fundamental concepts. This is an
17
17
  - **[C11: Parameterization & UI](#c11-parameterization-ui)** — Declare user-facing controls that drive model geometry. *(6 functions)*
18
18
  - **[C12: Dimensional Demotion](#c12-dimensional-demotion)** — Extract 2D geometry from a 3D solid (section, projection). *(3 functions)*
19
19
  - **[C13: Export & Output](#c13-export-output)** — Convert geometry to external formats (STL, 3MF, SVG, DXF, G-code, PDF). *(14 functions)*
20
- - **[C14: Visual & Debugging](#c14-visual-debugging)** — Control viewport appearance and debugging aids. *(35 functions)*
20
+ - **[C14: Visual & Debugging](#c14-visual-debugging)** — Control viewport appearance and debugging aids. *(39 functions)*
21
21
  - **[C15: Import & Composition](#c15-import-composition)** — Bring external geometry or other ForgeCAD modules into the current script. *(1 functions)*
22
22
  - **[C16: Part Library](#c16-part-library)** — Pre-built parametric parts accessible via `lib.*`. *(4 functions)*
23
23
 
@@ -301,6 +301,10 @@ Control viewport appearance and debugging aids.
301
301
 
302
302
  - `Viewport.label(text, at, options?)` — Add a render-only viewport label at a world-space point. → [viewport](/docs/viewport#viewport-runtime)
303
303
  - `Viewport.highlight(target, options?)` — Highlight any geometry for visual debugging in the viewport. → [viewport](/docs/viewport#viewport-runtime)
304
+ - `Wrap.flat(opts)` — Project the image flat onto an axis-aligned face — `onto` is one of top/bottom/front/back/left/right. → [core](/docs/core#wrap)
305
+ - `Wrap.aroundCylinder(opts)` — Wrap the image around a cylinder like a can label — `axis` is 'x' | 'y' | 'z'. → [core](/docs/core#wrap)
306
+ - `Wrap.onSphere(opts?)` — Map the image over a sphere like a globe (longitude/latitude). → [core](/docs/core#wrap)
307
+ - `Wrap.box(opts?)` — Cube-map the image onto a box — one copy per face. → [core](/docs/core#wrap)
304
308
  - `verify.that(label, check, message?)` — Custom predicate check. → [core](/docs/core#verify)
305
309
  - `verify.equal(label, actual, expected, tolerance?, message?)` — Check that two numbers are approximately equal (within tolerance). → [core](/docs/core#verify)
306
310
  - `verify.notEqual(label, actual, unexpected, tolerance?, message?)` — Check that two numbers are NOT equal (differ by more than tolerance). → [core](/docs/core#verify)
@@ -34,6 +34,7 @@ skill-order: 100
34
34
  - [Points](#points)
35
35
  - [connector](#connector)
36
36
  - [Import](#import)
37
+ - [Wrap](#wrap)
37
38
 
38
39
  ## Functions
39
40
 
@@ -741,6 +742,7 @@ box(100, 100, 10).color('#gold').material({ metalness: 0.95, roughness: 0.05 }).
741
742
  | `specularIntensity?` | `number` | Specular highlight intensity (0–1). |
742
743
  | `specularColor?` | `string` | Specular highlight tint. |
743
744
  | `reflectivity?` | `number` | Reflection strength for supported renderers (0–1). |
745
+ | `texture?` | `{ image: string; projection: UvProjectionSpec; ...` | Projected bitmap texture set by `Shape.wrapTexture`. `image` is a self-contained `data:` URI; `projection` maps each vertex's final world position to (u,v) in the shader, so the texture survives transforms and boolean cuts. `imageWidth`/`imageHeight` are the intrinsic pixel dimensions. |
744
746
 
745
747
  **Face Topology**
746
748
 
@@ -1089,6 +1091,22 @@ Overloads:
1089
1091
 
1090
1092
  **Other**
1091
1093
 
1094
+ #### `wrapTexture(image: ImageHandle, projection: UvProjectionSpec): Shape` — Wrap an imported bitmap image around this shape using a projection.
1095
+
1096
+ The `image` comes from `Import.image('path.png')`; the `projection` is one of the `Wrap.*` helpers — `Wrap.flat({ onto: 'top' })` lays it flat on a face, `Wrap.aroundCylinder({ axis: 'z' })` wraps it like a can label, `Wrap.onSphere()` maps it like a globe, and `Wrap.box()` cube-maps it onto the six sides.
1097
+
1098
+ By default the image **auto-fits** the shape — one copy across the relevant extent, so no `width`/`height`/`size` is needed (pass them only to override). The (u,v) is derived from each vertex's final world position, so the image stays glued to the surface through transforms and boolean cuts with no UV layout to maintain — apply `wrapTexture` *after* positioning the shape. Returns a new Shape; the original is unchanged.
1099
+
1100
+ ```js
1101
+ const logo = Import.image('./logo.png');
1102
+ box(80, 80, 10).wrapTexture(logo, Wrap.flat({ onto: 'top' })); // auto-fits the face
1103
+
1104
+ const label = Import.image('./label.jpg');
1105
+ cylinder(60, 20).wrapTexture(label, Wrap.aroundCylinder({ axis: 'z' })); // wraps the side
1106
+ ```
1107
+
1108
+ `ImageHandle`: `{ __forgeImage: true, dataUri: string, width: number, height: number, mimeType: string, byteLength: number }`
1109
+
1092
1110
  #### `clone(): Shape` — Return a new Shape wrapper for explicit duplication in scripts.
1093
1111
 
1094
1112
  #### `geometryInfo(): GeometryInfo` — Inspect which backend/representation produced this solid.
@@ -1494,3 +1512,11 @@ Namespaced file-format import helpers — the single vocabulary for bringing ext
1494
1512
  const yUpPart = Import.mesh("./part.obj", { sourceFrame: { up: "+Y" } });
1495
1513
  ```
1496
1514
  - `step(fileName: string, options?: StepImportOptions): Shape` — Import a STEP file (.step, .stp) as an exact OCCT-backed Shape. Preserves NURBS curves, B-spline surfaces, and exact topology. Requires running with the OCCT backend. Use `sourceFrame: { up: "+Y" }` to rotate Y-up source files into ForgeCAD's Z-up world.
1515
+ - `image(fileName: string): ImageHandle` — Import a bitmap image (PNG, JPEG, or WebP) as an ImageHandle for projected texturing. Reads the pixel dimensions from the file header and embeds the bytes as a data URI. Pass the result to `Shape.wrapTexture(image, projection)` with a `Wrap.*` projection.
1516
+
1517
+ ### `Wrap`
1518
+
1519
+ - `flat(opts: FlatWrapOptions): UvProjectionSpec` — Project the image flat onto an axis-aligned face — `onto` is one of top/bottom/front/back/left/right. Auto-fits the face (no width/height needed).
1520
+ - `aroundCylinder(opts: CylinderWrapOptions): UvProjectionSpec` — Wrap the image around a cylinder like a can label — `axis` is 'x' | 'y' | 'z'. Auto-fits one wrap around and the full height.
1521
+ - `onSphere(opts?: SphereWrapOptions): UvProjectionSpec` — Map the image over a sphere like a globe (longitude/latitude). Auto-centers on the sphere.
1522
+ - `box(opts?: BoxWrapOptions): UvProjectionSpec` — Cube-map the image onto a box — one copy per face. Auto-fits the box (no size needed).
@@ -29,7 +29,7 @@ selectEdges, self, setActiveBackend, setImmediate, setInterval, setTimeout, Shap
29
29
  sheetMetal, SheetMetalPart, sheetStock, Sim, Sketch, sketchToDxf, sketchToSvg, slot
30
30
  SolvedAssembly, spec, sphere, spline2d, stroke, Surface, SurfaceBody, SurfaceMembers
31
31
  sweep, text2d, textWidth, torus, toShape, Transform, union, union2d
32
- variableSweep, verify, Viewport, window, Wood
32
+ variableSweep, verify, Viewport, window, Wood, Wrap
33
33
  ```
34
34
 
35
35
  <!-- forgecad-skill:exclude-start symbol="compatibility runtime names" reason="Compatibility-only renamed runtime globals." -->
@@ -5,7 +5,7 @@ skill-order: 2
5
5
 
6
6
  # Inspection Bundles — Evidence Contract
7
7
 
8
- `forgecad inspect <family> <mode>` writes a deterministic bundle: evidence PNGs under `evidence/<type>/` plus a root `manifest.json`. **The manifest is the authoritative contract** — take file paths, encodings, per-view ranges, thresholds, tolerances, and identity maps from it; never hard-code bundle layout or infer object identity from object order. The PNGs are a visual index for locating findings, not standalone artifacts. Command tree, flags, and `--focus`/`--hide` filtering live in `docs/skill/CLI.md` and `forgecad inspect evidence`; the inspection workflow lives in the `forgecad-render-inspect` skill. Model-authored `scene()` background, lights, fog, and exposure are ignored for inspection captures so evidence stays stable; named scene views remain available via `--view`.
8
+ `forgecad inspect <family> <mode>` writes a deterministic bundle: evidence PNGs under `evidence/<type>/` plus a root `manifest.json`. **The manifest is the authoritative contract** — take file paths, encodings, per-view ranges, thresholds, tolerances, and identity maps from it; never hard-code bundle layout or infer object identity from object order. The PNGs are a visual index for locating findings, not standalone artifacts. Command tree, flags, and `--focus`/`--hide` filtering live in `docs/skill/CLI.md` and `forgecad inspect evidence`; the inspection workflow lives in the `forgecad-inspect-model` skill. Model-authored `scene()` background, lights, fog, and exposure are ignored for inspection captures so evidence stays stable; named scene views remain available via `--view`.
9
9
 
10
10
  Manifest evidence keys are evidence-oriented and stable for bundle readers: e.g. `fit interference` writes `manifest.evidence.collisions`, `physical components` writes `manifest.evidence.connectivity`.
11
11
 
@@ -58,7 +58,7 @@ The dynamic tier. `export pinocchio` reuses the URDF package (per-link inertials
58
58
 
59
59
  This closes the same loop as `sim mechanism` and cross-checks it: on the lever-arm example, Pinocchio reports the same 1.47 N·m shoulder hold torque the native tier computes analytically.
60
60
 
61
- See [docs/internal/simulation-feedback-cycle.md](./simulation-feedback-cycle.md) for the full strategy across all simulation categories.
61
+ The internal simulation feedback cycle strategy doc carries the full cross-category roadmap.
62
62
 
63
63
  The source `.forge.js` model owns geometry, assembly structure, physical metadata, joints, drive intent, contact hints, and the neutral simulation contract. Exported packages then generate an editable simulator lab with all names and wiring connected. Rewards, policies, perturbation tests, curriculum, and RL libraries stay in simulator-side code.
64
64
 
@@ -1,17 +1,17 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-make-a-model/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-build-model/SKILL.md instead. -->
2
2
 
3
- # forgecad-make-a-model
3
+ # forgecad-build-model
4
4
 
5
- Create manufacture-realistic prototype ForgeCAD (.forge.js) models in the active CAD project. Handles file placement, invokes the forgecad skill for API guidance, and validates the result.
5
+ Build or edit a manufacture-realistic `.forge.js` model in a project, then validate it with run, render, inspect, and export evidence.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-make-a-model/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-build-model/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## Make a Model
14
+ ## Build Model
15
15
 
16
16
  Create new ForgeCAD models in the user's active ForgeCAD project.
17
17
 
@@ -86,7 +86,17 @@ For any mechanism (linkage, hinge, slider, suspension, gripper, drawer), the rig
86
86
 
87
87
  A mechanical script is not done when it merely looks assembled. Every visible piece needs a physical reason to be where it is: fused material, contact faces, a screw stack, a pin in a bore, a tab in a slot, a gasket on a land, a bearing in a seat, a cable in a channel, or a named intentional ghost.
88
88
 
89
- - Bespoke fixed assemblies: build each part in local coordinates, pick one root, place every touching part with `matchTo()`, verify each mate with `verify.connectorDistance`. Final `translate()` calls are not assembly contracts.
89
+ For multi-part assemblies, the component model is mandatory:
90
+
91
+ - Parts build at origin in their own local coordinates. They do not know final assembly-space offsets, sibling dimensions, or world placement.
92
+ - A part's public interface is `shape` plus connectors and metadata, e.g. `return { shape, boltPattern, pinionZ }`. Declare mating faces with `.withConnectors({})`; axes point outward, with prismatic slide axes as the explicit exception.
93
+ - The parent assembly chooses the root and positions every structural part through connectors, `connect()`, `match()`, or `matchTo()`. Final `translate()` calls are not assembly contracts.
94
+ - Data flows down through `require('./part.forge.js', params)` overrides and up through returned metadata. Siblings never import each other; the parent routes shared decisions and measured outputs.
95
+ - Default to one file for a project-specific assembly. Split only for cross-project reuse, independent subassemblies, or when a file grows past roughly 300 lines. Never create `shared-dims.js` just to coordinate siblings.
96
+
97
+ Reject these shortcuts on sight: sibling `require()`, assembly-space coordinates inside a part, `translate()` used to position a structural assembly member, `console.log` + `if` validation instead of `verify.*`, and bare `connector.neutral()` outside a reusable component library with compatibility checks.
98
+
99
+ - Bespoke fixed assemblies: build each part in local coordinates, pick one root, place every touching part with `matchTo()`, verify each mate with `verify.connectorDistance`.
90
100
  - Manual joint frames (`addFixed`/`addRevolute`/`addPrismatic` with a hand-built `frame:`) are scaffolding, not contracts. Before delivery, convert mating interfaces to connectors with `connect()`/`match()`, or prove the manual joint with `forgecad debug assembly --fail-on warning` and documented geometry.
91
101
  - A named part must not contain unintentional disconnected bodies: boolean-join manufactured features, model fasteners/seals as separate named parts, or add the receiving holes/lands that explain the separation.
92
102
  - Screws are not decoration: clearance/counterbore in the cover, receiving boss or through stack in the parent, material around both, axes aligned from one shared bolt pattern.
@@ -101,7 +111,7 @@ Treat `fillet()`/`chamfer()` as experimental (Manifold can be incorrect, OCCT sl
101
111
 
102
112
  ### Imported Parts (User-Supplied 3D Files)
103
113
 
104
- When the user supplies mesh or CAD files to design around (a motor, an off-the-shelf housing, a scanned part), the import IS a component of the assembly — keep it, don't rebuild it parametrically (rebuilding is `forgecad-3d-reconstruction`, a different request).
114
+ When the user supplies mesh or CAD files to design around (a motor, an off-the-shelf housing, a scanned part), the import IS a component of the assembly — keep it, don't rebuild it parametrically (rebuilding is `forgecad-reconstruct-cad-file`, a different request).
105
115
 
106
116
  - Wrap each import in its own part file: `Import.mesh()` for STL/OBJ/3MF, `Import.step()` for STEP (OCCT backend), normalize scale and orientation, recenter to a sane local origin, then treat it exactly like a purchased part — connectors at its real mating features, positioned by the assembly via `matchTo()`.
107
117
  - Never trust units. Verify against a known dimension before mating anything: bbox via `forgecad run --details`, or `inspect section --ray` across a bore or face pair. For 3MF, account for every build item printed by `forgecad run` before flattening.
@@ -153,7 +163,7 @@ A manufacture-realistic model must yield a package a shop can consume, not just
153
163
 
154
164
  ### Render and Inspect Cadence
155
165
 
156
- **You are building blind unless you render.** `forgecad run` passing only means the code didn't crash — it cannot tell you a hole is misplaced, a rib pokes through a cover, or a part doesn't fit. Render from angles chosen for the model's actual geometry and read every PNG. For command syntax, evidence selection, and manifest reading, use the `forgecad-render-inspect` skill and the CLI docs — this skill fixes only the cadence and the gates.
166
+ **You are building blind unless you render.** `forgecad run` passing only means the code didn't crash — it cannot tell you a hole is misplaced, a rib pokes through a cover, or a part doesn't fit. Render from angles chosen for the model's actual geometry and read every PNG. For command syntax, evidence selection, and manifest reading, use the `forgecad-inspect-model` skill and the CLI docs — this skill fixes only the cadence and the gates.
157
167
 
158
168
  Render after every feature addition, boolean cut, symmetric copy placement, and the last feature. Inspect after adding hidden geometry a surface render cannot prove, after adding or moving mating parts, ghosts, connectors, thin walls, or screw holes, and before delivery with thresholds set for the material/process.
159
169
 
@@ -1,17 +1,17 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-spec-by-walking-through-it/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-design-spec/SKILL.md instead. -->
2
2
 
3
- # forgecad-spec-by-walking-through-it
3
+ # forgecad-design-spec
4
4
 
5
- Design a ForgeCAD model, mechanism, or assembly by fixing WHAT before HOW in a git-reviewed design document, validated by mentally operating the thing step by step. Covers fuzzy-request intake and process choice, high-level design (HLD), and low-level design (LLD). Use on "spec this out", "plan the design", "write the HLD/LLD", a vague build request that needs concrete decisions, or any moment the right move is a reviewable spec before code.
5
+ Create a ForgeCAD design brief, HLD, or LLD before coding by walking through use, assembly, interfaces, decisions, and verification.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-spec-by-walking-through-it/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-design-spec/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## Spec by Walking Through It
14
+ ## Design Spec
15
15
 
16
16
  The design document — a git-committed, diff-reviewed markdown file — is the source of truth. Not the code, not the chat, not your head. You iterate it by commit-and-review, and the `git diff` is the review artifact.
17
17
 
@@ -136,7 +136,7 @@ HLDs and LLDs iterate through git, not conversation:
136
136
  |-------|--------------------|--------|------|
137
137
  | Explore a fuzzy ask | Intake | engineering brief + master prompt | HLD |
138
138
  | Decide *what* to build | HLD | `*-hld.md` (Decisions filled) | LLD |
139
- | Detail *how* to build | LLD | `*-lld.md` | `forgecad-make-a-model` + `forgecad` → `.forge.js` |
139
+ | Detail *how* to build | LLD | `*-lld.md` | `forgecad-build-model` + `forgecad` → `.forge.js` |
140
140
 
141
141
 
142
142
  ## Bundled Files
@@ -1,17 +1,17 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-model-grader/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-grade-model/SKILL.md instead. -->
2
2
 
3
- # forgecad-model-grader
3
+ # forgecad-grade-model
4
4
 
5
- Analyze, verify, and grade ForgeCAD or CAD-as-code models against a user requirement, design brief, prompt, reference, or acceptance criteria. Use when asked to evaluate, judge, QA, benchmark, score, rate, or compare a CAD model; render it from multiple angles, run targeted inspections when needed, visually verify the evidence, and produce a 0-10 score with concise justification.
5
+ Grade a ForgeCAD or CAD-as-code model against a requirement, brief, prompt, reference, or acceptance criteria with evidence and a 0-10 score.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-model-grader/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-grade-model/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Model Grader
14
+ ## Grade Model
15
15
 
16
16
  Grade the delivered model against the requirement, not against what could be fixed later. Never edit the model unless the user explicitly requests repairs — then record the baseline grade first, change, and re-grade.
17
17
 
@@ -21,7 +21,7 @@ Grade the delivered model against the requirement, not against what could be fix
21
21
  2. **Run the model**: `forgecad run <model>.forge.js` (in the ForgeCAD repo use the local build, `node dist-cli/forgecad.js run ...`). If it fails to execute, stop and apply the caps.
22
22
  3. **Render** at least `iso`, `front`, `right`, `top` to a scratch dir; add views (back, bottom, close-up, section) when the model is asymmetric, hollow, mechanical, or likely to hide mistakes.
23
23
  4. **Open and look at every PNG** — never score from command output alone. Check silhouette, proportions, required features, part boundaries, interfaces, and whether the model reads as the requested artifact from more than one angle.
24
- 5. **Inspect** whenever hidden internals, fit, wall thickness, or assembly behavior are central to the brief — grading without inspecting them caps the score. Delegate evidence choice, commands, and manifest reading to the `forgecad-render-inspect` skill. Findings (unexpected collisions, thin regions, floating bodies, wrong component counts) are evidence, not warnings to wave away.
24
+ 5. **Inspect** whenever hidden internals, fit, wall thickness, or assembly behavior are central to the brief — grading without inspecting them caps the score. Delegate evidence choice, commands, and manifest reading to the `forgecad-inspect-model` skill. Findings (unexpected collisions, thin regions, floating bodies, wrong component counts) are evidence, not warnings to wave away.
25
25
  6. **Score**: fill the rubric, apply caps, give a final 0-10 in whole or `.5` increments. Unknowns count against the score.
26
26
 
27
27
  ### Rubric
@@ -47,6 +47,7 @@ Maximum scores, applied after the rubric:
47
47
  - A must-have requirement is absent: max `6`.
48
48
  - Visually recognizable but physically impossible for the requested use: max `6`.
49
49
  - Internals, fit, walls, or assembly central to the brief but uninspected: max `7`.
50
+ - Multi-part assembly violates the ForgeCAD component model — sibling imports, assembly-space coordinates inside parts, structural `translate()` placement, missing connector mates, or parent/child data flow confusion: max `7`; max `6` when the violation makes the assembly brittle or mechanically wrong.
50
51
  - Inspection finds unexpected collisions, floating bodies, critical thin walls, or wrong connectivity: max `6`; max `5` when the defect invalidates the main function.
51
52
  - Delivered as a finished product/prototype but presented with default flat lighting (no `scene()` rig), a generically colorful or material-false palette, or teaching-diagram styling: max `8`. Does not apply when the brief asks for a blockout or bare technical study.
52
53
  - Any score relying on an assumption the evidence cannot verify: mark it `Unknown`, never score above `8`.
@@ -73,6 +74,7 @@ Next fixes: the 2-5 highest-leverage improvements.
73
74
  - Grade the default returned model unless the user names a parameter set or variant.
74
75
  - No points for comments, labels, or intentions absent from the geometry.
75
76
  - Decorative screws, floating labels, and teaching-diagram callouts are not real mechanical interfaces.
77
+ - For multi-part assemblies, require the component model: parts build locally at origin, expose connectors/metadata, the parent positions them, and inter-part data flows through parent props and returned metadata.
76
78
  - Cite which render or inspection finding drove the grade.
77
79
  - When comparing models, use identical checklist, cameras, inspection evidence, and caps for all.
78
80
 
@@ -1,25 +1,25 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-visual-spec/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-image-prompt/SKILL.md instead. -->
2
2
 
3
- # forgecad-visual-spec
3
+ # forgecad-image-prompt
4
4
 
5
- Turn a concrete ForgeCAD artifact, build brief, HLD, or existing model into builder-honest image prompts for AI image models. Use when the user wants visual-spec renders that show the final product while keeping mechanisms, seams, hardware, and build cues visible instead of drifting into concept art.
5
+ Write builder-honest AI image prompts from a concrete ForgeCAD model, build brief, HLD, or LLD without hiding how the artifact is built.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-visual-spec/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-image-prompt/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Visual Spec
14
+ ## Image Prompt
15
15
 
16
16
  ### Scope
17
17
 
18
- Only for artifacts already concrete enough to visualize (a specific `.forge.js` model, build brief, or HLD); route vague briefs to `forgecad-spec-by-walking-through-it` first. Read minimum context — entry `.forge.js`, one key helper if it delegates geometry, brief/HLD — and capture what must survive the image model: artifact type and scale, major subassemblies, actuation style, visible mechanisms, material and color cues.
18
+ Only for artifacts already concrete enough to visualize (a specific `.forge.js` model, build brief, or HLD); route vague briefs to `forgecad-design-spec` first. Read minimum context — entry `.forge.js`, one key helper if it delegates geometry, brief/HLD — and capture what must survive the image model: artifact type and scale, major subassemblies, actuation style, visible mechanisms, material and color cues.
19
19
 
20
20
  ### Core Rule
21
21
 
22
- Visual-spec prompts, not concept art: show the final artifact clearly, preserve build and subsystem truth, and keep visible the seams, modules, hardware, and mechanical hierarchy that matter.
22
+ Image prompts, not concept art: show the final artifact clearly, preserve build and subsystem truth, and keep visible the seams, modules, hardware, and mechanical hierarchy that matter.
23
23
 
24
24
  Negatives (the only negatives list — reuse it, never restate variants):
25
25
 
@@ -1,21 +1,21 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-render-inspect/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-inspect-model/SKILL.md instead. -->
2
2
 
3
- # forgecad-render-inspect
3
+ # forgecad-inspect-model
4
4
 
5
- Run and interpret ForgeCAD inspection bundles for model verification. Use when asked to inspect a ForgeCAD model, analyze an inspection bundle, validate collisions, wall thickness, connectivity, floating bodies, sections, masks, depth, normals, or Zebra stripes.
5
+ Select, run, and interpret ForgeCAD inspection evidence for collisions, sections, wall thickness, components, masks, depth, normals, surface continuity, and fit.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-render-inspect/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-inspect-model/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Render Inspect
14
+ ## Inspect Model
15
15
 
16
16
  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.
17
17
 
18
- Routing: authoring/API questions → `forgecad` skill; creating a new model → `forgecad-make-a-model`.
18
+ Routing: authoring/API questions → `forgecad` skill; creating a new model → `forgecad-build-model`.
19
19
 
20
20
  ### Workflow
21
21
 
@@ -1,17 +1,17 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-project/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-project-sync/SKILL.md instead. -->
2
2
 
3
- # forgecad-project
3
+ # forgecad-project-sync
4
4
 
5
- ForgeCAD project CLI workflow creating, managing, syncing projects and files on forgecad.io. Covers init, push, pull, file operations, member management, publishing, and sharing.
5
+ Manage hosted ForgeCAD project sync from the CLI: init, clone, pull, push, file operations, members, publishing, and shares.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-project/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-project-sync/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Project Operating Rules
14
+ ## Project Sync
15
15
 
16
16
  forgecad.io is the hosted ForgeCAD platform; a project is a local folder linked to the server by `forgecad.json`. The full command inventory (project, file, member, share, token commands and flags) lives in `forgecad project --help` and the forgecad skill's `docs/CLI.md` — do not relearn it here.
17
17
 
@@ -1,21 +1,21 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-3d-reconstruction/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-reconstruct-cad-file/SKILL.md instead. -->
2
2
 
3
- # forgecad-3d-reconstruction
3
+ # forgecad-reconstruct-cad-file
4
4
 
5
- Reconstruct a parametric ForgeCAD model from an existing 3D CAD or mesh file such as STL, OBJ, 3MF, STEP, or STP; inspect the source asset directly, author real ForgeCAD geometry, and iteratively compare the candidate with `forgecad compare 3d`.
5
+ Reconstruct a readable parametric ForgeCAD model from an existing CAD or mesh file such as STL, OBJ, 3MF, STEP, or STP.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-3d-reconstruction/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-reconstruct-cad-file/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD 3D Reconstruction
14
+ ## Reconstruct CAD File
15
15
 
16
16
  The reference asset is evidence, not the deliverable. The deliverable is a readable, parametric `.forge.js` model that runs, renders, and scores well against the source. Never return `Import.mesh()`/`Import.step()` of the source as the final model unless the user explicitly asks for an import wrapper — imports are for measurement, rendering, and scoring only.
17
17
 
18
- Routing: user wants to KEEP the file as a live component and design around it (bracket, enclosure, mating assembly) → `forgecad-make-a-model` (Imported Parts section), not this skill; benchmark/RL episodes → `forgecad-reconstruction-benchmark`; inspection-bundle interpretation → `forgecad-render-inspect`; independent grading after reconstruction → `forgecad-model-grader`; API and command reference → `forgecad` skill + CLI.md.
18
+ Routing: user wants to KEEP the file as a live component and design around it (bracket, enclosure, mating assembly) → `forgecad-build-model` (Imported Parts section), not this skill; prepared benchmark/RL episodes → use the task-local benchmark instructions, not the public skill library; inspection-bundle interpretation → `forgecad-inspect-model`; independent grading after reconstruction → `forgecad-grade-model`; API and command reference → `forgecad` skill + CLI.md.
19
19
 
20
20
  ### Workflow
21
21
 
@@ -50,7 +50,7 @@ Faceted sources: decide whether tessellation itself is evidence. Matching low-po
50
50
 
51
51
  ### Done Criteria
52
52
 
53
- The final model must run, render, re-compare at `--samples 5000`, and pass an `inspect compare overlay`. Add targeted inspects (`forgecad-render-inspect`) when the object is multi-part, hollow, thin-walled, or surface-sensitive. Report: source and candidate paths, score JSON path, final metrics, and every known mismatch classified as intentional simplification or remaining work.
53
+ The final model must run, render, re-compare at `--samples 5000`, and pass an `inspect compare overlay`. Add targeted inspects (`forgecad-inspect-model`) when the object is multi-part, hollow, thin-walled, or surface-sensitive. Report: source and candidate paths, score JSON path, final metrics, and every known mismatch classified as intentional simplification or remaining work.
54
54
 
55
55
 
56
56
  ## Bundled Files
@@ -1,26 +1,26 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-image-replicator/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-reconstruct-from-images/SKILL.md instead. -->
2
2
 
3
- # forgecad-image-replicator
3
+ # forgecad-reconstruct-from-images
4
4
 
5
- Build real ForgeCAD geometry from one or more reference images by treating images as evidence, inferring the object, then validating against both reference-matched and canonical views.
5
+ Reconstruct a real parametric ForgeCAD object from reference images by using images as evidence, not as a one-view facade.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-image-replicator/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-reconstruct-from-images/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Image Replicator
14
+ ## Reconstruct From Images
15
15
 
16
16
  The reference image is evidence, not the deliverable. The deliverable is a real parametric object that holds up from front, back, side, top, bottom, and reference camera views — a model that matches one image but falls apart from other angles has failed, even if the comparison board looks close. Cutaway, sectioned, exploded, or transparent references are evidence about the complete object: build the closed artifact and recreate explanatory views with viewer/inspection tools (the main `forgecad` skill's closed-artifact rule applies).
17
17
 
18
18
  ### Companion Skills
19
19
 
20
20
  - `forgecad` — API docs, model authoring, renderer behavior.
21
- - `forgecad-spec-by-walking-through-it` — when the images underdetermine artifact family, process posture, scale, operating story, or validation boundary.
22
- - `forgecad-make-a-model` — file placement, project structure, decomposition, definition of done.
23
- - `forgecad-render-inspect` — pre-delivery inspection for multi-part, internal, mechanical, thin-wall, or fit-sensitive objects.
21
+ - `forgecad-design-spec` — when the images underdetermine artifact family, process posture, scale, operating story, or validation boundary.
22
+ - `forgecad-build-model` — file placement, project structure, decomposition, definition of done.
23
+ - `forgecad-inspect-model` — pre-delivery inspection for multi-part, internal, mechanical, thin-wall, or fit-sensitive objects.
24
24
 
25
25
  ### Core Rule
26
26
 
@@ -30,19 +30,19 @@ Infer the real object before matching any camera — identity, manufacture, scal
30
30
 
31
31
  1. Stage references in `/tmp/<slug>-replicate/refs`, keeping originals and adding view names where possible (`front`, `side`, `rear-iso`, `top`, `detail`).
32
32
  2. Read each image as evidence, recording: visible facts; scale cues; camera cues; unknowns (hidden/occluded geometry); conflicts across images or stylization.
33
- 3. Write a Real Object Brief — a hard gate before modeling: (a) artifact identity + operating story; (b) assumed scale and units; (c) process posture + part/BOM boundary (real geometry vs purchased vs ghost vs omitted); (d) inferred hidden-side geometry + expected canonical front/back/left/right/top/bottom forms; (e) validation views and inspection evidence. Use `forgecad-spec-by-walking-through-it` when these are underdetermined.
34
- 4. Build a coarse 3D blockout — model the object, not the image: large volumes, axes, symmetry, side depth, rear form, underside, hidden continuations. Render canonical views before any reference-camera comparison. Follow `forgecad-make-a-model` for project structure.
33
+ 3. Write a Real Object Brief — a hard gate before modeling: (a) artifact identity + operating story; (b) assumed scale and units; (c) process posture + part/BOM boundary (real geometry vs purchased vs ghost vs omitted); (d) inferred hidden-side geometry + expected canonical front/back/left/right/top/bottom forms; (e) validation views and inspection evidence. Use `forgecad-design-spec` when these are underdetermined.
34
+ 4. Build a coarse 3D blockout — model the object, not the image: large volumes, axes, symmetry, side depth, rear form, underside, hidden continuations. Render canonical views before any reference-camera comparison. Follow `forgecad-build-model` for project structure.
35
35
  5. Calibrate one camera per usable reference, only after the blockout makes sense from canonical views. Use the object center as `target`; estimate azimuth/elevation/distance/FOV from visible faces and perspective cues; use orthographic when parallel edges stay parallel with no perspective convergence.
36
36
  6. Render comparison boards: render the model from each calibrated reference camera and place it next to the original. Never compare from memory.
37
37
  7. Iterate one class of change at a time, in order: object hypothesis → major proportions → canonical geometry → camera → details → presentation. If improving one reference view makes another view or a canonical render worse, the object hypothesis is wrong — fix the model, not the camera illusion.
38
38
  8. Use every image as a constraint. Never pick one target image and ignore the rest: assign each image a camera, evidence list, and confidence; optimize one shared geometry against the whole set; state how distorted or decorative images were weighted.
39
- 9. Validate the final object: `forgecad run`, reference comparison boards, canonical renders, and targeted inspections via `forgecad-render-inspect`.
39
+ 9. Validate the final object: `forgecad run`, reference comparison boards, canonical renders, and targeted inspections via `forgecad-inspect-model`.
40
40
 
41
41
  ### Comparison Boards
42
42
 
43
43
  Render with exact `--camera` specs (see the forgecad CLI doc for supported forms). If exact full camera specs do not render, fix the renderer before continuing — never substitute guesses from default `iso` renders.
44
44
 
45
- Build side-by-side boards with the bundled self-contained `uv` helper (installs Pillow on demand). Resolve `scripts/compare_images.py` relative to the installed `forgecad-image-replicator` skill directory:
45
+ Build side-by-side boards with the bundled self-contained `uv` helper (installs Pillow on demand). Resolve `scripts/compare_images.py` relative to the installed `forgecad-reconstruct-from-images` skill directory:
46
46
 
47
47
  ```bash
48
48
  uv run <skill-dir>/scripts/compare_images.py refs/front.png render-front.png compare-front.png
@@ -1,21 +1,21 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-mujoco-verify/SKILL.md instead. -->
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-verify-mujoco/SKILL.md instead. -->
2
2
 
3
- # forgecad-mujoco-verify
3
+ # forgecad-verify-mujoco
4
4
 
5
- Verify ForgeCAD MJCF exports in MuJoCo with real dynamics, contacts, root behavior, controls, required joint travel, and rendered evidence before calling a model simulation-ready. Use when making a ForgeCAD assembly sim-ready, debugging MJCF contacts, checking why a body falls through the floor, validating actuator motion, or proving a mechanism moved through the intended range.
5
+ Verify a ForgeCAD MJCF export in MuJoCo with dynamics, contacts, controls, joint travel, and rendered evidence before calling it simulation-ready.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Installed by | `forgecad skill install` |
10
- | Source | `agent-skill-library/forgecad-mujoco-verify/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-verify-mujoco/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD MuJoCo Verify
14
+ ## Verify MuJoCo
15
15
 
16
16
  Use this when `forgecad export mjcf ...` is part of the deliverable. A model is not sim-ready just because `forgecad check simready` passes or the MJCF file loads: it must be loaded in MuJoCo, stepped under gravity, driven with the intended controls, contact pairs inspected, and rendered from useful views.
17
17
 
18
- Routing: geometry-only visual inspection -> `forgecad-render-inspect`; model authoring/API questions -> `forgecad`; building a new model -> `forgecad-make-a-model`.
18
+ Routing: geometry-only visual inspection -> `forgecad-inspect-model`; model authoring/API questions -> `forgecad`; building a new model -> `forgecad-build-model`.
19
19
 
20
20
  ### Definition Of Done
21
21