Files
knewnothing-git cb6f984bbc fix(dfam-check): address maintainer review on #265
Blockers
--------
1. requirements.txt was missing scipy, networkx and lxml. With only
   trimesh/numpy/rtree installed the first measure of any mesh died with a raw
   ModuleNotFoundError from mesh.body_count, and .3mf could not load at all.
   Reproduced in a clean venv, then confirmed fixed there: all four advertised
   formats now load and measure. Only scipy is mirrored into
   requirements-dev.txt; networkx and lxml are already listed under the repo
   tests block, matching how trimesh is handled.

2. Wall thickness is now measured per connected body. Cast against a whole
   assembly, a ray can leave one body, cross a mating clearance and land on
   its neighbour, recording the fit gap as a wall - so a tight-clearance
   assembly reported a wall violation no single part had. _wall_facts splits
   first and measures each body against itself, pooling the results and adding
   a per_body breakdown. Sample budget is shared by surface area with a floor
   so small bodies are still sampled.

Should-fix
----------
3. Each fact family now runs through _safe and degrades to an error field.
   A planar mesh dies in convex_hull; previously that cost the user the whole
   report, including the facts that had computed.

4. New scale block reports bbox_diagonal_mm and units_suspect. A meters-scale
   mesh sits under the 0.1 mm on-plate tolerance, so every down-facing face
   reads as on-plate and the part looks like a flawless print. SKILL.md now
   branches on the measured field instead of asking the agent to eyeball the
   bounding box.

5. Added the skill to the README table and the docs page array.

6. process-limits.md now names which rows have a measured counterpart today
   (walls, self-supporting angle) and which do not (hole diameter, positive
   feature, unsupported bridge), closing the eyeballing loophole.

SKILL.md also gained a rule to attribute an assembly's wall violation to the
body it belongs to.

Verification
------------
- Clean venv built from the skill's own requirements: 26 checks covering
  multi-body clearance, 81k-face performance, a 42-body assembly, planar,
  meters-scale, broken export, all four formats, degenerate mesh.
- Per-body change costs ~150 ms on an 81k-face mesh (7493 -> 7643 ms); the
  bulk of that time is trimesh's pure-Python ray fallback, not the split.
- Real part measurements unchanged: L-bracket still 1200 mm2 unsupported,
  9.0 mm median wall.
- gcode/urdf/dxf suites fail identically with and without this change; those
  are pre-existing.
2026-08-20 22:37:39 +05:30

9.0 KiB

Demo of the CAD skill generating and previewing CAD geometry
████████╗███████╗██╗  ██╗████████╗██████╗  ██████╗ █████╗ ██████╗ 
╚══██╔══╝██╔════╝╚██╗██╔╝╚══██╔══╝╚════██╗██╔════╝██╔══██╗██╔══██╗
   ██║   █████╗   ╚███╔╝    ██║    █████╔╝██║     ███████║██║  ██║
   ██║   ██╔══╝   ██╔██╗    ██║   ██╔═══╝ ██║     ██╔══██║██║  ██║
   ██║   ███████╗██╔╝ ██╗   ██║   ███████╗╚██████╗██║  ██║██████╔╝
   ╚═╝   ╚══════╝╚═╝  ╚═╝   ╚═╝   ╚══════╝ ╚═════╝╚═╝  ╚═╝╚═════╝ 

A library of agent skills for CAD, CAE and CAM

Docs

Tests Join Discord GitHub stars License: MIT Follow @earthtojake Python STEP STL 3MF URDF SDF SRDF

text-to-cad

text-to-cad is a library of agent skills for generating, inspecting, sourcing, slicing, and handing off CAD and robot-description artifacts from local project files.

CAD skill demo showing generated geometry in CAD Viewer CAD URDF skill demo showing robot description output in CAD Viewer URDF SRDF MoveIt2 skill demo showing inverse kinematics in CAD Viewer SRDF / MoveIt2

🧰 Skills

Install the library to give agents focused workflows for CAD, fabrication, robot description files, simulation, and local review.

Skill Summary Source
CAD Creates and edits CAD models from plain-language or image requests, with STEP as the main output along with options to export to STL, 3MF and GLB. skills/cad
CAD Viewer Shows local browser previews for CAD and robot files. skills/cad-viewer
step.parts Finds off-the-shelf STEP parts like screws, bearings, motors, and connectors. skills/step-parts
DXF Creates 2D DXF drawings like profiles, templates, gaskets, and cut layouts from Python sources or CAD geometry. skills/dxf
URDF Writes robot structure files with links, joints, limits, inertials, and meshes. skills/urdf
SRDF Adds MoveIt planning groups, end effectors, poses, and collision rules to a URDF. skills/srdf
SDF Creates simulator models and worlds with frames, physics, sensors, and lights. skills/sdf
SendCutSend Checks DXF and STEP files before upload to SendCutSend. skills/sendcutsend
DfAM Check Measures mesh printability per process: wall thickness, overhangs, support volume, and build orientation. skills/dfam-check
G-code Slices supported mesh files into validated, printer-profiled FDM .gcode with real slicer CLIs. skills/gcode
Bambu Labs Dry-runs, uploads, and cautiously starts local Bambu Lab print jobs from validated .gcode. skills/bambu-labs
Implicit CAD Creates browser-native implicit CAD models using GLSL signed-distance fields and CAD Viewer raymarch rendering. Experimental. skills/implicit-cad

💻 Installation

For production use, install or clone from main; that branch contains the generated skill outputs needed by provider installers.

Skills

Install text-to-cad with the Skills CLI:

npx skills add earthtojake/text-to-cad

This is the preferred installation path. It installs the individual skills directly for supported agents.

Use the same command to update. add re-fetches the package and overwrites what is already installed, so it both refreshes existing skills and installs any skill added in a newer release. npx skills update only refreshes skills already in your lockfile, so it silently misses new ones — which matters here, because releases do add skills.

Neither command removes a skill that was retired upstream; drop one with npx skills remove <skill> if you need to.

(npx skills install … still works — it is an undocumented alias for add.)

Plugins

Provider-native plugin installs are also available for Codex, Claude Code, and Grok Build:

# Codex (requires Codex 0.142.0 or newer)
codex plugin marketplace add earthtojake/text-to-cad
codex plugin add cad@text-to-cad

Codex resolves this repository-root plugin only from 0.142.0 onward. On older versions the plugin is skipped silently and never appears in codex plugin list; upgrade with npm install -g @openai/codex@latest.

# Claude Code
claude plugin marketplace add earthtojake/text-to-cad
claude plugin install cad@text-to-cad

Grok Build uses the existing .claude-plugin/marketplace.json; there is no separate Grok plugin manifest.

# Grok Build
grok plugin install earthtojake/text-to-cad --trust
grok plugin enable cad

Restart your agent if newly installed skills do not appear. For local development, branch from develop, open PRs against develop, and use the symlink workflow in CONTRIBUTING.md.

🛠️ Contributing

Development happens from the develop branch; open PRs against develop, not main. For local contribution workflow, skill linking, and validation guidance, see CONTRIBUTING.md.