Authoring motion diagrams
SkillMediaThis skill lets your AI create, edit, and re-render animated diagram scenes stored under scripts/animations/scenes/. When a scene fails a quality check — the render contract, the contrast gate, or the grid baseline — your AI can find what went wrong and fix it. It also covers the steps for adding new items to the marketplace.
Available today. Use it from your connected AI after setup.
No other account needed.
After adding it, ask your AI to create a new motion diagram scene or rework an existing one in scripts/animations/scenes/. If a scene fails one of the checks, ask it to find and fix the problem.
Then ask your AI: use the Authoring motion diagrams skill
What your AI can do with it
- Author new motion diagram scenes
- Edit existing scenes under scripts/animations/scenes/
- Re-render a scene after changes
- Diagnose and fix scenes that fail the render contract
- Fix scenes flagged by the contrast gate or grid baseline checks
- Add new items to the marketplace
What this skill tells your AI
The instructions your AI receives, as published by 2389-research/claude-plugins in .claude/skills/authoring-motion-diagrams/SKILL.md and read by ahel’s review.
Every marketplace entry has one authored scene at scripts/animations/scenes/<plugin>.svg,
shown on that plugin's detail page. docs/plugins/<plugin>/anim.mp4 and anim-poster.png
are derived from it. Never patch the video — change the scene and re-render.
A scene must say what the plugin does: what moves, in what order, and what is different at the end. A scene where things merely move is decoration.
Flow
- Read the plugin's category from
.claude-plugin/marketplace.json, then take that category'smarkandinkfromscripts/animations/palette.js. One accent per scene. - Copy
references/scene-template.svgtoscripts/animations/scenes/<plugin>.svg. - Compose the beats.
references/binding.mdhas the tokens, the beat pattern, and the scene mechanics already in use — reuse one rather than inventing a shape. node scripts/animations/render.js --check— validates the contract in about a second, no Chrome. Run it constantly, not once at the end.node scripts/animations/preview.js <plugin>— one frame, ~1s.AT=0.3for another moment. This catches what no checker can: a label sitting on a connector, a box crossing its frame, a path ending in mid-air.node scripts/animations/render.js <plugin>— mp4 + poster, ~75s.npm run generate && npm test.- Commit the scene, the mp4 and the poster together. They drift the moment they don't.
What --check enforces
| Gate | Rule |
|---|---|
| Cycle | every dur is 8s, repeatCount="indefinite", events placed in keyTimes |
| Counts | keySplines = n−1, values = n, keyPoints = n. A mismatch disables the animation silently |
| Ground | a #faf9f6 rect is the first element |
| Type | every text fill is a legal ink token — 4.5:1 on paper, computed not judged |
| Blocks | solid rects use a category ink, so white type on them clears 4.5:1 |
| Grid | placement on 20px; existing scenes carry a frozen debt in grid-baseline.json and may only improve |
palette.js re-derives its own contrast claims before any scene is checked, so a token
edited below its floor fails the build rather than shipping quietly.
What no gate can check
- Two beats per change. Transit says something arrived; settlement says the thing is now different. One beat alone reads as decoration.
- The changed state holds until 0.95 of the cycle. A transition with no hold shows motion and communicates no outcome.
- Routes avoid what they don't address. A path to C that crosses B reads as having entered B.
- Position is pre-allocated. Draw routes as faint dashed guides from frame one, so the layout never reflows as parts land — reflow reads as rewriting, not extending.
- The poster carries the whole diagram for a reduced-motion reader. Check it, not just the video.
Common mistakes
| Mistake | What happens |
|---|---|
Chaining with begin="other.end" | can't scrub to a frame; export breaks |
| A lighter grey "because the label is secondary" | fails the floor; there is no legal grey above muted |
Recolouring a travelling dot to ink | dots are marks at the 3:1 floor — leave them mark |
Editing anim.mp4 or shipping a scene without re-rendering | video and source drift, and nothing reports it |
| Nudging geometry off-grid in an existing scene | ratchet fails the build; the baseline only goes down |
References
references/binding.md— this marketplace's tokens, treatments, and scene mechanicsreferences/mechanic.md— the portable declarative-SVG-motion docreferences/scene-template.svg— a conforming skeleton
Signals
- GitHub stars
- 95
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
authoring-motion-diagrams- Source
- github.com/2389-research/claude-plugins