medium-300-500ms — Claude Code skill: 300–500ms animations
A skill that tells your coding agent how to build mid-duration animations: page transitions, modals, staggered reveals.
npx skills add dylantarre/animation-principles --skill medium-300-500ms -a claude-codeWhat medium-300-500ms does
This skill covers animations in the 300–500ms range. That window is long enough for a user to notice the motion and short enough that it does not slow the interface down. All twelve animation principles are mapped to this duration, with concrete numbers: 80–120ms of anticipation before the main action, 18–30 frames at 60fps.
The practical half is CSS. Four cubic-bezier curves are given for different jobs — smooth natural motion, an expressive entrance, a bouncy feel, dramatic deceleration. There is also a page-transition pattern and an example of staggered list items using transition-delay.
Reach for it when the animation has to communicate something: a view change, a feature reveal, a loading state finishing. If your project already has a design system with its own timing tokens, compare the values here against it. Two different motion rhythms in one interface look like a bug.
What it helps with
- pick a duration and easing curve for a page transition
- stagger the reveal of list items
- animate a multi-step modal sequence
- add bounce to a button or card without making it feel sluggish
- set timings for a chart or diagram animation
Example prompts for the agent
- Build a page transition in the 300–500ms range with easing for smooth natural motion
- Stagger the card reveal in this list with a 50ms delay between items
- Animate the modal opening at 400ms with an expressive entrance
How to install medium-300-500ms
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill medium-300-500ms -a claude-code2Manually: put the files in place
~/.claude/skills/medium-300-500ms/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/medium-300-500ms/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill medium-300-500ms -a codex2Manually: put the files in place
.agents/skills/medium-300-500ms/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill medium-300-500ms -a cursor2Manually: put the files in place
.cursor/skills/medium-300-500ms/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles medium-300-500ms2Manually: put the files in place
.github/skills/medium-300-500ms/SKILL.md1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill medium-300-500ms -a gemini-cli2Platform CLI
gemini skills install https://github.com/dylantarre/animation-principles --path skills/10-by-time-scale/medium-300-500msManually: put the files in place
.devin/skills/medium-300-500ms/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill medium-300-500ms -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about medium-300-500ms
How do I install medium-300-500ms in Claude?
Run npx skills add dylantarre/animation-principles --skill medium-300-500ms -a claude-code. The skill lands at ~/.claude/skills/medium-300-500ms/SKILL.md.
What does the medium-300-500ms skill do?
It gives the agent rules for animations between 300 and 500ms: which motion principles apply, which cubic-bezier curves to use, and how to structure page transitions and staggered children.
Which platforms support this skill?
It installs into Claude, Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode, each with its own skill file path.
Source text
SKILL.md · MIT
---
name: medium-300-500ms
description: Use when building standard animations between 300-500ms - page transitions, significant UI changes, animated illustrations that need clear communication
---
# Medium Animations (300-500ms)
The 300-500ms range is **standard animation territory**. Long enough to be watched, short enough to not impede flow. The workhorse duration for meaningful motion.
## Disney Principles at Medium Duration
### All 12 Principles Applicable
**Squash & Stretch**: Full expression - visible deformation for bouncing, elastic elements. 15-25% stretch feels natural.
**Anticipation**: Clear preparation - 80-120ms anticipation before main action. Pull back before push forward.
**Staging**: Multi-element choreography possible - primary action leads, supporting elements follow.
**Straight Ahead/Pose to Pose**: Pose to pose recommended - define key positions, let easing handle in-betweens.
**Follow Through**: Essential - overlapping action where parts settle at different rates.
**Slow In/Slow Out**: Critical for naturalism - both directions need proper easing.
**Arcs**: Natural motion paths - elements should travel on curves matching real physics.
**Secondary Action**: Multiple secondary actions - hair follows head, shadow follows object.
**Timing**: 18-30 frames at 60fps. Enough frames for nuanced motion.
**Exaggeration**: Full range available - match to brand personality and context.
**Solid Drawing**: Complex transforms work - 3D rotations, perspective shifts.
**Appeal**: Character-defining animations - this is where brand personality lives.
## Easing Recommendations
```css
/* Smooth, natural motion */
transition: all 400ms cubic-bezier(0.4, 0, 0.2, 1);
/* Expressive entrance */
transition: all 450ms cubic-bezier(0.16, 1, 0.3, 1);
/* Bouncy, playful */
transition: transform 400ms cubic-bezier(0.34, 1.56, 0.64, 1);
/* Dramatic deceleration */
transition: all 350ms cubic-bezier(0, 0.55, 0.45, 1);
```
## Best Use Cases
- Page/view transitions
- Complex modal sequences
- Animated illustrations
- Data visualization changes
- Onboarding animations
- Feature reveals
- State machine transitions
- Loading completion celebrations
## Implementation Pattern
```css
.page-enter {
opacity: 0;
transform: translateX(30px);
}
.page-enter-active {
opacity: 1;
transform: translateX(0);
transition: opacity 350ms ease-out,
transform 400ms cubic-bezier(0.16, 1, 0.3, 1);
}
/* Staggered children */
.list-item {
transition: all 400ms cubic-bezier(0.4, 0, 0.2, 1);
}
.list-item:nth-child(1) { transition-delay: 0ms; }
.list-item:nth-child(2) { transition-delay: 50ms; }
.list-item:nth-child(3) { transition-delay: 100ms; }
```
## Key Insight
Medium duration is where animation becomes **storytelling**. Users watch, understand, and remember these animations. Invest in polish here - it defines perceived quality.
© dylantarre · MIT · dylantarre/animation-principles