10 videos you can ship today with the Claude Remotion skill
Ten real Remotion videos — animated title card, data-driven bar-chart race, captioned talking-head, audio-synced lyric video, JSON slideshow, spring logo, timeline composition, MP4 render, dynamic thumbnail, scene transitions — each as a single Claude prompt with the exact React/TSX it produces.
Already know what skills are? Skip to the cookbook. First time? Read the explainer then come back. Need the install? It’s on the /skills/remotion-best-practices page.

On this page · 21 sections▾
- What this skill does
- The cookbook
- Install + README
- Watch it built
- 01 · Animated title card (interpolate fade + rise)
- 02 · Data-driven bar-chart race (props in, video out)
- 03 · Captioned talking-head (TikTok-style word reveal)
- 04 · Audio-synced lyric video (spring pop per line)
- 05 · Programmatic slideshow from a JSON manifest
- 06 · Spring entrance for a logo / badge
- 07 · Sequence/timeline composition (delayed scenes)
- 08 · Render to MP4 via the CLI (and Lambda at scale)
- 09 · Dynamic thumbnail / OG image (still frame export)
- 10 · Scene transitions (fade / slide between segments)
- Community signal
- The contrarian take
- Real videos shipped
- Gotchas
- Pairs well with
- FAQ
- Sources
What this skill actually does
Sixty seconds of context before the cookbook — what the Remotion skill is, what Claude returns when you invoke it, and the one thing it does NOT do for you.
What this skill actually does
“Best practices for Remotion - Video creation in React.”
— remotion-dev (the official Remotion team), the skill author · /skills/remotion-best-practices
What Claude returns
You get React/TSX components that render as video. Animation is frame-based: useCurrentFrame() gives the current frame and interpolate(frame, inputRange, outputRange, {extrapolateRight: 'clamp'}) maps it to a value; spring({frame, fps, config}) is reserved for physics-based motion. Layout uses <AbsoluteFill> and timeline composition uses <Sequence from durationInFrames>, <Series>, or @remotion/transitions. Composition metadata (width, height, fps, durationInFrames) lives in src/Root.tsx via <Composition>. Media comes from public/ via staticFile() with <Img>, <OffthreadVideo>, and <Audio> from @remotion/media. The skill steers you toward inline, Studio-editable transform values and away from CSS transitions.
What it does NOT do
It does not run the render or install the toolchain — you still run 'npx remotion studio' to preview and 'npx remotion render' to produce the MP4, and CSS transitions, animations, and Tailwind animation classes are off the table because they don't render to video.
How you trigger it
Write a Remotion title card that fades and rises in over the first 20 frames.Build a data-driven bar-chart Remotion component that takes the values as props.Add a fade transition between these two Remotion scenes and render it to MP4.Cost when idle
~100 tokens at idle (the skill name + description in the system prompt). The best-practice rules load only when triggered.
The cookbook
Each entry below is a video you could render this week. They run in the order I’d teach them — the early ones use the animation primitives every Remotion clip needs (interpolate, spring, AbsoluteFill), the later ones reach for timeline composition, rendering, and transitions. Every entry uses the real Remotion API, and pairs with one or two skills or MCP servers you already have on mcp.directory. The throughline: Remotion shines when the video is a function of data, not a hand-keyframed art piece.
Install + README
If the skill isn’t on your machine yet, here’s the one-liner. The full install panel (Codex, Copilot, Antigravity variants) is on the skill page.
One-line install · by remotion-dev
Open skill pageInstall
mkdir -p .claude/skills/remotion-best-practices && curl -L -o skill.zip "https://mcp.directory/api/skills/download/1438" && unzip -o skill.zip -d .claude/skills/remotion-best-practices && rm skill.zipInstalls to .claude/skills/remotion-best-practices
Watch it built
A clean explainer of why anyone would write video in React and what the rendered output looks like — useful before the cookbook because it anchors the mental model: components in, MP4 out.
Animated title card (interpolate fade + rise)
Open a video with a title that fades in and rises into place, using frame-based interpolation instead of CSS animation.
ForAnyone shipping their first Remotion clip. This is the 'hello world' the skill nudges you toward — interpolate over spring.
The prompt
Use the remotion-best-practices skill to write a TitleCard component for a 1920x1080 / 30fps composition. The headline 'Q3 in 90 seconds' should fade from opacity 0 to 1 over frames 0-20 and translate up 40px to 0 over the same range. Use useCurrentFrame() and interpolate() with extrapolateRight: 'clamp'. No CSS transitions — those don't render. Center it with AbsoluteFill. Write to src/TitleCard.tsx.What slides.md looks like
import {AbsoluteFill, interpolate, useCurrentFrame} from 'remotion';
export const TitleCard = () => {
const frame = useCurrentFrame();
const opacity = interpolate(frame, [0, 20], [0, 1], {
extrapolateRight: 'clamp',
});
const y = interpolate(frame, [0, 20], [40, 0], {
extrapolateRight: 'clamp',
});
return (
<AbsoluteFill
style={{justifyContent: 'center', alignItems: 'center'}}
>
<h1 style={{opacity, translate: `0 ${y}px`, fontSize: 96}}>
Q3 in 90 seconds
</h1>
</AbsoluteFill>
);
};One-line tweak
Add an easing import (import {Easing} from 'remotion') and pass easing: Easing.out(Easing.cubic) to the opacity interpolate for a softer landing.
Data-driven bar-chart race (props in, video out)
Render a bar-chart video from a JSON array of values, with each bar's width animated by its data — the canonical 'video as a pure function of data' use case.
ForGrowth, ops, and data teams who want a chart video per dataset without touching After Effects.
The prompt
Use the remotion-best-practices skill to build a BarChart component that takes a `data: {label: string; value: number}[]` prop. Animate each bar's width from 0 to its proportional value over frames 0-30 with interpolate (extrapolateRight: 'clamp'), staggering each bar's start by 4 frames. Use useVideoConfig for width. Drive the composition from defaultProps in Root.tsx so the same component renders any dataset. Write src/BarChart.tsx and the <Composition> entry.What slides.md looks like
import {interpolate, useCurrentFrame, useVideoConfig} from 'remotion';
export const BarChart = ({data}: {data: {label: string; value: number}[]}) => {
const frame = useCurrentFrame();
const {width} = useVideoConfig();
const max = Math.max(...data.map((d) => d.value));
return (
<div style={{padding: 80}}>
{data.map((d, i) => {
const w = interpolate(
frame,
[i * 4, i * 4 + 30],
[0, (d.value / max) * (width - 160)],
{extrapolateLeft: 'clamp', extrapolateRight: 'clamp'},
);
return (
<div key={d.label} style={{height: 60, width: w, background: '#0d9488'}} />
);
})}
</div>
);
};One-line tweak
Add a <Composition calculateMetadata={...}> that sets durationInFrames from data.length, so a 5-bar chart and a 20-bar chart each get the right length automatically.
Captioned talking-head (TikTok-style word reveal)
Overlay word-by-word captions onto a recorded video, with each word appearing on its own frame range — the format every shorts tool ships.
ForCreators and DevRel turning a screen recording into a captioned short without a manual subtitle pass.
The prompt
Use the remotion-best-practices skill to build a Captions component over an OffthreadVideo. Take a `captions: {text: string; startMs: number; endMs: number}[]` prop (the @remotion/captions shape). Convert ms to frames with fps from useVideoConfig, show each caption only while the current frame is within its range, and bold the active word. Reference the recording via staticFile('talk.mp4'). Write src/Captions.tsx.What slides.md looks like
import {OffthreadVideo, staticFile, useCurrentFrame, useVideoConfig, AbsoluteFill} from 'remotion';
export const Captions = ({captions}: {captions: {text: string; startMs: number; endMs: number}[]}) => {
const frame = useCurrentFrame();
const {fps} = useVideoConfig();
const ms = (frame / fps) * 1000;
const active = captions.find((c) => ms >= c.startMs && ms < c.endMs);
return (
<AbsoluteFill>
<OffthreadVideo src={staticFile('talk.mp4')} />
<AbsoluteFill style={{justifyContent: 'flex-end', alignItems: 'center', paddingBottom: 120}}>
{active && (
<span style={{fontSize: 64, fontWeight: 800, color: 'white'}}>
{active.text}
</span>
)}
</AbsoluteFill>
</AbsoluteFill>
);
};One-line tweak
Generate the captions array with @remotion/install-whisper-cpp's transcribe + toCaptions helpers, so the timings come from the audio instead of being hand-typed.
Audio-synced lyric video (spring pop per line)
Play an audio track and pop each lyric line in on the beat with a spring, so the motion matches the music rather than a linear fade.
ForMusicians and marketers making lyric videos — the one case where spring physics beats interpolate.
The prompt
Use the remotion-best-practices skill to build a LyricVideo. Play staticFile('song.mp3') via Audio from @remotion/media. Take a `lines: {text: string; atFrame: number}[]` prop. For each line, drive a scale from spring({frame: frame - line.atFrame, fps, config: {damping: 12}}) so it pops in on its frame. Only render lines whose atFrame has passed. Use this case for spring — the skill says prefer interpolate elsewhere. Write src/LyricVideo.tsx.What slides.md looks like
import {AbsoluteFill, staticFile, spring, useCurrentFrame, useVideoConfig} from 'remotion';
import {Audio} from '@remotion/media';
export const LyricVideo = ({lines}: {lines: {text: string; atFrame: number}[]}) => {
const frame = useCurrentFrame();
const {fps} = useVideoConfig();
return (
<AbsoluteFill style={{justifyContent: 'center', alignItems: 'center'}}>
<Audio src={staticFile('song.mp3')} />
{lines.filter((l) => frame >= l.atFrame).map((l) => {
const scale = spring({
frame: frame - l.atFrame,
fps,
config: {damping: 12},
});
return (
<h2 key={l.text} style={{scale: String(scale), fontSize: 72}}>
{l.text}
</h2>
);
})}
</AbsoluteFill>
);
};One-line tweak
Pass durationInFrames to spring() to stretch or compress the pop independent of the spring physics, so a slow ballad and a fast track use the same component.
Programmatic slideshow from a JSON manifest
Turn an array of slide objects (image + caption) into a video where each slide gets its own timed segment, no per-slide wiring.
ForTeams generating one slideshow per record (listings, products, recaps) from structured data.
The prompt
Use the remotion-best-practices skill to build a Slideshow that maps a `slides: {image: string; caption: string}[]` prop into a <Series>, giving each Series.Sequence durationInFrames={90}. Each slide shows an <Img src={staticFile(slide.image)} /> filling the frame plus the caption pinned to the bottom. Images live in public/. Write src/Slideshow.tsx and set the composition duration to slides.length * 90 via calculateMetadata.What slides.md looks like
import {Series, Img, staticFile, AbsoluteFill} from 'remotion';
export const Slideshow = ({slides}: {slides: {image: string; caption: string}[]}) => {
return (
<Series>
{slides.map((s) => (
<Series.Sequence key={s.image} durationInFrames={90}>
<AbsoluteFill>
<Img src={staticFile(s.image)} style={{objectFit: 'cover'}} />
<AbsoluteFill style={{justifyContent: 'flex-end', padding: 60}}>
<p style={{fontSize: 48, color: 'white'}}>{s.caption}</p>
</AbsoluteFill>
</AbsoluteFill>
</Series.Sequence>
))}
</Series>
);
};One-line tweak
Add an offset prop to a Series.Sequence to overlap two slides for a half-second crossfade without reaching for the transitions package yet.
Spring entrance for a logo / badge
Make a logo overshoot-and-settle on entrance using spring physics, the one effect that looks wrong with a linear interpolate.
ForBrand and product folks who want a single tasteful motion-graphics beat, not a full animation rig.
The prompt
Use the remotion-best-practices skill to write a LogoEntrance. Drive scale with spring({frame, fps, config: {mass: 0.8, damping: 9, stiffness: 120}}) so it overshoots slightly then settles. Keep the interpolation inline in the style transform via the individual `scale` property, not a composed transform string — the skill wants Studio-editable values. Render the logo with <Img src={staticFile('logo.png')} />. Write src/LogoEntrance.tsx.What slides.md looks like
import {AbsoluteFill, Img, staticFile, spring, useCurrentFrame, useVideoConfig} from 'remotion';
export const LogoEntrance = () => {
const frame = useCurrentFrame();
const {fps} = useVideoConfig();
const scale = spring({
frame,
fps,
config: {mass: 0.8, damping: 9, stiffness: 120},
});
return (
<AbsoluteFill style={{justifyContent: 'center', alignItems: 'center'}}>
<Img
src={staticFile('logo.png')}
style={{width: 320, scale: String(scale)}}
/>
</AbsoluteFill>
);
};One-line tweak
Set overshootClamping: true in the spring config if the brand guidelines forbid the bounce — you keep the physics ease without the overshoot.
Sequence/timeline composition (delayed scenes)
Stack scenes on a timeline with <Sequence>, each starting at a specific frame and lasting a set duration — the layout primitive everything else builds on.
ForAnyone past the single-scene clip who needs an intro, a body, and an outro on one timeline.
The prompt
Use the remotion-best-practices skill to compose three scenes on a timeline with <Sequence>: Intro at from={0} for durationInFrames={60}, Body at from={60} for 180, Outro at from={240} for 60. Wrap a non-visual title overlay in <Sequence from={20} durationInFrames={40} layout='none'> so it doesn't get its own AbsoluteFill. Write src/Timeline.tsx.What slides.md looks like
import {Sequence, AbsoluteFill} from 'remotion';
import {Intro} from './Intro';
import {Body} from './Body';
import {Outro} from './Outro';
export const Timeline = () => {
return (
<AbsoluteFill>
<Sequence durationInFrames={60}>
<Intro />
</Sequence>
<Sequence from={60} durationInFrames={180}>
<Body />
</Sequence>
<Sequence from={240} durationInFrames={60}>
<Outro />
</Sequence>
</AbsoluteFill>
);
};One-line tweak
Inside any Sequence, useCurrentFrame() resets to 0 at that sequence's start — so each scene animates from its own frame 0 without subtracting the `from` offset yourself.
Render to MP4 via the CLI (and Lambda at scale)
Turn the composition into an actual MP4 file from the command line, and know the one-line jump to serverless rendering when you need many videos.
ForAnyone who has a preview working in Studio and now needs a file on disk or in a pipeline.
The prompt
Use the remotion-best-practices skill to render the 'BarChart' composition to out/q3.mp4 at 30fps, passing the dataset as --props. Then show me the @remotion/lambda equivalent for rendering the same composition serverlessly with renderMediaOnLambda so I can fan out one render per dataset. Explain which command to use locally vs in CI.What slides.md looks like
# Local render: composition id, output path, props as JSON
npx remotion render BarChart out/q3.mp4 \
--props='{"data":[{"label":"Jan","value":12}]}'
# Validate a single frame first (fast, no encode)
npx remotion still BarChart out/frame.png --frame=15
# Serverless fan-out with @remotion/lambda
import {renderMediaOnLambda} from '@remotion/lambda/client';
await renderMediaOnLambda({
region: 'us-east-1',
functionName,
serveUrl,
composition: 'BarChart',
codec: 'h264',
inputProps: {data},
});One-line tweak
Add --concurrency and --frames=0-90 to the local render command to render just a preview range while you're iterating, then drop the range for the full export.
Dynamic thumbnail / OG image (still frame export)
Render one frame of a parameterized composition as a PNG — a per-record social image or video thumbnail, generated from props.
ForMarketing and platform teams auto-generating OG images and thumbnails at scale.
The prompt
Use the remotion-best-practices skill to build a Thumbnail composition (1200x630) that takes title and author props and lays them over a gradient with <Img> avatar. Then give me the `remotion still` command to export frame 0 as a PNG for a given title/author. The component should not animate — it's a single still. Write src/Thumbnail.tsx and the export command.What slides.md looks like
import {AbsoluteFill, Img, staticFile} from 'remotion';
export const Thumbnail = ({title, author, avatar}: {title: string; author: string; avatar: string}) => {
return (
<AbsoluteFill style={{background: 'linear-gradient(135deg,#0f172a,#0d9488)', padding: 80}}>
<h1 style={{fontSize: 72, color: 'white'}}>{title}</h1>
<div style={{display: 'flex', alignItems: 'center', gap: 16, marginTop: 'auto'}}>
<Img src={staticFile(avatar)} style={{width: 64, height: 64, borderRadius: 32}} />
<span style={{fontSize: 32, color: '#cbd5e1'}}>{author}</span>
</div>
</AbsoluteFill>
);
};
// npx remotion still Thumbnail out/og.png --props='{"title":"...","author":"...","avatar":"a.png"}'One-line tweak
Swap `still` for `npx remotion render Thumbnail out/og.jpeg --image-format=jpeg` if you need a smaller JPEG instead of a PNG for the OG tag.
Scene transitions (fade / slide between segments)
Cross between two scenes with a real transition (fade, slide) using @remotion/transitions, instead of hard cuts on a Series.
ForAnyone whose multi-scene video looks choppy and needs the segments to flow.
The prompt
Use the remotion-best-practices skill to compose two scenes with a fade between them using TransitionSeries from @remotion/transitions. Scene A and Scene B each get a TransitionSeries.Sequence with durationInFrames={120}, and a TransitionSeries.Transition with presentation={fade()} and timing={linearTiming({durationInFrames: 30})}. Import fade from @remotion/transitions/fade. Write src/Transitions.tsx.What slides.md looks like
import {TransitionSeries, linearTiming} from '@remotion/transitions';
import {fade} from '@remotion/transitions/fade';
import {SceneA} from './SceneA';
import {SceneB} from './SceneB';
export const Transitions = () => {
return (
<TransitionSeries>
<TransitionSeries.Sequence durationInFrames={120}>
<SceneA />
</TransitionSeries.Sequence>
<TransitionSeries.Transition
presentation={fade()}
timing={linearTiming({durationInFrames: 30})}
/>
<TransitionSeries.Sequence durationInFrames={120}>
<SceneB />
</TransitionSeries.Sequence>
</TransitionSeries>
);
};One-line tweak
Swap fade() for slide() (import {slide} from '@remotion/transitions/slide') and pass springTiming({config: {damping: 200}}) for a physics-eased push instead of a linear dissolve.
Community signal
Four voices from people using Remotion for real work. The first treats it as a partial After Effects replacement; the next two are the Claude-plus-Remotion agent workflow this cookbook documents; the last is the data-in, video-out pattern that defines the tool.
“I have actually been able to somewhat (big asterisk here) use Remotion in some instances as an AE replacement. I can use Remotion for example, to design any kind of animation in code, and overlay it on video, which, especially with AI, lets me do quite a lot.”
TechSquidTV · Hacker News
On a thread about browser video editors, a video pro reports using Remotion as a partial After Effects replacement for code-driven animation overlays — the exact territory use cases 1, 3 and 10 cover.
“There were two paid features of CapCut that I vibe-coded using Remotion as the basis. 1) Automatically editing out pauses 2) Making those TikTok-like captions”
ozten · Hacker News
Answering 'what tools have you made for yourself since AI', a developer rebuilt paid CapCut features on top of Remotion — the captioned-short workflow in use case 3.
“I've had a lot of fun with Remotion and Claude Code for CLI video editing. I've been impressed with how much traditional video editing I can manage.”
sails · Hacker News
Captures the 2025-2026 wave of pairing Remotion with Claude Code for agent-driven editing — the precise setup this cookbook documents.
“Then I let Claude document each 'phase', and from that I generated Remotion videos. It worked quite well, and I learned a lot, much more than I would have from just reading the source code!”
fdb · Hacker News
A developer used Claude plus Remotion to auto-generate explainer videos from documented build phases — data-in, video-out, the use case 2 and 5 pattern.
The contrarian take
Not everyone reaches for Remotion. The most honest critique on the Hacker News threads is from njoyablpnting (Hacker News):
“in my experience Remotion is not the right tool for adding motion graphics to what you're building. There's a few reasons for this, but basically declarative markup is not a great language for motion graphics beyond anything very basic.”
njoyablpnting (Hacker News) · Hacker News
From a Hacker News thread on motion graphics tooling.
Fair for hand-keyframed motion graphics — a timeline UI beats JSX when you're nudging easing curves by feel. But the cookbook's wins are the cases a timeline can't touch: video as a pure function of data (use cases 2, 5, 9). When the input is a JSON array and you need one render per row, declarative-in-code is the only thing that scales. Reach for After Effects when the video is a one-off art piece; reach for Remotion when it's a function.
Real videos shipped with Remotion
Concrete examples from production. None of these used the Claude skill specifically — they’re here to show what a shipped, data-driven Remotion pipeline looks like, so you have a target shape in mind when you write the prompt.
- Remotion team (open source) — GitHub Unwrapped, the annual per-user 'coding year in review' video, rendered on AWS Lambda
- Remotion success stories — Submagic, an AI shorts/captioning tool, listed among Remotion's production users
- Remotion success stories — Crayo.ai, a faceless video-story generator built on Remotion
- Mux engineering — 'Rendering data-driven video with React and Remotion', visualizing Mux data as video
- Typeframes — turns text into SaaS product-intro videos using Remotion
- Shortvid.io — open-source tool for generating event and announcement videos with Remotion
Gotchas (the four that bite)
Sourced from the Remotion fundamentals docs and the skill’s own best-practice rules.
CSS transitions and Tailwind animations render static
Remotion captures one frozen frame at a time, so anything timed by wall-clock — transition, @keyframes, animate-* — never advances. Drive every animated value from useCurrentFrame(). The skill enforces this.
Composed transform strings aren't Studio-editable
Prefer the individual scale / translate / rotate style properties over a single transform: '...' string. The skill keeps interpolation inline so values stay tweakable in Remotion Studio.
useCurrentFrame() resets inside a Sequence
Inside <Sequence from={60}>, the child sees frame 0 at its start, not 60. Don't subtract the offset yourself — animate each scene from its own zero or your timing will be doubly shifted.
Rendering needs the CLI (and Chromium) — the skill won't
The skill writes components; 'npx remotion render' produces the MP4 and pulls a headless Chromium. Validate layout cheaply with 'npx remotion still' before committing to a full encode.
Pairs well with
Curated to match the cookbook’s actual integrations: the React and motion skills that keep the components clean (react-best-practices, motion-graphics), the Remotion scaffolds (remotion-video), plus the MCP servers the rendering and media use cases (3, 8, 9) lean on.
Related skills
Related MCP servers
Two posts that compose well with this cookbook: What are Claude Code skills? covers the underlying mechanism, and Claude Code best practices covers the orchestration patterns the rendering pipeline (use case 8) leans on.
Frequently asked questions
Why does the Remotion skill prefer interpolate() over spring()?
Because most animations are linear timing problems, not physics problems. interpolate(frame, [0,20], [0,1], {extrapolateRight:'clamp'}) is predictable and easy to read in Remotion Studio. spring() earns its place for entrances that should overshoot and settle — logo pops, lyric reveals (use cases 4 and 6). The skill's rule is: reach for spring only when physics-based motion is explicitly what you want.
Can the Remotion skill render a real MP4, or just preview in the browser?
The skill writes the composition; Remotion renders it. You run 'npx remotion render <CompositionId> out/video.mp4' for the file, or 'npx remotion still' for a single PNG frame to validate layout fast. For many videos, @remotion/lambda's renderMediaOnLambda fans out one render per dataset to AWS. Use case 8 shows all three.
Why can't I use CSS transitions or Tailwind animations in Remotion?
Remotion renders by capturing one frozen frame at a time, so anything that animates over wall-clock time — CSS transitions, @keyframes, Tailwind's animate-* classes — never advances during a render and comes out static. Drive every value from useCurrentFrame() instead. This is the single rule the skill is strictest about.
How does the Remotion skill add captions to a talking-head video?
It overlays a Captions component on an <OffthreadVideo>, indexing into a captions array by the current time (frame / fps × 1000 ms) and showing only the active line. The timings can come from @remotion/captions plus a Whisper transcription rather than being typed by hand. Use case 3 has the component.
Is there a Remotion MCP server instead of the skill?
There are community Remotion MCP servers and scaffolding skills (for example remotion-server and remotion-video), but for authoring compositions the best-practices skill is the lighter option: a skill costs ~100 tokens at idle, while an MCP server's tool schemas load on every turn. Reach for an MCP only when a running Remotion instance needs to be driven by multiple clients — otherwise the skill is the cheaper composition.
Do I need to know React to use the Remotion skill?
Some. The output is real React components — props, hooks, JSX. You don't need deep React knowledge to run the cookbook prompts, but you'll read and tweak TSX. If you're rusty, pair it with the react-best-practices skill so the components stay typed and side-effect-free, which is what the renderer expects.
How do I stop the bars or text from being placeholder data?
Drive the composition from props and pass real data via --props on the CLI or defaultProps in Root.tsx. Use cases 2, 5 and 9 are built this way — the component is a pure function of its props, so the same code renders any dataset. Pair with the GitHub MCP to feed live repo numbers in.
Sources
Primary
- remotion-dev Remotion SKILL.md (the skill manifest)
- Remotion official documentation
- Remotion interpolate() reference
- Remotion spring() reference
- Remotion @remotion/transitions reference
Community
Critical and contrarian
Internal