design-motion-principles
Skill1 starsChanged 30 days agoMITView on GitHub
Adds purposeful motion to every UI step, following the motion inventory in DESIGN.md. Use when building or changing any screen or component (press and hover feedback, overlays, lists, route changes, content loading, toasts, marketing reveals), or when the user asks whether some motion is right. Quiet in SaaS apps and dashboards, expressive on marketing pages, never static. Always ships prefers-reduced-motion handling.
15 other projects use a version of this.
Adopted by
Most recently taken up by
- podo/design-agent-skillstheir own version, first seen Nov 8, 2026
- webdevarif/claude-skillstheir own version, first seen Nov 1, 2026
- kabeier/SPAs-and-Claudetheir own version, first seen Nov 1, 2026
- Aradotso/design-skillstheir own version, first seen Oct 13, 2026
- reason-machines/design-skillstheir own version, first seen Oct 13, 2026
- rehrabbi/claude-skillstheir own version, first seen Oct 11, 2026
Used with
Projects with it also use design-taste-frontend.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
AnasX7Skilldesign-taste-frontend
Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check.
Also in 3 projects that use this
Other versions15 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 15
- kylezantos/design-motion-principles★ 1.2ksame name
- TanStack/tanstack.com★ 1.1ksame name
- TheGoat395/Codex-Skills★ 136same name
- aicanvas-me/aicanvas★ 69same name
- podo/design-agent-skills★ 32same name
- leadgenjay/claude-skills★ 22same name
- Aradotso/design-skills★ 4same name
- reason-machines/design-skills★ 4same name
- samad001z/Norn★ 3same name
- tamibot/creators-latam-starter★ 2same name
5 more not listed
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 repository20 other files it gives its agents.
- AGENTS.mdAGENTS.md
- api-and-interface-designSkill
- browser-testing-with-devtoolsSkill
- buildSkill
- code-review-and-qualitySkill
- code-simplificationSkill
- debugging-and-error-recoverySkill
- deploySkill
- exploreSkill
- flow-documentSkill
- front-end-designSkill
- frontend-ui-engineeringSkill
- incremental-implementationSkill
- observability-and-instrumentationSkill
- planSkill
- playwright-cliSkill
- publishSkill
- pushSkill
- security-and-hardeningSkill
- web-design-guidelinesSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 7 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 15 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Project rules first: If the project has .agents/rules/ (installed with the SaaS playbook), read .agents/rules/frontend.md and follow it: it …
- Very specific: line 16
Every UI step: check the screen against the motion inventory in DESIGN.md (press, hover, overlays, lists, route changes, content load, …
- Distinctive: line 33
If the design system or the user states a different brand personality (e.g.
- Distinctive: line 38
Named purpose: Every animation is feedback (my action registered), orientation (where it came from / went) or continuity (same thing, …
- Distinctive: line 39
Unnoticed: If users would say "nice animation!" on a routine interaction, it's too prominent (except deliberate delight on marketing or …
- Very specific: line 40
Reduced motion is mandatory: Every animation ships prefers-reduced-motion handling in the same change.
- Distinctive: line 45
Design-system motion tokens exist: use them. Don't invent values next to them.
- Distinctive: line 46
None exist: use the defaults below and ask: "The design system has no motion tokens.
- Very specific: line 76
Step 2: Load references: Always references/motion-cookbook.md, references/accessibility.md, references/creation-gotchas.md.
- Distinctive: line 85
Step 4: Self-check: before presenting:
- Very specific: line 86
Check the code against every item in references/creation-gotchas.md.
- Very specific: line 87
Run the relevant parts of references/audit-checklist.md and references/anti-checklist.md across the whole view you touched, not just the …
- Distinctive: line 92
When asked whether existing motion is right, answer in the conversation.
“Common” is measured: kept by at least 6 in 10 of the 15 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!-- Adapted from kylezantos/design-motion-principles@4a9ca87 (MIT, see licenses/). Changes: Create mode for every UI step against the DESIGN.md motion inventory (HTML audit report removed), quiet-in-the-app default with no static screens, occasional events at 150–250ms, design-system motion tokens, tool-agnostic, trimmed; layered: general guidance here, playbook decisions in .agents/rules/. -->Project rules first. If the project has .agents/rules/ (installed with the SaaS playbook), read .agents/rules/frontend.md and follow it: it overrides this skill where they differ. Without it, follow this skill as written.
Design Motion Principles
Build UI motion that has a purpose, feels fast, and gets out of the way.
When It Runs
- Every UI step: check the screen against the motion inventory in
DESIGN.md(press, hover, overlays, lists, route changes, content load, toasts, marketing reveals) and fill every moment it has. Quiet in the app, expressive on marketing pages, never static. - On request ("does this motion feel right?"): the Quick Inline Review below.
- Scope: web/app UI motion (CSS, JS animation libraries, motion tokens). The frequency gate also applies to Lottie, Rive or video; the recipes may not. Examples are CSS and Motion for React; translate to the project's stack.
- Tools, lightest first: CSS (transitions, scroll-driven animations, View Transitions); then a component animation library such as Motion (formerly Framer Motion) for exits, layout changes, gestures and springs; then a timeline library such as GSAP only for long choreography. Use what the project already has.
Lenses: Quiet in the App
Lenses in references/: Emil Kowalski (emil-kowalski.md, should this animate at all?), Jakub Krehel (jakub-krehel.md, subtle and polished enough?), Jhey Tompkins (jhey-tompkins.md, playful, expressive). They distill each designer's published work; the weighting is this skill's, not endorsed by them.
| Surface | Primary | Secondary | Selective |
| SaaS app / dashboard (default) | Emil | Jakub | Jhey (empty states, first-run only) |
| High-frequency tools (tables, command palette, editors, settings) | Emil | none | none |
| Onboarding / first-run / success moments | Jakub | Emil | Jhey (one deliberate delight moment) |
| Marketing / landing page | Jakub | Jhey | Emil (forms, nav, pricing toggles) |
| Mobile app shell | Jakub | Emil | Jhey (delighters) |
If the design system or the user states a different brand personality (e.g. playful), adjust the weighting and say so.
Core Principles
- Frequency gate (decide first). Rare (monthly: onboarding, first success) → expressive welcome. Occasional (daily: modal, toast, list change, route change) → subtle, 150–250ms. Frequent (hundreds of times a day: typing, table row hover, tabs in a busy tool) → instant. Keyboard-initiated (shortcuts, command palette) → never animate. Nothing else is left static.
- Named purpose. Every animation is feedback (my action registered), orientation (where it came from / went) or continuity (same thing, changed). The inventory's moments all have one; anything outside it needs one too.
- Unnoticed. If users would say "nice animation!" on a routine interaction, it's too prominent (except deliberate delight on marketing or onboarding).
- Reduced motion is mandatory. Every animation ships
prefers-reduced-motionhandling in the same change. Seereferences/accessibility.md. - Cheap properties only:
transform,opacity,filter,clip-path. Neverwidth,height,top,left,margin,padding.
Motion Values
- Design-system motion tokens exist: use them. Don't invent values next to them.
- None exist: use the defaults below and ask: "The design system has no motion tokens; I used the skill defaults. Want me to add them to it?" Add them (in the file's token layout) only if they agree.
- Existing code already animates: match its values unless they are what's being fixed.
Skill defaults (quiet, SaaS UI):
| Token (suggested name) | Value | Use |
duration-instant | 0ms | High-frequency and keyboard-initiated changes |
duration-fast | 120–150ms | Hover, press, icon swaps, tooltips |
duration-base | 180–200ms | Dropdowns, popovers, small enter/exit |
duration-slow | 250–300ms | Modals, drawers, panels (exits shorter than enters) |
ease-out | cubic-bezier(0.23, 1, 0.32, 1) | Elements entering / responding |
ease-in-out | cubic-bezier(0.77, 0, 0.175, 1) | Elements moving while visible |
ease-drawer | cubic-bezier(0.32, 0.72, 0, 1) | Sheets and drawers (iOS-like) |
spring-default | spring, bounce 0 | Interactive values (drag, layout) |
Marketing pages may use 300–500ms where the moment warrants it. Never bare ease / ease-in-out keywords: a token curve or a spring.
Create Workflow
Step 1: Light discovery (infer first, ask second). Infer from the request, the design system (motion tokens, brand personality), project instructions, package manifest and existing components (library, current values). State it:
Building: [e.g. "a notification toast"]
Surface: [e.g. "SaaS dashboard"] → Lens: Emil primary · Jakub secondary
Motion values: [design-system tokens | existing code values | skill defaults]Small, well-specified request: one line, then go to Step 3. Non-trivial component or ambiguous surface: confirm the weighting with the user first.
Step 2: Load references. Always references/motion-cookbook.md, references/accessibility.md, references/creation-gotchas.md; then the lens files for the weighting (Emil almost always for SaaS); references/performance.md for complex or numerous animations.
Step 3: Generate, in order:
- Frequency gate.
- A cookbook recipe matched to the lens. Enter = opacity + small translateY (+ blur only where it earns it). Exit subtler than enter. Popovers origin-aware. Token easing or a spring.
- Reduced motion in the same code.
- Cheap properties only.
- Timing from tokens, else defaults (Emil-weighted: under 300ms, ~180ms ideal).
Step 4: Self-check before presenting:
- Check the code against every item in
references/creation-gotchas.md; fix matches. - Run the relevant parts of
references/audit-checklist.mdandreferences/anti-checklist.mdacross the whole view you touched, not just the new component (three cards with the same hover-scale is the tell). - Tell the user briefly: which lens drove the decisions, where the timing values came from, and what you deliberately left un-animated.
Quick Inline Review
When asked whether existing motion is right, answer in the conversation. No report file.
- State the surface and lens weighting in one line.
- Walk
references/audit-checklist.mdandreferences/anti-checklist.mdagainst that code only. - Reply grouped as Must fix / Should fix / Optional, each with
file:lineand the fix (from the cookbook). Missing reduced-motion handling is always Must fix. - Offer to apply the fixes. Don't apply them unasked.
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.

