forgecad 0.9.16 → 0.10.1

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 (162) hide show
  1. package/dist/assets/{AdminPage-CXvls4-J.js → AdminPage-DcCnj0qo.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-B27zk8xL.js → BenchmarkPage-BVEpJSVk.js} +1 -1
  3. package/dist/assets/{BlogPage-CMAVvgQL.js → BlogPage-DHaGP50_.js} +1 -1
  4. package/dist/assets/{DocsPage-knf4I4h7.js → DocsPage-CDoxHkz8.js} +40 -859
  5. package/dist/assets/EditorApp-BJ0Dloyh.js +16446 -0
  6. package/dist/assets/{EmbedViewer-D7ZGlFjx.js → EmbedViewer-CRKZbY0y.js} +2 -2
  7. package/dist/assets/{LandingPageProofDriven-CnevhTE8.js → LandingPageProofDriven-BxHkYRE7.js} +1 -1
  8. package/dist/assets/{LegalPage-BPTUmqeg.js → LegalPage-B-u6FrVv.js} +1 -1
  9. package/dist/assets/{PricingPage-B0D4goG_.js → PricingPage-CzpZ6-Ce.js} +1 -1
  10. package/dist/assets/{SettingsPage-CFF-UgjI.js → SettingsPage-CIZSSAd0.js} +1 -1
  11. package/dist/assets/{app-CE3sYcV7.css → app-CjsbDlb7.css} +143 -0
  12. package/dist/assets/{app-T0pDcSX4.js → app-DaTMg3nH.js} +1310 -290
  13. package/dist/assets/cli/{render-C5pcIISc.js → render-DPf4AYJK.js} +55 -60
  14. package/dist/assets/{constructionHistoryWorker-Ba2Hm58b.js → constructionHistoryWorker-AwMMWSxg.js} +1103 -349
  15. package/dist/assets/{evalWorker-vkx310U2.js → evalWorker-CjZZWRWW.js} +5209 -2643
  16. package/dist/assets/{inspectWorker-BuTJDVX6.js → inspectWorker-CZsCFtQT.js} +1163 -409
  17. package/dist/assets/{jointPose-B_Cgedn9.js → jointPose-DzQOViQH.js} +1 -1
  18. package/dist/assets/{manifold-BWgsjmAM.js → manifold-BYlzU521.js} +1 -1
  19. package/dist/assets/{manifold-D6IFSkhH.js → manifold-DgXo0T5P.js} +2 -2
  20. package/dist/assets/{manifold-rZexZI0G.js → manifold-K1SkarlQ.js} +1 -1
  21. package/dist/assets/{reportWorker-0AGij1Ru.js → reportWorker-B9nWwSrB.js} +8501 -3393
  22. package/dist/assets/{scalar-sampling-budget-J5cuzxT1.js → scalar-sampling-budget-prBw_s8t.js} +6067 -3479
  23. package/dist/assets/{scanProxyWorker-Vl4Wxa1y.js → scanProxyWorker-2GtDLk-R.js} +1 -1
  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 +1 -1
  28. package/dist/docs-raw/CLI.md +77 -240
  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 +188 -582
  32. package/dist/docs-raw/generated/concepts.md +259 -3501
  33. package/dist/docs-raw/generated/core.md +283 -1250
  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 +227 -85
  37. package/dist/docs-raw/generated/output.md +35 -99
  38. package/dist/docs-raw/generated/runtime-names.md +23 -23
  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/guides/simready-quickstart.md +171 -0
  50. package/dist/docs-raw/simulation-workflow.md +273 -0
  51. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +25 -111
  52. package/dist/docs-raw/skills/forgecad-blockout-model.md +20 -117
  53. package/dist/docs-raw/skills/forgecad-component-model.md +23 -107
  54. package/dist/docs-raw/skills/forgecad-high-level-spec.md +47 -155
  55. package/dist/docs-raw/skills/forgecad-image-replicator.md +26 -143
  56. package/dist/docs-raw/skills/forgecad-lld.md +19 -113
  57. package/dist/docs-raw/skills/forgecad-make-a-model.md +112 -532
  58. package/dist/docs-raw/skills/forgecad-model-grader.md +38 -108
  59. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +24 -211
  60. package/dist/docs-raw/skills/forgecad-project.md +13 -131
  61. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +42 -134
  62. package/dist/docs-raw/skills/forgecad-render-inspect.md +27 -174
  63. package/dist/docs-raw/skills/forgecad-visual-spec.md +32 -112
  64. package/dist/docs-raw/skills/forgecad.md +19 -18
  65. package/dist/docs-raw/skills/index.md +2 -0
  66. package/dist/docs-raw/welcome.md +2 -2
  67. package/dist/index.html +2 -2
  68. package/dist/llms.txt +1 -2
  69. package/dist/sitemap.xml +25 -13
  70. package/dist-cli/{check-compiler-SYQ2PWOB.js → check-compiler-II7NLPAB.js} +1 -1
  71. package/dist-cli/{check-query-propagation-HIAGV62W.js → check-query-propagation-7462TR3R.js} +1 -1
  72. package/dist-cli/{chunk-SPZE3DUY.js → chunk-UWTJCGXF.js} +5848 -2915
  73. package/dist-cli/forgecad.js +3496 -703
  74. package/dist-skill/CONTEXT.md +1797 -7963
  75. package/dist-skill/SKILL.md +15 -15
  76. package/dist-skill/docs/API/core/concepts.md +27 -157
  77. package/dist-skill/docs/CLI.md +77 -240
  78. package/dist-skill/docs/generated/assembly.md +182 -532
  79. package/dist-skill/docs/generated/core.md +283 -1250
  80. package/dist-skill/docs/generated/curves.md +387 -1609
  81. package/dist-skill/docs/generated/lib.md +227 -85
  82. package/dist-skill/docs/generated/output.md +35 -99
  83. package/dist-skill/docs/generated/runtime-names.md +16 -21
  84. package/dist-skill/docs/generated/sdf.md +68 -284
  85. package/dist-skill/docs/generated/sheet-metal.md +68 -335
  86. package/dist-skill/docs/generated/sketch.md +240 -1160
  87. package/dist-skill/docs/generated/viewport.md +75 -223
  88. package/dist-skill/docs/generated/wood.md +21 -49
  89. package/dist-skill/docs/guides/coordinate-system.md +4 -42
  90. package/dist-skill/docs/guides/inspection-bundles.md +44 -442
  91. package/dist-skill/docs/guides/joint-design.md +18 -79
  92. package/dist-skill/docs/guides/positioning.md +21 -143
  93. package/dist-skill/docs/guides/scene-presentation.md +89 -0
  94. package/dist-skill/docs/guides/surface-members.md +26 -0
  95. package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +23 -111
  96. package/dist-skill/library/forgecad-blockout-model/SKILL.md +18 -117
  97. package/dist-skill/library/forgecad-component-model/SKILL.md +21 -107
  98. package/dist-skill/library/forgecad-high-level-spec/SKILL.md +45 -155
  99. package/dist-skill/library/forgecad-image-replicator/SKILL.md +24 -143
  100. package/dist-skill/library/forgecad-lld/SKILL.md +17 -113
  101. package/dist-skill/library/forgecad-make-a-model/SKILL.md +110 -532
  102. package/dist-skill/library/forgecad-model-grader/SKILL.md +36 -108
  103. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +35 -224
  104. package/dist-skill/library/forgecad-prepare-prompt/references/default-profiles.md +43 -271
  105. package/dist-skill/library/forgecad-prepare-prompt/references/master-prompt.md +30 -99
  106. package/dist-skill/library/forgecad-project/SKILL.md +13 -133
  107. package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +29 -123
  108. package/dist-skill/library/forgecad-render-inspect/SKILL.md +25 -174
  109. package/dist-skill/library/forgecad-visual-spec/SKILL.md +30 -111
  110. package/dist-skill/website/skills/forgecad-3d-reconstruction.md +58 -0
  111. package/dist-skill/website/skills/forgecad-blockout-model.md +49 -0
  112. package/dist-skill/website/skills/forgecad-component-model.md +53 -0
  113. package/dist-skill/website/skills/forgecad-high-level-spec.md +101 -0
  114. package/dist-skill/website/skills/forgecad-image-replicator.md +63 -0
  115. package/dist-skill/website/skills/forgecad-lld.md +41 -0
  116. package/dist-skill/website/skills/forgecad-make-a-model.md +186 -0
  117. package/dist-skill/website/skills/forgecad-model-grader.md +82 -0
  118. package/dist-skill/website/skills/forgecad-prepare-prompt.md +63 -0
  119. package/dist-skill/website/skills/forgecad-project.md +26 -0
  120. package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +60 -0
  121. package/dist-skill/website/skills/forgecad-render-inspect.md +80 -0
  122. package/dist-skill/website/skills/forgecad-visual-spec.md +71 -0
  123. package/dist-skill/website/skills/forgecad.md +122 -0
  124. package/dist-skill/website/skills/index.md +26 -0
  125. package/examples/api/comparison-imported-sphere-candidate.forge.js +1 -1
  126. package/examples/api/conformal-product-ribbon.forge.js +1 -1
  127. package/examples/api/exact-sheet-shell-assembly.forge.js +1 -1
  128. package/examples/api/extrude-options.forge.js +4 -2
  129. package/examples/api/field-loft-drive-tip.forge.js +40 -0
  130. package/examples/api/guided-loft-olive-oil-bottle.forge.js +1 -1
  131. package/examples/api/highlight-debug.forge.js +10 -10
  132. package/examples/api/mesh-import-slats.forge.js +1 -1
  133. package/examples/api/real-product-curves.forge.js +1 -1
  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 +3 -3
  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/examples/robotics/README.md +46 -0
  145. package/examples/robotics/scout-cam-rover-simready/README.md +119 -0
  146. package/examples/robotics/scout-cam-rover-simready/lib/dims.js +140 -0
  147. package/examples/robotics/scout-cam-rover-simready/main.forge.js +343 -0
  148. package/examples/robotics/scout-cam-rover-simready/parts/body.forge.js +304 -0
  149. package/examples/robotics/scout-cam-rover-simready/parts/chassis.forge.js +320 -0
  150. package/examples/robotics/scout-cam-rover-simready/parts/hardware.forge.js +21 -0
  151. package/examples/robotics/scout-cam-rover-simready/parts/turret.forge.js +70 -0
  152. package/examples/robotics/scout-cam-rover-simready/parts/wheel.forge.js +116 -0
  153. package/examples/robotics/simready-asset-crate.forge.js +79 -0
  154. package/examples/robotics/simready-diff-drive-rover.forge.js +141 -0
  155. package/examples/robotics/simready-parallel-gripper.forge.js +102 -0
  156. package/package.json +1 -1
  157. package/dist/assets/EditorApp-BHMQlJ-D.js +0 -14686
  158. package/dist/docs-raw/guides/geometry-conventions.md +0 -52
  159. package/dist/docs-raw/guides/modeling-recipes.md +0 -78
  160. package/dist-skill/docs/guides/geometry-conventions.md +0 -52
  161. package/dist-skill/docs/guides/modeling-recipes.md +0 -78
  162. package/dist-skill/library/forgecad-visual-spec/references/prompt-template.md +0 -79
@@ -1,3 +1,5 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-model-grader/SKILL.md instead. -->
2
+
1
3
  # forgecad-model-grader
2
4
 
3
5
  Analyze, verify, and grade ForgeCAD or CAD-as-code models against a user requirement, design brief, prompt, reference, or acceptance criteria. Use when asked to evaluate, judge, QA, benchmark, score, rate, or compare a CAD model; render it from multiple angles, run targeted inspections when needed, visually verify the evidence, and produce a 0-10 score with concise justification.
@@ -11,140 +13,68 @@ Analyze, verify, and grade ForgeCAD or CAD-as-code models against a user require
11
13
 
12
14
  ## ForgeCAD Model Grader
13
15
 
14
- Grade the delivered CAD model against the requirement, not against what could be fixed later. Use renders and inspection evidence before assigning a score.
15
-
16
- This skill is an evaluator workflow. Do not edit the model unless the user explicitly asks for repairs; if repair is requested, first record the baseline grade, then make changes, then re-grade.
16
+ Grade the delivered model against the requirement, not against what could be fixed later. Never edit the model unless the user explicitly requests repairs — then record the baseline grade first, change, and re-grade.
17
17
 
18
18
  ### Workflow
19
19
 
20
- 1. Extract the requirement.
21
- Convert the user's prompt, design brief, reference image, or acceptance criteria into a short checklist. Separate must-haves from nice-to-haves. If the requirement is vague, grade against the most reasonable literal interpretation and mark uncertain items as `Unknown`.
22
-
23
- 2. Identify grading risks.
24
- Decide what could make the model fail: wrong object, missing parts, weak silhouette, hidden internals absent, impossible assembly, collisions, floating bodies, wrong scale, thin walls, poor manufacturing cues, bad parameter behavior, or unclear visual identity.
25
-
26
- 3. Run the model.
27
- In the ForgeCAD repo, use the local build:
28
-
29
- ```bash
30
- node dist-cli/forgecad.js run path/to/model.forge.js
31
- ```
32
-
33
- Outside the repo, use the installed CLI:
34
-
35
- ```bash
36
- forgecad run path/to/model.forge.js
37
- ```
38
-
39
- If the script fails to execute, stop normal grading and assign a capped score using the Evidence Caps section.
40
-
41
- 4. Render multiple views.
42
- Use a scratch output directory such as `/tmp/<model-name>-grade`. Render at least `iso`, `front`, `right`, and `top`. Add `back`, `bottom`, close-up, section, or custom cameras when the model is asymmetric, hollow, mechanical, or likely to hide mistakes.
43
-
44
- ```bash
45
- node dist-cli/forgecad.js render 3d path/to/model.forge.js /tmp/model-grade/view.png --camera iso --camera front --camera right --camera top --edges bold
46
- ```
47
-
48
- If a multi-camera render does not emit separate useful PNGs, rerun one camera at a time with explicit output paths.
49
-
50
- 5. Visually inspect the PNGs.
51
- Open the rendered images. Do not score from command output alone. Check silhouette, proportions, required visible features, part boundaries, material/color cues, seams, fasteners, interfaces, and whether the model reads as the requested artifact from more than one angle.
52
-
53
- 6. Run targeted inspections when the risk calls for them.
54
- Use `forgecad-render-inspect` for inspection bundles. Minimum guidance:
55
-
56
- - `inspect visual image` and `inspect visual objects`: visual sanity, object naming, and part identity.
57
- - `inspect fit interference`: multi-part fit, interference, and assembled mechanisms.
58
- - `inspect sections at|stack|sample` and `inspect manufacture thickness`: shells, enclosures, ribs, bosses, printability, and wall claims.
59
- - `inspect physical components`: accidental fusion or disconnected solids.
60
- - `inspect physical floating`: loose bodies without physical support.
61
- - `inspect visual depth`, `inspect visual normals`, or `inspect surface zebra`: surface, occlusion, faceting, continuity, or strange protrusions.
62
-
63
- Typical command:
64
-
65
- ```bash
66
- node dist-cli/forgecad.js inspect fit interference path/to/model.forge.js /tmp/model-grade/collisions --camera iso --force --size 700
67
- python agent-skill-library/forgecad-render-inspect/summarize_manifest.py /tmp/model-grade/collisions
68
- ```
69
-
70
- Read the manifest and inspect the relevant evidence PNGs. Treat unexpected collisions, thin regions, missing sections, wrong component counts, floating bodies, and confusing object colors as evidence, not as warnings to wave away.
71
-
72
- 7. Score with evidence.
73
- Fill the rubric, apply caps, then give a final 0-10 score. Use whole numbers or `.5` increments. Unknowns count against the score.
20
+ 1. **Extract the requirement** into a checklist, must-haves separate from nice-to-haves. If the brief is vague, grade the most reasonable literal interpretation and mark unverifiable items `Unknown`.
21
+ 2. **Run the model**: `forgecad run <model>.forge.js` (in the ForgeCAD repo use the local build, `node dist-cli/forgecad.js run ...`). If it fails to execute, stop and apply the caps.
22
+ 3. **Render** at least `iso`, `front`, `right`, `top` to a scratch dir; add views (back, bottom, close-up, section) when the model is asymmetric, hollow, mechanical, or likely to hide mistakes.
23
+ 4. **Open and look at every PNG** — never score from command output alone. Check silhouette, proportions, required features, part boundaries, interfaces, and whether the model reads as the requested artifact from more than one angle.
24
+ 5. **Inspect** whenever hidden internals, fit, wall thickness, or assembly behavior are central to the brief grading without inspecting them caps the score. Delegate evidence choice, commands, and manifest reading to the `forgecad-render-inspect` skill. Findings (unexpected collisions, thin regions, floating bodies, wrong component counts) are evidence, not warnings to wave away.
25
+ 6. **Score**: fill the rubric, apply caps, give a final 0-10 in whole or `.5` increments. Unknowns count against the score.
74
26
 
75
27
  ### Rubric
76
28
 
77
- Start from these dimensions, then apply the caps below:
78
-
79
29
  | Dimension | Points | What To Look For |
80
30
  | --- | ---: | --- |
81
- | Requirement fit | 4 | The model satisfies the stated must-haves, captures the intended object/function, and does not drift into a generic substitute. |
82
- | Geometric completeness | 2 | Correct silhouette, proportions, visible details, part boundaries, internal structure when required, and no missing major components. |
83
- | Mechanical/manufacturing plausibility | 2 | Believable materials/process, real interfaces, clear load paths, fasteners/seats/clearances where needed, and no impossible assembly behavior. |
84
- | Validation health | 1 | Runs cleanly, renders from multiple views, and targeted inspections do not reveal major unaddressed issues. |
85
- | Code/model quality | 1 | Parametric clarity, readable organization, meaningful names, no debug junk, and appropriate use of ForgeCAD APIs. |
86
-
87
- Interpretation:
88
-
89
- | Score | Meaning |
90
- | ---: | --- |
91
- | 10 | Exceptional match; requirements are met with strong visual and inspection evidence, no meaningful defects found. |
92
- | 9 | Excellent; one or two small gaps, but the artifact is clearly fit for the brief. |
93
- | 7-8 | Good; recognizable and mostly complete, with fixable omissions or moderate mechanical/detail issues. |
94
- | 5-6 | Partial; main idea is present, but major requirements, proportions, internals, or plausibility are missing. |
95
- | 3-4 | Weak; model runs or renders but only loosely matches the request. |
96
- | 1-2 | Barely useful; broken, mostly unrelated, or only a trivial placeholder. |
97
- | 0 | No evaluable model or completely unrelated artifact. |
31
+ | Requirement fit | 4 | Satisfies the stated must-haves, captures the intended object/function, no drift into a generic substitute. |
32
+ | Geometric completeness | 2 | Correct silhouette, proportions, visible details, part boundaries, internal structure when required, no missing major components. |
33
+ | Mechanical/manufacturing plausibility | 2 | Believable materials/process, real interfaces, clear load paths, fasteners/seats/clearances where needed, no impossible assembly. |
34
+ | Validation health | 1 | Runs cleanly, renders from multiple views, targeted inspections reveal no major unaddressed issues. |
35
+ | Code/model quality | 1 | Parametric clarity, readable organization, meaningful names, no debug junk, appropriate ForgeCAD APIs. |
36
+
37
+ Anchors: 9-10 = evidence-backed match for the brief; 7-8 = recognizable and mostly complete, fixable gaps; 5-6 = main idea only; below 5 = broken or loosely related.
98
38
 
99
39
  ### Evidence Caps
100
40
 
101
- Apply these maximum scores after the rubric:
41
+ Maximum scores, applied after the rubric:
102
42
 
103
- - If the model does not execute: max `2`.
104
- - If the model executes but cannot be rendered: max `4`.
105
- - If no rendered images were visually inspected: max `5`.
106
- - If only one flattering view was inspected: max `6`.
107
- - If a must-have requirement is absent: max `6`.
108
- - If the model is visually recognizable but physically impossible for the requested use: max `6`.
109
- - If hidden internals, fit, wall thickness, or assembly behavior are central to the brief but not inspected: max `7`.
110
- - If targeted inspection finds unexpected collisions, floating bodies, critical thin walls, or wrong connectivity: max `6`, or max `5` when the defect invalidates the main function.
111
- - If the score relies on an assumption the evidence cannot verify: mark it `Unknown` and do not score above `8`.
43
+ - Model does not execute: max `2`.
44
+ - Executes but cannot be rendered: max `4`.
45
+ - No rendered images visually inspected: max `5`.
46
+ - Only one flattering view inspected: max `6`.
47
+ - A must-have requirement is absent: max `6`.
48
+ - Visually recognizable but physically impossible for the requested use: max `6`.
49
+ - Internals, fit, walls, or assembly central to the brief but uninspected: max `7`.
50
+ - Inspection finds unexpected collisions, floating bodies, critical thin walls, or wrong connectivity: max `6`; max `5` when the defect invalidates the main function.
51
+ - Delivered as a finished product/prototype but presented with default flat lighting (no `scene()` rig), a generically colorful or material-false palette, or teaching-diagram styling: max `8`. Does not apply when the brief asks for a blockout or bare technical study.
52
+ - Any score relying on an assumption the evidence cannot verify: mark it `Unknown`, never score above `8`.
112
53
 
113
54
  ### Report Format
114
55
 
115
- Keep the report compact and evidence-first:
116
-
117
56
  ```markdown
118
- Score: 7.5 / 10
57
+ Score: N / 10
119
58
 
120
59
  Requirement checklist:
121
60
  | Item | Result | Evidence |
122
61
  | --- | --- | --- |
123
62
  | ... | Pass/Partial/Fail/Unknown | render/inspection/file evidence |
124
63
 
125
- Evidence reviewed:
126
- - Run: command and outcome
127
- - Renders: paths/views inspected
128
- - Inspections: bundle path, evidence command, manifest highlights
129
-
130
- Why this score:
131
- Short paragraph explaining the decisive strengths and defects.
132
-
133
- Caps applied:
134
- List any cap that affected the final score, or `None`.
135
-
136
- Next fixes:
137
- The 2-5 highest-leverage improvements, only if useful.
64
+ Evidence reviewed: run outcome; views inspected; inspection highlights.
65
+ Why this score: decisive strengths and defects.
66
+ Caps applied: list, or `None`.
67
+ Next fixes: the 2-5 highest-leverage improvements.
138
68
  ```
139
69
 
140
70
  ### Grading Rules
141
71
 
142
- - Be strict but fair. A beautiful render with missing functional geometry is not a high score.
143
- - Grade the default returned model unless the user names a specific parameter set or variant.
144
- - Do not award points for comments, labels, or intentions that are not present in geometry.
145
- - Do not treat decorative screws, floating labels, or teaching-diagram callouts as substitutes for real mechanical interfaces.
146
- - Prefer concrete evidence over taste. Say which render or inspection finding drove the grade.
147
- - If comparing several models, use the same checklist, cameras, inspection evidence, and caps for all of them.
72
+ - A beautiful render with missing functional geometry is not a high score.
73
+ - Grade the default returned model unless the user names a parameter set or variant.
74
+ - No points for comments, labels, or intentions absent from the geometry.
75
+ - Decorative screws, floating labels, and teaching-diagram callouts are not real mechanical interfaces.
76
+ - Cite which render or inspection finding drove the grade.
77
+ - When comparing models, use identical checklist, cameras, inspection evidence, and caps for all.
148
78
 
149
79
 
150
80
  ## Bundled Files
@@ -1,3 +1,5 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-prepare-prompt/SKILL.md instead. -->
2
+
1
3
  # forgecad-prepare-prompt
2
4
 
3
5
  Turn a fuzzy physical product, mechanism, or CAD artifact request into a concrete manufacture-realistic prototype ForgeCAD build brief and a single master prompt for the modeling pass. Use when the engineering brief is incomplete, manufacturing/process choice is underspecified, or the work needs a specific operating story to avoid generic toy solutions.
@@ -11,237 +13,48 @@ Turn a fuzzy physical product, mechanism, or CAD artifact request into a concret
11
13
 
12
14
  ## Prepare ForgeCAD Prompt
13
15
 
14
- Use this skill before modeling when the user wants something physically real, manufacturing-aware, and buildable as a manufacture-realistic prototype, but their request sounds like:
16
+ Use before modeling when the user wants something physically real and buildable but the request is fuzzy ("make me a robot gripper", "make it production ready", "I don't know the numbers, make sensible choices"). This skill owns intake and prompt preparation; once the brief is concrete, hand off to the `forgecad` skill.
15
17
 
16
- - "make me a robot gripper"
17
- - "design a real mechanism"
18
- - "make it production ready / assembly ready"
19
- - "I do not know the payload or exact dimensions, just make sensible choices"
18
+ ### Core Rules
20
19
 
21
- This skill owns the intake and prompt-preparation step. After the brief is concrete, switch to `forgecad` for implementation.
20
+ **Manufacturing is a design decision, not a default.** Never assume FDM, 3D printing, "printable", or plastic parts unless the user explicitly asked, the artifact family honestly points there, or the chosen process stack includes printed parts. Derive the process stack from artifact family, load path, scale, safety expectations, material properties, production intent, and operating story — family→process examples and all numeric anchors live in `references/default-profiles.md`. If the user names a process, honor it but warn when it is unsafe or dishonest for the duty.
22
21
 
23
- ### Core Rule
22
+ **Posture taxonomy.** Default output posture is **manufacture-realistic prototype**: a serious build candidate with real materials, purchased-part boundaries, assembly logic, and validation — no claims of production tooling, certification, rider safety, or release-ready DFM. Other postures only when the brief justifies them: `production-realistic` (explicit production intent), `printable` (printing is the selected process), `visual-CAD` (form study), or a specific process posture (`sheet-metal`, `CNC-machined`, `laser-cut`, `welded tube`, `injection-molded`, `cast`, `hybrid purchased-hardware`). Pick the posture that is honest for the artifact, not the easiest CAD surface.
24
23
 
25
- Do not start by asking raw engineering inputs like payload mass, torque, or tolerance unless the architecture truly depends on them and you cannot bracket them safely.
24
+ **Family-scoped numbers.** Every starter assumption is scoped to one artifact family. Never reuse numbers across families; never apply one default profile to unrelated artifacts.
26
25
 
27
- Manufacturing is a design decision, not a default.
28
- Do not assume FDM, 3D printing, "printable", or plastic parts unless the user explicitly asks for that, the artifact family honestly points there, or the chosen process stack includes printed parts.
29
- Choose the manufacturing/process stack from the artifact family, load path, scale, safety expectations, material properties, production intent, and operating story.
30
- For example: scooters, bikes, skateboards, and rideable vehicles usually point toward metal/composite frames, wood/composite decks, urethane/rubber wheels, bearings, brakes, and standard hardware; furniture often points toward wood, sheet goods, tube, metal brackets, or conventional joinery; enclosures may point toward injection molding, sheet metal, CNC, or printing depending on quantity and ruggedness; fixtures may be machined, laser-cut, welded, printed, or hybrid.
31
- If the user asks for "printable", "3D printed", "laser cut", "CNC", or another process, honor that process while still warning when it is unsafe or dishonest for the duty.
26
+ ### Workflow
32
27
 
33
- The default output posture is **manufacture-realistic prototype** unless the user asks for a different posture.
34
- This means a serious prototype build candidate with real manufacturing cues, purchased-part boundaries, assembly logic, and validation loops. It is stronger than a visual concept or hobby sketch, but it does not claim final production tooling, certification, rider safety, medical compliance, or release-ready DFM.
35
- Use `production-realistic` only when the user wants production intent, `printable` only when printing is actually the selected process, and `visual-CAD` only for visual/form studies.
28
+ 1. **Normalize the ask** into plain mechanism language. "6 DOF gripper" usually means one of: standalone gripper with finger joints, wrist plus gripper, or full arm plus gripper.
36
29
 
37
- Do not let the modeling prompt sound like a casual hobby sketch when the requested artifact belongs to a serious product domain.
38
- Give the model a specific operating story: a named company or lab, named program, named prototype/revision, review moment, test setting, and concrete reason the part matters.
39
- If the user did not provide this story, invent plausible non-famous names and details.
40
- This should raise the specificity bar without pretending the user works for a real named company or copying proprietary designs.
41
- Prefer bold, high-agency stories over modest lab exercises: product pilots, go/no-go reviews, investor demos, field trials, first-customer deployments, or ambitious internal programs with real schedule pressure.
30
+ 2. **Build the specific operating story**: an invented specific (non-famous) org, a named program, a prototype revision, a review moment, a test setting, mission pressure (pilot gate, demo date, investor milestone, customer deployment), and the generic failure mode to avoid. Prefer bold high-agency stories — go/no-go gates, first-customer pilots, investor demos — over modest lab exercises.
31
+ - Good: "RivetLine Automation is racing toward a first-customer kitting-cell pilot and needs the RG-4 gripper jaw for a live demo next Wednesday. The jaw must pick 40-90 mm plastic housings from a tray, use hardware the build tech can source this week, and make finger-pad replacement possible without rebuilding the linkage."
32
+ - Bad: vague prestige labels ("frontier robotics startup") with no program/rig/milestone specifics.
33
+ - Never assert the user works for a named real company unless they said so. Named real products only as public comparison anchors. Never clone proprietary designs — public-domain patterns and first-principles engineering only.
42
34
 
43
- Do not use one numeric default profile across unrelated artifact families.
44
- The correct order is:
35
+ 3. **Classify the artifact family** (`references/default-profiles.md`): grippers and small mechanisms; fixtures/jigs/holders; enclosures and electronics housings; furniture and load-bearing structures; chassis and mobile robot structures; human vehicles and rideable forms. Rideables always route to human-vehicles, never chassis. If no family fits, use the no-family-fits escape there — never force one.
45
36
 
46
- 1. classify what kind of thing is being built
47
- 2. choose the manufacturing/process posture that fits the artifact
48
- 3. choose qualitative levers like duty / scale / cost posture
49
- 4. translate those into family-scoped starter assumptions
50
- 5. make those assumptions explicit in the final prompt
37
+ 4. **Choose the process posture** per the taxonomy above.
51
38
 
52
- Instead:
39
+ 5. **Pick the qualitative levers** — duty: `light-duty`/`general-duty`/`sturdy-duty`; scale: `compact`/`medium`/`large`; cost: `cheapest`/`balanced`/`performance-first` — and translate them into family-scoped starter assumptions.
53
40
 
54
- 1. Translate the request into plain-language build choices.
55
- 2. Classify the artifact family.
56
- 3. Choose a defensible manufacturing/process stack unless the user already specified one.
57
- 4. Offer a small set of common-sense option bundles.
58
- 5. Choose a defensible family-scoped starter assumption set if the user stays vague.
59
- 6. Produce one single ForgeCAD master prompt with explicit assumptions.
41
+ 6. **Close only the critical gaps.** At most 3 grouped questions, always choice menus, never raw engineering inputs (payload mass, torque budget, backlash tolerance) unless the architecture truly depends on them and cannot be bracketed safely. Good: "Which feels closest: a light desk demo, a useful hobby tool, or a sturdier bench mechanism?" Bad: "What payload mass?"
60
42
 
61
- When a product naturally has multiple versions of the same object, treat those versions as selectable parameters, not simultaneous geometry.
62
- The master prompt should ask for one selected variant to be rendered at a time through choice params such as `Variant`, `Preset`, `Style`, or `Configuration`.
63
- Do not ask the modeling pass to show a lineup of all variants by default; if a comparison view is useful, make it an explicit non-default debug/presentation mode so final collision inspection still proves one real assembly.
43
+ 7. **Write the engineering brief.** Required fields: artifact + family + normalized interpretation; operating story + production reason + test setting + generic failure mode to avoid; output posture; intended objects/loads, size envelope, motion style and DOF; process stack and material defaults; purchased-part (BOM) boundary; validation standard; variant policy — multiple versions of one object are selectable params (`Variant`/`Preset`/`Style`), one rendered at a time, a comparison lineup only as an explicit non-default debug mode so collision inspection proves one real assembly; file organization — `main.forge.js` entry point for multi-file projects (convention owned by `forgecad-make-a-model`); explicit uncertainty policy.
64
44
 
65
- ### What Good Looks Like
45
+ 8. **Emit one master prompt.** Fill `references/master-prompt.md` from the chosen profile and assumptions. Return the finished prompt, not notes about it.
66
46
 
67
- By the end of this skill, there should be:
47
+ 9. **Hand off** to the `forgecad` skill if implementation continues; for moving mechanisms its index routes to the assembly and joint-design docs.
68
48
 
69
- - a normalized statement of what is being built
70
- - an artifact family classification
71
- - an assumption bundle with units
72
- - a clear build profile and manufacturing/process stack
73
- - a stated output posture, defaulting to manufacture-realistic prototype unless the user chose otherwise
74
- - a specific operating story
75
- - a motion / load / size target
76
- - a BOM boundary
77
- - a validation boundary
78
- - a variant-selection policy when the artifact has multiple sizes/styles/revisions
79
- - a file-organization policy, including `main.forge.js` as the entry point for multi-file projects
80
- - an artifact-first policy that forbids explanatory in-model text/callouts unless the user explicitly wants a teaching or presentation view
81
- - one ready-to-copy master prompt for the modeling pass
49
+ ### Defaults And Verdict
82
50
 
83
- ### Workflow
51
+ If the user stays vague: `general-duty` / `medium` / `balanced`, invent the operating story, and use the family starter assumptions from `references/default-profiles.md`.
84
52
 
85
- 1. Normalize the ask.
86
- If the user says something physically ambiguous, restate it in proper mechanism language.
87
- Example: "6 DOF gripper" often means one of:
88
- - a standalone gripper with finger joints
89
- - a wrist plus gripper
90
- - a full arm plus gripper
91
-
92
- 2. Build the specific operating story.
93
- Convert the artifact into a concrete professional assignment.
94
- Do not use vague prestige phrases like "frontier robotics startup" by themselves.
95
- Do not make the story feel small unless the artifact genuinely calls for it.
96
- The story should feel like a real ticket from a real team, even when the company and program names are invented.
97
- Include:
98
- - a fictional but specific company / lab / team name when no real organization was provided
99
- - an ambitious company posture, such as a venture-backed robotics company, advanced hardware group, field deployment team, or first-customer pilot team
100
- - a named project, prototype revision, or milestone
101
- - the domain context, such as humanoid robotics, lab automation, field tooling, consumer hardware, workshop equipment, or medical-adjacent assistive prototyping
102
- - the production reason, such as internal prototype review, next-iteration part evaluation, assembly rehearsal, manufacturability review, or validation rig
103
- - the test setting, such as a named bench rig, demo cell, assembly fixture, or field trial setup
104
- - the external or mission pressure, such as a pilot gate, demo date, reliability target, investor milestone, or customer deployment constraint
105
- - what a generic solution would miss in this domain
106
- - the level of seriousness expected from the deliverable
107
-
108
- Good framing:
109
- - "Use this operating story: Helix Handworks, a venture-backed humanoid robotics company preparing a warehouse-pilot manipulation stack, is reviewing the F2 index-finger module for its DEX-07 go/no-go gate. The module must bolt into Palm Mule V3, route a Bowden tendon cleanly through the MCP base, survive a 1,000-cycle curl test on Rig-3, and expose every wear surface before the customer demo cell build starts."
110
- - "Use this operating story: RivetLine Automation is racing toward a first-customer kitting-cell pilot and needs the RG-4 gripper jaw for a live demo next Wednesday. The jaw must pick 40-90 mm plastic housings from a tray, use hardware the build tech can source this week, and make finger-pad replacement possible without rebuilding the linkage."
111
- - "Use this operating story: Northbay Instruments is preparing the EVB-12 field calibration kit for a launch-readiness review. The case has to protect two stacked boards, expose USB-C and probe ports, survive repeated lid removal, and be credible for a prototype manufacturing review."
112
-
113
- Bad framing:
114
- - "The user works at Tesla."
115
- - "Treat this as a frontier humanoid robotics startup."
116
- - "Copy the Optimus finger."
117
- - "Make something inspired by a named proprietary product without changing the engineering problem."
118
-
119
- Named companies, famous products, and competitor designs may be used only as public comparison anchors if the user provided them or they are needed to clarify the class of artifact.
120
- Do not assert affiliation, privileged context, or proprietary requirements unless the user explicitly supplied them.
121
- Invented organizations are allowed, but do not present them as the user's employer.
122
-
123
- 3. Classify the artifact family.
124
- Read `references/default-profiles.md`.
125
- Common families:
126
- - grippers and small mechanisms
127
- - fixtures, jigs, and holders
128
- - enclosures and electronics housings
129
- - furniture and load-bearing structures
130
- - chassis and mobile robot structures
131
- - human vehicles and rideable product forms
132
- - custom / other
133
- If no family fits cleanly, do not force one. Create a custom brief shape.
134
-
135
- 4. Choose manufacturing/process posture.
136
- Treat process selection as part of the brief.
137
- Default to `manufacture-realistic prototype`.
138
- Use `production-realistic`, `prototype-realistic`, `printable`, `visual-CAD`, or a more specific process such as `sheet-metal`, `CNC-machined`, `laser-cut`, `welded tube`, `injection-molded`, `cast`, or `hybrid purchased-hardware` only when the brief justifies that more specific posture.
139
- Choose the posture that is honest for the artifact rather than the easiest CAD surface to make.
140
-
141
- 5. Pick qualitative levers, not raw numbers.
142
- Start from:
143
- - duty level: `light-duty`, `general-duty`, `sturdy-duty`
144
- - scale level: `compact`, `medium`, `large`
145
- - cost posture: `cheapest`, `balanced`, `performance-first`
146
- Then translate them into numbers only inside the chosen family.
147
-
148
- 6. Close only the critical gaps.
149
- Ask at most 3 grouped questions.
150
- Use choice menus, not blank forms.
151
- Good grouped questions:
152
- - for a gripper: object style, opening band, cost/performance posture
153
- - for a table: use style, span band, load style
154
- - for an enclosure: electronics size, ruggedness, cooling posture
155
- - for an underspecified product: manufacture-realistic prototype, production-realistic, printable, or visual-CAD posture
156
-
157
- 7. Convert choices into an engineering brief.
158
- The brief must include:
159
- - target artifact
160
- - artifact family
161
- - specific operating story
162
- - production reason
163
- - test setting
164
- - what generic output would miss
165
- - output posture, defaulting to manufacture-realistic prototype unless changed by the user
166
- - intended objects / loads
167
- - rough size envelope
168
- - motion style and degrees of freedom
169
- - manufacturing/process stack and material defaults
170
- - purchased-part boundary
171
- - validation standard
172
- - variant-selection policy when multiple versions of the same object are requested
173
- - file-organization policy: if the implementation needs multiple files, the runnable ForgeCAD entry point must be `main.forge.js`; renderable parts/sub-assemblies belong in neighboring `.forge.js` files, while plain `.js` files are only for pure helpers/constants
174
- - explicit uncertainty policy
175
-
176
- 8. Emit one master prompt.
177
- Start from `references/master-prompt.md`.
178
- Fill in the placeholders using the chosen profile and assumptions.
179
- If the requested model is complex enough to split across files, include an explicit instruction that the project must use `main.forge.js` as the runnable entry point.
180
- Return the finished prompt, not notes about the prompt.
181
-
182
- 9. If implementation continues immediately, hand off to `forgecad`.
183
- For moving mechanisms, load:
184
- - `~/.agents/skills/forgecad/SKILL.md`
185
- - `docs/permanent/generated/assembly.md`
186
- - `docs/permanent/generated/output.md`
187
- - `docs/permanent/guides/joint-design.md`
188
- - `docs/permanent/CLI.md`
189
-
190
- ### Question Style
191
-
192
- Keep questions short and maker-friendly.
193
-
194
- Good:
195
-
196
- - "Which target feels closest: a light desk demo, a useful hobby tool, or a sturdier bench mechanism?"
197
- - "Will it mostly handle soft/light things, mixed household parts, or rigid/tool-like objects?"
198
- - "Should we bias for cheapest parts, balanced practicality, or stronger hardware?"
199
- - "Should this be a manufacture-realistic prototype, production-realistic, printable, or just a visual CAD study?"
200
- - "Is this more like a gripper, a fixture, an enclosure, a chassis, or furniture?"
201
- - "Will the table mostly hold decor, laptop-and-books, or workshop abuse?"
202
-
203
- Bad:
204
-
205
- - "What payload mass?"
206
- - "What torque budget?"
207
- - "What joint backlash can you tolerate?"
208
-
209
- ### Default Behavior
210
-
211
- If the user says "I don't know" or gives only a broad goal:
212
-
213
- - infer the nearest artifact family from the request
214
- - invent a specific operating story for the artifact
215
- - infer the manufacturing/process stack from the artifact family and operating story
216
- - default the output posture to `manufacture-realistic prototype`
217
- - choose `general-duty`
218
- - choose `medium`
219
- - choose `balanced`
220
- - use the family-specific starter assumptions from `references/default-profiles.md`
221
- - do not copy assumptions from one family into another
222
- - do not make the artifact printable unless the user asked for it or the chosen process stack includes printed parts
223
-
224
- Examples:
225
-
226
- - gripper request -> use gripper-specific object mass, opening, and actuator assumptions, plus a named robotics or automation prototype-review story
227
- - table request -> use table-specific span, load, and leg/stiffness assumptions
228
- - enclosure request -> use enclosure-specific board size, wall thickness, and thermal assumptions
229
-
230
- Do not promise impossible honesty.
231
- If the request pushes beyond the chosen profile, keep going but downgrade the final claim from "build-ready" to "best-effort build candidate".
53
+ The prompt must demand exactly `BUILD-READY` or `BEST-EFFORT BUILD CANDIDATE`. If the request outruns the chosen profile, downgrade the claim and keep going. No placeholders ("appropriate motor", "adjust as needed") — choose a defensible value, state it, continue. No follow-up questions unless the architecture would materially change and no safe assumption bundle exists. Human-bearing furniture and rideable vehicles usually end `BEST-EFFORT BUILD CANDIDATE`.
232
54
 
233
55
  ### Output Contract
234
56
 
235
- When using this skill, your answer should usually contain:
236
-
237
- 1. a short interpretation of the user's request
238
- 2. the chosen artifact family
239
- 3. the specific operating story
240
- 4. a compact options menu if truly needed
241
- 5. the chosen assumption bundle
242
- 6. the single filled ForgeCAD master prompt
243
-
244
- Do not bury the prompt beneath long theory.
57
+ Reply with a short interpretation of the request, the chosen family + operating story + assumption bundle (compact, options menu only if truly needed), then the single filled master prompt last. Do not bury the prompt under theory.
245
58
 
246
59
 
247
60
  ## Bundled Files
@@ -1,3 +1,5 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-project/SKILL.md instead. -->
2
+
1
3
  # forgecad-project
2
4
 
3
5
  ForgeCAD project CLI workflow — creating, managing, syncing projects and files on forgecad.io. Covers init, push, pull, file operations, member management, publishing, and sharing.
@@ -9,136 +11,16 @@ ForgeCAD project CLI workflow — creating, managing, syncing projects and files
9
11
 
10
12
  ---
11
13
 
12
- ## ForgeCAD Project CLI Workflow
13
-
14
- ### Overview
15
-
16
- **forgecad.io** is the primary platform for ForgeCAD projects. The CLI is the main way AI agents interact with it — creating projects, managing files, publishing models, and collaborating. `forgecad studio <project-path> [project-path ...]` opens the installed local editor for users; `forgecad dev <project-path> [project-path ...]` is mainly for ForgeCAD source development.
17
-
18
- Keep one long-running `forgecad studio <project-path> [project-path ...]` process open with every active project folder listed in its arguments; the user opens the single printed localhost port once, and AI agents should only create or edit files under those folders so the browser updates live without starting more servers.
19
-
20
- ### Authentication
21
-
22
- ```sh
23
- forgecad login # Choose email/password or API token
24
- forgecad login --server http://localhost:5174 # Local dev server
25
- forgecad logout
26
- forgecad whoami # Show user, server, license
27
- ```
28
-
29
- ### Project Lifecycle
30
-
31
- #### Create a project
32
-
33
- ```sh
34
- cd path/to/my-models
35
- forgecad project init "My Project Name"
36
- forgecad project init "My Project" --slug my-project --visibility public
37
- ```
38
-
39
- Creates the project on the server, writes `forgecad.json` locally, and pushes any existing local files.
40
-
41
- #### Clone an existing project
42
-
43
- ```sh
44
- forgecad project clone <slug>
45
- ```
46
-
47
- Downloads into a new local directory.
48
-
49
- #### Sync (push/pull)
50
-
51
- ```sh
52
- forgecad project push [--force] # Upload local changes
53
- forgecad project pull [--force] # Download remote changes
54
- forgecad project status # Show local vs remote diff
55
- ```
56
-
57
- Sync is content-hash-based (SHA-256) — no timestamps, no git. `--force` skips confirmation.
58
-
59
- #### Inspect and modify
60
-
61
- ```sh
62
- forgecad project list # List all your projects
63
- forgecad project info # Name, visibility, files, URL
64
- forgecad project rename "New Name" # Rename
65
- forgecad project set-visibility public # private | shared | public
66
- forgecad project delete [--force] # Permanently delete
67
- forgecad project open # Open in browser
68
- ```
69
-
70
- ### Remote File Management
71
-
72
- Prefer `forgecad project status`, `forgecad project pull`, and `forgecad project push` for normal local sync. Use direct remote file commands only when you need a single hosted file operation without a full push/pull cycle:
73
-
74
- ```sh
75
- forgecad project file list [path] # List remote files
76
- forgecad project file read <path> # Print contents to stdout
77
- forgecad project file save <path> # Upload local file (same relative path)
78
- forgecad project file save <path> --content "const x = box(10, 10, 10); return x;"
79
- cat model.forge.js | forgecad project file save model.forge.js --stdin
80
- forgecad project file delete <path> [--force] # Delete remote file
81
- forgecad project file rename <old> <new> # Rename/move
82
- forgecad project file mkdir <path> # Create directory
83
- forgecad project file copy <source-slug> <path> [--dest <dest-path>] # Copy from another project
84
- ```
85
-
86
- All file commands require being inside an initialized project (has `forgecad.json`).
87
-
88
- ### Member Management
89
-
90
- ```sh
91
- forgecad project members # List members
92
- forgecad project add-member alice@example.com # Add as editor (default)
93
- forgecad project add-member bob@example.com --role viewer
94
- forgecad project remove-member alice@example.com
95
- forgecad project set-role bob@example.com editor
96
- ```
97
-
98
- Roles: **owner** (full control), **editor** (read/write), **viewer** (read-only).
99
-
100
- ### Publishing & Sharing
101
-
102
- ```sh
103
- forgecad project publish model.forge.js --title "My Model" # Publish, get URL
104
- forgecad project publish model.forge.js --no-sync # Skip auto-push
105
- forgecad project shares list # List published models
106
- forgecad project shares delete <share-id> [--force] # Unpublish
107
- forgecad link <gist-url-or-id> # Share from Gist
108
- ```
109
-
110
- Published models are viewable at `forgecad.io/m/<shareId>`. Shares are **live references** to project files — they always show the current version, not a snapshot. Publishing requires a project context.
111
-
112
- ### AI Agent Workflow Example
113
-
114
- ```sh
115
- # 1. Authenticate
116
- forgecad login
117
-
118
- # 2. Create project
119
- mkdir my-gadget && cd my-gadget
120
- forgecad project init "My Gadget" --visibility private
121
-
122
- # 3. Create a model
123
- forgecad new housing --template part
124
-
125
- # 4. Edit and push
126
- # ... edit housing.forge.js ...
127
- forgecad project push --force
128
-
129
- # 5. Or save directly to remote
130
- forgecad project file save housing.forge.js --content "$(cat housing.forge.js)"
131
-
132
- # 6. Validate
133
- forgecad run housing.forge.js
134
-
135
- # 7. Publish
136
- forgecad project publish housing.forge.js --title "Gadget Housing"
137
- ```
14
+ ## ForgeCAD Project Operating Rules
138
15
 
139
- ### How sync works
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.
140
17
 
141
- - Scans local source files (`.forge.js`, `.js`, `.svg`), hashes each with SHA-256 (16-char prefix)
142
- - Fetches remote files from `/api/projects/:projectId/files`, hashes them the same way
143
- - Diffs: `added` (local only), `deleted` (remote only), `modified` (hash mismatch), `unchanged`
144
- - No timestamps, no git purely content-based
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
+ - **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.
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
+ - **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
+ - **Project context required.** All `project file *` and `publish` commands must run inside a folder containing `forgecad.json`.
25
+ - **Shares are live references.** A published model always shows the current project file, never a snapshot — pushing changes silently updates published models. `publish` prints the share URL.
26
+ - **Non-interactive runs.** Pass `--force` to skip confirmation prompts (push, pull, delete) in agent automation.