Remotion — Toolkit Extensions
Core Remotion knowledge lives in .claude/skills/remotion-official/ (synced from the official remotion-dev/skills repo). This file covers toolkit-specific patterns only.
Shared Components
Reusable video components in lib/components/. Import in templates via:
import { AnimatedBackground, SlideTransition, Label } from '../../../../lib/components';
| Component |
Purpose |
AnimatedBackground |
Floating shapes background (variants: subtle, tech, warm, dark) |
SlideTransition |
Scene transitions (fade, zoom, slide-up, blur-fade) |
Label |
Floating label badge with optional JIRA reference |
Vignette |
Cinematic edge darkening overlay |
LogoWatermark |
Corner logo branding |
SplitScreen |
Side-by-side video comparison |
NarratorPiP |
Picture-in-picture presenter overlay |
Envelope |
3D envelope with opening flap animation |
PointingHand |
Animated hand emoji with slide-in and pulse |
MazeDecoration |
Animated isometric grid decoration for corners |
Custom Transitions
The toolkit includes a transitions library at lib/transitions/ for scene-to-scene effects beyond the official @remotion/transitions package.
Using TransitionSeries
import { TransitionSeries, linearTiming } from '@remotion/transitions';
// Import custom transitions from lib (adjust path based on your project location)
import { glitch, lightLeak, clockWipe, checkerboard } from '../../../../lib/transitions';
// Or import from @remotion/transitions for official ones
import { slide, fade } from '@remotion/transitions/slide';
<TransitionSeries>
<TransitionSeries.Sequence durationInFrames={90}>
<TitleSlide />
</TransitionSeries.Sequence>
<TransitionSeries.Transition
presentation={glitch({ intensity: 0.8 })}
timing={linearTiming({ durationInFrames: 30 })}
/>
<TransitionSeries.Sequence durationInFrames={120}>
<ContentSlide />
</TransitionSeries.Sequence>
</TransitionSeries>
Available Custom Transitions
| Transition |
Options |
Best For |
glitch() |
intensity, slices, rgbShift |
Tech demos, edgy reveals, cyberpunk |
rgbSplit() |
direction, displacement |
Modern tech, energetic transitions |
zoomBlur() |
direction, blurAmount |
CTAs, high-energy moments, impact |
lightLeak() |
temperature, direction |
Celebrations, film aesthetic, warm moments |
clockWipe() |
startAngle, direction, segments |
Time-related content, playful reveals |
pixelate() |
maxBlockSize, gridSize, scanlines, glitchArtifacts, randomness |
Retro/gaming, digital transformations |
checkerboard() |
gridSize, pattern, stagger, squareAnimation |
Playful reveals, structured transitions |
Checkerboard patterns: sequential, random, diagonal, alternating, spiral, rows, columns, center-out, corners-in
Transition Examples
// Tech/cyberpunk feel
glitch({ intensity: 0.8, slices: 8, rgbShift: true })
// Warm celebration
lightLeak({ temperature: 'warm', direction: 'right' })
// High energy zoom
zoomBlur({ direction: 'in', blurAmount: 20 })
// Chromatic aberration
rgbSplit({ direction: 'diagonal', displacement: 30 })
// Clock sweep reveal
clockWipe({ direction: 'clockwise', startAngle: 0 })
// Retro pixelation
pixelate({ maxBlockSize: 50, glitchArtifacts: true })
// Checkerboard patterns
checkerboard({ pattern: 'diagonal', gridSize: 8 })
checkerboard({ pattern: 'spiral', gridSize: 10 })
checkerboard({ pattern: 'center-out', squareAnimation: 'scale' })
Transition Duration Guidelines
| Type |
Frames |
Notes |
| Quick cut |
15-20 |
Fast, punchy |
| Standard |
30-45 |
Most common |
| Dramatic |
50-60 |
Slow reveals |
| Glitch effects |
20-30 |
Should feel sudden |
| Light leak |
45-60 |
Needs time to sweep |
Preview Transitions
Run the showcase gallery to see all transitions:
cd showcase/transitions && npm run studio
Toolkit Best Practices
- Frame-based animations only — Avoid CSS transitions/animations; they cause flickering during render
- Use fps from useVideoConfig() — Make animations frame-rate independent
- Clamp interpolations — Use
extrapolateRight: 'clamp' to prevent runaway values
- Use OffthreadVideo — Better performance than
<Video> for complex compositions
- delayRender for async — Always block rendering until data is ready
- staticFile for assets — Reference files from
public/ folder correctly
- All projects use 30fps — Timing: frames = seconds × 30
- playbackRate must be constant — For variable/extreme speeds, pre-process with FFmpeg
Project Timing Conventions
| Scene Type |
Duration |
Notes |
| Title |
3-5s (90-150f) |
Logo + headline |
| Overview |
10-20s |
3-5 bullet points |
| Demo |
10-30s |
Adjust playbackRate to fit |
| Stats |
8-12s |
3-4 stat cards |
| Credits |
5-10s |
Quick fade |
Pacing: ~150 words/minute for voiceover. Voiceover drives timing.
Advanced API
For detailed API documentation on all hooks, components, renderer, Lambda, and Player APIs, see reference.md.
License Note
Remotion has a special license. Companies may need to obtain a license for commercial use. Check https://remotion.dev/license
Feedback & Contributions
If this skill is missing information or could be improved:
- Missing a pattern? Describe what you needed
- Found an error? Let me know what's wrong
- Want to contribute? I can help you:
- Update this skill with improvements
- Create a PR to github.com/digitalsamba/claude-code-video-toolkit
Just say "improve this skill" and I'll guide you through updating .claude/skills/remotion/SKILL.md.
1---2name: remotion3description: Toolkit-specific Remotion patterns — custom transitions, shared components, and project conventions. For core Remotion framework knowledge (hooks, animations, rendering, etc.), see the `remotion-official` skill.4---5
6# Remotion — Toolkit Extensions
7
8> **Core Remotion knowledge** lives in `.claude/skills/remotion-official/` (synced from the official [remotion-dev/skills](https://github.com/remotion-dev/skills) repo). This file covers **toolkit-specific** patterns only.
9
10## Shared Components
11
12Reusable video components in `lib/components/`. Import in templates via:
13
14```tsx
15import { AnimatedBackground, SlideTransition, Label } from '../../../../lib/components';
16```
17
18| Component | Purpose |
19|-----------|---------|
20| `AnimatedBackground` | Floating shapes background (variants: subtle, tech, warm, dark) |
21| `SlideTransition` | Scene transitions (fade, zoom, slide-up, blur-fade) |
22| `Label` | Floating label badge with optional JIRA reference |
23| `Vignette` | Cinematic edge darkening overlay |
24| `LogoWatermark` | Corner logo branding |
25| `SplitScreen` | Side-by-side video comparison |
26| `NarratorPiP` | Picture-in-picture presenter overlay |
27| `Envelope` | 3D envelope with opening flap animation |
28| `PointingHand` | Animated hand emoji with slide-in and pulse |
29| `MazeDecoration` | Animated isometric grid decoration for corners |
30
31## Custom Transitions
32
33The toolkit includes a transitions library at `lib/transitions/` for scene-to-scene effects beyond the official `@remotion/transitions` package.
34
35### Using TransitionSeries
36
37```tsx
38import { TransitionSeries, linearTiming } from '@remotion/transitions';
39// Import custom transitions from lib (adjust path based on your project location)
40import { glitch, lightLeak, clockWipe, checkerboard } from '../../../../lib/transitions';
41// Or import from @remotion/transitions for official ones
42import { slide, fade } from '@remotion/transitions/slide';
43
44<TransitionSeries>
45 <TransitionSeries.Sequence durationInFrames={90}>
46 <TitleSlide />
47 </TransitionSeries.Sequence>
48 <TransitionSeries.Transition
49 presentation={glitch({ intensity: 0.8 })}
50 timing={linearTiming({ durationInFrames: 30 })}
51 />
52 <TransitionSeries.Sequence durationInFrames={120}>
53 <ContentSlide />
54 </TransitionSeries.Sequence>
55</TransitionSeries>
56```
57
58### Available Custom Transitions
59
60| Transition | Options | Best For |
61|------------|---------|----------|
62| `glitch()` | `intensity`, `slices`, `rgbShift` | Tech demos, edgy reveals, cyberpunk |
63| `rgbSplit()` | `direction`, `displacement` | Modern tech, energetic transitions |
64| `zoomBlur()` | `direction`, `blurAmount` | CTAs, high-energy moments, impact |
65| `lightLeak()` | `temperature`, `direction` | Celebrations, film aesthetic, warm moments |
66| `clockWipe()` | `startAngle`, `direction`, `segments` | Time-related content, playful reveals |
67| `pixelate()` | `maxBlockSize`, `gridSize`, `scanlines`, `glitchArtifacts`, `randomness` | Retro/gaming, digital transformations |
68| `checkerboard()` | `gridSize`, `pattern`, `stagger`, `squareAnimation` | Playful reveals, structured transitions |
69
70**Checkerboard patterns:** `sequential`, `random`, `diagonal`, `alternating`, `spiral`, `rows`, `columns`, `center-out`, `corners-in`
71
72### Transition Examples
73
74```tsx
75// Tech/cyberpunk feel
76glitch({ intensity: 0.8, slices: 8, rgbShift: true })
77
78// Warm celebration
79lightLeak({ temperature: 'warm', direction: 'right' })
80
81// High energy zoom
82zoomBlur({ direction: 'in', blurAmount: 20 })
83
84// Chromatic aberration
85rgbSplit({ direction: 'diagonal', displacement: 30 })
86
87// Clock sweep reveal
88clockWipe({ direction: 'clockwise', startAngle: 0 })
89
90// Retro pixelation
91pixelate({ maxBlockSize: 50, glitchArtifacts: true })
92
93// Checkerboard patterns
94checkerboard({ pattern: 'diagonal', gridSize: 8 })
95checkerboard({ pattern: 'spiral', gridSize: 10 })
96checkerboard({ pattern: 'center-out', squareAnimation: 'scale' })
97```
98
99### Transition Duration Guidelines
100
101| Type | Frames | Notes |
102|------|--------|-------|
103| Quick cut | 15-20 | Fast, punchy |
104| Standard | 30-45 | Most common |
105| Dramatic | 50-60 | Slow reveals |
106| Glitch effects | 20-30 | Should feel sudden |
107| Light leak | 45-60 | Needs time to sweep |
108
109### Preview Transitions
110
111Run the showcase gallery to see all transitions:
112
113```bash
114cd showcase/transitions && npm run studio
115```
116
117## Toolkit Best Practices
118
1191. **Frame-based animations only** — Avoid CSS transitions/animations; they cause flickering during render
1202. **Use fps from useVideoConfig()** — Make animations frame-rate independent
1213. **Clamp interpolations** — Use `extrapolateRight: 'clamp'` to prevent runaway values
1224. **Use OffthreadVideo** — Better performance than `<Video>` for complex compositions
1235. **delayRender for async** — Always block rendering until data is ready
1246. **staticFile for assets** — Reference files from `public/` folder correctly
1257. **All projects use 30fps** — Timing: frames = seconds × 30
1268. **playbackRate must be constant** — For variable/extreme speeds, pre-process with FFmpeg
127
128## Project Timing Conventions
129
130| Scene Type | Duration | Notes |
131|------------|----------|-------|
132| Title | 3-5s (90-150f) | Logo + headline |
133| Overview | 10-20s | 3-5 bullet points |
134| Demo | 10-30s | Adjust playbackRate to fit |
135| Stats | 8-12s | 3-4 stat cards |
136| Credits | 5-10s | Quick fade |
137
138**Pacing:** ~150 words/minute for voiceover. Voiceover drives timing.
139
140## Advanced API
141
142For detailed API documentation on all hooks, components, renderer, Lambda, and Player APIs, see [reference.md](reference.md).
143
144## License Note
145
146Remotion has a special license. Companies may need to obtain a license for commercial use. Check https://remotion.dev/license
147
148---
149
150## Feedback & Contributions
151
152If this skill is missing information or could be improved:
153
154- **Missing a pattern?** Describe what you needed
155- **Found an error?** Let me know what's wrong
156- **Want to contribute?** I can help you:
157 1. Update this skill with improvements
158 2. Create a PR to github.com/digitalsamba/claude-code-video-toolkit
159
160Just say "improve this skill" and I'll guide you through updating `.claude/skills/remotion/SKILL.md`.