[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-672":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":42,"readmeContent":43,"aiSummary":44,"trendingCount":16,"starSnapshotCount":16,"syncStatus":45,"lastSyncTime":46,"discoverSource":47},672,"text-to-cad","earthtojake\u002Ftext-to-cad","earthtojake","A collection of agent skills for CAD, robotics and hardware design","",null,"JavaScript",5954,710,37,5,0,238,606,3527,714,39.56,"MIT License",false,"main",true,[27,28,29,30,31,32,33,34,35,36,37,38,39,40,5,41],"3mf","agents","ai","ai-agents","build123d","cad","cad-skill","dxf","glb","mechanical-engineering","opencascade","robotics","step","stl","wasm","2026-06-12 02:00:17","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\".assets\u002Ftext-to-cad-demo.gif\" alt=\"Demo of the text-to-cad harness generating and previewing CAD geometry\" width=\"100%\">\n\n\u003Cbr>\n\n# ⚙ Open Source Text to CAD Harness ⚙\n\nAn open source harness for generating 3D models with your favorite coding agent\n\n[Demo project](https:\u002F\u002Ftext-to-cad.earthtojake.com)\n\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fearthtojake\u002Ftext-to-cad?style=for-the-badge&logo=github&label=Stars)](https:\u002F\u002Fgithub.com\u002Fearthtojake\u002Ftext-to-cad\u002Fstargazers)\n[![GitHub forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fearthtojake\u002Ftext-to-cad?style=for-the-badge&logo=github&label=Forks)](https:\u002F\u002Fgithub.com\u002Fearthtojake\u002Ftext-to-cad\u002Fnetwork\u002Fmembers)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue?style=for-the-badge)](LICENSE)\n[![Follow @soft_servo](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFollow-%40soft__servo-000000?style=for-the-badge&logo=x)](https:\u002F\u002Fx.com\u002Fsoft_servo)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.11+-3776AB?style=for-the-badge&logo=python&logoColor=white)](.agents\u002Fskills\u002Fcad\u002Frequirements.txt)\n[![build123d](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbuild123d-CAD-00A676?style=for-the-badge)](https:\u002F\u002Fgithub.com\u002Fgumyr\u002Fbuild123d)\n[![OCP](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOCP-OpenCascade-2F80ED?style=for-the-badge)](.agents\u002Fskills\u002Fcad\u002Frequirements.txt)\n[![STEP](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSTEP-Export-4A5568?style=for-the-badge)](.agents\u002Fskills\u002Fcad\u002FSKILL.md)\n[![STL](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSTL-Export-4A5568?style=for-the-badge)](.agents\u002Fskills\u002Fcad\u002FSKILL.md)\n[![3MF](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F3MF-Export-4A5568?style=for-the-badge)](.agents\u002Fskills\u002Fcad\u002FSKILL.md)\n[![URDF](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FURDF-Robots-6B46C1?style=for-the-badge)](.agents\u002Fskills\u002Furdf\u002FSKILL.md)\n[![Robot Motion](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRobot%20Motion-IK%20%2B%20Planning-6B46C1?style=for-the-badge)](.agents\u002Fskills\u002Frobot-motion\u002FSKILL.md)\n[![Node.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode.js-CAD%20Explorer-339933?style=for-the-badge&logo=node.js&logoColor=white)](.agents\u002Fskills\u002Fcad\u002Fexplorer\u002Fpackage.json)\n[![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-18-61DAFB?style=for-the-badge&logo=react&logoColor=111111)](.agents\u002Fskills\u002Fcad\u002Fexplorer\u002Fpackage.json)\n[![Vite](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVite-7-646CFF?style=for-the-badge&logo=vite&logoColor=white)](.agents\u002Fskills\u002Fcad\u002Fexplorer\u002Fpackage.json)\n\n\u003C\u002Fdiv>\n\n## ✨ Features\n\n- **Generate** - Create source-controlled CAD models with coding agents like Codex and Claude Code.\n- **Export** - Produce STEP, STL, 3MF, DXF, GLB, topology data, and URDF robot descriptions.\n- **Browse** - Inspect generated geometry in CAD Explorer.\n- **Reference** - Copy stable `@cad[...]` references so agents can make precise follow-up edits.\n- **Review** - Render quick review images for fast checks during an iteration loop.\n- **Reproduce** - Edit source files first, then regenerate explicit targets.\n- **Local** - Run the harness and CAD Explorer locally with no backend to host.\n\n## 🧰 Bundled Skills\n\nThis harness vendors file-targeted skills for CAD, robot-description, robot-motion, and manufacturing-preflight work. Use the bundled copies here for local CAD projects, or use the dedicated repositories when installing the skills outside this harness.\n\n- **CAD Skill** - STEP, STL, 3MF, DXF, GLB\u002Ftopology, render images, and `@cad[...]` geometry references. [Bundled skill](.agents\u002Fskills\u002Fcad\u002FSKILL.md) · [Standalone repo](https:\u002F\u002Fgithub.com\u002Fearthtojake\u002Fcad-skill)\n- **URDF Skill** - Generated URDF XML, robot links, joints, limits, validation, and mesh references. [Bundled skill](.agents\u002Fskills\u002Furdf\u002FSKILL.md) · [Standalone repo](https:\u002F\u002Fgithub.com\u002Fearthtojake\u002Furdf-skill)\n- **Robot Motion Skill** - ROS 2\u002FMoveIt setup, CAD Explorer motion artifacts, inverse kinematics, path planning, and motion-server testing for existing URDFs. [Bundled skill](.agents\u002Fskills\u002Frobot-motion\u002FSKILL.md)\n\nSkills live canonically under `.agents\u002Fskills` for Codex. Claude Code compatibility is provided by per-skill symlinks in `.claude\u002Fskills`.\n\n## 📸 Screenshots\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\".\u002F.assets\u002Ftext-to-cad-demo.gif\">\n        \u003Cimg src=\".\u002F.assets\u002Ftext-to-cad-demo.gif\" alt=\"CAD skill demo showing generated geometry in CAD Explorer\" width=\"100%\">\n      \u003C\u002Fa>\n      \u003Ca href=\".\u002F.agents\u002Fskills\u002Fcad\u002FSKILL.md\">\u003Cstrong>CAD\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\".\u002F.assets\u002Furdf-demo.gif\">\n        \u003Cimg src=\".\u002F.assets\u002Furdf-demo.gif\" alt=\"URDF skill demo showing robot description output in CAD Explorer\" width=\"100%\">\n      \u003C\u002Fa>\n      \u003Ca href=\".\u002F.agents\u002Fskills\u002Furdf\u002FSKILL.md\">\u003Cstrong>URDF\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ca href=\".\u002F.assets\u002Frobot-motion-demo.gif\">\n        \u003Cimg src=\".\u002F.assets\u002Frobot-motion-demo.gif\" alt=\"Robot Motion skill demo showing inverse kinematics in CAD Explorer\" width=\"100%\">\n      \u003C\u002Fa>\n      \u003Ca href=\".\u002F.agents\u002Fskills\u002Frobot-motion\u002FSKILL.md\">\u003Cstrong>Robot Motion\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 🔁 Workflow\n\n1. **Describe** - Tell your agent about the part, assembly, fixture, robot, or mechanism you want.\n2. **Edit** - Let your coding agent update repo-local CAD source files.\n3. **Regenerate** - Create explicit STEP, STL, 3MF, DXF, GLB, or URDF targets.\n4. **Inspect** - Open CAD Explorer to review the generated model.\n5. **Reference** - Copy `@cad[...]` handles when you want geometry-aware edits.\n6. **Commit** - Save the source and generated artifacts together once the model is ready.\n\n## 🧪 Benchmarks\n\nThe repo stores `.assets\u002F**` through Git LFS and excludes that tree from default LFS pulls so lightweight clones do not fetch GIF assets or benchmark detail pages. To hydrate only the benchmark assets locally, run:\n\n```bash\ngit lfs pull --include=\".assets\u002Fbenchmarks\u002F**\"\n```\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth>#\u003C\u002Fth>\n      \u003Cth>Target\u003C\u002Fth>\n      \u003Cth>Prompt\u003C\u002Fth>\n      \u003Cth>Output\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>1\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F01-rectangular-calibration-block.md\">Rectangular calibration block with four holes\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create a centered 100 x 60 x 20 mm block with four 8 mm vertical through-holes. Add only a 2 mm chamfer on the top outer perimeter.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_01_rectangular_calibration_block.gif\" alt=\"Rectangular calibration block orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>2\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F02-circular-flange.md\">Circular flange with bolt-hole pattern\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create an 80 mm diameter, 10 mm thick circular flange with a 30 mm central through-bore. Add six 6 mm through-holes on a 60 mm bolt circle and fillet the outside circular edges.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_02_circular_flange.gif\" alt=\"Circular flange orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>3\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F03-l-bracket.md\">L-bracket with gussets and two hole directions\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create an L-bracket from a base plate and rear vertical plate. Add vertical base holes, horizontal back-plate holes, two triangular gussets, and a filleted base\u002Fback transition.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_03_l_bracket.gif\" alt=\"L-bracket orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>4\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F04-stepped-shaft-keyway.md\">Stepped shaft with keyway\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create a 120 mm shaft along X with 20\u002F30\u002F20 mm diameter stepped sections. Add end chamfers and a shallow rectangular keyway on top of the middle section.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_04_stepped_shaft_keyway.gif\" alt=\"Stepped shaft orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>5\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F05-open-top-electronics-enclosure.md\">Open-top electronics enclosure with bosses\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create a hollow open-top enclosure with 3 mm walls and floor. Add four internal standoffs with centered blind holes and 2 mm outside vertical corner fillets.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_05_open_top_electronics_enclosure.gif\" alt=\"Open-top electronics enclosure orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>6\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F06-clevis-bracket-lightening-cutouts.md\">Aerospace-style clevis bracket with lightening cutouts\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create a symmetric clevis bracket with a base plate, two rounded lugs, base mounting holes, and a horizontal lug bore. Add triangular lightening cutouts, reinforcing ribs, and rounded transitions.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_06_clevis_bracket_lightening_cutouts.gif\" alt=\"Clevis bracket orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>7\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F07-radial-engine-cylinder.md\">Radial-engine-style cylinder with cooling fins\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create a vertical engine-cylinder form with a central barrel, 12 cooling fins, a base flange, and a top cap. Add a 35 degree angled spark-plug boss with a coaxial through-hole.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_07_radial_engine_cylinder.gif\" alt=\"Radial-engine-style cylinder orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>8\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F08-centrifugal-impeller.md\">Centrifugal impeller with backward-curved blades\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create a centrifugal impeller with a backplate, hub, and through-bore. Add 12 fused backward-curved blades sweeping about 45 degrees from root to tip.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_08_centrifugal_impeller.gif\" alt=\"Centrifugal impeller orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>9\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F09-spiral-staircase.md\">Spiral staircase with helical handrail\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create a miniature spiral staircase with a central column, base disk, and 20 rising wedge treads. Add a one-revolution helical handrail and vertical balusters at the tread outer ends.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_09_spiral_staircase.gif\" alt=\"Spiral staircase orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>10\u003C\u002Ftd>\n      \u003Ctd>\u003Ca href=\".assets\u002Fbenchmarks\u002F10-planetary-gear-stage.md\">Simplified planetary gear stage\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd>Create a flat planetary gear assembly with separate sun, planet, ring, carrier, and pin bodies. Use simplified trapezoidal teeth and place three planets around the sun on a 42 mm radius circle.\u003C\u002Ftd>\n      \u003Ctd>\u003Cimg src=\".assets\u002Fbenchmarks\u002Fbenchmark_10_planetary_gear_stage.gif\" alt=\"Planetary gear stage orbit gif\" width=\"220\">\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n## 🚀 Quick Start\n\nClone the repo:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fearthtojake\u002Ftext-to-cad.git\ncd text-to-cad\n```\n\nInstall Python CAD dependencies:\n\n```bash\npython3.11 -m venv .venv\n.\u002F.venv\u002Fbin\u002Fpython -m pip install --upgrade pip\n.\u002F.venv\u002Fbin\u002Fpip install -r .agents\u002Fskills\u002Fcad\u002Frequirements.txt\n```\n\nInstall other bundled skill requirements only when you need those workflows:\n\n```bash\n.\u002F.venv\u002Fbin\u002Fpip install -r .agents\u002Fskills\u002Furdf\u002Frequirements.txt\n```\n\nInstall CAD Explorer dependencies:\n\n```bash\nnpm --prefix .agents\u002Fskills\u002Fcad\u002Fexplorer install\n```\n\nRun the local CAD Explorer from the project directory you want to scan:\n\n```bash\nnpm --prefix .agents\u002Fskills\u002Fcad\u002Fexplorer run dev\n```\n\nThen open [http:\u002F\u002Flocalhost:4178](http:\u002F\u002Flocalhost:4178).\n\nFor root-aware agent workflows across multiple projects, ask CAD Explorer to\nreuse a matching server or start one on a free port:\n\n```bash\nnpm --prefix .agents\u002Fskills\u002Fcad\u002Fexplorer run dev:ensure -- --file STEP\u002Fsample_part.step\n```\n\nThen open the URL printed by the command.\n","earthtojake\u002Ftext-to-cad 是一个开源项目，旨在通过编程代理生成3D CAD模型。其核心功能包括使用AI代理如Codex和Claude Code创建源代码控制的CAD模型，并支持多种格式导出（如STEP、STL、3MF等）。此外，它还提供了一个CAD Explorer工具来浏览生成的几何图形，并允许用户复制稳定的`@cad[...]`引用以便于后续编辑。该项目特别适合需要快速迭代设计过程的机械工程、机器人技术等领域使用。基于JavaScript开发，并采用MIT许可证发布，确保了广泛的可访问性和灵活性。",2,"2026-06-11 02:38:30","CREATED_QUERY"]