melgarafael/growthos/remotion-video

Claude Code and agent skill by melgarafael/growthos

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Remotion video composition knowledge — 6 template specs, storyboard-to-composition mapping, frame calculations, animation catalog, transition types, platform rules, retention triggers, and anti-patterns for video production

Install

npx vskill@latest install melgarafael/growthos/remotion-video

SKILL.md

Remotion Video Skill

Specialized knowledge base for mapping creative video concepts to Remotion compositions. Covers template selection, storyboard-to-composition translation, timing and pacing rules, animation and transition catalogs, platform-specific constraints, brand integration, retention psychology, and anti-patterns. This skill is consumed by the video-producer agent and integrates with the copywriting, video-production, and platform-mastery skills.


Trigger Conditions

Use this skill when the user asks to:

  • Create a video, reel, short, or explainer
  • Produce an animated carousel from existing slide content
  • Map a storyboard to a Remotion composition
  • Select the right video template for a given topic
  • Calculate frame timing for video scenes
  • Choose animations or transitions for video content
  • Optimize video pacing for retention
  • Convert carousel slides into animated video format
  • Render a video using Remotion
  • Review or improve an existing video storyboard

Template Registry

Six composition templates are available, each with specific constraints and scene flow patterns.

1. ReelTips
PropertyValue
Aspect Ratio9:16 (1080x1920)
FPS30
Duration Range15-60 seconds (450-1800 frames)
Scene Flowhook(3s) > points(5s each) > CTA(4s)
BackgroundDark gradient with accent color from brand
Default Animationsfade-in + scale-in for hook, alternating slide-left/right for points, bounce for CTA
Best ForQuick tips, lists, how-tos, hacks

Props Schema:

typescript
{
template: "ReelTips",
fps: 30,
width: 1080,
height: 1920,
brand: BrandProps,
scenes: SceneProps[], // types: hook, point, cta
showProgressBar: boolean,
showWatermark: boolean
}
2. ReelBeforeAfter
PropertyValue
Aspect Ratio9:16 (1080x1920)
FPS30
Duration Range15-30 seconds (450-900 frames)
Scene Flowhook(3s) > comparisons(6s each) > reveal(4s) > CTA(3s)
BackgroundSplit dark/light for before/after contrast
Default Animationswipe transitions for comparisons, slide for reveal
Best ForTransformations, comparisons, results, upgrades

Props Schema:

typescript
{
template: "ReelBeforeAfter",
fps: 30,
width: 1080,
height: 1920,
brand: BrandProps,
scenes: SceneProps[], // types: hook, comparison, point, cta
showProgressBar: boolean,
showWatermark: boolean
}
3. ReelNumbers
PropertyValue
Aspect Ratio9:16 (1080x1920)
FPS30
Duration Range15-30 seconds (450-900 frames)
Scene Flowhook(3s) > number+context(5s each) > insight(5s) > CTA(3s)
BackgroundSolid dark with accent-colored number highlights
Default Animationscounter-up for numbers, fade for context text
Best ForStatistics, data points, metrics, growth numbers

Props Schema:

typescript
{
template: "ReelNumbers",
fps: 30,
width: 1080,
height: 1920,
brand: BrandProps,
scenes: SceneProps[], // types: hook, number, point, cta
showProgressBar: boolean,
showWatermark: boolean
}
4. ExplainerSteps
PropertyValue
Aspect Ratio16:9 (1920x1080)
FPS30
Duration Range60-180 seconds (1800-5400 frames)
Scene Flowintro(5s) > steps(15s each) > summary grid(10s) > CTA(5s)
BackgroundClean light or branded gradient
Default Animationsslide-up for steps, scale-in for summary
Best ForTutorials, how-to guides, processes, setup guides

Props Schema:

typescript
{
template: "ExplainerSteps",
fps: 30,
width: 1920,
height: 1080,
brand: BrandProps,
scenes: SceneProps[], // types: hook, step, point, cta
showProgressBar: boolean,
showWatermark: boolean
}
5. ExplainerDemo
PropertyValue
Aspect Ratio16:9 (1920x1080)
FPS30
Duration Range30-120 seconds (900-3600 frames)
Scene Flowproblem(5s) > solution intro(5s) > features(15s each) > social proof(10s) > CTA(5s)
BackgroundBranded gradient or solid
Default Animationsfade transitions, scale for features
Best ForProduct demos, feature showcases, SaaS walkthroughs

Props Schema:

typescript
{
template: "ExplainerDemo",
fps: 30,
width: 1920,
height: 1080,
brand: BrandProps,
scenes: SceneProps[], // types: hook, point, demo, cta
showProgressBar: boolean,
showWatermark: boolean
}
6. CarouselAnimated
PropertyValue
Aspect Ratio4:5 (1080x1350)
FPS30
Duration Range15-60 seconds (450-1800 frames)
Scene Flowcover(4s) > content slides(4s each) > CTA(4s)
BackgroundInherits from carousel design spec or brand palette
Default Animationsslide-left transitions between slides
Best ForAnimated versions of existing carousel content

Props Schema:

typescript
{
template: "CarouselAnimated",
fps: 30,
width: 1080,
height: 1350,
brand: BrandProps,
scenes: SceneProps[], // types: hook, point, cta
showProgressBar: boolean,
showWatermark: boolean
}

Storyboard-to-Composition Mapping

Mapping Rules

The storyboard YAML produced by the video-producer agent must be translated into a Remotion composition JSON. Follow these rules exactly.

Scene Type Mapping
Storyboard Scene TypeRemotion SceneProps.typeTypical AnimationNotes
hook"hook"fade-in, scale-inAlways first scene. Must fire immediately.
point"point"slide-left, slide-rightContent scenes. Alternate directions for pattern interrupt.
comparison"comparison"wipe, slide-leftBefore/after pairs. Use wipe for dramatic reveal.
number"number"counter-upNumbers animate from 0 to target value.
step"step"slide-up, fade-inTutorial steps. Numbered prominently.
demo"demo"scale-in, fade-inProduct feature highlights.
cta"cta"bounce, scale-inAlways last scene. Brand handle visible.
Frame Calculation
For each scene in storyboard.scenes:
scene.durationFrames = scene.duration * storyboard.fps
scene.startFrame = sum of all previous scenes' durationFrames
Total composition frames:
totalFrames = sum of all scene durationFrames

Example calculation (30fps):

Scene 1 (hook, 3s): startFrame=0, durationFrames=90
Scene 2 (point, 5s): startFrame=90, durationFrames=150
Scene 3 (point, 5s): startFrame=240, durationFrames=150
Scene 4 (point, 5s): startFrame=390, durationFrames=150
Scene 5 (cta, 4s): startFrame=540, durationFrames=120
Total: totalFrames=660 (22 seconds)
Brand Injection

Map brand-voice.yaml colors to Remotion BrandProps:

yaml
# Input: brand-voice.yaml
visual_identity:
colors:
primary: "#6c5ce7"
secondary: "#00cec9"
background: "#0a0a0a"
text: "#ffffff"
accent: "#fd79a8"
handle: "@myhandle"
name: "My Brand"
# Output: BrandProps
brand:
name: "My Brand"
handle: "@myhandle"
colors:
primary: "#6c5ce7"
secondary: "#00cec9"
background: "#0a0a0a"
text: "#ffffff"
accent: "#fd79a8"
watermark_position: "bottom-right"
Composition Assembly
json
{
"template": "<from storyboard.template>",
"fps": 30,
"width": "<from template spec>",
"height": "<from template spec>",
"totalFrames": "<calculated sum>",
"brand": "<BrandProps from brand-voice.yaml>",
"scenes": [
{
"type": "<mapped scene type>",
"startFrame": "<calculated>",
"durationFrames": "<scene.duration * fps>",
"text": "<from storyboard scene>",
"subtext": "<from storyboard scene, optional>",
"icon": "<from storyboard scene, optional>",
"animation": "<from storyboard scene>",
"transition": "<from storyboard scene, default crossfade>"
}
],
"showProgressBar": true,
"showWatermark": true
}

Timing and Pacing

Duration Rules by Scene Type
Scene TypeMinimumRecommendedMaximumNotes
hook1.5s2-3s3sMust fire immediately. Hook text readable in under 2s.
point3s4-6s8sOne concept per scene. Text + subtext readable in duration.
comparison4s6-8s10sBefore/after pair needs time to register contrast.
number3s4-5s6sCounter-up animation needs 2-3s, context text needs 2s.
step8s12-15s20sTutorial steps need reading time + comprehension.
demo8s12-15s20sProduct features need visual demonstration time.
cta2s3-4s5sShort, clear, actionable. Don't linger.
Pacing by Platform
PlatformTotal Duration Sweet SpotScene PacingHook Window
Instagram Reels15-30sFast (3-5s per scene)< 1.5s
YouTube Shorts30-60sMedium (4-6s per scene)< 2s
TikTok15-60sFast (3-5s per scene)< 1s
YouTube (long)60-180sMeasured (8-15s per scene)< 3s
Pacing Rules
  1. 3-5 second visual change rule: No scene should go more than 5 seconds without a visible change (animation, new text, transition, or motion element).
  2. Descending duration: Later scenes can be slightly shorter than earlier ones to create acceleration toward the CTA.
  3. Hook compression: The hook scene should feel urgent. 2-3 seconds maximum. If the hook needs more time, the text is too long.
  4. CTA brevity: The CTA scene is not for new information. Keep it under 4 seconds. The viewer has already decided to act or not.
  5. Reading speed: Assume 150 words per minute for on-screen text. A 5-second scene supports approximately 12 words.

Animation Catalog

Ten animation types are available. Each maps to a Remotion animation implementation using useCurrentFrame() and interpolate().

AnimationDescriptionBest ForRemotion Implementation
fade-inOpacity from 0 to 1 over 15 framesHook scenes, gentle revealsinterpolate(frame, [0, 15], [0, 1]) on opacity
fade-outOpacity from 1 to 0 over 15 framesScene exits, before transitionsinterpolate(frame, [end-15, end], [1, 0]) on opacity
slide-leftElement enters from right edge, slides to centerContent points (odd positions)interpolate(frame, [0, 20], [width, 0]) on translateX
slide-rightElement enters from left edge, slides to centerContent points (even positions)interpolate(frame, [0, 20], [-width, 0]) on translateX
slide-upElement enters from bottom, slides to centerSteps, reveals, listsinterpolate(frame, [0, 20], [height, 0]) on translateY
scale-inElement scales from 0.5 to 1.0 with slight bounceHooks, reveals, emphasisinterpolate(frame, [0, 20], [0.5, 1]) on scale with spring config
bounceElement enters with elastic bounce effectCTAs, emphasis, fun revealsspring({ frame, fps, config: { damping: 8, stiffness: 100 } })
typewriterText appears character by characterQuotes, statements, dramatic revealsRender substring text.slice(0, charIndex) per frame
counter-upNumber counts from 0 to target valueStatistics, metrics, datainterpolate(frame, [0, durationFrames], [0, targetNumber]) rounded
wipeHorizontal wipe reveals new contentBefore/after reveals, dramatic transitionsClipPath animation from inset(0 100% 0 0) to inset(0 0 0 0)
Animation Selection Rules

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/melgarafael/growthos/remotion-video/badge)](https://verified-skill.com/skills/melgarafael/growthos/remotion-video)

Something wrong with this skill or its page? Tell us.