agentleFS
botirkhaltaevbotirkhaltaev/botir-skills/skills/motion-design-principles/SKILL.md

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
  1. Distinctive:

    Every animation serves a function.

    line 21
  2. Distinctive:

    When multiple elements animate, stagger their start times.

    line 63
  3. Distinctive:

    Use spring physics (not duration-based easing) for draggable/interactive elements.

    line 100
  4. Distinctive:

    When content changes, morph between states rather than replacing.

    line 109

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.

PurposeExample
OrientationWhere did this element come from?
FeedbackThe system received my input
RelationshipThese elements are connected
ProgressSomething is happening, wait
DelightThe interface feels alive (use sparingly)

2. Duration: Size Determines Speed

Smaller elements = shorter duration. Larger area transitions = longer duration.

Element SizeDuration
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.

EasingUse ForCSS Value
Ease-outElements enteringcubic-bezier(0, 0, 0.2, 1)
Ease-inElements exitingcubic-bezier(0.4, 0, 1, 1)
Ease-in-outElements moving within the viewcubic-bezier(0.4, 0, 0.2, 1)
SpringInteractive/draggable elementsPhysics-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 SizeStagger Delay
<5 items50ms
5-10 items30ms
>10 items20ms

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:

StateAnimation
EnterScale up + fade in + ease-out
ExitScale down + fade out + ease-in
UpdateCross-fade or morph
LoadingSkeleton 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 TheseAvoid These
transform (translate, scale, rotate)width, height
opacitytop, 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 gate
  • references/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

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.