text-to-cad
github.com/earthtojake/text-to-cad- Category
- AI Agents
- Rank
- No. 760Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Design & Media
- Interfaces
- Agent Skill / Plugin
- GitHub
- 22.9k stars
- Latest release
- v0.7.26
- Date
About
A library of agent skills that lets AI coding agents generate, inspect, source, and hand off CAD, CAE, and CAM artifacts from local project files. Skills cover parametric CAD generation (STEP/STL/3MF), URDF/SRDF robot description, SDF simulation worlds, G-code slicing, and printer job execution, installable via a skills CLI or as native plugins for Codex, Claude Code, and Grok Build.
What it does
This is a set of installable skills that teach coding agents to produce actual CAD output instead of just discussing geometry: solid parts, joint files for robots, physics simulation scenes, and print-ready toolpaths. A Python engine underneath does the real modeling work on an open source CAD kernel, and each skill wraps one workflow, from drafting a part to finding an off-the-shelf screw to preparing a mesh for a specific 3D printer.
Why it's ranked here
Eleven skills cover the full pipeline from a plain-language part request to a validated toolpath, and the underlying engine is a real package with its own versioning discipline, not a wrapper prompt. A same-command update path, a documented major-version migration guide, and a configured CI test workflow point to a maintained, non-trivial codebase rather than a demo repo. MIT licensed. The breadth here, spanning CAD, robotics description formats, simulation, and slicing, is unusual for a single skill collection, which is why it earns a broader slot than a single-purpose modeling skill.
What's good
The system is engineered around real production concerns, not just demo output. A guard keeps one broken font file in a user's system fonts from crashing every command, a content-addressed cache skips rebuilding parts that have not changed, and reading an externally sourced vendor file is tracked so the cache correctly notices when that source changes. A geometry viewer caches the expensive mesh conversion step so previews stay fast across sessions. There is also a real distinction between installing everything fresh and merely refreshing what is already present, which matters because new releases add new skills you would otherwise miss.
Tradeoffs
Windows is the rough edge. The CAD kernel ships an unsigned native module, and Windows 11 blocks unsigned native code by default with no per-app exception, so a Windows user must either turn off a system-wide security feature or move the work into WSL. Major version upgrades carry no compatibility layer: old configuration keys become unrecognized arguments and errors describe only the new contract, so a half-migrated project fails without explaining what changed. One of the two update commands only refreshes skills you already have installed and silently skips ones added in a newer release, which is an easy trap for anyone who reaches for the more conservative-sounding command.
How to use it well
Reach for this when an agent needs to hand back something manufacturable, not just a picture or a description: a machinist-ready drawing, a robot's joint geometry, a simulation-ready world, or a print job checked against a specific printer's limits. It fits naturally into a git-based project where geometry is code, not a one-off image generator. Install through the dedicated command line tool rather than a generic package manager, and re-run the install command itself, not the lighter update command, so new releases' skills actually show up. It is not for freehand organic sculpting or artistic meshes; the modeling is fully parametric and script-driven.
Technical notes+
packages/cadgen/src/cadgen/__init__.py resolves nearly every public name through __getattr__ at access time instead of eager imports, so importing cadgen does not pull in build123d or its OCP kernel until a name like build123d or step is actually touched; before that, it calls install_font_guard() and install_kernel_import_site(), the guard existing because build123d's font-folder scan at import time has no per-file error handling and one malformed system font otherwise aborts every cadgen invocation (opt out via CADGEN_FONT_GUARD=0). apps/viewer/src/client/main.jsx wires a CadWorkspace React tree to an external store via useSyncExternalStore and installs an HTTP-backed tessellation cache provider so mesh tessellations persist across sessions and are shared with snapshots and exports instead of being recomputed per load. packages/cadgen-js/src/index.js is a thin barrel re-exporting scene, environment-map, and rendering-theme modules, with no generation logic of its own. models/README.md lays out a separate demo-fixture tree (examples/, assemblies/, drawings/, plus named project folders) kept out of default Git LFS fetches. docs/migrations/migrating-0.4-to-0.5.md is the source for the 0.4-to-0.5 break: a model file no longer uses a gen_step()/gen_dxf() naming convention; it is a plain .py file with a parameterless function decorated by @step or @dxf and ending in an if __name__ == '__main__' call, and as of 0.5.1 an animation= keyword on that decorator replaced the earlier sibling *.step.js file, with the built sidecar *.step.json now carrying the animation forward.
Observed
- License
- License: MIT.
- Python support
- Requires Python 3.11 or newer.
- Packaging
- Installable as agent skills via a dedicated Skills CLI, or as native plugins for Codex, Claude Code, and Grok Build.
- Skills included
- Ships eleven skills spanning CAD generation, a local CAD/robot file viewer, off-the-shelf parts sourcing, 2D DXF drawing, URDF and SRDF robot description, SDF simulation worlds, pre-upload fabrication checks, mesh printability checks, G-code slicing, and printer job execution.
- Interfaces
- Interfaces: command-line tool, importable Python library, and agent-skill/plugin packages.
- Testing
- A GitHub Actions test workflow is configured for the repository's main branch.
- Platform note
- The CAD kernel depends on OpenCascade's Python binding, which ships a native module that is unsigned; Windows 11's Smart App Control, on by default on a fresh install, blocks unsigned native code with no per-application exception, so it must be disabled system-wide or the tool run under WSL.
- Data handling
- Large model and mesh fixtures are tracked with Git LFS and excluded from default fetches.
- Compatibility
- Major version upgrades of the CAD engine ship with no backward-compatibility layer, deprecated aliases, or automatic code migration tool.
Read from README.md, packages/cadgen-js/src/index.js, packages/cadgen/src/cadgen/__init__.py, apps/viewer/src/client/main.jsx, models/README.md, docs/migrations/migrating-0.4-to-0.5.md.
What it can do
Generate parametric CAD files
Local project files/specifications → STEP/STL/3MF CAD files
Generate robot description files
Local project files/specifications → URDF/SRDF files
Generate simulation world files
Local project files/specifications → SDF simulation world files
Slice 3D models into machine instructions
CAD model file → G-code file
Inspect CAD/CAE/CAM artifacts
CAD/CAE/CAM file → Inspection results
Source CAD artifacts from local project files
Local project files → CAD artifact
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.