Help us improve
Share bugs, ideas, or general feedback.
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.
npx claudepluginhub earthtojake/text-to-cad --plugin cadHow 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__.pyConvert URDF robot descriptions to MJCF format for MuJoCo simulation. Handles meshes, joints, actuators, and collision geometries.
Models discrete-event systems with processes, queues, and shared resources using Python. Use for manufacturing, service operations, network traffic, logistics simulations.
Share bugs, ideas, or general feedback.
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.
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.md