How this command is triggered — by the user, by Claude, or both
Slash command
/frontend:animateimpeccable/reference/The summary Claude sees in its command listing — used to decide when to auto-load this command
> **Additional context needed**: performance constraints. Add motion that conveys state, gives feedback, and clarifies hierarchy. Cut motion that exists only for decoration. Animation fatigue is a real cost; spend the budget on the moments that need it. --- ## Register Brand: motion is part of the voice; one well-rehearsed entrance beats scattered micro-interactions. The saturated AI default is fade-and-rise reveals on every scrolled section; that's a tell, not a choreography. Reserve scroll-triggered motion for moments that earn it. Product: 150–250 ms on most transitions. Motion conv...
Additional context needed: performance constraints.
Add motion that conveys state, gives feedback, and clarifies hierarchy. Cut motion that exists only for decoration. Animation fatigue is a real cost; spend the budget on the moments that need it.
Brand: motion is part of the voice; one well-rehearsed entrance beats scattered micro-interactions. The saturated AI default is fade-and-rise reveals on every scrolled section; that's a tell, not a choreography. Reserve scroll-triggered motion for moments that earn it.
Product: 150–250 ms on most transitions. Motion conveys state: feedback, reveal, loading, transitions between views. No page-load choreography; users are in a task and won't wait for it.
Analyze where motion would improve the experience:
Identify static areas:
Understand the context:
If any of these are unclear from the codebase, STOP and call the AskUserQuestion tool to clarify.
CRITICAL: Respect prefers-reduced-motion. Always provide non-animated alternatives for users who need them.
Create a purposeful animation plan:
IMPORTANT: One well-orchestrated experience beats scattered animations everywhere. Focus on high-impact moments.
Add motion systematically across these categories:
Hero section: Dramatic entrance for primary content (scale, parallax, or creative effects)
Modal/drawer entry: Smooth slide + fade, backdrop fade, focus management
List rhythm: Sibling stagger is legitimate for cards-in-a-grid or list-items-appearing. Whole-section fade-on-scroll is not a list and is not legitimate. Cap total stagger time: 10 items at 50ms each = 500ms total. For more items, reduce per-item delay or cap the staggered count.
Use CSS custom properties for clean stagger: animation-delay: calc(var(--i, 0) * 50ms) with style="--i: 0", style="--i: 1", etc. on each item.
Use appropriate techniques for each animation:
Duration: the 100/300/500 rule. Timing matters more than easing for "feels right":
| Duration | Use Case | Examples |
|---|---|---|
| 100–150ms | Instant feedback | Button press, toggle, color change |
| 200–300ms | State changes | Menu open, tooltip, hover state |
| 300–500ms | Layout changes | Accordion, modal, drawer |
| 500–800ms | Entrance animations | Page load, hero reveal |
Easing curves (use these, not CSS defaults):
/* Recommended: natural deceleration */
--ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); /* Smooth */
--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.
/* Prefer for simple, declarative animations */
- transitions for state changes
- @keyframes for complex sequences
- transform and opacity for reliable movement
- blur, filters, masks, clip paths, shadows, and color shifts for premium atmospheric effects when verified smooth
/* Use for complex, interactive animations */
- Web Animations API for programmatic control
- Framer Motion for React
- GSAP for complex sequences
Transform and opacity are reliable defaults, not the whole palette. Premium interfaces often need atmospheric properties. Match material to effect:
height directlyThe hard rule isn't "transform and opacity only." It's: avoid animating layout-driving properties casually (width, height, top, left, margins), keep expensive effects bounded to small or isolated areas, and verify smoothness in-browser on target viewports.
width, height, top, left, margins):hover or an .animating class), never preemptively across the whole pagecontain where appropriateNobody cares how fast your site is, only how fast it feels. The 80ms threshold: anything under ~80ms feels instant because our brains buffer sensory input for that long to synchronize perception. Target this for micro-interactions.
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
NEVER:
width, height, top, left, margins) when transform, FLIP, or grid-based techniques would workprefers-reduced-motion (this is an accessibility violation)Test animations thoroughly:
When the motion clarifies state instead of decorating it, hand off to /impeccable polish for the final pass.
npx claudepluginhub daisycatts/dotclaude --plugin frontend/animateAdds purposeful animations or removes excessive ones in the specified file or component, adhering to the project's motion stack and MOTION_INTENSITY setting.
/animateCreate motion graphics videos using Open Animate toolkit from a user brief. Generates AI images/videos/audio assets, previews in Remotion Studio, and renders output.
/animateGenerates production-ready TypeScript/React animation code from natural language descriptions using Framer Motion (default), GSAP, CSS, or react-spring.