icons-badges — Claude Code skill: animate icons and badges
A skill for animating icons, badges, avatars and status indicators. Useful when small UI elements need to feel responsive and give feedback.
npx skills add dylantarre/animation-principles --skill icons-badges -a claude-codeWhat icons-badges does
The skill maps Disney's 12 animation principles onto small UI elements: icons, badges, avatars, status indicators. A heart squashes and stretches on a like tap, a notification badge bounces on arrival, a bell swings along a pendulum arc. Your agent gets a set of rules for picking motion per element instead of guessing.
Inside are the principles with timings plus ready CSS snippets. Icon hover uses ease-out, click uses ease-in-out, badge bounce uses cubic-bezier(0.68, -0.55, 0.27, 1.55) for overshoot. There are @keyframes for the badge bounce, a status pulse and a bell ring. It works through transform, opacity, animation, and for SVG through fill, stroke and filter.
One limit worth knowing: this is principles and examples, not a component library. Functional icons like menu and close should stay subtle, while celebratory ones — confetti, hearts — can go big. If your SVGs have heavy strokes, check that the icon stays crisp on every frame; the solid drawing principle is exactly about that.
What it helps with
- make a like icon react on tap
- add a bounce to a notification counter
- pulse a status indicator
- pick timing and easing for icon hover
- sync motion across a multi-part icon
Example prompts for the agent
- Animate the like icon with a squash on press and a springy bounce back
- Give the notification badge a bounce with overshoot when it appears
- Set up a pulsing status indicator and a bell ring along an arc
How to install icons-badges
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill icons-badges -a claude-code2Manually: put the files in place
~/.claude/skills/icons-badges/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/icons-badges/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill icons-badges -a codex2Manually: put the files in place
.agents/skills/icons-badges/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill icons-badges -a cursor2Manually: put the files in place
.cursor/skills/icons-badges/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles icons-badges2Manually: put the files in place
.github/skills/icons-badges/SKILL.md1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill icons-badges -a gemini-cli2Platform CLI
gemini skills install https://github.com/dylantarre/animation-principles --path skills/07-by-ui-element/icons-badgesManually: put the files in place
.devin/skills/icons-badges/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill icons-badges -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 icons-badges
How do I install icons-badges in Claude?
Run npx skills add dylantarre/animation-principles --skill icons-badges -a claude-code. The skill file lands at ~/.claude/skills/icons-badges/SKILL.md.
What does icons-badges do?
It gives your agent rules for animating small UI elements: icons, badges, avatars, status indicators. It ships the 12 animation principles with timings and CSS examples.
Which platforms does the skill support?
Claude, Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode. Each platform has its own install command and skill file path.
Source text
SKILL.md · MIT
---
name: icons-badges
description: Use when animating icons, badges, avatars, status indicators, or small visual elements to add personality and feedback
---
# Icon & Badge Animation Principles
Apply Disney's 12 principles to small UI elements for personality and meaningful feedback.
## Principles Applied to Icons
### 1. Squash & Stretch
Heart icons can squash/stretch on "like" tap. Notification badges can bounce with squash on arrival. Adds life to small elements.
### 2. Anticipation
Before icon action, brief scale down (0.9) for 50ms. Bell can tilt back before ringing forward. Prepares for action.
### 3. Staging
Active/important icons should be visually prominent: color, size, or animation. Badges use contrasting colors to stand out.
### 4. Straight Ahead & Pose to Pose
Simple icons use pose-to-pose (two states). Complex icon animations (morphing) can use straight-ahead for organic transitions.
### 5. Follow Through & Overlapping Action
Bell ring continues after user interaction stops. Badge number updates before badge bounce settles. Multi-part icons offset timing.
### 6. Ease In & Ease Out
Icon hover: `ease-out`. Icon click: `ease-in-out`. Bounce: `cubic-bezier(0.68, -0.55, 0.27, 1.55)` for overshoot.
### 7. Arcs
Bell swinging follows pendulum arc. Refresh icons spin in true circular arcs. Arrows can arc during state changes.
### 8. Secondary Action
While icon scales (primary), color changes (secondary), glow pulses (tertiary). Badge count changes while badge bounces.
### 9. Timing
- Hover scale: 100-150ms
- Click feedback: 50-100ms
- Badge bounce: 300-400ms
- Bell ring: 400-600ms
- Status pulse: 1500-2500ms
- Morph transition: 250-350ms
### 10. Exaggeration
Celebratory icons (confetti, hearts) can be very animated. Functional icons (menu, close) should be subtle. Match purpose.
### 11. Solid Drawing
Icons must remain crisp at all animation frames. Maintain stroke consistency. Badge numbers should be legible during motion.
### 12. Appeal
Animated icons add personality. A bouncing notification feels alive. A pulsing status feels responsive. Small touches matter greatly.
## CSS Implementation
```css
.icon-btn:hover .icon {
transform: scale(1.15);
transition: transform 150ms ease-out;
}
.icon-btn:active .icon {
transform: scale(0.9);
transition: transform 50ms ease-in;
}
.badge {
animation: badgeBounce 400ms cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
@keyframes badgeBounce {
0% { transform: scale(0); }
50% { transform: scale(1.2); }
100% { transform: scale(1); }
}
.status-indicator {
animation: pulse 2000ms ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.6; transform: scale(1.1); }
}
.bell-icon:hover {
animation: ring 500ms ease-in-out;
}
@keyframes ring {
0%, 100% { transform: rotate(0); }
20%, 60% { transform: rotate(15deg); }
40%, 80% { transform: rotate(-15deg); }
}
```
## Key Properties
- `transform`: scale, rotate
- `opacity`: pulse effects
- `animation`: complex sequences
- `fill`/`stroke`: SVG color changes
- `filter`: glow effects
© dylantarre · MIT · dylantarre/animation-principles