forgecad 0.9.15 → 0.10.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 (166) hide show
  1. package/dist/assets/{AdminPage-CDyGUinA.js → AdminPage-DwYHz72L.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-DfPMY_-d.js → BenchmarkPage-a9_f-1US.js} +1 -1
  3. package/dist/assets/{BlogPage-kF0fkdJT.js → BlogPage-DodHpvmf.js} +1 -1
  4. package/dist/assets/{DocsPage-B954L3YN.js → DocsPage-B5LePEuj.js} +8 -858
  5. package/dist/assets/{EditorApp-CuDLxKqL.css → EditorApp-BpjZgzk0.css} +148 -0
  6. package/dist/assets/EditorApp-QXsAISLR.js +16307 -0
  7. package/dist/assets/{EmbedViewer-C77B-TrF.js → EmbedViewer-DdEHGUMU.js} +2 -2
  8. package/dist/assets/{LandingPageProofDriven-Cr6fXMDj.js → LandingPageProofDriven-yhhOodbf.js} +2 -2
  9. package/dist/assets/{LegalPage-Dzklqmmg.js → LegalPage-5RbKRGYK.js} +1 -1
  10. package/dist/assets/{PricingPage-zWXkvlwl.js → PricingPage-E3Rma7aV.js} +1 -1
  11. package/dist/assets/{SettingsPage-Bz0of4KQ.js → SettingsPage-BJZcM97j.js} +1 -1
  12. package/dist/assets/{app-D3kDkggg.js → app-DSYrDg0V.js} +1846 -352
  13. package/dist/assets/cli/{render-DSY3mMQa.js → render-ZMHR9HkV.js} +161 -70
  14. package/dist/assets/{constructionHistoryWorker-gpDo-uH2.js → constructionHistoryWorker-AwMMWSxg.js} +1104 -349
  15. package/dist/assets/{evalWorker-CU0Ke6DP.js → evalWorker-DbNs7Dkp.js} +5155 -3772
  16. package/dist/assets/{inspectWorker-COyp8XXA.js → inspectWorker-CZsCFtQT.js} +1415 -439
  17. package/dist/assets/{targets-B9sGB5nB.js → jointPose-DO6mnXn_.js} +71 -3
  18. package/dist/assets/{manifold-DNkrUWpA.js → manifold-BGlQBBH9.js} +1 -1
  19. package/dist/assets/{manifold-BRI5prcH.js → manifold-BU-tJwQh.js} +1 -1
  20. package/dist/assets/{manifold-C-3h2M7p.js → manifold-fy2MV7K1.js} +2 -2
  21. package/dist/assets/{reportWorker-CdBz5bNg.js → reportWorker-DO6hcQbh.js} +8474 -4549
  22. package/dist/assets/{scalar-sampling-budget-wJF98aY9.js → scalar-sampling-budget-o90NSNmF.js} +5347 -3906
  23. package/dist/assets/{scanProxyWorker-B-9VbLIs.js → scanProxyWorker-2GtDLk-R.js} +19 -6
  24. package/dist/assets/{javascript-1kQXfVaz.js → typescript-DBQ6RN5l.js} +874 -22
  25. package/dist/cli/render.html +1 -1
  26. package/dist/docs/index.html +3 -3
  27. package/dist/docs-raw/AI/usage.md +3 -1
  28. package/dist/docs-raw/CLI.md +65 -239
  29. package/dist/docs-raw/README.md +6 -0
  30. package/dist/docs-raw/component-model.md +17 -150
  31. package/dist/docs-raw/generated/assembly.md +159 -520
  32. package/dist/docs-raw/generated/concepts.md +245 -3491
  33. package/dist/docs-raw/generated/core.md +277 -1251
  34. package/dist/docs-raw/generated/curves.md +387 -1608
  35. package/dist/docs-raw/generated/legacy.md +162 -0
  36. package/dist/docs-raw/generated/lib.md +238 -112
  37. package/dist/docs-raw/generated/output.md +51 -76
  38. package/dist/docs-raw/generated/runtime-names.md +30 -22
  39. package/dist/docs-raw/generated/sdf.md +68 -284
  40. package/dist/docs-raw/generated/sheet-metal.md +68 -335
  41. package/dist/docs-raw/generated/sketch.md +240 -1161
  42. package/dist/docs-raw/generated/viewport.md +75 -316
  43. package/dist/docs-raw/generated/wood.md +21 -49
  44. package/dist/docs-raw/guides/coordinate-system.md +4 -42
  45. package/dist/docs-raw/guides/inspection-bundles.md +44 -442
  46. package/dist/docs-raw/guides/joint-design.md +18 -79
  47. package/dist/docs-raw/guides/positioning.md +21 -143
  48. package/dist/docs-raw/guides/scene-presentation.md +89 -0
  49. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +25 -111
  50. package/dist/docs-raw/skills/forgecad-blockout-model.md +20 -117
  51. package/dist/docs-raw/skills/forgecad-component-model.md +23 -107
  52. package/dist/docs-raw/skills/forgecad-high-level-spec.md +47 -155
  53. package/dist/docs-raw/skills/forgecad-image-replicator.md +26 -143
  54. package/dist/docs-raw/skills/forgecad-lld.md +19 -113
  55. package/dist/docs-raw/skills/forgecad-make-a-model.md +113 -532
  56. package/dist/docs-raw/skills/forgecad-model-grader.md +38 -108
  57. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +24 -211
  58. package/dist/docs-raw/skills/forgecad-project.md +13 -129
  59. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +42 -134
  60. package/dist/docs-raw/skills/forgecad-render-inspect.md +27 -174
  61. package/dist/docs-raw/skills/forgecad-visual-spec.md +32 -112
  62. package/dist/docs-raw/skills/forgecad.md +19 -18
  63. package/dist/docs-raw/skills/index.md +2 -0
  64. package/dist/docs-raw/welcome.md +4 -2
  65. package/dist/index.html +1 -1
  66. package/dist/llms.txt +1 -2
  67. package/dist/sitemap.xml +13 -13
  68. package/dist-cli/{check-compiler-SDX5QIXI.js → check-compiler-JTVBITCR.js} +1 -1
  69. package/dist-cli/{check-query-propagation-EAYEFT77.js → check-query-propagation-3FFLSMVN.js} +1 -1
  70. package/dist-cli/{chunk-N4O47JLF.js → chunk-OAN5T4XD.js} +5722 -4287
  71. package/dist-cli/forgecad.js +2195 -656
  72. package/dist-skill/CONTEXT.md +1778 -7912
  73. package/dist-skill/SKILL.md +15 -15
  74. package/dist-skill/docs/API/core/concepts.md +27 -157
  75. package/dist-skill/docs/CLI.md +65 -239
  76. package/dist-skill/docs/generated/assembly.md +160 -493
  77. package/dist-skill/docs/generated/core.md +277 -1251
  78. package/dist-skill/docs/generated/curves.md +387 -1609
  79. package/dist-skill/docs/generated/lib.md +238 -112
  80. package/dist-skill/docs/generated/output.md +51 -76
  81. package/dist-skill/docs/generated/runtime-names.md +16 -22
  82. package/dist-skill/docs/generated/sdf.md +68 -284
  83. package/dist-skill/docs/generated/sheet-metal.md +68 -335
  84. package/dist-skill/docs/generated/sketch.md +240 -1160
  85. package/dist-skill/docs/generated/viewport.md +75 -223
  86. package/dist-skill/docs/generated/wood.md +21 -49
  87. package/dist-skill/docs/guides/coordinate-system.md +4 -42
  88. package/dist-skill/docs/guides/inspection-bundles.md +44 -442
  89. package/dist-skill/docs/guides/joint-design.md +18 -79
  90. package/dist-skill/docs/guides/positioning.md +21 -143
  91. package/dist-skill/docs/guides/scene-presentation.md +89 -0
  92. package/dist-skill/docs/guides/surface-members.md +26 -0
  93. package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +23 -111
  94. package/dist-skill/library/forgecad-blockout-model/SKILL.md +18 -117
  95. package/dist-skill/library/forgecad-component-model/SKILL.md +21 -107
  96. package/dist-skill/library/forgecad-high-level-spec/SKILL.md +45 -155
  97. package/dist-skill/library/forgecad-image-replicator/SKILL.md +24 -143
  98. package/dist-skill/library/forgecad-lld/SKILL.md +17 -113
  99. package/dist-skill/library/forgecad-make-a-model/SKILL.md +111 -532
  100. package/dist-skill/library/forgecad-model-grader/SKILL.md +36 -108
  101. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +35 -224
  102. package/dist-skill/library/forgecad-prepare-prompt/references/default-profiles.md +43 -271
  103. package/dist-skill/library/forgecad-prepare-prompt/references/master-prompt.md +30 -99
  104. package/dist-skill/library/forgecad-project/SKILL.md +13 -131
  105. package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +29 -123
  106. package/dist-skill/library/forgecad-render-inspect/SKILL.md +25 -174
  107. package/dist-skill/library/forgecad-visual-spec/SKILL.md +30 -111
  108. package/dist-skill/website/skills/forgecad-3d-reconstruction.md +58 -0
  109. package/dist-skill/website/skills/forgecad-blockout-model.md +49 -0
  110. package/dist-skill/website/skills/forgecad-component-model.md +53 -0
  111. package/dist-skill/website/skills/forgecad-high-level-spec.md +101 -0
  112. package/dist-skill/website/skills/forgecad-image-replicator.md +63 -0
  113. package/dist-skill/website/skills/forgecad-lld.md +41 -0
  114. package/dist-skill/website/skills/forgecad-make-a-model.md +186 -0
  115. package/dist-skill/website/skills/forgecad-model-grader.md +82 -0
  116. package/dist-skill/website/skills/forgecad-prepare-prompt.md +63 -0
  117. package/dist-skill/website/skills/forgecad-project.md +26 -0
  118. package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +60 -0
  119. package/dist-skill/website/skills/forgecad-render-inspect.md +80 -0
  120. package/dist-skill/website/skills/forgecad-visual-spec.md +71 -0
  121. package/dist-skill/website/skills/forgecad.md +122 -0
  122. package/dist-skill/website/skills/index.md +26 -0
  123. package/examples/api/comparison-imported-sphere-candidate.forge.js +1 -1
  124. package/examples/api/conformal-product-ribbon.forge.js +1 -1
  125. package/examples/api/exact-sheet-shell-assembly.forge.js +1 -1
  126. package/examples/api/extrude-options.forge.js +4 -2
  127. package/examples/api/field-loft-drive-tip.forge.js +40 -0
  128. package/examples/api/guided-loft-olive-oil-bottle.forge.js +1 -1
  129. package/examples/api/helix-basics.forge.js +2 -2
  130. package/examples/api/highlight-debug.forge.js +10 -10
  131. package/examples/api/mesh-import-slats.forge.js +1 -1
  132. package/examples/api/real-product-curves.forge.js +1 -1
  133. package/examples/api/route3d-elbow.forge.js +3 -0
  134. package/examples/api/sculpt-box-circle-booleans.forge.js +1 -1
  135. package/examples/api/sdf-shapes.forge.js +2 -5
  136. package/examples/api/sketch-rounding-strategies.forge.js +6 -6
  137. package/examples/api/surface-member-bottle-cage.forge.js +3 -3
  138. package/examples/api/surface-member-conformal-product-ribbon.forge.js +3 -3
  139. package/examples/api/surface-member-razor-inlay.forge.js +1 -1
  140. package/examples/api/variable-sweep-test.forge.js +4 -2
  141. package/examples/mechanical/airplane-propeller.forge.js +74 -39
  142. package/examples/nurbs-surface.forge.js +1 -1
  143. package/examples/products/iphone.forge.js +1 -1
  144. package/package.json +4 -1
  145. package/dist/assets/EditorApp-Beb-IZ0y.js +0 -14014
  146. package/dist/docs-raw/guides/geometry-conventions.md +0 -52
  147. package/dist/docs-raw/guides/modeling-recipes.md +0 -78
  148. package/dist-skill/docs/guides/geometry-conventions.md +0 -52
  149. package/dist-skill/docs/guides/modeling-recipes.md +0 -78
  150. package/dist-skill/library/forgecad-visual-spec/references/prompt-template.md +0 -79
  151. package/examples/api/bolted-service-cover.forge.js +0 -17
  152. package/examples/api/cable-gland-anchor.forge.js +0 -14
  153. package/examples/api/captured-cartridge-guide.forge.js +0 -14
  154. package/examples/api/captured-linear-slide.forge.js +0 -13
  155. package/examples/api/clevis-pin-joint.forge.js +0 -13
  156. package/examples/api/datum-enclosure.forge.js +0 -16
  157. package/examples/api/hose-barb-port.forge.js +0 -14
  158. package/examples/api/knuckled-hinge-assembly.forge.js +0 -15
  159. package/examples/api/living-hinge-cover.forge.js +0 -14
  160. package/examples/api/pcb-terminal-block.forge.js +0 -22
  161. package/examples/api/pinned-lever-pivot-stack.forge.js +0 -14
  162. package/examples/api/retained-shaft-knob-stack.forge.js +0 -15
  163. package/examples/api/routed-tube-clip.forge.js +0 -15
  164. package/examples/api/seated-bearing-stack.forge.js +0 -30
  165. package/examples/api/snap-latch-cover.forge.js +0 -14
  166. package/examples/api/thumb-screw-clamp.forge.js +0 -15
@@ -5,7 +5,7 @@ skill-order: 1
5
5
 
6
6
  # ForgeCAD CLI
7
7
 
8
- Create projects, open local studios, run, inspect, export, publish, and sync `.forge.js` models from your terminal. Core workflows are included with a free ForgeCAD account; advanced exports and rendering are Pro.
8
+ Create projects, open local studios, run, inspect, export, publish, and sync `.forge.js` models from your terminal. Licensing tiers are summarized once in [Setup & Licensing](#setup--licensing).
9
9
 
10
10
  ## Quick Start
11
11
 
@@ -32,7 +32,7 @@ forgecad project push
32
32
  forgecad project open
33
33
  ```
34
34
 
35
- Local modeling, inspection, export, and skill-install commands do not require a ForgeCAD account. Hosted project sync, publishing, token management, and license activation require sign-in. Run `forgecad login` and choose email/password or API token when prompted. Use `FORGECAD_TOKEN=fc_pat_... forgecad <hosted-command>` only for CI/CD and one-off automation. `forgecad studio` always requires an explicit project path; use `.` for the current project.
35
+ Local modeling, inspection, export, and skill-install commands do not require a ForgeCAD account. Hosted project sync, publishing, token management, and license activation require sign-in: run `forgecad login` and choose email/password or API token (for GitHub/Google accounts, create a token in Settings > API Tokens first). Use `FORGECAD_TOKEN=fc_pat_... forgecad <hosted-command>` only for CI/CD and one-off automation. `forgecad studio` always requires an explicit project path; use `.` for the current project.
36
36
 
37
37
  You can also start from the hosted starter project with `forgecad project clone start-here`, then `cd start-here` and `forgecad studio .`.
38
38
 
@@ -46,7 +46,7 @@ ForgeCAD includes a local editor. Open it around a dedicated project folder, edi
46
46
  | `dev <project-path> [project-path ...]` | Start the Vite dev server for ForgeCAD source development. |
47
47
  | `web` | Start a local dev server in web/playground mode (no filesystem, localStorage only). |
48
48
 
49
- `forgecad studio <project-path>` is the normal installed-CLI command for users. `forgecad dev <project-path>` starts the Vite dev server and is mainly for ForgeCAD source development.
49
+ `forgecad studio <project-path>` is the normal installed-CLI command; `forgecad dev` starts the Vite dev server and is mainly for ForgeCAD source development. Keep one long-running `forgecad studio <project-path> [project-path ...]` process open with every active project folder as an argument — the user opens the single printed localhost port once, and AI agents only create or edit files under those folders so the browser updates live without starting more servers.
50
50
 
51
51
  <details>
52
52
  <summary>Common flags for studio / dev</summary>
@@ -68,35 +68,15 @@ Execute scripts and produce images headless — no browser window. Renders use C
68
68
 
69
69
  Execute a Forge script quickly and print the inner-loop build summary: build count, verification results, parameters, and timing.
70
70
 
71
- The fast validation command. Runs your script with the real geometry kernel (no browser needed) and reports whether it built, how many objects came back, any `verify.*` results, parameter values, script logs, and elapsed script time. This is the command agents should run frequently while editing a model.
71
+ The fast validation command: runs the script with the real geometry kernel (no browser) and reports build status, object count, `verify.*` pass/fail with expected vs actual values (non-fatal — the model still renders), parameter values, script logs, and timing. Run it frequently while editing.
72
72
 
73
- **Fast by default** — a bare `forgecad run model.forge.js` does not compute per-object volumes, bounding boxes, construction history, feature tallies, or solver profiles. Those run diagnostics are useful, but they are no longer part of the hot path.
73
+ A bare `forgecad run` skips expensive diagnostics. Opt in with `--details` (volumes/bounds), `--history` (construction tree), `--features` (feature tallies), `--solver-profile` (constraint solver timing), or `--connectivity` (physical connected components — bbox contact is evidence, exact geometry is checked by default). `--quality live|default|high` selects the same geometry quality profile as the editor and export tools; `live` is fastest for large models.
74
74
 
75
- **Opt-in diagnostics** use `--details` for volume/bounding-box/object geometry summaries, `--history` for the construction tree, `--features` for feature tallies, or `--solver-profile` for constraint solver timing. Use `inspect fit interference`, `inspect physical gaps`, or `inspect mechanical-integrity --collisions` for spatial and collision evidence.
76
-
77
- **Verification results** — runs any `verify.*` checks in the script and reports pass/fail with expected vs actual values. Verification failures remain non-fatal so the model can still render and be inspected.
78
-
79
- **Physical connectivity** — pass `--connectivity` to list physically connected components across visible objects. Overlapping bbox candidates are checked with exact geometry by default, while bbox-only contact is treated as evidence rather than proof of one connected component. This helps answer whether the model is one continuous assembly or several separate islands.
80
-
81
- **Quality preset** — pass `--quality live|default|high` to select the same geometry quality profile used by the editor and export tools. `live` is the fastest preset for large audit models.
82
-
83
- **Direct CAD inputs** — pass `.stl`, `.obj`, `.3mf`, `.step`, or `.stp` directly when you just want to inspect an external asset. Mesh files are imported with `importMesh(...)`; STEP/STP files are imported with `importStep(...)` and auto-select OCCT unless you pass `--backend`.
84
-
85
- For deeper confidence gates, prefer `forgecad inspect mechanical-integrity`, `forgecad check print`, or targeted evidence commands such as `forgecad inspect fit interference` instead of turning `run` back into a catch-all audit command.
75
+ Direct `.stl`/`.obj`/`.3mf`/`.step`/`.stp` inputs are imported automatically; STEP/STP auto-selects OCCT unless you pass `--backend`. For deeper confidence gates, prefer `inspect mechanical-integrity`, `check print`, or `inspect fit interference` instead of turning `run` into a catch-all audit command.
86
76
 
87
77
  ```bash
88
- forgecad run examples/api/static-assembly-connectors.forge.js
89
- forgecad run examples/api/static-assembly-connectors.forge.js --focus
90
- forgecad run examples/api/static-assembly-connectors.forge.js --focus "Bench.Slat*"
91
- forgecad run examples/api/static-assembly-connectors.forge.js --hide "Bench.Slat0,Bench.Slat1"
92
- forgecad run examples/api/static-assembly-connectors.forge.js --details --history
93
- forgecad run examples/products/cup.forge.js --connectivity
94
- forgecad run examples/products/cup.forge.js --journeys
95
- forgecad run examples/products/cup.forge.js --backend occt
96
- forgecad run examples/products/cup.forge.js --backend truck --quality live
97
- forgecad run examples/products/cup.forge.js --debug-imports
98
- forgecad run examples/products/cup.forge.js -p "Wall Thickness=3" -p "Body Height=200"
99
- forgecad run examples/constraints/06-complex-spectrogram.forge.js --solver-debug-out tmp/spectrogram-debug
78
+ forgecad run model.forge.js
79
+ forgecad run model.forge.js --details --history
100
80
  ```
101
81
 
102
82
  ### `forgecad ls`
@@ -108,11 +88,8 @@ Runs the model headlessly and prints the exact object paths that CLI tools can t
108
88
  The default output is a compact line-oriented list. Use `--tree` for an indented hierarchy, `--long` for geometry metrics, or `--json` for automation.
109
89
 
110
90
  ```bash
111
- forgecad ls examples/api/static-assembly-connectors.forge.js
112
- forgecad ls examples/api/static-assembly-connectors.forge.js --tree
113
- forgecad ls examples/api/static-assembly-connectors.forge.js Bench
114
- forgecad ls examples/api/static-assembly-connectors.forge.js "Bench/Slat0" --long
115
- forgecad ls examples/api/static-assembly-connectors.forge.js --json
91
+ forgecad ls model.forge.js
92
+ forgecad ls model.forge.js --tree
116
93
  ```
117
94
 
118
95
  ### `forgecad show`
@@ -124,37 +101,23 @@ The main quick visual path for agents. Pass a model and, optionally, a target pa
124
101
  Without a target, `show` renders the whole scene and behaves like a shorter, intent-first wrapper around `render 3d`.
125
102
 
126
103
  ```bash
127
- forgecad show examples/api/static-assembly-connectors.forge.js
128
- forgecad show examples/api/static-assembly-connectors.forge.js Bench
129
- forgecad show examples/api/static-assembly-connectors.forge.js "Bench/Slat0" --from front --out slat-front.png
130
- forgecad show model.forge.js --camera "proj=perspective;pos=200,-160,120;target=0,0,20;up=0,0,1;fov=38"
104
+ forgecad show model.forge.js
105
+ forgecad show model.forge.js Bench
131
106
  ```
132
107
 
133
108
  ### Object Filtering: `--focus` and `--hide`
134
109
 
135
- Several CLI commands can filter the visible object set without changing model code: `render 3d`, `render wireframe`, `inspect <family> <mode>`, `capture`, and `check print`.
136
-
137
- Use `forgecad ls model.forge.js` to list exact object paths quickly, then pass those names or globs to `--focus` or `--hide` on render and inspection commands.
110
+ `render 3d`, `render wireframe`, `inspect <family> <mode>`, `capture`, and `check print` can filter the visible object set without changing model code. Use `forgecad ls model.forge.js` to list exact object paths, then pass names or globs:
138
111
 
139
112
  ```bash
140
- forgecad ls examples/api/static-assembly-connectors.forge.js --tree
141
- forgecad render 3d examples/api/static-assembly-connectors.forge.js bench.png --focus "Bench.*"
142
- forgecad render 3d examples/api/static-assembly-connectors.forge.js slats.png --focus "Bench.Slat*"
143
- forgecad inspect fit interference examples/api/static-assembly-connectors.forge.js --focus "Bench.*"
144
- forgecad inspect visual objects examples/api/static-assembly-connectors.forge.js --hide "Bench.Slat0,Bench.Slat1" --camera iso
113
+ forgecad render 3d model.forge.js bench.png --focus "Bench.*"
114
+ forgecad inspect visual objects model.forge.js --hide "Bench.Slat0,Bench.Slat1" --camera iso
145
115
  ```
146
116
 
147
- Rules:
148
-
149
- - A bare `--focus` hides mock objects and keeps real objects.
150
- - `--focus name1,name2` renders only matching objects.
151
- - `--hide name1,name2` removes matching objects from the visible scene.
152
- - Matching is case-insensitive and supports `*` / `?` globs.
153
- - `--focus` and `--hide` are mutually exclusive.
154
- - Filtering happens after the script runs; it does not avoid evaluating the full model.
155
- - Filtering works on returned object names. For grouped children, use concrete child names or globs like `Bench.*`.
156
- - If a model unions many parts into one returned shape, the original parts cannot be isolated by CLI filtering.
157
- - Filtered renders fail when no renderable objects remain, and exact cameras report visible objects that are partially or fully outside the camera frame.
117
+ - `--focus name1,name2` shows only matching objects; a bare `--focus` (no value) hides mock objects and keeps real ones.
118
+ - `--hide name1,name2` removes matching objects. `--focus` and `--hide` are mutually exclusive.
119
+ - Matching is case-insensitive with `*` / `?` globs against returned object names — use child names or globs like `Bench.*` for grouped children. Parts unioned into one returned shape cannot be isolated.
120
+ - Filtering happens after the script runs (the full model is always evaluated). Filtered renders fail when no renderable objects remain, and exact cameras report visible objects partially or fully outside the frame.
158
121
 
159
122
  ### `forgecad inspect`
160
123
 
@@ -179,49 +142,20 @@ Inspect a model by asking for one explicit kind of evidence.
179
142
  ```bash
180
143
  forgecad inspect history main.forge.js --object "Left Leg" --level object
181
144
  forgecad inspect design-trace main.forge.js --query feature:hole
182
- forgecad inspect fit interference main.forge.js --camera iso
183
- forgecad inspect visual cutaway main.forge.js --plane yz
184
- forgecad inspect visual objects main.forge.js --camera front --camera right
185
- forgecad inspect manufacture thickness main.forge.js --min 1.6 --warn 2.4
186
- forgecad inspect section main.forge.js --plane yz --ray bore:-20,0:20,0
187
- forgecad inspect replay outputs/inspect/<probe>/result.json --source candidate.forge.js
188
- forgecad inspect sections at main.forge.js --plane yz --offset 12.5
189
- forgecad inspect sections stack main.forge.js --plane yz --every 1
190
- forgecad inspect compare overlay candidate.forge.js --with reference.3mf
191
145
  ```
192
146
 
193
147
  ### `forgecad inspect sketch`
194
148
 
195
149
  Inspect returned sketches and profile regions used by returned shapes.
196
150
 
197
- Runs a model and reports inspectable 2D sketch/profile regions without requiring model code to register inspection hooks. The command inspects returned Sketch objects and profile-bearing shape compile plans such as extrude, cut, and revolve. Use `--seed x,y` to dry-run which region a point selector would consume, and `--operation extrude` to check extrusion compatibility.
151
+ External inspection: runs the model, then reads returned `Sketch`/`ConstraintSketch` objects and profile-bearing shape compile plans (extrude, cut, revolve) — model code never calls an inspection API. Reports filled selectable regions (sorted largest-first, run-local ids like `R0`) and excluded hole interiors. `--seed x,y` is the stable selection mechanism (not region ids): it dry-runs which region a point selector would consume, and seed failures exit nonzero (outside every region, on a boundary, inside a hole, ambiguous, or incompatible operation). `--operation extrude` checks only whether the selected filled region can be consumed by extrusion.
198
152
 
199
153
  ```bash
200
- forgecad inspect sketch examples/api/sketch-regions.forge.js
201
- forgecad inspect sketch model.forge.js --object "Profile" --seed 45,15
154
+ forgecad inspect sketch model.forge.js
202
155
  forgecad inspect sketch model.forge.js --json --object "Body" --seed 45,15 --operation extrude
203
156
  ```
204
157
 
205
- `inspect sketch` is external inspection: it runs the script, then reads returned scene objects and shape compile plans. Model code should not call an inspection API. It reports selectable 2D `regions` from returned `Sketch` / `ConstraintSketch` objects and from profile-bearing returned shapes (`extrude.profile`, `cut.profile`, `revolve.profile`).
206
-
207
- JSON contract: `targets[]` are inspectable sketches/profile uses; `regions[]` are filled selectable areas sorted largest-first with run-local ids like `R0`; `holes[]` are excluded interiors; `selection` is present only with `--seed`; `profileTree` is compile-plan provenance, not JavaScript variable names. Stable selection v1 is `--seed x,y`, not region id.
208
-
209
- Seed failures are explicit and exit nonzero when no target matches: outside every region, on a boundary, inside a hole, ambiguous, no regions, or incompatible operation. `--operation extrude` only checks whether the selected filled region can be consumed by extrusion; open path/rail selection is intentionally unsupported in v1.
210
-
211
- | Command | Description |
212
- |---------|-------------|
213
- | `inspect sketch` | Inspect returned sketches and profile regions used by returned shapes. |
214
- | `inspect visual image` | Capture standard shaded viewport evidence. |
215
- | `inspect visual objects` | Capture object identity evidence. |
216
- | `inspect section` | Run one exact section probe with optional ray rulers. |
217
- | `inspect replay` | Replay a saved section inspection result on a source model. |
218
- | `inspect fit interference` | Capture positive-volume interference evidence. |
219
- | `inspect manufacture thickness` | Capture wall-thickness evidence. |
220
- | `inspect sections at` | Capture one exact section at a plane offset. |
221
- | `inspect sections stack` | Capture periodic physical section slices. |
222
- | `inspect sections sample` | Capture a fixed number of representative section slices. |
223
- | `inspect compare overlay` | Capture candidate-vs-reference comparison evidence. |
224
- | `inspect evidence` | List available inspect commands. |
158
+ The full `inspect sketch` JSON contract (`targets[]`/`regions[]`/`holes[]`/`selection`/`profileTree` semantics) lives in [guides/inspection-bundles.md](guides/inspection-bundles.md).
225
159
 
226
160
  ### `forgecad render`
227
161
 
@@ -237,43 +171,23 @@ Render a Forge scene. Use a subcommand — `3d`, `views`, `section`, `wireframe`
237
171
  - `render hq` — path-traced via Blender Cycles, for documentation and marketing shots
238
172
 
239
173
  ```bash
240
- forgecad render 3d examples/products/cup.forge.js
241
- forgecad inspect fit interference examples/api/static-assembly-connectors.forge.js --camera iso
242
- forgecad render views examples/products/cup.forge.js
243
- forgecad render wireframe examples/products/cup.forge.js
244
- forgecad render section examples/furniture/01-table.forge.js --plane XZ
245
- forgecad render hq examples/products/cup.forge.js --preset dramatic
174
+ forgecad render 3d model.forge.js
175
+ forgecad render section model.forge.js --plane XZ
246
176
  ```
247
177
 
248
178
  ### `forgecad render 3d`
249
179
 
250
180
  Render a Forge scene to PNG using the real viewport renderer.
251
181
 
252
- Launches a headless Chrome instance, renders the scene with the same WebGL viewport as the editor, and saves a PNG. The output path defaults to `<script-name>.png` next to the input file. Each render uses a private renderer server by default, so parallel renders do not compete for the same Vite port.
253
-
254
- The input can be a `.forge.js` script or a direct `.stl`, `.obj`, `.3mf`, `.step`, or `.stp` asset. Direct STEP/STP rendering auto-selects OCCT unless you pass `--backend`.
182
+ Launches headless Chrome, renders the scene with the same WebGL viewport as the editor, and saves a PNG. The output path defaults to `<script-name>.png` next to the input; the input can be a `.forge.js` script or a direct `.stl`/`.obj`/`.3mf`/`.step`/`.stp` asset.
255
183
 
256
- Use `--focus` to isolate specific parts (hides everything else) or `--hide` to remove clutter like mock objects. The `--view` flag selects a named camera declared in `scene({ views })`. The `--camera` flag accepts built-in views (`front`, `top`, `iso`), `azimuth:elevation` angles, or an exact `proj/pos/target/up/fov` camera spec — pass `--camera` multiple times to render several viewpoints in one run. Use `--camera-json <file>` or `--scene <file>` for exact reproducible viewport cameras without shell escaping. Filtered renders report any visible objects whose bounding boxes are partially or fully outside the camera frame; exact cameras fail when they frame none of the visible objects.
184
+ `--camera` accepts built-in views (`front`, `top`, `iso`), `azimuth:elevation` angles, or an exact `proj/pos/target/up/fov` camera spec — pass it multiple times to render several viewpoints in one run. `--view` selects a named camera declared in `scene({ views })`; `--camera-json <file>` or `--scene <file>` give exact reproducible cameras without shell escaping. `--focus`/`--hide` filter visible objects; `--edges=<off|thin|bold>` controls the edge overlay.
257
185
 
258
- Use `--edges=<off|thin|bold>` to control the edge overlay. For a pure wireframe look, use `render wireframe` instead.
259
-
260
- This is the standard way to visually verify geometry from the CLI or in agent workflows. For higher quality (path-traced, materials, HDRI lighting), use `render hq` instead.
186
+ This is the standard way to visually verify geometry from the CLI or in agent workflows. For path-traced quality use `render hq`; for edges only use `render wireframe`.
261
187
 
262
188
  ```bash
263
- forgecad render 3d examples/products/cup.forge.js
264
- forgecad render 3d examples/api/static-assembly-connectors.forge.js --focus
265
- forgecad render 3d examples/api/static-assembly-connectors.forge.js --focus "Bench.Slat*"
266
- forgecad render 3d examples/api/static-assembly-connectors.forge.js --hide "Bench.Slat0,Bench.Slat1"
267
- forgecad render 3d model.forge.js --view hero
268
- forgecad render 3d model.forge.js --camera 45:30
269
- forgecad render 3d model.forge.js --camera "proj=perspective;pos=200,-160,120;target=0,0,20;up=0,0,1;fov=38"
270
- forgecad render 3d model.forge.js --camera-json camera.json
271
- forgecad render 3d model.forge.js --scene scene.json
272
- forgecad render 3d model.forge.js --camera front --camera side
273
- forgecad render 3d model.forge.js -p "Wall Thickness=3"
274
- forgecad render 3d model.forge.js --edges bold
275
- forgecad render 3d model.forge.js --edges off
276
- forgecad render 3d bracket.3mf bracket.png
189
+ forgecad render 3d model.forge.js
190
+ forgecad render 3d model.forge.js --camera front --camera side --edges bold
277
191
  ```
278
192
 
279
193
  ### `forgecad render views`
@@ -294,137 +208,77 @@ Render a Forge scene as a wireframe (edges only, no shading).
294
208
  Same as `render 3d` but renders only the edge geometry — no shaded surfaces. Useful for construction-style documentation or highlighting structural features without material detail.
295
209
 
296
210
  ```bash
297
- forgecad render wireframe examples/products/cup.forge.js
298
- forgecad render wireframe examples/products/cup.forge.js --camera iso
211
+ forgecad render wireframe model.forge.js
212
+ forgecad render wireframe model.forge.js --camera iso
299
213
  ```
300
214
 
301
215
  ### `forgecad render hq` **\[Pro\]**
302
216
 
303
217
  High-quality render via Blender Cycles — path-traced, HDRI, material presets.
304
218
 
305
- Exports the scene to Blender and renders with Cycles (path tracer). Requires Blender installed and on PATH.
306
-
307
- Choose a `--preset` for the look: `studio` (neutral product shot), `dramatic` (high-contrast), `clay` (matte, no color), `glass`, `metallic`, `toon`, `xray`, `normals`, `silhouette`, and more. Control quality vs speed with `--samples` (default 256). Use `--view`, `--camera`, `--camera-json`, or `--scene <file>` for still camera control, matching `render 3d`. Use `--transparent` for a transparent background (compositing-ready).
219
+ Exports the scene to Blender and renders with Cycles (path tracer); requires Blender on PATH. Output defaults to `<script-name>-hq.png`.
308
220
 
309
- Output defaults to `<script-name>-hq.png`. Great for documentation, marketing renders, and social media.
221
+ `--preset` picks the look (`studio`, `dramatic`, `clay`, `glass`, `metallic`, `toon`, `xray`, `normals`, `silhouette`, and more); `--samples` (default 256) trades quality vs speed; `--transparent` gives a compositing-ready background. Camera control (`--view`, `--camera`, `--camera-json`, `--scene <file>`) matches `render 3d`.
310
222
 
311
223
  ```bash
312
- forgecad render hq examples/products/cup.forge.js
313
- forgecad render hq examples/products/cup.forge.js hero.png --preset dramatic --samples 1024
314
- forgecad render hq examples/products/cup.forge.js hero.png --view hero
315
- forgecad render hq examples/products/cup.forge.js hero.png --camera-json camera.json
316
- forgecad render hq examples/products/cup.forge.js --preset clay --size 2048
317
- forgecad render hq examples/products/cup.forge.js --transparent --preset glass
224
+ forgecad render hq model.forge.js
225
+ forgecad render hq model.forge.js hero.png --preset dramatic --samples 1024
318
226
  ```
319
227
 
320
228
  ### `forgecad capture gif|mp4` **\[Pro\]**
321
229
 
322
230
  Animated orbit, section sweep, or named joint playback.
323
231
 
324
- Renders an animated sequence by either orbiting the camera around the model or playing back a named joint animation. Use `--capture orbit` (default) for a turntable rotation, `--capture animation --animation <name>` to play a named joint clip, or `--capture section-sweep` to move a clipping plane through the model. Supports `--cut-plane` to animate with a static cross-section visible. Use `--view`, `--camera`, `--camera-json`, or `--scene <file>` to choose the orbit base camera or the fixed camera for animations and section sweeps.
232
+ Renders an animated sequence: `--capture orbit` (default) for a turntable, `--capture animation --animation <name>` for a named joint clip, or `--capture section-sweep` to move a clipping plane through the model. `--cut-plane` keeps a static cross-section visible while animating; the orbit base or fixed camera comes from `--view`, `--camera`, `--camera-json`, or `--scene <file>`.
325
233
 
326
234
  ```bash
327
- forgecad capture gif examples/products/cup.forge.js
328
- forgecad capture gif examples/3d-printer.forge.js out/section.gif --cut-plane "Front Section"
329
- forgecad capture gif model.forge.js out/raw.gif --param "Output=raw-sdf"
330
- forgecad capture gif model.forge.js out/front.gif --camera front
331
- forgecad capture gif model.forge.js out/hero.gif --view hero
332
- forgecad capture gif examples/3d-printer.forge.js out/sweep.gif --capture section-sweep --sweep-plane YZ
333
- forgecad capture mp4 examples/products/cup.forge.js
334
- forgecad capture mp4 examples/api/assembly-kinematics-four-bar.forge.js out/four-bar.mp4 --view iso
335
- forgecad capture mp4 model.forge.js out/raw.mp4 --param "Output=raw-sdf"
336
- forgecad capture mp4 model.forge.js out/front.mp4 --camera front
337
- forgecad capture mp4 model.forge.js out/hero.mp4 --view hero
338
- forgecad capture mp4 examples/3d-printer.forge.js out/sweep.mp4 --capture section-sweep --sweep-plane YZ --sweep-frames 180
235
+ forgecad capture gif model.forge.js
236
+ forgecad capture gif model.forge.js out/sweep.gif --capture section-sweep --sweep-plane YZ
339
237
  ```
340
238
 
341
239
  ### `forgecad render section`
342
240
 
343
241
  Render a 2D cross-section of a 3D model (cut by a plane) to SVG or PNG.
344
242
 
345
- Cuts all shapes in the scene with an axis-aligned plane and produces a 2D cross-section drawing. The default plane is XY at Z=0. Use `--plane XZ` or `--plane YZ` for other orientations, and `--offset` to shift the cut position.
346
-
347
- Output format is determined by the file extension: `.svg` (default, vector) or `.png` (rasterized at `--size` pixels). Use `--edges=<off|thin|bold>` to control the outline stroke on cut shapes.
348
-
349
- Useful for verifying internal geometry, wall thicknesses, and fit checks that aren't visible in 3D renders.
243
+ Cuts all shapes with an axis-aligned plane (default XY at Z=0; `--plane XZ|YZ` reorients, `--offset` shifts the cut) and writes a 2D cross-section drawing. The file extension picks the format: `.svg` (default, vector) or `.png` (rasterized at `--size` pixels); `--edges=<off|thin|bold>` sets the outline stroke. Useful for verifying internal geometry, wall thicknesses, and fits that aren't visible in 3D renders.
350
244
 
351
245
  ```bash
352
- forgecad render section examples/furniture/01-table.forge.js
353
- forgecad render section examples/furniture/01-table.forge.js out/section.svg --plane XZ --offset 10
354
- forgecad render section examples/furniture/01-table.forge.js out/section.png --size 2048
355
- forgecad render section examples/furniture/01-table.forge.js out/bold.svg --edges bold
246
+ forgecad render section model.forge.js
247
+ forgecad render section model.forge.js out/section.svg --plane XZ --offset 10
356
248
  ```
357
249
 
358
250
  | Command | Description |
359
251
  |---------|-------------|
360
252
  | `render sketch` | Render a 2D sketch .forge.js to PNG. |
361
253
 
362
- <details>
363
- <summary>All render / capture flags</summary>
254
+ ### Behavioral notes
255
+
256
+ - Each render starts a private renderer server by default, so parallel renders do not collide. When sharing one server via `--port`, run renders sequentially — concurrent renders against a shared Vite server race and time out.
257
+ - Direct `.step` / `.stp` inputs auto-select the OCCT backend unless `--backend` is passed.
258
+ - Passing `--camera` several times writes one PNG per camera named `<output>_<camera>.png`; a single camera writes exactly the given output path. If a multi-camera run does not emit the PNGs you expect, rerun one camera at a time with explicit output paths.
259
+
260
+ ### Cross-cutting flags
261
+
262
+ These flags work across run / render / capture / inspect commands:
364
263
 
365
264
  | Option | Description |
366
265
  |--------|-------------|
367
266
  | `--param <Key=Value>` | Override a parameter value (Key=Value). Repeatable. |
368
- | `-p <Key=Value>` | Shorthand for --param |
267
+ | `--joint <JointName=Value>` | Override a Motion tab joint value (JointName=Value). Repeatable. |
369
268
  | `--focus <names>` | Focus: no arg hides mocks; comma-separated names/globs show only those |
370
269
  | `--hide <names>` | Hide comma-separated object names/globs |
371
270
  | `--camera <front\|back\|side\|right\|top\|iso\|az:el\|az:el:dist\|spec>` | Camera preset, spherical (az:el), or full spec such as `proj=perspective;pos=x,y,z;target=x,y,z;up=x,y,z;fov=45`. Repeatable. |
372
- | `--camera-json <file>` | Exact viewport camera JSON file |
373
271
  | `--view <name>` | Named camera view declared by the model with scene({ views }) |
374
272
  | `--size <px>` | Image size in pixels |
375
- | `--scene <json\|file>` | Viewport scene state JSON or JSON file |
376
- | `--background <color>` | Canvas background override |
377
- | `--render-mode <solid\|wireframe>` | Shaded solid (default) or wireframe only |
378
- | `--edges <off\|thin\|bold>` | Edge overlay preset in solid mode (default: off) |
379
- | `--render-style <classic\|studio\|fast\|glass\|inspection\|contour\|scan>` | Visual render style (render default: classic; inspect default: inspection) |
380
- | `--scan-granularity <12-144>` | Scan cells across the scene longest axis |
381
- | `--port <n>` | Renderer server port |
382
- | `--fresh-server` | Start a fresh renderer instead of reusing an existing one |
383
- | `--chrome-path <path>` | Chrome or Chromium executable path |
384
- | `--output <path>` | Output file path |
385
- | `--json` | Print machine-readable JSON |
386
273
  | `--quality <default\|live\|high>` | Mesh quality preset |
387
- | `--backend <manifold\|occt\|truck>` | Geometry backend (default: manifold) |
388
- | `--preset <name>` | Material/lighting preset |
389
- | `--width <px>` | Output width in pixels |
390
- | `--height <px>` | Output height in pixels |
391
- | `--samples <n>` | Render samples (more = higher quality, slower) |
392
- | `--engine <cycles\|eevee>` | Render engine |
393
- | `--transparent` | Transparent background (RGBA) |
394
- | `--no-denoise` | Disable denoising |
395
- | `--hdri <path.hdr>` | Custom HDRI environment map path |
396
- | `--video` | Render orbit turntable video (MP4) |
397
- | `--frames <n>` | Video frames per revolution |
398
- | `--fps <n>` | Video frame rate |
399
- | `--pitch <deg>` | Camera pitch angle in degrees |
400
- | `--format <gif\|mp4>` | Output format |
401
- | `--capture <orbit\|animation\|section-sweep>` | Capture preset |
402
- | `--animation <name>` | Named joint animation clip |
403
- | `--animation-loops <n>` | Repeat the selected animation clip |
404
- | `--cut-plane <name>` | Enable a named cut plane |
405
- | `--sweep-plane <XY\|XZ\|YZ>` | Moving plane for section-sweep |
406
- | `--sweep-normal <x,y,z>` | Custom section-sweep normal |
407
- | `--sweep-from <min\|max\|offset>` | Section-sweep start offset |
408
- | `--sweep-to <min\|max\|offset>` | Section-sweep end offset |
409
- | `--sweep-padding <n>` | Auto sweep range padding in model units |
410
- | `--sweep-frames <n>` | Moving frames for section-sweep |
411
- | `--sweep-ease <linear\|smoothstep>` | Section-sweep interpolation |
412
- | `--section-style <hatched\|clean>` | Section cap style for sweep captures |
413
- | `--wireframe-pass` | Enable an extra wireframe pass (off by default) |
414
- | `--no-wireframe-pass` | Disable the extra wireframe pass |
415
- | `--pixel-ratio <n>` | Render supersampling factor |
416
- | `--frames-per-turn <n>` | Frames for one orbit turn |
417
- | `--hold-frames <n>` | Freeze frames before each pass |
418
- | `--encoder <auto\|ffmpeg\|js>` | GIF encoder strategy |
419
- | `--crf <n>` | ffmpeg/libx264 quality |
420
- | `--ffmpeg-path <path>` | ffmpeg executable path |
421
- | `--list` | Print available animations and cut planes |
274
+ | `--backend <manifold\|occt\|truck>` | Geometry backend (default: manifold; STEP inputs default to OCCT) |
275
+ | `--json` | Print machine-readable JSON |
422
276
 
423
- </details>
277
+ Every command has more — Blender-only `render hq` flags (`--preset`, `--samples`, `--engine`, `--hdri`, `--transparent`, `--video`) and capture-only flags (`--capture`, `--animation`, `--cut-plane`, `--sweep-*`, `--fps`) among them. Run `forgecad <command> --help` for the full list.
424
278
 
425
279
  ## Export
426
280
 
427
- Export to every format you need. Export actions are free to run for personal non-commercial use; Pro covers human-operated commercial CAD work, and Enterprise covers backend or embedded application usage.
281
+ Export to every format you need.
428
282
 
429
283
  | Command | Format | Use case |
430
284
  |---------|--------|----------|
@@ -440,13 +294,12 @@ Export to every format you need. Export actions are free to run for personal non
440
294
  | `export urdf` **\[Production\]** | URDF package | ROS / PyBullet / MuJoCo |
441
295
  | `export report` **\[Production\]** | PDF report | Multi-view report with BOM and dimensions |
442
296
  | `export cutting-layout` **\[Production\]** | PDF/DXF | Sheet cutting layout with cut sequence |
443
- | `link` | URL | Generate a ForgeCAD share link from a GitHub Gist URL or ID and copy it to clipboard. |
297
+ | `link` | URL | Share link from a GitHub Gist URL or ID (copied to clipboard) |
444
298
 
445
299
  ```bash
446
300
  # Sheet material
447
- forgecad cut-list examples/api/sheet-stock-cut-list.forge.js
448
- forgecad export cutting-layout examples/api/sheet-stock-cut-list.forge.js --sheet-width 420 --sheet-height 594 --kerf 3
449
- forgecad export cutting-layout examples/api/sheet-stock-cut-list.forge.js out/layout.dxf
301
+ forgecad cut-list shelf.forge.js
302
+ forgecad export cutting-layout shelf.forge.js --sheet-width 420 --sheet-height 594 --kerf 3
450
303
 
451
304
  # 3D printing
452
305
  forgecad check print bracket.forge.js
@@ -468,6 +321,7 @@ forgecad export sdf rover.forge.js --output out/forge_scout
468
321
 
469
322
  | Option | Description |
470
323
  |--------|-------------|
324
+ | `--joint <JointName=Value>` | Override a Motion tab joint value (JointName=Value). Repeatable. |
471
325
  | `--output <path>` | Output STEP path |
472
326
  | `--backend <occt\|truck>` | Exact BREP exporter: occt (default) or truck (native analytic kernel) |
473
327
  | `--quality <default\|live\|high>` | Forge quality preset |
@@ -488,25 +342,7 @@ A project is a local folder linked to the hosted app by `forgecad.json`. Use `fo
488
342
 
489
343
  Keep the project root small and intentional. Do not run the editor from `~`, downloads, desktop, or a huge source tree. ForgeCAD scans project files such as `.forge.js`, `.js`, `.svg`, and `.dxf`; broad roots make local workflows and AI-agent context slow and confusing.
490
344
 
491
- ### Get started
492
-
493
- ```bash
494
- forgecad login
495
- mkdir spool-adapter
496
- cd spool-adapter
497
- forgecad project init "Spool Adapter"
498
- forgecad new adapter --template part
499
- forgecad studio .
500
-
501
- # or clone an existing hosted project:
502
- forgecad project clone start-here
503
- cd start-here
504
- forgecad studio .
505
- ```
506
-
507
- `forgecad login` asks how you want to sign in, then prompts for either email/password or an API token. If your account was created through GitHub or Google, create an API token in Settings > API Tokens, run `forgecad login`, and choose API token. Use `FORGECAD_TOKEN=fc_pat_...` only for CI/CD and one-off automation.
508
-
509
- `forgecad project init` creates the remote project, writes `forgecad.json`, pushes any existing local source files, and records server file IDs. `forgecad project push` syncs an already initialized project; it does not create a remote project from an arbitrary folder.
345
+ First-time setup (login, init, studio) is the [Quick Start](#quick-start) sequence above. `forgecad project init` creates the remote project, writes `forgecad.json`, pushes any existing local source files, and records server file IDs. `forgecad project push` syncs an already initialized project; it does not create a remote project from an arbitrary folder.
510
346
 
511
347
  ### Sync
512
348
 
@@ -601,13 +437,9 @@ Shares are live references — always the current version, not a snapshot.
601
437
  ForgeCAD files are plain JavaScript. AI coding agents should work inside an initialized project folder, write and iterate on local files, and use the CLI for evidence. See [AI Usage](AI/usage.md) for approved models, project-first setup, installable skills, quality prompts, and completion criteria.
602
438
 
603
439
  ```bash
604
- # Install the full public ForgeCAD skill library
440
+ # Install the full public ForgeCAD skill library (--target claude|opencode for a specific agent)
605
441
  forgecad skill install
606
442
 
607
- # Target a specific local agent skill directory when needed
608
- forgecad skill install --target claude
609
- forgecad skill install --target opencode
610
-
611
443
  # Or export a single context file for chat UIs (Claude.ai, ChatGPT, ...)
612
444
  forgecad skill one-file ~/Desktop/forgecad-context.md
613
445
 
@@ -630,7 +462,6 @@ Runs both inputs headlessly, samples their triangle surfaces, feature edges, bou
630
462
  ```bash
631
463
  forgecad compare 3d reference.stl reconstruction.forge.js
632
464
  forgecad compare 3d reference.step reconstruction.forge.js --json --samples 3000
633
- forgecad compare 3d source.3mf candidate.3mf --align center --tolerance-mm 0.5 --fail-under 90
634
465
  ```
635
466
 
636
467
  ### `forgecad check print`
@@ -642,24 +473,19 @@ Runs a Forge script with the headless kernel and emits a slicer-adjacent printab
642
473
  Checks include script `verify.*` results, exact positive-volume object collisions, physical component count, mesh topology, sampled wall thickness, unsupported overhang budget, and bed-contact area. Use `--json` for automation and `--output` to save the full report while keeping the readable terminal summary.
643
474
 
644
475
  ```bash
645
- forgecad check print examples/api/attachTo-basics.forge.js
646
- forgecad check print examples/api/verification-demo.forge.js --json
647
- forgecad check print model.forge.js --min-wall 1.2 --warn-wall 2
648
- forgecad check print model.forge.js --expect-components 1 -p "Wall Thickness=3"
476
+ forgecad check print model.forge.js
477
+ forgecad check print model.forge.js --json
649
478
  ```
650
479
 
651
480
  ### `forgecad inspect mechanical-integrity`
652
481
 
653
482
  Inspect generated ForgeCAD models for mechanical integrity failures.
654
483
 
655
- Scans a Forge script or a folder of generated projects and runs a mechanical integrity inspection. The inspection flags timeouts, runtime errors, missing `verify.*` checks, missing executed mechanical-interface checks, fragmented named groups, uncontracted manual assemblies, optional positive-volume object collisions, and excessive physical component counts when requested. Markdown details include suggested repair patterns such as connector-authored mates, bolted service covers, pinned levers, captured slides, hinges, clevis joints, retained shafts, and seated bearings. When `--collisions` is enabled, the Markdown details list the largest overlapping object pairs by volume so agents can repair the highest-risk interfaces first. Exact collision checks use a default 40-pair bbox-overlap budget and 30s exact-check time budget; exhausting either budget fails the file instead of silently passing a partial check. Script-authored `console.warn()` diagnostics are reported as warnings; use `verify.*` checks or `console.error()` for gate-failing contracts. Script-side joint sweeps use a separate validation step budget so the gate can keep default geometry quality while failing truncated validation explicitly.
484
+ Scans a Forge script or a folder of generated projects and flags timeouts, runtime errors, missing `verify.*` checks, missing executed mechanical-interface checks, fragmented named groups, uncontracted manual assemblies, and (when requested) positive-volume collisions and excessive physical component counts. Details suggest concrete repair patterns. With `--collisions`, the largest overlapping object pairs are listed by volume so the highest-risk interfaces get repaired first; exhausting the exact-check pair or time budget fails the file instead of silently passing a partial check, and truncated script-side joint-sweep validation fails explicitly. Script `console.warn()` diagnostics are reported as warnings; use `verify.*` checks or `console.error()` for gate-failing contracts.
656
485
 
657
486
  ```bash
658
487
  forgecad inspect mechanical-integrity path/to/generated-models
659
- forgecad inspect mechanical-integrity path/to/model/main.forge.js --min-verifications 2
660
- forgecad inspect mechanical-integrity path/to/model/main.forge.js --collisions
661
- forgecad inspect mechanical-integrity path/to/generated-models --collisions --collision-pair-limit 250
662
- forgecad inspect mechanical-integrity path/to/generated-models --json --timeout-ms 40000 --jobs 4
488
+ forgecad inspect mechanical-integrity model.forge.js --min-verifications 2
663
489
  ```
664
490
 
665
491
  <details>