Reading the repo
Reading the repo
How to install on Windows
An agent skill for creating detailed, interactive isometric illustrations of real-world machines and complex systems. Generates polished SVGs with optional WebGL shaders and 3D effects.
Saved setup from 3 h ago
Will it work on my device?
CONTRIBUTING.mdThank you for helping. Anatomy is judged by how its figures look at 4× zoom, so most of this guide is about checking your work before anyone else does.
By taking part you agree to follow the Code of Conduct.
You need:
CHROME_PATH to the binary.git clone https://github.com/wheresryan22/anatomy.git
cd anatomy
To use your working copy as the skill while you change it, link it into your personal skills folder (move any installed copy out of the way first):
ln -s "$PWD" ~/.claude/skills/anatomy
For Antigravity, for OpenCode, for Codex, or for MiniMax Code:
ln -s "$PWD" ~/.gemini/antigravity/skills/anatomy
ln -s "$PWD" ~/.config/opencode/skills/anatomy
ln -s "$PWD" ~/.agents/skills/anatomy
ln -s "$PWD" ~/.minimax/skills/anatomy
Each framework-free example is one script that writes standalone pages next to itself. The built pages are committed.
node examples/dial-indicator/build.mjs
node examples/dial-indicator/build.mjs --light
node examples/desk-computer/build.mjs
node examples/desk-computer/build.mjs --light
node examples/arcade-cabinet/build.mjs
node examples/arcade-cabinet/build.mjs --light
node examples/ripple-tank/build.mjs
node examples/ripple-tank/build.mjs --light
node examples/raptor-engine/build.mjs
node examples/raptor-engine/build.mjs --light
node examples/turning-dial/build.mjs
node examples/turning-dial/build.mjs --light
node examples/turning-dial/build.mjs --light --verify
node examples/turning-dial/stress.mjs --light
The Raptor builds take a few minutes each; the rest take seconds. examples/test-rig/ and examples/spot-plate/ are React components with no build script.
After a build, git status --short must show nothing unless you meant to change a figure. CI runs exactly these commands and then git diff --exit-code.
Run the ones that match what you touched, and read every PNG they write: open it and look. Put screenshots in shots/, which is ignored.
Browser driver regressions. When changing scripts/drive.mjs, check that failed browser evaluations exit nonzero and successful evaluations still work.
node --test scripts/drive.test.mjs
Geometry audit. For figures with pipes, cables or round parts. It must end audit passed, with every failing line at 0.
node examples/raptor-engine/build.mjs --audit
Line ends. Every seam, rib, tick and pointer must end on a stroke, a dot or an outline. It must print line ends: 0; --out rings the failures.
node scripts/lines.mjs examples/dial-indicator/dial-indicator-light.html --out shots/lines-light.png
node scripts/lines.mjs examples/dial-indicator/dial-indicator.html --out shots/lines.png
Capture. Stills, phone width, hover, keys and 4× close-ups, with WebGL on.
node scripts/capture.mjs examples/ripple-tank/ripple-tank-light.html --out shots/desk.png
node scripts/capture.mjs examples/ripple-tank/ripple-tank-light.html --out shots/phone.png --width 390
node scripts/capture.mjs examples/ripple-tank/ripple-tank-light.html --out shots/joint.png --zoom 200,80,220,170
node scripts/capture.mjs examples/ripple-tank/ripple-tank-light.html --out shots/still.png --reduced
Drive. Scripted sessions: move, click, key, wait for a phase, and contact sheets slowed down to catch pops in a shader. --no-webgl checks the SVG fallback.
node scripts/drive.mjs examples/raptor-engine/raptor-engine-light.html '[["wait",1500],["key","i"],["wait",3000],["shot","shots/firing.png"]]'
node scripts/drive.mjs examples/raptor-engine/raptor-engine.html '[["wait",1500],["shot","shots/no-webgl.png"]]' --no-webgl
node scripts/drive.mjs examples/raptor-engine/raptor-engine-light.html --actions ignite.json
Anything with until or eval goes in an actions file. This ignite.json waits for the engine to rest, then films the start of ignition at 20× slow motion:
[
["key", "Escape"],
["until", "document.querySelector('[data-readout]').textContent.includes('cold')", 15000],
["slow", 0.05],
["key", "i"],
["sheet", "shots/ignite.png", 100, 16],
["slow", 1]
]
3D figures. The orbit audit is slow (budget 30 to 40 s per part for a full run), so iterate with --quick and run the full audit in the background. Only a full run's turn audit passed counts.
node examples/turning-dial/build.mjs --light --audit --quick
node examples/turning-dial/build.mjs --light --audit > audit.txt 2>&1 &
node scripts/turn-check.mjs examples/turning-dial/build.mjs --fidelity
node scripts/turn-check.mjs examples/turning-dial/turning-dial-verify-light.html --order --step 1
node scripts/turn-check.mjs examples/turning-dial/turning-dial-light.html --lines
node scripts/turn-check.mjs examples/turning-dial/turning-dial-light.html --perf --width 390 --throttle 4
node scripts/turn-bench.mjs examples/turning-dial/build.mjs
references/verify.md has every option, the review checklist and the common faults. references/3d.md covers the 3D checks.
These come from SKILL.md and references/. A pull request that breaks one will be asked to change.
"use client" are not comments and stay.kit/ or scripts/inline-kit.mjs adds an option or a function whose default is the old behaviour. Every existing example must rebuild byte-identical; CI checks it. If a change is meant to alter a figure, say so in the pull request and commit the rebuilt pages with it.screen), not dark glows darkened. Build with --light and check both pages.SKILL.md and references/ are instructions Claude follows, so keep them short, exact and in the same plain voice. When you change a kit API, update references/kit.md in the same pull request. When you add an example, give it a folder under examples/ with a build.mjs that writes <name>.html and, with --light, <name>-light.html; add it to the list in SKILL.md, the table in the README and the build list in .github/workflows/ci.yml.
main.git status --short shows only what you meant to change.Unreleased in CHANGELOG.md.CI must pass before a merge.
Use the issue forms. For a figure that came out wrong, include the prompt, the theme, where the figure lives (HTML, SVG or React), and a screenshot or close-up of the fault.
npx skills add wheresryan22/anatomy -g
The CLI asks which agents to set up (Claude Code, Antigravity, OpenCode, Codex, MiniMax Code). To skip the question, add -a claude-code, -a antigravity, -a opencode, -a codex, or -a minimax-code.
Then, in Claude Code:
/anatomy explain how a token bucket rate limiter works, interactive
For Antigravity, OpenCode, Codex, or MiniMax Code, target that agent: -a antigravity, -a opencode, -a codex, or -a minimax-code. Antigravity, OpenCode and MiniMax Code take the same /anatomy command; in Codex, type $anatomy.
That's it. No API keys and nothing to npm install: the kit uses only Node's built-in modules.
Then run powershell -ExecutionPolicy Bypass -File .\setup.ps1. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
Needs Git: winget install Git.Git
git clone https://github.com/wheresryan22/anatomy.git cd anatomy
Node.js
winget install OpenJS.NodeJS.LTS
In the maintainers' order. Do the README instructions above first — they cover steps outside the terminal.
npx skills add wheresryan22/anatomy -g
No reports for Windows yet.
Opens a chat with this manual already filled in, for Windows. It uses your own account; gitmanual sends nothing.