Skip to content
Back to skills

Remotion

ASecurity

Create React video compositions with Remotion, parameterize timelines with props, and configure CLI or server-side rendering.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 22, 2026
ai-agentsgobashreactspringaws

Works with

  • cursor
  • cli

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 22, 2026

npx -y skills add alivirgo/Major-AI-Skills --skill remotion --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Remotion?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Remotion
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alivirgo-remotion/badge)](https://www.skillsdirectory.com/skills/alivirgo-remotion)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: remotion
description: "Create React video compositions with Remotion, parameterize timelines with props, and configure CLI or server-side rendering."
category: video-editing
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["remotion", "react-video", "render-cli", "deterministic", "lambda", "color"]
tools: ["claude", "cursor", "gemini", "codex"]
---

# Remotion React Video Framework AI Skill Guide (Claude)

## Overview & Engine Architecture

Remotion (pin **`@remotion/*` version** in `package.json`, e.g. **4.x**) renders **React components per frame** via headless Chromium (`@remotion/renderer`), stitched to MP4/WebM. Claude acts as Programmatic Video Engineer: **frame-based animation**, **deterministic renders**, **CLI/Lambda**, **props schema**.

**Determinism rule:** Output = f(`useCurrentFrame()`, props, `useVideoConfig()`) — no `Math.random()`, `Date.now()`, or unawaited async without `delayRender` / `calculateMetadata`.

```
┌─────────────────────────────────────────────────────────────┐
│  <Composition> registry → bundle → npx remotion render        │
│  random('seed') not Math.random(); loadFont + delayRender     │
│  --props JSON; --concurrency; --timeout for delayRender       │
└─────────────────────────────────────────────────────────────┘
```

---

## When to use / when not to

**Use when:** templated promos, data-driven video, batch MP4 from JSON/CSV props, Lambda scale-out.

**Do not use when:** Long-form NLE editorial; GPU 3D scenes (use Blender/Unreal); non-deterministic live capture.

---

## Operational Capabilities & Agent Directives

1. **Time:** `useCurrentFrame()` + `interpolate()` / `spring()`; structure with `<Sequence>` / `<Series>` (child frames relative to sequence start).
2. **Randomness:** `import { random } from 'remotion'` with string seeds; include `frame` in seed when values must animate.
3. **Async:** Prefer `calculateMetadata` for fetch-before-render; in-component use `useDelayRender()` + `continueRender(handle)`; CLI `--timeout=120000` for slow fonts.
4. **Fonts/media:** `loadFont()` / `@remotion/fonts`; wait `document.fonts.ready` before first paint; assets via `staticFile()`.
5. **Color:** sRGB canvas; embed images in same color profile; for CSS filters document gamma assumptions — compare golden stills at `--scale=0.25` for CI cost.
6. **Export:** H.264 `-c:v libx264 -pix_fmt yuv420p` in `remotion.config.ts` or codec override; match fps/durationInFrames in Composition registration.
7. **Lambda limits:** AWS concurrency, memory, timeout — separate from per-frame `--timeout`; pin Chromium version via Remotion lockfile.

---

## Composition + render

```tsx
import { Composition } from "remotion";
import { Promo, PromoProps } from "./Promo";

export const RemotionRoot = () => (
  <Composition
    id="Promo"
    component={Promo}
    durationInFrames={150}
    fps={30}
    width={1920}
    height={1080}
    defaultProps={{ title: "Hello", subtitle: "World" } satisfies PromoProps}
  />
);
```

```bash
npx remotion compositions src/index.ts
npx remotion still src/index.ts Promo out/golden.png --frame=75 --scale=0.5
npx remotion render src/index.ts Promo out/promo.mp4 --props='{"title":"A","subtitle":"B"}' --timeout=120000
```

---

## Failure taxonomy

| Symptom | Cause | Fix |
| :--- | :--- | :--- |
| Flicker between workers | Nondeterministic code | Seed random; no Date |
| Timeout error | Font/network | delayRender + --timeout |
| Missing composition | Root not registered | Export RemotionRoot |
| Text blank frame 0 | Font late | fonts.ready gate |
| Slow render | Concurrency too high/low | Tune `--concurrency` |

---

## Agent Operational Directive

> **MANDATORY**: Frame-driven animation only. `random('seed')` never `Math.random()`. Golden still in CI. Pin Remotion package versions across render farm and Lambda.

Files in this skill

  • SKILL.md4 KB
  • gemini.md735 B
  • gpt.md1.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.