agentsclimarketplace

Motion design

Skill subhansh-dev/agent-maxxing/frontend-design/motion-design

Timing, easing, duration rules, and enter/exit animation patterns for UI motion.From its SKILL.md

Install
npx -y skills add subhansh-dev/agent-maxxing --skill motion-design

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.8 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Motion Design

Duration: The 100/300/500 Rule

Timing matters more than easing. These durations feel right for most UI:

DurationUse CaseExamples
100-150msInstant feedbackButton press, toggle, color change
200-300msState changesMenu open, tooltip, hover states
300-500msLayout changesAccordion, modal, drawer
500-800msEntrance animationsPage load, hero reveals

Exit animations are faster than entrances—use ~75% of enter duration.

Easing: Pick the Right Curve

Don't use ease. It's a compromise that's rarely optimal. Instead:

CurveUse ForCSS
ease-outElements enteringcubic-bezier(0.16, 1, 0.3, 1)
ease-inElements leavingcubic-bezier(0.7, 0, 0.84, 0)
ease-in-outState toggles (there → back)cubic-bezier(0.65, 0, 0.35, 1)

For micro-interactions, use exponential curves—they feel natural because they mimic real physics (friction, deceleration):

/* Quart out - smooth, refined (recommended default) */
--ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);

/* Quint out - slightly more dramatic */
--ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1);

/* Expo out - snappy, confident */
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);

Avoid bounce and elastic curves. They were trendy in 2015 but now feel tacky and amateurish. Real objects don't bounce when they stop—they decelerate smoothly. Overshoot effects draw attention to the animation itself rather than the content.

The Only Two Properties You Should Animate

transform and opacity only—everything else causes layout recalculation. For height animations (accordions), use grid-template-rows: 0fr → 1fr instead of animating height directly.

Staggered Animations

Use CSS custom properties for cleaner stagger: animation-delay: calc(var(--i, 0) * 50ms) with style="--i: 0" on each item. Cap total stagger time—10 items at 50ms = 500ms total. For many items, reduce per-item delay or cap staggered count.

Reduced Motion

This is not optional. Vestibular disorders affect ~35% of adults over 40.

/* Define animations normally */
.card {
  animation: slide-up 500ms ease-out;
}

/* Provide alternative for reduced motion */
@media (prefers-reduced-motion: reduce) {
  .card {
    animation: fade-in 200ms ease-out;  /* Crossfade instead of motion */
  }
}

/* Or disable entirely */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

What to preserve: Functional animations like progress bars, loading spinners (slowed down), and focus indicators should still work—just without spatial movement.

Perceived Performance

Nobody cares how fast your site is—just how fast it feels. Perception can be as effective as actual performance.

The 80ms threshold: Our brains buffer sensory input for ~80ms to synchronize perception. Anything under 80ms feels instant and simultaneous. This is your target for micro-interactions.

Active vs passive time: Passive waiting (staring at a spinner) feels longer than active engagement. Strategies to shift the balance:

  • Preemptive start: Begin transitions immediately while loading (iOS app zoom, skeleton UI). Users perceive work happening.
  • Early completion: Show content progressively—don't wait for everything. Video buffering, progressive images, streaming HTML.
  • Optimistic UI: Update the interface immediately, handle failures gracefully. Instagram likes work offline—the UI updates instantly, syncs later. Use for low-stakes actions; avoid for payments or destructive operations.

Easing affects perceived duration: Ease-in (accelerating toward completion) makes tasks feel shorter because the peak-end effect weights final moments heavily. Ease-out feels satisfying for entrances, but ease-in toward a task's end compresses perceived time.

Caution: Too-fast responses can decrease perceived value. Users may distrust instant results for complex operations (search, analysis). Sometimes a brief delay signals "real work" is happening.

Performance

Don't use will-change preemptively—only when animation is imminent (:hover, .animating). For scroll-triggered animations, use Intersection Observer instead of scroll events; unobserve after animating once. Create motion tokens for consistency (durations, easings, common transitions).


Avoid: Animating everything (animation fatigue is real). Using >500ms for UI feedback. Ignoring prefers-reduced-motion. Using animation to hide slow loading.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.