loaders-spinners — Claude Code skill: what it does, how to install
Guides your agent to build spinners, progress bars, and skeleton screens using Disney's 12 principles of animation.
npx skills add dylantarre/animation-principles --skill loaders-spinners -a claude-codeWhat loaders-spinners does
This skill instructs the coding assistant to design UI loading states using classic animation logic. It translates concepts like squash and stretch to bouncing dots, anticipation to progress bars nearing completion, and secondary action to shimmering skeleton placeholders.
The skill defines specific timing constraints directly in CSS. A spinner rotation is kept between 800ms and 1200ms, bounce cycles run across 500ms to 800ms, and skeleton shimmer spans 1500ms to 2500ms. Multi-element dot sequences rely on 100ms to 150ms stagger delays to maintain rhythm.
Animation style adapts to product voice: professional interfaces receive subtle continuous spins, while playful applications get elastic transitions.
What it helps with
- configure accurate timing intervals for spinners and shimmers
- create staggered bouncing dot loaders with CSS keyframes
- build skeleton screens using animated background gradients
- apply squash and stretch physics to loader elements
Example prompts for the agent
- Write CSS for a three-dot bounce loader with staggered animation delays.
- Build a skeleton screen shimmer animation for a profile card.
- Create a continuous SVG spinner with a 1000ms linear rotation.
How to install loaders-spinners
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loaders-spinners -a claude-code2Manually: put the files in place
~/.claude/skills/loaders-spinners/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/loaders-spinners/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loaders-spinners -a codex2Manually: put the files in place
.agents/skills/loaders-spinners/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loaders-spinners -a cursor2Manually: put the files in place
.cursor/skills/loaders-spinners/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles loaders-spinners2Manually: put the files in place
.github/skills/loaders-spinners/SKILL.md1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loaders-spinners -a gemini-cli2Platform CLI
gemini skills install https://github.com/dylantarre/animation-principles --path skills/07-by-ui-element/loaders-spinnersManually: put the files in place
.devin/skills/loaders-spinners/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill loaders-spinners -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 loaders-spinners
How to install loaders-spinners in Claude Code?
Run npx skills add dylantarre/animation-principles --skill loaders-spinners -a claude-code in your terminal.
What UI components does loaders-spinners cover?
It covers circular spinners, bouncing dot loaders, filling progress bars, and skeleton screen placeholders.
What duration ranges does the skill suggest for loaders?
A spinner rotation targets 800 to 1200ms, bounce intervals take 500 to 800ms, and skeleton shimmer lasts 1500 to 2500ms.
Source text
SKILL.md · MIT
---
name: loaders-spinners
description: Use when creating loading indicators, spinners, progress bars, or skeleton screens to communicate system status
---
# Loader & Spinner Animation Principles
Apply Disney's 12 principles to loading indicators for engaging, informative wait experiences.
## Principles Applied to Loaders
### 1. Squash & Stretch
Bouncing dot loaders should squash on landing, stretch while rising. Creates life-like, playful motion.
### 2. Anticipation
Before progress completes, bar can briefly pause or slow. Spinners can decelerate before stopping. Signals completion coming.
### 3. Staging
Loader should be clearly visible but not block content unnecessarily. Skeleton screens stage where real content will appear.
### 4. Straight Ahead & Pose to Pose
Organic loaders (bouncing dots) benefit from straight-ahead. Progress bars use pose-to-pose (0% to 100% keyframes).
### 5. Follow Through & Overlapping Action
Multi-part loaders should have elements offset in timing. Dot 1 bounces, dot 2 follows 100ms later. Creates rhythm.
### 6. Ease In & Ease Out
Spinning: use `ease-in-out` per rotation cycle or `linear` for continuous. Bouncing: `ease-in` up, `ease-out` down.
### 7. Arcs
Orbital loaders should follow true circular arcs. Bouncing elements follow parabolic arcs like real physics.
### 8. Secondary Action
While spinner rotates (primary), glow pulses (secondary). Skeleton shimmer is secondary to skeleton shape.
### 9. Timing
- Spinner full rotation: 800-1200ms
- Bounce cycle: 500-800ms
- Skeleton shimmer: 1500-2500ms
- Progress bar smooth updates: 200ms
- Dot stagger: 100-150ms
- Pulse: 1000-2000ms
### 10. Exaggeration
Playful brands can use bouncy, elastic loaders. Professional contexts need subtle, smooth spinners. Match brand energy.
### 11. Solid Drawing
Maintain consistent stroke widths. Circular paths should be true circles. Progress bars should fill evenly.
### 12. Appeal
Engaging loaders reduce perceived wait time. Boring spinners feel slower. A delightful loader can turn frustration into momentary joy.
## CSS Implementation
```css
.spinner {
animation: spin 1000ms linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.bounce-dot {
animation: bounce 600ms ease-in-out infinite alternate;
}
.bounce-dot:nth-child(2) { animation-delay: 100ms; }
.bounce-dot:nth-child(3) { animation-delay: 200ms; }
@keyframes bounce {
from { transform: translateY(0) scaleY(1); }
to { transform: translateY(-20px) scaleY(0.9); }
}
.skeleton {
background: linear-gradient(90deg, #eee 25%, #f5f5f5 50%, #eee 75%);
background-size: 200% 100%;
animation: shimmer 2000ms infinite;
}
@keyframes shimmer {
to { background-position: -200% 0; }
}
```
## Key Properties
- `transform`: rotate, translateY, scale
- `animation`: infinite loops
- `background-position`: shimmer effects
- `stroke-dashoffset`: SVG spinners
- `opacity`: pulsing effects
© dylantarre · MIT · dylantarre/animation-principles