state-changes — скилл для Claude Code: анимация состояний UI
Скилл для анимации элементов, которые меняются на месте: переключатели, аккордеоны, чекбоксы, состояния кнопок. Пригодится, когда интерфейсу нужны плавные переходы без входа и выхода.
npx skills add dylantarre/animation-principles --skill state-changes -a claude-codeЧто делает state-changes
Скилл описывает, как применять 12 принципов анимации Диснея к элементам, которые трансформируются, не покидая экран. Внутри — разбор по каждому принципу: сжатие перед расширением, лёгкое движение назад перед раскрытием, разные скорости для частей элемента, дуги для вращения. Для каждого типа состояния дана длительность и кривая: чекбокс 150ms с ease-out, переключатель 200ms с ease-in-out, аккордеон 250ms, раскрытие карточки 300ms.
Есть готовые CSS-паттерны. Переключатель получает transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1), а его бегунок — отдельную кривую с перелётом cubic-bezier(0.34, 1.56, 0.64, 1). Аккордеон собран на grid-template-rows от 0fr до 1fr — высота анимируется без замера контента вручную.
Главное правило скилла: изменения состояния обратимы. Анимация к состоянию B должна быть обратной к анимации к состоянию A, и проверять нужно оба направления. Если у вас переключатель красиво открывается и дёргается при закрытии — это как раз тот случай. Скилл работает в Claude, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode.
Какие задачи решает
- анимировать переключатель с лёгким перелётом в конце
- раскрыть аккордеон без ручного замера высоты контента
- подобрать длительность и кривую для чекбокса и радиокнопки
- сделать обратную анимацию при возврате в исходное состояние
- согласовать движение бегунка, смену цвета и подмену иконки
Примеры запросов агенту
- добавь анимацию переключателю состояния по скиллу state-changes
- аккордеон раскрывается рывком, поправь по state-changes
- проверь обе стороны анимации кнопки по state-changes
Как установить state-changes
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill state-changes -a claude-code2Вручную: положить файлы
~/.claude/skills/state-changes/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/state-changes/
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill state-changes -a codex2Вручную: положить файлы
.agents/skills/state-changes/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill state-changes -a cursor2Вручную: положить файлы
.cursor/skills/state-changes/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles state-changes2Вручную: положить файлы
.github/skills/state-changes/SKILL.md1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill state-changes -a gemini-cli2Командой платформы
gemini skills install https://github.com/dylantarre/animation-principles --path skills/05-by-animation-type/state-changesВручную: положить файлы
.devin/skills/state-changes/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill state-changes -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о state-changes
Как установить state-changes в Claude?
Выполните npx skills add dylantarre/animation-principles --skill state-changes -a claude-code. Скилл окажется в ~/.claude/skills/state-changes/SKILL.md.
Что делает state-changes?
Даёт агенту правила анимации для элементов, которые меняются на месте: переключателей, аккордеонов, чекбоксов, кнопок. Внутри — принципы анимации, таблица длительностей и CSS-паттерны.
Чем state-changes отличается от анимации появления и исчезновения?
Он про трансформации без входа и выхода элемента. Отдельно требует, чтобы анимация была обратимой: переход к состоянию B — зеркало перехода к состоянию A, и проверять надо оба направления.
Исходный текст
SKILL.md · MIT
---
name: state-changes
description: Use when elements transform in place - toggle switches, expanding accordions, checkbox animations, button states, or any transformation without entering/exiting.
---
# State Change Animations
Apply Disney's 12 principles when elements transform without leaving.
## Principle Application
**Squash & Stretch**: Elements compress before expanding. A toggle switch squashes 5% before sliding.
**Anticipation**: Wind up before the change. Slight reverse movement (2-3px) before expanding.
**Staging**: Keep transformations centered on user focus. Don't let state changes distract from the interaction point.
**Straight Ahead vs Pose-to-Pose**: Define exact states. Button has rest, hover, active, disabled - each precisely designed.
**Follow Through & Overlapping**: Parts transform at different rates. Icon rotates before label fades in.
**Slow In/Slow Out**: Use ease-in-out for bidirectional changes: `cubic-bezier(0.4, 0, 0.2, 1)`.
**Arcs**: Rotating elements follow natural arcs. Chevrons rotate on their center point, not linearly.
**Secondary Action**: Pair the primary change with supporting motion. Toggle sliding + color shift + icon swap.
**Timing**:
- Micro-states: 100-150ms (checkbox tick, radio fill)
- Standard states: 150-250ms (toggles, accordions)
- Complex states: 250-400ms (multi-part transformations)
**Exaggeration**: Overshoot slightly on state changes. Toggle goes 2px past, then settles.
**Solid Drawing**: Maintain element integrity during transformation. No distortion that breaks visual consistency.
**Appeal**: State changes should feel satisfying. Users clicked with intent - reward that intent.
## Timing Recommendations
| State Change | Duration | Easing | Notes |
|-------------|----------|--------|-------|
| Checkbox | 150ms | ease-out | Tick draws in |
| Toggle Switch | 200ms | ease-in-out | Overshoot slightly |
| Radio Button | 150ms | ease-out | Scale in from center |
| Accordion | 250ms | ease-in-out | Height + rotation |
| Tab Switch | 200ms | ease-in-out | Indicator slides |
| Button Active | 100ms | ease-out | Scale to 0.97 |
| Card Expand | 300ms | ease-in-out | All properties together |
## Implementation Pattern
```css
.toggle {
transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
.toggle-knob {
transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1); /* Overshoot */
}
.toggle.active .toggle-knob {
transform: translateX(20px);
}
```
## Accordion Pattern
```css
.accordion-content {
display: grid;
grid-template-rows: 0fr;
transition: grid-template-rows 250ms ease-in-out;
}
.accordion.open .accordion-content {
grid-template-rows: 1fr;
}
```
## Key Rule
State changes are reversible. The animation to state B should be the inverse of animation to state A. Test both directions.
© dylantarre · MIT · dylantarre/animation-principles