Analyze a feature and strategically add animations and micro-interactions that enhance understanding, provide feedback, and create delight.
MANDATORY PREPARATION
Context Gathering (Do This First)
You cannot do a great job without having necessary context, such as target audience (critical), desired use-cases (critical), brand personality/tone (playful vs serious, energetic vs calm), and performance constraints.
Attempt to gather these from the current thread or codebase.
- If you don't find exact information and have to infer from existing design and functionality, you MUST STOP and {{ask_instruction}} whether you got it right.
- Otherwise, if you can't fully infer or your level of confidence is medium or lower, you MUST {{ask_instruction}} clarifying questions first to complete your context.
Do NOT proceed until you have answers. Guessing leads to inappropriate or excessive animation.
Use frontend-design skill
Use the frontend-design skill for design principles and anti-patterns. Do NOT proceed until it has executed and you know all DO's and DON'Ts.
Assess Animation Opportunities
Analyze where motion would improve the experience:
Identify static areas:
- Missing feedback: Actions without visual acknowledgment (button clicks, form submission, etc.)
- Jarring transitions: Instant state changes that feel abrupt (show/hide, page loads, route changes)
- Unclear relationships: Spatial or hierarchical relationships that aren't obvious
- Lack of delight: Functional but joyless interactions
- Missed guidance: Opportunities to direct attention or explain behavior
Understand the context:
- What's the personality? (Playful vs serious, energetic vs calm)
- What's the performance budget? (Mobile-first? Complex page?)
- Who's the audience? (Motion-sensitive users? Power users who want speed?)
- What matters most? (One hero animation vs many micro-interactions?)
If any of these are unclear from the codebase, {{ask_instruction}}
CRITICAL: Respect prefers-reduced-motion. Always provide non-animated alternatives for users who need them.
Plan Animation Strategy
Create a purposeful animation plan:
- Hero moment: What's the ONE signature animation? (Page load? Hero section? Key interaction?)
- Feedback layer: Which interactions need acknowledgment?
- Transition layer: Which state changes need smoothing?
- Delight layer: Where can we surprise and delight?
IMPORTANT: One well-orchestrated experience beats scattered animations everywhere. Focus on high-impact moments.
Implement Animations
Add motion systematically across these categories:
Entrance Animations
- Page load choreography: Stagger element reveals (100-150ms delays), fade + slide combinations
- Hero section: Dramatic entrance for primary content (scale, parallax, or creative effects)
- Content reveals: Scroll-triggered animations using intersection observer
- Modal/drawer entry: Smooth slide + fade, backdrop fade, focus management
Micro-interactions
- Button feedback:
- Hover: Subtle scale (1.02-1.05), color shift, shadow increase
- Click: Quick scale down then up (0.95 → 1), ripple effect
- Loading: Spinner or pulse state
- Form interactions:
- Input focus: Border color transition, slight scale or glow
- Validation: Shake on error, check mark on success, smooth color transitions
- Toggle switches: Smooth slide + color transition (200-300ms)
- Checkboxes/radio: Check mark animation, ripple effect
- Like/favorite: Scale + rotation, particle effects, color transition
State Transitions
- Show/hide: Fade + slide (not instant), appropriate timing (200-300ms)
- Expand/collapse: Height transition with overflow handling, icon rotation
- Loading states: Skeleton screen fades, spinner animations, progress bars
- Success/error: Color transitions, icon animations, gentle scale pulse
- Enable/disable: Opacity transitions, cursor changes
Navigation & Flow
- Page transitions: Crossfade between routes, shared element transitions
- Tab switching: Slide indicator, content fade/slide
- Carousel/slider: Smooth transforms, snap points, momentum
- Scroll effects: Parallax layers, sticky headers with state changes, scroll progress indicators
Feedback & Guidance
- Hover hints: Tooltip fade-ins, cursor changes, element highlights
- Drag & drop: Lift effect (shadow + scale), drop zone highlights, smooth repositioning
- Copy/paste: Brief highlight flash on paste, "copied" confirmation
- Focus flow: Highlight path through form or workflow
Delight Moments
- Empty states: Subtle floating animations on illustrations
- Completed actions: Confetti, check mark flourish, success celebrations
- Easter eggs: Hidden interactions for discovery
- Contextual animation: Weather effects, time-of-day themes, seasonal touches
Technical Implementation
Use appropriate techniques for each animation:
Timing & Easing
Durations by purpose:
- 100-150ms: Instant feedback (button press, toggle)
- 200-300ms: State changes (hover, menu open)
- 300-500ms: Layout changes (accordion, modal)
- 500-800ms: Entrance animations (page load)
Easing curves (use these, not CSS defaults):
/* Recommended - natural deceleration */
--ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); /* Smooth, refined */
--ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1); /* Slightly snappier */
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); /* Confident, decisive */
/* AVOID - feel dated and tacky */
/* bounce: cubic-bezier(0.34, 1.56, 0.64, 1); */
/* elastic: cubic-bezier(0.68, -0.6, 0.32, 1.6); */
Exit animations are faster than entrances. Use ~75% of enter duration.
CSS Animations
/* Prefer for simple, declarative animations */
- transitions for state changes
- @keyframes for complex sequences
- transform + opacity only (GPU-accelerated)
JavaScript Animation
/* Use for complex, interactive animations */
- Web Animations API for programmatic control
- Framer Motion for React
- GSAP for complex sequences
Performance
- GPU acceleration: Use
transform and opacity, avoid layout properties
- will-change: Add sparingly for known expensive animations
- Reduce paint: Minimize repaints, use
contain where appropriate
- Monitor FPS: Ensure 60fps on target devices
Accessibility
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
NEVER:
- Use bounce or elastic easing curves—they feel dated and draw attention to the animation itself
- Animate layout properties (width, height, top, left)—use transform instead
- Use durations over 500ms for feedback—it feels laggy
- Animate without purpose—every animation needs a reason
- Ignore
prefers-reduced-motion—this is an accessibility violation
- Animate everything—animation fatigue makes interfaces feel exhausting
- Block interaction during animations unless intentional
Verify Quality
Test animations thoroughly:
- Smooth at 60fps: No jank on target devices
- Feels natural: Easing curves feel organic, not robotic
- Appropriate timing: Not too fast (jarring) or too slow (laggy)
- Reduced motion works: Animations disabled or simplified appropriately
- Doesn't block: Users can interact during/after animations
- Adds value: Makes interface clearer or more delightful
Remember: Motion should enhance understanding and provide feedback, not just add decoration. Animate with purpose, respect performance constraints, and always consider accessibility. Great animation is invisible - it just makes everything feel right.
1---2name: animate3description: Review a feature and enhance it with purposeful animations, micro-interactions, and motion effects that improve usability and delight. Use when user says "add animations", "add motion", "make it move", "add micro-interactions", "add transitions", or wants to enhance a static interface with motion.4---56Analyze a feature and strategically add animations and micro-interactions that enhance understanding, provide feedback, and create delight.78## MANDATORY PREPARATION910### Context Gathering (Do This First)1112You cannot do a great job without having necessary context, such as target audience (critical), desired use-cases (critical), brand personality/tone (playful vs serious, energetic vs calm), and performance constraints.1314Attempt to gather these from the current thread or codebase.15161. If you don't find *exact* information and have to infer from existing design and functionality, you MUST STOP and {{ask_instruction}} whether you got it right.172. Otherwise, if you can't fully infer or your level of confidence is medium or lower, you MUST {{ask_instruction}} clarifying questions first to complete your context.1819Do NOT proceed until you have answers. Guessing leads to inappropriate or excessive animation.2021### Use frontend-design skill2223Use the frontend-design skill for design principles and anti-patterns. Do NOT proceed until it has executed and you know all DO's and DON'Ts.2425---2627## Assess Animation Opportunities2829Analyze where motion would improve the experience:30311. **Identify static areas**:32 - **Missing feedback**: Actions without visual acknowledgment (button clicks, form submission, etc.)33 - **Jarring transitions**: Instant state changes that feel abrupt (show/hide, page loads, route changes)34 - **Unclear relationships**: Spatial or hierarchical relationships that aren't obvious35 - **Lack of delight**: Functional but joyless interactions36 - **Missed guidance**: Opportunities to direct attention or explain behavior37382. **Understand the context**:39 - What's the personality? (Playful vs serious, energetic vs calm)40 - What's the performance budget? (Mobile-first? Complex page?)41 - Who's the audience? (Motion-sensitive users? Power users who want speed?)42 - What matters most? (One hero animation vs many micro-interactions?)4344If any of these are unclear from the codebase, {{ask_instruction}}4546**CRITICAL**: Respect `prefers-reduced-motion`. Always provide non-animated alternatives for users who need them.4748## Plan Animation Strategy4950Create a purposeful animation plan:5152- **Hero moment**: What's the ONE signature animation? (Page load? Hero section? Key interaction?)53- **Feedback layer**: Which interactions need acknowledgment?54- **Transition layer**: Which state changes need smoothing?55- **Delight layer**: Where can we surprise and delight?5657**IMPORTANT**: One well-orchestrated experience beats scattered animations everywhere. Focus on high-impact moments.5859## Implement Animations6061Add motion systematically across these categories:6263### Entrance Animations64- **Page load choreography**: Stagger element reveals (100-150ms delays), fade + slide combinations65- **Hero section**: Dramatic entrance for primary content (scale, parallax, or creative effects)66- **Content reveals**: Scroll-triggered animations using intersection observer67- **Modal/drawer entry**: Smooth slide + fade, backdrop fade, focus management6869### Micro-interactions70- **Button feedback**:71 - Hover: Subtle scale (1.02-1.05), color shift, shadow increase72 - Click: Quick scale down then up (0.95 → 1), ripple effect73 - Loading: Spinner or pulse state74- **Form interactions**:75 - Input focus: Border color transition, slight scale or glow76 - Validation: Shake on error, check mark on success, smooth color transitions77- **Toggle switches**: Smooth slide + color transition (200-300ms)78- **Checkboxes/radio**: Check mark animation, ripple effect79- **Like/favorite**: Scale + rotation, particle effects, color transition8081### State Transitions82- **Show/hide**: Fade + slide (not instant), appropriate timing (200-300ms)83- **Expand/collapse**: Height transition with overflow handling, icon rotation84- **Loading states**: Skeleton screen fades, spinner animations, progress bars85- **Success/error**: Color transitions, icon animations, gentle scale pulse86- **Enable/disable**: Opacity transitions, cursor changes8788### Navigation & Flow89- **Page transitions**: Crossfade between routes, shared element transitions90- **Tab switching**: Slide indicator, content fade/slide91- **Carousel/slider**: Smooth transforms, snap points, momentum92- **Scroll effects**: Parallax layers, sticky headers with state changes, scroll progress indicators9394### Feedback & Guidance95- **Hover hints**: Tooltip fade-ins, cursor changes, element highlights96- **Drag & drop**: Lift effect (shadow + scale), drop zone highlights, smooth repositioning97- **Copy/paste**: Brief highlight flash on paste, "copied" confirmation98- **Focus flow**: Highlight path through form or workflow99100### Delight Moments101- **Empty states**: Subtle floating animations on illustrations102- **Completed actions**: Confetti, check mark flourish, success celebrations103- **Easter eggs**: Hidden interactions for discovery104- **Contextual animation**: Weather effects, time-of-day themes, seasonal touches105106## Technical Implementation107108Use appropriate techniques for each animation:109110### Timing & Easing111112**Durations by purpose:**113- **100-150ms**: Instant feedback (button press, toggle)114- **200-300ms**: State changes (hover, menu open)115- **300-500ms**: Layout changes (accordion, modal)116- **500-800ms**: Entrance animations (page load)117118**Easing curves (use these, not CSS defaults):**119```css120/* Recommended - natural deceleration */121--ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); /* Smooth, refined */122--ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1); /* Slightly snappier */123--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); /* Confident, decisive */124125/* AVOID - feel dated and tacky */126/* bounce: cubic-bezier(0.34, 1.56, 0.64, 1); */127/* elastic: cubic-bezier(0.68, -0.6, 0.32, 1.6); */128```129130**Exit animations are faster than entrances.** Use ~75% of enter duration.131132### CSS Animations133```css134/* Prefer for simple, declarative animations */135- transitions for state changes136- @keyframes for complex sequences137- transform + opacity only (GPU-accelerated)138```139140### JavaScript Animation141```javascript142/* Use for complex, interactive animations */143- Web Animations API for programmatic control144- Framer Motion for React145- GSAP for complex sequences146```147148### Performance149- **GPU acceleration**: Use `transform` and `opacity`, avoid layout properties150- **will-change**: Add sparingly for known expensive animations151- **Reduce paint**: Minimize repaints, use `contain` where appropriate152- **Monitor FPS**: Ensure 60fps on target devices153154### Accessibility155```css156@media (prefers-reduced-motion: reduce) {157 * {158 animation-duration: 0.01ms !important;159 animation-iteration-count: 1 !important;160 transition-duration: 0.01ms !important;161 }162}163```164165**NEVER**:166- Use bounce or elastic easing curves—they feel dated and draw attention to the animation itself167- Animate layout properties (width, height, top, left)—use transform instead168- Use durations over 500ms for feedback—it feels laggy169- Animate without purpose—every animation needs a reason170- Ignore `prefers-reduced-motion`—this is an accessibility violation171- Animate everything—animation fatigue makes interfaces feel exhausting172- Block interaction during animations unless intentional173174## Verify Quality175176Test animations thoroughly:177178- **Smooth at 60fps**: No jank on target devices179- **Feels natural**: Easing curves feel organic, not robotic180- **Appropriate timing**: Not too fast (jarring) or too slow (laggy)181- **Reduced motion works**: Animations disabled or simplified appropriately182- **Doesn't block**: Users can interact during/after animations183- **Adds value**: Makes interface clearer or more delightful184185Remember: Motion should enhance understanding and provide feedback, not just add decoration. Animate with purpose, respect performance constraints, and always consider accessibility. Great animation is invisible - it just makes everything feel right.