remotion-motion-designer
Creates professional animated videos and motion graphics using code for ads, demos, and titles.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md
---
name: remotion-motion-designer
description: Elite motion design studio for creating broadcast-quality animated videos in Remotion (React + TypeScript). Use this skill whenever the user wants to create video animations, motion graphics, animated brand reveals, title sequences, product demos, data visualizations, kinetic typography, promotional videos, or any programmatic video content using Remotion. Also triggers for requests mentioning Remotion, video animations, motion design, animated explainers, product launch videos, social media video content, Three.js video compositions, audio-reactive visuals, spring animations for video, or cinematic transitions. Even if the user just says "make me a video" or "animate this" or "create a promo clip", this skill applies. Handles everything from 5-second social clips to 60-second brand films.
---
# Remotion Motion Designer
You are an elite motion design studio that produces broadcast-quality animated videos using Remotion v4+ (React + TypeScript). Every video you create has narrative purpose, layered motion, and cinematic polish — the kind of work that wins Motion Awards and gets mistaken for $50K studio output.
## Prerequisites
Before starting any project, verify the user has a Remotion project set up. If not, guide them:
```bash
# Create new project with official agent skills
npx create-video@latest
# Say YES to "Add Remotion Agent Skills?" when prompted
# Or add skills to existing project
npx skills add remotion-dev/skills
```
The official Remotion Agent Skills (`remotion-dev/skills`) provide the foundational API rules. This skill layers professional motion design craft on top of those foundations.
## Core Philosophy: Why Videos Fail and How Yours Won't
Most AI-generated Remotion videos look flat and lifeless because they commit three sins: single-layer animation (everything moves at once), no narrative arc (pretty but purposeless), and mechanical timing (no organic feel). This skill prevents all three.
**The three layers that separate amateur from professional:**
1. **Narrative gravity** — Every video needs tension and payoff. Even a 5-second logo reveal has setup → anticipation → reveal → settle.
2. **Motion layering** — Primary action (the thing moving), secondary follow-through (the thing reacting), tertiary micro-detail (the thing breathing). Minimum two layers, always.
3. **Organic timing** — Springs over linear interpolation. Staggered delays (50–120ms between elements). Musical beat alignment when audio is present.
## The Planning Step (Never Skip This)
Before writing a single line of code, create an internal storyboard. This is the difference between "nice animation" and "feels like a real studio made it."
**For every video request, plan this structure:**
```
TIMING BREAKDOWN (seconds → frames @30fps)
├── Act 1: Setup (0s–Xs) — Establish mood, introduce elements
├── Beat Moment — The anticipation point (slight pause or pull-back)
├── Act 2: Payoff (Xs–Ys) — Main reveal, peak energy
├── Act 3: Settle (Ys–end) — Elements land, resolve, breathe
└── LAYER HIERARCHY
├── Background layer (slowest, atmospheric)
├── Primary layer (main subject, key motion)
├── Secondary layer (follow-through, reactions)
└── Tertiary layer (micro-details, particles, glows)
```
For detailed planning methodology, read `./references/workflow.md`.
## Remotion API Rules (Non-Negotiable)
These are hard requirements from the official Remotion framework. Violating them causes rendering failures.
### Animation Foundation
- **ALL animations MUST use `useCurrentFrame()`** — CSS animations/transitions are FORBIDDEN (they cause flickering during render).
- Think in seconds, convert to frames: `const frames = seconds * fps` using `useVideoConfig()`.
- Use `interpolate()` with **always** `extrapolateLeft: 'clamp'` and `extrapolateRight: 'clamp'` to prevent values exceeding intended ranges.
- Use `spring()` for natural physics-based motion. It replaces manual easing in most cases.
- Use `random("seed")` from `remotion` for any randomness — **never** `Math.random()` (breaks deterministic rendering).
- Disable all animations from third-party libraries (they cause flickering). Drive everything from `useCurrentFrame()`.
### Composition Structure
- Structure scenes with `<Sequence>` for timed elements, `<Series>` for automatic chaining.
- Wrap visual layers in `<AbsoluteFill>` for proper stacking.
- Default: 1920×1080 @30fps unless specified otherwise.
- Register compositions in `Root.tsx` with `<Composition>` including `id`, `component`, `durationInFrames`, `fps`, `width`, `height`.
### Spring Configuration Presets
For tested spring configs that feel right for different purposes, read `./references/spring-configs.md`.
```typescript
// Quick reference — the four core spring personalities
import { spring } from "remotion";
// Bouncy: UI elements, badges, notifications
spring({ frame, fps, config: { damping: 12, stiffness: 100 } });
// Snappy: reveals, text entries, professional
spring({ frame, fps, config: { damping: 25, stiffness: 180 } });
// Buttery: backgrounds, cameras, atmospheric
spring({ frame, fps, config: { damping: 50, stiffness: 50 } });
// Heavy: large objects, dramatic reveals
spring({ frame, fps, config: { damping: 30, stiffness: 80, mass: 3 } });
```
### 3D Content (@remotion/three)
- Use `<ThreeCanvas>` from `@remotion/three` with `width` and `height` from `useVideoConfig()`.
- All 3D animations driven by `useCurrentFrame()` — `useFrame()` from `@react-three/fiber` is **FORBIDDEN**.
- Set `layout="none"` on any `<Sequence>` inside `<ThreeCanvas>`.
### Audio
- Import with `<Audio src={staticFile("audio.mp3")} />`.
- For audio visualization (spectrum bars, waveforms, bass-reactive), read `./references/audio-reactive.md`.
### Text Animations
- For typewriter effects, use string slicing on `useCurrentFrame()`, never per-character opacity.
- For kinetic typography patterns, read `./references/animation-patterns.md`.
### Charts and Data Viz
- Create charts using React code (HTML, SVG, D3.js all supported).
- Use `@remotion/paths` for animating SVG paths (line charts, signatures).
- Disable all third-party chart animations — drive from `useCurrentFrame()`.
## The 12 Principles of Animation (Coded)
These are not optional "nice to haves." They are the reason professional animation looks alive.
| Principle | Remotion Implementation |
|---|---|
| **Squash & Stretch** | `spring()` overshoot → `scaleX`/`scaleY` inversely proportional |
| **Anticipation** | Negative-direction pre-move before main action (scale 1→0.95→1.3) |
| **Staging** | Clean composition via `AbsoluteFill` layers + depth ordering |
| **Follow Through** | Secondary springs with higher `damping`, delayed by 3-5 frames |
| **Slow In/Out** | `spring()` handles this inherently; for `interpolate()`, use easing curves |
| **Arcs** | Bezier paths for position, or combine `interpolate()` on X and Y with different curves |
| **Secondary Action** | Separate `<Sequence>` with subtle scale/rotation reacting to primary motion |
| **Timing** | Musical beat sync + staggered delays (50–120ms between elements) |
| **Exaggeration** | Tasteful overshoot (spring stiffness 150+ with low damping), never cartoonish |
| **Solid Drawing** | Clean SVGs, proper vector paths, consistent stroke weights |
| **Appeal** | Emotional resonance through color, pacing, and restraint |
For detailed code examples of each principle, read `./references/animation-patterns.md`.
## Output Requirements
Every response MUST include:
1. **Complete, paste-ready TypeScript files** — `Composition.tsx` (main scene) and `Root.tsx` (composition registration). Full imports, proper types, Zod schema for parametrization.
2. **Inline comments** explaining the motion design reasoning — why this spring config, why this timing, what layer this serves.
3. **Preview instructions** at the end:
```bash
npx remotion studio # Preview in browser
npx remotion render src/index.ts MyComposition out/video.mp4 # Render
```
4. **Three variation ideas** — how to adapt the video for different use cases.
### Code Structure Template
```typescript
// src/Composition.tsx
import {
AbsoluteFill,
useCurrentFrame,
useVideoConfig,
interpolate,
spring,
Sequence,
Img,
staticFile,
random,
} from "remotion";
// Props schema for parametrization
type CompositionProps = {
title: string;
accentColor: string;
};
export const MyComposition: React.FC<CompositionProps> = ({ title, accentColor }) => {
const frame = useCurrentFrame();
const { fps, width, height } = useVideoConfig();
// Layer 1: Background atmosphere (buttery spring)
// Layer 2: Primary subject (snappy spring)
// Layer 3: Secondary elements (bouncy spring, delayed)
// Layer 4: Tertiary micro-details (particles, glows)
return (
<AbsoluteFill style={{ backgroundColor: "#0a0a0a" }}>
{/* Background layer */}
<AbsoluteFill>{/* atmospheric elements */}</AbsoluteFill>
{/* Primary layer */}
<Sequence from={0}>
{/* main subject animation */}
</Sequence>
{/* Secondary layer */}
<Sequence from={Math.round(0.1 * fps)}>
{/* follow-through elements */}
</Sequence>
{/* Tertiary layer */}
<Sequence from={Math.round(0.2 * fps)}>
{/* micro-details, polish */}
</Sequence>
</AbsoluteFill>
);
};
```
```typescript
// src/Root.tsx
import { Composition } from "remotion";
import { MyComposition } from "./Composition";
export const RemotionRoot: React.FC = () => {
return (
<Composition
id="MyComposition"
component={MyComposition}
durationInFrames={300} // 10 seconds @30fps
fps={30}
width={1920}
height={1080}
defaultProps={{
title: "Your Title",
accentColor: "#6366f1",
}}
/>
);
};
```
## What to Do When Asked for Specific Types
| Request Type | Lead With | Key Techniques |
|---|---|---|
| **Brand reveal** | Narrative gravity, anticipation | Dark backdrop → particle burst → logo spring-in → tagline fade |
| **Product launch** | Staging, depth | Parallax layers, 3D rotation via @remotion/three, light leaks |
| **Title sequence** | Cinematic feel, typography | Kinetic type with staggered springs, camera motion blur, film grain |
| **Data visualization** | Clarity, progressive reveal | @remotion/paths for line draw, staggered bar growth, number counters |
| **Social media clip** | Punchy timing, bold color | Fast springs (high stiffness), bold type, loop-friendly structure |
| **Explainer/tutorial** | Step-by-step staging | Scene transitions, numbered sequences, pointer/highlight animations |
| **Audio-reactive** | Music sync, frequency analysis | `useAudioData()` + `visualizeAudio()`, frequency-driven scale/color |
## Packages Available
These are installable via `npx remotion add <package>`:
- `@remotion/three` — 3D with Three.js + React Three Fiber
- `@remotion/paths` — SVG path animation
- `@remotion/transitions` — Scene transition effects
- `@remotion/motion-blur` — CameraMotionBlur and Trail components
- `@remotion/google-fonts` — Typography
- `@remotion/tailwind` — TailwindCSS integration
- `@remotion/animation-utils` — Utility functions
- `@remotion/gif` — GIF embedding synced to timeline
- `@remotion/lottie` — Lottie animation embedding
- `@remotion/media-utils` — Audio data and visualization
- `@remotion/light-leaks` — Light leak overlay effects
- `@remotion/captions` — Subtitle/caption support
## Reference Files
Read these when you need deeper technique guidance:
- `./references/spring-configs.md` — Tested spring configurations for every mood and purpose
- `./references/animation-patterns.md` — Code examples for the 12 principles + common patterns
- `./references/workflow.md` — Detailed planning/storyboarding methodology
- `./references/audio-reactive.md` — Audio visualization and beat-sync techniques
- `./references/cinematic-polish.md` — Motion blur, film grain, light leaks, camera moves, depth effects
Ships with 1 supporting file:
- README.md
Mirrored from the author's public source. Install counts from the open skills registry.