motion-design-principles
Skill4 starsChanged 3 months agoApache-2.0View on GitHub
Use motion purposefully in interfaces. Covers easing curves, duration guidelines, the 12 UI motion principles, choreography, and accessibility considerations for animation. Use when adding animations, transitions, or micro-interactions to an interface. Triggers on: "animation", "motion design", "transition", "easing curve", "micro-interaction", "UI animation", "Framer Motion", "page transition".
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 4 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Every animation serves a function.
- Distinctive: line 63
When multiple elements animate, stagger their start times.
- Distinctive: line 100
Use spring physics (not duration-based easing) for draggable/interactive elements.
- Distinctive: line 109
When content changes, morph between states rather than replacing.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Motion Design Principles
Motion in UI is not decoration — it's communication. Good animation clarifies relationships, directs attention, and provides feedback.
"Animation is not about making things bounce. It's about making things understandable." — Pasquale D'Silva
The 12 Principles of UI Motion
1. Purposeful
Every animation serves a function. If removing it changes nothing meaningful, remove it.
| Purpose | Example |
| Orientation | Where did this element come from? |
| Feedback | The system received my input |
| Relationship | These elements are connected |
| Progress | Something is happening, wait |
| Delight | The interface feels alive (use sparingly) |
2. Duration: Size Determines Speed
Smaller elements = shorter duration. Larger area transitions = longer duration.
| Element Size | Duration |
| Micro (button press, toggle) | 100-200ms |
| Small (tooltip, dropdown) | 200-300ms |
| Medium (modal, panel) | 300-400ms |
| Large (page transition) | 400-600ms |
Default: 200-300ms for most transitions.
3. Easing: Nothing Moves Linearly
Linear easing feels robotic. Everything in the real world accelerates and decelerates.
| Easing | Use For | CSS Value |
| Ease-out | Elements entering | cubic-bezier(0, 0, 0.2, 1) |
| Ease-in | Elements exiting | cubic-bezier(0.4, 0, 1, 1) |
| Ease-in-out | Elements moving within the view | cubic-bezier(0.4, 0, 0.2, 1) |
| Spring | Interactive/draggable elements | Physics-based |
Rule: Entering elements decelerate (ease-out). Exiting elements accelerate (ease-in).
4. Spatial Continuity
Elements should originate from and return to logical locations.
- FAB expands from its button location, not from screen center
- Modal slides in from the trigger element's direction
- Back button returns to the previous screen's position
5. Stagger
When multiple elements animate, stagger their start times.
| List Size | Stagger Delay |
| <5 items | 50ms |
| 5-10 items | 30ms |
| >10 items | 20ms |
6. Feedback Under 100ms
Input feedback must feel instant. Any delay over 100ms feels laggy.
- Button press: scale to 0.97, release on lift (100ms)
- Touch ripple: start immediately on touch
7. Enter, Exit, and Everything Between
Define animations for all states:
| State | Animation |
| Enter | Scale up + fade in + ease-out |
| Exit | Scale down + fade out + ease-in |
| Update | Cross-fade or morph |
| Loading | Skeleton pulse or shimmer |
8. Reduced Motion
Always respect prefers-reduced-motion.
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}9. Spring Physics for Interaction
Use spring physics (not duration-based easing) for draggable/interactive elements. Springs feel responsive — they react to velocity.
10. Scroll Animations Must Earn Their Place
Parallax and scroll-triggered animations often hurt more than help. Use only when:
- They reveal content progressively
- They help users understand spatial relationships
- They don't interfere with reading
11. Content Morphing
When content changes, morph between states rather than replacing. Examples:
- Number counters that animate up/down
- Shape morphing between icons
- Layout transitions that reposition elements fluidly
12. Only Animate Performant Properties
To maintain 60fps, only animate these properties:
| Animate These | Avoid These |
transform (translate, scale, rotate) | width, height |
opacity | top, left, right, bottom |
filter (sparingly) | margin, padding |
box-shadow |
Choreography Patterns
Parent-Child
Parent element triggers, children follow with stagger.
Sibling
Related elements animate in sequence.
Independent
Unrelated elements animate independently (no forced synchronization).
Reference Map
references/timing-easing-tables.md— duration by size, easing roles, stagger, purpose gatereferences/reduced-motion-a11y.md—prefers-reduced-motion, WCAG 2.3, safe replacements
Related Skills
- For microinteraction details → use
interaction-design-patterns - For calm technology motion → use
calm-technology-ui - For Framer Motion patterns → use
ai-native-ui-design
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- SkillMedev/motion-video-direction★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository80 other files it gives its agents.
- a11y-accessibility-designSkill
- agentic-ui-patternsSkill
- ai-native-ui-designSkill
- ai-ui-anti-patternsSkill
- ai-ui-heuristicsSkill
- calm-technology-uiSkill
- conversion-growth-designSkill
- cross-platform-designSkill
- dark-mode-designSkill
- data-visualizationSkill
- design-systemsSkill
- design-thinking-processSkill
- error-empty-statesSkill
- ethical-design-patternsSkill
- form-uxSkill
- information-architectureSkill
- interaction-design-patternsSkill
- internationalization-uiSkill
- mobile-touch-designSkill
- modal-classes-lifecycleSkill
- modal-container-imagesSkill
- modal-dicts-queuesSkill
- modal-endpointsSkill
- modal-fundamentalsSkill
- modal-gpu-computeSkill
- modal-networkingSkill
- modal-observabilitySkill
- modal-parallel-executionSkill
- modal-sandboxesSkill
- modal-scaling-performanceSkill
- modal-schedulingSkill
- modal-secretsSkill
- modal-serversSkill
- modal-storageSkill
- modal-web-servingSkill
- modal-workspace-adminSkill
- notifications-permissionsSkill
- onboarding-uxSkill
- rust-api-designSkill
- rust-async-programmingSkill
- rust-cargo-masterySkill
- rust-cli-applicationsSkill
- rust-clippy-lintsSkill
- rust-closures-iteratorsSkill
- rust-compiler-internalsSkill
- rust-concurrencySkill
- rust-design-patternsSkill
- rust-editionsSkill
- rust-embeddedSkill
- rust-error-handlingSkill
- rust-game-developmentSkill
- rust-lifetimes-borrowingSkill
- rust-macrosSkill
- rust-performanceSkill
- rust-rustdocSkill
- rust-rustup-toolchainSkill
- rust-smart-pointersSkill
- rust-testing-benchmarkingSkill
- rust-type-systemSkill
- rust-unsafe-ffiSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

