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.
- package/dist/assets/{AdminPage-CXvls4-J.js → AdminPage-DwYHz72L.js} +1 -1
- package/dist/assets/{BenchmarkPage-B27zk8xL.js → BenchmarkPage-a9_f-1US.js} +1 -1
- package/dist/assets/{BlogPage-CMAVvgQL.js → BlogPage-DodHpvmf.js} +1 -1
- package/dist/assets/{DocsPage-knf4I4h7.js → DocsPage-B5LePEuj.js} +8 -858
- package/dist/assets/EditorApp-QXsAISLR.js +16307 -0
- package/dist/assets/{EmbedViewer-D7ZGlFjx.js → EmbedViewer-DdEHGUMU.js} +2 -2
- package/dist/assets/{LandingPageProofDriven-CnevhTE8.js → LandingPageProofDriven-yhhOodbf.js} +1 -1
- package/dist/assets/{LegalPage-BPTUmqeg.js → LegalPage-5RbKRGYK.js} +1 -1
- package/dist/assets/{PricingPage-B0D4goG_.js → PricingPage-E3Rma7aV.js} +1 -1
- package/dist/assets/{SettingsPage-CFF-UgjI.js → SettingsPage-BJZcM97j.js} +1 -1
- package/dist/assets/{app-T0pDcSX4.js → app-DSYrDg0V.js} +733 -205
- package/dist/assets/cli/{render-C5pcIISc.js → render-ZMHR9HkV.js} +19 -46
- package/dist/assets/{constructionHistoryWorker-Ba2Hm58b.js → constructionHistoryWorker-AwMMWSxg.js} +1103 -349
- package/dist/assets/{evalWorker-vkx310U2.js → evalWorker-DbNs7Dkp.js} +3798 -1622
- package/dist/assets/{inspectWorker-BuTJDVX6.js → inspectWorker-CZsCFtQT.js} +1163 -409
- package/dist/assets/{jointPose-B_Cgedn9.js → jointPose-DO6mnXn_.js} +1 -1
- package/dist/assets/{manifold-BWgsjmAM.js → manifold-BGlQBBH9.js} +1 -1
- package/dist/assets/{manifold-rZexZI0G.js → manifold-BU-tJwQh.js} +1 -1
- package/dist/assets/{manifold-D6IFSkhH.js → manifold-fy2MV7K1.js} +2 -2
- package/dist/assets/{reportWorker-0AGij1Ru.js → reportWorker-DO6hcQbh.js} +7155 -2437
- package/dist/assets/{scalar-sampling-budget-J5cuzxT1.js → scalar-sampling-budget-o90NSNmF.js} +3940 -1742
- package/dist/assets/{scanProxyWorker-Vl4Wxa1y.js → scanProxyWorker-2GtDLk-R.js} +1 -1
- package/dist/assets/{javascript-1kQXfVaz.js → typescript-DBQ6RN5l.js} +874 -22
- package/dist/cli/render.html +1 -1
- package/dist/docs/index.html +3 -3
- package/dist/docs-raw/AI/usage.md +1 -1
- package/dist/docs-raw/CLI.md +63 -241
- package/dist/docs-raw/README.md +6 -0
- package/dist/docs-raw/component-model.md +17 -150
- package/dist/docs-raw/generated/assembly.md +139 -598
- package/dist/docs-raw/generated/concepts.md +245 -3501
- package/dist/docs-raw/generated/core.md +277 -1251
- package/dist/docs-raw/generated/curves.md +387 -1608
- package/dist/docs-raw/generated/legacy.md +162 -0
- package/dist/docs-raw/generated/lib.md +227 -85
- package/dist/docs-raw/generated/output.md +38 -73
- package/dist/docs-raw/generated/runtime-names.md +23 -23
- package/dist/docs-raw/generated/sdf.md +68 -284
- package/dist/docs-raw/generated/sheet-metal.md +68 -335
- package/dist/docs-raw/generated/sketch.md +240 -1161
- package/dist/docs-raw/generated/viewport.md +75 -316
- package/dist/docs-raw/generated/wood.md +21 -49
- package/dist/docs-raw/guides/coordinate-system.md +4 -42
- package/dist/docs-raw/guides/inspection-bundles.md +44 -442
- package/dist/docs-raw/guides/joint-design.md +18 -79
- package/dist/docs-raw/guides/positioning.md +21 -143
- package/dist/docs-raw/guides/scene-presentation.md +89 -0
- package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +25 -111
- package/dist/docs-raw/skills/forgecad-blockout-model.md +20 -117
- package/dist/docs-raw/skills/forgecad-component-model.md +23 -107
- package/dist/docs-raw/skills/forgecad-high-level-spec.md +47 -155
- package/dist/docs-raw/skills/forgecad-image-replicator.md +26 -143
- package/dist/docs-raw/skills/forgecad-lld.md +19 -113
- package/dist/docs-raw/skills/forgecad-make-a-model.md +112 -532
- package/dist/docs-raw/skills/forgecad-model-grader.md +38 -108
- package/dist/docs-raw/skills/forgecad-prepare-prompt.md +24 -211
- package/dist/docs-raw/skills/forgecad-project.md +13 -131
- package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +42 -134
- package/dist/docs-raw/skills/forgecad-render-inspect.md +27 -174
- package/dist/docs-raw/skills/forgecad-visual-spec.md +32 -112
- package/dist/docs-raw/skills/forgecad.md +19 -18
- package/dist/docs-raw/skills/index.md +2 -0
- package/dist/docs-raw/welcome.md +2 -2
- package/dist/index.html +1 -1
- package/dist/llms.txt +1 -2
- package/dist/sitemap.xml +13 -13
- package/dist-cli/{check-compiler-SYQ2PWOB.js → check-compiler-JTVBITCR.js} +1 -1
- package/dist-cli/{check-query-propagation-HIAGV62W.js → check-query-propagation-3FFLSMVN.js} +1 -1
- package/dist-cli/{chunk-SPZE3DUY.js → chunk-OAN5T4XD.js} +4412 -2212
- package/dist-cli/forgecad.js +507 -179
- package/dist-skill/CONTEXT.md +2172 -8377
- package/dist-skill/SKILL.md +15 -15
- package/dist-skill/docs/API/core/concepts.md +27 -157
- package/dist-skill/docs/CLI.md +63 -241
- package/dist-skill/docs/generated/assembly.md +138 -549
- package/dist-skill/docs/generated/core.md +277 -1251
- package/dist-skill/docs/generated/curves.md +387 -1609
- package/dist-skill/docs/generated/lib.md +227 -85
- package/dist-skill/docs/generated/output.md +38 -73
- package/dist-skill/docs/generated/runtime-names.md +16 -21
- package/dist-skill/docs/generated/sdf.md +68 -284
- package/dist-skill/docs/generated/sheet-metal.md +68 -335
- package/dist-skill/docs/generated/sketch.md +240 -1160
- package/dist-skill/docs/generated/viewport.md +75 -223
- package/dist-skill/docs/generated/wood.md +21 -49
- package/dist-skill/docs/guides/coordinate-system.md +4 -42
- package/dist-skill/docs/guides/inspection-bundles.md +44 -442
- package/dist-skill/docs/guides/joint-design.md +18 -79
- package/dist-skill/docs/guides/positioning.md +21 -143
- package/dist-skill/docs/guides/scene-presentation.md +89 -0
- package/dist-skill/docs/guides/surface-members.md +26 -0
- package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +23 -111
- package/dist-skill/library/forgecad-blockout-model/SKILL.md +18 -117
- package/dist-skill/library/forgecad-component-model/SKILL.md +21 -107
- package/dist-skill/library/forgecad-high-level-spec/SKILL.md +45 -155
- package/dist-skill/library/forgecad-image-replicator/SKILL.md +24 -143
- package/dist-skill/library/forgecad-lld/SKILL.md +17 -113
- package/dist-skill/library/forgecad-make-a-model/SKILL.md +110 -532
- package/dist-skill/library/forgecad-model-grader/SKILL.md +36 -108
- package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +35 -224
- package/dist-skill/library/forgecad-prepare-prompt/references/default-profiles.md +43 -271
- package/dist-skill/library/forgecad-prepare-prompt/references/master-prompt.md +30 -99
- package/dist-skill/library/forgecad-project/SKILL.md +13 -133
- package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +29 -123
- package/dist-skill/library/forgecad-render-inspect/SKILL.md +25 -174
- package/dist-skill/library/forgecad-visual-spec/SKILL.md +30 -111
- package/dist-skill/website/skills/forgecad-3d-reconstruction.md +58 -0
- package/dist-skill/website/skills/forgecad-blockout-model.md +49 -0
- package/dist-skill/website/skills/forgecad-component-model.md +53 -0
- package/dist-skill/website/skills/forgecad-high-level-spec.md +101 -0
- package/dist-skill/website/skills/forgecad-image-replicator.md +63 -0
- package/dist-skill/website/skills/forgecad-lld.md +41 -0
- package/dist-skill/website/skills/forgecad-make-a-model.md +186 -0
- package/dist-skill/website/skills/forgecad-model-grader.md +82 -0
- package/dist-skill/website/skills/forgecad-prepare-prompt.md +63 -0
- package/dist-skill/website/skills/forgecad-project.md +26 -0
- package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +60 -0
- package/dist-skill/website/skills/forgecad-render-inspect.md +80 -0
- package/dist-skill/website/skills/forgecad-visual-spec.md +71 -0
- package/dist-skill/website/skills/forgecad.md +122 -0
- package/dist-skill/website/skills/index.md +26 -0
- package/examples/api/comparison-imported-sphere-candidate.forge.js +1 -1
- package/examples/api/conformal-product-ribbon.forge.js +1 -1
- package/examples/api/exact-sheet-shell-assembly.forge.js +1 -1
- package/examples/api/extrude-options.forge.js +4 -2
- package/examples/api/field-loft-drive-tip.forge.js +40 -0
- package/examples/api/guided-loft-olive-oil-bottle.forge.js +1 -1
- package/examples/api/highlight-debug.forge.js +10 -10
- package/examples/api/mesh-import-slats.forge.js +1 -1
- package/examples/api/real-product-curves.forge.js +1 -1
- package/examples/api/sculpt-box-circle-booleans.forge.js +1 -1
- package/examples/api/sdf-shapes.forge.js +2 -5
- package/examples/api/sketch-rounding-strategies.forge.js +6 -6
- package/examples/api/surface-member-bottle-cage.forge.js +3 -3
- package/examples/api/surface-member-conformal-product-ribbon.forge.js +3 -3
- package/examples/api/surface-member-razor-inlay.forge.js +1 -1
- package/examples/api/variable-sweep-test.forge.js +3 -3
- package/examples/mechanical/airplane-propeller.forge.js +74 -39
- package/examples/nurbs-surface.forge.js +1 -1
- package/examples/products/iphone.forge.js +1 -1
- package/package.json +1 -1
- package/dist/assets/EditorApp-BHMQlJ-D.js +0 -14686
- package/dist/docs-raw/guides/geometry-conventions.md +0 -52
- package/dist/docs-raw/guides/modeling-recipes.md +0 -78
- package/dist-skill/docs/guides/geometry-conventions.md +0 -52
- package/dist-skill/docs/guides/modeling-recipes.md +0 -78
- 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
|
-
|
|
9
|
+
## Scope
|
|
10
10
|
|
|
11
|
-
|
|
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
|
-
|
|
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
|
-
|
|
17
|
+
Negatives (the only negatives list — reuse it, never restate variants):
|
|
40
18
|
|
|
41
|
-
|
|
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
|
-
|
|
44
|
-
- mechanical honesty
|
|
45
|
-
- visual appeal
|
|
25
|
+
## Prompt Skeleton
|
|
46
26
|
|
|
47
|
-
|
|
27
|
+
Block order: identity → mechanism truth → materials/color truth → pose/state → shot/camera/lighting → negatives. Fill in, don't copy:
|
|
48
28
|
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
35
|
+
## Modes
|
|
57
36
|
|
|
58
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
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
|
|
100
|
-
- Ask for "physically buildable", "mechanically honest",
|
|
101
|
-
-
|
|
102
|
-
-
|
|
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
|
-
|
|
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?
|