{
  "schema": "cad-agent-catalog/1",
  "origin": "https://cad-agent.valpatel.com",
  "repo": "https://github.com/Valpatel/cad-agent",
  "revision": "a18801199d2aa7e6548fc4d0dbfa966f55ba962b",
  "built": "2026-10-31T13:52:57-07:00",
  "tagline": "Your one stop shop for agentic CAD",
  "description": "Mapping the best free resources, demonstrating their capabilities, and filling the gaps. Made for AI and people.",
  "items": [
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent build",
      "summary": "Run the configured build steps in order",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent build --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent export-3mf",
      "summary": "Write a bed-centred 3MF per part STL and verify it",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent export-3mf --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent holes",
      "summary": "Check every hole of every part (exports/<part>.step) is clear of material: ribs or bosses added after the holes",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent holes --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent check",
      "summary": "Collect check results; exit 1 if any fail",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent check --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent report",
      "summary": "Write results JSON + standalone HTML report",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent report --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent package",
      "summary": "Zip the review package with a sha256 manifest",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent package --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent release",
      "summary": "Write the print release: a browsable page of the parts (thumbnails, print settings) with CAD files and source, and a zip",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent release --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent serve",
      "summary": "Serve the project over http (Bambu Studio links)",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent serve --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent site",
      "summary": "Build the project site (progress, designs, decisions, docs)",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent site --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent view",
      "summary": "Export every part in assembly position for the 3D viewer",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent view --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent slice",
      "summary": "Slice each part's 3MF (Bambu Studio CLI): grams and print time",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent slice --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent webkit",
      "summary": "Copy the web kit (3D stage, viewer, HUD) into the project",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent webkit --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent pcb-check",
      "summary": "Bind KiCad ERC/DRC evidence to current PCB sources",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent pcb-check --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent all",
      "summary": "build, export-3mf, holes, gates and the dossier lint (when configured), check + report, package",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent all --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent motion-trace",
      "summary": "Validate rendered joint pivots against independent CAD landmarks",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent motion-trace --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent snapfit",
      "summary": "Size and check snap fits declared in a YAML/JSON file (docs/compliant.md)",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent snapfit --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent agents",
      "summary": "Install the agent workflow kit (skills and subagents) for Claude Code and Codex, or list what is installed (docs/agent-workflow.md)",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent agents --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent mcmaster",
      "summary": "Download McMaster-Carr STEP + product data per part number and normalise it (one page at a time; skills/mcmaster-parts/SKILL.md)",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent mcmaster --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent catalogue",
      "summary": "Check the part catalogue and the designs against it (cad: explore:, docs/explore.md)",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent catalogue --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent compare",
      "summary": "Evaluate the designs and rank them: comparison JSON, HTML page, site design cards",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent compare --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent optimise",
      "summary": "Search slots and parameters for the best trade-offs (cad: explore: search:)",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent optimise --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent dossier",
      "summary": "Lint the design dossier and write each item's status (exports/dossier-status.json)",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent dossier --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent gates",
      "summary": "Run the integrity gates on the dossier geometry: exports/gates/<gate>.json + .md",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent gates --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent review-packet",
      "summary": "Render each dossier section's review packet: exports/review/<section>/ + manifest.json",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent review-packet --help"
    },
    {
      "type": "tool",
      "status": "ours",
      "name": "cad-agent review-section",
      "summary": "Reviewer pass: write a section's reviewer bundle, or --submit a reviewer record",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "how": "cad-agent review-section --help"
    },
    {
      "type": "upstream",
      "status": "trial",
      "name": "earthtojake/text-to-cad",
      "url": "https://github.com/earthtojake/text-to-cad",
      "summary": "v0.7.26 2026-10-20; telemetry on by default; viewer loopback unauthenticated; PCB in open PR #518; v0.8.0 (2026-10-27) replaces the 0.7 pipeline with no compatibility layer (v0.8.4 on 10-30): pin 0.7.26 or 0.8.4 deliberately; telemetry still on by default; PR #518 closed unmerged",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 22951,
      "last_push": "2026-10-25"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "amagine-ai/Amagine3D",
      "url": "https://github.com/amagine-ai/Amagine3D",
      "summary": "enclosure around internal components from requirements; does not read KiCad",
      "policy": "may incorporate with attribution",
      "license": "Apache-2.0",
      "stars": 6259,
      "last_push": "2026-10-22"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "Adam-CAD/CADAM",
      "url": "https://github.com/Adam-CAD/CADAM",
      "summary": "GPL: external use only",
      "policy": "external program only (GPL-3.0)",
      "license": "GPL-3.0",
      "stars": 5328,
      "last_push": "2026-10-15"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "KittyCAD/modeling-app",
      "url": "https://github.com/KittyCAD/modeling-app",
      "summary": "text-to-CAD is a paid cloud API",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 1321,
      "last_push": "2026-10-25"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "Pan-Chera/Multi-Agent-CAD",
      "url": "https://github.com/Pan-Chera/Multi-Agent-CAD",
      "summary": "assembly generation is a technology preview",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 1048,
      "last_push": "2026-10-17"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "OzAILabs/Claude-To-Print",
      "url": "https://github.com/OzAILabs/Claude-To-Print",
      "summary": "adapted from MAC; GitHub shows NOASSERTION, LICENSE is MIT",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 4,
      "last_push": "2026-08-15"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "jdilla1277/agentcad",
      "url": "https://github.com/jdilla1277/agentcad",
      "summary": "pip install agentcad",
      "policy": "may incorporate with attribution",
      "license": "Apache-2.0",
      "stars": 173,
      "last_push": "2026-10-23"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "pzfreo/build123d-mcp",
      "url": "https://github.com/pzfreo/build123d-mcp",
      "summary": "may incorporate with attribution",
      "policy": "may incorporate with attribution",
      "license": "Apache-2.0",
      "stars": 130,
      "last_push": "2026-10-15"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "flowful-ai/cad-skill",
      "url": "https://github.com/flowful-ai/cad-skill",
      "summary": "non-commercial licence: do not incorporate",
      "policy": "ideas only (PolyForm Noncommercial)",
      "license": "PolyForm-Noncommercial-1.0.0",
      "stars": 692,
      "last_push": "2026-07-14"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "Svetlana-DAO-LLC/cad-agent",
      "url": "https://github.com/Svetlana-DAO-LLC/cad-agent",
      "summary": "formerly clawd-maf/cad-agent; custom licence",
      "policy": "ideas only (custom licence)",
      "license": "LicenseRef-CAD-Agent-License",
      "stars": 53,
      "last_push": "2026-02-17"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "MikeSuiter/claude-build123d-starter",
      "url": "https://github.com/MikeSuiter/claude-build123d-starter",
      "summary": "starter template",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 1,
      "last_push": "2026-06-08"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "neka-nat/freecad-mcp",
      "url": "https://github.com/neka-nat/freecad-mcp",
      "summary": "executes code inside FreeCAD",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 3040,
      "last_push": "2026-10-25"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "jhacksman/OpenSCAD-MCP-Server",
      "url": "https://github.com/jhacksman/OpenSCAD-MCP-Server",
      "summary": "may incorporate with attribution",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 208,
      "last_push": "2026-09-07"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "RobertCoop/openscad-mcp",
      "url": "https://github.com/RobertCoop/openscad-mcp",
      "summary": "may incorporate with attribution",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 164,
      "last_push": "2026-09-10"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "altendky/onshape-mcp",
      "url": "https://github.com/altendky/onshape-mcp",
      "summary": "may incorporate with attribution",
      "policy": "may incorporate with attribution",
      "license": "Apache-2.0",
      "stars": 20,
      "last_push": "2026-10-24"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "faust-machines/fusion360-mcp-server",
      "url": "https://github.com/faust-machines/fusion360-mcp-server",
      "summary": "may incorporate with attribution",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 131,
      "last_push": "2026-10-06"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "ahujasid/mcp-for-blender",
      "url": "https://github.com/ahujasid/mcp-for-blender",
      "summary": "execute_blender_code; telemetry with disable tool",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 32261,
      "last_push": "2026-10-24"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "mixelpixx/KiCAD-MCP-Server",
      "url": "https://github.com/mixelpixx/KiCAD-MCP-Server",
      "summary": "244 tools registered; runtime dep pymupdf (AGPL); new work moved to Konnect",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 2933,
      "last_push": "2026-10-01"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "mixelpixx/Konnect",
      "url": "https://github.com/mixelpixx/Konnect",
      "summary": "obhox/kicad-mcp is a fork (8 stars, AGPL-3.0); external use only",
      "policy": "external program only (AGPL-3.0)",
      "license": "AGPL-3.0",
      "stars": 1399,
      "last_push": "2026-10-25"
    },
    {
      "type": "upstream",
      "status": "trial",
      "name": "oaslananka/kicad-mcp-pro",
      "url": "https://github.com/oaslananka/kicad-mcp-pro",
      "summary": "387 tools; default profile 24 read-only; telemetry off by default; shipped .mcp.json unpinned",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 149,
      "last_push": "2026-10-25"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "Seeed-Studio/kicad-mcp-server",
      "url": "https://github.com/Seeed-Studio/kicad-mcp-server",
      "summary": "ideas only (no LICENSE file)",
      "policy": "ideas only (no LICENSE file)",
      "license": "none",
      "stars": 168,
      "last_push": "2026-10-22"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "lamaalrajih/kicad-mcp",
      "url": "https://github.com/lamaalrajih/kicad-mcp",
      "summary": "stale",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 529,
      "last_push": "2025-10-17"
    },
    {
      "type": "upstream",
      "status": "trial",
      "name": "aklofas/kicad-happy",
      "url": "https://github.com/aklofas/kicad-happy",
      "summary": "plugin.json has no hooks",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 1499,
      "last_push": "2026-10-25"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "American-Embedded/kistack",
      "url": "https://github.com/American-Embedded/kistack",
      "summary": "GitHub shows NOASSERTION; LICENSE text is MIT",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 411,
      "last_push": "2026-10-24"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "i2cjak/Backplane",
      "url": "https://github.com/i2cjak/Backplane",
      "summary": "install via curl | sh; ships a KiCad fork (GPL)",
      "policy": "may incorporate with attribution",
      "license": "MIT",
      "stars": 731,
      "last_push": "2026-10-25"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "copperheadhq/copperhead",
      "url": "https://github.com/copperheadhq/copperhead",
      "summary": "early",
      "policy": "may incorporate with attribution",
      "license": "Apache-2.0",
      "stars": 627,
      "last_push": "2026-10-24"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "punkfab/circuit-skills",
      "url": "https://github.com/punkfab/circuit-skills",
      "summary": "ideas only (no licence)",
      "policy": "ideas only (no licence)",
      "license": "none",
      "stars": 10,
      "last_push": "2026-10-06"
    },
    {
      "type": "upstream",
      "status": "adopted",
      "name": "OpenFOAM (OpenCFD v2512)",
      "url": "https://develop.openfoam.com/Development/openfoam",
      "summary": "external program only (GPL-3.0); run in the opencfd/openfoam-default Docker image",
      "policy": "external program only (GPL-3.0); run in the opencfd/openfoam-default Docker image",
      "license": "GPL-3.0",
      "last_push": "2026-01-23"
    },
    {
      "type": "upstream",
      "status": "adopted",
      "name": "aatmdelissen/pyMOTO",
      "url": "https://github.com/aatmdelissen/pyMOTO",
      "summary": "may incorporate with attribution (imported as a dependency)",
      "policy": "may incorporate with attribution (imported as a dependency)",
      "license": "MIT",
      "last_push": "2026-05-01"
    },
    {
      "type": "upstream",
      "status": "adopted",
      "name": "pyvista/pyvista",
      "url": "https://github.com/pyvista/pyvista",
      "summary": "may incorporate with attribution (imported as a dependency)",
      "policy": "may incorporate with attribution (imported as a dependency)",
      "license": "MIT"
    },
    {
      "type": "upstream",
      "status": "adopted",
      "name": "bambulab/BambuStudio",
      "url": "https://github.com/bambulab/BambuStudio",
      "summary": "external program only (AGPL-3.0); command-line slicing for filament grams",
      "policy": "external program only (AGPL-3.0); command-line slicing for filament grams",
      "license": "AGPL-3.0"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "optuna/optuna",
      "url": "https://github.com/optuna/optuna",
      "summary": "may incorporate with attribution; driver for multi-objective parameter studies",
      "policy": "may incorporate with attribution; driver for multi-objective parameter studies",
      "license": "MIT"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "OrcaSlicer/OrcaSlicer",
      "url": "https://github.com/OrcaSlicer/OrcaSlicer",
      "summary": "2.5 MCP server + Design (CAD) tab; loopback only; needs the GUI running",
      "policy": "external program only (AGPL-3.0); built-in MCP server in 2.5.0 (beta 2026-10-27): adopt as an external process once stable",
      "license": "AGPL-3.0",
      "stars": 16253,
      "last_push": "2026-10-31"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "OrcaSlicer/orcaslicer-mcp-skills",
      "url": "https://github.com/OrcaSlicer/orcaslicer-mcp-skills",
      "summary": "official Claude Code / Codex skills for the Orca MCP server; no code",
      "policy": "install as a plugin with Orca 2.5; never copy its text (AGPL-3.0)",
      "license": "AGPL-3.0",
      "stars": 2,
      "last_push": "2026-10-29"
    },
    {
      "type": "upstream",
      "status": "rejected",
      "name": "MaxEllis/orcaslicer-mcp",
      "url": "https://github.com/MaxEllis/orcaslicer-mcp",
      "summary": "third-party Orca MCP",
      "policy": "superseded by Orca's built-in MCP server",
      "license": "AGPL-3.0",
      "stars": 86,
      "last_push": "2026-10-12"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "KD5RYN/b123d-print",
      "url": "https://github.com/KD5RYN/b123d-print",
      "summary": "build123d print checks via MCP + CLI + plugin",
      "policy": "may incorporate with attribution: borrow the tip-over, round-top hole, bed-edge fillet and print-in-place gap checks (#97)",
      "license": "MIT",
      "stars": 2,
      "last_push": "2026-10-31"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "ballerabdude/agent-cad-works",
      "url": "https://github.com/ballerabdude/agent-cad-works",
      "summary": "build123d motion sweep, watertight/mid-air checks, Orca times, BOM",
      "policy": "may incorporate with attribution; ideas for motion sweeps and vendor-STEP fit",
      "license": "Apache-2.0",
      "stars": 1,
      "last_push": "2026-10-26"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "gjaloyan/print3d-designer",
      "url": "https://github.com/gjaloyan/print3d-designer",
      "summary": "skill: reference-photo silhouette IoU >= 0.92, G-code readback",
      "policy": "may incorporate with attribution; watch: reads sliced G-code back layer by layer",
      "license": "MIT",
      "stars": 1,
      "last_push": "2026-10-29"
    },
    {
      "type": "upstream",
      "status": "rejected",
      "name": "SiddhuYen/eitri",
      "url": "https://github.com/SiddhuYen/eitri",
      "summary": "local build123d agent with a geometry report; Functional Source License 1.1 (MIT after two years): ideas only",
      "policy": "ideas only: Functional Source License (non-compete; becomes MIT after two years)",
      "license": "FSL-1.1-MIT",
      "stars": 1,
      "last_push": "2026-10-31"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "pzfreo/specify-core",
      "url": "https://github.com/pzfreo/specify-core",
      "summary": "named feature changes, before/after pictures, volume/area/bbox per PR",
      "policy": "may incorporate with attribution; trial STEP diffs in PR reviews (with pzfreo/step-diff-demo)",
      "license": "Apache-2.0",
      "stars": 7,
      "last_push": "2026-10-31"
    },
    {
      "type": "upstream",
      "status": "rejected",
      "name": "heartland-eng/bd_hardware",
      "url": "https://github.com/heartland-eng/bd_hardware",
      "summary": "claims a build123d snap-fit feature library; no code yet",
      "policy": "ideas only (no licence, README only)",
      "license": "none",
      "stars": 0,
      "last_push": "2026-10-28"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "novasolver/novasolver-studio",
      "url": "https://github.com/novasolver/novasolver-studio",
      "summary": "local CAE with MCP: CalculiX, OpenFOAM; result gates incl. GCI mesh convergence",
      "policy": "external program only (GPL-3.0); copy the ran/converged/verified gate idea, not code",
      "license": "GPL-3.0",
      "stars": 1,
      "last_push": "2026-10-31"
    },
    {
      "type": "upstream",
      "status": "rejected",
      "name": "WifiLast/freecad-mcp",
      "url": "https://github.com/WifiLast/freecad-mcp",
      "summary": "FreeCAD FEM + topology optimisation over MCP",
      "policy": "ideas only (no licence); binds 0.0.0.0 by default",
      "license": "none",
      "stars": 0,
      "last_push": "2026-10-18"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "V0v1kkk/freecad-engineering",
      "url": "https://github.com/V0v1kkk/freecad-engineering",
      "summary": "skills: fdm-structural-review, mechanical-strength-review, freecad-fem-check",
      "policy": "may incorporate with attribution; ideas for the FDM structural review (#94)",
      "license": "MIT",
      "stars": 3,
      "last_push": "2026-08-12"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "n3r/AgentCAD",
      "url": "https://github.com/n3r/AgentCAD",
      "summary": "skills incl. snap-fits and fem-workflow; macOS-first",
      "policy": "may incorporate with attribution; snap-fits skill reviewed for #95 (prompt-only; some strain rows unsourced)",
      "license": "Apache-2.0",
      "stars": 7,
      "last_push": "2026-08-26"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "static74/3dp-compliant-mechanisms",
      "url": "https://github.com/static74/3dp-compliant-mechanisms",
      "summary": "FDM compliant-mechanism skill; prompt-only; candidate: take the selection table and evals with attribution after recomputing its strains",
      "policy": "may incorporate with attribution: the selection table and evals are the ideas to take for #94, after recomputing its strain values (about 2x the datasheet-derived ones); nothing vendored yet",
      "license": "MIT",
      "stars": 0,
      "last_push": "2026-10-26"
    },
    {
      "type": "upstream",
      "status": "rejected",
      "name": "MP-AI-20/mechanical-engineering-skills",
      "url": "https://github.com/MP-AI-20/mechanical-engineering-skills",
      "summary": "647 generic mechanical skills",
      "policy": "bulk-generated prompts with few primary citations",
      "license": "MIT",
      "stars": 10,
      "last_push": "2026-06-09"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "dwragon/Fusion360SnapFitGenerator",
      "url": "https://github.com/dwragon/Fusion360SnapFitGenerator",
      "summary": "5 snap types with strain and force calculation",
      "policy": "reference for parameters (MPL-2.0 file-level copyleft; Fusion add-in, not an agent tool)",
      "license": "MPL-2.0",
      "stars": 5,
      "last_push": "2026-10-29"
    },
    {
      "type": "upstream",
      "status": "rejected",
      "name": "Vivek-Boora/dfm-agent",
      "url": "https://github.com/Vivek-Boora/dfm-agent",
      "summary": "STEP moulding DFM analysis with a Three.js view",
      "policy": "ideas only (no licence): pull direction, core/cavity/undercut classes for the moulding checks",
      "license": "none",
      "stars": 0,
      "last_push": "2026-08-18"
    },
    {
      "type": "upstream",
      "status": "candidate",
      "name": "naman113/Designstudio",
      "url": "https://github.com/naman113/Designstudio",
      "summary": "\"Buildcore\": STEP to auto-dimensioned PDF drawings, grouped BOM, GLB viewer, parts catalogue (Docker, local port 8800)",
      "policy": "may incorporate with attribution; watch (STEP to auto-dimensioned PDF drawings, BOM, GLB viewer)",
      "license": "MIT",
      "stars": 8,
      "last_push": "2026-10-23"
    },
    {
      "type": "library",
      "status": "reference",
      "name": "gumyr/build123d",
      "url": "https://github.com/gumyr/build123d",
      "license": "Apache-2.0",
      "stars": 3519,
      "last_push": "2026-10-23",
      "summary": "Python B-rep CAD on OpenCascade, the builder-style successor to CadQuery; many agentic-CAD projects generate it"
    },
    {
      "type": "library",
      "status": "used",
      "name": "CadQuery/cadquery",
      "url": "https://github.com/CadQuery/cadquery",
      "license": "Apache-2.0",
      "stars": 5990,
      "last_push": "2026-10-24",
      "summary": "Python B-rep CAD on OpenCascade; the `cad` extra builds, measures and exports parts with it"
    },
    {
      "type": "library",
      "status": "reference",
      "name": "gumyr/bd_warehouse",
      "url": "https://github.com/gumyr/bd_warehouse",
      "license": "Apache-2.0",
      "stars": 112,
      "last_push": "2026-10-18",
      "summary": "ISO fasteners, threads"
    },
    {
      "type": "library",
      "status": "reference",
      "name": "partcad/partcad",
      "url": "https://github.com/partcad/partcad",
      "license": "Apache-2.0",
      "stars": 509,
      "last_push": "2026-10-24",
      "summary": "package manager and registry for CAD parts and assemblies"
    },
    {
      "type": "library",
      "status": "reference",
      "name": "sargo-devel/Cables",
      "url": "https://github.com/sargo-devel/Cables",
      "license": "LGPL-3.0",
      "stars": 103,
      "last_push": "2026-10-23",
      "summary": "FreeCAD cable routing (external only)"
    },
    {
      "type": "library",
      "status": "reference",
      "name": "wireviz/WireViz",
      "url": "https://github.com/wireviz/WireViz",
      "license": "GPL-3.0",
      "stars": 5310,
      "last_push": "2026-06-06",
      "summary": "2D harness documents (external only)"
    },
    {
      "type": "library",
      "status": "reference",
      "name": "easyw/kicadStepUpMod",
      "url": "https://github.com/easyw/kicadStepUpMod",
      "license": "AGPL-3.0",
      "stars": 699,
      "last_push": "2026-09-04",
      "summary": "FreeCAD workbench that exchanges board and enclosure STEP models with KiCad (external only)"
    },
    {
      "type": "library",
      "status": "reference",
      "name": "rjwalters/kicad-tools",
      "url": "https://github.com/rjwalters/kicad-tools",
      "license": "MIT",
      "stars": 72,
      "last_push": "2026-10-24",
      "summary": "licence-annotated KiCad tool survey in README"
    },
    {
      "type": "library",
      "status": "reference",
      "name": "kicad-python (PyPI)",
      "url": "https://pypi.org/project/kicad-python/",
      "license": "MIT",
      "summary": "KiCad's official Python bindings for its IPC API (KiCad 9 and later)"
    },
    {
      "type": "library",
      "status": "candidate",
      "name": "CalculiX 2.23 (conda-forge)",
      "url": "https://www.calculix.de/",
      "license": "GPL-2.0-or-later",
      "summary": "planned external solver for large-deflection snap force-travel with contact; apt ships 2.21"
    },
    {
      "type": "benchmark",
      "status": "reference",
      "name": "CADGenBench",
      "url": "https://github.com/huggingface/cadgenbench",
      "license": "Apache-2.0",
      "summary": "drawing->STEP generation; STEP editing; 81 fixtures (per pzfreo submission)"
    },
    {
      "type": "benchmark",
      "status": "reference",
      "name": "Text2CAD",
      "url": "https://github.com/SadilKhan/Text2CAD",
      "license": "CC-BY-NC-SA-4.0",
      "summary": "NeurIPS 2024"
    },
    {
      "type": "benchmark",
      "status": "reference",
      "name": "CADPrompt/CADCodeVerify",
      "url": "https://github.com/Kamel773/CAD_Code_Generation",
      "license": null,
      "summary": "200 prompts · ICLR 2025"
    },
    {
      "type": "benchmark",
      "status": "reference",
      "name": "CAD-Recode",
      "url": "https://github.com/filaPro/cad-recode",
      "license": "CC-BY-NC-4.0",
      "summary": "ICCV 2025"
    },
    {
      "type": "benchmark",
      "status": "reference",
      "name": "cadrille",
      "url": "https://github.com/col14m/cadrille",
      "license": "Apache-2.0",
      "summary": ""
    },
    {
      "type": "benchmark",
      "status": "reference",
      "name": "Text2CAD-Bench",
      "url": "https://arxiv.org/abs/2605.18430",
      "summary": "600 examples, 4 levels"
    },
    {
      "type": "benchmark",
      "status": "unverified",
      "name": "P3D-Bench",
      "url": "https://arxiv.org/abs/2606.11152",
      "summary": "Listed from its paper or site; tasks, data and licence not yet checked."
    },
    {
      "type": "benchmark",
      "status": "unverified",
      "name": "CADBench",
      "url": "https://arxiv.org/abs/2605.10873",
      "summary": "Listed from its paper or site; tasks, data and licence not yet checked."
    },
    {
      "type": "benchmark",
      "status": "unverified",
      "name": "BenchCAD",
      "url": "https://arxiv.org/abs/2605.10865",
      "summary": "Listed from its paper or site; tasks, data and licence not yet checked."
    },
    {
      "type": "benchmark",
      "status": "unverified",
      "name": "RealCADBench",
      "url": "https://arxiv.org/abs/2609.03773",
      "summary": "Listed from its paper or site; tasks, data and licence not yet checked."
    },
    {
      "type": "benchmark",
      "status": "unverified",
      "name": "CAD Arena",
      "url": "https://cadarena.dev/",
      "summary": "Listed from its paper or site; tasks, data and licence not yet checked."
    },
    {
      "type": "benchmark",
      "status": "reference",
      "name": "PCBWorld",
      "url": "https://github.com/LGAI-Research/PCBWorld",
      "license": "BSD-3-Clause",
      "summary": "679 real KiCad boards, 8 metrics · arXiv 2607.05915"
    },
    {
      "type": "benchmark",
      "status": "reference",
      "name": "FEABench",
      "url": "https://github.com/google/feabench",
      "license": "Apache-2.0",
      "summary": "LLM agents on FEA problems; needs a COMSOL licence; prior art only; the repo is archived · arXiv 2504.06260"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Contributing",
      "summary": "Several projects build on cad-agent at the same time (the J501 enclosure, Gyropup, the AGX Thor CAN boards, and others), often with AI agents working in parallel.",
      "url": "https://cad-agent.valpatel.com/CONTRIBUTING",
      "markdown": "https://cad-agent.valpatel.com/CONTRIBUTING.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/CONTRIBUTING.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "cad-agent",
      "summary": "Hardware design with AI agents, checked like engineering. cad-agent turns a folder of CAD scripts into a repeatable pipeline: build the parts, check the fit, simulate strength and airflow, and publish the evidence as print files, reports and a linked review…",
      "url": "https://cad-agent.valpatel.com/README",
      "markdown": "https://cad-agent.valpatel.com/README.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/README.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Third-party notices",
      "summary": "Code under vendor/ is copied from the projects below at the pinned commit. Each directory keeps its upstream LICENSE/NOTICE files; those terms apply to that code. Our changes are listed as patches in vendor/patches/.",
      "url": "https://cad-agent.valpatel.com/THIRD_PARTY_NOTICES",
      "markdown": "https://cad-agent.valpatel.com/THIRD_PARTY_NOTICES.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/THIRD_PARTY_NOTICES.md"
    },
    {
      "type": "agent",
      "status": "ours",
      "name": "cad-pr-reviewer",
      "summary": "Independent reviewer for a pull request in a cad-agent or CAD product repo (code, CAD geometry, simulation evidence, docs). Give it the PR URL and a checkout of the branch; it reads the diff, verifies claims by running tests and small scripts, posts inline comments and a summary review on GitHub, and returns the findings. It does not edit, push, approve or merge. Use for every PR before merging.",
      "url": "https://cad-agent.valpatel.com/agents/cad-pr-reviewer",
      "markdown": "https://cad-agent.valpatel.com/agents/cad-pr-reviewer.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/agents/cad-pr-reviewer.md"
    },
    {
      "type": "agent",
      "status": "ours",
      "name": "cad-resume",
      "summary": "Rebuilds the state of interrupted work from GitHub and the local and remote checkouts after a session ended (tokens ran out, crash, new computer) and reports what is done, what is in flight and the next steps. Give it the repo(s) and, if known, the tracking issue. It reads issues, PRs, branches, unpushed commits and run logs; it changes nothing except pushing local commits that exist only on this machine, if told to.",
      "url": "https://cad-agent.valpatel.com/agents/cad-resume",
      "markdown": "https://cad-agent.valpatel.com/agents/cad-resume.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/agents/cad-resume.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Agent workflow: skills, subagents and work that survives a crash",
      "summary": "cad-agent projects are mostly built by AI agents (Claude Code, Codex) working with a person. The way that work is done (where it is recorded, how it is reviewed, where heavy runs go) is part of cad-agent.",
      "url": "https://cad-agent.valpatel.com/docs/agent-workflow",
      "markdown": "https://cad-agent.valpatel.com/docs/agent-workflow.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/agent-workflow.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Common issues in CAD design reviews",
      "summary": "These mistakes recur in printed parts and assemblies. The list comes from real projects, and each entry links the lesson that recorded it. Every review walks this list, whoever wrote the design and however small the change:",
      "url": "https://cad-agent.valpatel.com/docs/common-issues",
      "markdown": "https://cad-agent.valpatel.com/docs/common-issues.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/common-issues.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Snap fits and compliant features",
      "summary": "cadagent.compliant sizes and checks snap-fit joints so an agent does not re-derive the equations, guess a permissible strain or forget layer lines. It is the calculator half of the compliant-mechanism work (#94);",
      "url": "https://cad-agent.valpatel.com/docs/compliant",
      "markdown": "https://cad-agent.valpatel.com/docs/compliant.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/compliant.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Design process plan: dossier, integrity gates and section-by-section review",
      "summary": "Status: plan, 2026-10-27. Research behind it: research/design-workflows.md (cited below as DW §n). Nothing here is implemented yet; tasks T1–T20 at the end are sized for one implementer each.",
      "url": "https://cad-agent.valpatel.com/docs/design-process-plan",
      "markdown": "https://cad-agent.valpatel.com/docs/design-process-plan.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/design-process-plan.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "The design dossier",
      "summary": "The dossier records a design the way a design review needs it: requirements, the sections the design is broken into, a spec card for every part, the interfaces between parts and sections, the decisions with the alternatives rejected, and the assembly…",
      "url": "https://cad-agent.valpatel.com/docs/dossier",
      "markdown": "https://cad-agent.valpatel.com/docs/dossier.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/dossier.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Explore and compare designs (cadagent.explore)",
      "summary": "For any product built from bought and made parts (an enclosure, a robot, a board, a jig): pick parts from a catalogue for each slot of a design, evaluate every design with the project's own model, and rank the trade-offs.",
      "url": "https://cad-agent.valpatel.com/docs/explore",
      "markdown": "https://cad-agent.valpatel.com/docs/explore.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/explore.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Viewing original CAD files",
      "summary": "The standalone webkit/file-viewer.html opens original STL, STEP/STP and core 3MF files. It parses the requested file itself; it never substitutes a similarly named STL or an assembly manifest. The download link retains the original URL and bytes.",
      "url": "https://cad-agent.valpatel.com/docs/file-viewer",
      "markdown": "https://cad-agent.valpatel.com/docs/file-viewer.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/file-viewer.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Integrity gates (cadagent.gates)",
      "summary": "Assembly-level checks computed from the CAD model, each written as one verdict file. They answer what per-part checks cannot: is this part touching the one it should be fastened to, is the ball inside the hopper, is this wall thick enough.",
      "url": "https://cad-agent.valpatel.com/docs/gates",
      "markdown": "https://cad-agent.valpatel.com/docs/gates.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/gates.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "PCB and assembly review workflow",
      "summary": "cad-agent supports electronics and mechanical evidence in the same local project site. KiCad remains the electrical source of truth; cad-agent consumes its native reports and displays the files.",
      "url": "https://cad-agent.valpatel.com/docs/pcb",
      "markdown": "https://cad-agent.valpatel.com/docs/pcb.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/pcb.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Rendered joint motion validation",
      "summary": "The maintained trace protocol ships with the cad-motion-validation skill, including when the workflow installer copies the skill to a different machine.",
      "url": "https://cad-agent.valpatel.com/docs/rendered-motion",
      "markdown": "https://cad-agent.valpatel.com/docs/rendered-motion.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/rendered-motion.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "The section review packet (cadagent.render.review_packet)",
      "summary": "A fixed set of captioned renders of one dossier section, with the measurements that come first: the gate verdicts and findings for the section, their witness points, the content hash of every part shown, and the render checklist the reviewer answers.",
      "url": "https://cad-agent.valpatel.com/docs/review-packet",
      "markdown": "https://cad-agent.valpatel.com/docs/review-packet.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/review-packet.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Rigid subassembly insertion",
      "summary": "A preassembled module needs two separately checked sequences: its internal bench assembly and its insertion into the parent.",
      "url": "https://cad-agent.valpatel.com/docs/subassembly-insertion",
      "markdown": "https://cad-agent.valpatel.com/docs/subassembly-insertion.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/subassembly-insertion.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "cad-agent toolkit: verification and review reports for 3D-printed CAD projects",
      "summary": "cad-agent runs a CAD project's build and checks, verifies its print files, and turns the results into a standalone HTML report and a review package. It is generic. The geometry and the design-specific checks stay in the project;",
      "url": "https://cad-agent.valpatel.com/docs/toolkit",
      "markdown": "https://cad-agent.valpatel.com/docs/toolkit.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/toolkit.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Curved-solid volume precision",
      "summary": "Tracking: issue #70. This investigation concerns numerical volume measurement in the generic relation gate. It does not qualify hardware fit or weaken collision/volume-conservation tolerances.",
      "url": "https://cad-agent.valpatel.com/docs/volume-precision",
      "markdown": "https://cad-agent.valpatel.com/docs/volume-precision.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/volume-precision.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Mermaid diagrams in published documents",
      "summary": "webkit/diagrams.js exports renderDiagrams(root=document) and observeDiagrams(root=document.body). The observer renders existing and subsequently inserted pre > code.language-mermaid and pre.mermaid blocks. Its dispose() disconnects observation;",
      "url": "https://cad-agent.valpatel.com/docs/web-diagrams",
      "markdown": "https://cad-agent.valpatel.com/docs/web-diagrams.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/web-diagrams.md"
    },
    {
      "type": "doc",
      "status": "ours",
      "name": "Shared parts browser and build tracking",
      "summary": "Shared modules for issue 62. The table/tracker implementation is available on the feature branch; the original-file viewer is being implemented alongside it.",
      "url": "https://cad-agent.valpatel.com/docs/web-parts",
      "markdown": "https://cad-agent.valpatel.com/docs/web-parts.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/docs/web-parts.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "01 — Verify from source",
      "summary": "Board facts that the design depends on (connector side, voltages, designators, threads, which button is which) must come from a primary source: the schematic, datasheet photos or the vendor's 3D model.",
      "url": "https://cad-agent.valpatel.com/lessons/01-verify-from-source",
      "markdown": "https://cad-agent.valpatel.com/lessons/01-verify-from-source.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/01-verify-from-source.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "02 — User intent and requirements",
      "summary": "The requirements arrived in pieces, often as short mid-turn messages, and were refined by later corrections. What worked: capture each one in the user's own words, turn it into a named feature or check, and recompute anything that depends on it.",
      "url": "https://cad-agent.valpatel.com/lessons/02-user-intent-and-requirements",
      "markdown": "https://cad-agent.valpatel.com/lessons/02-user-intent-and-requirements.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/02-user-intent-and-requirements.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "03 — Mechanical design rules",
      "summary": "These rules come from printed-enclosure work (FDM, Bambu P1S bed) around a real carrier board.",
      "url": "https://cad-agent.valpatel.com/lessons/03-mechanical-design-rules",
      "markdown": "https://cad-agent.valpatel.com/lessons/03-mechanical-design-rules.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/03-mechanical-design-rules.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "04 — Fasteners and assembly access",
      "summary": "Bought hardware (screws, nuts, washers, inserts, pins, bearings, standoffs, rod ends) is chosen and placed with skills/mcmaster-parts: a real McMaster-Carr part number, its STEP model normalised into a known frame, and its specification table in the hardware…",
      "url": "https://cad-agent.valpatel.com/lessons/04-fasteners-and-assembly-access",
      "markdown": "https://cad-agent.valpatel.com/lessons/04-fasteners-and-assembly-access.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/04-fasteners-and-assembly-access.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "05 — Cables, connectors and routing",
      "summary": "Model every mating connector, place it on the measured axis, and derive the window from it (standard practice); Route cables from the connector's real mating direction; Model plug bodies and a straight lead before the first bend;",
      "url": "https://cad-agent.valpatel.com/lessons/05-cables-connectors-and-routing",
      "markdown": "https://cad-agent.valpatel.com/lessons/05-cables-connectors-and-routing.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/05-cables-connectors-and-routing.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "06 — Enclosure features",
      "summary": "Put antenna bulkheads in the part that never comes off; Give recessed buttons a pin hole and a guide sleeve that clears installation; Build storage trays from the drive specs and make them stack in any order; Support thin drives that lack bottom holes.",
      "url": "https://cad-agent.valpatel.com/lessons/06-enclosure-features",
      "markdown": "https://cad-agent.valpatel.com/lessons/06-enclosure-features.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/06-enclosure-features.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "07 — Verification and evidence",
      "summary": "Collision-check everything and investigate every hit; Classify false positives explicitly; don't silence them; Check motions, not just final positions; Never claim what was not tested, and make the checks strict.",
      "url": "https://cad-agent.valpatel.com/lessons/07-verification-and-evidence",
      "markdown": "https://cad-agent.valpatel.com/lessons/07-verification-and-evidence.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/07-verification-and-evidence.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "08 — Review site UX",
      "summary": "The user reviewed the work almost entirely through a locally served preview page. Each request below came from something they could not see or could not act on.",
      "url": "https://cad-agent.valpatel.com/lessons/08-review-site-ux",
      "markdown": "https://cad-agent.valpatel.com/lessons/08-review-site-ux.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/08-review-site-ux.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "09 — Agent process",
      "summary": "Fold mid-turn messages into the current work and report on each; Give short status during long work, and say what is stale; Ask before outward or irreversible actions; Check whether it already exists before building it.",
      "url": "https://cad-agent.valpatel.com/lessons/09-agent-process",
      "markdown": "https://cad-agent.valpatel.com/lessons/09-agent-process.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/09-agent-process.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "10 — Simulation, material and airflow",
      "summary": "Identify the exact bought part before sizing anything around it; Judge material savings on slicer grams, not CAD volume; A thinner shell must be re-checked under load, and the check must catch it; Thermal models of printed enclosures.",
      "url": "https://cad-agent.valpatel.com/lessons/10-simulation-and-material",
      "markdown": "https://cad-agent.valpatel.com/lessons/10-simulation-and-material.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/10-simulation-and-material.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "11 — PCB evidence, enclosure readback and release packaging",
      "summary": "Distilled from the incident notes of a second project: a two- and four-port CAN breakout PCB with a printed housing, designed with KiCad 10 and cad-agent on 2026-10-26 (repository mvalancy/pcb-agx-thor-can-breakout).",
      "url": "https://cad-agent.valpatel.com/lessons/11-pcb-evidence-and-review",
      "markdown": "https://cad-agent.valpatel.com/lessons/11-pcb-evidence-and-review.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/11-pcb-evidence-and-review.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "Original-file previews",
      "summary": "Parse the requested original and preserve its identity during recovery; Verify bundled parser behavior rather than assuming a newer API; Check the distributed wheel, including dependency notices.",
      "url": "https://cad-agent.valpatel.com/lessons/12-original-file-viewer",
      "markdown": "https://cad-agent.valpatel.com/lessons/12-original-file-viewer.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/12-original-file-viewer.md"
    },
    {
      "type": "lesson",
      "status": "ours",
      "name": "Lessons from the J501 enclosure session",
      "summary": "Lessons for an AI hardware-design agent, mined from one Claude Code session: the J501 AGX enclosure design session (session d8e464a0-f4a5-4edd-9190-6fd66a0508b0, 2026-10-24 to 2026-10-25).",
      "url": "https://cad-agent.valpatel.com/lessons/README",
      "markdown": "https://cad-agent.valpatel.com/lessons/README.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/lessons/README.md"
    },
    {
      "type": "research",
      "status": "ours",
      "name": "Agent toolkits for mechanical CAD, DFM/DFA and FEA: refresh since 2026-10-24 (checked 2026-10-31)",
      "summary": "For Valpatel/cad-agent #96 (landscape refresh) and #94 (compliant-mechanism engineer). Extends research/landscape.md (2026-10-24); it does not repeat the KiCad or benchmark sections.",
      "url": "https://cad-agent.valpatel.com/research/agent-toolkits-2026-10",
      "markdown": "https://cad-agent.valpatel.com/research/agent-toolkits-2026-10.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/research/agent-toolkits-2026-10.md"
    },
    {
      "type": "research",
      "status": "ours",
      "name": "Compliant mechanisms and single-part joints: references, equations, allowables, process effects (2026-10-31)",
      "summary": "For Valpatel/cad-agent #94 (compliant-mechanism engineer), #95 (calculators), #97 (pitfalls), #99 (process profiles). Extends research/landscape.md (2026-10-24) and research/simulation-tools.md (2026-10-26). Neither covers this field.",
      "url": "https://cad-agent.valpatel.com/research/compliant-mechanisms",
      "markdown": "https://cad-agent.valpatel.com/research/compliant-mechanisms.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/research/compliant-mechanisms.md"
    },
    {
      "type": "research",
      "status": "ours",
      "name": "Design workflows for CAD agents: what works, with evidence (verified 2026-10-27)",
      "summary": "Scope: how the best agentic CAD systems, professional mechanical-design practice and model-integrity verification can be turned into a process that a CAD agent executes. landscape.md covers tool features; this survey covers workflow and method.",
      "url": "https://cad-agent.valpatel.com/research/design-workflows",
      "markdown": "https://cad-agent.valpatel.com/research/design-workflows.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/research/design-workflows.md"
    },
    {
      "type": "research",
      "status": "ours",
      "name": "FOSS large-deflection + contact FEA, orientation, sheet metal and DFM checklists (2026-10-31)",
      "summary": "For Valpatel/cad-agent #96 (items 3–5), #94 (FEA step), #97 (pitfall catalogue), #99 (process profiles). Extends research/simulation-tools.md (2026-10-26), which covers topology optimisation, CFD/CHT, post-processing and slicer CLIs.",
      "url": "https://cad-agent.valpatel.com/research/fea-and-process-tools",
      "markdown": "https://cad-agent.valpatel.com/research/fea-and-process-tools.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/research/fea-and-process-tools.md"
    },
    {
      "type": "research",
      "status": "ours",
      "name": "Agentic hardware-design landscape (verified 2026-10-24)",
      "summary": "Scope: public tools that let frontier-model agents (Claude Code first; Codex, Cursor, Gemini) design 3D-printed, sheet-metal, laser-cut, CNC and molded parts, enclosures around real PCBs, and KiCad boards.",
      "url": "https://cad-agent.valpatel.com/research/landscape",
      "markdown": "https://cad-agent.valpatel.com/research/landscape.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/research/landscape.md"
    },
    {
      "type": "research",
      "status": "ours",
      "name": "FOSS simulation and optimisation survey for cad-agent (J501 / AGX Orin enclosure)",
      "summary": "Survey date: 2026-10-26. Licences were checked against each repo's LICENSE/COPYING file (GitHub API or GitLab API) unless marked otherwise. \"Last commit\" means the newest commit on the default branch at survey time.",
      "url": "https://cad-agent.valpatel.com/research/simulation-tools",
      "markdown": "https://cad-agent.valpatel.com/research/simulation-tools.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/research/simulation-tools.md"
    },
    {
      "type": "skill",
      "status": "ours",
      "name": "cad-motion-validation",
      "summary": "Use when implementing or reviewing articulated CAD viewers and robot simulations, especially parts orbiting away from shafts, mismatched units or frames, nested joints, and stationary housings that rotate with rotors.",
      "url": "https://cad-agent.valpatel.com/skills/cad-motion-validation/SKILL",
      "markdown": "https://cad-agent.valpatel.com/skills/cad-motion-validation/SKILL.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/skills/cad-motion-validation/SKILL.md"
    },
    {
      "type": "skill",
      "status": "ours",
      "name": "cad-pr-review",
      "summary": "Use when a pull request in a cad-agent or product repo is ready for review, or when asked to review one. The author gets an independent review from a separate agent (the cad-pr-reviewer subagent, or a fresh Codex session) that did not write the change, answers every comment on the PR, fixes or explains, resolves the threads, and merges only under the repo's rules. Covers code, CAD geometry and simulation evidence.",
      "url": "https://cad-agent.valpatel.com/skills/cad-pr-review/SKILL",
      "markdown": "https://cad-agent.valpatel.com/skills/cad-pr-review/SKILL.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/skills/cad-pr-review/SKILL.md"
    },
    {
      "type": "skill",
      "status": "ours",
      "name": "cad-remote-runs",
      "summary": "Use before starting any CAD/FEA/CFD/topology run or full pipeline that takes more than a few minutes or several GB of memory. Run it on a compute host instead of the workstation the agents share, detached so it survives the session, recorded in the GitHub issue (host, command, log, done marker, how to collect results) so any machine can pick it up, and its results pulled back and committed.",
      "url": "https://cad-agent.valpatel.com/skills/cad-remote-runs/SKILL",
      "markdown": "https://cad-agent.valpatel.com/skills/cad-remote-runs/SKILL.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/skills/cad-remote-runs/SKILL.md"
    },
    {
      "type": "skill",
      "status": "ours",
      "name": "cad-work-tracking",
      "summary": "Use at the start of any multi-step change in a cad-agent or product repo, and every ~30 minutes while working. Keeps work recoverable when the session ends (tokens run out, the host crashes or is reformatted) with a GitHub issue per piece of work with a done/next/how-to-resume checklist, a branch pushed in clean commits as you go, an early draft PR linked with \"Closes #N\", long runs recorded in the issue, and issues closed as PRs merge. Also use to resume work from GitHub alone.",
      "url": "https://cad-agent.valpatel.com/skills/cad-work-tracking/SKILL",
      "markdown": "https://cad-agent.valpatel.com/skills/cad-work-tracking/SKILL.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/skills/cad-work-tracking/SKILL.md"
    },
    {
      "type": "skill",
      "status": "ours",
      "name": "design-process",
      "summary": "Use when building or changing a mechanical design with cad-agent (an enclosure, a robot, a mechanism, any assembly). Work section by section: frame each section with its requirements and interfaces before drawing, write a small spec card per part with its geometry, declare cavities, joints, fasteners and assembly steps in the build script, run cad-agent gates and cad-agent dossier and fix them in order, render the section review packet and critique it against the checklist with the measurements first, then hand the section to a separate reviewer. Includes the work-tracking rules.",
      "url": "https://cad-agent.valpatel.com/skills/design-process/SKILL",
      "markdown": "https://cad-agent.valpatel.com/skills/design-process/SKILL.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/skills/design-process/SKILL.md"
    },
    {
      "type": "skill",
      "status": "ours",
      "name": "mcmaster-parts",
      "summary": "Use for any bought hardware in a CAD design (bearings, screws, nuts, washers, heat-set inserts, dowel and shoulder pins, standoffs and spacers, rod ends, threaded rod, grommets). Always choose a real McMaster-Carr part with a part number and place its manufacturer STEP model, normalised into a known frame, instead of drawing an envelope; record the part, its full specification table, price and mass in the project's hardware catalogue.",
      "url": "https://cad-agent.valpatel.com/skills/mcmaster-parts/SKILL",
      "markdown": "https://cad-agent.valpatel.com/skills/mcmaster-parts/SKILL.md",
      "source": "https://github.com/Valpatel/cad-agent/blob/dev/skills/mcmaster-parts/SKILL.md"
    }
  ]
}
