Skip to main content
skill CX Codex

universal-timing — Claude Code skill: animation timing rules

A skill about animation timing: rules that hold at 50ms and at 5000ms. Useful when you need to pick a duration and an easing curve instead of guessing.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add dylantarre/animation-principles --skill universal-timing -a claude-code
Open on GitHub

What universal-timing does

The skill covers animation principles that survive any duration. Squash and stretch scales proportionally — 5% at 100ms, 30% at 2000ms. Anticipation keeps a fixed share, 20–30% of the main action, no matter how long that action runs. Slow in and slow out stays mandatory, since linear motion reads as mechanical at every speed.

It also hands you ratios. Anticipation, action and follow-through split as 20% : 50% : 30%, which at 500ms means 100ms, 250ms and 150ms. Stagger delay runs 10–20% of an item's duration, so a 300ms item wants 30–60ms between items. A separate section explains when ease-in earns its place: under 150ms only ease-out fits, and a full ease-in-out becomes possible from 400ms. Ready-made cubic-bezier values for CSS are included.

A framework maps felt intent to duration, from instant through dramatic. Nothing here computes values for you or writes them into your code — you get the rules and the ratios, and your project's context decides the number. If your design system already locks animation tokens, expect to reconcile these ratios with it by hand.

What it helps with

  • pick a duration that matches the intended feel
  • work out anticipation and follow-through shares from total time
  • set stagger delay for a list of items
  • decide when ease-in is worth using
  • stress-test an animation at extreme speeds

Example prompts for the agent

  • Pick timing values for a card appearing over 300ms using the universal-timing principles
  • Break a 500ms animation into anticipation, action and follow-through
  • Which cubic-bezier should I use for a panel sliding in over 120ms?

How to install universal-timing

1Skills CLI (Vercel)

npx skills add dylantarre/animation-principles --skill universal-timing -a claude-code

2Manually: put the files in place

~/.claude/skills/universal-timing/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/universal-timing/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about universal-timing

How do I install universal-timing in Claude Code?

Run npx skills add dylantarre/animation-principles --skill universal-timing -a claude-code. The skill file lands at ~/.claude/skills/universal-timing/SKILL.md.

What does universal-timing do?

It lays out animation principles that do not depend on duration, plus ratios for phases, stagger and easing curves. The point is choosing timing deliberately rather than by eye.

Which platforms can run this skill?

Beyond Claude, it installs for Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode. GitHub Copilot uses a different command: gh skill install dylantarre/animation-principles universal-timing.

Source text

SKILL.md · MIT
---
name: universal-timing
description: Use when learning animation timing fundamentals - principles that apply regardless of duration, the foundational rules that scale across all time ranges
---

# Universal Timing Principles

Some animation truths **transcend duration**. These principles work at 50ms and 5000ms. Master these to make good timing decisions at any scale.

## Disney Principles - Universal Application

### Always True

**Squash & Stretch**: Scale proportionally - 5% at 100ms, 30% at 2000ms. Never eliminate, always proportional.

**Anticipation**: Ratio stays constant - anticipation is 20-30% of main action duration, regardless of total time.

**Staging**: One clear focus - whether instant or cinematic, only one thing should demand primary attention.

**Straight Ahead/Pose to Pose**: Complexity matches duration - short = straight ahead, long = pose to pose.

**Follow Through**: Present at all durations - even 100ms can have micro-overshoot. Scale matches duration.

**Slow In/Slow Out**: Always ease - linear motion looks mechanical at every duration.

**Arcs**: Natural paths scale - short animations = subtle curves, long animations = sweeping arcs.

**Secondary Action**: Supports, never competes - true at 50ms and 5000ms.

**Timing**: Duration determines perception - same motion reads differently at different speeds.

**Exaggeration**: Match duration and importance - longer duration allows more exaggeration.

**Solid Drawing**: Transforms must match - consistency matters regardless of speed.

**Appeal**: The goal - animation should enhance, not impede, at any duration.

## Universal Ratios

### The Golden Ratio of Animation Timing

```
Anticipation : Action : Follow-through
    20%      :   50%  :     30%

Example at 500ms:
  Anticipation: 100ms
  Main action: 250ms
  Follow-through: 150ms
```

### Stagger Ratio

```
Optimal stagger delay: 10-20% of item duration

Item duration: 300ms
Stagger delay: 30-60ms between items
```

### Easing Intensity vs Duration

```
Duration < 150ms: ease-out only (no time for ease-in)
Duration 150-400ms: ease-out or custom
Duration 400ms+: full ease-in-out possible
```

## Easing That Works Everywhere

```css
/* Universal ease-out - works at any duration */
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);

/* Universal natural motion */
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);

/* Universal bounce - scale amplitude with duration */
transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
```

## Universal Laws

1. **Shorter distances = shorter durations** - motion should feel proportional to space.

2. **Bigger elements move slower** - perceived weight requires more time.

3. **Enter fast, exit faster** - users care about what's arriving, not leaving.

4. **Context determines tolerance** - first visit allows longer animation than repeat use.

5. **Attention is finite** - compete for it wisely, regardless of duration.

6. **Physics provides intuition** - match real-world expectations at any speed.

7. **Easing is mandatory** - linear motion looks wrong at every duration.

8. **Test at extremes** - if it works at 2x and 0.5x, it's robust.

## Duration Selection Framework

```
What should the user feel?
├── Instant (< 100ms)
│   └── Confirmation, responsiveness
├── Quick (100-300ms)
│   └── Efficiency, polish
├── Standard (300-500ms)
│   └── Clarity, communication
├── Deliberate (500-1000ms)
│   └── Importance, attention
└── Dramatic (> 1000ms)
    └── Story, emotion, memory
```

## Key Insight

Duration is a **design decision**. It communicates importance, guides attention, and shapes emotion. The Disney principles are tools - timing is how you wield them. Master the principles, then let context determine duration.

© dylantarre · MIT · dylantarre/animation-principles

Similar skills

Everything for Frontend and UI →

From the same set90

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor