Moving Parts banner
cmun2 cmun2

Moving Parts

Development community

Description

Describe a system. Get a simulation you can poke. An agent skill that turns any system into one self-contained HTML file with real dynamics, live controls, and a conservation check that proves it is computed rather than drawn.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

moving-parts

**Describe a system. Get a simulation you can poke.**

An agent skill for Claude Code, Codex, and anything else that reads `SKILL.md`. Ask for a model of something that changes over time and you get back one HTML file — real dynamics, live controls, no build step, no CDN, nothing to install. Mail it to someone. It opens on a plane.

npx skills add cmun2/moving-parts

Why not just ask for it directly

Both planets below start on the same circular orbit and obey the same law of gravity. The only difference is how the arithmetic advances them.

Two planets from identical initial conditions. The RK4 one traces a clean circle; the Euler one spirals outward past it.

The red one is Euler, which is what a simulation written in an afternoon usually uses. Nothing is pushing it outward — the method is inventing energy. After 14 simulated years it is at **2.13 AU** instead of 1.00, and on screen that looks like a slowly widening orbit rather than like a bug.

Same request, two implementations, measured:

after 10 simulated years radius (should be 1.000 AU) energy error angular momentum error
written the usual way 1.294 AU 22.93% 13.91%
written to this skill 1.000 AU 5.4 × 10⁻¹¹% 2.7 × 10⁻¹¹%

And the part that is worse than inaccuracy. The usual version advances by the frame delta, so **the answer depends on the monitor it runs on**:

same 10 years, different refresh rate usual this skill
30 fps 8.836 AU 0.999288
60 fps 4.476 AU 0.999978
144 fps 2.922 AU 1.000000

Both versions look like a planet going round. The difference only ever shows up as a number, and putting that number on the screen is what this skill does.

Reproduce: [`verify/orbits.mjs`](verify/orbits.mjs) — plain Node, no dependencies.


Every one of these came out of the same