forgecad 0.10.3 → 0.10.5
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-raksfnNA.js} +1 -1
- package/dist/assets/{BenchmarkPage-Ds7Z2doN.js → BenchmarkPage-DP3RxhPs.js} +2 -2
- package/dist/assets/{BlogPage-DlPbpt6A.js → BlogPage-D7Dos-vl.js} +1 -1
- package/dist/assets/{DocsPage-vZb3b3Y0.js → DocsPage-DO1kvBns.js} +34 -43
- package/dist/assets/{EditorApp-HLoKfe15.js → EditorApp-DQJmcmRT.js} +51 -17
- package/dist/assets/{EmbedViewer--KnqBKrJ.js → EmbedViewer-DFDUhOma.js} +2 -2
- package/dist/assets/{LandingPageProofDriven-C_LssmnA.js → LandingPageProofDriven-DbE_tp8-.js} +54 -36
- package/dist/assets/{LegalPage-DGsyo4n1.js → LegalPage-CominSso.js} +2 -2
- package/dist/assets/{PricingPage-BOE27B-R.js → PricingPage-CcVIN9yj.js} +2 -2
- package/dist/assets/{SettingsPage-f47cnk39.js → SettingsPage-DLWcP289.js} +1 -1
- package/dist/assets/{app-D6ccu2Xx.js → app-xW3hOdq9.js} +1343 -4004
- package/dist/assets/{backendInit-DbTkQN9J.js → backendInit-mDHk97u7.js} +12346 -3803
- package/dist/assets/cli/{render-BsngirjC.js → render--SIU27W_.js} +1909 -146
- package/dist/assets/{constructionHistoryWorker-PCwXrTDB.js → constructionHistoryWorker-uEe_Q7Kg.js} +2362 -835
- package/dist/assets/{evalWorker-CS63PfZu.js → evalWorker-BqyDHDcI.js} +7755 -3127
- package/dist/assets/{forgecad_geometry-CZ_IfuvA.js → forgecad_geometry-D8rWX7nQ.js} +1 -1
- package/dist/assets/{forgecad_geometry_bg-C3rQHfwg.wasm → forgecad_geometry_bg-ObqfqjJT.wasm} +0 -0
- package/dist/assets/{inspectWorker-Y4cOzNyA.js → inspectWorker-UXMxlcR8.js} +6550 -2943
- package/dist/assets/{jointPose-AMvCywzS.js → jointPose-bYMlwU3v.js} +1 -1
- package/dist/assets/{landing-proof-driven-ORyigZ6p.css → landing-proof-driven-_u4v_xQb.css} +71 -11
- package/dist/assets/{manifold-Crd_F2qx.js → manifold-BR7UYI4P.js} +1 -1
- package/dist/assets/{manifold-CBry38ly.js → manifold-CyOV5B9S.js} +2 -2
- package/dist/assets/{manifold-k2kRcc85.js → manifold-D4d5NQst.js} +1 -1
- package/dist/assets/{reportWorker-CWvn0CEv.js → reportWorker-DsaICZsn.js} +7320 -2827
- 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/CLI.md +4 -2
- package/dist/docs-raw/component-model.md +2 -2
- package/dist/docs-raw/generated/assembly.md +76 -3
- package/dist/docs-raw/generated/concepts.md +36 -5
- package/dist/docs-raw/generated/core.md +185 -21
- package/dist/docs-raw/generated/curves.md +344 -6
- package/dist/docs-raw/generated/runtime-names.md +12 -12
- package/dist/docs-raw/generated/sketch.md +16 -3
- package/dist/docs-raw/guides/inspection-bundles.md +5 -3
- package/dist/docs-raw/guides/structural-fea.md +224 -0
- 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/forgecad.md +1 -0
- 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-7YAHVXYM.js} +1 -1
- package/dist-cli/{check-query-propagation-HYSLTXAB.js → check-query-propagation-ZRR6IOJW.js} +1 -1
- package/dist-cli/{chunk-WLUKAW3H.js → chunk-VNM67DIV.js} +29671 -24865
- package/dist-cli/forgecad.js +5906 -714
- package/dist-cli/forgecad_geometry_bg.wasm +0 -0
- package/dist-skill/CONTEXT.md +853 -45
- package/dist-skill/SKILL.md +1 -0
- package/dist-skill/docs/CLI.md +4 -2
- package/dist-skill/docs/generated/assembly.md +73 -3
- package/dist-skill/docs/generated/core.md +185 -21
- package/dist-skill/docs/generated/curves.md +343 -6
- package/dist-skill/docs/generated/runtime-names.md +12 -12
- package/dist-skill/docs/generated/sketch.md +16 -3
- package/dist-skill/docs/guides/inspection-bundles.md +5 -3
- package/dist-skill/docs/guides/structural-fea.md +224 -0
- 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/forgecad.md +1 -0
- package/dist-skill/website/skills/index.md +9 -12
- package/examples/analysis/structural-stress-fea.forge.js +19 -0
- package/examples/api/blend-full-round.forge.js +37 -0
- package/examples/api/blend-variable-radius.forge.js +51 -0
- package/examples/api/curve-project-and-intersect.forge.js +59 -0
- package/examples/api/extrude-up-to-face.forge.js +47 -0
- package/examples/api/spoon-full-tang-handle.forge.js +148 -0
- package/examples/api/surface-boundarynet-dished-bowl.forge.js +63 -0
- package/examples/api/surface-fill-interior-constraints.forge.js +59 -0
- package/examples/api/texture-projection.forge.js +75 -0
- package/examples/assets/uv-grid.png +0 -0
- package/package.json +4 -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-DNPRKL_p.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,46 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: forgecad-component-model
|
|
3
|
-
description: "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."
|
|
4
|
-
forgecad-public: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Component Model
|
|
8
|
-
|
|
9
|
-
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.
|
|
10
|
-
|
|
11
|
-
## Rules
|
|
12
|
-
|
|
13
|
-
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.
|
|
14
|
-
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`.
|
|
15
|
-
3. **Assembly is pure composition.** Zero `translate()` to position structural parts, zero coordinate math — connect connectors, pass props down, read metadata up.
|
|
16
|
-
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.
|
|
17
|
-
5. **Validate with `verify.*`, never `console.log` + `if`.**
|
|
18
|
-
|
|
19
|
-
## Part return shape
|
|
20
|
-
|
|
21
|
-
```js
|
|
22
|
-
return { shape, boltPattern, pinionZ }; // shape + metadata the parent may route to siblings
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## File structure
|
|
26
|
-
|
|
27
|
-
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".
|
|
28
|
-
|
|
29
|
-
## Anti-patterns (reject on review)
|
|
30
|
-
|
|
31
|
-
- `shared-dims.js` — a file that only computes derived dimensions; the assembly derives and passes them.
|
|
32
|
-
- Sibling `require()` — e.g. `require('./motor-mount.forge.js')` inside `cover-plate.forge.js`; route through the parent.
|
|
33
|
-
- Assembly-space coordinates inside a part — a part knowing `pinionZ = 14` from a sibling's geometry; receive it as a prop.
|
|
34
|
-
- `translate()` to position a structural part in an assembly — add a connector instead.
|
|
35
|
-
- `console.log` + `if` validation — use `verify.*`.
|
|
36
|
-
- Bare `connector.neutral()` outside a reusable component library with compatibility checking.
|
|
37
|
-
|
|
38
|
-
## Design gate
|
|
39
|
-
|
|
40
|
-
Before committing any multi-part assembly:
|
|
41
|
-
|
|
42
|
-
1. Can you understand each part without reading other files?
|
|
43
|
-
2. Does the assembly contain zero coordinate math?
|
|
44
|
-
3. Do all inter-part relationships flow through connectors and props?
|
|
45
|
-
|
|
46
|
-
If any answer is no, refactor.
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: forgecad-reconstruction-benchmark
|
|
3
|
-
description: 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.
|
|
4
|
-
forgecad-public: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# ForgeCAD Reconstruction Benchmark
|
|
8
|
-
|
|
9
|
-
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.
|
|
10
|
-
|
|
11
|
-
## Workspace
|
|
12
|
-
|
|
13
|
-
Read first: `AGENTS.md`, `task/instructions.md`, this skill, and `agent-home/.agents/skills/forgecad/SKILL.md` (API + CLI reference).
|
|
14
|
-
|
|
15
|
-
- Reference asset (evidence only): `task/reference/*`
|
|
16
|
-
- Final answer: `submission/main.forge.js`, unless `task/task.json` overrides
|
|
17
|
-
- CLI: the local wrapper `./bin/forgecad`, never global commands
|
|
18
|
-
- Scratch renders/notes: `outputs/`
|
|
19
|
-
- Stay inside the prepared workspace.
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
./bin/forgecad run submission/main.forge.js
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Rules and Done Criteria
|
|
26
|
-
|
|
27
|
-
- Deliverable is readable parametric ForgeCAD source at the required submission path. A clean parametric approximation beats an unreadable mesh mimic.
|
|
28
|
-
- 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.
|
|
29
|
-
- Sandbox: allowed local tools only — no web search, no broad home-directory access, no subagents, no remote services.
|
|
30
|
-
- 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.
|
|
31
|
-
|
|
32
|
-
## Budget Discipline
|
|
33
|
-
|
|
34
|
-
A runnable first candidate beats a perfect investigation with no model.
|
|
35
|
-
|
|
36
|
-
1. Run the starter submission once before editing so syntax/runtime problems surface early.
|
|
37
|
-
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.
|
|
38
|
-
3. Write a short reconstruction brief in `outputs/brief.md` (fields per `forgecad-3d-reconstruction`).
|
|
39
|
-
4. Edit the submission early: coarse bbox, orientation, and main masses first, then iterate coarse-to-fine per `forgecad-3d-reconstruction`.
|
|
40
|
-
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).
|
|
41
|
-
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`.
|
|
42
|
-
|
|
43
|
-
## Pointers
|
|
44
|
-
|
|
45
|
-
- `forgecad-3d-reconstruction` — the evidence → brief → coarse → fine loop and metric diagnosis
|
|
46
|
-
- `forgecad-render-inspect` — inspection bundles, section probes, replay
|
|
47
|
-
- forgecad skill at `agent-home/.agents/skills/forgecad/` — API and CLI syntax
|
|
48
|
-
- `forgecad-make-a-model` — general quality patterns only; its date-based file-placement workflow does not apply in benchmark workspaces
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "ForgeCAD Reconstruction Benchmark"
|
|
3
|
-
short_description: "Solve fixed-path CAD reconstruction tasks"
|
|
4
|
-
default_prompt: "Use $forgecad-reconstruction-benchmark to rebuild the reference CAD asset as readable parametric ForgeCAD in the required benchmark submission path."
|
|
@@ -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`
|
|
File without changes
|
|
File without changes
|
/package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/summarize_manifest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|