Visual self-review loop for motion graphics — render a draft, build contact sheets at every timeline beat, look at them, critique against a checklist, fix, repeat. Use after any change to a video's visuals or timing, and before calling a video done.
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Claude Motion Review Loop?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/visualxintelligence-claude-motion-review-loop)
---
name: claude-motion-review-loop
description: Visual self-review loop for motion graphics — render a draft, build contact sheets at every timeline beat, look at them, critique against a checklist, fix, repeat. Use after any change to a video's visuals or timing, and before calling a video done.
---
# Review loop
You can't watch the video, but you can look at frames. Never report a video as done without looking at contact sheets of the current render.
## Loop
1. `npm run draft` — half-resolution render to `out/draft.mp4` (fast).
2. `npm run sheet` — one frame per timeline beat, 0.3 s after it so motion has settled, tiled 4×2 into `out/sheets/beats-N.png`. Each tile is labelled with its timestamp.
3. Open every sheet image and go through the checklist below.
4. Zoom in on anything suspicious:
- `npm run sheet -- --from 3 --to 5 --every 0.2` to scrub a transition,
- `npm run sheet -- 3.7 3.75 3.8` for exact moments,
- `npm run still -- out/still.png --frame=222` for one full-resolution frame.
5. Fix, then go back to step 1. Stop when a full pass finds nothing.
6. Final: `npm run build`, then `npm run sheet -- --video out/effort.mp4` and `npm run wave`.
## Checklist
Composition
- One focal point per frame. If two things compete, one of them waits.
- Nothing collides or overlaps unintentionally, especially during transitions where an exiting and an entering element share space.
- Safe area: nothing important within ~60 px of an edge.
- Frame 0 is a real image, not black (it's the X thumbnail).
Type
- Nothing clipped by a mask, container or the frame when it shouldn't be.
- Key message readable when the sheet tile is shrunk to phone width.
- Text isn't moving while it's meant to be read.
Timing
- Each readable state holds long enough (see `motion-design` §4). If a tile mid-hold shows text still animating, the hold is too short.
- Scenes overlap instead of cutting to empty frames.
- Exits are faster than entrances.
Consistency
- Only palette colors from `C`; the accent marks the point of the frame.
- Same element looks the same in every scene it appears in.
Sound (after `npm run wave`)
- Transients sit on beat lines in `out/wave.png`.
- −14 LUFS ±1, true peak ≤ −1 dBFS.
## Report
When you finish, say what you checked, what you fixed, and which sheet shows it. Don't claim a fix you haven't re-rendered and looked at.