forgecad 0.9.16 → 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 (147) hide show
  1. package/dist/assets/{AdminPage-CXvls4-J.js → AdminPage-DwYHz72L.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-B27zk8xL.js → BenchmarkPage-a9_f-1US.js} +1 -1
  3. package/dist/assets/{BlogPage-CMAVvgQL.js → BlogPage-DodHpvmf.js} +1 -1
  4. package/dist/assets/{DocsPage-knf4I4h7.js → DocsPage-B5LePEuj.js} +8 -858
  5. package/dist/assets/EditorApp-QXsAISLR.js +16307 -0
  6. package/dist/assets/{EmbedViewer-D7ZGlFjx.js → EmbedViewer-DdEHGUMU.js} +2 -2
  7. package/dist/assets/{LandingPageProofDriven-CnevhTE8.js → LandingPageProofDriven-yhhOodbf.js} +1 -1
  8. package/dist/assets/{LegalPage-BPTUmqeg.js → LegalPage-5RbKRGYK.js} +1 -1
  9. package/dist/assets/{PricingPage-B0D4goG_.js → PricingPage-E3Rma7aV.js} +1 -1
  10. package/dist/assets/{SettingsPage-CFF-UgjI.js → SettingsPage-BJZcM97j.js} +1 -1
  11. package/dist/assets/{app-T0pDcSX4.js → app-DSYrDg0V.js} +733 -205
  12. package/dist/assets/cli/{render-C5pcIISc.js → render-ZMHR9HkV.js} +19 -46
  13. package/dist/assets/{constructionHistoryWorker-Ba2Hm58b.js → constructionHistoryWorker-AwMMWSxg.js} +1103 -349
  14. package/dist/assets/{evalWorker-vkx310U2.js → evalWorker-DbNs7Dkp.js} +3798 -1622
  15. package/dist/assets/{inspectWorker-BuTJDVX6.js → inspectWorker-CZsCFtQT.js} +1163 -409
  16. package/dist/assets/{jointPose-B_Cgedn9.js → jointPose-DO6mnXn_.js} +1 -1
  17. package/dist/assets/{manifold-BWgsjmAM.js → manifold-BGlQBBH9.js} +1 -1
  18. package/dist/assets/{manifold-rZexZI0G.js → manifold-BU-tJwQh.js} +1 -1
  19. package/dist/assets/{manifold-D6IFSkhH.js → manifold-fy2MV7K1.js} +2 -2
  20. package/dist/assets/{reportWorker-0AGij1Ru.js → reportWorker-DO6hcQbh.js} +7155 -2437
  21. package/dist/assets/{scalar-sampling-budget-J5cuzxT1.js → scalar-sampling-budget-o90NSNmF.js} +3940 -1742
  22. package/dist/assets/{scanProxyWorker-Vl4Wxa1y.js → scanProxyWorker-2GtDLk-R.js} +1 -1
  23. package/dist/assets/{javascript-1kQXfVaz.js → typescript-DBQ6RN5l.js} +874 -22
  24. package/dist/cli/render.html +1 -1
  25. package/dist/docs/index.html +3 -3
  26. package/dist/docs-raw/AI/usage.md +1 -1
  27. package/dist/docs-raw/CLI.md +63 -241
  28. package/dist/docs-raw/README.md +6 -0
  29. package/dist/docs-raw/component-model.md +17 -150
  30. package/dist/docs-raw/generated/assembly.md +139 -598
  31. package/dist/docs-raw/generated/concepts.md +245 -3501
  32. package/dist/docs-raw/generated/core.md +277 -1251
  33. package/dist/docs-raw/generated/curves.md +387 -1608
  34. package/dist/docs-raw/generated/legacy.md +162 -0
  35. package/dist/docs-raw/generated/lib.md +227 -85
  36. package/dist/docs-raw/generated/output.md +38 -73
  37. package/dist/docs-raw/generated/runtime-names.md +23 -23
  38. package/dist/docs-raw/generated/sdf.md +68 -284
  39. package/dist/docs-raw/generated/sheet-metal.md +68 -335
  40. package/dist/docs-raw/generated/sketch.md +240 -1161
  41. package/dist/docs-raw/generated/viewport.md +75 -316
  42. package/dist/docs-raw/generated/wood.md +21 -49
  43. package/dist/docs-raw/guides/coordinate-system.md +4 -42
  44. package/dist/docs-raw/guides/inspection-bundles.md +44 -442
  45. package/dist/docs-raw/guides/joint-design.md +18 -79
  46. package/dist/docs-raw/guides/positioning.md +21 -143
  47. package/dist/docs-raw/guides/scene-presentation.md +89 -0
  48. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +25 -111
  49. package/dist/docs-raw/skills/forgecad-blockout-model.md +20 -117
  50. package/dist/docs-raw/skills/forgecad-component-model.md +23 -107
  51. package/dist/docs-raw/skills/forgecad-high-level-spec.md +47 -155
  52. package/dist/docs-raw/skills/forgecad-image-replicator.md +26 -143
  53. package/dist/docs-raw/skills/forgecad-lld.md +19 -113
  54. package/dist/docs-raw/skills/forgecad-make-a-model.md +112 -532
  55. package/dist/docs-raw/skills/forgecad-model-grader.md +38 -108
  56. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +24 -211
  57. package/dist/docs-raw/skills/forgecad-project.md +13 -131
  58. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +42 -134
  59. package/dist/docs-raw/skills/forgecad-render-inspect.md +27 -174
  60. package/dist/docs-raw/skills/forgecad-visual-spec.md +32 -112
  61. package/dist/docs-raw/skills/forgecad.md +19 -18
  62. package/dist/docs-raw/skills/index.md +2 -0
  63. package/dist/docs-raw/welcome.md +2 -2
  64. package/dist/index.html +1 -1
  65. package/dist/llms.txt +1 -2
  66. package/dist/sitemap.xml +13 -13
  67. package/dist-cli/{check-compiler-SYQ2PWOB.js → check-compiler-JTVBITCR.js} +1 -1
  68. package/dist-cli/{check-query-propagation-HIAGV62W.js → check-query-propagation-3FFLSMVN.js} +1 -1
  69. package/dist-cli/{chunk-SPZE3DUY.js → chunk-OAN5T4XD.js} +4412 -2212
  70. package/dist-cli/forgecad.js +507 -179
  71. package/dist-skill/CONTEXT.md +2172 -8377
  72. package/dist-skill/SKILL.md +15 -15
  73. package/dist-skill/docs/API/core/concepts.md +27 -157
  74. package/dist-skill/docs/CLI.md +63 -241
  75. package/dist-skill/docs/generated/assembly.md +138 -549
  76. package/dist-skill/docs/generated/core.md +277 -1251
  77. package/dist-skill/docs/generated/curves.md +387 -1609
  78. package/dist-skill/docs/generated/lib.md +227 -85
  79. package/dist-skill/docs/generated/output.md +38 -73
  80. package/dist-skill/docs/generated/runtime-names.md +16 -21
  81. package/dist-skill/docs/generated/sdf.md +68 -284
  82. package/dist-skill/docs/generated/sheet-metal.md +68 -335
  83. package/dist-skill/docs/generated/sketch.md +240 -1160
  84. package/dist-skill/docs/generated/viewport.md +75 -223
  85. package/dist-skill/docs/generated/wood.md +21 -49
  86. package/dist-skill/docs/guides/coordinate-system.md +4 -42
  87. package/dist-skill/docs/guides/inspection-bundles.md +44 -442
  88. package/dist-skill/docs/guides/joint-design.md +18 -79
  89. package/dist-skill/docs/guides/positioning.md +21 -143
  90. package/dist-skill/docs/guides/scene-presentation.md +89 -0
  91. package/dist-skill/docs/guides/surface-members.md +26 -0
  92. package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +23 -111
  93. package/dist-skill/library/forgecad-blockout-model/SKILL.md +18 -117
  94. package/dist-skill/library/forgecad-component-model/SKILL.md +21 -107
  95. package/dist-skill/library/forgecad-high-level-spec/SKILL.md +45 -155
  96. package/dist-skill/library/forgecad-image-replicator/SKILL.md +24 -143
  97. package/dist-skill/library/forgecad-lld/SKILL.md +17 -113
  98. package/dist-skill/library/forgecad-make-a-model/SKILL.md +110 -532
  99. package/dist-skill/library/forgecad-model-grader/SKILL.md +36 -108
  100. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +35 -224
  101. package/dist-skill/library/forgecad-prepare-prompt/references/default-profiles.md +43 -271
  102. package/dist-skill/library/forgecad-prepare-prompt/references/master-prompt.md +30 -99
  103. package/dist-skill/library/forgecad-project/SKILL.md +13 -133
  104. package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +29 -123
  105. package/dist-skill/library/forgecad-render-inspect/SKILL.md +25 -174
  106. package/dist-skill/library/forgecad-visual-spec/SKILL.md +30 -111
  107. package/dist-skill/website/skills/forgecad-3d-reconstruction.md +58 -0
  108. package/dist-skill/website/skills/forgecad-blockout-model.md +49 -0
  109. package/dist-skill/website/skills/forgecad-component-model.md +53 -0
  110. package/dist-skill/website/skills/forgecad-high-level-spec.md +101 -0
  111. package/dist-skill/website/skills/forgecad-image-replicator.md +63 -0
  112. package/dist-skill/website/skills/forgecad-lld.md +41 -0
  113. package/dist-skill/website/skills/forgecad-make-a-model.md +186 -0
  114. package/dist-skill/website/skills/forgecad-model-grader.md +82 -0
  115. package/dist-skill/website/skills/forgecad-prepare-prompt.md +63 -0
  116. package/dist-skill/website/skills/forgecad-project.md +26 -0
  117. package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +60 -0
  118. package/dist-skill/website/skills/forgecad-render-inspect.md +80 -0
  119. package/dist-skill/website/skills/forgecad-visual-spec.md +71 -0
  120. package/dist-skill/website/skills/forgecad.md +122 -0
  121. package/dist-skill/website/skills/index.md +26 -0
  122. package/examples/api/comparison-imported-sphere-candidate.forge.js +1 -1
  123. package/examples/api/conformal-product-ribbon.forge.js +1 -1
  124. package/examples/api/exact-sheet-shell-assembly.forge.js +1 -1
  125. package/examples/api/extrude-options.forge.js +4 -2
  126. package/examples/api/field-loft-drive-tip.forge.js +40 -0
  127. package/examples/api/guided-loft-olive-oil-bottle.forge.js +1 -1
  128. package/examples/api/highlight-debug.forge.js +10 -10
  129. package/examples/api/mesh-import-slats.forge.js +1 -1
  130. package/examples/api/real-product-curves.forge.js +1 -1
  131. package/examples/api/sculpt-box-circle-booleans.forge.js +1 -1
  132. package/examples/api/sdf-shapes.forge.js +2 -5
  133. package/examples/api/sketch-rounding-strategies.forge.js +6 -6
  134. package/examples/api/surface-member-bottle-cage.forge.js +3 -3
  135. package/examples/api/surface-member-conformal-product-ribbon.forge.js +3 -3
  136. package/examples/api/surface-member-razor-inlay.forge.js +1 -1
  137. package/examples/api/variable-sweep-test.forge.js +3 -3
  138. package/examples/mechanical/airplane-propeller.forge.js +74 -39
  139. package/examples/nurbs-surface.forge.js +1 -1
  140. package/examples/products/iphone.forge.js +1 -1
  141. package/package.json +1 -1
  142. package/dist/assets/EditorApp-BHMQlJ-D.js +0 -14686
  143. package/dist/docs-raw/guides/geometry-conventions.md +0 -52
  144. package/dist/docs-raw/guides/modeling-recipes.md +0 -78
  145. package/dist-skill/docs/guides/geometry-conventions.md +0 -52
  146. package/dist-skill/docs/guides/modeling-recipes.md +0 -78
  147. package/dist-skill/library/forgecad-visual-spec/references/prompt-template.md +0 -79
@@ -6,137 +6,65 @@ forgecad-public: true
6
6
 
7
7
  # ForgeCAD Model Grader
8
8
 
9
- Grade the delivered CAD model against the requirement, not against what could be fixed later. Use renders and inspection evidence before assigning a score.
10
-
11
- 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.
9
+ 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.
12
10
 
13
11
  ## Workflow
14
12
 
15
- 1. Extract the requirement.
16
- 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`.
17
-
18
- 2. Identify grading risks.
19
- 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.
20
-
21
- 3. Run the model.
22
- In the ForgeCAD repo, use the local build:
23
-
24
- ```bash
25
- node dist-cli/forgecad.js run path/to/model.forge.js
26
- ```
27
-
28
- Outside the repo, use the installed CLI:
29
-
30
- ```bash
31
- forgecad run path/to/model.forge.js
32
- ```
33
-
34
- If the script fails to execute, stop normal grading and assign a capped score using the Evidence Caps section.
35
-
36
- 4. Render multiple views.
37
- 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.
38
-
39
- ```bash
40
- 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
41
- ```
42
-
43
- If a multi-camera render does not emit separate useful PNGs, rerun one camera at a time with explicit output paths.
44
-
45
- 5. Visually inspect the PNGs.
46
- 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.
47
-
48
- 6. Run targeted inspections when the risk calls for them.
49
- Use `forgecad-render-inspect` for inspection bundles. Minimum guidance:
50
-
51
- - `inspect visual image` and `inspect visual objects`: visual sanity, object naming, and part identity.
52
- - `inspect fit interference`: multi-part fit, interference, and assembled mechanisms.
53
- - `inspect sections at|stack|sample` and `inspect manufacture thickness`: shells, enclosures, ribs, bosses, printability, and wall claims.
54
- - `inspect physical components`: accidental fusion or disconnected solids.
55
- - `inspect physical floating`: loose bodies without physical support.
56
- - `inspect visual depth`, `inspect visual normals`, or `inspect surface zebra`: surface, occlusion, faceting, continuity, or strange protrusions.
57
-
58
- Typical command:
59
-
60
- ```bash
61
- node dist-cli/forgecad.js inspect fit interference path/to/model.forge.js /tmp/model-grade/collisions --camera iso --force --size 700
62
- python agent-skill-library/forgecad-render-inspect/summarize_manifest.py /tmp/model-grade/collisions
63
- ```
64
-
65
- 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.
66
-
67
- 7. Score with evidence.
68
- Fill the rubric, apply caps, then give a final 0-10 score. Use whole numbers or `.5` increments. Unknowns count against the score.
13
+ 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`.
14
+ 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.
15
+ 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.
16
+ 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.
17
+ 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.
18
+ 6. **Score**: fill the rubric, apply caps, give a final 0-10 in whole or `.5` increments. Unknowns count against the score.
69
19
 
70
20
  ## Rubric
71
21
 
72
- Start from these dimensions, then apply the caps below:
73
-
74
22
  | Dimension | Points | What To Look For |
75
23
  | --- | ---: | --- |
76
- | Requirement fit | 4 | The model satisfies the stated must-haves, captures the intended object/function, and does not drift into a generic substitute. |
77
- | Geometric completeness | 2 | Correct silhouette, proportions, visible details, part boundaries, internal structure when required, and no missing major components. |
78
- | Mechanical/manufacturing plausibility | 2 | Believable materials/process, real interfaces, clear load paths, fasteners/seats/clearances where needed, and no impossible assembly behavior. |
79
- | Validation health | 1 | Runs cleanly, renders from multiple views, and targeted inspections do not reveal major unaddressed issues. |
80
- | Code/model quality | 1 | Parametric clarity, readable organization, meaningful names, no debug junk, and appropriate use of ForgeCAD APIs. |
81
-
82
- Interpretation:
83
-
84
- | Score | Meaning |
85
- | ---: | --- |
86
- | 10 | Exceptional match; requirements are met with strong visual and inspection evidence, no meaningful defects found. |
87
- | 9 | Excellent; one or two small gaps, but the artifact is clearly fit for the brief. |
88
- | 7-8 | Good; recognizable and mostly complete, with fixable omissions or moderate mechanical/detail issues. |
89
- | 5-6 | Partial; main idea is present, but major requirements, proportions, internals, or plausibility are missing. |
90
- | 3-4 | Weak; model runs or renders but only loosely matches the request. |
91
- | 1-2 | Barely useful; broken, mostly unrelated, or only a trivial placeholder. |
92
- | 0 | No evaluable model or completely unrelated artifact. |
24
+ | Requirement fit | 4 | Satisfies the stated must-haves, captures the intended object/function, no drift into a generic substitute. |
25
+ | Geometric completeness | 2 | Correct silhouette, proportions, visible details, part boundaries, internal structure when required, no missing major components. |
26
+ | Mechanical/manufacturing plausibility | 2 | Believable materials/process, real interfaces, clear load paths, fasteners/seats/clearances where needed, no impossible assembly. |
27
+ | Validation health | 1 | Runs cleanly, renders from multiple views, targeted inspections reveal no major unaddressed issues. |
28
+ | Code/model quality | 1 | Parametric clarity, readable organization, meaningful names, no debug junk, appropriate ForgeCAD APIs. |
29
+
30
+ 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.
93
31
 
94
32
  ## Evidence Caps
95
33
 
96
- Apply these maximum scores after the rubric:
34
+ Maximum scores, applied after the rubric:
97
35
 
98
- - If the model does not execute: max `2`.
99
- - If the model executes but cannot be rendered: max `4`.
100
- - If no rendered images were visually inspected: max `5`.
101
- - If only one flattering view was inspected: max `6`.
102
- - If a must-have requirement is absent: max `6`.
103
- - If the model is visually recognizable but physically impossible for the requested use: max `6`.
104
- - If hidden internals, fit, wall thickness, or assembly behavior are central to the brief but not inspected: max `7`.
105
- - 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.
106
- - If the score relies on an assumption the evidence cannot verify: mark it `Unknown` and do not score above `8`.
36
+ - Model does not execute: max `2`.
37
+ - Executes but cannot be rendered: max `4`.
38
+ - No rendered images visually inspected: max `5`.
39
+ - Only one flattering view inspected: max `6`.
40
+ - A must-have requirement is absent: max `6`.
41
+ - Visually recognizable but physically impossible for the requested use: max `6`.
42
+ - Internals, fit, walls, or assembly central to the brief but uninspected: max `7`.
43
+ - Inspection finds unexpected collisions, floating bodies, critical thin walls, or wrong connectivity: max `6`; max `5` when the defect invalidates the main function.
44
+ - 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.
45
+ - Any score relying on an assumption the evidence cannot verify: mark it `Unknown`, never score above `8`.
107
46
 
108
47
  ## Report Format
109
48
 
110
- Keep the report compact and evidence-first:
111
-
112
49
  ```markdown
113
- Score: 7.5 / 10
50
+ Score: N / 10
114
51
 
115
52
  Requirement checklist:
116
53
  | Item | Result | Evidence |
117
54
  | --- | --- | --- |
118
55
  | ... | Pass/Partial/Fail/Unknown | render/inspection/file evidence |
119
56
 
120
- Evidence reviewed:
121
- - Run: command and outcome
122
- - Renders: paths/views inspected
123
- - Inspections: bundle path, evidence command, manifest highlights
124
-
125
- Why this score:
126
- Short paragraph explaining the decisive strengths and defects.
127
-
128
- Caps applied:
129
- List any cap that affected the final score, or `None`.
130
-
131
- Next fixes:
132
- The 2-5 highest-leverage improvements, only if useful.
57
+ Evidence reviewed: run outcome; views inspected; inspection highlights.
58
+ Why this score: decisive strengths and defects.
59
+ Caps applied: list, or `None`.
60
+ Next fixes: the 2-5 highest-leverage improvements.
133
61
  ```
134
62
 
135
63
  ## Grading Rules
136
64
 
137
- - Be strict but fair. A beautiful render with missing functional geometry is not a high score.
138
- - Grade the default returned model unless the user names a specific parameter set or variant.
139
- - Do not award points for comments, labels, or intentions that are not present in geometry.
140
- - Do not treat decorative screws, floating labels, or teaching-diagram callouts as substitutes for real mechanical interfaces.
141
- - Prefer concrete evidence over taste. Say which render or inspection finding drove the grade.
142
- - If comparing several models, use the same checklist, cameras, inspection evidence, and caps for all of them.
65
+ - A beautiful render with missing functional geometry is not a high score.
66
+ - Grade the default returned model unless the user names a parameter set or variant.
67
+ - No points for comments, labels, or intentions absent from the geometry.
68
+ - Decorative screws, floating labels, and teaching-diagram callouts are not real mechanical interfaces.
69
+ - Cite which render or inspection finding drove the grade.
70
+ - When comparing models, use identical checklist, cameras, inspection evidence, and caps for all.
@@ -6,234 +6,45 @@ forgecad-public: true
6
6
 
7
7
  # Prepare ForgeCAD Prompt
8
8
 
9
- 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:
10
-
11
- - "make me a robot gripper"
12
- - "design a real mechanism"
13
- - "make it production ready / assembly ready"
14
- - "I do not know the payload or exact dimensions, just make sensible choices"
15
-
16
- This skill owns the intake and prompt-preparation step. After the brief is concrete, switch to `forgecad` for implementation.
17
-
18
- ## Core Rule
19
-
20
- 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.
21
-
22
- Manufacturing is a design decision, not a default.
23
- 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.
24
- Choose the manufacturing/process stack from the artifact family, load path, scale, safety expectations, material properties, production intent, and operating story.
25
- 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.
26
- 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.
27
-
28
- The default output posture is **manufacture-realistic prototype** unless the user asks for a different posture.
29
- 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.
30
- 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.
31
-
32
- Do not let the modeling prompt sound like a casual hobby sketch when the requested artifact belongs to a serious product domain.
33
- 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.
34
- If the user did not provide this story, invent plausible non-famous names and details.
35
- This should raise the specificity bar without pretending the user works for a real named company or copying proprietary designs.
36
- 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.
37
-
38
- Do not use one numeric default profile across unrelated artifact families.
39
- The correct order is:
40
-
41
- 1. classify what kind of thing is being built
42
- 2. choose the manufacturing/process posture that fits the artifact
43
- 3. choose qualitative levers like duty / scale / cost posture
44
- 4. translate those into family-scoped starter assumptions
45
- 5. make those assumptions explicit in the final prompt
46
-
47
- Instead:
48
-
49
- 1. Translate the request into plain-language build choices.
50
- 2. Classify the artifact family.
51
- 3. Choose a defensible manufacturing/process stack unless the user already specified one.
52
- 4. Offer a small set of common-sense option bundles.
53
- 5. Choose a defensible family-scoped starter assumption set if the user stays vague.
54
- 6. Produce one single ForgeCAD master prompt with explicit assumptions.
55
-
56
- When a product naturally has multiple versions of the same object, treat those versions as selectable parameters, not simultaneous geometry.
57
- 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`.
58
- 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.
59
-
60
- ## What Good Looks Like
61
-
62
- By the end of this skill, there should be:
63
-
64
- - a normalized statement of what is being built
65
- - an artifact family classification
66
- - an assumption bundle with units
67
- - a clear build profile and manufacturing/process stack
68
- - a stated output posture, defaulting to manufacture-realistic prototype unless the user chose otherwise
69
- - a specific operating story
70
- - a motion / load / size target
71
- - a BOM boundary
72
- - a validation boundary
73
- - a variant-selection policy when the artifact has multiple sizes/styles/revisions
74
- - a file-organization policy, including `main.forge.js` as the entry point for multi-file projects
75
- - an artifact-first policy that forbids explanatory in-model text/callouts unless the user explicitly wants a teaching or presentation view
76
- - one ready-to-copy master prompt for the modeling pass
9
+ 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.
10
+
11
+ ## Core Rules
12
+
13
+ **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.
14
+
15
+ **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.
16
+
17
+ **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.
77
18
 
78
19
  ## Workflow
79
20
 
80
- 1. Normalize the ask.
81
- If the user says something physically ambiguous, restate it in proper mechanism language.
82
- Example: "6 DOF gripper" often means one of:
83
- - a standalone gripper with finger joints
84
- - a wrist plus gripper
85
- - a full arm plus gripper
86
-
87
- 2. Build the specific operating story.
88
- Convert the artifact into a concrete professional assignment.
89
- Do not use vague prestige phrases like "frontier robotics startup" by themselves.
90
- Do not make the story feel small unless the artifact genuinely calls for it.
91
- The story should feel like a real ticket from a real team, even when the company and program names are invented.
92
- Include:
93
- - a fictional but specific company / lab / team name when no real organization was provided
94
- - an ambitious company posture, such as a venture-backed robotics company, advanced hardware group, field deployment team, or first-customer pilot team
95
- - a named project, prototype revision, or milestone
96
- - the domain context, such as humanoid robotics, lab automation, field tooling, consumer hardware, workshop equipment, or medical-adjacent assistive prototyping
97
- - the production reason, such as internal prototype review, next-iteration part evaluation, assembly rehearsal, manufacturability review, or validation rig
98
- - the test setting, such as a named bench rig, demo cell, assembly fixture, or field trial setup
99
- - the external or mission pressure, such as a pilot gate, demo date, reliability target, investor milestone, or customer deployment constraint
100
- - what a generic solution would miss in this domain
101
- - the level of seriousness expected from the deliverable
102
-
103
- Good framing:
104
- - "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."
105
- - "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."
106
- - "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."
107
-
108
- Bad framing:
109
- - "The user works at Tesla."
110
- - "Treat this as a frontier humanoid robotics startup."
111
- - "Copy the Optimus finger."
112
- - "Make something inspired by a named proprietary product without changing the engineering problem."
113
-
114
- 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.
115
- Do not assert affiliation, privileged context, or proprietary requirements unless the user explicitly supplied them.
116
- Invented organizations are allowed, but do not present them as the user's employer.
117
-
118
- 3. Classify the artifact family.
119
- Read `references/default-profiles.md`.
120
- Common families:
121
- - grippers and small mechanisms
122
- - fixtures, jigs, and holders
123
- - enclosures and electronics housings
124
- - furniture and load-bearing structures
125
- - chassis and mobile robot structures
126
- - human vehicles and rideable product forms
127
- - custom / other
128
- If no family fits cleanly, do not force one. Create a custom brief shape.
129
-
130
- 4. Choose manufacturing/process posture.
131
- Treat process selection as part of the brief.
132
- Default to `manufacture-realistic prototype`.
133
- 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.
134
- Choose the posture that is honest for the artifact rather than the easiest CAD surface to make.
135
-
136
- 5. Pick qualitative levers, not raw numbers.
137
- Start from:
138
- - duty level: `light-duty`, `general-duty`, `sturdy-duty`
139
- - scale level: `compact`, `medium`, `large`
140
- - cost posture: `cheapest`, `balanced`, `performance-first`
141
- Then translate them into numbers only inside the chosen family.
142
-
143
- 6. Close only the critical gaps.
144
- Ask at most 3 grouped questions.
145
- Use choice menus, not blank forms.
146
- Good grouped questions:
147
- - for a gripper: object style, opening band, cost/performance posture
148
- - for a table: use style, span band, load style
149
- - for an enclosure: electronics size, ruggedness, cooling posture
150
- - for an underspecified product: manufacture-realistic prototype, production-realistic, printable, or visual-CAD posture
151
-
152
- 7. Convert choices into an engineering brief.
153
- The brief must include:
154
- - target artifact
155
- - artifact family
156
- - specific operating story
157
- - production reason
158
- - test setting
159
- - what generic output would miss
160
- - output posture, defaulting to manufacture-realistic prototype unless changed by the user
161
- - intended objects / loads
162
- - rough size envelope
163
- - motion style and degrees of freedom
164
- - manufacturing/process stack and material defaults
165
- - purchased-part boundary
166
- - validation standard
167
- - variant-selection policy when multiple versions of the same object are requested
168
- - 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
169
- - explicit uncertainty policy
170
-
171
- 8. Emit one master prompt.
172
- Start from `references/master-prompt.md`.
173
- Fill in the placeholders using the chosen profile and assumptions.
174
- 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.
175
- Return the finished prompt, not notes about the prompt.
176
-
177
- 9. If implementation continues immediately, hand off to `forgecad`.
178
- For moving mechanisms, load:
179
- - `~/.agents/skills/forgecad/SKILL.md`
180
- - `docs/permanent/generated/assembly.md`
181
- - `docs/permanent/generated/output.md`
182
- - `docs/permanent/guides/joint-design.md`
183
- - `docs/permanent/CLI.md`
184
-
185
- ## Question Style
186
-
187
- Keep questions short and maker-friendly.
188
-
189
- Good:
190
-
191
- - "Which target feels closest: a light desk demo, a useful hobby tool, or a sturdier bench mechanism?"
192
- - "Will it mostly handle soft/light things, mixed household parts, or rigid/tool-like objects?"
193
- - "Should we bias for cheapest parts, balanced practicality, or stronger hardware?"
194
- - "Should this be a manufacture-realistic prototype, production-realistic, printable, or just a visual CAD study?"
195
- - "Is this more like a gripper, a fixture, an enclosure, a chassis, or furniture?"
196
- - "Will the table mostly hold decor, laptop-and-books, or workshop abuse?"
197
-
198
- Bad:
199
-
200
- - "What payload mass?"
201
- - "What torque budget?"
202
- - "What joint backlash can you tolerate?"
203
-
204
- ## Default Behavior
205
-
206
- If the user says "I don't know" or gives only a broad goal:
207
-
208
- - infer the nearest artifact family from the request
209
- - invent a specific operating story for the artifact
210
- - infer the manufacturing/process stack from the artifact family and operating story
211
- - default the output posture to `manufacture-realistic prototype`
212
- - choose `general-duty`
213
- - choose `medium`
214
- - choose `balanced`
215
- - use the family-specific starter assumptions from `references/default-profiles.md`
216
- - do not copy assumptions from one family into another
217
- - do not make the artifact printable unless the user asked for it or the chosen process stack includes printed parts
218
-
219
- Examples:
220
-
221
- - gripper request -> use gripper-specific object mass, opening, and actuator assumptions, plus a named robotics or automation prototype-review story
222
- - table request -> use table-specific span, load, and leg/stiffness assumptions
223
- - enclosure request -> use enclosure-specific board size, wall thickness, and thermal assumptions
224
-
225
- Do not promise impossible honesty.
226
- If the request pushes beyond the chosen profile, keep going but downgrade the final claim from "build-ready" to "best-effort build candidate".
21
+ 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.
227
22
 
228
- ## Output Contract
23
+ 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.
24
+ - 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."
25
+ - Bad: vague prestige labels ("frontier robotics startup") with no program/rig/milestone specifics.
26
+ - 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.
27
+
28
+ 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.
29
+
30
+ 4. **Choose the process posture** per the taxonomy above.
31
+
32
+ 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.
229
33
 
230
- When using this skill, your answer should usually contain:
34
+ 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?"
231
35
 
232
- 1. a short interpretation of the user's request
233
- 2. the chosen artifact family
234
- 3. the specific operating story
235
- 4. a compact options menu if truly needed
236
- 5. the chosen assumption bundle
237
- 6. the single filled ForgeCAD master prompt
36
+ 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.
37
+
38
+ 8. **Emit one master prompt.** Fill `references/master-prompt.md` from the chosen profile and assumptions. Return the finished prompt, not notes about it.
39
+
40
+ 9. **Hand off** to the `forgecad` skill if implementation continues; for moving mechanisms its index routes to the assembly and joint-design docs.
41
+
42
+ ## Defaults And Verdict
43
+
44
+ If the user stays vague: `general-duty` / `medium` / `balanced`, invent the operating story, and use the family starter assumptions from `references/default-profiles.md`.
45
+
46
+ 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`.
47
+
48
+ ## Output Contract
238
49
 
239
- Do not bury the prompt beneath long theory.
50
+ 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.