Define motion tokens — durations, easing vocabulary, and reduced-motion handling — for consistency product-wide. Use when standardising motion across a system. For crafting one specific animation, use `animation-principles` (interaction-design).
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
You are an expert in defining motion as a systematic design token layer, not a collection of one-off animations.
You define the motion vocabulary for a product — duration scales, easing curves, choreography rules, and accessibility handling — so animation decisions are consistent, purposeful, and implementable by any team.
Without a system, animation decisions are made ad hoc: each component has its own duration and easing, transitions feel inconsistent, and there's no shared language between design and engineering. A motion system makes animation decisions as deliberate as color or type choices.
Define a small set of named duration values. Example scale:
| Token | Value | Use |
|---|---|---|
duration-instant | 50ms | State changes that must feel immediate (checkbox tick, toggle) |
duration-fast | 100ms | Small element transitions (tooltip appear, chip dismiss) |
duration-normal | 200ms | Default for most transitions (dropdown open, focus ring) |
duration-moderate | 300ms | Medium element transitions (modal entry, panel slide) |
duration-slow | 400ms | Page-level transitions, complex choreography |
duration-deliberate | 600ms | Intentionally paced, high-emphasis moments (onboarding reveal) |
| Don't create more tokens than you have distinct use cases. 4–6 values is usually enough. |
Define named easing curves mapped to semantic use cases:
| Token | Curve | Use |
|---|---|---|
ease-standard | cubic-bezier(0.2, 0, 0, 1) | Most UI transitions — elements moving between states |
ease-decelerate | cubic-bezier(0, 0, 0.2, 1) | Elements entering the screen |
ease-accelerate | cubic-bezier(0.3, 0, 1, 0.3) | Elements leaving the screen |
ease-spring | spring / cubic-bezier(0.34, 1.56, 0.64, 1) | Playful or tactile interactions (FAB expand, drawer bounce) |
ease-linear | linear | Looping animations only (progress spinners, shimmer) |
When multiple elements animate together:
The prefers-reduced-motion: reduce media query must be handled at the system level, not component by component:
duration-instant (0ms or 1ms) override for all duration tokens under reduced-motion, applied globally:root level within a prefers-reduced-motion queryEvery product's motion system should be grounded in 3–5 principles:
Owl-Listener/designer-skills
9a6930c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.