Turn Claude Code into a full motion design studio using Remotion — a React-based framework for creating videos programmatically. This skill enables Claude Code to scaffold, generate, and iteratively refine motion graphics, animated videos, and visual content entirely from code, without traditional video editing software.
Initialize a new Remotion project directly from the terminal:
npx create-video@latest my-motion-projectThis scaffolds a full Remotion project with TypeScript, React, and a dev server for real-time preview. Alternatively, to add Remotion to an existing project:
npm init video
# or
npm i remotion @remotion/cli @remotion/playerA Remotion project has these key files:
src/Root.tsx — Registers all compositions (video scenes)src/Composition.tsx — Defines video dimensions, FPS, and durationsrc/MyComposition.tsx — The actual video content (React components)remotion.config.ts — Build and rendering configurationCreate video compositions as React components. Every animation is a function of the current frame:
import { useCurrentFrame, useVideoConfig, interpolate, spring } from "remotion";
export const MyScene: React.FC = () => {
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
const opacity = interpolate(frame, [0, 30], [0, 1], {
extrapolateRight: "clamp",
});
const scale = spring({ frame, fps, config: { damping: 200 } });
return (
<div style={{ opacity, transform: `scale(${scale})`,
display: "flex", justifyContent: "center", alignItems: "center",
height: "100%", backgroundColor: "#0f0f0f" }}>
<h1 style={{ color: "white", fontSize: 80 }}>Hello Motion</h1>
</div>
);
};Key Remotion APIs to use:
useCurrentFrame() — Get the current frame number for animationinterpolate() — Map frame ranges to value ranges (opacity, position, scale)spring() — Physics-based easing for natural motion<Sequence> — Time-shift sections of the video<AbsoluteFill> — Full-screen positioning layer<Img>, <Video>, <Audio> — Media components with frame-accurate timingStart the Remotion dev server to see changes instantly:
npx remotion studioThis opens a browser-based preview with a timeline, frame scrubbing, and hot reload. Every code change is reflected immediately.
This is where Claude Code shines. After the initial composition is set up, the user can request changes in plain English and Claude modifies the code:
backgroundColor or color valuesinterpolate() on translateX<Sequence>interpolate() callsspring() with custom damping and massExport the finished video to MP4:
npx remotion render src/index.ts MyComposition out/video.mp4Rendering options:
--codec=h264 (default), h265, vp8, vp9, gif--image-format=jpeg or png--quality=80 (0-100 for lossy codecs)--scale=2 (render at 2x resolution)--frames=0-60Staggered text reveal:
{words.map((word, i) => (
<span key={i} style={{
opacity: interpolate(frame, [i * 5, i * 5 + 10], [0, 1], { extrapolateRight: "clamp" })
}}>{word} </span>
))}Slide transitions between scenes:
<Sequence from={0} durationInFrames={90}><SceneOne /></Sequence>
<Sequence from={90} durationInFrames={90}><SceneTwo /></Sequence>Data-driven videos (batch rendering): Use Remotion's parametrized compositions to generate variants — different names, colors, or content from a JSON/CSV data source.
spring() over linear interpolate() for natural-feeling motion<AbsoluteFill> for layering elements<Series> component for sequential scenes with automatic timing@remotion/tailwind for utility-class styling in video componentsExtracted from TikTok by @mr_pynk (Mr. Pynk) — motion design creator sharing AI + code workflows. Original video: https://vm.tiktok.com/ZNRqtGBcH/
valeriibeck-star/claude-skills
0bda8b8
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.