Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
bluzir avatar

Animated Video

  • 95 installs
  • 98 repo stars
  • Updated April 20, 2026
  • bluzir/claude-code-design

animated-video is a Claude Code skill that builds motion design as standalone HTML animations or Remotion MP4 video.

About

This skill builds animated motion design such as explainers, transition reels, and product intros. It chooses between a standalone HTML path using a Remotion-compatible in-browser Stage/Sprite timeline engine and a Remotion path for long-form or MP4-export video. A developer uses it when producing web animations or exportable video from a Claude Code session.

  • Two paths: standalone HTML Stage/Sprite engine or Remotion for MP4
  • Remotion-compatible in-browser primitives (Stage, Sprite, useTime, Easing)
  • Popmotion fallback for spring physics and gesture tracking

Animated Video by the numbers

  • 95 all-time installs (skills.sh)
  • Ranked #796 of 1,335 Generative Media skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

animated-video capabilities & compatibility

Capabilities
video generation · ui design
Works with
chrome
Use cases
video generation · ui design
From the docs

What animated-video says it does

Build animated motion design (explainer, transition reel, product intro).
SKILL.md
For long-form (>60s), multi-scene narrative, or MP4-export needs.
SKILL.md
npx skills add https://github.com/bluzir/claude-code-design --skill animated-video

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs95
repo stars98
Last updatedApril 20, 2026
Repositorybluzir/claude-code-design

What it does

Build explainer or product-intro motion design as standalone HTML animation or Remotion MP4 video.

Who is it for?

Developers producing web explainer animations or exportable video from a design brief.

Skip if: Static UI work with no motion, or simple CSS transitions that do not need a timeline engine.

When should I use this skill?

When building an explainer, transition reel, product intro, or MP4 video animation.

What you get

A rendered HTML animation or an MP4 video built from a timeline of animated scenes.

  • Standalone HTML animation
  • Remotion MP4 video
  • Animated scene compositions

By the numbers

  • Two build paths (standalone HTML vs Remotion)
  • Standalone HTML path targets animations under ~60s

Files

SKILL.mdMarkdownGitHub ↗

Animated Video

Two paths depending on complexity. Decide first, tell the user which path you're taking.

Phase 0 — Context pre-flight (auto-detect, ONE question max)

Before deciding Path A vs B, silently check for context: 1. Read .claude/design-tokens.json if exists 2. Bash(ls ~/.claude/design-systems/ 2>/dev/null) — brand folder match 3. Glob codebase tokens 4. Scan brief for github / Figma / image / PRD attachment → dispatch ingestion skills

If nothing — ONE AskUserQuestion: design system / codebase / screenshot / Figma / none / decide. Report "Using <context>. Proceeding."

Path A — Standalone HTML with Stage/Sprite

For any animation that can live in one HTML file (explainer reel, product intro, transition sequences, hero animations — <60s typical).

Uses the Remotion-compatible in-browser engine in starters/animations.jsx. Same mental model as Remotion — different runtime (no build step, runs under Babel standalone).

Available primitives:

PrimitiveRole
<Stage duration width height [id] [loop] [showControls]>Root composition. Owns one RAF clock, scale-to-fit canvas, scrubber UI, play/pause. Reads/writes position in localStorage.
<Sprite start end [easing]>Active only in [start..end]ms window. Children can be element or (localT) => element. Unmounts when out of range.
useTime({ stopAt? })Returns current ms. Inside Stage: reads shared clock (free). Standalone: spawns its own RAF (costlier).
useSprite()Returns local t ∈ [0,1] within the current Sprite.
Easinglinear, inQuad, outQuad, inOutCubic, outQuart, inOutExpo, spring(stiffness, damping)
interpolate(t, [in], [out], { clamp?, easing? })Piecewise lerp. Supports numbers and hex colors.
<FadeIn>, <FadeOut>, <SlideIn from=...>, <ScaleIn from=...>, <Reveal from=...>Entry/exit sugar. Persist after their animation window (unlike Sprite).
<Transition from to duration>Standalone one-shot wrapper (no Stage needed).

Steps:

1. Invoke Skill: frontend-design for aesthetic direction 2. Create artifacts/<slug>.html with React + Babel + animations.jsx 3. Bash(cp starters/animations.jsx "$(dirname <html>)/") — copy starter next to the HTML 4. Run /serve (required for external .jsx CORS) 5. Compose the scene. Pattern:

function Scene() {
  const t = useTime();  // Stage-shared clock
  // drive properties via interpolate()
  const bg = interpolate(t, [0, 2000, 5000], ['#fef9f3', '#f3d8a8', '#8a5a22'], { easing: Easing.inOutCubic });
  return (
    <div style={{ position: 'absolute', inset: 0, background: bg }}>
      <FadeIn start={0} duration={500}>
        <h1>Entry stays visible after 500ms</h1>
      </FadeIn>
      <Reveal start={400} duration={700} from="bottom" distance={40}>
        <p>Fade + slide combo</p>
      </Reveal>
      <Sprite start={1500} end={3500} easing={Easing.outQuart}>
        {(local) => <div style={{ opacity: local, transform: `scale(${local})` }}>Bounded — disappears after 3500</div>}
      </Sprite>
    </div>
  );
}

function App() {
  return <Stage duration={5000} width={1920} height={1080} loop={false}><Scene/></Stage>;
}

6. /done http://127.0.0.1:4567/artifacts/<slug>.html — verify scrubber works, animation plays cleanly, console clean 7. For exporting frames/seeking for PPTX: external tools can send window.postMessage({ seekMs: N, playing: false }, '*') — Stage listens and jumps

Path B — Remotion (MP4 export, multi-scene video)

For long-form (>60s), multi-scene narrative, or MP4-export needs.

1. Delegate to Skill: remotion-best-practices — full Remotion workflow 2. Set up artifacts/<slug>-remotion/ as a separate Remotion project 3. Return a preview HTML and MP4 artifact when done

When to pick which

NeedPath
Single scene, any lengthA
Product intro, explainer under a minuteA
Multi-scene narrativeB
MP4 export requiredB
Browser-only preview (ship an HTML)A
Exact frame timing (e.g. 30fps video)B (Remotion is frame-based)
Physics / gesture-drivenA with Popmotion <script src> fallback, or B

Popmotion fallback

For real spring physics, keyframe math, or gesture tracking beyond what Easing.spring() supports, add:

<script src="https://unpkg.com/popmotion@11.0.5/dist/popmotion.min.js"></script>

and use window.popmotion directly.

Verify

Path A: /done <url> — scrubber reaches end, clicking bar seeks, play/pause toggles, console clean. If the user wants PPTX frames of this animation: seek via postMessage before each screenshot.

Path B: Remotion preview server at localhost:3000 + exported MP4.

Related skills

FAQ

When should you use Remotion instead of the standalone HTML path?

Use Remotion for long-form (>60s), multi-scene narrative, or MP4-export needs; use the standalone HTML Stage/Sprite path for single-scene, browser-only animations.

How do you add real spring physics beyond Easing.spring()?

Add the Popmotion script from unpkg and use window.popmotion directly for spring physics, keyframe math, or gesture tracking.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.