К основному содержанию
скилл CX Codex

12-principles-of-animation — скилл для Claude Code: установка

Находит ошибки в веб-анимациях по двенадцати принципам движения. Выводит список замечаний с номерами строк и сводную таблицу нарушений.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add raphaelsalaja/skill --skill 12-principles-of-animation -a claude-code
Открыть на GitHub

Что делает 12-principles-of-animation

Скилл проверяет анимации на соответствие адаптированным принципам классической анимации. Правила разбиты по приоритетам: тайминги, плавность (easing), физика и композиция (staging). Агент сканирует CSS или TSX-файлы и сразу замечает переходы длиннее 300ms, линейную анимацию движения вместо ease-out или отсутствие состояния :active у кнопок.

Отчёт формируется в формате файл:строка с кодом правила, например timing-under-300ms или physics-no-excessive-stagger, который запрещает задержку каскада больше 50ms на элемент. Если в коде используется transition вместо пружины spring при отскоке, проверка сразу это подсветит. В конце проверки выводится итоговая таблица с группировкой по серьёзности дефектов.

Какие задачи решает

  • найти слишком медленные анимации интерфейса длиннее 300ms
  • проверить правильность функций плавности при открытии и закрытии окон
  • выявить отсутствие псевдокласса :active со сжатием у интерактивных элементов
  • ограничить задержку каскадной анимации списка до 50ms на элемент

Примеры запросов агенту

  • Проверь анимации во всех файлах папки components/modal по двенадцати принципам
  • Выполни аудит переходов и свойств transition в файле components/button/styles.module.css
  • Найди ошибки таймингов и физики в анимациях карточек каталога

Как установить 12-principles-of-animation

1Через Skills CLI (Vercel)

npx skills add raphaelsalaja/skill --skill 12-principles-of-animation -a claude-code

2Вручную: положить файлы

~/.claude/skills/12-principles-of-animation/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/12-principles-of-animation/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о 12-principles-of-animation

Как установить 12-principles-of-animation в Claude Code?

Выполните команду npx skills add raphaelsalaja/skill --skill 12-principles-of-animation -a claude-code в терминале или сохраните файл по пути ~/.claude/skills/12-principles-of-animation/SKILL.md.

Что делает скилл 12-principles-of-animation?

Он инспектирует код анимаций и выявляет нарушения правил динамики, отдавая отчёт в виде файл:строка со сводкой критичности найденных проблем.

Какие правила физики проверяет этот скилл?

Он требует наличия трансформации scale в активном состоянии кнопок, ограничивает деформацию диапазоном 0.95–1.05, обязывает использовать пружины spring вместо кривых плавности при отскоке и запрещает межкаскадный шаг более 50ms.

Исходный текст

SKILL.md · MIT
---
name: 12-principles-of-animation
description: Audit animation code against Disney's 12 principles adapted for web. Use when reviewing motion, implementing animations, or checking animation quality. Outputs file:line findings.
license: MIT
metadata:
  author: raphael-salaja
  version: "2.0.0"
  source: /content/12-principles-of-animation/index.mdx
---

# 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:**
```css
.button { transition: transform 400ms; }
```

**Pass:**
```css
.button { transition: transform 200ms; }
```

#### `timing-consistent`
Similar elements must use identical timing values.

**Fail:**
```css
.button-primary { transition: 200ms; }
.button-secondary { transition: 150ms; }
```

**Pass:**
```css
.button-primary { transition: 200ms; }
.button-secondary { transition: 200ms; }
```

#### `timing-no-entrance-context-menu`
Context menus should not animate on entrance (exit only).

**Fail:**
```tsx
<motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} />
```

**Pass:**
```tsx
<motion.div exit={{ opacity: 0 }} />
```

### Easing Rules

#### `easing-entrance-ease-out`
Entrances must use `ease-out` (arrive fast, settle gently).

**Fail:**
```css
.modal-enter { animation-timing-function: ease-in; }
```

**Pass:**
```css
.modal-enter { animation-timing-function: ease-out; }
```

#### `easing-exit-ease-in`
Exits must use `ease-in` (build momentum before departure).

**Fail:**
```css
.modal-exit { animation-timing-function: ease-out; }
```

**Pass:**
```css
.modal-exit { animation-timing-function: ease-in; }
```

#### `easing-no-linear-motion`
Linear easing should only be used for progress indicators, not motion.

**Fail:**
```css
.card { transition: transform 200ms linear; }
```

**Pass:**
```css
.progress-bar { transition: width 100ms linear; }
```

#### `easing-natural-decay`
Use exponential ramps, not linear, for natural decay.

**Fail:**
```ts
gain.gain.linearRampToValueAtTime(0, t + 0.05);
```

**Pass:**
```ts
gain.gain.exponentialRampToValueAtTime(0.001, t + 0.05);
```

### Physics Rules

#### `physics-active-state`
Interactive elements must have active/pressed state with scale transform.

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

**Pass:**
```css
.button:active { transform: scale(0.98); }
```

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

**Fail:**
```tsx
<motion.div whileTap={{ scale: 0.8 }} />
```

**Pass:**
```tsx
<motion.div whileTap={{ scale: 0.98 }} />
```

#### `physics-spring-for-overshoot`
Use springs (not easing) when overshoot-and-settle is needed.

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

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

#### `physics-no-excessive-stagger`
Stagger delays must not exceed 50ms per item.

**Fail:**
```tsx
transition={{ staggerChildren: 0.15 }}
```

**Pass:**
```tsx
transition={{ staggerChildren: 0.03 }}
```

### Staging Rules

#### `staging-one-focal-point`
Only one element should animate prominently at a time.

**Fail:**
```tsx
// 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:**
```css
.overlay { background: transparent; }
```

**Pass:**
```css
.overlay { background: var(--black-a6); }
```

#### `staging-z-index-hierarchy`
Animated elements must respect z-index layering.

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

**Pass:**
```css
.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

- [The Illusion of Life: Disney Animation](https://www.amazon.com/Illusion-Life-Disney-Animation/dp/0786860707)
- [Apple WWDC23: Animate with Springs](https://developer.apple.com/videos/play/wwdc2023/10158)

© raphael-salaja · MIT · raphaelsalaja/skill

Похожие скиллы

Всё по теме «Фронтенд и UI» →
animation-principles Owl-Listener Скилл для настройки одной конкретной анимации в интерфейсе: подбирает easing, длительность и порядок движения элементов. CX Codex +1 2 200установок css-animation-creator OneWave-AI Скилл для ИИ-кодинга, который помогает писать CSS-анимации, переходы, микроинтеракции и анимации по скроллу. Пригодится, когда нужно добавить движение в интерфейс без ручного подбора таймингов. CX Codex +1 805установок animation-performance emilkowalski Диагностический скилл, который ищет причину пропущенных кадров в веб-анимациях и подсказывает, какой свойство анимировать вместо дорогого. CX Codex +1 36 800установок animation-systems MengTo Инструкции для агента по созданию сдержанной веб-анимации в стиле Stripe, Linear и Apple. Пригодится при вёрстке интерфейсов, модальных окон и карточек. CX Codex +1 1 900установок animation-designer daffy0208 Скилл для веб-анимаций: переходы страниц, появление компонентов, параллакс и микро-взаимодействия на Framer Motion и CSS. CX Codex +1 1 900установок review-animations emilkowalski Проверяет код интерфейсных анимаций по принципам Эмиля Ковальски. Помогает убрать дерганые переходы, медленный ease-in и лишнюю нагрузку на процессор. CX Codex +1 256 500установок

Из того же набора2

Спонсоры проекта

Компании, которые помогают держать аналитику открытой