remotion-markup — Claude Code skill: Remotion markup rules
A skill that tells your agent how to write Remotion React markup: frame-driven animation, media components, effects. Useful when you build video in code.
npx skills add remotion-dev/skills --skill remotion-markup -a claude-codeWhat remotion-markup does
The skill covers how to write markup in Remotion. The core rule: keep useCurrentFrame() in the smallest component that needs it. Frame-dependent audio volume, titles and overlays go into their own components, otherwise unrelated descendants re-render on every frame.
Animations run on useCurrentFrame() and interpolate(). CSS transition and animation will not render correctly, and neither will Tailwind animation classes — both need refactoring. Timing is tuned with Easing.bezier() and Easing.spring(). Keep the interpolate() call inline in the style prop, and use scale, translate and rotate instead of transform so values stay editable in Studio. For seconds-to-frames math, pull fps from useVideoConfig() and leave the expression on the JSX node, like trimBefore={4 * fps}.
Media comes in through ` and from @remotion/media, images through , and animated GIF, APNG, WebP or AVIF through . Put files in public/ and reference them with staticFile(), or pass a remote URL. From there the skill points to separate files: video-editing.md, sequencing.md, timing-props.md, transitions.md, motion-blur.md, voiceover.md` and more. Worth installing if you already write Remotion compositions and want the agent to keep them editable in Studio. No Remotion in your project means nothing to apply it to.
What it helps with
- move title animation into its own component so the scene stops re-rendering
- refactor CSS transitions into interpolate() calls driven by frames
- wire up video and audio through @remotion/media
- make timing editable in Studio with fps and inline props
- apply an effect like vignette straight to a video
Example prompts for the agent
- build a FadeIn component that fades the title in over 2 seconds
- refactor this CSS transition into interpolate with Easing.spring
- load the video from public/ with staticFile and @remotion/media
How to install remotion-markup
1Skills CLI (Vercel)
npx skills add remotion-dev/skills --skill remotion-markup -a claude-code2Manually: put the files in place
~/.claude/skills/remotion-markup/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/remotion-markup/
1Skills CLI (Vercel)
npx skills add remotion-dev/skills --skill remotion-markup -a codex2Manually: put the files in place
.agents/skills/remotion-markup/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add remotion-dev/skills --skill remotion-markup -a cursor2Manually: put the files in place
.cursor/skills/remotion-markup/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install remotion-dev/skills remotion-markup2Manually: put the files in place
.github/skills/remotion-markup/SKILL.md1Skills CLI (Vercel)
npx skills add remotion-dev/skills --skill remotion-markup -a gemini-cli2Platform CLI
gemini skills install https://github.com/remotion-dev/skills --path skills/remotion-markupManually: put the files in place
.devin/skills/remotion-markup/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add remotion-dev/skills --skill remotion-markup -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set8
The whole set →Similar
Questions about remotion-markup
How do I install remotion-markup in Claude Code?
Run npx skills add remotion-dev/skills --skill remotion-markup -a claude-code. The skill lands at ~/.claude/skills/remotion-markup/SKILL.md.
What does remotion-markup do?
It gives the agent Remotion markup rules: where to keep useCurrentFrame(), how to drive animation with interpolate() and Easing, and how to add media and effects.
Why can't I use CSS transitions or Tailwind animation classes?
They will not render correctly in Remotion video output. The skill has you refactor them onto useCurrentFrame() and interpolate().