> Decision-tree routing for animation pattern selection
Scanned 9/4/2026
Install to Claude Code
npx -y skills add majiayu000/claude-skill-registry-data --skill animation-techniques --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Animation Techniques?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-animation-techniques-claude-skill-registry-data)More formats (shields.io, HTML) on the badges page.
---
name: animation-techniques
description: '> Decision-tree routing for animation pattern selection'
---
# Animation Techniques
> Decision-tree routing for animation pattern selection
---
## Invocation Triggers
Invoke this skill when:
- User mentions "animation", "transition", "morph", "effect"
- Implementing UI state changes with visual feedback
- Choosing between animation libraries (motion.dev vs anime.js vs CSS)
- Designing multi-phase or orchestrated animations
- Text-based animations or character effects
---
## Questionnaire: Animation Type Selection
```
Q1: What is being animated?
├─[A] Text/Characters → Q2
├─[B] Layout/Position → Q4
├─[C] Color/Opacity → Q5
├─[D] Shape/SVG → Q6
└─[E] Complex orchestration → Q7
Q2: Text animation type?
├─[A] Entrance/Exit → Use motion.dev AnimatePresence
├─[B] Character-by-character → Q3
├─[C] Typewriter effect → Use anime.js irregular playback
└─[D] Content change (A→B) → TEXT MORPH TECHNIQUE
└─► Ref: techniques/text-morph-animation.md
Q3: Character animation complexity?
├─[A] Simple stagger (fade in/out) → motion.dev + staggerChildren
├─[B] Position scramble → anime.js splitText + stagger
├─[C] Multi-phase morph → TEXT MORPH TECHNIQUE
└─[D] Continuous loop → anime.js timeline + loop:true
Q4: Layout animation type?
├─[A] Enter/Exit presence → motion.dev AnimatePresence
├─[B] Shared element → motion.dev layoutId
├─[C] Reorder list → motion.dev Reorder
├─[D] Staggered grid → anime.js stagger({ grid: [x,y] })
└─[E] Physics-based → motion.dev spring transition
Q5: Color/Opacity animation?
├─[A] Simple fade → CSS transition (prefer)
├─[B] Color interpolation → motion.dev (handles color spaces)
├─[C] Gradient animation → anime.js (better gradient support)
└─[D] Filter effects → motion.dev filter prop
Q6: Shape/SVG animation?
├─[A] Path morphing → anime.js SVG module
├─[B] Draw/stroke → anime.js strokeDashoffset
├─[C] Simple transform → motion.dev
└─[D] Complex path → Consider GSAP or anime.js
Q7: Complex orchestration?
├─[A] Sequential phases → anime.js createTimeline
├─[B] Parallel + stagger → anime.js timeline.add(..., offset)
├─[C] React-coordinated → motion.dev variants + staggerChildren
└─[D] Imperative control → anime.js (better control API)
```
---
## Decision Tree: Library Selection
```
┌─────────────────────────────────┐
│ ANIMATION REQUIREMENT │
└───────────────┬─────────────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ React State │ │ DOM Direct │ │ Complex │
│ Driven │ │ Manipulation │ │ Orchestration │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ motion.dev │ │ anime.js v4 │ │ anime.js v4 │
│ (motion/react)│ │ or CSS │ │ timeline │
└───────────────┘ └───────────────┘ └───────────────┘
│ │ │
▼ ▼ ▼
┌───────────────────────────────────────────────────────────┐
│ COMPLEXITY CHECK │
└───────────────────────────────────────────────────────────┘
│ │ │
┌───────┴───────┐ ┌───────┴───────┐ ┌───────┴───────┐
│ Simple │ │ Medium │ │ High │
│ (1-2 props) │ │ (3-5 props) │ │ (6+ props or │
│ │ │ │ │ multi-phase) │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ CSS transition│ │ motion.dev │ │ anime.js │
│ (if possible) │ │ (default) │ │ createTimeline│
└───────────────┘ └───────────────┘ └───────────────┘
```
---
## Decision Tree: Text Animation
```
┌─────────────────────────────────┐
│ TEXT ANIMATION NEED │
└───────────────┬─────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Entrance/ │ │ Content │ │ Continuous│
│ Exit │ │ Change │ │ Effect │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
┌───────┴───────┐ │ ┌───────┴───────┐
│ │ │ │ │
▼ ▼ │ ▼ ▼
┌───────────┐ ┌───────────┐ │ ┌───────────┐ ┌───────────┐
│ Whole │ │ Per-char │ │ │ Typewriter│ │ Scramble/ │
│ element │ │ stagger │ │ │ reveal │ │ glitch │
└─────┬─────┘ └─────┬─────┘ │ └─────┬─────┘ └─────┬─────┘
│ │ │ │ │
▼ ▼ │ ▼ ▼
┌───────────┐ ┌───────────┐ │ ┌───────────┐ ┌───────────┐
│motion.dev │ │ anime.js │ │ │ anime.js │ │ anime.js │
│Animate │ │ splitText │ │ │ irregular │ │ timeline │
│Presence │ │ + stagger │ │ │ playback │ │ + random │
└───────────┘ └───────────┘ │ └───────────┘ └───────────┘
│
▼
┌─────────────────────────────────┐
│ SAME LENGTH OR DIFFERENT? │
└───────────────┬─────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Same │ │ Growing │ │ Shrinking │
│ length │ │ (+chars) │ │ (-chars) │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
└───────────────┼───────────────┘
│
▼
┌─────────────────────────────────┐
│ TEXT MORPH TECHNIQUE │
│ │
│ Phase 1: Fade out unmapped │
│ Phase 2: Compress remaining │
│ Phase 3: Scramble to target │
│ Phase 4: Fade in new chars │
│ │
│ ► techniques/text-morph- │
│ animation.md │
└─────────────────────────────────┘
```
---
## Quick Reference: Library Capabilities
| Capability | motion.dev | anime.js v4 | CSS |
|------------|------------|-------------|-----|
| React integration | Native | Manual | Native |
| AnimatePresence | ✓ | - | - |
| Layout animations | ✓ | - | - |
| Shared elements | ✓ | - | - |
| Text splitting | - | ✓ splitText | - |
| Timeline | - | ✓ createTimeline | - |
| Grid stagger | - | ✓ stagger({grid}) | - |
| SVG morphing | - | ✓ | - |
| Spring physics | ✓ | ✓ | - |
| Reduced motion | ✓ useReducedMotion | Manual | ✓ prefers-reduced-motion |
---
## Technique Index
| Technique | When to Use | Reference |
|-----------|-------------|-----------|
| Text Morph | Transitioning between different text content | `techniques/text-morph-animation.md` |
| Stagger Grid | Animating grid items with wave effect | anime.js docs |
| Layout Shared | Elements moving between containers | motion.dev layoutId |
| Presence | Elements entering/exiting DOM | motion.dev AnimatePresence |
**Full catalog**: See `techniques/INDEX.md` for all documented techniques.
---
## Integration Checklist
When implementing animations:
- [ ] Check `prefers-reduced-motion` - skip or simplify
- [ ] Consider mobile performance - reduce particle counts
- [ ] Use hardware acceleration - `transform` over `top/left`
- [ ] Clean up on unmount - cancel pending animations
- [ ] Test with DevTools → Performance → 6x slowdown
---
## Related
- **Navigation:** `AGENTS.md` (agent instructions for this skill)
- **Techniques:** `techniques/INDEX.md` (full technique catalog)
- **Beads:** tmnl-ypwpb (Text Morph feature)
- **Skills:** `/effect-atom-integration` (for animation state)
- **Submodules:** `../../submodules/anime/` (anime.js v4 source)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!