forgecad 0.10.3 → 0.10.4
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-CK7ObBz3.js → AdminPage-B3L3W1Uo.js} +1 -1
- package/dist/assets/{BenchmarkPage-Ds7Z2doN.js → BenchmarkPage-DXKVXMrJ.js} +2 -2
- package/dist/assets/{BlogPage-DlPbpt6A.js → BlogPage-B7BWxOCg.js} +1 -1
- package/dist/assets/{DocsPage-vZb3b3Y0.js → DocsPage-BPGGwht1.js} +28 -43
- package/dist/assets/{EditorApp-HLoKfe15.js → EditorApp-BWUGCdD5.js} +49 -16
- package/dist/assets/{EmbedViewer--KnqBKrJ.js → EmbedViewer-DygByZS2.js} +2 -2
- package/dist/assets/{LandingPageProofDriven-C_LssmnA.js → LandingPageProofDriven-BoVE7JGY.js} +54 -36
- package/dist/assets/{LegalPage-DGsyo4n1.js → LegalPage-Din8wv8d.js} +2 -2
- package/dist/assets/{PricingPage-BOE27B-R.js → PricingPage-C2PMzmDc.js} +2 -2
- package/dist/assets/{SettingsPage-f47cnk39.js → SettingsPage-BlJDCRe8.js} +1 -1
- package/dist/assets/{app-D6ccu2Xx.js → app-BsRYSfxY.js} +238 -3714
- package/dist/assets/{backendInit-DbTkQN9J.js → backendInit-6C0DLgH0.js} +5972 -1566
- package/dist/assets/cli/{render-BsngirjC.js → render-XXol_ET7.js} +724 -112
- package/dist/assets/{constructionHistoryWorker-PCwXrTDB.js → constructionHistoryWorker-cTHWRJEi.js} +528 -252
- package/dist/assets/{evalWorker-CS63PfZu.js → evalWorker-BssDYW9u.js} +1453 -902
- package/dist/assets/{inspectWorker-Y4cOzNyA.js → inspectWorker-ymhBV4Ll.js} +2635 -1024
- package/dist/assets/{jointPose-AMvCywzS.js → jointPose-B0blBj9A.js} +1 -1
- package/dist/assets/{landing-proof-driven-ORyigZ6p.css → landing-proof-driven-Cpf-MIbI.css} +73 -13
- package/dist/assets/{manifold-Crd_F2qx.js → manifold-B_7QXpGB.js} +1 -1
- package/dist/assets/{manifold-k2kRcc85.js → manifold-CNShmpEJ.js} +1 -1
- package/dist/assets/{manifold-CBry38ly.js → manifold-CYlIm-M6.js} +2 -2
- package/dist/assets/{reportWorker-CWvn0CEv.js → reportWorker-Cb5eyM7D.js} +1407 -892
- package/dist/cli/render.html +1 -1
- package/dist/docs/index.html +2 -2
- package/dist/docs-raw/AI/usage.md +17 -15
- package/dist/docs-raw/component-model.md +2 -2
- package/dist/docs-raw/generated/concepts.md +5 -1
- package/dist/docs-raw/generated/core.md +26 -0
- package/dist/docs-raw/generated/runtime-names.md +1 -1
- package/dist/docs-raw/guides/inspection-bundles.md +1 -1
- package/dist/docs-raw/simulation-workflow.md +1 -1
- package/dist/docs-raw/skills/{forgecad-make-a-model.md → forgecad-build-model.md} +18 -8
- package/dist/docs-raw/skills/{forgecad-spec-by-walking-through-it.md → forgecad-design-spec.md} +6 -6
- package/dist/docs-raw/skills/{forgecad-model-grader.md → forgecad-grade-model.md} +8 -6
- package/{dist-skill/website/skills/forgecad-visual-spec.md → dist/docs-raw/skills/forgecad-image-prompt.md} +7 -7
- package/dist/docs-raw/skills/{forgecad-render-inspect.md → forgecad-inspect-model.md} +6 -6
- package/{dist-skill/website/skills/forgecad-project.md → dist/docs-raw/skills/forgecad-project-sync.md} +5 -5
- package/dist/docs-raw/skills/{forgecad-3d-reconstruction.md → forgecad-reconstruct-cad-file.md} +7 -7
- package/dist/docs-raw/skills/{forgecad-image-replicator.md → forgecad-reconstruct-from-images.md} +12 -12
- package/dist/docs-raw/skills/{forgecad-mujoco-verify.md → forgecad-verify-mujoco.md} +6 -6
- package/dist/docs-raw/skills/index.md +9 -12
- package/dist/index.html +9 -9
- package/dist/llms.txt +7 -7
- package/dist/sitemap.xml +16 -16
- package/dist-cli/{check-compiler-HPF2T2FS.js → check-compiler-4RPB6SB5.js} +1 -1
- package/dist-cli/{check-query-propagation-HYSLTXAB.js → check-query-propagation-KN3DFQTX.js} +1 -1
- package/dist-cli/{chunk-WLUKAW3H.js → chunk-UHBRMYA6.js} +28802 -28152
- package/dist-cli/forgecad.js +660 -9
- package/dist-skill/CONTEXT.md +27 -1
- package/dist-skill/docs/generated/core.md +26 -0
- package/dist-skill/docs/generated/runtime-names.md +1 -1
- package/dist-skill/docs/guides/inspection-bundles.md +1 -1
- package/dist-skill/library/README.md +9 -12
- package/dist-skill/library/{forgecad-make-a-model → forgecad-build-model}/SKILL.md +16 -6
- package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/SKILL.md +4 -4
- package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/references/master-prompt.md +1 -1
- package/dist-skill/library/{forgecad-model-grader → forgecad-grade-model}/SKILL.md +6 -4
- package/dist-skill/library/forgecad-grade-model/agents/openai.yaml +4 -0
- package/dist-skill/library/{forgecad-visual-spec → forgecad-image-prompt}/SKILL.md +5 -5
- package/dist-skill/library/forgecad-image-prompt/agents/openai.yaml +4 -0
- package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/SKILL.md +4 -4
- package/dist-skill/library/{forgecad-project → forgecad-project-sync}/SKILL.md +3 -3
- package/dist-skill/library/{forgecad-3d-reconstruction → forgecad-reconstruct-cad-file}/SKILL.md +5 -5
- package/dist-skill/library/forgecad-reconstruct-cad-file/agents/openai.yaml +4 -0
- package/dist-skill/library/{forgecad-image-replicator → forgecad-reconstruct-from-images}/SKILL.md +10 -10
- package/dist-skill/library/forgecad-reconstruct-from-images/agents/openai.yaml +4 -0
- package/dist-skill/library/{forgecad-mujoco-verify → forgecad-verify-mujoco}/SKILL.md +4 -4
- package/dist-skill/website/skills/{forgecad-make-a-model.md → forgecad-build-model.md} +18 -8
- package/dist-skill/website/skills/{forgecad-spec-by-walking-through-it.md → forgecad-design-spec.md} +6 -6
- package/dist-skill/website/skills/{forgecad-model-grader.md → forgecad-grade-model.md} +8 -6
- package/{dist/docs-raw/skills/forgecad-visual-spec.md → dist-skill/website/skills/forgecad-image-prompt.md} +7 -7
- package/dist-skill/website/skills/{forgecad-render-inspect.md → forgecad-inspect-model.md} +6 -6
- package/{dist/docs-raw/skills/forgecad-project.md → dist-skill/website/skills/forgecad-project-sync.md} +5 -5
- package/dist-skill/website/skills/{forgecad-3d-reconstruction.md → forgecad-reconstruct-cad-file.md} +7 -7
- package/dist-skill/website/skills/{forgecad-image-replicator.md → forgecad-reconstruct-from-images.md} +12 -12
- package/dist-skill/website/skills/{forgecad-mujoco-verify.md → forgecad-verify-mujoco.md} +6 -6
- package/dist-skill/website/skills/index.md +9 -12
- package/examples/api/texture-projection.forge.js +75 -0
- package/examples/assets/uv-grid.png +0 -0
- package/package.json +1 -1
- package/dist/docs-raw/skills/forgecad-blockout-model.md +0 -49
- package/dist/docs-raw/skills/forgecad-component-model.md +0 -53
- package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +0 -60
- package/dist-skill/library/forgecad-3d-reconstruction/agents/openai.yaml +0 -4
- package/dist-skill/library/forgecad-blockout-model/SKILL.md +0 -42
- package/dist-skill/library/forgecad-component-model/SKILL.md +0 -46
- package/dist-skill/library/forgecad-image-replicator/agents/openai.yaml +0 -4
- package/dist-skill/library/forgecad-model-grader/agents/openai.yaml +0 -4
- package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +0 -48
- package/dist-skill/library/forgecad-reconstruction-benchmark/agents/openai.yaml +0 -4
- package/dist-skill/library/forgecad-visual-spec/agents/openai.yaml +0 -4
- package/dist-skill/website/skills/forgecad-blockout-model.md +0 -49
- package/dist-skill/website/skills/forgecad-component-model.md +0 -53
- package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +0 -60
- /package/dist/assets/{landing-proof-driven-DiGqdtWa.js → landing-proof-driven-BxZZh5r5.js} +0 -0
- /package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/references/default-profiles.md +0 -0
- /package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/summarize_manifest.py +0 -0
- /package/dist-skill/library/{forgecad-image-replicator → forgecad-reconstruct-from-images}/scripts/compare_images.py +0 -0
- /package/dist-skill/library/{forgecad-mujoco-verify → forgecad-verify-mujoco}/scripts/mujoco_verify.py +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-model
|
|
1
|
+
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-grade-model/SKILL.md instead. -->
|
|
2
2
|
|
|
3
|
-
# forgecad-model
|
|
3
|
+
# forgecad-grade-model
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Grade a ForgeCAD or CAD-as-code model against a requirement, brief, prompt, reference, or acceptance criteria with evidence and a 0-10 score.
|
|
6
6
|
|
|
7
7
|
| Field | Value |
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| Installed by | `forgecad skill install` |
|
|
10
|
-
| Source | `agent-skill-library/forgecad-model
|
|
10
|
+
| Source | `agent-skill-library/forgecad-grade-model/SKILL.md` |
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Grade Model
|
|
15
15
|
|
|
16
16
|
Grade the delivered model against the requirement, not against what could be fixed later. Never edit the model unless the user explicitly requests repairs — then record the baseline grade first, change, and re-grade.
|
|
17
17
|
|
|
@@ -21,7 +21,7 @@ Grade the delivered model against the requirement, not against what could be fix
|
|
|
21
21
|
2. **Run the model**: `forgecad run <model>.forge.js` (in the ForgeCAD repo use the local build, `node dist-cli/forgecad.js run ...`). If it fails to execute, stop and apply the caps.
|
|
22
22
|
3. **Render** at least `iso`, `front`, `right`, `top` to a scratch dir; add views (back, bottom, close-up, section) when the model is asymmetric, hollow, mechanical, or likely to hide mistakes.
|
|
23
23
|
4. **Open and look at every PNG** — never score from command output alone. Check silhouette, proportions, required features, part boundaries, interfaces, and whether the model reads as the requested artifact from more than one angle.
|
|
24
|
-
5. **Inspect** whenever hidden internals, fit, wall thickness, or assembly behavior are central to the brief — grading without inspecting them caps the score. Delegate evidence choice, commands, and manifest reading to the `forgecad-
|
|
24
|
+
5. **Inspect** whenever hidden internals, fit, wall thickness, or assembly behavior are central to the brief — grading without inspecting them caps the score. Delegate evidence choice, commands, and manifest reading to the `forgecad-inspect-model` skill. Findings (unexpected collisions, thin regions, floating bodies, wrong component counts) are evidence, not warnings to wave away.
|
|
25
25
|
6. **Score**: fill the rubric, apply caps, give a final 0-10 in whole or `.5` increments. Unknowns count against the score.
|
|
26
26
|
|
|
27
27
|
### Rubric
|
|
@@ -47,6 +47,7 @@ Maximum scores, applied after the rubric:
|
|
|
47
47
|
- A must-have requirement is absent: max `6`.
|
|
48
48
|
- Visually recognizable but physically impossible for the requested use: max `6`.
|
|
49
49
|
- Internals, fit, walls, or assembly central to the brief but uninspected: max `7`.
|
|
50
|
+
- Multi-part assembly violates the ForgeCAD component model — sibling imports, assembly-space coordinates inside parts, structural `translate()` placement, missing connector mates, or parent/child data flow confusion: max `7`; max `6` when the violation makes the assembly brittle or mechanically wrong.
|
|
50
51
|
- Inspection finds unexpected collisions, floating bodies, critical thin walls, or wrong connectivity: max `6`; max `5` when the defect invalidates the main function.
|
|
51
52
|
- Delivered as a finished product/prototype but presented with default flat lighting (no `scene()` rig), a generically colorful or material-false palette, or teaching-diagram styling: max `8`. Does not apply when the brief asks for a blockout or bare technical study.
|
|
52
53
|
- Any score relying on an assumption the evidence cannot verify: mark it `Unknown`, never score above `8`.
|
|
@@ -73,6 +74,7 @@ Next fixes: the 2-5 highest-leverage improvements.
|
|
|
73
74
|
- Grade the default returned model unless the user names a parameter set or variant.
|
|
74
75
|
- No points for comments, labels, or intentions absent from the geometry.
|
|
75
76
|
- Decorative screws, floating labels, and teaching-diagram callouts are not real mechanical interfaces.
|
|
77
|
+
- For multi-part assemblies, require the component model: parts build locally at origin, expose connectors/metadata, the parent positions them, and inter-part data flows through parent props and returned metadata.
|
|
76
78
|
- Cite which render or inspection finding drove the grade.
|
|
77
79
|
- When comparing models, use identical checklist, cameras, inspection evidence, and caps for all.
|
|
78
80
|
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-
|
|
1
|
+
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-image-prompt/SKILL.md instead. -->
|
|
2
2
|
|
|
3
|
-
# forgecad-
|
|
3
|
+
# forgecad-image-prompt
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Write builder-honest AI image prompts from a concrete ForgeCAD model, build brief, HLD, or LLD without hiding how the artifact is built.
|
|
6
6
|
|
|
7
7
|
| Field | Value |
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| Installed by | `forgecad skill install` |
|
|
10
|
-
| Source | `agent-skill-library/forgecad-
|
|
10
|
+
| Source | `agent-skill-library/forgecad-image-prompt/SKILL.md` |
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Image Prompt
|
|
15
15
|
|
|
16
16
|
### Scope
|
|
17
17
|
|
|
18
|
-
Only for artifacts already concrete enough to visualize (a specific `.forge.js` model, build brief, or HLD); route vague briefs to `forgecad-spec
|
|
18
|
+
Only for artifacts already concrete enough to visualize (a specific `.forge.js` model, build brief, or HLD); route vague briefs to `forgecad-design-spec` 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
19
|
|
|
20
20
|
### Core Rule
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Image 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.
|
|
23
23
|
|
|
24
24
|
Negatives (the only negatives list — reuse it, never restate variants):
|
|
25
25
|
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-
|
|
1
|
+
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-inspect-model/SKILL.md instead. -->
|
|
2
2
|
|
|
3
|
-
# forgecad-
|
|
3
|
+
# forgecad-inspect-model
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Select, run, and interpret ForgeCAD inspection evidence for collisions, sections, wall thickness, components, masks, depth, normals, surface continuity, and fit.
|
|
6
6
|
|
|
7
7
|
| Field | Value |
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| Installed by | `forgecad skill install` |
|
|
10
|
-
| Source | `agent-skill-library/forgecad-
|
|
10
|
+
| Source | `agent-skill-library/forgecad-inspect-model/SKILL.md` |
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Inspect Model
|
|
15
15
|
|
|
16
16
|
Use `forgecad inspect ...` when a shaded render is too ambiguous and you need structured evidence: a bundle directory with evidence PNGs plus a root `manifest.json` (or, for `inspect section`, a probe directory with `result.json`, `section.svg`, `section.png`). Inspection is not a substitute artifact: look inside with sections, masks, `--focus`/`--hide`, and transparency — never edit the model into a cutaway or exploded default to make inspecting easier. Output dirs: let `inspect` allocate its timestamped directory by default (repeated probes never collide); use `/tmp/<model>-inspect` for throwaway bundles, a project directory only for persistent artifacts.
|
|
17
17
|
|
|
18
|
-
Routing: authoring/API questions → `forgecad` skill; creating a new model → `forgecad-
|
|
18
|
+
Routing: authoring/API questions → `forgecad` skill; creating a new model → `forgecad-build-model`.
|
|
19
19
|
|
|
20
20
|
### Workflow
|
|
21
21
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-project/SKILL.md instead. -->
|
|
1
|
+
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-project-sync/SKILL.md instead. -->
|
|
2
2
|
|
|
3
|
-
# forgecad-project
|
|
3
|
+
# forgecad-project-sync
|
|
4
4
|
|
|
5
|
-
ForgeCAD project
|
|
5
|
+
Manage hosted ForgeCAD project sync from the CLI: init, clone, pull, push, file operations, members, publishing, and shares.
|
|
6
6
|
|
|
7
7
|
| Field | Value |
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| Installed by | `forgecad skill install` |
|
|
10
|
-
| Source | `agent-skill-library/forgecad-project/SKILL.md` |
|
|
10
|
+
| Source | `agent-skill-library/forgecad-project-sync/SKILL.md` |
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Project Sync
|
|
15
15
|
|
|
16
16
|
forgecad.io is the hosted ForgeCAD platform; a project is a local folder linked to the server by `forgecad.json`. The full command inventory (project, file, member, share, token commands and flags) lives in `forgecad project --help` and the forgecad skill's `docs/CLI.md` — do not relearn it here.
|
|
17
17
|
|
package/dist-skill/website/skills/{forgecad-3d-reconstruction.md → forgecad-reconstruct-cad-file.md}
RENAMED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-
|
|
1
|
+
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-reconstruct-cad-file/SKILL.md instead. -->
|
|
2
2
|
|
|
3
|
-
# forgecad-
|
|
3
|
+
# forgecad-reconstruct-cad-file
|
|
4
4
|
|
|
5
|
-
Reconstruct a parametric ForgeCAD model from an existing
|
|
5
|
+
Reconstruct a readable parametric ForgeCAD model from an existing CAD or mesh file such as STL, OBJ, 3MF, STEP, or STP.
|
|
6
6
|
|
|
7
7
|
| Field | Value |
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| Installed by | `forgecad skill install` |
|
|
10
|
-
| Source | `agent-skill-library/forgecad-
|
|
10
|
+
| Source | `agent-skill-library/forgecad-reconstruct-cad-file/SKILL.md` |
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Reconstruct CAD File
|
|
15
15
|
|
|
16
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
17
|
|
|
18
|
-
Routing: user wants to KEEP the file as a live component and design around it (bracket, enclosure, mating assembly) → `forgecad-
|
|
18
|
+
Routing: user wants to KEEP the file as a live component and design around it (bracket, enclosure, mating assembly) → `forgecad-build-model` (Imported Parts section), not this skill; prepared benchmark/RL episodes → use the task-local benchmark instructions, not the public skill library; inspection-bundle interpretation → `forgecad-inspect-model`; independent grading after reconstruction → `forgecad-grade-model`; API and command reference → `forgecad` skill + CLI.md.
|
|
19
19
|
|
|
20
20
|
### Workflow
|
|
21
21
|
|
|
@@ -50,7 +50,7 @@ Faceted sources: decide whether tessellation itself is evidence. Matching low-po
|
|
|
50
50
|
|
|
51
51
|
### Done Criteria
|
|
52
52
|
|
|
53
|
-
The final model must run, render, re-compare at `--samples 5000`, and pass an `inspect compare overlay`. Add targeted inspects (`forgecad-
|
|
53
|
+
The final model must run, render, re-compare at `--samples 5000`, and pass an `inspect compare overlay`. Add targeted inspects (`forgecad-inspect-model`) 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
54
|
|
|
55
55
|
|
|
56
56
|
## Bundled Files
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-
|
|
1
|
+
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-reconstruct-from-images/SKILL.md instead. -->
|
|
2
2
|
|
|
3
|
-
# forgecad-
|
|
3
|
+
# forgecad-reconstruct-from-images
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Reconstruct a real parametric ForgeCAD object from reference images by using images as evidence, not as a one-view facade.
|
|
6
6
|
|
|
7
7
|
| Field | Value |
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| Installed by | `forgecad skill install` |
|
|
10
|
-
| Source | `agent-skill-library/forgecad-
|
|
10
|
+
| Source | `agent-skill-library/forgecad-reconstruct-from-images/SKILL.md` |
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Reconstruct From Images
|
|
15
15
|
|
|
16
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
17
|
|
|
18
18
|
### Companion Skills
|
|
19
19
|
|
|
20
20
|
- `forgecad` — API docs, model authoring, renderer behavior.
|
|
21
|
-
- `forgecad-spec
|
|
22
|
-
- `forgecad-
|
|
23
|
-
- `forgecad-
|
|
21
|
+
- `forgecad-design-spec` — when the images underdetermine artifact family, process posture, scale, operating story, or validation boundary.
|
|
22
|
+
- `forgecad-build-model` — file placement, project structure, decomposition, definition of done.
|
|
23
|
+
- `forgecad-inspect-model` — pre-delivery inspection for multi-part, internal, mechanical, thin-wall, or fit-sensitive objects.
|
|
24
24
|
|
|
25
25
|
### Core Rule
|
|
26
26
|
|
|
@@ -30,19 +30,19 @@ Infer the real object before matching any camera — identity, manufacture, scal
|
|
|
30
30
|
|
|
31
31
|
1. Stage references in `/tmp/<slug>-replicate/refs`, keeping originals and adding view names where possible (`front`, `side`, `rear-iso`, `top`, `detail`).
|
|
32
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-spec
|
|
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-
|
|
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-design-spec` 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-build-model` for project structure.
|
|
35
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
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
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
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-
|
|
39
|
+
9. Validate the final object: `forgecad run`, reference comparison boards, canonical renders, and targeted inspections via `forgecad-inspect-model`.
|
|
40
40
|
|
|
41
41
|
### Comparison Boards
|
|
42
42
|
|
|
43
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
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-
|
|
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-reconstruct-from-images` skill directory:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
48
|
uv run <skill-dir>/scripts/compare_images.py refs/front.png render-front.png compare-front.png
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-mujoco
|
|
1
|
+
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-verify-mujoco/SKILL.md instead. -->
|
|
2
2
|
|
|
3
|
-
# forgecad-mujoco
|
|
3
|
+
# forgecad-verify-mujoco
|
|
4
4
|
|
|
5
|
-
Verify ForgeCAD MJCF
|
|
5
|
+
Verify a ForgeCAD MJCF export in MuJoCo with dynamics, contacts, controls, joint travel, and rendered evidence before calling it simulation-ready.
|
|
6
6
|
|
|
7
7
|
| Field | Value |
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| Installed by | `forgecad skill install` |
|
|
10
|
-
| Source | `agent-skill-library/forgecad-mujoco
|
|
10
|
+
| Source | `agent-skill-library/forgecad-verify-mujoco/SKILL.md` |
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Verify MuJoCo
|
|
15
15
|
|
|
16
16
|
Use this when `forgecad export mjcf ...` is part of the deliverable. A model is not sim-ready just because `forgecad check simready` passes or the MJCF file loads: it must be loaded in MuJoCo, stepped under gravity, driven with the intended controls, contact pairs inspected, and rendered from useful views.
|
|
17
17
|
|
|
18
|
-
Routing: geometry-only visual inspection -> `forgecad-
|
|
18
|
+
Routing: geometry-only visual inspection -> `forgecad-inspect-model`; model authoring/API questions -> `forgecad`; building a new model -> `forgecad-build-model`.
|
|
19
19
|
|
|
20
20
|
### Definition Of Done
|
|
21
21
|
|
|
@@ -11,15 +11,12 @@ forgecad skill install
|
|
|
11
11
|
| Skill | Installed by | Purpose |
|
|
12
12
|
| --- | --- | --- |
|
|
13
13
|
| [forgecad](/docs/skills/forgecad) | `forgecad skill install` | ForgeCAD model authoring, editing, debugging, and execution guidance for .forge.js, SVG-import, assembly, and CLI workflows. Use when building or modifying ForgeCAD geometry, structuring multi-file projects, validating scripts, or using ForgeCAD export/render tooling. |
|
|
14
|
-
| [forgecad-
|
|
15
|
-
| [forgecad-
|
|
16
|
-
| [forgecad-
|
|
17
|
-
| [forgecad-image-
|
|
18
|
-
| [forgecad-
|
|
19
|
-
| [forgecad-
|
|
20
|
-
| [forgecad-
|
|
21
|
-
| [forgecad-
|
|
22
|
-
| [forgecad-
|
|
23
|
-
| [forgecad-render-inspect](/docs/skills/forgecad-render-inspect) | `forgecad skill install` | Run and interpret ForgeCAD inspection bundles for model verification. Use when asked to inspect a ForgeCAD model, analyze an inspection bundle, validate collisions, wall thickness, connectivity, floating bodies, sections, masks, depth, normals, or Zebra stripes. |
|
|
24
|
-
| [forgecad-spec-by-walking-through-it](/docs/skills/forgecad-spec-by-walking-through-it) | `forgecad skill install` | Design a ForgeCAD model, mechanism, or assembly by fixing WHAT before HOW in a git-reviewed design document, validated by mentally operating the thing step by step. Covers fuzzy-request intake and process choice, high-level design (HLD), and low-level design (LLD). Use on "spec this out", "plan the design", "write the HLD/LLD", a vague build request that needs concrete decisions, or any moment the right move is a reviewable spec before code. |
|
|
25
|
-
| [forgecad-visual-spec](/docs/skills/forgecad-visual-spec) | `forgecad skill install` | Turn a concrete ForgeCAD artifact, build brief, HLD, or existing model into builder-honest image prompts for AI image models. Use when the user wants visual-spec renders that show the final product while keeping mechanisms, seams, hardware, and build cues visible instead of drifting into concept art. |
|
|
14
|
+
| [forgecad-build-model](/docs/skills/forgecad-build-model) | `forgecad skill install` | Build or edit a manufacture-realistic `.forge.js` model in a project, then validate it with run, render, inspect, and export evidence. |
|
|
15
|
+
| [forgecad-design-spec](/docs/skills/forgecad-design-spec) | `forgecad skill install` | Create a ForgeCAD design brief, HLD, or LLD before coding by walking through use, assembly, interfaces, decisions, and verification. |
|
|
16
|
+
| [forgecad-grade-model](/docs/skills/forgecad-grade-model) | `forgecad skill install` | Grade a ForgeCAD or CAD-as-code model against a requirement, brief, prompt, reference, or acceptance criteria with evidence and a 0-10 score. |
|
|
17
|
+
| [forgecad-image-prompt](/docs/skills/forgecad-image-prompt) | `forgecad skill install` | Write builder-honest AI image prompts from a concrete ForgeCAD model, build brief, HLD, or LLD without hiding how the artifact is built. |
|
|
18
|
+
| [forgecad-inspect-model](/docs/skills/forgecad-inspect-model) | `forgecad skill install` | Select, run, and interpret ForgeCAD inspection evidence for collisions, sections, wall thickness, components, masks, depth, normals, surface continuity, and fit. |
|
|
19
|
+
| [forgecad-project-sync](/docs/skills/forgecad-project-sync) | `forgecad skill install` | Manage hosted ForgeCAD project sync from the CLI: init, clone, pull, push, file operations, members, publishing, and shares. |
|
|
20
|
+
| [forgecad-reconstruct-cad-file](/docs/skills/forgecad-reconstruct-cad-file) | `forgecad skill install` | Reconstruct a readable parametric ForgeCAD model from an existing CAD or mesh file such as STL, OBJ, 3MF, STEP, or STP. |
|
|
21
|
+
| [forgecad-reconstruct-from-images](/docs/skills/forgecad-reconstruct-from-images) | `forgecad skill install` | Reconstruct a real parametric ForgeCAD object from reference images by using images as evidence, not as a one-view facade. |
|
|
22
|
+
| [forgecad-verify-mujoco](/docs/skills/forgecad-verify-mujoco) | `forgecad skill install` | Verify a ForgeCAD MJCF export in MuJoCo with dynamics, contacts, controls, joint travel, and rendered evidence before calling it simulation-ready. |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// Bitmap Texturing: Projected UV
|
|
2
|
+
//
|
|
3
|
+
// Wrap an imported bitmap onto a surface with `Shape.wrapTexture(image,
|
|
4
|
+
// projection)`. The projection (a `Wrap.*` helper) decides how each point of the
|
|
5
|
+
// surface maps into the image — no UV unwrapping, no Math.sin/cos.
|
|
6
|
+
//
|
|
7
|
+
// The image's colored edges (top=red, right=green, bottom=blue, left=orange) and
|
|
8
|
+
// the dark top-left corner wedge make the mapping orientation easy to read on
|
|
9
|
+
// every shape.
|
|
10
|
+
//
|
|
11
|
+
// Two key properties:
|
|
12
|
+
// 1. AUTO-FIT — a bare `Wrap.flat/box/aroundCylinder` (no width/height/size)
|
|
13
|
+
// maps ONE copy of the image across the shape's extent. No magic numbers:
|
|
14
|
+
// the fit is read from the shape's bounding box.
|
|
15
|
+
// 2. WORLD-SPACE & BOOLEAN-SAFE — the UV is derived from each vertex's final
|
|
16
|
+
// world position at render time, so the texture survives cuts/unions AND so
|
|
17
|
+
// you must texture a shape *after* positioning it (auto-fit reads the final
|
|
18
|
+
// world box; see the rightmost part, textured *then* bored).
|
|
19
|
+
|
|
20
|
+
const tile = Param.number("Tile repeat", 1, { min: 1, max: 6, step: 1 });
|
|
21
|
+
|
|
22
|
+
const art = Import.image("assets/uv-grid.png");
|
|
23
|
+
|
|
24
|
+
// Laid out left-to-right in a tidy row on the z = 0 ground plane, ~25 mm gaps so
|
|
25
|
+
// nothing overlaps. box() and sphere() are origin-centered (lift them by half
|
|
26
|
+
// their height to sit on the ground); cylinder(height, radius) already has its
|
|
27
|
+
// base at z = 0, so the can needs no z lift.
|
|
28
|
+
//
|
|
29
|
+
// In every case: build → translate → wrapTexture LAST, so auto-fit reads the
|
|
30
|
+
// final world bounding box.
|
|
31
|
+
|
|
32
|
+
// 1. FLAT — lay the image onto one axis-aligned face (a logo on a plate's top).
|
|
33
|
+
// No width/height: auto-fit maps the face span to the image once. `repeat`
|
|
34
|
+
// tiles that single fitted copy.
|
|
35
|
+
const plate = box(50, 50, 8)
|
|
36
|
+
.translate(-140, 0, 4)
|
|
37
|
+
.wrapTexture(art, Wrap.flat({ onto: "top", repeat: [tile, tile] }));
|
|
38
|
+
|
|
39
|
+
// 2. AROUND A CYLINDER — wrap the image like a can label. `axis` is the cylinder
|
|
40
|
+
// axis; the seam falls on the -X side (the atan2 wrap at ±π). No height:
|
|
41
|
+
// auto-fit maps the can's full height to the image once.
|
|
42
|
+
const can = cylinder(55, 20)
|
|
43
|
+
.translate(-70, 0, 0)
|
|
44
|
+
.wrapTexture(art, Wrap.aroundCylinder({ axis: "z" }));
|
|
45
|
+
|
|
46
|
+
// 3. ONTO A SPHERE — longitude/latitude mapping, like a globe. Auto-fit centers
|
|
47
|
+
// the projection on the sphere wherever it sits.
|
|
48
|
+
const globe = sphere(26)
|
|
49
|
+
.translate(0, 0, 26)
|
|
50
|
+
.wrapTexture(art, Wrap.onSphere());
|
|
51
|
+
|
|
52
|
+
// 4. BOX (cube-map) — the dominant face axis picks one of three planar maps, so
|
|
53
|
+
// each of the six sides shows one copy of the image. No size: auto-fit reads
|
|
54
|
+
// the box extent.
|
|
55
|
+
const crate = box(40, 40, 40)
|
|
56
|
+
.translate(70, 0, 20)
|
|
57
|
+
.wrapTexture(art, Wrap.box());
|
|
58
|
+
|
|
59
|
+
// 5. BOOLEAN-SAFE — position the plate, texture it (auto-fit over the solid
|
|
60
|
+
// plate), THEN subtract a bore. The image keeps flowing across the top and
|
|
61
|
+
// around the freshly-cut hole because the UV is re-derived from world position
|
|
62
|
+
// every frame, not baked into the original mesh. (Texture-then-cut, no
|
|
63
|
+
// translate after — the world-space UV must be locked before the boolean.)
|
|
64
|
+
const bored = box(50, 50, 16)
|
|
65
|
+
.translate(140, 0, 8)
|
|
66
|
+
.wrapTexture(art, Wrap.flat({ onto: "top", repeat: [tile, tile] }))
|
|
67
|
+
.subtract(cylinder(40, 12).translate(140, 0, -12)); // through-hole, centered on the plate
|
|
68
|
+
|
|
69
|
+
return [
|
|
70
|
+
{ name: "Flat (plate top)", shape: plate },
|
|
71
|
+
{ name: "Cylinder (label)", shape: can },
|
|
72
|
+
{ name: "Sphere (globe)", shape: globe },
|
|
73
|
+
{ name: "Box (cube-map)", shape: crate },
|
|
74
|
+
{ name: "Boolean-safe (bored)", shape: bored },
|
|
75
|
+
];
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,49 +0,0 @@
|
|
|
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-spec-by-walking-through-it` |
|
|
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.
|
|
@@ -1,53 +0,0 @@
|
|
|
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.
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-reconstruction-benchmark/SKILL.md instead. -->
|
|
2
|
-
|
|
3
|
-
# forgecad-reconstruction-benchmark
|
|
4
|
-
|
|
5
|
-
Solve ForgeCAD CAD reconstruction benchmark or RL episodes in a prepared workspace by rebuilding a visible reference asset as readable parametric ForgeCAD in the fixed submission path, using visual and geometric self-checks while respecting sandbox limits.
|
|
6
|
-
|
|
7
|
-
| Field | Value |
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| Installed by | `forgecad skill install` |
|
|
10
|
-
| Source | `agent-skill-library/forgecad-reconstruction-benchmark/SKILL.md` |
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## ForgeCAD Reconstruction Benchmark
|
|
15
|
-
|
|
16
|
-
Benchmark adaptation of `forgecad-3d-reconstruction`: same reconstruction loop, but with a fixed submission path, a local CLI wrapper, sandbox limits, and a short wall-clock budget. This sheet owns only those deltas — follow `forgecad-3d-reconstruction` for the reconstruction craft.
|
|
17
|
-
|
|
18
|
-
### Workspace
|
|
19
|
-
|
|
20
|
-
Read first: `AGENTS.md`, `task/instructions.md`, this skill, and `agent-home/.agents/skills/forgecad/SKILL.md` (API + CLI reference).
|
|
21
|
-
|
|
22
|
-
- Reference asset (evidence only): `task/reference/*`
|
|
23
|
-
- Final answer: `submission/main.forge.js`, unless `task/task.json` overrides
|
|
24
|
-
- CLI: the local wrapper `./bin/forgecad`, never global commands
|
|
25
|
-
- Scratch renders/notes: `outputs/`
|
|
26
|
-
- Stay inside the prepared workspace.
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
./bin/forgecad run submission/main.forge.js
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### Rules and Done Criteria
|
|
33
|
-
|
|
34
|
-
- Deliverable is readable parametric ForgeCAD source at the required submission path. A clean parametric approximation beats an unreadable mesh mimic.
|
|
35
|
-
- The final source must not call `Import.mesh`, `Import.step`, `importMesh`, `importStep`, `readFile`, `readFileSync`, or any equivalent asset-embedding trick, and must contain no `compareWith(...)`, external reference paths, base64 payloads, or debug probes.
|
|
36
|
-
- Sandbox: allowed local tools only — no web search, no broad home-directory access, no subagents, no remote services.
|
|
37
|
-
- Before exit: the run command above succeeds; visual/section evidence checked after the last meaningful edit; model recognizable against the reference from the main views.
|
|
38
|
-
|
|
39
|
-
### Budget Discipline
|
|
40
|
-
|
|
41
|
-
A runnable first candidate beats a perfect investigation with no model.
|
|
42
|
-
|
|
43
|
-
1. Run the starter submission once before editing so syntax/runtime problems surface early.
|
|
44
|
-
2. Inspect only the highest-value reference evidence: dimensions, volume, object count, one visual or sectional view. If a reference render/inspect command fails or stalls, continue from task instructions, filename, starter code, and mechanical inference — do not burn the budget retrying.
|
|
45
|
-
3. Write a short reconstruction brief in `outputs/brief.md` (fields per `forgecad-3d-reconstruction`).
|
|
46
|
-
4. Edit the submission early: coarse bbox, orientation, and main masses first, then iterate coarse-to-fine per `forgecad-3d-reconstruction`.
|
|
47
|
-
5. 3MF references: the `forgecad run` source-structure table is evidence — account for every substantial 3MF item in the reconstruction (the final model may be one part or many).
|
|
48
|
-
6. `inspect section` probes are replayable against the candidate via `inspect replay` — the cheap way to verify an exact local measurement transfers. Mechanics: `forgecad-render-inspect`.
|
|
49
|
-
|
|
50
|
-
### Pointers
|
|
51
|
-
|
|
52
|
-
- `forgecad-3d-reconstruction` — the evidence → brief → coarse → fine loop and metric diagnosis
|
|
53
|
-
- `forgecad-render-inspect` — inspection bundles, section probes, replay
|
|
54
|
-
- forgecad skill at `agent-home/.agents/skills/forgecad/` — API and CLI syntax
|
|
55
|
-
- `forgecad-make-a-model` — general quality patterns only; its date-based file-placement workflow does not apply in benchmark workspaces
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
## Bundled Files
|
|
59
|
-
|
|
60
|
-
- `agents/openai.yaml`
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: forgecad-blockout-model
|
|
3
|
-
description: 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.
|
|
4
|
-
forgecad-public: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Block Out a Model
|
|
8
|
-
|
|
9
|
-
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.
|
|
10
|
-
|
|
11
|
-
| Need | Skill |
|
|
12
|
-
|------|-------|
|
|
13
|
-
| High-level 3D idea using simple masses | `forgecad-blockout-model` |
|
|
14
|
-
| Written concept or architecture before CAD | `forgecad-spec-by-walking-through-it` |
|
|
15
|
-
| Accurate, detailed, parametric ForgeCAD model | `forgecad-make-a-model` |
|
|
16
|
-
|
|
17
|
-
## Method
|
|
18
|
-
|
|
19
|
-
- Load the `forgecad` skill first; read its Core API and CLI docs. Load nothing else unless the concept demands it.
|
|
20
|
-
- Translate the idea into 3-7 conceptual parts BEFORE writing geometry: masses and zones (base, arm, payload, sweep volume, keep-out, hand access).
|
|
21
|
-
- 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.
|
|
22
|
-
- Use round-number dimensions; "believably shaped" beats numerically correct. Name uncertainty honestly: `armLengthGuess`, `baseWidthApprox`, `clearanceEnvelope`.
|
|
23
|
-
- At most a handful of `param()` values, for comparing proportions. Do not parameterize every dimension.
|
|
24
|
-
- 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.
|
|
25
|
-
- 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.
|
|
26
|
-
- 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).
|
|
27
|
-
- Leave out: fasteners and screw holes, wall thicknesses, fillets and blend radii, polished materials, hidden internal structure that does not affect the concept.
|
|
28
|
-
|
|
29
|
-
## Verify
|
|
30
|
-
|
|
31
|
-
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:
|
|
32
|
-
|
|
33
|
-
- Can someone unfamiliar with the idea tell what each mass represents?
|
|
34
|
-
- Are proportions believable enough to discuss?
|
|
35
|
-
- Is motion or interference visible where it matters?
|
|
36
|
-
- Are unknowns shown honestly, not hidden behind fake detail?
|
|
37
|
-
|
|
38
|
-
If any answer is no, simplify or add clearer ghost volumes.
|
|
39
|
-
|
|
40
|
-
## Handoff
|
|
41
|
-
|
|
42
|
-
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.
|