Skip to content
Back to skills

Authoring Motion Diagrams

ASecurity

Use when adding a plugin to the marketplace, or when authoring, editing, or re-rendering a scene under scripts/animations/scenes/ — including when a scene fails the render contract, the contrast gate, or the grid baseline.

  • 95 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added August 30, 2026
ai-agentsgonode

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned August 30, 2026

npx -y skills add 2389-research/claude-plugins --skill authoring-motion-diagrams --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Authoring Motion Diagrams?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Authoring Motion Diagrams
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/2389-research-authoring-motion-diagrams/badge)](https://www.skillsdirectory.com/skills/2389-research-authoring-motion-diagrams)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: authoring-motion-diagrams
description: Use when adding a plugin to the marketplace, or when authoring, editing, or re-rendering a scene under scripts/animations/scenes/ — including when a scene fails the render contract, the contrast gate, or the grid baseline.
---

# Authoring motion diagrams

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

| 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 mechanics
- `references/mechanic.md` — the portable declarative-SVG-motion doc
- `references/scene-template.svg` — a conforming skeleton

Files in this skill

  • SKILL.md3.8 KB
  • references/binding.md5.3 KB
  • references/mechanic.md13.4 KB
  • references/scene-template.svg2.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.