From animation-pro
This skill should be used when the user asks to "animate a 3D scene", "add Three.js animation", "animate with R3F", "implement useFrame animation", "play a GLTF animation", "add morph targets", "animate instanced meshes", "create a camera path", "add scroll-driven camera", "implement shader animation", "add 3D physics", "build a 3D data visualization", "convert to 3D", "make this 3D", "add depth to this visualization", or mentions Three.js, React Three Fiber, R3F, Drei, AnimationMixer, KeyframeTrack, Theatre.js, Rapier 3D, WebGL, GLSL, useFrame, or shader uniforms. Covers WebGL scene animation, camera choreography, physics-driven 3D, instanced animation, and D3+Three.js hybrid pipelines.
How this skill is triggered — by the user, by Claude, or both
Slash command
/animation-pro:3d-animationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
WebGL scene animation using Three.js, React Three Fiber, Drei helpers,
references/animation-mixer.mdreferences/camera-strategies.mdreferences/d3-threejs-pipeline.mdreferences/instanced-animation.mdreferences/morph-and-skeletal.mdreferences/performance-budget.mdreferences/physics-driven-3d.mdreferences/shader-animation.mdreferences/spatial-mapping.mdreferences/theatre-sequencing.mdreferences/webgl-fallback.mdWebGL scene animation using Three.js, React Three Fiber, Drei helpers,
Theatre.js sequencing, and Rapier physics. Always verify APIs against
source code in refs/.
| Approach | Source | When to use |
|---|---|---|
useFrame loop | R3F | Continuous animation (rotation, floating, custom physics) |
AnimationMixer | Three.js | GLTF/FBX embedded animations, clip playback |
Drei useAnimations | Drei | Convenient wrapper around AnimationMixer for R3F |
Drei Float | Drei | Simple floating/bobbing effect |
Drei ScrollControls | Drei | Scroll-driven camera and object animation |
InstancedMesh + useFrame | R3F | Animating many identical objects efficiently |
| Morph targets | Three.js | Smooth shape interpolation |
| Shader uniforms | GLSL | GPU-driven animation (vertex displacement, color) |
| Theatre.js | Theatre | Visual keyframe timeline for complex choreography |
For data-driven 3D visualization, D3 computes positions and Three.js renders. Never re-implement D3 layout algorithms in Three.js.
Data (API/JSON)
-> D3 Layout (force, hierarchy, scale)
-> Position Arrays
-> Three.js Meshes (InstancedMesh for > 20 identical geometries)
-> useFrame updates
See references/d3-threejs-pipeline.md for the full pattern including
warm-up ticks, update strategies, and memory management.
When converting 2D visualizations to 3D, map data dimensions to spatial axes:
| Data property | 2D encoding | 3D encoding options |
|---|---|---|
| Category | Color / position | Z-depth layer, spatial cluster |
| Magnitude | Size / bar height | Y-axis height, sphere radius |
| Time | X-axis position | Z-axis depth (timeline corridor) |
| Relationship | Line / proximity | Edge geometry, spatial proximity |
See references/spatial-mapping.md for the complete mapping framework.
| Strategy | Implementation | Use case |
|---|---|---|
| Orbit | Drei OrbitControls | Free exploration |
| Scroll-driven | Drei ScrollControls + useScroll | Narrative, guided tour |
| Fixed angles | Constrained OrbitControls (min/maxPolarAngle) | Dashboard |
| GSAP-scrubbed | GSAP timeline on camera position | Cinematic sequence |
| First-person | Drei PointerLockControls | Immersive exploration |
See references/camera-strategies.md for implementation patterns.
Set these constraints before starting any 3D animation work:
| Metric | Budget | Measurement |
|---|---|---|
| Triangles | < 200,000 | renderer.info.render.triangles |
| Draw calls | < 100 | renderer.info.render.calls |
| Texture memory | < 64 MB | renderer.info.memory.textures |
| Bundle size (3D chunk) | < 200 KB gzipped | Webpack analyzer |
| Time to interactive | < 3s | Lighthouse |
| Target FPS | 60 (30 minimum on mobile) | useFrame delta monitoring |
Key performance patterns:
InstancedMesh for > 20 identical geometriesLOD (Level of Detail) for complex scenesSee references/performance-budget.md for the full guide.
Always provide a 2D fallback:
Suspenseprefers-reduced-motion: static render or disable animationSee references/webgl-fallback.md for the detection + Suspense pattern.
# Three.js AnimationMixer
grep -r "AnimationMixer\|AnimationAction\|AnimationClip" refs/threejs/src/animation/
# R3F useFrame
grep -r "useFrame\|useThree\|addEffect" refs/react-three-fiber/packages/fiber/src/
# Drei animation helpers
grep -r "useAnimations\|Float\|useScroll\|ScrollControls" refs/drei/src/
# Theatre.js
grep -r "sheet\|sequence\|val\|onChange" refs/theatre/packages/core/src/
# Rapier 3D
grep -r "RigidBody\|Collider\|World" refs/rapier/src/
When working from a handoff document produced by the animation-design chat
skill, follow its specifications exactly. The handoff includes: spatial mapping,
camera strategy, interaction audit, performance budget, and fallback strategy.
references/animation-mixer.md: Three.js AnimationMixer, KeyframeTrack, actions, blendingreferences/camera-strategies.md: Orbit, scroll-driven, fixed angles, GSAP-scrubbedreferences/d3-threejs-pipeline.md: D3 computes, Three.js renders pipelinereferences/spatial-mapping.md: Data dimensions to spatial axes mappingreferences/instanced-animation.md: InstancedMesh with per-instance animationreferences/morph-and-skeletal.md: Morph targets, bones, skinning, GLTF animationreferences/physics-driven-3d.md: Rapier integration, rigid bodies, constraintsreferences/shader-animation.md: Vertex displacement, uniforms over time, custom materialsreferences/performance-budget.md: Triangle count, draw calls, texture memory, FPS targetsreferences/theatre-sequencing.md: Theatre.js timeline, keyframe curves, studio UIreferences/webgl-fallback.md: Detection, Suspense, 2D fallback strategyProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
npx claudepluginhub travis-gilbert/claude-marketplace --plugin animation-pro