loading-states · dylantarre — скилл для Claude Code: анимации загрузки
Скилл для индикаторов загрузки: спиннеры, прогресс-бары, скелетоны и шиммер. Пригодится, когда интерфейс должен показать, что система работает.
npx skills add dylantarre/animation-principles --skill loading-states -a claude-codeЧто делает loading-states
Скилл разбирает анимации ожидания через 12 принципов Disney и превращает их в конкретные правила. Squash & Stretch задаёт лёгкую пульсацию индикатора (масштаб 0.98–1.02), Anticipation требует показать состояние загрузки сразу по действию, а Staging — ставить индикатор туда, где появится контент. Скелетоны при этом должны совпадать по пропорциям с настоящим содержимым, иначе иллюзия ломается.
Тайминги прописаны отдельно для каждого типа. Спиннер появляется с задержкой 200ms, чтобы не мигать на быстрых загрузках, и держится минимум 500ms; цикл шиммера скелетона — 1500ms. Прогресс-бар показывается без задержки и плавно заполняется между известными процентами. Переход от загрузки к контенту перекрывается на 100ms, чтобы не было резкого скачка.
Внутри есть готовые CSS-паттерны: шиммер через linear-gradient и @keyframes, спиннер с плавным вращением, прогресс-бар с cubic-bezier(0.4, 0, 0.2, 1) и появление контента через content-reveal. Отдельным пунктом идёт prefers-reduced-motion — при включённой настройке вместо анимации показывается статичный индикатор. Если у вас в проекте уже есть свои тайминги загрузки, этот скилл стоит сверить с ними: расхождения по задержке и минимальному времени показа дадут заметное мигание.
Какие задачи решает
- показать спиннер, не дожидаясь медленного ответа сервера
- собрать скелетон, совпадающий по пропорциям с реальным контентом
- убрать мигание индикатора на быстрых загрузках
- сделать плавный переход от загрузки к контенту
- учесть
prefers-reduced-motionв анимациях ожидания
Примеры запросов агенту
- Сделай скелетон для карточки товара по скиллу loading-states
- Настрой тайминги спиннера и прогресс-бара, как в loading-states
- Проверь мои анимации загрузки на соответствие loading-states
Как установить loading-states
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loading-states -a claude-code2Вручную: положить файлы
~/.claude/skills/loading-states/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/loading-states/
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loading-states -a codex2Вручную: положить файлы
.agents/skills/loading-states/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loading-states -a cursor2Вручную: положить файлы
.cursor/skills/loading-states/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles loading-states2Вручную: положить файлы
.github/skills/loading-states/SKILL.md1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loading-states -a gemini-cli2Командой платформы
gemini skills install https://github.com/dylantarre/animation-principles --path skills/05-by-animation-type/loading-statesВручную: положить файлы
.devin/skills/loading-states/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loading-states -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о loading-states
Как установить loading-states в Claude?
Выполните npx skills add dylantarre/animation-principles --skill loading-states -a claude-code. Файл скилла окажется в ~/.claude/skills/loading-states/SKILL.md.
Что делает loading-states?
Описывает анимации ожидания через принципы Disney: спиннеры, прогресс-бары, скелетоны и шиммер. Даёт тайминги для каждого типа и CSS-паттерны для реализации.
Какие тайминги рекомендует скилл?
Спиннер появляется через 200ms и держится минимум 500ms, цикл шиммера скелетона — 1500ms, переход к контенту перекрывается на 100ms.
Исходный текст
SKILL.md · MIT
---
name: loading-states
description: Use when indicating progress or waiting - spinners, progress bars, skeleton screens, shimmer effects, or any animation showing the system is working.
---
# Loading State Animations
Apply Disney's 12 principles to communicate system activity.
## Principle Application
**Squash & Stretch**: Progress indicators can pulse/breathe to show life. Slight scale oscillation (0.98-1.02).
**Anticipation**: Show loading state immediately on action. Don't wait for slow response to show spinner.
**Staging**: Loading indicators appear where content will be. Skeleton screens match final layout.
**Straight Ahead vs Pose-to-Pose**: Design loading as a sequence: instant indicator → progress → completion → content.
**Follow Through & Overlapping**: Loading fades as content enters. Overlap the transition by 100ms.
**Slow In/Slow Out**: Progress bars ease-in-out between known percentages. Indeterminate uses smooth oscillation.
**Arcs**: Circular spinners follow true circular paths. Avoid jerky rotation.
**Secondary Action**: Skeleton shimmer + subtle pulse. Multiple signals reinforce "loading."
**Timing**:
- Show spinner after 200ms delay (avoid flash for fast loads)
- Minimum display: 500ms (prevent jarring flash)
- Skeleton shimmer cycle: 1500-2000ms
**Exaggeration**: Keep minimal - loading shouldn't distract, just reassure.
**Solid Drawing**: Skeletons should match content proportions. Wrong shapes break the illusion.
**Appeal**: Loading should feel optimistic, not tedious. Smooth motion suggests progress.
## Timing Recommendations
| Loading Type | Appear Delay | Min Display | Animation Cycle |
|-------------|--------------|-------------|-----------------|
| Spinner | 200ms | 500ms | 700-800ms |
| Progress Bar | 0ms | - | smooth fill |
| Skeleton | 0ms | 500ms | 1500ms shimmer |
| Button Spinner | 0ms | 400ms | 600ms |
| Full Page | 100ms | 800ms | 1000ms |
## Implementation Patterns
```css
/* Skeleton shimmer */
.skeleton {
background: linear-gradient(
90deg,
#e0e0e0 0%,
#f0f0f0 50%,
#e0e0e0 100%
);
background-size: 200% 100%;
animation: shimmer 1500ms ease-in-out infinite;
}
@keyframes shimmer {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
/* Spinner with smooth rotation */
.spinner {
animation: spin 700ms linear infinite;
opacity: 0;
animation: fade-in 200ms 200ms ease-out forwards, spin 700ms linear infinite;
}
/* Progress bar with easing */
.progress-fill {
transition: width 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
```
## Loading-to-Content Transition
```css
.content-enter {
animation: content-reveal 300ms ease-out forwards;
}
@keyframes content-reveal {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
```
## Key Rules
1. Delay spinner appearance by 200ms to avoid flash
2. Keep loading visible minimum 500ms once shown
3. Skeleton shapes must match real content dimensions
4. Transition smoothly from loading to content - never pop
5. Respect `prefers-reduced-motion` - show static indicator instead
© dylantarre · MIT · dylantarre/animation-principles
Похожие скиллы
Всё по теме «Фронтенд и UI» →Сначала — loading-states от других авторов.