12-principles-of-animation

raphaelsalaja/userinterface-wiki · updated Apr 8, 2026

$npx skills add https://github.com/raphaelsalaja/userinterface-wiki --skill 12-principles-of-animation
0 commentsdiscussion
summary

Review animation code for compliance with Disney's 12 principles adapted for web interfaces.

skill.md

12 Principles of Animation

Review animation code for compliance with Disney's 12 principles adapted for web interfaces.

How It Works

  1. Read the specified files (or prompt user for files/pattern)
  2. Check against all rules below
  3. Output findings in file:line format

Rule Categories

Priority Category Prefix
1 Timing timing-
2 Easing easing-
3 Physics physics-
4 Staging staging-

Rules

Timing Rules

timing-under-300ms

User-initiated animations must complete within 300ms.

Fail:

.button { transition: transform 400ms; }

Pass:

.button { transition: transform 200ms; }

timing-consistent

Similar elements must use identical timing values.

Fail:

.button-primary { transition: 200ms; }
.button-secondary { transition: 150ms; }

Pass:

.button-primary { transition: 200ms; }
.button-secondary { transition: 200ms; }

timing-no-entrance-context-menu

Context menus should not animate on entrance (exit only).

Fail:

<motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} />

Pass:

<motion.div exit={{ opacity: 0 }} />

Easing Rules

easing-entrance-ease-out

Entrances must use ease-out (arrive fast, settle gently).

Fail:

.modal-enter { animation-timing-function: ease-in; }

Pass:

.modal-enter { animation-timing-function: ease-out; }

easing-exit-ease-in

Exits must use ease-in (build momentum before departure).

Fail:

.modal-exit { animation-timing-function: ease-out; }

Pass:

.modal-exit { animation-timing-function: ease-in; }

easing-no-linear-motion

Linear easing should only be used for progress indicators, not motion.

Fail:

.card { transition: transform 200ms linear; }

Pass:

.progress-bar { transition: width 100ms linear; }

easing-natural-decay

Use exponential ramps, not linear, for natural decay.

Fail:

gain.gain.linearRampToValueAtTime(0, t + 0.05);

Pass:

gain.gain.exponentialRampToValueAtTime(0.001, t + 0.05);

Physics Rules

physics-active-state

Interactive elements must have active/pressed state with scale transform.

Fail:

.button:hover { background: var(--gray-3); }
/* Missing :active state */

Pass:

.button:active { transform: scale(0.98); }

physics-subtle-deformation

Squash/stretch deformation must be subtle (0.95-1.05 range).

Fail:

<motion.div whileTap={{ scale: 0.8 }} />

Pass:

<motion.div whileTap={{ scale: 0.98 }} />

physics-spring-for-overshoot

Use springs (not easing) when overshoot-and-settle is needed.

Fail:

<motion.div transition={{ duration: 0.3, ease: "easeOut" }} />
// When element should bounce/settle

Pass:

<motion.div transition={{ type: "spring", stiffness: 500, damping: 30 }} />

physics-no-excessive-stagger

Stagger delays must not exceed 50ms per item.

Fail:

transition={{ staggerChildren: 0.15 }}

Pass:

transition={{ staggerChildren: 0.03 }}

Staging Rules

staging-one-focal-point

Only one element should animate prominently at a time.

Fail:

// Multiple elements with competing entrance animations
<motion.div animate={{ scale: 1.1 }} />
<motion.div animate={{ scale: 1.1 }} />

staging-dim-background

Modal/dialog backgrounds should dim to direct focus.

Fail:

.overlay { background: transparent; }

Pass:

.overlay { background: var(--black-a6); }

staging-z-index-hierarchy

Animated elements must respect z-index layering.

Fail:

.tooltip { /* No z-index, may render behind other elements */ }

Pass:

.tooltip { z-index: 50; }

Output Format

When reviewing files, output findings as:

file:line - [rule-id] description of issue

Example:
components/modal/index.tsx:45 - [timing-under-300ms] Exit animation 400ms exceeds 300ms limit
components/button/styles.module.css:12 - [physics-active-state] Missing :active transform

Summary Table

After findings, output a summary:

Rule Count Severity
timing-under-300ms 2 HIGH
physics-active-state 3 MEDIUM
easing-entrance-ease-out 1 MEDIUM

References

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.745 reviews
  • Ganesh Mohane· Dec 24, 2024

    12-principles-of-animation has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Nikhil Johnson· Dec 24, 2024

    Keeps context tight: 12-principles-of-animation is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Alexander Tandon· Dec 24, 2024

    We added 12-principles-of-animation from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Amelia Desai· Dec 20, 2024

    12-principles-of-animation is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Emma Smith· Dec 16, 2024

    Registry listing for 12-principles-of-animation matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Sakshi Patil· Nov 15, 2024

    12-principles-of-animation reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Anaya Menon· Nov 15, 2024

    Registry listing for 12-principles-of-animation matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Kwame Agarwal· Nov 15, 2024

    12-principles-of-animation fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Advait Nasser· Nov 7, 2024

    Keeps context tight: 12-principles-of-animation is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Advait Patel· Oct 26, 2024

    I recommend 12-principles-of-animation for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

showing 1-10 of 45

1 / 5