UI Animation Direction
Use this skill when the job is not just "make it animate" but "make the motion
feel intentional, clear, and worth keeping."
This skill is library-agnostic. It applies whether the implementation uses:
- native CSS transitions or keyframes,
- Web Animations API,
- an established app/library abstraction,
- Motion, GSAP, or another animation library,
- platform-native animation primitives in a product-specific stack.
Core Rule
Animation should clarify state, hierarchy, continuity, feedback, or mood.
If the motion mainly proves that animation was added, the bar is too low.
What Good Looks Like
High-bar UI animation tends to be:
- specific about what changed and why,
- consistent across related states,
- quieter than the first draft,
- accessible under reduced-motion settings,
- fast enough to feel responsive,
- memorable because of fit and intent, not because it is loud.
Workflow
1. Identify the job of the motion
Before coding, name the purpose:
- state change,
- interaction feedback,
- navigation continuity,
- hierarchy and staging,
- scroll-linked context,
- atmosphere and tone.
If you cannot name the job, do not add animation yet.
2. Choose the right implementation surface
Prefer the smallest surface that fits the job:
- simple hover, focus, press, opacity, transform, or reveal:
native CSS is usually enough
- imperative sequencing or timeline choreography:
Web Animations API or the project's existing abstraction
- React layout transitions, gestures, shared-element motion, or exit presence:
use the project's chosen animation library
- if a repo already uses Motion, GSAP, or another animation layer:
prefer the established stack over introducing a new one
For selection guidance, load references/implementation-patterns.md.
3. Implement the smallest correct motion first
Start with:
- one transition,
- one easing family,
- one clear before/after state,
- no decorative extras.
Prove that the motion helps the interaction before layering on orchestration,
stagger, blur, parallax, or springiness.
4. Review the result as a motion system
Once it works, review:
- rhythm,
- hierarchy,
- state clarity,
- restraint,
- accessibility,
- repeated-use feel.
Load references/review-rubric.md for the review pass.
5. Raise the bar by cutting before adding
The most reliable way to improve animation quality is often:
- reduce travel distance,
- normalize timing,
- remove one unnecessary effect,
- preserve the one motion that communicates the interaction.
Load references/opinionated-guide.md for the preferred subset and default
biases.
Default Biases
- Prefer transform and opacity over layout-thrashing properties.
- Prefer layout-aware transitions over blanket fade-ins.
- Prefer one motion family per surface over many unrelated timings.
- Prefer restrained hover/press motion over novelty.
- Prefer continuity over spectacle for navigation and layout changes.
- Prefer official library docs when exact API behavior matters.
Avoid By Default
- animating everything on first load
- generic fade-and-scale on every card, section, and modal
- long, floaty durations that make the UI feel slow
- springs with bounce that do not match the product tone
- parallax or scroll effects added as decoration with no structural purpose
- CSS transitions and JS animation systems fighting each other
Reduced Motion Is Not Optional
Any animation work must preserve a coherent reduced-motion path.
That does not mean removing all feedback. It means keeping clarity while
reducing travel, scale, parallax, and other motion-heavy effects.
When To Load References
Load references/opinionated-guide.md when:
- you want the preferred subset and defaults
- the work is routine product UI animation, not exploration
- you want to know what to reach for first and what to avoid
Load references/implementation-patterns.md when:
- deciding between CSS, WAAPI, and a library
- choosing how to implement hover, layout, navigation, or scroll motion
- a project already has an animation stack and you need to fit into it
Load references/review-rubric.md when:
- the animation is implemented and needs a quality pass
- the result feels technically correct but aesthetically weak
- you need a final gate before considering the work done
Load references/reference-links.md when:
- you need canonical docs or API references
- you need up-to-date CSS, Motion, accessibility, or examples material
- you want the plain documentation alongside this opinionated guide
Relationship To Library Skills
This skill is not a library reference.
Use it alongside library-specific skills when needed:
- if the repo uses Motion, pair this with the
motion skill
- if the stack uses another library, consult that library's official docs
- keep this skill as the bar-raising and decision layer
Output Expectation
When this skill is triggered, the final animation work should usually show:
- a clear reason for the motion,
- an implementation that fits the existing stack,
- restraint in timing and effect choice,
- reduced-motion handling,
- a brief quality pass against the review rubric.
1---2name: ui-animation-direction3description: High-bar guidance for creating UI animation across CSS, native platform primitives, and animation libraries. Use when the task involves transitions, micro-interactions, page motion, scroll effects, motion polish, or raising the animation quality bar so the result does not feel sloppy or generic.4license: MIT5---67# UI Animation Direction89Use this skill when the job is not just "make it animate" but "make the motion10feel intentional, clear, and worth keeping."1112This skill is library-agnostic. It applies whether the implementation uses:1314- native CSS transitions or keyframes,15- Web Animations API,16- an established app/library abstraction,17- Motion, GSAP, or another animation library,18- platform-native animation primitives in a product-specific stack.1920## Core Rule2122Animation should clarify state, hierarchy, continuity, feedback, or mood.2324If the motion mainly proves that animation was added, the bar is too low.2526## What Good Looks Like2728High-bar UI animation tends to be:2930- specific about what changed and why,31- consistent across related states,32- quieter than the first draft,33- accessible under reduced-motion settings,34- fast enough to feel responsive,35- memorable because of fit and intent, not because it is loud.3637## Workflow3839### 1. Identify the job of the motion4041Before coding, name the purpose:4243- state change,44- interaction feedback,45- navigation continuity,46- hierarchy and staging,47- scroll-linked context,48- atmosphere and tone.4950If you cannot name the job, do not add animation yet.5152### 2. Choose the right implementation surface5354Prefer the smallest surface that fits the job:5556- simple hover, focus, press, opacity, transform, or reveal:57 native CSS is usually enough58- imperative sequencing or timeline choreography:59 Web Animations API or the project's existing abstraction60- React layout transitions, gestures, shared-element motion, or exit presence:61 use the project's chosen animation library62- if a repo already uses Motion, GSAP, or another animation layer:63 prefer the established stack over introducing a new one6465For selection guidance, load `references/implementation-patterns.md`.6667### 3. Implement the smallest correct motion first6869Start with:7071- one transition,72- one easing family,73- one clear before/after state,74- no decorative extras.7576Prove that the motion helps the interaction before layering on orchestration,77stagger, blur, parallax, or springiness.7879### 4. Review the result as a motion system8081Once it works, review:8283- rhythm,84- hierarchy,85- state clarity,86- restraint,87- accessibility,88- repeated-use feel.8990Load `references/review-rubric.md` for the review pass.9192### 5. Raise the bar by cutting before adding9394The most reliable way to improve animation quality is often:95961. reduce travel distance,972. normalize timing,983. remove one unnecessary effect,994. preserve the one motion that communicates the interaction.100101Load `references/opinionated-guide.md` for the preferred subset and default102biases.103104## Default Biases105106- Prefer transform and opacity over layout-thrashing properties.107- Prefer layout-aware transitions over blanket fade-ins.108- Prefer one motion family per surface over many unrelated timings.109- Prefer restrained hover/press motion over novelty.110- Prefer continuity over spectacle for navigation and layout changes.111- Prefer official library docs when exact API behavior matters.112113## Avoid By Default114115- animating everything on first load116- generic fade-and-scale on every card, section, and modal117- long, floaty durations that make the UI feel slow118- springs with bounce that do not match the product tone119- parallax or scroll effects added as decoration with no structural purpose120- CSS transitions and JS animation systems fighting each other121122## Reduced Motion Is Not Optional123124Any animation work must preserve a coherent reduced-motion path.125126That does not mean removing all feedback. It means keeping clarity while127reducing travel, scale, parallax, and other motion-heavy effects.128129## When To Load References130131### Load `references/opinionated-guide.md` when:132133- you want the preferred subset and defaults134- the work is routine product UI animation, not exploration135- you want to know what to reach for first and what to avoid136137### Load `references/implementation-patterns.md` when:138139- deciding between CSS, WAAPI, and a library140- choosing how to implement hover, layout, navigation, or scroll motion141- a project already has an animation stack and you need to fit into it142143### Load `references/review-rubric.md` when:144145- the animation is implemented and needs a quality pass146- the result feels technically correct but aesthetically weak147- you need a final gate before considering the work done148149### Load `references/reference-links.md` when:150151- you need canonical docs or API references152- you need up-to-date CSS, Motion, accessibility, or examples material153- you want the plain documentation alongside this opinionated guide154155## Relationship To Library Skills156157This skill is not a library reference.158159Use it alongside library-specific skills when needed:160161- if the repo uses Motion, pair this with the `motion` skill162- if the stack uses another library, consult that library's official docs163- keep this skill as the bar-raising and decision layer164165## Output Expectation166167When this skill is triggered, the final animation work should usually show:168169- a clear reason for the motion,170- an implementation that fits the existing stack,171- restraint in timing and effect choice,172- reduced-motion handling,173- a brief quality pass against the review rubric.174