Ask for a flange and CAD Skills hands you a STEP file

Text to CAD agent skills let you describe a part in one sentence and get a real STEP file back. CAD Skills ships 11 of them, covering modelling, drawings, robot files, and slicing. The chain ends at a validated print job on a Bambu Lab printer. A published set of ten benchmark parts shows how far that goes.
Key Takeaways
- You describe a part in words and get a real STEP file back.
- Eleven small skills cover modelling, drawings, robot files, slicing, and printing.
- A browser preview lets the agent look at its own work and fix it.
- Ten test parts ship with prompts and renders, from a plain block to gears.
- It can pull in off-the-shelf screws and bearings instead of modelling them.
What text to CAD means when the output is a real STEP file
Two very different things hide behind the same phrase, and the difference decides whether the file is usable. A mesh is a shell of triangles that prints fine, but you can’t edit a hole in it, and a machine shop will send it back.
A solid model carries the actual geometry: faces, edges, and features you can change. CAD Skills targets that second kind. STEP is the primary artifact, and STL, 3MF, and GLB are secondary exports that branch off a STEP-first process.
The engine underneath is build123d , a Python modelling framework sitting on the OpenCASCADE kernel. The agent writes Python, and OpenCASCADE turns it into a solid with real faces and edges.
That choice is why the output stays editable. You end up with a script and a solid, so fixing a wrong dimension is a code edit rather than a fresh start.
The library is MIT licensed, and the Python side installs a small package called cadpy that pulls in build123d and cadquery-ocp. Its requirements file
is short, but the package underneath needs Python 3.12 or newer.
Opinionated defaults save you a lot of specifying. The skill assumes millimetres, an XY base plane, and 2 to 3 mm walls on small plastic enclosures. M3, M4, and M5 clearance holes come out at 3.4, 4.5, and 5.5 mm. The skill file calls these first-pass modelling defaults, with no tolerance or certification claim attached.
The 11 skills, and what each one is for
The library is a chain of small tools that hand files to each other, which is why a sentence can reach a printer at all. Each skill carries its own SKILL.md describing when an agent should pick it up.
| Skill | What it does |
|---|---|
| CAD | Builds and edits models from plain language or a reference image, exporting STEP, STL, 3MF, and GLB |
| CAD Viewer | Opens a local browser preview for CAD files, G-code, and robot descriptions |
| step.parts | Finds off-the-shelf STEP components such as screws, bearings, motors, and connectors |
| DXF | Produces 2D drawings, profiles, gaskets, and cut layouts from Python or existing geometry |
| URDF | Writes robot structure files with links, joints, limits, inertials, and meshes |
| SRDF | Adds MoveIt planning groups, end effectors, poses, and collision rules to a URDF |
| SDF | Creates simulator models and worlds with frames, physics, sensors, and lights |
| G-code | Slices a mesh with a real slicer command-line tool and validates the result against a printer profile |
| Bambu Labs | Dry-runs, uploads, and cautiously starts a local print job from validated G-code |
| SendCutSend | Checks a DXF or STEP file against a fabrication service’s rules before you upload and pay |
| Implicit CAD | Experimental. Builds browser-native models from GLSL signed distance fields, drawn by raymarching |
CAD Viewer changes the character of the whole chain. It runs a local server, by default on port 4178, and every other skill hands its output path over for review. The agent can look at what it just built instead of guessing.
The Hacker News thread that introduced it drew 186 points and 48 comments, including the author’s account of why it exists.
After being humbled by modern CAD tools like Onshape, I built this harness / skill to help me generate some basic CAD models for a 7dof robot arm I’m designing. It ended up working much better than I expected, particularly on the latest GPT 5.5 and Opus 4.7 models.
The results people report come from frontier models, so a small local one will struggle here.
How to turn a sentence into a printable file
Install the skills library
Run npx skills install earthtojake/text-to-cad in a terminal. This installs the individual skills directly for supported agents, and the project names it the preferred path. Provider-native plugin installs exist for Codex and Claude Code if you prefer those.
Set up the Python side
Install cadpy into a virtual environment on Python 3.12 or newer before the first run. Otherwise the agent’s first attempt dies on an import error.
Restart your agent and confirm the skills loaded
Close and reopen your agent, then ask it to list what it has. CAD, CAD Viewer, step.parts, DXF, URDF, SRDF, SDF, G-code, Bambu Labs, SendCutSend, and Implicit CAD should all show up.
Describe the part with numbers
Give dimensions, positions, and features. Try an 80 mm diameter flange, 10 mm thick, with a 30 mm central bore and six 6 mm holes on a 60 mm bolt circle. That beats “a flange with some holes” every time. Coordinates work even better than counts, because they remove the guesswork about where features sit.
Open the preview and look at it
Ask the agent to show the result in CAD Viewer. Rotate the part and check the features landed where you asked before going further.
Export the STEP file
Ask for a STEP export. STL, 3MF, and GLB are available when you need a mesh instead of solid geometry.
Slice it if you are printing
Hand the mesh to the G-code skill. It discovers installed slicer backends, then dry-runs the command before executing it. Finally it validates the output against a profile carrying bed size, motion bounds, and filament settings. OrcaSlicer is the backend the docs walk through.
How hard the benchmark parts get
Ten parts make up the suite, each with a prompt, an animated render, and a table of expected results. The assets sit in Git LFS and are excluded from default pulls, so a plain clone won’t fetch them. Run git lfs pull --include="benchmarks/**" to hydrate them.
| Difficulty | Parts |
|---|---|
| Solved | Calibration block , circular flange , L-bracket with gussets |
| Getting harder | Stepped shaft with a keyway, open-top electronics enclosure with standoffs, clevis bracket with lightening cutouts |
| Where it hurts | Radial engine cylinder with 12 fins , centrifugal impeller with 12 curved blades, spiral staircase with a helical handrail, planetary gear stage |
Prismatic parts with holes, chamfers, and fillets are solved. Swept blades, helices, and assemblies of interacting bodies are where it struggles.
Each benchmark file also lists what a correct result looks like. The flange page checks for exactly one watertight solid, an 80 mm outer diameter, and six bolt holes at 60 degree spacing. It even adds a negative check for extra or misplaced holes. However, the repository publishes no scored pass or fail run against those checks, only a render.
Readers on Hacker News also spotted that the prompts printed in the README table are abridged. Benchmark one shows a 27 word prompt in that table. The linked benchmark file carries an 86 word version that pins each hole to explicit X and Y coordinates.
In the benchmarks, there is a strange lack of measurements that I’d expect in a CAD process (EG in benchmark 1, the positions of the 4 holes are not specified at all).
The full prompts do specify them, and the author explained where those long prompts came from.
I actually used GPT 5.5 Pro to generate the prompts from simpler one sentence prompts, so hypothetically it’s just an extra step in the harness for an agent to unpack / add detail to a prompt based on the user’s goal.
Before you model anything, ask a model to expand your one-liner into a dimensioned spec, then feed that spec to the CAD skill.
How far the loop closes
The full chain does work: sentence, Python, solid geometry, STEP, mesh export, slicer, validated G-code, and a job on a printer sitting on your network. The Bambu Labs skill talks to the printer over local FTPS and MQTT. You have to switch the printer into LAN Only mode with Developer Mode enabled first, and a real print needs an explicit --execute --confirm-start-print.
Plenty still stops at your desk. Tolerances, fits, and material choice stay yours. The skill knows a 3.4 mm hole is normal clearance for an M3 screw. It has no idea about your press fit, shrinkage, or surface finish.
Assemblies are the harder problem. The planetary gear benchmark exists precisely because relationships between parts are the difficult case. Nothing here does constraint solving the way a parametric CAD package does.
The SendCutSend skill is easy to overlook. It catches the geometry a fabrication service would reject before you pay for a run, which is a much cheaper place to fail.
Not everyone on Hacker News was convinced.
I think there is a niche where text-to-CAD is good: hobby users who don’t want invest in learning a CAD software UI. For professionals, where results have dollar values, there needs to be a much deeper understanding of the problem domain.
That is roughly right, with one edit. The niche is wider than hobby users: it covers anyone printing functional parts where the geometry is prismatic and the tolerance budget is generous. Brackets, enclosures, jigs, and fixtures all qualify.
Skip it if your parts need drawings with GD&T, mating assemblies with real fits, or a paper trail for a regulated process. The documentation site
and the hosted demo
are the fastest way to judge for yourself. If you clone rather than install, the contributing guide
points development at the develop branch, because main carries the generated skill and plugin outputs.
CAD Skills saves the twenty minutes you spend redrawing a bracket, while the engineer still decides whether the bracket is right.
Botmonster Tech