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,135 +6,54 @@ forgecad-public: true
6
6
 
7
7
  # ForgeCAD Visual Spec
8
8
 
9
- Use this skill after the artifact is already concrete enough to visualize.
9
+ ## Scope
10
10
 
11
- Good triggers:
12
-
13
- - a specific `.forge.js` model or project folder
14
- - a build brief or HLD that already defines the object
15
- - a request like "write image prompts for this model"
16
- - a request to show the final product without hiding how it is built
17
-
18
- Do not use this skill for a vague artifact brief. If the object is still underspecified, use `forgecad-prepare-prompt` first.
11
+ Only for artifacts already concrete enough to visualize (a specific `.forge.js` model, build brief, or HLD); route vague briefs to `forgecad-prepare-prompt` first. Read minimum context — entry `.forge.js`, one key helper if it delegates geometry, brief/HLD — and capture what must survive the image model: artifact type and scale, major subassemblies, actuation style, visible mechanisms, material and color cues.
19
12
 
20
13
  ## Core Rule
21
14
 
22
- These prompts are not concept art prompts. They are visual-spec prompts.
23
-
24
- The image should:
25
-
26
- - show the final artifact clearly
27
- - preserve build truth and subsystem truth
28
- - keep visible the seams, modules, hardware, and mechanical hierarchy that matter
29
-
30
- The image should not:
31
-
32
- - smooth away the mechanism into a fake consumer shell
33
- - invent flashy sci-fi styling that hides how it works
34
- - pretend to be a CAD drawing, dimensioned blueprint, or engineering diagram
35
- - turn the artifact into a cutaway, sectioned shell, or exploded teaching view unless the user explicitly asks for that representation
36
-
37
- ## Default Strategy
15
+ Visual-spec prompts, not concept art: show the final artifact clearly, preserve build and subsystem truth, and keep visible the seams, modules, hardware, and mechanical hierarchy that matter.
38
16
 
39
- Default to one `honest hero render`.
17
+ Negatives (the only negatives list — reuse it, never restate variants):
40
18
 
41
- That is the best first image for most ForgeCAD artifacts because it balances:
19
+ - no fake sleek consumer shell, no hidden mechanics
20
+ - no over-smoothed geometry, no sci-fi styling
21
+ - no CAD-drawing, blueprint, or dimension-arrow pretense
22
+ - no cutaway, sectioned, or exploded teaching view unless the user explicitly asks
23
+ - no text, labels, or humans
42
24
 
43
- - final-product readability
44
- - mechanical honesty
45
- - visual appeal
25
+ ## Prompt Skeleton
46
26
 
47
- Only add more prompts if the user wants them. The most useful support prompts are:
27
+ Block order: identity mechanism truth materials/color truth pose/state shot/camera/lighting negatives. Fill in, don't copy:
48
28
 
49
- - `builder-first mechanical render`
50
- - `mild exploded assembly render`
51
- - `workshop prototype realism`
52
- - `gripper / end-effector close-up`
29
+ ```text
30
+ A [artifact identity and scale], designed as a real buildable CAD-driven object, not a fantasy concept. [Major subassemblies and mechanism truth]. [Materials, colors, finish, visible hardware]. Show it in [pose / state]. [Shot, camera, background, lighting]. It should look physically buildable and mechanically honest, with visible part boundaries and serviceable architecture. No [negative 1], no [negative 2], no [negative 3].
31
+ ```
53
32
 
54
- Prefer separate images over one collage. Multi-view boards are acceptable, but single-purpose images are usually more reliable.
33
+ Default shot: `front-left three-quarter hero view, eye-level product camera`. Alternate: `rear-right three-quarter view showing motor placement and belt routing`.
55
34
 
56
- ## Workflow
35
+ ## Modes
57
36
 
58
- 1. Gather artifact truth.
59
- Read only the minimum context needed:
60
- - top-level `.forge.js` entry
61
- - key helper/module file if the entry delegates the geometry
62
- - build brief / HLD if they exist
37
+ Default to ONE honest hero render; add support prompts only when the user asks. Prefer separate single-purpose images over collages or multi-view boards.
63
38
 
64
- 2. Extract the truths that must survive the image model.
65
- Capture:
66
- - artifact type and scale
67
- - major subassemblies
68
- - actuation style
69
- - visible mechanisms
70
- - material cues
71
- - color cues if already established
72
- - what must stay visible for build understanding
39
+ | Mode | Job | Signature phrases |
40
+ |------|-----|-------------------|
41
+ | Honest hero render (default) | Final object clearly, still reads as buildable | `clean premium studio product render`, `physically buildable and mechanically honest` |
42
+ | Builder-first mechanical | Teach the build; bias to interfaces, seams, mounted actuators | `clear visibility of interfaces, seams, and subsystem boundaries`, `serious prototype, not a polished consumer shell` |
43
+ | Mild exploded | Assembly logic; major modules only, no per-screw chaos. Image-only — the CAD model stays the complete assembled product | `major modules separated by small clean gaps`, `no tiny floating fragments` |
44
+ | Workshop prototype realism | Feel like a real first prototype | `visible print lines and honest surface texture`, `uncluttered engineering bench background` |
45
+ | End-effector close-up | Wrist/gripper mechanism detail | `close-up on the wrist and end effector showing the mechanism clearly` |
73
46
 
74
- 3. Choose the representation mode.
75
- Default: `honest hero render`
76
- Switch only if the user explicitly wants a support view or image pack.
77
-
78
- 4. Write the prompt in blocks.
79
- Use the template in `references/prompt-template.md`.
80
- Keep the wording concrete and artifact-specific.
81
-
82
- 5. Add negative constraints inline.
83
- Tell the model what to avoid, especially:
84
- - hidden mechanics
85
- - fake sleek shelling
86
- - over-smoothed geometry
87
- - unreadable clutter
88
- - text, labels, or dimension arrows unless explicitly requested
89
-
90
- 6. Return the prompt pack.
91
- If the user asked for "a prompt", return one prompt.
92
- If the user asked to compare approaches, return 2-4 prompts with clearly different jobs.
93
-
94
- ## Prompt Writing Rules
47
+ ## Writing Rules
95
48
 
96
49
  - Use real artifact language: base, turntable, shoulder, rails, bearings, gripper, belt, pulley, shaft.
97
50
  - Prefer visible subsystem truth over poetic adjectives.
98
51
  - Keep exact dimensions out unless they matter visually and are already known.
99
- - If a detail is uncertain, stay honest at the subsystem level instead of inventing internals.
100
- - Ask for "physically buildable", "mechanically honest", and "visible part boundaries" when that is central.
101
- - For robots and mechanisms, mention motors, belts, pulleys, shafts, guide rods, fasteners, or service covers only if they are genuinely part of the artifact.
102
- - Avoid long style dumps. A short strong prompt beats a bloated one.
103
-
104
- ## Mode Guide
105
-
106
- ### Honest Hero Render
107
-
108
- Use by default.
109
-
110
- Best when the user wants one image that shows the final object clearly while still reading as something that could actually be built.
111
-
112
- ### Builder-First Mechanical Render
113
-
114
- Use when the user wants the image to teach the build more directly.
115
-
116
- Bias harder toward interfaces, seams, mounted actuators, and subsystem boundaries.
117
-
118
- ### Mild Exploded Assembly Render
119
-
120
- Use when the user wants assembly logic or modular breakdown.
121
-
122
- Keep the explosion restrained. Separate only major modules, not every screw.
123
- This is a visual-spec support image, not a default ForgeCAD modeling instruction; the CAD artifact should still be the complete assembled product.
124
-
125
- ### Workshop Prototype Realism
126
-
127
- Use when the user wants the artifact to feel like a real first prototype rather than a clean studio render.
128
-
129
- Bias toward print texture, honest materials, and believable workshop context.
52
+ - If a detail is uncertain, stay honest at the subsystem level never invent internals.
53
+ - Ask for "physically buildable", "mechanically honest", "visible part boundaries" when central.
54
+ - Mention motors, belts, pulleys, shafts, guide rods, fasteners, or service covers only if genuinely part of the artifact.
55
+ - A short strong prompt beats a style dump.
130
56
 
131
57
  ## Output Contract
132
58
 
133
- When using this skill, the answer should usually contain:
134
-
135
- 1. one sentence interpreting the artifact
136
- 2. one primary prompt, usually the `honest hero render`
137
- 3. optional support prompts only if useful
138
- 4. a short note on which prompt to try first
139
-
140
- Do not bury the prompts under theory.
59
+ Return: one sentence interpreting the artifact, the primary prompt first (usually the honest hero render), optional support prompts, and a short which-to-try-first note. Never bury the prompts under theory.
@@ -0,0 +1,58 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-3d-reconstruction/SKILL.md instead. -->
2
+
3
+ # forgecad-3d-reconstruction
4
+
5
+ Reconstruct a parametric ForgeCAD model from an existing 3D CAD or mesh file such as STL, OBJ, 3MF, STEP, or STP; inspect the source asset directly, author real ForgeCAD geometry, and iteratively compare the candidate with `forgecad compare 3d`.
6
+
7
+ | Field | Value |
8
+ | --- | --- |
9
+ | Installed by | `forgecad skill install` |
10
+ | Source | `agent-skill-library/forgecad-3d-reconstruction/SKILL.md` |
11
+
12
+ ---
13
+
14
+ ## ForgeCAD 3D Reconstruction
15
+
16
+ The reference asset is evidence, not the deliverable. The deliverable is a readable, parametric `.forge.js` model that runs, renders, and scores well against the source. Never return `Import.mesh()`/`Import.step()` of the source as the final model unless the user explicitly asks for an import wrapper — imports are for measurement, rendering, and scoring only.
17
+
18
+ Routing: user wants to KEEP the file as a live component and design around it (bracket, enclosure, mating assembly) → `forgecad-make-a-model` (Imported Parts section), not this skill; benchmark/RL episodes → `forgecad-reconstruction-benchmark`; inspection-bundle interpretation → `forgecad-render-inspect`; independent grading after reconstruction → `forgecad-model-grader`; API and command reference → `forgecad` skill + CLI.md.
19
+
20
+ ### Workflow
21
+
22
+ 1. **Inspect the source directly** — the CLI reads CAD/mesh files as inputs, no wrapper script. Gather four evidence types: `ls --long` stats, an iso render, per-object views, sampled sections (invocations in CLI.md; when sharing a renderer server via `--port`, run renders sequentially).
23
+ 2. **3MF**: enumerate every build item before scoring — hidden multi-part structure is a common miss. Item ref syntax: `Import.mesh` docs.
24
+ 3. **Reconstruction Brief** before modeling: what must be exact vs. approximate vs. parametric; symmetry, origin, key reference planes; likely manufacturing process; scoring tolerance and alignment policy.
25
+ 4. **Blockout first.** Match bbox and main masses, then add features. Model real geometry with blueprint-first APIs — never vertex-chase a faceted copy.
26
+ 5. **Compare numerically** — the core loop:
27
+
28
+ ```bash
29
+ forgecad compare 3d path/to/source.stl path/to/candidate.forge.js \
30
+ --samples 3000 --json --output /tmp/<slug>-score.json
31
+ ```
32
+
33
+ 6. **Iterate coarse to fine**: bbox/placement → main volumes/silhouette → holes/bosses/ribs/shells → edge treatments → small details.
34
+
35
+ ### Reading the Score
36
+
37
+ Alignment: start `--align none`. Use `--align center` only when origins clearly differ but scale and orientation match. Use `--align center-scale` only for exploratory diagnosis — it hides dimensional errors.
38
+
39
+ | Signal | Diagnosis |
40
+ |---|---|
41
+ | Low coverage | Missing or extra surface |
42
+ | High RMS | Broad proportional mismatch |
43
+ | High p95/max | Localized outlier feature (protrusion, hole) |
44
+ | Bounds delta | Size, origin, or scale mismatch |
45
+ | Volume delta | Mass, shell, cutout, or scale mismatch |
46
+
47
+ Calibration: 95+ simple prismatic/revolved parts, 90+ ordinary mechanical parts with fillets/cutouts, 80+ acceptable for organic, faceted, or underdetermined sources. Always report raw rms, p95, max, coverage, bounds delta, and volume delta — a high overall score with a large max can hide a missing local feature.
48
+
49
+ Faceted sources: decide whether tessellation itself is evidence. Matching low-poly faceting raises the score but reduces parametric clarity — prefer analytic intent unless faceting is part of the artifact or required by the acceptance criteria.
50
+
51
+ ### Done Criteria
52
+
53
+ The final model must run, render, re-compare at `--samples 5000`, and pass an `inspect compare overlay`. Add targeted inspects (`forgecad-render-inspect`) when the object is multi-part, hollow, thin-walled, or surface-sensitive. Report: source and candidate paths, score JSON path, final metrics, and every known mismatch classified as intentional simplification or remaining work.
54
+
55
+
56
+ ## Bundled Files
57
+
58
+ - `agents/openai.yaml`
@@ -0,0 +1,49 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-blockout-model/SKILL.md instead. -->
2
+
3
+ # forgecad-blockout-model
4
+
5
+ Create rough high-level ForgeCAD concept models from simple primitives to explore layout, proportions, motion, and part relationships without production detail. Use when asked for a quick model sketch, blockout, spatial mockup, or intuitive low-detail 3D concept.
6
+
7
+ | Field | Value |
8
+ | --- | --- |
9
+ | Installed by | `forgecad skill install` |
10
+ | Source | `agent-skill-library/forgecad-blockout-model/SKILL.md` |
11
+
12
+ ---
13
+
14
+ ## Block Out a Model
15
+
16
+ A blockout is a spatial planning artifact: 3-7 simple masses that answer where parts go, whether a mechanism makes spatial sense, and what the silhouette, footprint, or motion envelope looks like. Not for print-ready geometry, exact fit, tolerances, or detail work.
17
+
18
+ | Need | Skill |
19
+ |------|-------|
20
+ | High-level 3D idea using simple masses | `forgecad-blockout-model` |
21
+ | Written concept or architecture before CAD | `forgecad-high-level-spec` |
22
+ | Accurate, detailed, parametric ForgeCAD model | `forgecad-make-a-model` |
23
+
24
+ ### Method
25
+
26
+ - Load the `forgecad` skill first; read its Core API and CLI docs. Load nothing else unless the concept demands it.
27
+ - Translate the idea into 3-7 conceptual parts BEFORE writing geometry: masses and zones (base, arm, payload, sweep volume, keep-out, hand access).
28
+ - One primitive stands in for many eventual details. A bounding box beats a fake detailed part. Never add detail as a substitute for clarity — simplify or reposition instead.
29
+ - Use round-number dimensions; "believably shaped" beats numerically correct. Name uncertainty honestly: `armLengthGuess`, `baseWidthApprox`, `clearanceEnvelope`.
30
+ - At most a handful of `param()` values, for comparing proportions. Do not parameterize every dimension.
31
+ - Color by meaning; keep each conceptual part visually distinct via color or opacity. Return named shape objects so the viewer can inspect the concept part-by-part.
32
+ - Ghost geometry: transparent volumes only for REAL physical envelopes — sweep arcs, keep-out volumes, approximate payloads, reach/access zones. Never decorative teaching overlays. Exaggerate tiny clearances when needed for readability.
33
+ - Even a blockout represents the object in its normal assembled state: no labels, legends, cutaways, or permanently exploded layouts (full rule in the `forgecad` skill).
34
+ - Leave out: fasteners and screw holes, wall thicknesses, fillets and blend radii, polished materials, hidden internal structure that does not affect the concept.
35
+
36
+ ### Verify
37
+
38
+ Rendering is mandatory even for rough models. Run the script, then render from 2-3 angles with the installed `forgecad` CLI (syntax: the `forgecad` skill's CLI docs). Judge by the reader test:
39
+
40
+ - Can someone unfamiliar with the idea tell what each mass represents?
41
+ - Are proportions believable enough to discuss?
42
+ - Is motion or interference visible where it matters?
43
+ - Are unknowns shown honestly, not hidden behind fake detail?
44
+
45
+ If any answer is no, simplify or add clearer ghost volumes.
46
+
47
+ ### Handoff
48
+
49
+ File placement and naming follow `forgecad-make-a-model` conventions; suffix the filename `-blockout` or `-concept` unless the user supplied a clearer name. Once the high-level questions are answered, stop. If the next question is real fit, tunable dimensions, part details, or manufacturing logic, switch to `forgecad-make-a-model` instead of refining the blockout indefinitely.
@@ -0,0 +1,53 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-component-model/SKILL.md instead. -->
2
+
3
+ # forgecad-component-model
4
+
5
+ Enforce the ForgeCAD Component Model when building multi-part assemblies. Parts build at origin, connectors position them, data flows down from parent. Use when building or reviewing any multi-file ForgeCAD project.
6
+
7
+ | Field | Value |
8
+ | --- | --- |
9
+ | Installed by | `forgecad skill install` |
10
+ | Source | `agent-skill-library/forgecad-component-model/SKILL.md` |
11
+
12
+ ---
13
+
14
+ ## Component Model
15
+
16
+ The React of CAD: a part is a function from props to `{ shape, connectors, metadata }`, built at origin in local space. Parts never position themselves — the assembly positions them via connectors.
17
+
18
+ ### Rules
19
+
20
+ 1. **Parts build at origin.** Geometry starts at `[0,0,0]` in local coordinates; no assembly-space offsets; internal structure derives from the part's own props only.
21
+ 2. **Connectors are the only interface.** Declare via `.withConnectors({})`; axes point outward, mating is face-to-face (exception: prismatic joints share a co-directional slide axis). Mechanics: the forgecad skill's `docs/guides/positioning.md` and `docs/generated/assembly.md`.
22
+ 3. **Assembly is pure composition.** Zero `translate()` to position structural parts, zero coordinate math — connect connectors, pass props down, read metadata up.
23
+ 4. **Data flows down, never sideways.** Props down via `require('./part.forge.js', { Height: 20 })` overrides; metadata up via the part's return object; siblings NEVER import each other — the assembly mediates all sibling communication.
24
+ 5. **Validate with `verify.*`, never `console.log` + `if`.**
25
+
26
+ ### Part return shape
27
+
28
+ ```js
29
+ return { shape, boltPattern, pinionZ }; // shape + metadata the parent may route to siblings
30
+ ```
31
+
32
+ ### File structure
33
+
34
+ Default: ONE file per project-specific assembly — parts as sections, shared data as variables. Split only for cross-project reuse or past ~300 lines. Never split for "organization".
35
+
36
+ ### Anti-patterns (reject on review)
37
+
38
+ - `shared-dims.js` — a file that only computes derived dimensions; the assembly derives and passes them.
39
+ - Sibling `require()` — e.g. `require('./motor-mount.forge.js')` inside `cover-plate.forge.js`; route through the parent.
40
+ - Assembly-space coordinates inside a part — a part knowing `pinionZ = 14` from a sibling's geometry; receive it as a prop.
41
+ - `translate()` to position a structural part in an assembly — add a connector instead.
42
+ - `console.log` + `if` validation — use `verify.*`.
43
+ - Bare `connector.neutral()` outside a reusable component library with compatibility checking.
44
+
45
+ ### Design gate
46
+
47
+ Before committing any multi-part assembly:
48
+
49
+ 1. Can you understand each part without reading other files?
50
+ 2. Does the assembly contain zero coordinate math?
51
+ 3. Do all inter-part relationships flow through connectors and props?
52
+
53
+ If any answer is no, refactor.
@@ -0,0 +1,101 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-high-level-spec/SKILL.md instead. -->
2
+
3
+ # forgecad-high-level-spec
4
+
5
+ Write a high-level design document (HLD) for a model, mechanism, or assembly before detailed specification or coding. Use when starting a new design, rethinking an existing one, or when the user asks to spec out, plan, or think through a model at a high level. Works backwards from requirements — defines the problem, explores alternatives, records decisions. Produces a right-sized design document for review and iteration.
6
+
7
+ | Field | Value |
8
+ | --- | --- |
9
+ | Installed by | `forgecad skill install` |
10
+ | Source | `agent-skill-library/forgecad-high-level-spec/SKILL.md` |
11
+
12
+ ---
13
+
14
+ ## High-Level Design (HLD)
15
+
16
+ The HLD aligns the user and the agent on *what* to build before anyone thinks about *how*. Every design concern, risk, and tradeoff lives in the document — not in conversation, not in the agent's head. Brevity is a readability tool, not a success metric: there is no page limit; include whatever evidence, diagrams, and dimensions a good decision needs. Decision-driving dimensions belong here; exhaustive construction dimensions belong in the LLD.
17
+
18
+ Manufacturing process is a design decision, not a default — never assume 3D printing/FDM. If the user didn't specify a process, treat process choice as an HLD alternative (full posture taxonomy: `/forgecad-prepare-prompt`).
19
+
20
+ Write an HLD before any LLD, and whenever an existing design is wrong in approach, not just in numbers. Output: `<name>-hld.md` beside the model files, or `hld.md` for a whole project.
21
+
22
+ ### Document Structure
23
+
24
+ The section order is the workflow — write it top to bottom, following the embedded instructions.
25
+
26
+ ```markdown
27
+ # [Name] — High-Level Design
28
+
29
+ ## Problem
30
+ What must this do? Hard requirements (must grip objects, fit a 60mm
31
+ housing, use purchased bearings). State the problem without implying
32
+ a solution. Unspecified process choice is an open design dimension.
33
+
34
+ ## Approach
35
+ How it works at a conceptual level. ASCII diagram of the key elements
36
+ and their spatial relationships — diagram labels stay in this markdown;
37
+ never carry them into CAD geometry unless the real artifact needs
38
+ markings.
39
+
40
+ ## Key Interfaces
41
+ Every point where this touches another part or the outside world:
42
+ mating surfaces, shared dimensions, coordination points. These are the
43
+ contracts that constrain the design.
44
+
45
+ ## Dictionary
46
+ | Term | What it is |
47
+ |------|-----------|
48
+ Define every domain term in plain words, with dimensions where relevant.
49
+ Write for a developer without a mechanical-engineering background.
50
+
51
+ ## Alternatives
52
+ | Option | Description | Tradeoff |
53
+ |--------|-------------|----------|
54
+ 2-3 genuinely different strategies, not minor variations. Enough detail
55
+ per row to see why it fits or loses. Mark one recommended and say why.
56
+ If there is honestly only one approach, say so and skip the table.
57
+
58
+ ## Usage Guide
59
+ The strongest validation: work backwards from how someone uses,
60
+ assembles, or operates the thing, step by step (physical product:
61
+ assembly steps, tools, what connects to what; mechanism: how it moves
62
+ and what the user does). If a step doesn't make sense ("how does the
63
+ servo get inside?"), the design has a gap — flag it inline with ⚠️ and
64
+ promote it to Concerns.
65
+
66
+ ## Concerns
67
+ 1. Numbered, falsifiably specific — a reviewer must be able to say
68
+ "real problem" or "fine, because…". "Tolerances might be tight" is
69
+ useless; "the 12mm arm cantilevers under gripping load, may flex
70
+ >0.5mm" is useful.
71
+
72
+ ## Decisions
73
+ | # | Decision | Rationale |
74
+ |---|----------|-----------|
75
+ Filled ONLY after user review — never pre-decide. Each row resolves a
76
+ concern or alternative.
77
+ ```
78
+
79
+ ### Review via git
80
+
81
+ HLDs and LLDs iterate through git, not conversation:
82
+
83
+ - **Commit every version.** No drafts floating in chat. After writing, commit and tell the user it's ready for review.
84
+ - **Feedback arrives as file edits** (inline comments, strikethroughs) **or chat — check both.** Read `git diff`: the diff is the review artifact.
85
+ - **Update, commit, repeat** until the Decisions table is filled and the user says "go."
86
+
87
+ ### Rules
88
+
89
+ - If you're speccing every part, formula, tolerance, and fabrication step, you're writing an LLD — back up.
90
+ - If you can't draw it, you don't understand it yet.
91
+ - Tables are welcome where they clarify (interfaces, requirements, visible evidence); full parameter catalogs go to the LLD.
92
+
93
+ ### Pipeline
94
+
95
+ | Stage | Skill | Output |
96
+ |-------|-------|--------|
97
+ | 1. Explore the problem space | this skill | `*-hld.md` |
98
+ | 2. Detailed design | `/forgecad-lld` | `*-lld.md` |
99
+ | 3. Implementation | `/forgecad-make-a-model` + `/forgecad` | `.forge.js` |
100
+
101
+ The Decisions table must be filled before writing the LLD. Simple models may skip straight from HLD to code.
@@ -0,0 +1,63 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-image-replicator/SKILL.md instead. -->
2
+
3
+ # forgecad-image-replicator
4
+
5
+ Build real ForgeCAD geometry from one or more reference images by treating images as evidence, inferring the object, then validating against both reference-matched and canonical views.
6
+
7
+ | Field | Value |
8
+ | --- | --- |
9
+ | Installed by | `forgecad skill install` |
10
+ | Source | `agent-skill-library/forgecad-image-replicator/SKILL.md` |
11
+
12
+ ---
13
+
14
+ ## ForgeCAD Image Replicator
15
+
16
+ The reference image is evidence, not the deliverable. The deliverable is a real parametric object that holds up from front, back, side, top, bottom, and reference camera views — a model that matches one image but falls apart from other angles has failed, even if the comparison board looks close. Cutaway, sectioned, exploded, or transparent references are evidence about the complete object: build the closed artifact and recreate explanatory views with viewer/inspection tools (the main `forgecad` skill's closed-artifact rule applies).
17
+
18
+ ### Companion Skills
19
+
20
+ - `forgecad` — API docs, model authoring, renderer behavior.
21
+ - `forgecad-prepare-prompt` — when the images underdetermine artifact family, process posture, scale, operating story, or validation boundary.
22
+ - `forgecad-make-a-model` — file placement, project structure, decomposition, definition of done.
23
+ - `forgecad-render-inspect` — pre-delivery inspection for multi-part, internal, mechanical, thin-wall, or fit-sensitive objects.
24
+
25
+ ### Core Rule
26
+
27
+ Infer the real object before matching any camera — identity, manufacture, scale, what hidden sides must contain, what geometry must exist for physical coherence. Reference matching is a validation step after the object exists; never start by chasing pixels or the prettiest view.
28
+
29
+ ### Workflow
30
+
31
+ 1. Stage references in `/tmp/<slug>-replicate/refs`, keeping originals and adding view names where possible (`front`, `side`, `rear-iso`, `top`, `detail`).
32
+ 2. Read each image as evidence, recording: visible facts; scale cues; camera cues; unknowns (hidden/occluded geometry); conflicts across images or stylization.
33
+ 3. Write a Real Object Brief — a hard gate before modeling: (a) artifact identity + operating story; (b) assumed scale and units; (c) process posture + part/BOM boundary (real geometry vs purchased vs ghost vs omitted); (d) inferred hidden-side geometry + expected canonical front/back/left/right/top/bottom forms; (e) validation views and inspection evidence. Use `forgecad-prepare-prompt` when these are underdetermined.
34
+ 4. Build a coarse 3D blockout — model the object, not the image: large volumes, axes, symmetry, side depth, rear form, underside, hidden continuations. Render canonical views before any reference-camera comparison. Follow `forgecad-make-a-model` for project structure.
35
+ 5. Calibrate one camera per usable reference, only after the blockout makes sense from canonical views. Use the object center as `target`; estimate azimuth/elevation/distance/FOV from visible faces and perspective cues; use orthographic when parallel edges stay parallel with no perspective convergence.
36
+ 6. Render comparison boards: render the model from each calibrated reference camera and place it next to the original. Never compare from memory.
37
+ 7. Iterate one class of change at a time, in order: object hypothesis → major proportions → canonical geometry → camera → details → presentation. If improving one reference view makes another view or a canonical render worse, the object hypothesis is wrong — fix the model, not the camera illusion.
38
+ 8. Use every image as a constraint. Never pick one target image and ignore the rest: assign each image a camera, evidence list, and confidence; optimize one shared geometry against the whole set; state how distorted or decorative images were weighted.
39
+ 9. Validate the final object: `forgecad run`, reference comparison boards, canonical renders, and targeted inspections via `forgecad-render-inspect`.
40
+
41
+ ### Comparison Boards
42
+
43
+ Render with exact `--camera` specs (see the forgecad CLI doc for supported forms). If exact full camera specs do not render, fix the renderer before continuing — never substitute guesses from default `iso` renders.
44
+
45
+ Build side-by-side boards with the bundled self-contained `uv` helper (installs Pillow on demand). Resolve `scripts/compare_images.py` relative to the installed `forgecad-image-replicator` skill directory:
46
+
47
+ ```bash
48
+ uv run <skill-dir>/scripts/compare_images.py refs/front.png render-front.png compare-front.png
49
+ ```
50
+
51
+ Use `--fit contain` (default); use `--fit cover` only when both images already share the same crop and aspect. Run with `--help` for other options.
52
+
53
+ ### Done and Report
54
+
55
+ Done means: a written Real Object Brief; real parametric geometry (not a billboard, facade, or one-view shell) that makes sense from all canonical views; honest hidden-side assumptions where images are silent; passes `forgecad run`; comparison boards plus canonical renders exist. The result fails if it only works from the original camera — one render is never enough; expect several render/compare/inspect iterations.
56
+
57
+ Report: model path; Real Object Brief summary + assumptions; per-reference camera spec, weighting, and board path; canonical render paths; inspection evidence; remaining mismatches or downgraded confidence.
58
+
59
+
60
+ ## Bundled Files
61
+
62
+ - `agents/openai.yaml`
63
+ - `scripts/compare_images.py`
@@ -0,0 +1,41 @@
1
+ <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-lld/SKILL.md instead. -->
2
+
3
+ # forgecad-lld
4
+
5
+ Write a Low-Level Design (LLD) for a CAD model — exact dimensions, constraints, parameters, and verification criteria. Use after a High-Level Design (HLD) exists and decisions are locked, or for simple parts that don't need an HLD. The detailed design document that code implements.
6
+
7
+ | Field | Value |
8
+ | --- | --- |
9
+ | Installed by | `forgecad skill install` |
10
+ | Source | `agent-skill-library/forgecad-lld/SKILL.md` |
11
+
12
+ ---
13
+
14
+ ## Low-Level Design (LLD)
15
+
16
+ ### When and prerequisites
17
+
18
+ - An HLD (`/forgecad-high-level-spec`) with a filled Decisions table must exist. The LLD implements those decisions — it never revisits them.
19
+ - Simple parts (single body, no alternatives to explore) skip the HLD and go straight to the LLD.
20
+ - Output: `<name>-lld.md` next to the model files. Complex assemblies split into a numbered directory: overview, global constraints, per-component files, assembly, verification.
21
+
22
+ ### What an LLD is
23
+
24
+ - **Narrative first** — reads like describing the object over the phone: shape, behavior, purpose, proportions, feel.
25
+ - **Authoritative** — the single source of truth that code implements.
26
+ - **Implementation-blind** — the LLD knows nothing about ForgeCAD's capabilities; never let API convenience shape the design.
27
+ - **Every number has a rationale** — each constraint and each parameter default/range gets an explicit reason; show the math (e.g. `wallThickness = 2.4mm = 6 × 0.4mm nozzle`).
28
+
29
+ ### Required structure
30
+
31
+ 1. **Narrative** — what it is, how it behaves and interacts, why it exists. Concrete comparisons ("about the size of a deck of cards"); no vague terms without grounding.
32
+ 2. **Technical** — typed parameter table (length / angle / count / boolean / choice / ratio / clearance — this is design-document vocabulary, not the runtime `Param.*` API), always with units (mm and degrees are the defaults) and a rationale for every default and range; derived dimensions shown as math; geometry and constraints, each constraint with rationale.
33
+ 3. **Verification** — mandatory checklist: dimensional checks, functional checks, printability checks.
34
+
35
+ Don'ts: never open with a parameter list (story before numbers), never leave a constraint implicit, never skip verification.
36
+
37
+ ### Process
38
+
39
+ Iterate via git exactly as in `/forgecad-high-level-spec`: commit every version; the diff, not the conversation, is the review artifact.
40
+
41
+ Completeness gate before presenting: Can someone build from this alone? Does it implement every HLD decision? Is every constraint explicit with rationale?