This turns natural language descriptions into playable browser animations using Vite, React, and Framer Motion. You describe what you want and it scaffolds a complete project with 3-7 scenes, picks transitions from a preset library (fadeBlur, morphExpand, splitHorizontal), and handles all the timing and sequencing. Everything sizes in vw units so it scales to any resolution. It can optionally call Gemini 3.1 Pro to generate scene breakdowns and copy if you have an API key, but works fine without it. Default stack is Framer Motion for marketing stuff, but it'll switch to p5.js or Three.js if you're doing generative art or 3D. Good for product demos, video intros, or animated presentations when you'd rather describe than keyframe.
npx -y skills add onewave-ai/claude-skills --skill animate --agent claude-codeInstalls into .claude/skills of the current project.
Create animated videos and motion graphics from a natural language description. Outputs a standalone Vite + React + Framer Motion project that plays in the browser.
Break the user's description into a scene plan:
$ARGUMENTS for the user's animation descriptionAuto-detect the best approach based on the request:
| Request Type | Stack | When to Use |
|---|---|---|
| Product intro, presentation, marketing | Framer Motion (default) | Scene-based with text, icons, transitions |
| Generative art, particles, patterns | p5.js | Creative/algorithmic visuals |
| 3D objects, environments, product renders | Three.js + react-three-fiber | 3D scenes needed |
| Simple text/logo animation | CSS animations only | Minimal, no heavy deps |
Default to Framer Motion unless the request clearly needs something else.
~/animations/[project-name]/bash ~/.claude/skills/animate/scripts/scaffold.sh [project-name] [stack]~/.claude/skills/animate/assets/template-files/ into the projectRead the references for animation presets and scene patterns:
references/animation-presets.md — all available transitions, springs, easingsreferences/scene-patterns.md — example scene code patternsFor each scene, create a React component in client/src/components/video/video_scenes/:
motion.div with scene transition presets (fadeBlur, scaleFade, slideLeft, splitHorizontal, morphExpand, etc.)containerVariants and itemVariants for staggered content revealsvw units for responsive sizing (works at any resolution)var(--color-accent), var(--color-bg-dark), etc.).glass-panel class for frosted glass cards.text-gradient and .text-gradient-accent for gradient textCreate client/src/components/video/VideoTemplate.tsx:
SCENE_DURATIONS object (scene name -> milliseconds)useVideoPlayer hook to manage scene advancementAnimatePresence mode="wait" for smooth transitionscurrentScene indexUpdate client/src/index.css with the right colors:
If GEMINI_API_KEY environment variable is available:
references/gemini-integration.md for API detailscd ~/animations/[project-name]
npm install
npm run dev
Tell the user the animation is running at http://localhost:5173 and open it in the browser.
Pick transitions that match the story beat:
vw units for sizing so animations look good at any resolutionAnimatePresence mode="wait" so one scene exits before the next entersjuliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills