🎞️ Skill: Animate Pro (v1.0.0)
Executive Summary
animate-pro is the specialist responsible for bringing interfaces to life through purposeful, high-performance motion. In 2026, animation is not decoration; it is Communication, Feedback, and Delight. This skill focuses on natural deceleration, accessibility-first motion (prefers-reduced-motion), and technical excellence to ensure 120fps experiences.
📋 The Motion Protocol
- Assess Opportunity: Identify static areas lacking feedback or jarring transitions.
- Gather Context: Define brand personality (Playful vs Serious) and audience.
- DNA Alignment: Consult
IMPECCABLE_DNA.md for mandatory easing and duration standards.
- Implementation: Use
transform and opacity to ensure GPU acceleration.
- A11y Check: Implement reduced-motion alternatives.
🛠️ Mandatory Standards (2026)
1. The Easing Canon (No CSS Defaults)
Avoid linear or standard ease. Use natural, exponential deceleration:
- Refined:
cubic-bezier(0.25, 1, 0.5, 1) (ease-out-quart)
- Snappy:
cubic-bezier(0.22, 1, 0.36, 1) (ease-out-quint)
- Confident:
cubic-bezier(0.16, 1, 0.3, 1) (ease-out-expo)
- 🚫 NEVER: Use
bounce or elastic easing (AI Slop indicators).
2. Purposeful Durations
- 100-150ms: Instant feedback (Toggles, button clicks).
- 200-300ms: State changes (Hover, menu reveals).
- 300-500ms: Layout changes (Accordions, modals).
- 500-800ms: Entrance choreography (Page loads).
3. GPU-First Execution
- Rule: ONLY animate
transform (scale, translate, rotate) and opacity.
- Protocol: Avoid animating
width, height, top, or padding to prevent layout thrashing. Use grid-template-rows for height-reveals.
🚀 Show, Don't Just Tell (Implementation Patterns)
Framer Motion Staggered Entrance (React 19)
import { motion } from "framer-motion";
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: { staggerChildren: 0.1, ease: [0.16, 1, 0.3, 1] }
}
};
const item = {
hidden: { opacity: 0, y: 20 },
show: { opacity: 1, y: 0 }
};
export const StaggeredList = ({ items }) => (
<motion.ul variants={container} initial="hidden" animate="show">
{items.map(i => <motion.li key={i} variants={item}>{i}</motion.li>)}
</motion.ul>
);
🚫 The "Do Not" List (Anti-Patterns)
- DO NOT animate layout properties (e.g.,
margin, width).
- DO NOT block user interaction during long animations.
- DO NOT animate everything. "Animation fatigue" is a design failure.
- DO NOT use default CSS easing. It feels robotic and generic.
- DO NOT ignore
prefers-reduced-motion.
📂 Progressive Disclosure
1---2name: animate-pro3description: Master of Purposeful Motion & Micro-interactions. Expert in natural easing, GPU-accelerated animations, and Framer Motion for high-end interfaces.4---56# 🎞️ Skill: Animate Pro (v1.0.0)78## Executive Summary9`animate-pro` is the specialist responsible for bringing interfaces to life through purposeful, high-performance motion. In 2026, animation is not decoration; it is **Communication**, **Feedback**, and **Delight**. This skill focuses on natural deceleration, accessibility-first motion (`prefers-reduced-motion`), and technical excellence to ensure 120fps experiences.1011---1213## 📋 The Motion Protocol14151. **Assess Opportunity**: Identify static areas lacking feedback or jarring transitions.162. **Gather Context**: Define brand personality (Playful vs Serious) and audience.173. **DNA Alignment**: Consult `IMPECCABLE_DNA.md` for mandatory easing and duration standards.184. **Implementation**: Use `transform` and `opacity` to ensure GPU acceleration.195. **A11y Check**: Implement reduced-motion alternatives.2021---2223## 🛠️ Mandatory Standards (2026)2425### 1. The Easing Canon (No CSS Defaults)26Avoid `linear` or standard `ease`. Use natural, exponential deceleration:27- **Refined**: `cubic-bezier(0.25, 1, 0.5, 1)` (ease-out-quart)28- **Snappy**: `cubic-bezier(0.22, 1, 0.36, 1)` (ease-out-quint)29- **Confident**: `cubic-bezier(0.16, 1, 0.3, 1)` (ease-out-expo)30- **🚫 NEVER**: Use `bounce` or `elastic` easing (AI Slop indicators).3132### 2. Purposeful Durations33- **100-150ms**: Instant feedback (Toggles, button clicks).34- **200-300ms**: State changes (Hover, menu reveals).35- **300-500ms**: Layout changes (Accordions, modals).36- **500-800ms**: Entrance choreography (Page loads).3738### 3. GPU-First Execution39- **Rule**: ONLY animate `transform` (scale, translate, rotate) and `opacity`.40- **Protocol**: Avoid animating `width`, `height`, `top`, or `padding` to prevent layout thrashing. Use `grid-template-rows` for height-reveals.4142---4344## 🚀 Show, Don't Just Tell (Implementation Patterns)4546### Framer Motion Staggered Entrance (React 19)47```tsx48import { motion } from "framer-motion";4950const container = {51 hidden: { opacity: 0 },52 show: {53 opacity: 1,54 transition: { staggerChildren: 0.1, ease: [0.16, 1, 0.3, 1] }55 }56};5758const item = {59 hidden: { opacity: 0, y: 20 },60 show: { opacity: 1, y: 0 }61};6263export const StaggeredList = ({ items }) => (64 <motion.ul variants={container} initial="hidden" animate="show">65 {items.map(i => <motion.li key={i} variants={item}>{i}</motion.li>)}66 </motion.ul>67);68```6970---7172## 🚫 The "Do Not" List (Anti-Patterns)73741. **DO NOT** animate layout properties (e.g., `margin`, `width`).752. **DO NOT** block user interaction during long animations.763. **DO NOT** animate everything. "Animation fatigue" is a design failure.774. **DO NOT** use default CSS easing. It feels robotic and generic.785. **DO NOT** ignore `prefers-reduced-motion`.7980---8182## 📂 Progressive Disclosure8384- [**Impeccable DNA**](../expert-instruction/references/IMPECCABLE_DNA.md): High-fidelity design standards.85- [**Motion Physics**](./references/motion-physics.md): Spring vs Tweening in 2026.86- [**Accessibility in Motion**](./references/a11y-motion.md): Designing for sensitivity.