forgecad 0.10.5 → 0.11.0

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 (104) hide show
  1. package/dist/assets/{AdminPage-raksfnNA.js → AdminPage-B1nIvqLS.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-DP3RxhPs.js → BenchmarkPage-YZJbw5nd.js} +1 -1
  3. package/dist/assets/{BlogPage-D7Dos-vl.js → BlogPage-DIWRApKS.js} +1 -1
  4. package/dist/assets/{DocsPage-DO1kvBns.js → DocsPage-ClL6X1hR.js} +2 -22
  5. package/dist/assets/{EditorApp-DQJmcmRT.js → EditorApp-CYBDvSyT.js} +575 -119
  6. package/dist/assets/{EmbedViewer-DFDUhOma.js → EmbedViewer-Dmfu_LIw.js} +2 -2
  7. package/dist/assets/{LandingPageProofDriven-DbE_tp8-.js → LandingPageProofDriven-XYTiYxfM.js} +1 -1
  8. package/dist/assets/{LegalPage-CominSso.js → LegalPage-D5Z3CscF.js} +1 -1
  9. package/dist/assets/{PricingPage-CcVIN9yj.js → PricingPage-BP4lIGio.js} +1 -1
  10. package/dist/assets/{SettingsPage-DLWcP289.js → SettingsPage-D3bcPBsC.js} +1 -1
  11. package/dist/assets/{app-xW3hOdq9.js → app-BKjogwIZ.js} +2192 -231
  12. package/dist/assets/{backendInit-mDHk97u7.js → backendInit-6a9-ilom.js} +76448 -75066
  13. package/dist/assets/cli/{render--SIU27W_.js → render-CMNudGb0.js} +3 -3
  14. package/dist/assets/{constructionHistoryWorker-uEe_Q7Kg.js → constructionHistoryWorker-BuZgc606.js} +6985 -6706
  15. package/dist/assets/{evalWorker-BqyDHDcI.js → evalWorker-DQ82ueGu.js} +40862 -39497
  16. package/dist/assets/{inspectWorker-UXMxlcR8.js → inspectWorker-Cuby2qfT.js} +2078 -478
  17. package/dist/assets/{jointPose-bYMlwU3v.js → jointPose-CFql5I-u.js} +1 -1
  18. package/dist/assets/{manifold-CyOV5B9S.js → manifold-02pmr7O7.js} +2 -2
  19. package/dist/assets/{manifold-BR7UYI4P.js → manifold-C6KU0oII.js} +1 -1
  20. package/dist/assets/{manifold-D4d5NQst.js → manifold-P1yF3GKn.js} +1 -1
  21. package/dist/assets/{reportWorker-DsaICZsn.js → reportWorker-kg065BVL.js} +85183 -78309
  22. package/dist/cli/render.html +1 -1
  23. package/dist/docs/index.html +2 -2
  24. package/dist/docs-raw/AI/usage.md +6 -8
  25. package/dist/docs-raw/CLI.md +10 -10
  26. package/dist/docs-raw/component-model.md +28 -9
  27. package/dist/docs-raw/generated/concepts.md +13 -4
  28. package/dist/docs-raw/generated/core.md +244 -56
  29. package/dist/docs-raw/generated/curves.md +13 -0
  30. package/dist/docs-raw/generated/runtime-names.md +2 -2
  31. package/dist/docs-raw/guides/inspection-bundles.md +1 -1
  32. package/dist/docs-raw/guides/structural-fea.md +11 -0
  33. package/dist/docs-raw/skills/forgecad-build-model.md +70 -147
  34. package/dist/docs-raw/skills/forgecad-image-prompt.md +1 -1
  35. package/dist/docs-raw/skills/forgecad-project-sync.md +3 -3
  36. package/dist/docs-raw/skills/forgecad-reconstruct-cad-file.md +2 -2
  37. package/dist/docs-raw/skills/forgecad-reconstruct-from-images.md +4 -5
  38. package/dist/docs-raw/skills/forgecad.md +3 -1
  39. package/dist/docs-raw/skills/index.md +1 -5
  40. package/dist/docs-raw/welcome.md +3 -4
  41. package/dist/index.html +1 -1
  42. package/dist/llms.txt +1 -2
  43. package/dist/sitemap.xml +15 -15
  44. package/dist-cli/{check-compiler-7YAHVXYM.js → check-compiler-UJWUEIDC.js} +1 -1
  45. package/dist-cli/{check-query-propagation-ZRR6IOJW.js → check-query-propagation-O2EPDJSY.js} +1 -1
  46. package/dist-cli/{chunk-VNM67DIV.js → chunk-MNDROM7T.js} +77145 -75767
  47. package/dist-cli/forgecad.js +1145 -441
  48. package/dist-skill/CONTEXT.md +429 -64
  49. package/dist-skill/SKILL.md +3 -1
  50. package/dist-skill/docs/API/core/concepts.md +31 -4
  51. package/dist-skill/docs/CLI.md +10 -10
  52. package/dist-skill/docs/generated/core.md +240 -57
  53. package/dist-skill/docs/generated/curves.md +13 -0
  54. package/dist-skill/docs/generated/runtime-names.md +2 -2
  55. package/dist-skill/docs/guides/inspection-bundles.md +1 -1
  56. package/dist-skill/docs/guides/manual-parameters.md +130 -0
  57. package/dist-skill/docs/guides/structural-fea.md +11 -0
  58. package/dist-skill/library/README.md +0 -4
  59. package/dist-skill/library/forgecad-build-model/SKILL.md +57 -150
  60. package/dist-skill/library/forgecad-build-model/references/inspection-feedback.md +58 -0
  61. package/dist-skill/library/forgecad-build-model/references/module-contracts.md +53 -0
  62. package/dist-skill/library/forgecad-build-model/references/parameter-controls.md +22 -0
  63. package/dist-skill/library/forgecad-build-model/references/readiness-review.md +43 -0
  64. package/dist-skill/library/forgecad-build-model/references/simulation-feedback.md +49 -0
  65. package/dist-skill/library/forgecad-build-model/references/stage-1-design-intent.md +21 -0
  66. package/dist-skill/library/forgecad-build-model/references/stage-2-architecture-plan.md +23 -0
  67. package/dist-skill/library/forgecad-build-model/references/stage-3-build-slices.md +39 -0
  68. package/dist-skill/library/forgecad-build-model/references/stage-4-feedback-iteration.md +24 -0
  69. package/dist-skill/library/forgecad-build-model/references/stage-5-readiness-package.md +34 -0
  70. package/dist-skill/library/forgecad-image-prompt/SKILL.md +1 -1
  71. package/dist-skill/library/forgecad-project-sync/SKILL.md +3 -3
  72. package/dist-skill/library/forgecad-reconstruct-cad-file/SKILL.md +2 -2
  73. package/dist-skill/library/forgecad-reconstruct-from-images/SKILL.md +4 -5
  74. package/dist-skill/website/skills/forgecad-build-model.md +70 -147
  75. package/dist-skill/website/skills/forgecad-image-prompt.md +1 -1
  76. package/dist-skill/website/skills/forgecad-project-sync.md +3 -3
  77. package/dist-skill/website/skills/forgecad-reconstruct-cad-file.md +2 -2
  78. package/dist-skill/website/skills/forgecad-reconstruct-from-images.md +4 -5
  79. package/dist-skill/website/skills/forgecad.md +3 -1
  80. package/dist-skill/website/skills/index.md +1 -5
  81. package/examples/api/param-path2d.forge.js +65 -0
  82. package/examples/api/param-placement2d.forge.js +80 -0
  83. package/examples/api/param-spline2d-g-continuity.forge.js +57 -0
  84. package/examples/api/spoon-full-tang-handle.forge.js +57 -17
  85. package/examples/api/surface-variable-thickness-panel.forge.js +62 -0
  86. package/examples/mechanical/airplane-propeller.forge.js +81 -28
  87. package/package.json +2 -2
  88. package/dist/docs-raw/skills/forgecad-design-spec.md +0 -145
  89. package/dist/docs-raw/skills/forgecad-grade-model.md +0 -84
  90. package/dist/docs-raw/skills/forgecad-inspect-model.md +0 -80
  91. package/dist/docs-raw/skills/forgecad-verify-mujoco.md +0 -78
  92. package/dist-skill/library/forgecad-design-spec/SKILL.md +0 -132
  93. package/dist-skill/library/forgecad-design-spec/references/default-profiles.md +0 -99
  94. package/dist-skill/library/forgecad-design-spec/references/master-prompt.md +0 -73
  95. package/dist-skill/library/forgecad-grade-model/SKILL.md +0 -72
  96. package/dist-skill/library/forgecad-grade-model/agents/openai.yaml +0 -4
  97. package/dist-skill/library/forgecad-inspect-model/SKILL.md +0 -68
  98. package/dist-skill/library/forgecad-verify-mujoco/SKILL.md +0 -66
  99. package/dist-skill/website/skills/forgecad-design-spec.md +0 -145
  100. package/dist-skill/website/skills/forgecad-grade-model.md +0 -84
  101. package/dist-skill/website/skills/forgecad-inspect-model.md +0 -80
  102. package/dist-skill/website/skills/forgecad-verify-mujoco.md +0 -78
  103. /package/dist-skill/library/{forgecad-verify-mujoco → forgecad-build-model}/scripts/mujoco_verify.py +0 -0
  104. /package/dist-skill/library/{forgecad-inspect-model → forgecad-build-model/scripts}/summarize_manifest.py +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  # forgecad-build-model
4
4
 
5
- Build or edit a manufacture-realistic `.forge.js` model in a project, then validate it with run, render, inspect, and export evidence.
5
+ Build or edit `.forge.js` real product models through design, automatic/manual feedback gathering, inspection/simulation/FEA evidence, and iteration until ready.
6
6
 
7
7
  | Field | Value |
8
8
  | --- | --- |
@@ -13,184 +13,107 @@ Build or edit a manufacture-realistic `.forge.js` model in a project, then valid
13
13
 
14
14
  ## Build Model
15
15
 
16
- Create new ForgeCAD models in the user's active ForgeCAD project.
16
+ Create or edit ForgeCAD models through the loop that matters: design intent -> automatic or manual feedback gathering -> interpretation -> iteration -> readiness. Use the core `forgecad` skill as the source of truth for ForgeCAD API docs, generated API pages, CLI syntax, scene setup, assembly contracts, inspection bundles, FEA, simulation metadata, and examples. This skill defines the product-modeling workflow.
17
17
 
18
18
  ### Default Output Standard
19
19
 
20
- Unless the user asks otherwise, the output is a **manufacture-realistic prototype**: a model someone could fabricate, buy parts for, assemble, inspect, and iterate in a real shop not a concept sketch, not a universal 3D-printing exercise, not a claim of certified production readiness.
20
+ Unless the user asks otherwise, build a **real product model**: an editable parametric CAD model of the actual physical product, machine, robot, fixture, part, assembly, or simulation asset the user asked for. The model should be closed, assembled, sourced, dimensioned, inspected, tested, and ready for the next real engineering loop.
21
21
 
22
- - Include prototype-real features: wall thickness, fastener stacks, bosses, ribs, flanges, seats, gaskets, cable exits, service access, toleranced clearances, believable purchased parts. No invented tooling details, certifications, or safety ratings unless asked.
23
- - Modifiers shift the standard: `blockout` → rough massing; `production-realistic` → DFM and production-intent materials; `printable` → make the selected printed parts honest; `visual-CAD` → clearly visual, not pretending build-ready.
24
- - Zero unexpected final collisions is part of the definition of done (see Collision Policy).
22
+ Real product features are not optional polish. For every physical function the artifact needs, model the corresponding product evidence: wall thickness, fastener stacks, bosses, ribs, flanges, seats, gaskets, cable exits, service access, toleranced clearances, purchased parts, BOM entries, critical dimensions, simulation artifacts when behavior evidence matters, export artifacts when requested or process-dependent, and process-appropriate materials. If evidence is still missing, keep building or name the exact missing validation loop and residual risk; do not quietly lower the target quality.
25
23
 
26
24
  ### File Placement
27
25
 
28
- New `.forge.js` files go under date-based directories (today's date) in the user's current ForgeCAD project or a clearly named local folder:
29
-
30
- ```
31
- YYYY/MM/DD/file.forge.js single-file model
32
- YYYY/MM/DD/folder/main.forge.js multi-file entry point (always main.forge.js)
33
- YYYY/MM/DD/folder/parts/*.forge.js standalone/importable parts
34
- YYYY/MM/DD/folder/lib/*.js — pure helpers/constants, no geometry
26
+ New `.forge.js` files go under date-based directories in the user's current ForgeCAD project or a clearly named local folder:
27
+
28
+ ```text
29
+ YYYY/MM/DD/file.forge.js # tiny single-file model only
30
+ YYYY/MM/DD/folder/main.forge.js # central entry point for every multi-file build
31
+ YYYY/MM/DD/folder/NOTES.md # live build notes: learnings, API friction, surprises, follow-ups
32
+ YYYY/MM/DD/folder/docs/PRFAQ.md # product/user story and decision FAQ
33
+ YYYY/MM/DD/folder/docs/HLD.md # high-level design
34
+ YYYY/MM/DD/folder/docs/LLD-*.md # lower-level design docs as needed
35
+ YYYY/MM/DD/folder/docs/modules/*.md # submodule or complex-part design notes
36
+ YYYY/MM/DD/folder/modules/<domain>/*.forge.js # unified nested module tree: leaf modules to system modules
37
+ YYYY/MM/DD/folder/lib/*.js # pure helpers/constants, no geometry
35
38
  ```
36
39
 
37
- - Kebab-case descriptive names (`parametric-lego.forge.js`). Each part file must run standalone and import via `require('./parts/name.forge.js', params)`.
38
- - Plain `.js` only for constants, math, tables, formatting never geometry.
39
- - Split files only for reusable parts or independent sub-assemblies, never for organization.
40
+ - Use kebab-case descriptive names.
41
+ - Use `main.forge.js` as the central entry point. It should import high-level modules, not every leaf file in a huge build.
42
+ - Prefer one nested `modules/` tree, like software. Compose upward from leaf modules to larger modules to the system. Keep files small enough to understand and verify.
43
+ - Reusable `.forge.js` modules should return builder functions or module interfaces. Direct-run previews belong inside `if (require.main === module)`, like Python's `if __name__ == "__main__"`.
44
+ - Each module file must run standalone where practical and import via `require('./path/file.forge.js')`.
45
+ - Use plain `.js` only for constants, tables, and pure helpers. Do not put geometry in helper-only files.
46
+ - Keep `NOTES.md` current for non-trivial builds. Capture learnings, API frustrations, non-obvious modeling choices, inspection surprises, cleanup notes, and follow-up product/API ideas. Do not hide requirements or formal design decisions there; those belong in PRFAQ/HLD/LLD docs.
47
+ - Write as many markdown design files as the project needs. Complex parts and submodules deserve their own design notes; small edits may need only a short local note.
40
48
 
41
49
  ### Workflow
42
50
 
43
- 1. **Load the `forgecad` skill** read at least the Core API reference. Moving parts: also the assembly group and joint-design guide. Mating parts: the positioning guide; default to connectors + `matchTo()`.
44
- 2. `mkdir -p YYYY/MM/DD/[folder]`.
45
- 3. Moving parts: prove the rig first (Kinematics-First below).
46
- 4. Write the model — `param()`/`Param.bool()` for tunable dimensions; pick the manufacturing process before styling; build real internals; follow the contracts below.
47
- 5. Validate — `forgecad run <file>` (`main.forge.js` for multi-file).
48
- 6. Run the Final Acceptance Gate and Manufacturing Outputs checks below on `main.forge.js`.
49
- 7. Iterate — convert every render/inspect finding into a model edit and rerun the same targeted evidence until reality matches the intended component graph.
50
-
51
- ### Process, Style, and Variants
52
-
53
- **Manufacturing process is a choice, not an assumption.** Never treat every model as printable. Pick process cues from the load path and operating story: machined, bent sheet, tube-and-plate, wood/composite, molded-look, printed, or hybrid purchased-hardware construction (rideables: metal/composite structure + purchased wheels/bearings; furniture: real joinery). Print-specific features (slicer clearances, heat-set inserts, layer-oriented ribs) only when the process includes printed parts.
54
-
55
- **Visual style: expensive and credible, not generically colorful.** Restrained material-driven palette (ivory, charcoal, satin black, brushed aluminum, brass, muted burgundy/green/navy, smoked polymer, natural wood); match color to material/process so metal, polymer, rubber, PCB, and wood read differently. Bright color only as small accents (controls, seals, indicators). Keep seams, fasteners, gaskets, and purchased parts legible.
56
-
57
- **Form is part of credibility.** Real products carry deliberate edge treatment — chamfered or rounded profiles where hands, seals, or tooling meet the part, draft on molded faces, consistent proportions and design language across parts. A knife-sharp box reads as a blockout, not a product. Get the rounding from profile-level geometry (rounded sketch corners, chamfered profiles) per the fillet caveat below.
58
-
59
- **Variants are parameter-selected.** Sizes/styles/revisions go behind one choice parameter (`Variant`, `Preset`); return only the selected variant. Comparison lineups only behind an explicit debug parameter so they can never pollute collision findings.
60
-
61
- ### Physical Artifact, Not Teaching Diagram
62
-
63
- Deliver the real closed artifact — covers installed, parts in assembled positions. The `forgecad` skill carries the no-labels/no-cutaway rule (no explanatory labels, arrows, or legends in production geometry; never a cutaway, sectioned, or exploded default); it binds here. Markings only when the real artifact has them (serial plates, gauge ticks, molded icons) — sparse, process-appropriate. Explain roles via named return objects and `verify.*`; review annotations go in `Viewport.label()` or a debug mode, never exported geometry.
64
-
65
- **Internal geometry is part of the model.** If the real artifact has internals, model them as real geometry even when hidden: cavities, ribs, bosses, screw holes, bearing seats, electronics/battery volumes, wire channels, mechanism clearances and stops. Verify hidden structure with exploration tools — alternate views, `inspect sections`, `--hide`, transparent shells, named ghosts — never by mutilating the returned model.
66
-
67
- ### Kinematics-First for Moving Parts
68
-
69
- For any mechanism (linkage, hinge, slider, suspension, gripper, drawer), the rig is the source of truth: build and prove the motion structure first, then attach geometry — never retrofit motion onto finished shells.
70
-
71
- - Pick the rig shape before geometry: point-link graphs for closed-loop skeletons with distance/angle constraints; frames and connector joints when part orientation matters (API roster in the assembly docs).
72
- - Name every degree of freedom; encode limits/defaults at rig level. Mirrored revolute axes need an explicit sign mapping — equal joint values do not automatically mirror poses.
73
- - Attach proxy geometry only (pivot markers, bars, slider blocks, wheel discs). Run the rig at rest, mid-travel, both limits, and mirrored/coupled poses until the solver, controls, connector alignment, and `verify.*` checks all pass:
74
-
75
- ```bash
76
- forgecad run model.forge.js --joint "theta=45"
77
- forgecad render 3d model.forge.js /tmp/theta-45.png --joint "theta=45" --camera iso
78
- ```
79
-
80
- Use real joint names; repeat `--joint` per control. A pose that fails to solve, clamps unexpectedly, breaks a connector check, or adds a collision means the rig is not ready for final geometry.
81
- - Only then attach manufacture-real geometry to the solved links, frames, and connectors — never via a final `rotate()` that makes one pose look assembled.
82
- - Return the unsolved `Assembly` so Motion controls re-run the real solve. Never bake a posed `SolvedAssembly` to make one pose look right.
83
- - Encode pose checks in-script with `verify.*`: convergence, connector origins coinciding, link lengths holding, end effectors reaching targets, running clearances positive.
84
-
85
- ### Mechanical Assembly Contract
86
-
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
-
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`.
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.
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.
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.
103
- - Handles and levers need a load path: hub-to-arm neck, pivot pin/bore, thrust shoulders, stops/detents, and the connected follower. A handle tangent to a hub is a failed mechanism.
104
- - Covers, doors, cartridges, service panels need seats: ledges, gasket grooves, bosses, snap hooks, tabs, or hinge barrels — plus a visible retention story.
105
- - Cables, wires, tubes need receiving geometry: gland, grommet, clamp, socket, ferrule, routed channel, or hose barb. Never let a cylinder end in open space.
106
- - Purchased loose parts may stay separate bodies — name them as purchased hardware/consumables and seat them in believable sockets, bores, races, or fastener stacks.
107
- - Encode interface intent with `verify.*`, not comments: `verify.clearanceBetween` for seated fits and clearance bands, `verify.minClearance`/`verify.notColliding` for keep-out and running gaps, `verify.connectorDistance` for connector mates. Part counts and generic dimensions never prove an interface.
108
- - No canned finished-object helpers for project-specific assemblies. Reusable vocabulary is primitives, cutters, patterns, and mechanical contracts (`lib.fastenerSet()`, `lib.boltPattern()`, real bores and pockets, connectors + `matchTo()`) — not finished backplates, brackets, or hinge leaves.
109
-
110
- Treat `fillet()`/`chamfer()` as experimental (Manifold can be incorrect, OCCT slow); prefer profile-level rounding and inspect before relying on the result.
111
-
112
- ### Imported Parts (User-Supplied 3D Files)
113
-
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).
51
+ Keep the workflow current in the project docs. Do not advance a stage until its acceptance criteria pass, and expect to revisit earlier stages when feedback changes the design.
115
52
 
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()`.
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.
118
- - Derive mating geometry by measurement, not eyeball: pull bore positions, diameters, and face offsets from sections, then hold them with `verify.clearanceBetween`/`verify.connectorDistance` against the import like any other body. Collision Policy applies to imports too.
119
- - The import is a purchased/fixed line item; the manufactured deliverables are the ForgeCAD-authored parts around it. Remodel an imported feature only where a boolean against the mesh is unreliable — and say so.
53
+ #### Stage 1: Design Intent
120
54
 
121
- ### Collision Policy
55
+ Read `references/stage-1-design-intent.md`.
122
56
 
123
- Each returned part is real matter. Expected final collision count: **zero**.
57
+ Accepted when the project has a product/user story, PR/FAQ or equivalent design-intent doc, output standard, process assumptions, explicit success criteria, and a first feedback plan.
124
58
 
125
- - Only exceptions: welded, fused, overmolded, cast-in, potted, or bonded matter — declared with `verify.intentionalOverlap` on the exact visible object pair with the physical reason. The mechanical-integrity gate honors a declaration only when that pair has a confirmed exact collision; unused or non-visible declarations still fail.
126
- - Never use interpenetration as a placement shortcut. Model contact honestly: pins in holes, shafts in seats, tabs in slots, hinges with knuckle clearance, nested parts with wall offsets, moving parts with travel envelopes.
127
- - Temporary construction overlaps (oversized cutters before `difference()`, primitives before `union()`, exploratory layouts) must be consumed, hidden, named as ghosts, or isolated with `--focus`/`--hide` so final findings stay meaningful.
128
- - Collision removal is part of the modeling pass, not optional polish.
59
+ #### Stage 2: Architecture Plan
129
60
 
130
- ### Final Acceptance Gate
61
+ Read `references/stage-2-architecture-plan.md`.
131
62
 
132
- Prove technical validity and visual plausibility before declaring done. Apply to any model with multiple bodies, surface details, cables, rails, handles, product skins, or hidden mating geometry.
63
+ Accepted when the HLD and needed LLD/module docs define the component graph, nested file structure, interfaces, parameters, build order, and evidence gates.
133
64
 
134
- 1. **State the intended physical component graph** — one connected component, several intentionally separate, or a selected assembly plus named ghosts — then run `forgecad inspect physical components` and require the count to match. Unexpected islands, accidental fusion, or bbox-only "touching" are model bugs.
135
- - Scripts using `assembly()`: `forgecad debug assembly model.forge.js --fail-on warning`. Fix warnings (multiple roots, manual joint contracts, disconnected bodies, unused connectors, collisions); a truly intentional one gets a visible reason in code.
136
- - Generated mechanical work: `forgecad inspect mechanical-integrity . --collisions` is the shareability gate — it fails on missing `verify.*` interface checks, fragmented named groups, uncontracted manual assemblies, positive-volume collisions, timeouts, runtime failures. Do not share while red unless the user asked for a blockout.
137
- - Include at least one verification that proves a mechanical interface (clearance band, keep-out, connector mate), not just object counts.
138
- - Moving assemblies: incomplete until poses cover rest, mid-travel, both limits, coupled and mirrored states via `--joint` and/or in-script `solve(state)` checks, with convergence, attachment, and clearances holding at every pose.
139
- 2. **Collision evidence**: run `forgecad inspect fit interference`; read the manifest collision count AND the evidence PNGs. Zero unexpected findings per Collision Policy; visually confirm where any findings appear.
140
- 3. **Risk-specific views, not just a hero shot.** Delivery renders use the model's `scene()` rig (Scene Presentation below) — default flat lighting in a final render is a finding. One whole-model context view plus views chosen from this object's failure modes — opposing, underside, interior-facing, or grazing angles that catch internals showing through openings, covers that don't close, bad boolean cuts. Per meaningful interface: one contextual and one focused/isolated view. Risk prompts:
141
- - long products, rails, handles, tools: views along and across the dominant length (bends, sag, end attachments)
142
- - enclosures/shells with internals: exterior plus hidden-cover views (fit, concealment, service access)
143
- - sockets, underside joins, stands, brackets: look directly into the mating face or underside; `inspect sections` for hidden geometry
144
- - cables, strings, belts, tubes: both endpoints, route clearance, sag, termination hardware
145
- - surface details on curved ProductSkin bodies: grazing and contextual views proving details conform or embed
146
- 4. **Visual attachment audit.** For every detail that should be connected, ask "where does this physically enter, seat, wrap, terminate, or fasten?" and check that view directly. Known failures to fix before delivery:
147
- - a flat rail or bed sitting on a curved shell instead of being recessed, saddled, socketed, or blended in
148
- - strings/cables passing through space without knots, hooks, holes, posts, ferrules, pulleys, or anchors
149
- - trim lines floating above the body instead of following the surface or being inset/raised strips with real thickness
150
- - handles/grips touching only by a tangent instead of having a neck, bridge, socket, screws, or overmolded landing
151
- - small hardware/gems that are bbox-connected but visually levitate; give them flush/inset seats or explicit brackets
152
- 5. **ProductSkin honesty.** Boolean-test warnings from sampled-loft boundary edges are not real collisions. Deliver only if the collision count is clean, connectivity is correct, and the attachment audit passes; mention the residual warning in the final response.
153
- 6. **Name the evidence** in the final response: commands run, views checked, joint values tested, focus/hide filters, component count, collision count, residual warnings or intentional exceptions. Never just say "validated."
65
+ #### Stage 3: Build Slices
154
66
 
155
- ### Manufacturing Outputs
67
+ Read `references/stage-3-build-slices.md`.
156
68
 
157
- A manufacture-realistic model must yield a package a shop can consume, not just a clean viewport.
69
+ Accepted when each slice or module runs in isolation, exposes clean connectors/metadata, has targeted render/inspect evidence, and updates the design docs with findings.
158
70
 
159
- - Register every purchased and fabricated part with `bom()` (exact spec, quantity, purpose) so the BOM lives in the model — `forgecad export report` must reproduce it without prose supplements.
160
- - Put `dim()` annotations on the dimensions a builder must hit: overall envelope, critical interfaces, mating bores and bolt patterns.
161
- - Prove the process-appropriate export runs cleanly and name the output path in the final response: `export stl`/`export 3mf` for printed parts; `export step` for machined parts and CAD interchange; sheet-metal parts must unfold to a valid flat pattern (`export cutting-layout` for sheet goods). `step`, `report`, and `cutting-layout` need a Production license — if unavailable, run the free exports and name the gated commands that complete the package instead of failing.
162
- - An export failure (non-manifold body, open shell, fused multi-part blob where one fabricated part was expected) is a model bug, not an export problem.
71
+ #### Stage 4: Feedback And Iteration
163
72
 
164
- ### Render and Inspect Cadence
73
+ Read `references/stage-4-feedback-iteration.md`. Also read `references/inspection-feedback.md` for inspection bundles and `references/simulation-feedback.md` for MuJoCo, FEA, or other behavior checks.
165
74
 
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.
75
+ Accepted only after automatic and manual evidence has been gathered, interpreted, and converted into model/design edits until the model behaves the way the user expects at the relevant module and system levels.
167
76
 
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.
77
+ #### Stage 5: Readiness Package
169
78
 
170
- **Keep inspection scenes small.** Return one selected configuration; include only the parts needed to prove the current risk (if a check concerns three objects, inspect those three, not the whole shop floor); prefer `--focus`/`--hide` and parameter-selected diagnostic modes over permanent extra objects; collapse proven subassemblies into fewer named objects where identity doesn't matter for collisions, masks, or contracts. If you cannot hold the scene in your head, you cannot debug it honestly.
79
+ Read `references/stage-5-readiness-package.md`.
171
80
 
172
- **Ghost parts for fit checks.** When a part holds or contains another object, render both with the contained object as a compact transparent named ghost e.g. a `box()` at the seat position with `.color('#ff4444').material({ opacity: 0.4 })`, returned as `{ name: 'Servo Ghost', shape: ghost }`.
81
+ Accepted when the final post-iteration model passes run/render/inspect evidence, plus simulation or export evidence only when requested or process-critical, carries BOM and critical dimensions, and can be reported with evidence reviewed, residual risks, and the next validation loop if anything remains unproven.
173
82
 
174
- Use `verify.*` for dimensions and clearances that decide acceptance; `console.log()` only for explanatory traces (shown under "Script output:" in `forgecad run`).
83
+ ### Reference Routing
175
84
 
176
- ### Build Bottom-Up
85
+ Read only what the current stage needs:
177
86
 
178
- You cannot target a complex model in one pass. Decompose, solve the smallest piece, verify, compose upward:
87
+ - Stage references the workflow acceptance gates.
88
+ - `references/parameter-controls.md` — deciding which user-facing `param()` controls to expose, where they live, and how to validate ranges.
89
+ - `references/module-contracts.md` — builder-first returns, preview guards, connector/data-flow rules, and assembly anti-patterns.
90
+ - `references/inspection-feedback.md` — choosing, running, and interpreting `forgecad inspect` evidence.
91
+ - `references/simulation-feedback.md` — MJCF/MuJoCo verification, FEA readiness, dynamic/contact checks, and behavior evidence.
92
+ - `references/readiness-review.md` — requirement checklist, evidence caps, and final readiness reporting.
93
+ - Core `forgecad` skill docs — API calls, CLI command syntax, generated assembly/viewport/scene/export docs, inspection bundle contracts, structural FEA, and examples.
179
94
 
180
- 1. **Decompose** into the smallest parts you can reason about confidently. A gear is not small — a single tooth profile is.
181
- 2. **Solve one piece** in isolation: own variables, own return, no connection logic yet.
182
- 3. **Verify it**: `forgecad run`, then render and read the PNG. Fix while the scope is tiny.
183
- 4. **Compose one layer at a time**, verifying at each level so a break is always at the newest seam.
95
+ ### Non-Negotiable Gates
184
96
 
185
- For any model with more than ~3 distinct geometric features, plan the decomposition explicitly before writing geometry.
97
+ - Build the physical artifact, not a teaching diagram: no labels, callouts, cutaways, or explanatory slabs unless explicitly requested.
98
+ - Do not treat every model as printable; choose the process stack from load path, use, scale, and operating story.
99
+ - Use the component model for assemblies: parts build at origin, connectors position them, and data flows through the parent.
100
+ - Prove mechanisms with motion skeletons and pose checks before attaching final geometry.
101
+ - Use `verify.*` for dimensions, clearances, connector mates, collisions, and acceptance checks.
102
+ - Expected final collision count is zero unless an exact intentional overlap is declared and verified.
103
+ - Treat every failed run, render, inspect, required simulation, requested/process-critical export, or manual review finding as an iteration input. Fix the model or revise the design, then gather the same evidence again.
186
104
 
187
- ### Scene Presentation
188
105
 
189
- Always set up `scene()` — default lighting looks flat. Worked recipes (studio and matte-industrial setups, named views, plinth) live in `guides/scene-presentation.md` via the `forgecad` skill; the schema is in the viewport docs. Hard-won cliffs:
106
+ ## Bundled Files
190
107
 
191
- - Setting `lights` replaces ALL defaults — always include an ambient light or the scene goes black.
192
- - Minimum rig: ambient fill + one warm key (`castShadow: true`) + weaker cool fill/rim. Keep `environment.intensity` low — environment fill kills shadows.
193
- - Prefer roughness over fog for softness; keep bloom near zero for mechanical parts or they read toy-like.
194
- - If a render is close, nudge `toneMappingExposure` by ~0.05 before redoing the rig; avoid big ambient jumps.
195
- - Camera: 3/4 angle, `fov` 35–50, `target` at the visual center of mass. Ground plane with shadows for grounded objects.
196
- - Environment by type: `studio` for metallic/jewelry, `warehouse`/`apartment` for organic/matte, `warehouse` + strong directionals for mechanical, `night` + bloom/vignette for dramatic.
108
+ - `references/inspection-feedback.md`
109
+ - `references/module-contracts.md`
110
+ - `references/parameter-controls.md`
111
+ - `references/readiness-review.md`
112
+ - `references/simulation-feedback.md`
113
+ - `references/stage-1-design-intent.md`
114
+ - `references/stage-2-architecture-plan.md`
115
+ - `references/stage-3-build-slices.md`
116
+ - `references/stage-4-feedback-iteration.md`
117
+ - `references/stage-5-readiness-package.md`
118
+ - `scripts/mujoco_verify.py`
119
+ - `scripts/summarize_manifest.py`
@@ -15,7 +15,7 @@ Write builder-honest AI image prompts from a concrete ForgeCAD model, build brie
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-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.
18
+ Only for artifacts already concrete enough to visualize (a specific `.forge.js` model, build brief, or HLD). If the user wants a model after the prompt, route vague physical briefs to `forgecad-build-model` so its design stages own the build. 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
 
@@ -13,12 +13,12 @@ Manage hosted ForgeCAD project sync from the CLI: init, clone, pull, push, file
13
13
 
14
14
  ## Project Sync
15
15
 
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.
16
+ forgecad.io is the hosted ForgeCAD platform; a project is a local folder marked by `forgecad.json`, and linked to the server after its first push. 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
 
18
18
  - **One studio process.** Run a single long-running `forgecad studio <folder> [<folder> ...]` naming every active project folder. The user opens the one printed localhost port once; create and edit files only under those folders so the browser live-updates. Never spawn extra servers per project.
19
19
  - **studio vs dev.** `forgecad studio` is for users and agents; `forgecad dev` is only for developing ForgeCAD itself.
20
- - **Login only for hosted commands.** `forgecad login` before any `project`/`publish` command; local work (run, render, studio) needs no auth.
21
- - **init creates, push syncs.** `project init "Name"` creates the remote project, writes `forgecad.json`, and pushes existing local files. `push` only syncs an already-initialized project. `clone <slug>` is the inverse: remote → new local folder.
20
+ - **Login only for hosted commands.** `project init` plus local work (run, render, studio) need no auth. Run `forgecad login` before hosted sync/admin commands such as `project push`, `project pull`, `project file *`, members, shares, and `publish`.
21
+ - **init is local, push creates remote.** `project init "Name"` writes local project metadata to `forgecad.json` without contacting the server. The first `project push` creates the hosted project if `forgecad.json` has no project ID yet, uploads existing local files, and records server file IDs. Later pushes sync the already-linked project. `clone <slug>` is the inverse: remote → new local folder.
22
22
  - **Sync is content-hash based.** `status`/`push`/`pull` compare file content hashes — no timestamps, no git; a file is "modified" purely by content difference. Loop: edit → `project status` → `project push`.
23
23
  - **Sync vs single-file ops.** Use `status`/`pull`/`push` for normal sync; use `project file <read|save|delete|...>` only for one hosted-file operation without a full push/pull cycle.
24
24
  - **Project context required.** All `project file *` and `publish` commands must run inside a folder containing `forgecad.json`.
@@ -15,7 +15,7 @@ Reconstruct a readable parametric ForgeCAD model from an existing CAD or mesh fi
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-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.
18
+ Routing: user wants to KEEP the file as a live component and design around it (bracket, enclosure, mating assembly) → `forgecad-build-model`, not this skill; prepared benchmark/RL episodes → use the task-local benchmark instructions, not the public skill library; inspection-bundle interpretation → `forgecad-build-model/references/inspection-feedback.md`; readiness review → `forgecad-build-model/references/readiness-review.md`; 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-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.
53
+ The final model must run, render, re-compare at `--samples 5000`, and pass an `inspect compare overlay`. Add targeted inspects using `forgecad-build-model`'s inspection feedback reference 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
@@ -18,9 +18,8 @@ The reference image is evidence, not the deliverable. The deliverable is a real
18
18
  ### Companion Skills
19
19
 
20
20
  - `forgecad` — API docs, model authoring, renderer behavior.
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.
21
+ - `forgecad-build-model` — design stages, file placement, project structure, decomposition, definition of done.
22
+ - `forgecad-build-model/references/inspection-feedback.md` — pre-delivery inspection for multi-part, internal, mechanical, thin-wall, or fit-sensitive objects.
24
23
 
25
24
  ### Core Rule
26
25
 
@@ -30,13 +29,13 @@ Infer the real object before matching any camera — identity, manufacture, scal
30
29
 
31
30
  1. Stage references in `/tmp/<slug>-replicate/refs`, keeping originals and adding view names where possible (`front`, `side`, `rear-iso`, `top`, `detail`).
32
31
  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-design-spec` when these are underdetermined.
32
+ 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. Follow `forgecad-build-model` design stages when these are underdetermined.
34
33
  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
34
  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
35
  6. Render comparison boards: render the model from each calibrated reference camera and place it next to the original. Never compare from memory.
37
36
  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
37
  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-inspect-model`.
38
+ 9. Validate the final object: `forgecad run`, reference comparison boards, canonical renders, and targeted inspections via `forgecad-build-model`'s inspection feedback reference.
40
39
 
41
40
  ### Comparison Boards
42
41
 
@@ -30,7 +30,8 @@ Author or modify ForgeCAD models, sketches, assemblies, and CLI workflows. Prefe
30
30
 
31
31
  #### Import and Composition
32
32
 
33
- - Always include the extension in relative imports: `require("./file.forge.js", { Param: value })` for model files, `require("./helpers.js")` for plain helper modules. Extensionless imports such as `require("./file")` do not resolve; ForgeCAD resolves project imports by exact path.
33
+ - Always include the extension in relative imports: `require("./file.forge.js")` for model files, `require("./helpers.js")` for plain helper modules. Extensionless imports such as `require("./file")` do not resolve; ForgeCAD resolves project imports by exact path.
34
+ - Reusable `.forge.js` part files should return builder functions such as `return { buildPart }`; direct-run preview params belong inside `if (require.main === module)`.
34
35
  - ForgeCAD APIs are injected globals in `.forge.js` files. Use `bom()`, `box()`, `scene()`, `Shape`, etc. directly; never destructure those names from helpers (`const { bom } = require("./bom.js")`). Import helper files under a project-specific name such as `const bomHelpers = require("./bom.js")`.
35
36
  - For static multi-part models, connectors + `matchTo()` are the default way to assemble touching parts.
36
37
  - Top-level scripts can return `Assembly` or `SolvedAssembly` directly. Do not call `.toGroup()` just to render an assembly; use it only when you need `ShapeGroup` composition, transforms, or named-child lookup.
@@ -48,6 +49,7 @@ Execution model, colors, coordinate system, primitives, booleans, patterns, impo
48
49
 
49
50
  - `docs/skill/API/core/concepts.md`
50
51
  - `docs/skill/generated/runtime-names.md`
52
+ - `docs/skill/guides/manual-parameters.md`
51
53
  - `docs/skill/generated/core.md`
52
54
 
53
55
  #### 2. Static Assembly and Positioning (for any multi-part model)
@@ -11,12 +11,8 @@ forgecad skill install
11
11
  | Skill | Installed by | Purpose |
12
12
  | --- | --- | --- |
13
13
  | [forgecad](/docs/skills/forgecad) | `forgecad skill install` | ForgeCAD model authoring, editing, debugging, and execution guidance for .forge.js, SVG-import, assembly, and CLI workflows. Use when building or modifying ForgeCAD geometry, structuring multi-file projects, validating scripts, or using ForgeCAD export/render tooling. |
14
- | [forgecad-build-model](/docs/skills/forgecad-build-model) | `forgecad skill install` | Build or edit a manufacture-realistic `.forge.js` model in a project, then validate it with run, render, inspect, and export evidence. |
15
- | [forgecad-design-spec](/docs/skills/forgecad-design-spec) | `forgecad skill install` | Create a ForgeCAD design brief, HLD, or LLD before coding by walking through use, assembly, interfaces, decisions, and verification. |
16
- | [forgecad-grade-model](/docs/skills/forgecad-grade-model) | `forgecad skill install` | Grade a ForgeCAD or CAD-as-code model against a requirement, brief, prompt, reference, or acceptance criteria with evidence and a 0-10 score. |
14
+ | [forgecad-build-model](/docs/skills/forgecad-build-model) | `forgecad skill install` | Build or edit `.forge.js` real product models through design, automatic/manual feedback gathering, inspection/simulation/FEA evidence, and iteration until ready. |
17
15
  | [forgecad-image-prompt](/docs/skills/forgecad-image-prompt) | `forgecad skill install` | Write builder-honest AI image prompts from a concrete ForgeCAD model, build brief, HLD, or LLD without hiding how the artifact is built. |
18
- | [forgecad-inspect-model](/docs/skills/forgecad-inspect-model) | `forgecad skill install` | Select, run, and interpret ForgeCAD inspection evidence for collisions, sections, wall thickness, components, masks, depth, normals, surface continuity, and fit. |
19
16
  | [forgecad-project-sync](/docs/skills/forgecad-project-sync) | `forgecad skill install` | Manage hosted ForgeCAD project sync from the CLI: init, clone, pull, push, file operations, members, publishing, and shares. |
20
17
  | [forgecad-reconstruct-cad-file](/docs/skills/forgecad-reconstruct-cad-file) | `forgecad skill install` | Reconstruct a readable parametric ForgeCAD model from an existing CAD or mesh file such as STL, OBJ, 3MF, STEP, or STP. |
21
18
  | [forgecad-reconstruct-from-images](/docs/skills/forgecad-reconstruct-from-images) | `forgecad skill install` | Reconstruct a real parametric ForgeCAD object from reference images by using images as evidence, not as a one-view facade. |
22
- | [forgecad-verify-mujoco](/docs/skills/forgecad-verify-mujoco) | `forgecad skill install` | Verify a ForgeCAD MJCF export in MuJoCo with dynamics, contacts, controls, joint travel, and rendered evidence before calling it simulation-ready. |
@@ -39,7 +39,6 @@ Use this when you want a fresh model instead of the starter project:
39
39
 
40
40
  ```bash
41
41
  npm install -g forgecad
42
- forgecad login
43
42
  mkdir spool-adapter
44
43
  cd spool-adapter
45
44
  forgecad project init "Spool Adapter" --visibility private
@@ -47,7 +46,7 @@ forgecad new adapter --template part
47
46
  forgecad studio .
48
47
  ```
49
48
 
50
- `forgecad project init` creates the hosted project, writes `forgecad.json`, and uploads existing local model files, helper code, Markdown notes, SVG/DXF assets, and other supported text project files. After that, `forgecad project push` syncs changes back to the hosted project.
49
+ `forgecad project init` writes local project metadata to `forgecad.json`; it does not create anything on the server. After local validation, run `forgecad login` and `forgecad project push`. The first push creates the hosted project if needed, uploads local model files, helper code, Markdown notes, SVG/DXF assets, and other supported text project files, then records server file IDs.
51
50
 
52
51
  `forgecad project push` does not create a remote project from an arbitrary folder. If a folder has no `forgecad.json`, initialize it with `forgecad project init` or clone an existing project first.
53
52
 
@@ -57,10 +56,10 @@ ForgeCAD commands need a project root so imports, helper files, SVGs, and genera
57
56
 
58
57
  A single loose `.forge.js` file is fine for a tiny experiment, but it is not the best workflow for useful AI-generated CAD. A project folder gives the agent and CLI enough context to work well:
59
58
 
60
- - `forgecad.json` links the folder to the hosted project.
59
+ - `forgecad.json` marks the project root locally, and links it to the hosted project after the first push.
61
60
  - `.forge.js`, helper code, Markdown notes, and SVG/DXF assets stay together.
62
61
  - `forgecad run` and render commands resolve local imports from the intended root.
63
- - `forgecad project push` knows exactly which remote project to update.
62
+ - `forgecad project push` knows when to create the hosted project, then which remote project to update afterward.
64
63
  - Inspection bundles, screenshots, and export outputs can live beside the model without mixing with unrelated files.
65
64
 
66
65
  Bad roots create bad results. Pointing ForgeCAD or an AI agent at `~`, a monorepo, or a downloads folder can make file discovery slow, confusing, or effectively unusable. Start small and intentional:
package/dist/index.html CHANGED
@@ -83,7 +83,7 @@
83
83
  * { margin: 0; padding: 0; box-sizing: border-box; }
84
84
  html, body, #root { width: 100%; min-height: 100%; background: var(--fc-bg); color: var(--fc-text); font-family: system-ui, -apple-system, sans-serif; }
85
85
  </style>
86
- <script type="module" crossorigin src="/assets/app-xW3hOdq9.js"></script>
86
+ <script type="module" crossorigin src="/assets/app-BKjogwIZ.js"></script>
87
87
  <link rel="stylesheet" crossorigin href="/assets/app-CjsbDlb7.css">
88
88
  </head>
89
89
  <body>
package/dist/llms.txt CHANGED
@@ -41,8 +41,7 @@ For coding agents, start with the welcome guide and AI Usage guide, then read th
41
41
 
42
42
  - [ForgeCAD modeling skill](https://forgecad.io/docs-raw/skills/forgecad.md): Core agent guidance for authoring, editing, debugging, and validating ForgeCAD geometry.
43
43
  - [Skill library index](https://forgecad.io/docs-raw/skills/index.md): Overview of the public agent workflows shipped with ForgeCAD.
44
- - [Build model](https://forgecad.io/docs-raw/skills/forgecad-build-model.md): Workflow for creating or editing `.forge.js` models, including assembly discipline and validation.
45
- - [Design spec](https://forgecad.io/docs-raw/skills/forgecad-design-spec.md): Workflow for turning fuzzy physical artifact requests into concrete briefs, HLDs, and LLDs.
44
+ - [Build model](https://forgecad.io/docs-raw/skills/forgecad-build-model.md): Design-first workflow for creating or editing `.forge.js` models, including staged implementation, assembly discipline, and validation.
46
45
  - [Inspect model](https://forgecad.io/docs-raw/skills/forgecad-inspect-model.md): Workflow for checking collisions, wall thickness, sections, masks, depth, and normals.
47
46
  - [Grade model](https://forgecad.io/docs-raw/skills/forgecad-grade-model.md): Workflow for scoring a model against a prompt, brief, reference, or acceptance criteria.
48
47
 
package/dist/sitemap.xml CHANGED
@@ -2,91 +2,91 @@
2
2
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
3
  <url>
4
4
  <loc>https://forgecad.io/</loc>
5
- <lastmod>2026-06-18</lastmod>
5
+ <lastmod>2026-06-20</lastmod>
6
6
  <changefreq>weekly</changefreq>
7
7
  <priority>1.0</priority>
8
8
  </url>
9
9
  <url>
10
10
  <loc>https://forgecad.io/docs</loc>
11
- <lastmod>2026-06-18</lastmod>
11
+ <lastmod>2026-06-20</lastmod>
12
12
  <changefreq>weekly</changefreq>
13
13
  <priority>0.8</priority>
14
14
  </url>
15
15
  <url>
16
16
  <loc>https://forgecad.io/docs/ai-native-cad</loc>
17
- <lastmod>2026-06-18</lastmod>
17
+ <lastmod>2026-06-20</lastmod>
18
18
  <changefreq>weekly</changefreq>
19
19
  <priority>0.9</priority>
20
20
  </url>
21
21
  <url>
22
22
  <loc>https://forgecad.io/docs/ai-usage</loc>
23
- <lastmod>2026-06-18</lastmod>
23
+ <lastmod>2026-06-20</lastmod>
24
24
  <changefreq>weekly</changefreq>
25
25
  <priority>0.8</priority>
26
26
  </url>
27
27
  <url>
28
28
  <loc>https://forgecad.io/docs/cli</loc>
29
- <lastmod>2026-06-18</lastmod>
29
+ <lastmod>2026-06-20</lastmod>
30
30
  <changefreq>weekly</changefreq>
31
31
  <priority>0.7</priority>
32
32
  </url>
33
33
  <url>
34
34
  <loc>https://forgecad.io/docs/simready-quickstart</loc>
35
- <lastmod>2026-06-18</lastmod>
35
+ <lastmod>2026-06-20</lastmod>
36
36
  <changefreq>weekly</changefreq>
37
37
  <priority>0.8</priority>
38
38
  </url>
39
39
  <url>
40
40
  <loc>https://forgecad.io/docs/simulation-workflow</loc>
41
- <lastmod>2026-06-18</lastmod>
41
+ <lastmod>2026-06-20</lastmod>
42
42
  <changefreq>weekly</changefreq>
43
43
  <priority>0.8</priority>
44
44
  </url>
45
45
  <url>
46
46
  <loc>https://forgecad.io/docs/skills/forgecad-build-model</loc>
47
- <lastmod>2026-06-18</lastmod>
47
+ <lastmod>2026-06-20</lastmod>
48
48
  <changefreq>weekly</changefreq>
49
49
  <priority>0.7</priority>
50
50
  </url>
51
51
  <url>
52
52
  <loc>https://forgecad.io/benchmark</loc>
53
- <lastmod>2026-06-18</lastmod>
53
+ <lastmod>2026-06-20</lastmod>
54
54
  <changefreq>weekly</changefreq>
55
55
  <priority>0.7</priority>
56
56
  </url>
57
57
  <url>
58
58
  <loc>https://forgecad.io/blog</loc>
59
- <lastmod>2026-06-18</lastmod>
59
+ <lastmod>2026-06-20</lastmod>
60
60
  <changefreq>weekly</changefreq>
61
61
  <priority>0.6</priority>
62
62
  </url>
63
63
  <url>
64
64
  <loc>https://forgecad.io/pricing</loc>
65
- <lastmod>2026-06-18</lastmod>
65
+ <lastmod>2026-06-20</lastmod>
66
66
  <changefreq>monthly</changefreq>
67
67
  <priority>0.5</priority>
68
68
  </url>
69
69
  <url>
70
70
  <loc>https://forgecad.io/terms</loc>
71
- <lastmod>2026-06-18</lastmod>
71
+ <lastmod>2026-06-20</lastmod>
72
72
  <changefreq>yearly</changefreq>
73
73
  <priority>0.3</priority>
74
74
  </url>
75
75
  <url>
76
76
  <loc>https://forgecad.io/privacy</loc>
77
- <lastmod>2026-06-18</lastmod>
77
+ <lastmod>2026-06-20</lastmod>
78
78
  <changefreq>yearly</changefreq>
79
79
  <priority>0.3</priority>
80
80
  </url>
81
81
  <url>
82
82
  <loc>https://forgecad.io/license</loc>
83
- <lastmod>2026-06-18</lastmod>
83
+ <lastmod>2026-06-20</lastmod>
84
84
  <changefreq>yearly</changefreq>
85
85
  <priority>0.3</priority>
86
86
  </url>
87
87
  <url>
88
88
  <loc>https://forgecad.io/blog/hello-forgecad-io</loc>
89
- <lastmod>2026-06-18</lastmod>
89
+ <lastmod>2026-06-20</lastmod>
90
90
  <changefreq>monthly</changefreq>
91
91
  <priority>0.5</priority>
92
92
  </url>
@@ -9,7 +9,7 @@ import {
9
9
  resolvePackagePath,
10
10
  runDirectCliMain,
11
11
  setActiveBackend
12
- } from "./chunk-VNM67DIV.js";
12
+ } from "./chunk-MNDROM7T.js";
13
13
 
14
14
  // cli/check-compiler.ts
15
15
  import assert from "assert/strict";
@@ -12,7 +12,7 @@ import {
12
12
  resolvePackagePath,
13
13
  runDirectCliMain,
14
14
  setActiveBackend
15
- } from "./chunk-VNM67DIV.js";
15
+ } from "./chunk-MNDROM7T.js";
16
16
 
17
17
  // cli/check-query-propagation.ts
18
18
  import assert from "assert/strict";