PluginBench
Skill
Pass
Audit score 90

micro-interactions

dylantarre/animation-principles

Apply Disney's 12 animation principles to small UI feedback moments like buttons, toggles, and form validation.

What is micro-interactions?

Micro-interactions skill teaches how to animate small UI feedback elements using established animation principles. Use it when designing button states, toggles, form validation, loading indicators, and notification badges to create responsive, delightful interfaces.

  • Apply squash & stretch to button presses and toggle bounces
  • Implement anticipation with hover states and pre-click feedback
  • Use staging to focus attention on active elements
  • Control timing with 100-300ms transitions for snappy but smooth feel
  • Create follow-through effects like ripples and settling motion
  • Implement secondary actions where icons respond to parent state changes

How to install micro-interactions

npx skills add https://github.com/dylantarre/animation-principles --skill micro-interactions
Claude Code
Cursor
Windsurf
Cline

How to use micro-interactions

  1. 1.Review the 12 animation principles table to understand each concept
  2. 2.Choose the relevant principle(s) for your UI element
  3. 3.Reference the timing table to set appropriate durations (50-300ms)
  4. 4.Use the component patterns (buttons, toggles, checkboxes) as starting points
  5. 5.Apply easing functions like ease-out for responsiveness and cubic-bezier for springs
  6. 6.Test animations respect prefers-reduced-motion for accessibility
  7. 7.Validate that functionality works without animation enabled

Use cases

Good for
  • Designing button hover and active states with compression and elevation feedback
  • Creating toggle switches with spring easing and overshoot settling
  • Animating checkbox fills with staggered checkmark drawing
  • Building form validation feedback with error shakes and success scales
  • Adding ripple effects and badge updates to notification systems
Who it's for
  • UI/UX designers implementing interactive components
  • Frontend developers building animated interfaces
  • Design systems teams establishing interaction patterns
  • Product teams focused on interface responsiveness and delight

micro-interactions FAQ

What timing should I use for micro-interactions?

Immediate feedback (50-100ms), standard transitions (100-200ms), and complex interactions (200-300ms). Anything longer than 300ms feels sluggish for small UI elements.

How much exaggeration is appropriate?

Enough to be noticeable but not distracting. Error shakes should be 3-5px (not 20px), success scales 1.05-1.1 (not 1.5). Subtle but unmistakable.

Should I animate disabled states?

No. Disabled states should have no animation and reduced opacity to indicate they're not interactive.

How do I handle users who prefer reduced motion?

Respect the prefers-reduced-motion media query by removing or significantly reducing animations for those users.

Can I use linear easing for micro-interactions?

Avoid linear easing—it looks broken. Use ease-out for snappy entrance and ease-in for gentle settling instead.

Full instructions (SKILL.md)

Source of truth, from dylantarre/animation-principles.


name: micro-interactions description: Use when designing small UI feedback moments like button states, toggles, form validation, loading indicators, or notification badges.

Micro-interaction Animation

Apply Disney's 12 animation principles to small UI feedback moments and interface details.

Quick Reference

PrincipleMicro-interaction Implementation
Squash & StretchButton press compression, toggle bounce
AnticipationHover state hints, pre-click feedback
StagingFocus attention on active element
Straight Ahead / Pose to PoseProgress vs state changes
Follow Through / OverlappingRipple effects, settling motion
Slow In / Slow OutSnappy but smooth transitions
ArcToggle switches, circular menus
Secondary ActionIcons respond to parent state
Timing100-300ms for most interactions
ExaggerationClear but not distracting
Solid DrawingConsistent transform behavior
AppealDelightful, purposeful feedback

Principle Applications

Squash & Stretch: Buttons compress slightly on press (scaleY: 0.95). Toggle thumbs squash when hitting bounds. Notification badges bounce on update. Keep subtle—this is UI, not cartoon.

Anticipation: Hover states prepare for click. Buttons lift/grow slightly before press animation. Draggable items elevate on grab start. Loading spinners wind up before spinning.

Staging: Active form field clearly distinguished. Error states demand attention. Success confirmations are unmistakable. One interaction feedback at a time.

Straight Ahead vs Pose to Pose: Progress indicators animate continuously (straight ahead). Checkboxes snap between states (pose to pose). Combine: loading indicator ends with state-change snap.

Follow Through & Overlapping: Ripple effects expand past tap point. Toggle switches overshoot then settle. Checkmarks draw with slight delay after box fills. Menu items stagger in.

Slow In / Slow Out: Quick ease-out for responsive feel. 100ms with ease-out feels instant. Avoid linear—looks broken. Snappy entrance, gentle settling.

Arc: Toggle switches travel in slight arc. Circular action buttons expand radially. Dropdown carets rotate smoothly. Menu items can follow curved path.

Secondary Action: Icon changes color as button state changes. Badge count updates with parent notification. Helper text appears as input focuses. Shadow responds to elevation.

Timing: Immediate feedback: 50-100ms. Standard transitions: 100-200ms. Complex micro-interactions: 200-300ms. Anything longer feels sluggish for small UI.

Exaggeration: Enough to notice, not enough to distract. Error shakes: 3-5px, not 20px. Success scales: 1.05-1.1, not 1.5. Subtle but unmistakable.

Solid Drawing: Transform origin matters—buttons scale from center, tooltips from pointer. Consistent behavior across similar elements. Maintain visual integrity during animation.

Appeal: Micro-interactions add personality without overwhelming. Users should feel the interface is responsive and alive. Small delights build into overall experience quality.

Component Patterns

Button States

.button {
    transition: transform 100ms ease-out,
                box-shadow 100ms ease-out;
}
.button:hover {
    transform: translateY(-1px);
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.button:active {
    transform: translateY(0) scale(0.98);
    box-shadow: 0 1px 2px rgba(0,0,0,0.1);
}

Toggle Switch

.toggle-thumb {
    transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);
}
.toggle-thumb.active {
    transform: translateX(20px);
}

Checkbox

.checkmark {
    stroke-dasharray: 20;
    stroke-dashoffset: 20;
    transition: stroke-dashoffset 200ms ease-out 50ms;
}
.checkbox:checked + .checkmark {
    stroke-dashoffset: 0;
}

Timing Reference

InteractionDurationEasing
Hover100msease-out
Click/tap100msease-out
Toggle150-200msspring/elastic
Checkbox150msease-out
Focus ring100msease-out
Tooltip show150msease-out
Tooltip hide100msease-in
Badge update200mselastic
Form error200msease-out

Best Practices

  1. Every interactive element needs feedback
  2. Disabled states: no animation, reduced opacity
  3. Group related feedback together
  4. Don't animate on every change—filter unnecessary updates
  5. Test without animation—functionality shouldn't depend on it
  6. Respect prefers-reduced-motion