skills/remotion/SKILL.md
Remotion video creation in React - dynamic concept catalog for video briefs, cold audience optimization, and technical best practices
npx skillsauth add realjaymes/marketingagentskills remotionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when:
When creating a new Remotion video, follow this 8-step process. Step 2 selects 3-5 concepts from the catalog based on the brief and cold audience optimization. Steps 4 and 5 are approval gates. Do not write code until both are approved.
For the full process document with templates and decision matrices, read references/video-creation-process.md.
Before any creative work, identify the brand. Ask the user: "What brand is this video for?"
If the brand has a preset below, use it directly. No further brand questions needed.
If the brand is not listed, ask the user to provide a brand website URL or brand guidelines. Extract: background color, primary accent, secondary accent, text colors, font family, and theme (light/dark). If no guidelines exist, ask for at minimum: primary color, background color, and font preference.
Gather and lock before any creative work:
Purpose: [Why this video exists]
Audience: [Who is watching]
Core message: [One sentence]
Content type: [blog-post, case-study, webinar, podcast, lead-magnet, product-update, tool-launch, industry-report, event-recap, client-testimonial, playbook, template, ai-demo, custom-gpt]
Channels: [Where it will be distributed]
CTA: [What the viewer should do next]
Source assets: [Files, components, or URLs to reference]
Tone: [Descriptive words for the feel]
Brand: [Brand name from Step 0]
After locking the creative brief, analyze it to select the best video concepts for this specific use case. Do not present a fixed set of variants. Draw from the concept catalog in references/concept-catalog.md.
The catalog contains 18 primary concepts, 8 visual style modifiers, and 5 cold audience hook patterns. Read it before generating recommendations.
Score concepts against the brief. For each concept in the catalog, evaluate:
Apply the cold audience filter. For each scored concept, evaluate:
Select a hook pattern. For each recommended concept, pair it with a hook pattern from the catalog:
Present 3-5 recommended concepts as one-page briefs. For each:
Rank the recommendations. Mark the top recommendation and explain why.
User selects one (or a hybrid of two). Lock the selected concept before proceeding to Step 3.
These rules apply to all concept recommendations and override content-type defaults when they conflict:
Resolve from the brief and selected variant using the format decision matrix:
| Channel | Dimensions | Duration | |---------|-----------|----------| | LinkedIn/Instagram feed | 1080x1080 | 15-30s | | Website/presentation | 1920x1080 | 15-60s | | Reels/TikTok/Stories | 1080x1920 | 15-60s | | Email (GIF) | 600x600 or 800x450 | 5-10s |
Default FPS: 30. Only use 60 if smooth motion is critical.
Dimensions: [width]x[height]
Duration: [X] seconds ([X * fps] frames)
FPS: 30
Composition ID: [PascalCase]
Loop: [yes/no]
Output formats: [mp4, gif, webm]
Selected concept: [concept-id from catalog, or hybrid]
Define every scene before writing code. Use the selected variant's scene template as the starting structure, then customize for the specific content.
Present the scene table for approval.
Scene table format:
| # | Name | Time | Copy | Animation | Purpose | |---|------|------|------|-----------|---------| | 1 | Hook | 0-3s | Exact text | Motion description | Why it exists |
Timing guidelines:
| Duration | Scene Count | Avg Per Scene | |----------|-------------|---------------| | 10s | 3-4 | 2.5-3.3s | | 15s | 4-6 | 2.5-3.75s | | 30s | 8-12 | 2.5-3.75s | | 60s | 12-20 | 3-5s |
Lock copy, timing, and narrative structure before proceeding.
Lock before implementation:
Color palette (minimum required roles):
Brand theme presets (use for known brands, skip color questions):
| Brand | Background | Primary Accent | Secondary Accent | Text Primary | Text Muted | Font | Theme |
|-------|-----------|---------------|-----------------|-------------|-----------|------|-------|
| FunnelEnvy | #FFFFFF / #1a1a2e (terminal) | #3B82F6 (Blue) | #8B5CF6 (Purple) | #000000 | #6B7280 | Inter, system | Light |
| Reform | #FFFFFF / #1a1a2e (terminal) | #48EC80 (Green) | #EDE630 (Yellow) | #000000 | #6B7280 | Inter, system | Light |
| GrowthNode | #0f0a1a (all scenes) | #8B5CF6 (Purple) | #3B82F6 (Blue) | #FFFFFF | #a1a1aa | Inter, system | Dark |
| MIA | #F7F4FA / #1c1422 (dark) | #F1DE71 (Yellow) | #7184F1 (Purple) | #1c1422 / #f7f4fa (dark) | rgba(28,20,34,0.62) | system-ui, -apple-system, Segoe UI | Light |
MIA accent palette: Blue #71C4F1, Purple #7184F1, Pink #F171C4, Green #71F19E
Custom brands: If the brand is not listed above, define colors from the brand website or guidelines provided in Step 0. Fill the same roles: background, primary accent, secondary accent, text primary, text muted, font, theme.
Typography: Font family, weight hierarchy, sizes at target resolution.
Animation style: Spring (bouncy/smooth/snappy), linear, or ease-based. Pick a dominant style.
Source of truth: If matching an existing design, reference the source file.
Agent resolves this based on scene complexity:
| Condition | Approach |
|-----------|----------|
| Under 15 scenes | Single file |
| 15+ scenes or reusable parts | Multi-file with scenes/ directory |
| Shared elements across scenes | Persistent layer with opacity envelope |
Always use a centralized timing constant (const T = { ... }).
Write code against locked decisions. All animation must follow Remotion rules (see Technical Reference below).
Generate a reference doc covering: specs, selected variant, preview/render commands, scene breakdown, color palette, timing config, architecture notes, iteration guide.
Read individual rule files for API details and code examples.
useCurrentFrame(). No CSS transitionsinterpolate(), spring(), easing functions, spring configs<Sequence> and <Series> for timing, delay, and duration controlfrom) and ends (durationInFrames)<TransitionSeries> with fade, slide, wipe, flip, clockWipestaticFile() for public folder assets<Video> with trimming, volume, speed, looping, pitch<Audio> with trimming, volume, speed, pitch<Img> component (ensures load before render)<AnimatedImage> for GIF/APNG/AVIF/WebP@remotion/google-fonts, local fonts via @remotion/fontsmeasureText(), fitText(), fillTextBox().srt files with parseSrt()<Composition>, <Still>, <Folder>, defaultProps<ThreeCanvas> with React Three FiberuseCurrentFrame()<Lottie> component with @remotion/lottietransition-* or animate-* classes)useCurrentScale() for accurate measurementsThese apply to all Remotion code. Violations will produce incorrect output.
useCurrentFrame(). No CSS transitions, no Tailwind animate-* or transition-* classes, no React Three Fiber useFrame()<Img>, <Video>, <Audio>) not native HTML elementsstaticFile() for all assets in the public/ folderfps from useVideoConfig() to get framesuseCurrentFrame() instead)testing
When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform. Also use when the user mentions 'ad copy variations,' 'ad creative,' 'generate headlines,' 'RSA headlines,' 'bulk ad copy,' 'ad iterations,' 'creative testing,' or 'ad performance optimization.' This skill covers generating ad creative at scale, iterating based on performance data, and enforcing platform character limits. For campaign strategy and targeting, see paid-ads. For landing page copy, see copywriting.
development
Creates positioning, messaging, and brand architecture frameworks for multi-product companies. Use when the user wants to 'position a product suite,' 'multi-product positioning,' 'portfolio positioning,' 'brand architecture,' 'core narrative,' 'house of brands vs branded house,' 'product portfolio messaging,' 'launch a second product,' 'launch a new product into our suite,' 'audit our portfolio messaging,' or 'are our products fighting each other.' Sits above product-positioning and product-messaging in the hierarchy. Forces a brand architecture decision first, then builds the layered framework that single-product skills run inside of.
development
When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," or "indexing issues." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema-markup. For AI search optimization, see ai-seo.
development
Guides beginner-to-intermediate developers through web development, Claude Code skills creation, and AI-assisted coding workflows. Use when the user asks about "vibe coding," "learning to code," "web development basics," "Claude skills," "building websites," "frontend," "backend," or wants help with HTML, CSS, JavaScript, or deployment.