One painting, rigged with @rig-c/parts and compiled and rendered by rig-c. The swing is one more bone of the same skeleton; the hair, the skirt and the legs follow it by physics, and the meshes and bones shown are the render's own geometry. The sky, the lights and the captions are composited around the render. How it was made, and one command to rebuild it →
2D character rigs, authored by an AI agent that cannot see them — and verified before anything is written. One painting goes in; a rigged, animated character that plays in the browser comes out. Every stage prints named, numeric findings and refuses by name what it cannot verify, so a wrong file never reaches the disk.
An agent that has never seen these tools is handed one painting and the installed packages — nothing else — and has to build a rig that passes its check, add a wave, and correct a draft that fails. It writes down what it expects before every step. rig-c/exam is that exam, and these are the models that have sat it:
| model | sittings | lines passed, of lines graded | minutes for the three tasks |
|---|---|---|---|
| Claude Haiku | 1 | 16 / 16 | 21 |
| Gemini 3.8 Flash | 1 | 16 / 16 | 20 |
gpt-6-sol (not established which model) |
1 | 16 / 16 | 14.1 |
| Sol 6.1 | 2 | 32 / 32 | 14.2 to 15.3 |
Every line passed, and the three models named are each their vendor's lighter tier. Sit it with yours: paste one prompt into any coding agent, open a pull request, and the run is regraded from the files it hands in and added to the table — with its journal, and whatever it found wrong with the tools.
| Repository | Install | What it does | |
|---|---|---|---|
| 1 | parts | npm i -D @rig-c/parts |
Assembles one character painting's decomposed layers into rig-ready parts, then authors weighted meshes, bone chains, physics and a looping idle over them |
| 2 | core | npm i -D rig-c |
The rig compiler: a rig spec and a motion spec in, skeleton data out — in the Spine 4.3 format, with its own compiled model beside it — gated by named assertions before a byte is written |
| 3 | play | npm i @rig-c/play |
Plays the compiled model in the browser, as plain DOM elements or one canvas: tracks, mixing, additive layers, per-pose bone hooks |
- The messages are the interface. A refusal names the object, the value found and the value required — an agent reads the line and knows which file to change.
- Nothing is invented. Where the input is silent the tool says so; it does not guess a value and carry on.
- Emit only after green. The compiler writes nothing that fails its gate.
core and parts each carry a docs/AUTHORING.md — the guide an agent authors from — and ship as agent skills; play's README is its guide.
rig-c is also published as @rig-c/core. rig-parts and rig-play are @rig-c/parts and @rig-c/play under the names they shipped as before the scope; spine-rigc, spine-parts and spine-html are the same packages under their first names. Every alias carries the same files at every version.
The tools are MIT licensed; the exam's content is CC BY-NC 4.0.
