animation-systems
SKILL.md
Animation Systems (Stripe × Linear × Apple × Vercel)
This skill helps you ship tasteful, product-grade motion. Not “more animation.” Better animation: clarity, hierarchy, feedback, and delight—without jank.
The goals (why motion exists)
Use animation to:
- Explain hierarchy (what matters)
- Confirm action (feedback)
- Guide attention (where to look next)
- Maintain continuity (spatial relationships)
- Add polish (craft signals)
If an animation doesn’t serve one of these, delete it.
The Stripe/Linear/Apple/Vercel style (shared traits)
1) Restraint
- Fewer animations, better chosen.
- One strong hero moment; the rest is supporting motion.
2) Clear choreography
- Primary element moves first.
- Secondary elements follow with small stagger.
- Motion establishes a “reading order.”
3) Physical but not cartoony
- Use easing that feels human (soft acceleration + gentle settle).
- Avoid bouncy defaults for serious product UI.
4) Texture + depth (subtle)
- Small parallax, soft shadows, blur fades, light beams.
- Avoid heavy 3D unless it’s the hero.
Motion primitives (build these first)
Think in primitives you can reuse everywhere.
A) Fade + rise (default entrance)
Use for: text blocks, cards, modals.
- Opacity: 0 → 1
- Y: 12–24px → 0
- Duration: 300–700ms depending on size
B) Scale + fade (micro emphasis)
Use for: popovers, toasts, selected states.
- Scale: 0.98 → 1
- Opacity: 0 → 1
C) Slide (navigation)
Use for: drawers, step transitions.
- Use transform translate; avoid animating layout.
D) Morph / shared element (high craft)
Use for: tab indicators, expanding cards.
- Requires consistent geometry + measured layout.
Defaults (practical numbers)
Use these as a starting system.
Durations (rule of thumb)
- Micro (hover/press): 120–200ms
- UI state change (toggle, select): 180–260ms
- Small transitions (popover, toast): 220–320ms
- Page section entrance: 400–800ms
- Hero sequences: 800–1600ms (with internal beats)
Easing (safe set)
Pick a small set and reuse.
- UI: ease-out with gentle settle
- Emphasis: slightly stronger ease
- Entering: ease-out
- Exiting: ease-in (faster)
If implementing:
- Use your animation library’s “power2.out / expo.out” equivalents.
- Avoid elastic/bounce unless brand is playful.
Stagger
- 40–90ms per element (text lines/cards)
- Use smaller stagger on mobile
Choreography patterns
1) “Hero → supporting elements”
- Hero visual animates in first.
- Headline appears next.
- CTA appears last.
2) “Section reveal on scroll”
- Trigger when section is ~20–30% visible.
- Animate once (don’t replay on tiny scroll).
3) “Hover: lift + glow”
- Y: -2 to -6px
- Shadow: subtle increase
- Optional: border/gradient glow
4) “Focus ring + micro shift”
- For form fields: focus ring + tiny scale/translate for responsiveness.
Performance rules (non‑negotiable)
Animate the right properties
Prefer:
transform(translate/scale/rotate)opacity
Avoid (unless necessary):
- width/height/top/left
- expensive filters on large areas
Respect the GPU
- Clamp device pixel ratio in heavy canvases (1–2)
- Keep blur subtle and small
- Avoid many simultaneous animated shadows
Reduce reflows
- Don’t measure layout every frame.
- For scroll effects, use a library that batches reads/writes.
Accessibility: Reduced Motion
Always support prefers-reduced-motion.
Policy:
- Keep content visible.
- Replace motion with instant state + subtle opacity.
- Disable scroll-scrub/pin.
Ask the user:
- “Do you want a reduced-motion mode that disables all non-essential motion?”
Implementation guidance (library-agnostic)
For simple sites
- CSS transitions for small hovers/toggles.
- Use a single motion library (GSAP or Framer Motion) for complex sequences.
For product sites
- Create a motion token set:
- durations
- easing curves
- standard offsets (8/16/24px)
- stagger defaults
For hero moments
- Use timelines (or keyframes) with labeled beats.
- Lock camera/scene movement first, then layer text.
What to ask the user
- What’s the brand lane: Stripe (polished), Linear (minimal), Apple (cinematic), Vercel (developer/product)?
- What are the key moments? (hero, scroll story, hover cards, nav transitions)
- Any performance constraints? (mobile, low-end devices)
- Reduced motion requirements?
Output format (when asked to “add Stripe/Linear-style animation”)
Return:
- Motion goals (what we’re trying to communicate)
- Motion tokens (durations + easing + offsets)
- A choreography plan (timeline beats)
- Implementation notes (perf + reduced motion)
- A small code recipe (CSS or GSAP/Framer depending on stack)
Weekly Installs
6
Repository
mengto/skillsGitHub Stars
10
First Seen
Feb 15, 2026
Security Audits
Installed on
opencode6
gemini-cli6
codex6
kimi-cli6
antigravity5
github-copilot5