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.
Files changed (99) hide show
  1. package/dist/assets/{AdminPage-CK7ObBz3.js → AdminPage-B3L3W1Uo.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-Ds7Z2doN.js → BenchmarkPage-DXKVXMrJ.js} +2 -2
  3. package/dist/assets/{BlogPage-DlPbpt6A.js → BlogPage-B7BWxOCg.js} +1 -1
  4. package/dist/assets/{DocsPage-vZb3b3Y0.js → DocsPage-BPGGwht1.js} +28 -43
  5. package/dist/assets/{EditorApp-HLoKfe15.js → EditorApp-BWUGCdD5.js} +49 -16
  6. package/dist/assets/{EmbedViewer--KnqBKrJ.js → EmbedViewer-DygByZS2.js} +2 -2
  7. package/dist/assets/{LandingPageProofDriven-C_LssmnA.js → LandingPageProofDriven-BoVE7JGY.js} +54 -36
  8. package/dist/assets/{LegalPage-DGsyo4n1.js → LegalPage-Din8wv8d.js} +2 -2
  9. package/dist/assets/{PricingPage-BOE27B-R.js → PricingPage-C2PMzmDc.js} +2 -2
  10. package/dist/assets/{SettingsPage-f47cnk39.js → SettingsPage-BlJDCRe8.js} +1 -1
  11. package/dist/assets/{app-D6ccu2Xx.js → app-BsRYSfxY.js} +238 -3714
  12. package/dist/assets/{backendInit-DbTkQN9J.js → backendInit-6C0DLgH0.js} +5972 -1566
  13. package/dist/assets/cli/{render-BsngirjC.js → render-XXol_ET7.js} +724 -112
  14. package/dist/assets/{constructionHistoryWorker-PCwXrTDB.js → constructionHistoryWorker-cTHWRJEi.js} +528 -252
  15. package/dist/assets/{evalWorker-CS63PfZu.js → evalWorker-BssDYW9u.js} +1453 -902
  16. package/dist/assets/{inspectWorker-Y4cOzNyA.js → inspectWorker-ymhBV4Ll.js} +2635 -1024
  17. package/dist/assets/{jointPose-AMvCywzS.js → jointPose-B0blBj9A.js} +1 -1
  18. package/dist/assets/{landing-proof-driven-ORyigZ6p.css → landing-proof-driven-Cpf-MIbI.css} +73 -13
  19. package/dist/assets/{manifold-Crd_F2qx.js → manifold-B_7QXpGB.js} +1 -1
  20. package/dist/assets/{manifold-k2kRcc85.js → manifold-CNShmpEJ.js} +1 -1
  21. package/dist/assets/{manifold-CBry38ly.js → manifold-CYlIm-M6.js} +2 -2
  22. package/dist/assets/{reportWorker-CWvn0CEv.js → reportWorker-Cb5eyM7D.js} +1407 -892
  23. package/dist/cli/render.html +1 -1
  24. package/dist/docs/index.html +2 -2
  25. package/dist/docs-raw/AI/usage.md +17 -15
  26. package/dist/docs-raw/component-model.md +2 -2
  27. package/dist/docs-raw/generated/concepts.md +5 -1
  28. package/dist/docs-raw/generated/core.md +26 -0
  29. package/dist/docs-raw/generated/runtime-names.md +1 -1
  30. package/dist/docs-raw/guides/inspection-bundles.md +1 -1
  31. package/dist/docs-raw/simulation-workflow.md +1 -1
  32. package/dist/docs-raw/skills/{forgecad-make-a-model.md → forgecad-build-model.md} +18 -8
  33. package/dist/docs-raw/skills/{forgecad-spec-by-walking-through-it.md → forgecad-design-spec.md} +6 -6
  34. package/dist/docs-raw/skills/{forgecad-model-grader.md → forgecad-grade-model.md} +8 -6
  35. package/{dist-skill/website/skills/forgecad-visual-spec.md → dist/docs-raw/skills/forgecad-image-prompt.md} +7 -7
  36. package/dist/docs-raw/skills/{forgecad-render-inspect.md → forgecad-inspect-model.md} +6 -6
  37. package/{dist-skill/website/skills/forgecad-project.md → dist/docs-raw/skills/forgecad-project-sync.md} +5 -5
  38. package/dist/docs-raw/skills/{forgecad-3d-reconstruction.md → forgecad-reconstruct-cad-file.md} +7 -7
  39. package/dist/docs-raw/skills/{forgecad-image-replicator.md → forgecad-reconstruct-from-images.md} +12 -12
  40. package/dist/docs-raw/skills/{forgecad-mujoco-verify.md → forgecad-verify-mujoco.md} +6 -6
  41. package/dist/docs-raw/skills/index.md +9 -12
  42. package/dist/index.html +9 -9
  43. package/dist/llms.txt +7 -7
  44. package/dist/sitemap.xml +16 -16
  45. package/dist-cli/{check-compiler-HPF2T2FS.js → check-compiler-4RPB6SB5.js} +1 -1
  46. package/dist-cli/{check-query-propagation-HYSLTXAB.js → check-query-propagation-KN3DFQTX.js} +1 -1
  47. package/dist-cli/{chunk-WLUKAW3H.js → chunk-UHBRMYA6.js} +28802 -28152
  48. package/dist-cli/forgecad.js +660 -9
  49. package/dist-skill/CONTEXT.md +27 -1
  50. package/dist-skill/docs/generated/core.md +26 -0
  51. package/dist-skill/docs/generated/runtime-names.md +1 -1
  52. package/dist-skill/docs/guides/inspection-bundles.md +1 -1
  53. package/dist-skill/library/README.md +9 -12
  54. package/dist-skill/library/{forgecad-make-a-model → forgecad-build-model}/SKILL.md +16 -6
  55. package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/SKILL.md +4 -4
  56. package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/references/master-prompt.md +1 -1
  57. package/dist-skill/library/{forgecad-model-grader → forgecad-grade-model}/SKILL.md +6 -4
  58. package/dist-skill/library/forgecad-grade-model/agents/openai.yaml +4 -0
  59. package/dist-skill/library/{forgecad-visual-spec → forgecad-image-prompt}/SKILL.md +5 -5
  60. package/dist-skill/library/forgecad-image-prompt/agents/openai.yaml +4 -0
  61. package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/SKILL.md +4 -4
  62. package/dist-skill/library/{forgecad-project → forgecad-project-sync}/SKILL.md +3 -3
  63. package/dist-skill/library/{forgecad-3d-reconstruction → forgecad-reconstruct-cad-file}/SKILL.md +5 -5
  64. package/dist-skill/library/forgecad-reconstruct-cad-file/agents/openai.yaml +4 -0
  65. package/dist-skill/library/{forgecad-image-replicator → forgecad-reconstruct-from-images}/SKILL.md +10 -10
  66. package/dist-skill/library/forgecad-reconstruct-from-images/agents/openai.yaml +4 -0
  67. package/dist-skill/library/{forgecad-mujoco-verify → forgecad-verify-mujoco}/SKILL.md +4 -4
  68. package/dist-skill/website/skills/{forgecad-make-a-model.md → forgecad-build-model.md} +18 -8
  69. package/dist-skill/website/skills/{forgecad-spec-by-walking-through-it.md → forgecad-design-spec.md} +6 -6
  70. package/dist-skill/website/skills/{forgecad-model-grader.md → forgecad-grade-model.md} +8 -6
  71. package/{dist/docs-raw/skills/forgecad-visual-spec.md → dist-skill/website/skills/forgecad-image-prompt.md} +7 -7
  72. package/dist-skill/website/skills/{forgecad-render-inspect.md → forgecad-inspect-model.md} +6 -6
  73. package/{dist/docs-raw/skills/forgecad-project.md → dist-skill/website/skills/forgecad-project-sync.md} +5 -5
  74. package/dist-skill/website/skills/{forgecad-3d-reconstruction.md → forgecad-reconstruct-cad-file.md} +7 -7
  75. package/dist-skill/website/skills/{forgecad-image-replicator.md → forgecad-reconstruct-from-images.md} +12 -12
  76. package/dist-skill/website/skills/{forgecad-mujoco-verify.md → forgecad-verify-mujoco.md} +6 -6
  77. package/dist-skill/website/skills/index.md +9 -12
  78. package/examples/api/texture-projection.forge.js +75 -0
  79. package/examples/assets/uv-grid.png +0 -0
  80. package/package.json +1 -1
  81. package/dist/docs-raw/skills/forgecad-blockout-model.md +0 -49
  82. package/dist/docs-raw/skills/forgecad-component-model.md +0 -53
  83. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +0 -60
  84. package/dist-skill/library/forgecad-3d-reconstruction/agents/openai.yaml +0 -4
  85. package/dist-skill/library/forgecad-blockout-model/SKILL.md +0 -42
  86. package/dist-skill/library/forgecad-component-model/SKILL.md +0 -46
  87. package/dist-skill/library/forgecad-image-replicator/agents/openai.yaml +0 -4
  88. package/dist-skill/library/forgecad-model-grader/agents/openai.yaml +0 -4
  89. package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +0 -48
  90. package/dist-skill/library/forgecad-reconstruction-benchmark/agents/openai.yaml +0 -4
  91. package/dist-skill/library/forgecad-visual-spec/agents/openai.yaml +0 -4
  92. package/dist-skill/website/skills/forgecad-blockout-model.md +0 -49
  93. package/dist-skill/website/skills/forgecad-component-model.md +0 -53
  94. package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +0 -60
  95. /package/dist/assets/{landing-proof-driven-DiGqdtWa.js → landing-proof-driven-BxZZh5r5.js} +0 -0
  96. /package/dist-skill/library/{forgecad-spec-by-walking-through-it → forgecad-design-spec}/references/default-profiles.md +0 -0
  97. /package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/summarize_manifest.py +0 -0
  98. /package/dist-skill/library/{forgecad-image-replicator → forgecad-reconstruct-from-images}/scripts/compare_images.py +0 -0
  99. /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-grader/SKILL.md instead. -->
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-grader
3
+ # forgecad-grade-model
4
4
 
5
- Analyze, verify, and grade ForgeCAD or CAD-as-code models against a user requirement, design brief, prompt, reference, or acceptance criteria. Use when asked to evaluate, judge, QA, benchmark, score, rate, or compare a CAD model; render it from multiple angles, run targeted inspections when needed, visually verify the evidence, and produce a 0-10 score with concise justification.
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-grader/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-grade-model/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Model Grader
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-render-inspect` skill. Findings (unexpected collisions, thin regions, floating bodies, wrong component counts) are evidence, not warnings to wave away.
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-visual-spec/SKILL.md instead. -->
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-visual-spec
3
+ # forgecad-image-prompt
4
4
 
5
- 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.
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-visual-spec/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-image-prompt/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Visual Spec
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-by-walking-through-it` 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.
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
- 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.
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-render-inspect/SKILL.md instead. -->
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-render-inspect
3
+ # forgecad-inspect-model
4
4
 
5
- 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.
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-render-inspect/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-inspect-model/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Render Inspect
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-make-a-model`.
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 CLI workflow creating, managing, syncing projects and files on forgecad.io. Covers init, push, pull, file operations, member management, publishing, and sharing.
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
- ## ForgeCAD Project Operating Rules
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
 
@@ -1,21 +1,21 @@
1
- <!-- Generated by scripts/build-forgecad-skill.mjs — do not edit. Edit agent-skill-library/forgecad-3d-reconstruction/SKILL.md instead. -->
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-3d-reconstruction
3
+ # forgecad-reconstruct-cad-file
4
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`.
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-3d-reconstruction/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-reconstruct-cad-file/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD 3D Reconstruction
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-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.
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-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.
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-image-replicator/SKILL.md instead. -->
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-image-replicator
3
+ # forgecad-reconstruct-from-images
4
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.
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-image-replicator/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-reconstruct-from-images/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD Image Replicator
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-by-walking-through-it` — 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.
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-by-walking-through-it` 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.
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-render-inspect`.
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-image-replicator` skill directory:
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-verify/SKILL.md instead. -->
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-verify
3
+ # forgecad-verify-mujoco
4
4
 
5
- Verify ForgeCAD MJCF exports in MuJoCo with real dynamics, contacts, root behavior, controls, required joint travel, and rendered evidence before calling a model simulation-ready. Use when making a ForgeCAD assembly sim-ready, debugging MJCF contacts, checking why a body falls through the floor, validating actuator motion, or proving a mechanism moved through the intended range.
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-verify/SKILL.md` |
10
+ | Source | `agent-skill-library/forgecad-verify-mujoco/SKILL.md` |
11
11
 
12
12
  ---
13
13
 
14
- ## ForgeCAD MuJoCo Verify
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-render-inspect`; model authoring/API questions -> `forgecad`; building a new model -> `forgecad-make-a-model`.
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-3d-reconstruction](/docs/skills/forgecad-3d-reconstruction) | `forgecad skill install` | 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`. |
15
- | [forgecad-blockout-model](/docs/skills/forgecad-blockout-model) | `forgecad skill install` | 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. |
16
- | [forgecad-component-model](/docs/skills/forgecad-component-model) | `forgecad skill install` | 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. |
17
- | [forgecad-image-replicator](/docs/skills/forgecad-image-replicator) | `forgecad skill install` | 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. |
18
- | [forgecad-make-a-model](/docs/skills/forgecad-make-a-model) | `forgecad skill install` | Create manufacture-realistic prototype ForgeCAD (.forge.js) models in the active CAD project. Handles file placement, invokes the forgecad skill for API guidance, and validates the result. |
19
- | [forgecad-model-grader](/docs/skills/forgecad-model-grader) | `forgecad skill install` | Analyze, verify, and grade ForgeCAD or CAD-as-code models against a user requirement, design brief, prompt, reference, or acceptance criteria. Use when asked to evaluate, judge, QA, benchmark, score, rate, or compare a CAD model; render it from multiple angles, run targeted inspections when needed, visually verify the evidence, and produce a 0-10 score with concise justification. |
20
- | [forgecad-mujoco-verify](/docs/skills/forgecad-mujoco-verify) | `forgecad skill install` | Verify ForgeCAD MJCF exports in MuJoCo with real dynamics, contacts, root behavior, controls, required joint travel, and rendered evidence before calling a model simulation-ready. Use when making a ForgeCAD assembly sim-ready, debugging MJCF contacts, checking why a body falls through the floor, validating actuator motion, or proving a mechanism moved through the intended range. |
21
- | [forgecad-project](/docs/skills/forgecad-project) | `forgecad skill install` | ForgeCAD project CLI workflow creating, managing, syncing projects and files on forgecad.io. Covers init, push, pull, file operations, member management, publishing, and sharing. |
22
- | [forgecad-reconstruction-benchmark](/docs/skills/forgecad-reconstruction-benchmark) | `forgecad skill install` | 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. |
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,6 +1,6 @@
1
1
  {
2
2
  "name": "forgecad",
3
- "version": "0.10.3",
3
+ "version": "0.10.4",
4
4
  "description": "Code-first parametric CAD for JavaScript/TypeScript, in the browser and CLI.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://forgecad.io",
@@ -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,4 +0,0 @@
1
- interface:
2
- display_name: "ForgeCAD 3D Reconstruction"
3
- short_description: "Rebuild CAD files as ForgeCAD models"
4
- default_prompt: "Use $forgecad-3d-reconstruction to inspect this 3D file, rebuild it as parametric ForgeCAD, and score the result against the source."
@@ -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.