Authoring motion diagrams

SkillMedia

This 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.

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

  1. Read the plugin's category from .claude-plugin/marketplace.json, then take that category's mark and ink from scripts/animations/palette.js. One accent per scene.
  2. Copy references/scene-template.svg to scripts/animations/scenes/<plugin>.svg.
  3. Compose the beats. references/binding.md has the tokens, the beat pattern, and the scene mechanics already in use — reuse one rather than inventing a shape.
  4. node scripts/animations/render.js --check — validates the contract in about a second, no Chrome. Run it constantly, not once at the end.
  5. node scripts/animations/preview.js <plugin> — one frame, ~1s. AT=0.3 for 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.
  6. node scripts/animations/render.js <plugin> — mp4 + poster, ~75s.
  7. npm run generate && npm test.
  8. Commit the scene, the mp4 and the poster together. They drift the moment they don't.

What --check enforces

GateRule
Cycleevery dur is 8s, repeatCount="indefinite", events placed in keyTimes
CountskeySplines = n−1, values = n, keyPoints = n. A mismatch disables the animation silently
Grounda #faf9f6 rect is the first element
Typeevery text fill is a legal ink token — 4.5:1 on paper, computed not judged
Blockssolid rects use a category ink, so white type on them clears 4.5:1
Gridplacement 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

MistakeWhat 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 inkdots are marks at the 3:1 floor — leave them mark
Editing anim.mp4 or shipping a scene without re-renderingvideo and source drift, and nothing reports it
Nudging geometry off-grid in an existing sceneratchet fails the build; the baseline only goes down

References

  • references/binding.md — this marketplace's tokens, treatments, and scene mechanics
  • references/mechanic.md — the portable declarative-SVG-motion doc
  • references/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