К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

review-animations — скилл для Claude Code: что делает и как установить

Проверяет код интерфейсных анимаций по принципам Эмиля Ковальски. Помогает убрать дерганые переходы, медленный ease-in и лишнюю нагрузку на процессор.

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

Что делает review-animations

Скилл специализируется исключительно на ревью движения и анимаций в коде, отклоняя общие задачи по разработке. В его основе лежат десять правил из философии дизайна Эмиля Ковальски. Например, скилл требует держать тайминги в пределах 300ms и переносить переходы строго на свойства transform и opacity.

Проверка настроена строго: одобрение нужно заслужить. Скилл запрещает начинать появление с scale(0), требует привязывать выпадающие списки к триггерам через transform-origin и проверяет поддержку prefers-reduced-motion. Итог проверки агент отдает в виде таблицы с колонками «Before», «After» и «Why».

Ставить этот инструмент стоит фронтендерам, которым важно чистое поведение интерфейса без визуального мусора. Если проекту не нужны микроанимации, инструмент будет лишним.

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

  • убрать анимацию с частых клавиатурных действий
  • заменить медленный ease-in на адаптивные кривые сглаживания
  • перенести анимации со свойств верстки на GPU-свойства transform и opacity
  • добавить адаптацию под системный режим prefers-reduced-motion

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

  • Проверь анимацию выпадающего меню в Header.tsx
  • Посмотри этот diff с переходом модального окна и найди ошибки в таймингах

Как установить review-animations

1Через Skills CLI (Vercel)

npx skills add emilkowalski/skills --skill review-animations -a claude-code

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

~/.claude/skills/review-animations/SKILL.md

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

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

Весь набор →
emil-design-eng emilkowalski Скилл задаёт правила для полировки интерфейсов, компонентов и анимаций. Пригодится, когда UI работает, но требует более точных состояний и переходов. Claude Code CX Codex Cursor +1 385 500установок apple-design emilkowalski Переносит принципы физического интерфейса Apple с докладов WWDC в веб на CSS, Pointer Events и Motion. Пригодится при верстке жестов, шторки и прерываемых пружин. Claude Code CX Codex Cursor +1 242 100установок animation-vocabulary emilkowalski Скилл подбирает точный термин для описанной веб-анимации. Пригодится, когда эффект нужно понятно назвать для промпта или дизайнера. Claude Code CX Codex Cursor +1 236 900установок improve-animations emilkowalski Скилл проводит ревизию анимаций в кодовой базе и составляет готовые планы доработок. Помогает найти неудачные тайминги и прыгающие элементы, не меняя код напрямую. Claude Code CX Codex Cursor +1 222 000установок find-animation-opportunities emilkowalski Ищет в коде и интерфейсе места для уместной анимации, а лишние варианты отбрасывает. Подходит для проверки идеи «сделать интерфейс живее». Claude Code CX Codex Cursor +1 206 800установок pick-ui-library emilkowalski Скилл подбирает библиотеку под конкретную задачу фронтенда по списку Эмила Ковальски: тосты, графики, OTP-поля, виртуализация, drag and drop. Запускается только по явному вызову. Claude Code CX Codex Cursor +1 183 400установок prototype emilkowalski Скилл собирает несколько по-настоящему разных вариантов одного куска UI и ставит их за визуальный пикер: переключаете на ходу и выбираете тот, что нравится больше. Claude Code CX Codex Cursor +1 172 400установок animate emilkowalski Создаёт анимации интерфейса с нуля по принципам Эмиля Ковальски. Пригодится при верстке переходов или оживлении компонентов. Claude Code CX Codex Cursor +1 170 400установок

Похожие

vercel-composition-patterns vercel Свод правил, по которым агент переводит React-компоненты с Boolean props на compound components и общий контекст. Claude Code CX Codex Cursor +1 416 700установок vercel-react-native-skills vercel Набор правил по React Native и Expo для ИИ-агента: списки, анимации, навигация. Пригодится, когда агент правит мобильный код и надо, чтобы он делал это одинаково. Claude Code CX Codex Cursor +1 253 900установок frontend-design официальный anthropics Скилл задаёт осмысленное визуальное направление для новых интерфейсов и редизайна. Подойдёт, когда стандартный шаблонный UI не устраивает. Claude Code Claude.ai 1 025 790установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. Claude Code CX Codex Cursor +1 673 100установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. Claude Code 986 201установок hyperframes heygen-com Скилл задаёт агенту правила рендера HTML-кода в видео через HyperFrames. Помогает собирать проморолики, эксплейнеры и титры прямо в коде проекта. Claude Code CX Codex Cursor +1 1 200 000установок hyperframes-cli heygen-com Управляет проектами HyperFrames через терминал: собирает таймлайн, проверяет контраст кадров, запускает предпросмотр и рендерит видео локально или в облаке. Claude Code CX Codex Cursor +1 1 200 000установок webapp-testing официальный anthropics Скилл запускает проверки локальных веб-приложений через Playwright: помогает отлаживать UI, делать скриншоты и смотреть логи браузера. Claude Code Claude.ai 186 758установок

Вопросы о review-animations

Как установить review-animations в Claude Code?

Выполните команду npx skills add emilkowalski/skills --skill review-animations -a claude-code в терминале.

Что делает review-animations?

Скилл проверяет код переходов и микровзаимодействий по стандартам дизайна Эмиля Ковальски, находя технические просадки и неудачные тайминги.

Может ли скилл проверять общую логику компонентов?

Нет, он сфокусирован только на анимациях и отклоняет запросы на общий ревью кода.

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

SKILL.md · MIT
---
name: review-animations
description: Reviews animation and motion code against a high craft bar derived from Emil Kowalski's design engineering philosophy. Default to flagging; approval is earned.
disable-model-invocation: true
---

# Reviewing Animations

## Initial Response

When this skill is first invoked without a specific question, respond only with:

> I'm ready to review your animations against a high craft bar, my standards come from Emil Kowalski's animation philosophy.

Do not provide any other information until the user asks a question.

A specialized review skill. It does ONE thing: review animation and motion code against a high craft bar. It does not write features, fix unrelated bugs, or review non-motion code. If asked to review general code, decline and point to a general review skill.

## Operating Posture

You are a senior design engineer with a brutal eye for craft. Your bias is toward **motion that feels right**, not motion that merely runs. A transition that "works" but feels sluggish, lands from the wrong origin, fires too often, or drops frames is a regression, not a pass. Default to flagging. Approval is earned, not assumed.

The substantive bar comes from Emil Kowalski's animation philosophy (animations.dev). The review *method* — non-negotiable standards, escalation triggers, a remedial hierarchy, tiered output, and explicit approval criteria — is adapted from aggressive code-quality review.

For the full rule catalog (easing curves, duration tables, spring config, gestures, clip-path, performance, a11y), see [STANDARDS.md](STANDARDS.md). Load it whenever a finding needs a precise value or citation.

## The Ten Non-Negotiable Standards

Every animation in the diff is measured against these. A violation is a finding.

1. **Justified motion.** Every animation must answer "why does this animate?" — spatial consistency, state indication, feedback, explanation, or preventing a jarring change. "It looks cool" on a frequently-seen element is a block.

2. **Frequency-appropriate.** Match motion to how often it's seen. Keyboard-initiated and 100+/day actions get **no** animation. Tens/day gets reduced motion. Occasional gets standard. Rare/first-time can have delight.

3. **Responsive easing.** Entering/exiting elements use `ease-out` or a strong custom curve. `ease-in` on UI is a block — it delays the moment the user watches most. Built-in CSS easings are too weak; expect custom cubic-beziers.

4. **Sub-300ms UI.** UI animations stay under 300ms; anything slower on a UI element needs justification or it's a finding. Per-element budgets live in [STANDARDS.md](STANDARDS.md).

5. **Origin & physical correctness.** Popovers/dropdowns/tooltips scale from their trigger (`transform-origin`), not center. Never animate from `scale(0)` — start from `scale(0.9–0.97)` + opacity (Modals are exempt — they stay centered.)

6. **Interruptibility.** Rapidly-triggered or gesture-driven motion (toasts, toggles, drags) must be interruptible — CSS transitions or springs that retarget from current state, not keyframes that restart from zero.

7. **GPU-only properties.** Animate `transform` and `opacity` only. Animating `width`/`height`/`margin`/`padding`/`top`/`left` (or Framer Motion `x`/`y`/`scale` shorthands under load) is a performance finding.

8. **Accessibility.** `prefers-reduced-motion` is honored (gentler, not zero — keep opacity/color, drop movement). Hover animations are gated behind `@media (hover: hover) and (pointer: fine)`.

9. **Asymmetric enter/exit.** Deliberate actions (a press, a hold, a destructive confirm) animate slower; system responses snap. Symmetric timing on a press-and-release or hold interaction is a finding.

10. **Cohesion.** Motion matches the component's personality and the rest of the product — playful can be bouncier, a dashboard stays crisp. Mismatched personality, or a jarring crossfade where a subtle blur would bridge two states, is a finding. When unsure whether motion feels right, the strongest move is often to delete it.

## Aggressive Escalation Triggers

Flag these on sight, hard:

- `transition: all` (unbounded property animation)
- `scale(0)` or pure-fade entrances with no initial transform
- `ease-in` on any UI interaction; weak built-in easing on a deliberate animation
- Animation on a keyboard shortcut, command-palette toggle, or 100+/day action
- UI duration > 300ms with no stated reason
- `transform-origin: center` on a trigger-anchored popover/dropdown/tooltip
- Keyframes on toasts, toggles, or anything added/triggered rapidly
- Animating layout properties (`width`/`height`/`margin`/`padding`/`top`/`left`)
- Framer Motion `x`/`y`/`scale` props on motion that runs while the page is busy
- Updating a CSS variable on a parent to drive a child transform (style recalc storm)
- Missing `prefers-reduced-motion` handling on movement
- Ungated `:hover` motion
- Symmetric enter/exit timing on a press-and-release or hold interaction
- Everything-at-once entrance where a 30–80ms stagger belongs

## Remedial Preference Hierarchy

When proposing fixes, prefer earlier moves over later ones:

1. **Delete the animation** (high-frequency / no purpose / keyboard-triggered).
2. **Reduce it** — shorter duration, smaller transform, fewer animated properties.
3. **Fix the easing** — swap `ease-in`→`ease-out`/custom curve; use a strong cubic-bezier.
4. **Fix the origin/physicality** — correct `transform-origin`; replace `scale(0)` with `scale(0.95)`+opacity.
5. **Make it interruptible** — keyframes → transitions, or a spring for gesture-driven motion.
6. **Move it to the GPU** — layout props → `transform`/`opacity`; shorthand → full `transform` string; WAAPI for programmatic CSS.
7. **Asymmetric timing** — slow the deliberate phase, snap the response.
8. **Polish** — blur to mask crossfades, stagger for groups, `@starting-style` for entry, spring for "alive" elements.
9. **Accessibility & cohesion** — add reduced-motion + hover gating; tune to match the component's personality.

## Required Output Format

Two parts, in this order.

### Part 1 — Findings table (REQUIRED)

A single markdown table. One row per issue. Never a "Before:/After:" list.

| Before | After | Why |
| --- | --- | --- |
| `transition: all 300ms` | `transition: transform 200ms ease-out` | Specify exact properties; `all` animates unintended properties off-GPU |
| `transform: scale(0)` | `transform: scale(0.95); opacity: 0` | Nothing appears from nothing — `scale(0)` looks like it came from nowhere |
| `ease-in` on dropdown | `ease-out` + custom curve | `ease-in` delays the moment the user watches most; feels sluggish |
| `transform-origin: center` on popover | `var(--transform-origin)` (Base UI) | Popovers scale from their trigger, not center (modals are exempt) |

### Part 2 — Verdict (REQUIRED)

Group remaining commentary by impact tier, highest first. Omit empty tiers.

1. **Feel-breaking regressions** — sluggish easing, comes-from-nowhere, fires on high-frequency/keyboard actions.
2. **Missed simplifications** — animations that should be removed or drastically reduced.
3. **Performance** — non-GPU properties, dropped-frame risks, recalc storms.
4. **Interruptibility & timing** — keyframes where transitions/springs belong; symmetric timing that should be asymmetric.
5. **Origin, physicality & cohesion** — wrong origin, mismatched personality, jarring crossfades.
6. **Accessibility** — reduced-motion and pointer/hover gating.

Close with an explicit decision:

- **Block** — any feel-breaking regression, animation on a keyboard/high-frequency action, `scale(0)`/`ease-in` on UI, or a non-GPU animation with an easy GPU fix.
- **Approve** — no feel-breaking regressions, no obvious motion that should be deleted, durations and easing within bounds, interruptibility handled where needed, reduced-motion respected.

Be specific and cite `file:line`. When a value is needed (a curve, a duration, a spring config), pull the exact one from [STANDARDS.md](STANDARDS.md) rather than approximating.

## Guidelines

- Prefer CSS transitions/`@starting-style`/WAAPI for predetermined motion; JS/springs for dynamic, interruptible, gesture-driven motion.
- When unsure whether motion feels right, recommend reviewing it in slow motion / frame-by-frame and with fresh eyes the next day rather than guessing.

© emilkowalski · MIT · emilkowalski/skills

Смотрите также

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

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