# Find animation opportunities AI skill
**An agent skill by Emil Kowalski that sweeps a UI for places where motion would actually help, and rejects almost all of them.** Read-only: it proposes recipes with exact values and hands implementation to another agent.
Its opening principle is the reason it's worth reading even if you never install it: *sometimes the best animation is no animation.* Most skills in this space generate work. This one is built to say no.
## The four-question gate
Every candidate has to survive all four, in order.
**1. Frequency.** How often will someone see this?
| Tier | Example | Allowed |
|---|---|---|
| 100+/day | keyboard shortcuts, command palette | nothing — disqualified outright |
| Tens/day | hovers, toggles | near-imperceptible motion only |
| Occasional | modals, toasts | standard animation |
| Rare / first-time | onboarding, success states | delight budget unlocked |
**2. Purpose.** It has to name one: feedback, spatial consistency, state indication, preventing a jarring change, explanation (onboarding only), or delight (rare moments only). "It looks nice" is not on the list.
**3. Speed.** Against fixed budgets: press feedback 100–160ms, tooltips and popovers 125–200ms, dropdowns 150–250ms, modals and drawers 200–500ms.
**4. Function.** Motion on data-dense functional UI hurts readability. Decoration fails here.
## Where it hunts
Pressable elements with no `:active` state or transition. Content that appears or vanishes instantly — conditionals, route changes, accordions. Panels and popovers visually disconnected from what triggered them. Draggables that snap without physics. Rare high-emotion moments rendered flat.
## Output
Three parts: a table of opportunities (location, current state, purpose, frequency tier, exact values pulled from the repo's own tokens rather than approximated), then 2–5 **rejected** candidates naming which gate killed each one, then a one-paragraph verdict.
The rejection list is the part I'd steal. Making an agent justify what it *didn't* propose is a cheap way to see whether its filter is real.
## Why it's a good skill design
The frequency-tier table converts taste into a decision rule the agent can actually apply. That's the hard part of writing any skill: not encoding what you know, but encoding it in a form that survives being executed by something without judgment. Most skills fail here and end up as vibes in a markdown file.
It also stops when the hunt is done, even if nothing survives. A skill allowed to return an empty result is a skill you can trust.
## Related
- [[AI Agent Skills]]
- [[Claude Code Skills]]
- [[User Experience (UX)]]
- [[AI Agents]]
## References
- Skill source: https://github.com/emilkowalski/skills/blob/main/skills/find-animation-opportunities/SKILL.md
- Skill collection: https://github.com/emilkowalski/skills