Install any skill in seconds. Free to start, no credit card required.
Get Started Free →forgecad/forgecad-verify-mujoco
Verify a ForgeCAD MJCF export in MuJoCo with dynamics, contacts, controls, joint travel, and rendered evidence before calling it simulation-ready.
Passed 16 of 18 test cases with the skill, and 7 of 18 without it.
and 8 more in the full report
11 fixed8 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 10 test cases the skill fixed. Same model, same prompt, with and without the skill.
What exact command line instruction exports `src/claw.forge.js` to MJCF format for physics verification in `/tmp/forgecad-mjcf`?
| Checked | Without skill | With skill |
|---|---|---|
| Specifies `forgecad export mjcf src/claw.forge.js --output /tmp/forgecad-mjcf`. | Missed | Passed |
The instructions your model reads when the skill loads.
Use this when forgecad export mjcf ... is part of the deliverable. A model is not sim-ready just because forgecad check simready passes or the MJCF file loads: it must be loaded in MuJoCo, stepped under gravity, driven with the intended controls, contact pairs inspected, and rendered from useful views.
Routing: geometry-only visual inspection -> forgecad-inspect-model; model authoring/API questions -> forgecad; building a new model -> forgecad-build-model.
rm -rf /tmp/forgecad-mjcf && mkdir -p /tmp/forgecad-mjcf
forgecad export mjcf path/to/model.forge.js --output /tmp/forgecad-mjcf
scene.xml, not only the model XML, so the floor/camera/package context is included.xmat/xpos. Joint ref/default and connector frames can disagree with visual intuition.Sim.collider.none(...) just to make motion pass. If full visual mesh contact is unstable, use a physically defensible simplified collider or proxy and state what physical surface it represents.This skill ships a MuJoCo smoke verifier:
uv run --python 3.11 --with mujoco --with pillow \
python <this-skill-dir>/scripts/mujoco_verify.py /tmp/forgecad-mjcf \
--settle-seconds 2 \
--seconds 8 \
--actuator drum_velocity=-0.75 \
--watch-joint drum_joint \
--expect-drive-cycles drum_joint=-0.06:-0.03 \
--expect-final-qvel drum_joint=-0.02:0.02 \
--render-dir /tmp/forgecad-mjcf/verify \
--camera-preview-grid
Use --actuator name=value more than once for multi-actuator models. Use --expect-drive-cycles joint=min:max to assert signed final-minus-settled revolute travel in cycles/turns. Use --expect-drive-delta joint=min:max when you want raw MuJoCo qpos units instead. Use --expect-final-qvel joint=min:max to assert terminal velocity when the mechanism should stop or continue at a bounded speed. The script prints JSON with root drift, initial-to-final joint delta, post-settle drive delta, derived cycle counts, final velocities, expectation ranges, and top contact pairs, then writes PNG frames if --render-dir is supplied.
test cases passed, vs 7 / 18 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.