responsive-adaptive — скилл для Claude Code
Скилл настраивает адаптивную длительность анимаций в зависимости от размера экрана, расстояния перемещения и настройки prefers-reduced-motion.
npx skills add dylantarre/animation-principles --skill responsive-adaptive -a claude-codeЧто делает responsive-adaptive
Скилл предлагает систему правил для UI-анимаций вместо статичных таймингов. Длительность переходов связывается с контекстом: на тач-экранах время реакции урезается на 25%, а на мобильных вьюпортах — на 20% по сравнению с десктопом. Для длинных смещений время увеличивается по формуле с квадратным корнем, чтобы движение не казалось чересчур резким.
Правила адаптируют классические принципы анимации под веб. Подготовка к действию делается короче для сенсорного ввода, вторичные действия на смартфонах убираются для экономии ресурсов, а при prefers-reduced-motion: reduce анимации либо сбрасываются до 0.01ms, либо заменяются мягким затуханием прозрачности без сдвигов через transform.
Если не прописать токены длительности через CSS-переменные в :root, правила придётся дублировать вручную в каждом селекторе.
Какие задачи решает
- рассчитать длительность смещения элемента по формуле от дистанции
- ускорить анимации интерфейса для тач-скринов и мобильных экранов
- настроить плавное затухание для режима prefers-reduced-motion
- упростить вторичные анимации для слабых мобильных устройств
Примеры запросов агенту
- Настрой адаптивные CSS-переменные длительности анимаций для мобильных и десктопных экранов
- Добавь функцию расчёта длительности анимации с учётом дистанции смещения элемента
- Перепиши CSS переходов с поддержкой prefers-reduced-motion без transform
Как установить responsive-adaptive
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill responsive-adaptive -a claude-code2Вручную: положить файлы
~/.claude/skills/responsive-adaptive/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/responsive-adaptive/
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill responsive-adaptive -a codex2Вручную: положить файлы
.agents/skills/responsive-adaptive/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill responsive-adaptive -a cursor2Вручную: положить файлы
.cursor/skills/responsive-adaptive/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles responsive-adaptive2Вручную: положить файлы
.github/skills/responsive-adaptive/SKILL.md1Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill responsive-adaptive -a gemini-cli2Командой платформы
gemini skills install https://github.com/dylantarre/animation-principles --path skills/10-by-time-scale/responsive-adaptiveВручную: положить файлы
.devin/skills/responsive-adaptive/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill responsive-adaptive -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о responsive-adaptive
Как установить responsive-adaptive в Claude Code?
Выполните команду npx skills add dylantarre/animation-principles --skill responsive-adaptive -a claude-code. Файл скилла сохранится по пути ~/.claude/skills/responsive-adaptive/SKILL.md.
Что делает responsive-adaptive?
Он задаёт правила масштабирования таймингов интерфейсной анимации под тип устройства, размер экрана и предпочтения доступности.
Как скилл обрабатывает режим prefers-reduced-motion?
В правилах предлагается либо сбрасывать время анимации до 0.01ms, либо оставлять мягкий переход по прозрачности на 100ms с полным отключением свойств transform.
Исходный текст
SKILL.md · MIT
---
name: responsive-adaptive
description: Use when building context-dependent animations - duration that changes based on device, distance, user preference, or interaction context
---
# Responsive & Adaptive Timing
Responsive timing adapts duration to **context**: device capability, travel distance, user preferences, and interaction type. One duration doesn't fit all situations.
## Disney Principles for Adaptive Motion
### Context-Aware Application
**Squash & Stretch**: Scale with device - more subtle on mobile (less screen real estate for deformation).
**Anticipation**: Shorter on touch devices - touch users expect faster response than mouse users.
**Staging**: Adapt to viewport - smaller screens need more focused staging, less simultaneous motion.
**Straight Ahead/Pose to Pose**: Same approach, scaled duration - poses stay, timing adjusts.
**Follow Through**: Proportional to distance - longer travel = more follow-through time.
**Slow In/Slow Out**: Adjust curve intensity - faster animations need sharper easing.
**Arcs**: Same paths, different speeds - arc shape remains, traversal time changes.
**Secondary Action**: Reduce on mobile - fewer simultaneous animations for performance.
**Timing**: THE adaptive variable - timing changes, principles stay.
**Exaggeration**: Less on smaller screens - proportional to viewport/element size.
**Solid Drawing**: Performance-aware - reduce 3D transforms on weaker devices.
**Appeal**: Context-appropriate - what feels right on desktop may feel slow on mobile.
## Adaptive Strategies
### Distance-Based Duration
```css
/* Base duration for reference distance */
--base-duration: 300ms;
--base-distance: 100px;
/* Duration scales with distance */
/* 50px travel = 200ms, 200px travel = 450ms */
```
```javascript
function getDuration(distance) {
const baseDuration = 300;
const baseDistance = 100;
return Math.min(600, baseDuration * Math.sqrt(distance / baseDistance));
}
```
### Device-Based Duration
```css
/* Desktop - full duration */
.transition { transition-duration: 400ms; }
/* Tablet - slightly faster */
@media (max-width: 1024px) {
.transition { transition-duration: 350ms; }
}
/* Mobile - faster for perceived responsiveness */
@media (max-width: 768px) {
.transition { transition-duration: 250ms; }
}
```
### Preference-Based Duration
```css
/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
.transition {
transition-duration: 0.01ms !important;
animation-duration: 0.01ms !important;
}
}
/* Reduce motion, don't eliminate */
@media (prefers-reduced-motion: reduce) {
.transition {
transition-duration: 100ms;
transform: none; /* Only opacity fades */
}
}
```
## Context Rules
| Context | Duration Adjustment |
|---------|---------------------|
| Touch device | -25% from desktop |
| Small viewport | -20% from desktop |
| Large travel distance | +50% base |
| Small travel distance | -30% base |
| User prefers reduced | Instant or minimal |
| Low power mode | -50% or disabled |
| High-frequency action | Use minimum duration |
| First-time view | Full duration |
| Repeat interaction | Reduced duration |
## Implementation Pattern
```css
:root {
--duration-instant: 50ms;
--duration-fast: 150ms;
--duration-normal: 300ms;
--duration-slow: 500ms;
}
@media (max-width: 768px) {
:root {
--duration-fast: 100ms;
--duration-normal: 200ms;
--duration-slow: 350ms;
}
}
@media (prefers-reduced-motion: reduce) {
:root {
--duration-instant: 0ms;
--duration-fast: 0ms;
--duration-normal: 100ms;
--duration-slow: 150ms;
}
}
```
## Key Insight
Great animation adapts like typography adapts - what works at one size/context may not work at another. Build **systems**, not fixed values. Test across contexts. Duration is a variable, not a constant.
© dylantarre · MIT · dylantarre/animation-principles