What does this skill do, and when should you use it?
The sdf skill from the text-to-cad repository focuses on authoring, validating, and handing off SDFormat (SDF) documents — models, worlds, links, joints, poses, sensors, lights, and plugins in .sdf XML. It drives the cadgen CLI through uv, ships a document-level validator, can run gz sdf --check for Gazebo-target validation, and renders PNG snapshots via a headless browser for human review. Note that it handles SDFormat, not signed-distance-field geometry, and does not replace real simulator load testing. It ships under MIT as part of the text-to-cad collection (13 skills) and installs into Claude Code, Codex, Cursor, Gemini, Grok Build, and other skills-compatible agents.
- Reads and writes .sdf XML directly, maintaining a design-ledger comment block with explicit relative_to / expressed_in frame semantics
- Validates document shape, joints, mesh URIs, inertials, sensors, and plugins with cadgen sdf validate (--strict / -- supported)
- Runs gz sdf --check automatically when gz is on PATH (--gz-check auto/required/never)
- Renders robot PNG snapshots with cadgen sdf snapshot, posing joints via --joint-values
- Launches the CAD Viewer (cadgen viewer --detach) for visual review of placement, resources, and joints
- Derives SDF from an existing URDF per its interoperability guidance instead of re-authoring geometry
- A robotics engineer exporting a URDF-described robot as a reusable SDF model for Gazebo
- A simulation engineer building world files with sensors, lights, and plugins who needs correct frame semantics and SI units
- A team receiving third-party .sdf files that need static review and structural validation before merge
- A developer adding link meshes, inertia tensors, and joint axes to a robot model without hand-computing values
- Tasks needing signed-distance-field geometry modeling — explicitly out of scope
- Raw geometry generation or MoveIt planning semantics (covered by sibling URDF/SRDF skills)
- Proving simulator dynamics — the validator and snapshots do not execute plugins, so real simulator load tests remain necessary
How do you install this skill?
- Telemetry is on by default and reported via PostHog; run `uvx cadgen telemetry off` or set DO_NOT_TRACK=1 before first use if this matters to you.
- On Windows 11 with Smart App Control enabled, cadgen fails due to the unsigned OCP native module; disable it or use WSL.
- Bundled validation is not simulator proof: plugin loading, dynamics, and sensor behavior must be verified in the target simulator environment.
- Core runtime depends on uvx/PyPI downloads of cadgen and a headless browser from overseas infrastructure; mainland-China network reachability is unstated and may be limited, with no mirror or offline fallback documented.
- The CAD Viewer binds only to loopback and serves unauthenticated; never expose it beyond localhost.
- Publisher is not verified by the FollowSkills registry; treat identity as unknown.
- Shell / CLI
- Network access
- Local filesystem
uvcadgen 0.7.20 (Python 3.13 via uvx)optional: gz (Gazebo CLI) for gz sdf --checkheadless browser for snapshots
The recommended route is asking your agent to install the whole text-to-cad collection:
Any agent
Install text-to-cad from https://github.com/earthtojake/text-to-cadClaude Code
claude plugin marketplace add earthtojake/text-to-cad#latest
claude plugin install text-to-cad@earthtojakeCodex
codex plugin marketplace add earthtojake/text-to-cad --ref latest
codex plugin add text-to-cad@earthtojakeCursor
git clone --depth 1 --branch latest https://github.com/earthtojake/text-to-cad ~/.cursor/plugins/local/text-to-cadGemini
gemini extensions install https://github.com/earthtojake/text-to-cad --ref latest --consent --auto-updateGrok Build
grok plugin install earthtojake/text-to-cad@latest --trust
grok plugin enable text-to-cadOther agents (skills only)
npx skills add earthtojake/text-to-cad#latestHow do you use this skill?
Once installed, send your agent any of these to trigger it:
- Convert my robot.urdf into a Gazebo-ready SDF model file and validate the poses and joints
- Write an SDF world for this quadruped with camera and lidar sensors, with explicit relative_to frames
- Validate model.sdf and give me a snapshot; check that all mesh URIs resolve
- Review this third-party .sdf file, run cadgen sdf validate --strict, then list all assumptions and risks
The skill triggers when the agent encounters .sdf / SDFormat tasks, or when you name an .sdf file in your prompt. The workflow: locate the target file and its consumer, establish the design ledger, read the frame-semantics reference, author the XML directly, validate with cadgen, optionally run target-simulator smoke tests, show the result in the CAD Viewer, then report checks run, skipped, and assumptions. Key commands:
cadgen sdf validate path/to/model.sdf
cadgen sdf validate path/to/model.sdf --strict --
cadgen sdf snapshot path/to/model.sdf review.png
cadgen viewer --host 127.0.0.1 -- --detach
cadgen doctor <skill-dir>Snapshots accept --joint-values (a {joint: degrees} JSON object) and --display render for the photographic scene; link meshes must be present (run git lfs checkout first) or the snapshot fails.
What are this skill's strengths and limitations?
- Built-in validator covers pose/frame graphs, joints, inertials, sensors, and plugins, and calls gz sdf --check automatically when available
- Enforces explicit frame semantics (relative_to/expressed_in), guarding against SDF's most common implicit-frame failure mode
- Supports deriving SDF from URDF, avoiding duplicated modeling work
- MIT licensed, runs locally; validation itself needs only the Python standard library
- Depends on uv and a pinned cadgen 0.7.20 install; first run downloads the runtime plus a headless-browser snapshot
- Windows 11 Smart App Control blocks the unsigned OCP native module, breaking every cadgen command (must disable it or use WSL)
- Telemetry is on by default; disable with uvx cadgen telemetry off
- Validation and snapshots do not execute simulator plugins, so dynamic behavior still needs real simulator verification
How does this skill compare with similar options?
Side by side with related skills; every score comes from the same FSRS standard.
| Skill | FS score | Stars | Last updated | License |
|---|---|---|---|---|
| text-to-cad SDF Skill this page | 55 · Use with care | ★ 19k | 1d ago | MIT |
| SRDF Skill: MoveIt Planning Semantics | 62 · Recommended | ★ 19k | 1d ago | MIT |
| URDF Robot Description Skill | 57 · Use with care | ★ 19k | 1d ago | MIT |
| Isaac for Healthcare Dataset Replay ✓ NVIDIA · Official | 48 · Use with care | ★ 3.5k | 3d ago | Apache-2.0 |
| i4h Agentic Workflow Guide ✓ NVIDIA · Official | 46 · Use with care | ★ 3.5k | 3d ago | Apache-2.0 |
Within the same repository, the URDF skill handles robot structure files (links, joints, limits) while the SDF skill covers simulator-side models and worlds; when a URDF already exists, this skill explicitly requires deriving SDF from it rather than re-authoring. They are complementary, not competing.
How did FollowSkills review this skill?
Evidence shows the skill operates mostly locally: SDF authored as direct XML, validator runs locally by default, CAD Viewer binds to 127.0.0.1, and SECURITY.md explicitly discloses the unauthenticated loopback trust boundary. Telemetry is on by default but extensively disclosed at repository level with opt-out mechanisms (telemetry off / DO_NOT_TRACK), satisfying data-flow transparency. Dependencies are pinned via uvx to cadgen==0.7.20. Deductions: no explicit user-confirmation or rollback conventions, default-on telemetry with third-party PostHog/update-check endpoints, and unverified publisher identity prevent full marks.
Docs are highly self-consistent: command syntax, --gz-check behavior, failure feedback (report checks run/skipped), and explicit errors like unhydrated Git LFS pointers are documented, with controlled, diagnosable failure modes. However, a static read cannot execute key paths; no committed test evidence covers the sdf validator itself, and snapshot/browser runtime behavior is unverifiable. Calibration caps this at 10; 1 point deducted because validator coverage on abnormal input rests on prose assertions only.
Trigger precision is strong: explicit keyword list for .sdf/SDFormat plus explicit exclusion of signed-distance-field confusion; scope and non-fit boundaries (no planning semantics, never papering over wrong upstream data) are clear; multi-agent environment fit is documented. Deductions: the core runtime depends on uvx/PyPI downloads of cadgen and a headless browser, with docs site and update endpoint all overseas services and no mainland-China reachability statement; no Chinese-language support declared, so not 15.
Information architecture is well layered: SKILL.md uses progressive disclosure, references/ cover workflow, guardrails, frame semantics, worked examples, and smoke tests; known limitations (Windows Smart App Control, LFS pointers, plugin non-execution) are disclosed; MIT license and provenance link are clear. Deductions: no per-skill changelog/version history in the skill directory; version governance leans on the repository as a whole; maintenance responsibility is a personal repo attribution; external reference links are not localized.
The deliverable is directly usable .sdf files plus a structured validation report; the workflow mandates validation, smoke tests, and assumption disclosure, giving clear marginal value (reducing common SDF frame-semantics errors). But static review cannot confirm direct usability: bundled validation is only a preflight, and simulator/plugin behavior must be verified in the user's environment; the repo-level test badge is not evidence covering this skill's key paths, so capped at 7 with 1 deducted for limited direct-usability evidence.
Repository-level CI (test.yml) and example fixture models exist, with README badges pointing to real workflows — limited primary material. But no committed test coverage evidence for the sdf skill's key paths (validate/snapshot); claims are largely self-descriptive with no independent third-party reproduction, capping at 5 statically, 1 deducted for single thin evidence type.
Open a dimension to read why it scored that way
Evidence confidence:Low — Mostly static review, author material or a limited demo; useful for discovery, not high-risk decisions.
See the full review method →