design-motion
Skill9 starsChanged 42 days agoMITView on GitHub
Build one new animation (micro-interaction, page transition, scroll, hover) with Motion, CSS, or GSAP. Use when adding one animation to a new surface. A pass across an existing app → enhance-motion.
6 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- garrytan/gstacktheir own version, first seen Nov 1, 2026
- ZachArticulateV/designer-pro-and-seotheir own version, first seen Oct 19, 2026
- JoseArron/skillstheir own version, first seen Oct 13, 2026
- kensaurus/skillsedited, first seen Oct 1, 2026
- AnimaEcho/dstacktheir own version, first seen Aug 6, 2026
- shreyas-makes/agent-skillstheir own version, first seen Jul 15, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- kensaurus/skills★ 961% same
Wrote their own version · 5
- garrytan/gstack★ 141ksame name
- ZachArticulateV/designer-pro-and-seo★ 10same name
- JoseArron/skills★ 2same name
- shreyas-makes/agent-skills★ 2same name
- AnimaEcho/dstack★ 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 repository165 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .cursor/rules/approved-plan-execution.mdcCursor rule
- .cursor/rules/skill-workflows.mdcCursor rule
- .cursor/rules/verification-before-completion.mdcCursor rule
- llms.txtllms.txt
- audit-accessibilitySkill
- audit-agent-speedSkill
- audit-analyticsSkill
- audit-auth-flowsSkill
- audit-backend-architectureSkill
- audit-bundle-sizeSkill
- audit-cicdSkill
- audit-codemod-safetySkill
- audit-code-qualitySkill
- audit-code-reviewSkill
- audit-db-schemaSkill
- audit-doctrineSkill
- audit-env-paritySkill
- audit-fe-apiSkill
- audit-gate-logicSkill
- audit-i18nSkill
- audit-infra-costSkill
- audit-langfuse-llmSkill
- audit-llm-securitySkill
- audit-monetization-iapSkill
- audit-payment-systemSkill
- audit-performanceSkill
- audit-realworldSkill
- audit-registry-listingSkill
- audit-resilienceSkill
- audit-responsiveSkill
- audit-securitySkill
- audit-skill-conflictsSkill
- audit-ui-statesSkill
- audit-uiux-design-systemSkill
- audit-ux-journeysSkill
- audit-uxSkill
- backend-db-performanceSkill
- backend-error-handlingSkill
- backend-observabilitySkill
- backend-patternsSkill
- backend-realtimeSkill
- burndown-fullSkill
- complete-everythingSkill
- data-pipelineSkill
- data-visualizationSkill
- debug-errorSkill
- debug-fe-be-integrationSkill
- debug-sentry-monitorSkill
- deploy-npmSkill
- deploy-verifySkill
- design-apiSkill
- design-canvasSkill
- design-emailSkill
- design-frontendSkill
- design-generative-artSkill
- design-mobile-firstSkill
- design-prdSkill
- design-systemSkill
- design-themeSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 3 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Create purposeful, performant animations that enhance UX without overwhelming users.
- Distinctive: line 64
Every animation should serve a purpose:
- Distinctive: line 68
Delight: - Add personality (use sparingly)
- Very specific: line 71
Use transform and opacity only (GPU-accelerated)
- Very specific: line 72
Avoid animating width, height, top, left (trigger layout)
- Very specific: line 73
Use will-change sparingly and remove after animation
“Common” is measured: kept by at least 6 in 10 of the 5 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
Motion Design Skill
Degree of freedom: MIXED. Purpose and timing [HIGH freedom]; existing
motion inventory and reduced-motion [LOW freedom — run exactly].
Create purposeful, performant animations that enhance UX without overwhelming users.
How to reason
- Inventory — existing motion library and
prefers-reduced-motion - Purpose — feedback, orientation, focus, or (rare) delight
- Implement —
transform/opacityonly; match the app's timing - Motion-safe — reduced-motion becomes an instant state change
Worked example
Inventory: Framer Motion already on the modal; no reduced-motion branch. Purpose: orientation — show the dialog arriving, not decoration. Implement: opacity + scale 0.95→1, 200ms ease-out; no
heightanimation. Motion-safe:prefers-reduced-motionskips enter/exit; focus still moves.
Self-critique before reporting
- Purpose named — not motion for its own sake
- GPU-only — no width/height/top/left animation
- Reduced-motion proven — a reduce setting was actually tested
- Right owner — app-wide coherent motion pass →
enhance-motion
Check existing first [LOW freedom — run exactly]
Before adding ANY animation, verify:
- Check for existing animation utilities:
cat package.json | grep -i "framer-motion\|gsap\|animat"
rg "motion\.|animate\(|useSpring" --type tsx -l | head -10- Check for existing CSS animations:
rg "@keyframes|animation:" --type css
cat tailwind.config.* | grep -A20 "animation\|keyframes"- Check for animation preferences:
rg "prefers-reduced-motion" --type tsx --type cssWhy: Maintain consistent animation language. Respect user motion preferences.
Animation Principles [HIGH freedom]
1. Purpose-Driven Motion
Every animation should serve a purpose:
- Feedback - Confirm user actions (button press, form submit)
- Orientation - Show where elements come from/go to
- Focus - Direct attention to important elements
- Delight - Add personality (use sparingly)
2. Performance Rules
- Use
transformandopacityonly (GPU-accelerated) - Avoid animating
width,height,top,left(trigger layout) - Use
will-changesparingly and remove after animation - Target 60fps - keep animations under 100ms for interactions
3. Springs, not bezier soup (2026)
- One spring vocabulary per app: spatial springs (position, size, radius) may
overshoot; effects springs (color, opacity) never do. Three speeds: fast for
small controls, default for sheets and panels, slow for full-screen changes
(Material 3 motion-physics system; Motion
type: "spring"on the web). - React Native / Expo: this is Reanimated territory (
withSpringon the UI thread, Reanimated 4 CSS-style transitions). The native recipe lives inenhance-mobile-native-feel→references/stack-recipes.md; this skill stays web.
Framer Motion Patterns (React)
Basic Animations
import { motion } from 'framer-motion'
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.3, ease: "easeOut" }}
>
Content
</motion.div>Exit: exit={{ opacity: 0, scale: 0.95 }} at 0.2s. Both: references/motion-patterns.md §Basic Animations.
Hover & Tap Interactions
<motion.button
whileHover={{ scale: 1.02, boxShadow: "0 4px 20px rgba(0,0,0,0.1)" }}
whileTap={{ scale: 0.98 }}
transition={{ type: "spring", stiffness: 400, damping: 17 }}
>
Click me
</motion.button>Staggered Lists
Parent variants with transition: { staggerChildren: 0.05 }; each motion.li uses item variants hidden → show (opacity + x). Code: references/motion-patterns.md §Staggered Lists.
Scroll-Triggered Animations
useScroll() → scrollYProgress; useTransform maps it to y and opacity on a motion.div style. Code: references/motion-patterns.md §Scroll-Triggered Animations.
Page Transitions (Next.js)
app/template.tsx ('use client') wraps children in a motion.div with y: 10 → 0 → -10 and 0.3s opacity. Code: references/motion-patterns.md §Page Transitions.
Layout Animations
// Shared layout animations
<motion.div layout layoutId="card">
{isExpanded ? <ExpandedCard /> : <CollapsedCard />}
</motion.div>
// Smooth height changes
<motion.div
layout
transition={{ layout: { duration: 0.3 } }}
>
{showMore && <AdditionalContent />}
</motion.div>CSS-Only Animations
Tailwind Animations
<div className="animate-in fade-in duration-300">
<div className="animate-in slide-in-from-bottom-4 duration-500">
<div className="animate-in fade-in slide-in-from-bottom-4 duration-500 delay-150">Custom animation / keyframes (float, pulse-slow, shimmer) in tailwind.config.ts: references/css-and-gsap.md §Tailwind Animations.
Loading Skeleton
<div className="animate-pulse space-y-4">
<div className="h-4 bg-muted rounded w-3/4" />
<div className="h-4 bg-muted rounded w-1/2" />
</div>
// Shimmer effect
<div className="relative overflow-hidden bg-muted rounded">
<div className="absolute inset-0 -translate-x-full animate-shimmer bg-gradient-to-r from-transparent via-white/20 to-transparent" />
</div>GSAP for Complex Animations
gsap.registerPlugin(ScrollTrigger); inside useGSAP(…, { scope: containerRef }) build a gsap.timeline({ scrollTrigger: { trigger, start, end, scrub: 1 } }) and chain .from() steps with negative offsets ("-=0.5").
Code: references/css-and-gsap.md §GSAP for Complex Animations.
Micro-interaction reference
Options, not a checklist. This skill adds one animation, so pick the single item the purpose needs; unrequested hover, zoom, or reveal effects are scope creep.
Catalogue by surface (buttons, forms, navigation, cards, modals): references/motion-patterns.md §Micro-interaction catalogue.
Accessibility [LOW freedom — run exactly]
// Always respect reduced motion preference
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches
// Framer Motion
<motion.div
initial={prefersReducedMotion ? false : { opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: prefersReducedMotion ? 0 : 0.3 }}
>
// CSS
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
// Tailwind
<div className="motion-safe:animate-bounce motion-reduce:animate-none">Delight & gamification patterns
For playful interactions (bouncy buttons, magnetic elements, confetti, Konami code, satisfying toggles, progress milestones), see references/delight-interactions.md.
Validation [LOW freedom — do not skip]
After implementing animations:
- Performance → 60fps in Chrome DevTools Performance tab
- Reduced motion → Test with
prefers-reduced-motion: reduce - Mobile → Test on actual device (not just emulator); native apps also check the OS reduce-motion switch, not only the CSS media query
- Purpose → Each animation serves a clear UX purpose
- Consistency → Timing/easing matches rest of app
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.

