Creates, reviews, and debugs UI motion and animation implementations. Covers springs, gestures, drag interactions, clip-path reveals, easing, timing, and animation review. Use when designing, implementing, or reviewing motion, CSS transitions, keyframes, framer-motion, spring animations, asking "add animations to", "make this feel smooth", "review my animations", "should this animate", or "add a swipe gesture".
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Creates, reviews, and debugs UI motion and animation implementations. Covers springs, gestures, drag interactions, clip-path reveals, easing, timing, and animation review. Use when designing, implementing, or reviewing motion, CSS transitions, keyframes, framer-motion, spring animations, asking "add animations to", "make this feel smooth", "review my animations", "should this animate", or "add a swipe gesture".
Avoid ease-in for UI. Prefer custom curves from easing.dev.
Spatial and sequencing
Set transform-origin at the trigger point for popovers; keep center for modals.
For dialogs/menus, start around scale(0.85–0.9). Never scale(0).
Stagger reveals at 30–50ms per item; total stagger under 300ms.
Accessibility
Gate hover animations behind @media (hover: hover) and (pointer: fine) to avoid false positives on touch.
During direct manipulation, keep the element locked to the pointer. Add easing only after release.
Performance
Only animate transform and opacity — these skip layout and paint.
Pause looping animations off-screen with IntersectionObserver.
Toggle will-change only during heavy motion and only for transform/opacity — remove after.
Do not animate drag gestures using CSS variables (triggers recalc on all children).
Motion x/y values are the normal choice for axis-based movement and drag. Use full transform strings when you need one transform owner for combined transforms or interop.