From cad
Generates and validates SDFormat model/world files for robot simulators like Gazebo. Works with .sdf XML, Python gen_sdf() sources, geometry, sensors, physics, and plugins.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cad:sdfThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when the deliverable is an SDFormat document or a Python `gen_sdf()` source. SDFormat describes simulator and world behavior: models, worlds, frames, poses, links, joints, inertials, visuals, collisions, sensors, lights, physics, plugins, includes, and simulator metadata.
LICENSEagents/openai.yamlreferences/builder-helpers.mdreferences/design-ledger.mdreferences/examples.mdreferences/frame-semantics.mdreferences/gen-sdf.mdreferences/generator-contract.mdreferences/implementation-notes.mdreferences/interoperability.mdreferences/llm-guardrails.mdreferences/sdf-workflow.mdreferences/smoke-tests.mdreferences/validation.mdrequirements.txtscripts/packages/cadpy_metadata/pyproject.tomlscripts/packages/cadpy_metadata/src/cadpy_metadata/__init__.pyscripts/packages/cadpy_metadata/src/cadpy_metadata/generator.pyscripts/packages/cadpy_metadata/src/cadpy_metadata/py.typedscripts/sdf/__init__.pyUse this skill when the deliverable is an SDFormat document or a Python gen_sdf() source. SDFormat describes simulator and world behavior: models, worlds, frames, poses, links, joints, inertials, visuals, collisions, sensors, lights, physics, plugins, includes, and simulator metadata.
This skill is for SDFormat, not signed-distance-field geometry.
gen_sdf() as source of truth. Treat configured .sdf files as generated artifacts unless the user explicitly asks for direct XML editing.version="1.12" for new outputs unless the target consumer constrains the version.references/design-ledger.md and references/llm-guardrails.md.scripts/sdf or the repository's existing SDF launcher. Do not run directory-wide generation.gz sdf --check, simulator load, joint motion, and plugin/sensor startup.Use this skill for SDFormat outputs and generators. Do not use it for signed-distance-field modeling, raw geometry generation, planning semantics, or to paper over incorrect upstream robot/source data unless the task is explicitly simulator-only.
After completing SDF work that creates or modifies a .sdf, you must ALWAYS hand the explicit file path to $cad-viewer when that skill is installed. $cad-viewer must start CAD Viewer if it is not already running and return link(s) to the relevant created or updated file(s); if $cad-viewer is unavailable or startup fails, report that instead of silently omitting the handoff.
gen_sdf() source and intended .sdf output.references/frame-semantics.md before editing any <pose>, <frame>, joint axis, relative_to, expressed_in, nested scope, sensor frame, or plugin frame.Run with the project or workspace Python environment. Treat python in examples as an interpreter placeholder; if bare python is unavailable, substitute python3, a project virtualenv interpreter, or the configured interpreter path.
python scripts/sdf path/to/source.py
python scripts/sdf path/to/source.py -o path/to/output.sdf
python scripts/sdf path/to/a.py=out/a.sdf path/to/b.py=out/b.sdf
Plain Python targets write sibling .sdf files beside their sources. -o / --output is valid only with one plain target. SOURCE.py=OUTPUT.sdf supports custom multi-target destinations.
If the runtime supports optional external checking:
python scripts/sdf path/to/source.py --gz-check auto
python scripts/sdf path/to/source.py --gz-check required
python scripts/sdf path/to/source.py --gz-check never
gz sdf --check is optional target-consumer validation. It should be reported as skipped when unavailable unless explicitly required.
When finishing an SDF task, include a compact report:
Generated: path/to/model.sdf from path/to/model.py
Checks run:
- bundled SDF validation: passed
- gz sdf --check: skipped, gz not installed
- simulator load: skipped, target simulator unavailable
- viewer handoff: `$cad-viewer` link returned
Assumptions:
- Assumed mesh units are meters.
- Assumed lidar frame is coincident with lidar_link.
Risks:
- Camera plugin filename was not verified in the target simulator environment.
references/gen-sdf.mdreferences/generator-contract.mdreferences/sdf-workflow.mdreferences/builder-helpers.mdreferences/llm-guardrails.mdreferences/design-ledger.mdreferences/frame-semantics.mdreferences/validation.mdreferences/smoke-tests.mdreferences/interoperability.mdreferences/examples.mdreferences/implementation-notes.mdnpx claudepluginhub earthtojake/text-to-cad --plugin cadConvert URDF robot descriptions to MJCF format for MuJoCo simulation. Handles meshes, joints, actuators, and collision geometries.
Coordinates end-to-end CAD/source-asset to SimReady workflow including conversion, material/physics assignment, validation, conformance, and optional package creation. For broad CAD-to-SimReady or prop packaging requests.