
Remotion Composition
Turn a scene list with durations into Remotion Sequence layout, frame math, and a COMPOSITION_STRUCTURE.md plus timing constants.
Overview
Remotion Composition is an agent skill most often used in Build (also Validate prototype demos, Launch distribution cuts) that maps scene lists into Remotion Sequence layout, transition timing, and duration constants.
Install
npx skills add https://github.com/ncklrs/startup-os-skills --skill remotion-compositionWhat is this skill?
- Outputs COMPOSITION_STRUCTURE.md with Sequence ordering and duration mapping
- Calculates start frames, end frames, and seconds-to-frames for every scene
- Models scene overlaps, crossfades, and transition timing between Sequences
- Generates structured timing constants intended for constants.ts
- Explicitly defers components, animations, styling, and assets to sibling Remotion skills
- 5 in-scope composition concerns (Sequence layout, timing, transitions, duration mapping, timing constants)
Adoption & trust: 1 installs on skills.sh; 27 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
You have scene names and durations but no ordered Sequence plan or frame-accurate timing document for Remotion.
Who is it for?
Founders scripting programmatic promos, changelog videos, or UI walkthroughs who need timing locked before coding scenes.
Skip if: One-off edits in Final Cut, static social images, or requests that only need CSS animation inside a web app.
When should I use this skill?
Organizing scenes or when asked to structure composition, layout scenes, or calculate timing from a scene list with durations.
What do I get? / Deliverables
You get COMPOSITION_STRUCTURE.md and timing constant guidance ready to hand off to component and animation skills without redoing layout math.
- COMPOSITION_STRUCTURE.md
- Sequence order and frame calculations
- Timing constant structure for constants.ts
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Composition orchestration is where programmatic video structure is defined before render and polish. Sequence ordering and frame calculations are frontend/video-engine concerns in Remotion, not backend APIs.
Where it fits
Lock a 30-second explainer timeline before building Remotion scene components for a landing-page embed.
Reorder onboarding scenes after copy edits and regenerate frame boundaries for constants.ts.
Adjust crossfade overlap between hero and CTA scenes for a Product Hunt launch reel without touching animation curves.
How it compares
Skill package for timing orchestration only—not full Remotion scene codegen or a hosted video editor MCP.
Common Questions / FAQ
Who is remotion-composition for?
Solo builders and small teams using Remotion who want an agent to structure Sequences and frame math from a scene list.
When should I use remotion-composition?
In Build when organizing scenes or asked to structure composition, layout scenes, or calculate timing; also when reshaping a Validate prototype demo timeline or a Launch promo cut before re-render.
Is remotion-composition safe to install?
It outputs documentation and constants guidance; confirm trust via the Security Audits panel on this Prism page before running in a repo with proprietary scripts.
Workflow Chain
Then invoke: remotion component gen, remotion animation
SKILL.md
READMESKILL.md - Remotion Composition
# Remotion Composition Generates composition structure documents that define how scenes are ordered, timed, and transitioned in a Remotion video. This skill focuses exclusively on Sequence layout and timing orchestration. ## What This Skill Does Generates composition structure for: 1. **Sequence layout** — Ordering and positioning of scene Sequences 2. **Timing calculations** — Start frames, end frames, duration for each scene 3. **Scene transitions** — Overlap and crossfade timing between scenes 4. **Duration mapping** — Converting seconds to frames for all scenes 5. **Timing constants** — Structured timing object for constants.ts ## Scope Boundaries **IN SCOPE:** - Sequence component organization - Frame calculations for scene timing - Scene overlap and transition timing - Duration constant generation - Scene ordering logic **OUT OF SCOPE:** - Scene component implementation (use `/remotion-component-gen`) - Animation parameters (use `/remotion-animation`) - Visual styling (colors, layouts) - Asset management (use `/remotion-asset-coordinator`) ## Input/Output Formats ### Input Format: Scene List with Durations Accepts scene timing specifications: **Natural Language:** ``` Scene 1 (Intro): 0-5 seconds Scene 2 (Features): 5-15 seconds Scene 3 (Demo): 15-25 seconds Scene 4 (CTA): 25-30 seconds ``` **Structured Format:** ```markdown ## Scene Timing **Total Duration:** 30 seconds **Frame Rate:** 30 fps **Total Frames:** 900 **Scenes:** 1. Scene 1 - Intro: 5 seconds (0s - 5s) 2. Scene 2 - Features: 10 seconds (5s - 15s) 3. Scene 3 - Demo: 10 seconds (15s - 25s) 4. Scene 4 - CTA: 5 seconds (25s - 30s) **Transitions:** - Fade transition between scenes: 0.5 seconds (15 frames) ``` ### Output Format: COMPOSITION_STRUCTURE.md Generates composition structure document: ```markdown # Composition Structure: ProductDemo ## Status ✅ Sequence layout defined ✅ Timing calculations complete ⏳ Ready for scene implementation ## Composition Overview **Total Duration:** 30 seconds (900 frames @ 30fps) **Scenes:** 4 **Transitions:** Crossfade (15 frames) ## Scene Timing Constants ```typescript const FPS = 30; export const SCENE_TIMING = { intro: { start: 0, end: 150, duration: 150, // 0s - 5s }, features: { start: 150, end: 450, duration: 300, // 5s - 15s }, demo: { start: 450, end: 750, duration: 300, // 15s - 25s }, cta: { start: 750, end: 900, duration: 150, // 25s - 30s }, } as const; // Transition timing export const TRANSITIONS = { crossfadeDuration: 15, // frames (0.5 seconds) } as const; ``` ## Composition Layout Main composition with Sequence structure: ```typescript import { AbsoluteFill, Sequence } from "remotion"; import { SCENE_TIMING } from "./constants"; import { Scene1Intro } from "./scenes/Scene1Intro"; import { Scene2Features } from "./scenes/Scene2Features"; import { Scene3Demo } from "./scenes/Scene3Demo"; import { Scene4CTA } from "./scenes/Scene4CTA"; export function ProductDemo() { return ( <AbsoluteFill> {/* Scene 1: Intro (0s - 5s) */} <Sequence from={SCENE_TIMING.intro.start} durationInFrames={SCENE_TIMING.intro.duration} > <Scene1Intro /> </Sequence> {/* Scene 2: Features (5s - 15s) */} <Sequence from={SCENE_TIMING.features.start} durationInFrames={SCENE_TIMING.features.duration} > <Scene2Features /> </Sequence> {/* Scene 3: Demo (15s - 25s) */} <Sequence from={SCENE_TIMING.demo.start} durationInFrames=