agentleFS
VisualxIntelligenceVisualxIntelligence/motion-tools-and-skills/skills/claude-motion/claude-motion-motion-design/SKILL.md

claude-motion-motion-design

Skill9 starsChanged 23 days agoMITView on GitHub

Taste rules for Remotion motion graphics — timing, easing, springs, typography, color, texture, and scene continuity, with concrete numbers. Use whenever you create, animate, retime, or polish a video, composition, scene, or transition in this repo.

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 2 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Every beat is a named timestamp in seconds in timeline.json, grouped by scene (s1, s2, …).

    line 12
  2. Very specific:

    Never hardcode a start time inside a component.

    line 13
  3. Very specific:

    Use prog(t, t0, t1, ease) for tweens and band(x, a, b) to derive one animation from another value (e.g.

    line 28
  4. Distinctive:

    Prefer persistent objects over cuts.

    line 74
  5. Distinctive:

    Every transition is motivated by an object on screen (the five result dots merge into one, which becomes the iris).

    line 75
  6. Very specific:

    Use velocity: derive motion trails / squash from value(frame) - value(frame - 1) instead of faking it.

    line 76
  7. Very specific:

    Write the beats into timeline.json first (a storyboard in numbers).

    line 90
  8. Very specific:

    Run the review-loop skill after every meaningful change.

    line 92
  9. Very specific:

    Run the sound-design skill once picture timing is locked.

    line 93

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Motion design

Remotion teaches you the API. This file is the taste. Every number below comes from a shipped piece (src/EffortVideo.tsx); treat them as defaults you deviate from on purpose, not by accident.

1. Time lives in timeline.json

  • Every beat is a named timestamp in seconds in timeline.json, grouped by scene (s1, s2, …). Components read it through TL from src/lib.ts; the video's cue sheet in sfx/cues/ reads the same file. That is what keeps picture and sound locked.
  • Never hardcode a start time inside a component. Offsets relative to a beat (s1.exit + 0.05) are fine.
  • Retiming = editing timeline.json, then npm run sfx so audio follows.
  • Everything is a pure function of frame. No CSS transitions or keyframes, no Math.random() (use rand(n)), no Date. Anything else flickers or drifts at render time.

2. Easing

CurveUseSource
easeOut = bezier(0.16, 1, 0.3, 1)entrances, reveals, anything arrivinglib.ts
easeIn = bezier(0.6, 0, 0.9, 0.35)exits — leaves fast, doesn't lingerlib.ts
easeInOut = bezier(0.65, 0, 0.35, 1)moves between two states (flip, dock, morph)lib.ts
overshoot bezier(0.55, 0, 0.2, 1.12)a value that "lands" (slider climbing to a level)effortAt

Linear is only for continuous motion: rotation, drift, grain, ticking hands.

Use prog(t, t0, t1, ease) for tweens and band(x, a, b) to derive one animation from another value (e.g. captions from the slider position) instead of giving it its own clock.

3. Springs (via sp(frame, startSec, config))

Feeldamping / stiffness / massUsed for
default settle14 / 140 / 0.8general UI entering
heavy, calm15–20 / 140–240 / 0.6–1big panels, the rewind
knob / notch12 / 190 / 0.75a control snapping to a step
pop9–11 / 200–230 / 0.7callouts, badges, success dots
elastic accent8 / 200one hero moment per video, not more

Springs for things that feel physical (UI, objects). Bezier tweens for type and camera-like moves.

4. Timing

  • Stagger words by ~0.09 s, list items/chips by ~0.2–0.25 s, rings/dots by ~0.06 s.
  • Word reveal ≈ 0.8 s with Mask (slide up out of a clip + slight tilt).
  • Exits are ~half an entrance (0.35–0.55 s vs 0.7–1.25 s). Exits use easeIn.
  • Overlap scenes. The next scene starts drawing on before the previous one has fully left (s2.drawOn 4.02 s < s1.flipEnd 4.4 s). Hard gaps read as "loading".
  • Typing ≈ 0.035 s per character, caret blinks at ~2.4 Hz when idle.
  • Reading holds. Every readable state needs a hold after it settles: ≥ 1 s for a short phrase, add ~0.25 s per word beyond three, ≥ 2 s for the final hook. The 22 s cut of the effort video exists because the 15 s one flashed text too fast — when in doubt, hold longer and animate less.

5. Typography

  • Max three families: display serif (Instrument Serif), UI sans (Inter), mono (JetBrains Mono) for labels, prompts, numbers.
  • Display type is big (≈ 138 px on a 1080 canvas) with tight tracking (-0.02em), lineHeight: 1.
  • One accent per line: a single italic word in the accent color carries the point (Same *prompt.*).
  • Mono labels: uppercase, letterSpacing: 0.2–0.24em, muted color. They're decoration; anything the viewer must read goes big.
  • Phone test: at 360 px wide (how X shows it in the feed) the key message must still read. Check it on the contact sheet.

6. Color

  • Palette tokens live in C (lib.ts). Don't introduce new hex values in components.
  • One accent color (coral) and it means something: the thing that changed, the answer, the winner. If everything is coral, nothing is.
  • Drive glow from state, not time (glow = effort): light should explain the story.

7. Texture — nothing is dead-still

  • Film grain overlay (Grain, opacity ≈ 0.09, reseeded on twos).
  • Vignette plus a dot grid drifting a few px/s (Background).
  • Hand-drawn "line boil" (WobbleFilter) for sketchy/low-fidelity states, faded out as quality rises.
  • Idle elements breathe: a ticking clock, a blinking caret, a slow rotation.

8. Continuity and transitions

  • Prefer persistent objects over cuts. The prompt bar, the spark and the slider travel through scenes and change role; that's what makes it feel designed rather than assembled.
  • Every transition is motivated by an object on screen (the five result dots merge into one, which becomes the iris). No generic wipes.
  • Use velocity: derive motion trails / squash from value(frame) - value(frame - 1) instead of faking it.
  • One hero moment per video (the iris + impact). Build to it; don't spend it early.

9. Anti-patterns

  • Everything fading in at once, or everything using the same duration.
  • Linear easing on anything that starts or stops.
  • Text that moves while it's supposed to be read.
  • More than one focal point per frame.
  • Content within ~60 px of the frame edge (safe area) unless it's intentionally cropped.
  • An empty or black frame 0 — X autoplays muted and the first frame is the thumbnail.

Workflow

  1. Write the beats into timeline.json first (a storyboard in numbers).
  2. Build scenes as components in src/scenes/, shared bits in src/components/.
  3. Run the review-loop skill after every meaningful change.
  4. Run the sound-design skill once picture timing is locked.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.