# Technical Documentation: earthtojake/text-to-cad > ℹ️ **Provenance:** Hybrid Fusion: `earthtojake/text-to-cad` (README + 2 In-Tree Chapters) · [CodeWiki Reference](https://codewiki.google/github.com/earthtojake/text-to-cad) · Recency: Active (< 180 days) ## 1. Project Overview & Quickstart (earthtojake/text-to-cad) # 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**](./skills/cad/SKILL.md) | [**URDF**](./skills/urdf/SKILL.md) | [**SRDF / MoveIt2**](./skills/srdf/SKILL.md) | | --- | --- | --- | ## 🧰 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](skills/cad/SKILL.md) | | CAD Viewer | Shows local browser previews for CAD and robot files. | [skills/cad-viewer](skills/cad-viewer/SKILL.md) | | step.parts | Finds off-the-shelf STEP parts like screws, bearings, motors, and connectors. | [skills/step-parts](skills/step-parts/SKILL.md) | | DXF | Creates 2D DXF drawings like profiles, templates, gaskets, and cut layouts from Python sources or CAD geometry. | [skills/dxf](skills/dxf/SKILL.md) | | URDF | Writes robot structure files with links, joints, limits, inertials, and meshes. | [skills/urdf](skills/urdf/SKILL.md) | | SRDF | Adds MoveIt planning groups, end effectors, poses, and collision rules to a URDF. | [skills/srdf](skills/srdf/SKILL.md) | | SDF | Creates simulator models and worlds with frames, physics, sensors, and lights. | [skills/sdf](skills/sdf/SKILL.md) | | SendCutSend | Checks DXF and STEP files before upload to SendCutSend. | [skills/sendcutsend](skills/sendcutsend/SKILL.md) | | G-code | Slices supported mesh files into validated, printer-profiled FDM `.gcode` with real slicer CLIs. | [skills/gcode](skills/gcode/SKILL.md) | | Bambu Labs | Dry-runs, uploads, and cautiously starts local Bambu Lab print jobs from validated `.gcode`. | [skills/bambu-labs](skills/bambu-labs/SKILL.md) | | Implicit CAD | Creates browser-native implicit CAD models using GLSL signed-distance fields and CAD Viewer raymarch rendering. Experimental. | [skills/implicit-cad](skills/implicit-cad/SKILL.md) | ## 💻 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: ```bash npx skills install earthtojake/text-to-cad ``` This is the preferred installation path. It installs the individual skills directly for supported agents. ### Plugins Provider-native plugin installs are also available for Codex and Claude Code: ```bash # 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 @openai/codex@latest`. ```bash # Claude Code claude plugin marketplace add earthtojake/text-to-cad claude plugin install cad@text-to-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.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](CONTRIBUTING.md). ## 2. In-Tree Documentation Chapters (earthtojake/text-to-cad) ## File: README.md # 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**](./skills/cad/SKILL.md) | [**URDF**](./skills/urdf/SKILL.md) | [**SRDF / MoveIt2**](./skills/srdf/SKILL.md) | | --- | --- | --- | ## 🧰 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](skills/cad/SKILL.md) | | CAD Viewer | Shows local browser previews for CAD and robot files. | [skills/cad-viewer](skills/cad-viewer/SKILL.md) | | step.parts | Finds off-the-shelf STEP parts like screws, bearings, motors, and connectors. | [skills/step-parts](skills/step-parts/SKILL.md) | | DXF | Creates 2D DXF drawings like profiles, templates, gaskets, and cut layouts from Python sources or CAD geometry. | [skills/dxf](skills/dxf/SKILL.md) | | URDF | Writes robot structure files with links, joints, limits, inertials, and meshes. | [skills/urdf](skills/urdf/SKILL.md) | | SRDF | Adds MoveIt planning groups, end effectors, poses, and collision rules to a URDF. | [skills/srdf](skills/srdf/SKILL.md) | | SDF | Creates simulator models and worlds with frames, physics, sensors, and lights. | [skills/sdf](skills/sdf/SKILL.md) | | SendCutSend | Checks DXF and STEP files before upload to SendCutSend. | [skills/sendcutsend](skills/sendcutsend/SKILL.md) | | G-code | Slices supported mesh files into validated, printer-profiled FDM `.gcode` with real slicer CLIs. | [skills/gcode](skills/gcode/SKILL.md) | | Bambu Labs | Dry-runs, uploads, and cautiously starts local Bambu Lab print jobs from validated `.gcode`. | [skills/bambu-labs](skills/bambu-labs/SKILL.md) | | Implicit CAD | Creates browser-native implicit CAD models using GLSL signed-distance fields and CAD Viewer raymarch rendering. Experimental. | [skills/implicit-cad](skills/implicit-cad/SKILL.md) | ## 💻 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: ```bash npx skills install earthtojake/text-to-cad ``` This is the preferred installation path. It installs the individual skills directly for supported agents. ### Plugins Provider-native plugin installs are also available for Codex and Claude Code: ```bash # 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 @openai/codex@latest`. ```bash # Claude Code claude plugin marketplace add earthtojake/text-to-cad claude plugin install cad@text-to-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.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](CONTRIBUTING.md). --- ## File: scripts/README.md # Scripts Use these durable entrypoints for normal work: | Task | Command | | ---- | ------- | | Set up dev symlinks | `scripts/dev/setup-symlinks.sh` | | Check dev symlinks | `scripts/dev/setup-symlinks.sh --check` | | Bundle production outputs | `scripts/bundle/bundle.sh --clean` | | Check production outputs are fresh | `scripts/bundle/bundle.sh --check` | | Bundle one skill output | `scripts/bundle/bundle-skill.sh ` | | Run code tests | `scripts/test/test.sh` | | Run docs checks | `scripts/test/test-docs.sh` | | Check canonical release version | `scripts/release/check-version.sh` | | Pin cadgen to PyPI in a publish tree | `scripts/release/pin-cadgen-requirements.sh` | | Install local skills into agents | `scripts/install/install-skills.sh --agent codex` | | Uninstall local skill links | `scripts/install/uninstall-skills.sh --agent codex` | Lower-level scripts stay grouped by ownership: - `bundle/`: production bundle wrapper, skill bundle router, and skill runtime bundlers. - `test/`: code test runner and targeted test subcommands. - `github-workflows/`: release-layout and development-layout check entrypoints used by GitHub Actions. - `dev/`: symlink layout setup and verification for development checkouts. - `install/`: local skill install/uninstall scripts for agent skill folders. - `utils/`: shared helper scripts used by durable repo commands. - `release/`: version bumping, release commits, tags, and GitHub Releases. - `viewer/`, `git-hooks/`: specialized repo tooling. Root `tests/` contains repo-wide policy tests that are not owned by one package, skill, or app runtime. ## Bundle `scripts/bundle/bundle.sh` is the master production bundle script. It stamps derived version metadata, then runs every bundle-capable skill through the skill bundle router: ```text scripts/release/sync-version.mjs scripts/bundle/bundle-skill.sh --all ``` There is no separate plugin bundle step. The repository root is the plugin package and its skills are `skills/` directly, so nothing needs copying. Use: ```bash scripts/bundle/bundle.sh --clean scripts/bundle/bundle.sh --check scripts/bundle/bundle-skill.sh --check ``` Every bundle script also reports the paths it generates, so checks can discover production runtime paths instead of repeating them: ```bash scripts/bundle/bundle-skill.sh --all --print-outputs ``` `scripts/github-workflows/check-builds.sh` is the release-layout gate. It asks the bundle scripts for their generated paths, verifies each one exists and contains no symlinks, then runs `scripts/bundle/bundle.sh --check` by default. Use `--skip-bundle-check` only in workflows that already ran `scripts/bundle/bundle.sh --clean` in the same checkout. The no-symlinks rule is load-bearing rather than cosmetic: agent installers disagree about symlinks, and Codex `plugin add` drops them silently, publishing a skill whose files are simply missing. Plugin manifest and marketplace validation lives in `tests/python/global/test_plugin_manifests.py`. `skills/cad-viewer/scripts/viewer/dist/` is generated and ignored in source layout, but the root `.gitignore` unignores that exact production-runtime path so `Publish` can commit the bundled Viewer assets on `main`. On `develop`, `scripts/dev/setup-symlinks.sh --check` requires `skills/cad-viewer/scripts/viewer` to be the source symlink instead. ## Dev `scripts/dev/setup-symlinks.sh` is the master development-layout script: ```bash scripts/dev/setup-symlinks.sh scripts/dev/setup-symlinks.sh --check ``` It links generated-copy targets back to their canonical source directories and checks that those symlinks are present. ## Install Use the install scripts for local agent links: ```bash scripts/install/install-skills.sh --agent codex scripts/install/uninstall-skills.sh --agent codex ``` They install or remove local development skill symlinks in agent-specific skill directories. ## Test `scripts/test/test.sh` is the broad code test runner for source/package tests. Documentation checks are separate so CI can run them with production bundle checks. Python tests live under `tests/python/`, grouped by tested surface, so skill and package runtimes do not carry test-only modules. Production bundle copy steps also exclude conventional test directories and `*.test.*` / `*.spec.*` files as a safety net. Focused subcommands can be run directly for smaller checks: ```bash scripts/test/test-js.sh scripts/test/test-docs.sh scripts/test/test-python.sh scripts/test/test-global.sh ``` ## Version And Release Use `scripts/release/check-version.sh` for CI/read-only checks: ```bash scripts/release/check-version.sh scripts/release/check-version.sh --incremented-from origin/main ``` Normal development branches should not bump `VERSION`. Use the `Release` GitHub Actions workflow to open and ship the release PR from `develop`; use `scripts/release/bump-version.sh` only as a local fallback for that release PR: ```bash scripts/release/bump-version.sh patch --dry-run scripts/release/bump-version.sh patch --no-commit ``` `VERSION` is the only canonical release bump file. Duplicate package, plugin, lockfile, and Python `pyproject.toml` versions are derived from it; the `Release` workflow stamps them with `scripts/release/sync-version.mjs`, and `scripts/bundle/bundle.sh` re-checks the same metadata before writing or checking production outputs. Use `scripts/release/publish-github-release.sh` only from the `Release` workflow after a main production bundle, or as a manual production-branch fallback. It creates the semver git tag from `VERSION` and creates a GitHub Release with generated notes; unlike the `Release` workflow, which publishes the release by default, the script creates a draft unless `--publish` is passed. Use `scripts/release/check-publish-source.sh` to verify that a source ref contains the previous release source before the publish job writes a new generated target commit. Use `scripts/github-workflows/deploy-vercel-app.sh` only from the `Deploy Docs` and `Deploy Viewer` workflows; it configures Vercel Authentication for preview deployments only, deploys one Vercel project to production, and verifies its public URLs. `scripts/release/create-github-release.sh` remains as a manual all-in-one fallback, but the workflow path is preferred. ## CI | Workflow | Branches/events | Purpose | | -------- | --------------- | ------- | | `test.yml` | pushes to `develop`; PRs to `develop`; manual dispatch | Checks `VERSION` and derived metadata as a separate job so the test job still runs if release metadata is wrong. The test job checks the `develop` symlink layout, bundles temporary production outputs, checks that layout without rebuilding it, and runs docs and code tests against the generated output. Superseded PR runs are cancelled. | | `release.yml` | manual dispatch | The single release workflow: release PR, production publish commit to the target branch, models upload, web-app deploys, semver tag, and GitHub Release in one run. See the Releases section in `CONTRIBUTING.md` for the full flow, CI/CD-testing, and resume options. | | `deploy-docs.yml` | manual dispatch; called by `release.yml` | Deploys the docs app to Vercel production from a production-layout ref (default `main`): configures Vercel Authentication for preview deployments only, runs `vercel pull/build/deploy --prod`, and verifies the public production URLs. | In short: use `release.yml` for releases, use `deploy-docs.yml` to redeploy the docs site from `main`, treat `develop` as the editable symlink branch, and keep `main` as the explicit publish-only production branch for user clones and published releases. The CAD Viewer is a local-filesystem app with no hosted deployment. --- METRICS --- - Files Extracted: 3 - Estimated Token Budget: ~4320 tokens - Recency Window: Active (< 180 days) - Canonical Reference: https://codewiki.google/github.com/earthtojake/text-to-cad