slow-in-out-mastery — Claude Code skill: easing curves
A skill that tells your coding agent which acceleration and deceleration curve to use in UI, character or game animation.
npx skills add dylantarre/animation-principles --skill slow-in-out-mastery -a claude-codeWhat slow-in-out-mastery does
The skill covers the slow in / slow out principle: real objects speed up from rest and slow down before stopping instead of moving at a constant rate. Your agent gets the spacing theory behind it, the common easing functions (ease out, ease in, ease in out, linear, custom bezier), and how easing interacts with timing, anticipation, follow through and squash/stretch.
From there it splits by domain: page transitions, modals, buttons, loaders and hover states in UI work; jumps, head turns, blinks and weight shifts in character animation; text reveals and logo work in motion graphics; camera movement and control response in games. A separate section covers bounce, elastic and back — curves that overshoot and settle.
The practical half is a selection heuristic: ease out for element appearances and responses to user action, ease in for exits, ease in out for animations nobody triggered. It also lists the usual mistakes — linear motion everywhere, curves that are too soft, easing pointed the wrong way. The skill suggests starting with ease out for most UI animation. It is a written guide, so there are no scripts to run; custom bezier values you still work out yourself.
What it helps with
- pick a curve for a modal appearing on screen
- explain why linear motion looks mechanical
- separate easing for entrances and exits
- tune a character jump with acceleration and deceleration
- choose between bounce and elastic when overshoot is wanted
Example prompts for the agent
- pick an easing for the modal entrance, it should feel responsive
- why does my button animation look robotic — what is wrong with the curve
- build a character jump: accelerate off the ground, decelerate into the peak
How to install slow-in-out-mastery
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill slow-in-out-mastery -a claude-code2Manually: put the files in place
~/.claude/skills/slow-in-out-mastery/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/slow-in-out-mastery/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill slow-in-out-mastery -a codex2Manually: put the files in place
.agents/skills/slow-in-out-mastery/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill slow-in-out-mastery -a cursor2Manually: put the files in place
.cursor/skills/slow-in-out-mastery/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles slow-in-out-mastery2Manually: put the files in place
.github/skills/slow-in-out-mastery/SKILL.md1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill slow-in-out-mastery -a gemini-cli2Platform CLI
gemini skills install https://github.com/dylantarre/animation-principles --path skills/11-by-principle-focus/slow-in-out-masteryManually: put the files in place
.devin/skills/slow-in-out-mastery/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill slow-in-out-mastery -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 slow-in-out-mastery
How do I install slow-in-out-mastery in Claude?
Run npx skills add dylantarre/animation-principles --skill slow-in-out-mastery -a claude-code. The skill file then lives at ~/.claude/skills/slow-in-out-mastery/SKILL.md.
What does slow-in-out-mastery do?
It gives the agent theory and heuristics for easing curves: which function fits entrances, exits and autonomous animations, and how easing relates to timing and follow through.
Which platforms can run this skill?
Besides Claude it installs for Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode — same command, only the -a flag changes.
Source text
SKILL.md · MIT
--- name: slow-in-out-mastery description: Use when designing easing curves, controlling motion pacing, creating natural acceleration/deceleration, or making movements feel physically grounded. --- # Slow In / Slow Out Mastery ## The Physics Principle Objects in the real world don't move at constant speeds—they accelerate from rest and decelerate to stops. Slow in/slow out (also called ease in/ease out) captures this fundamental truth. Without it, animation looks mechanical. With it, motion feels alive. ## Core Theory **Slow Out** (Ease Out): More drawings clustered at the start of a movement. The object accelerates away from its starting position gradually. **Slow In** (Ease In): More drawings clustered at the end of a movement. The object decelerates into its final position gradually. **Linear motion**: Equal spacing between positions. Rare in nature, useful for mechanical elements or stylistic choice. ## The Spacing Principle Traditional animators controlled this through drawing spacing: - **Tight spacing** = slow movement (drawings close together) - **Wide spacing** = fast movement (drawings far apart) Digital animators control this through easing curves—mathematical functions that describe how values change over time. ## Common Easing Functions - **Ease Out**: Fast start, slow end (70% of UI animations) - **Ease In**: Slow start, fast end (exits, departures) - **Ease In Out**: Slow start and end (elegant, deliberate) - **Linear**: Constant rate (mechanical, looping) - **Custom bezier**: Precise control for specific feels ## Interaction with Other Principles **Timing is modified by easing**: The same duration feels different with different easing. Ease out feels faster than ease in at identical durations. **Anticipation often uses ease in**: The wind-up accelerates before the fast action. **Follow through uses ease out**: Settling motion decelerates to rest. **Squash/stretch intensity follows easing**: More deformation during fast phases, less during slow phases. ## Domain Applications ### UI/Motion Design - **Page transitions**: Ease out for entrances (fast appearance, settle), ease in for exits - **Modals**: Ease out scale-up for friendly, non-jarring appearance - **Buttons**: Ease out on press feedback (immediate response, smooth settle) - **Loading**: Linear for progress bars (predictable), ease for spinners (organic) - **Hover states**: Quick ease out to start, ease in out for smooth feel ### Character Animation - **Jumps**: Slow out from ground (acceleration), slow in to peak (deceleration), fast middle - **Head turns**: Slow out from rest, slow in to new direction - **Blinks**: Fast down (almost linear), slow out up (lids dragging) - **Weight shifts**: Heavy easing reflects mass ### Motion Graphics - **Text reveals**: Staggered ease outs create cascading arrivals - **Logo animations**: Carefully crafted curves define brand personality - **Data visualization**: Ease out for growth, ease in for decrease ### Game Feel - **Camera movement**: Ease in out for cinematic, quick ease out for responsive - **Character control**: Ease curves define how "tight" or "floaty" movement feels - **Impact effects**: Sharp ease in creates punch ## Common Mistakes 1. **Linear everything**: Motion feels robotic and sterile 2. **Too much easing**: Overly soft motion feels sluggish, unresponsive 3. **Wrong easing direction**: Ease in on entrances feels reluctant; ease out on exits feels like the element doesn't want to leave 4. **Ignoring context**: Playful UIs need bouncier curves; professional UIs need subtler easing ## The Bounce and Elastic Extensions Beyond basic easing: - **Bounce**: Overshoot with diminishing oscillation (playful, energetic) - **Elastic**: Overshoot with wobble (stretchy, cartoony) - **Back**: Slight pullback before motion (adds anticipation) ## The 80/20 Rule For most UI work: use ease out for 80% of animations (elements responding to user action). Ease out communicates responsiveness—"I heard you and I'm moving." Reserve ease in for departures and de-emphasis. ## Implementation Heuristic Default to ease out (fast start, slow end) for element appearances and responses. Use ease in for exits. Use ease in out for autonomous animations (not triggered by user). Adjust curve intensity based on brand personality—aggressive curves for dynamic brands, subtle curves for calm brands.
© dylantarre · MIT · dylantarre/animation-principles