modals-dialogs — Claude Code skill: what it does, how to install
Guides AI coding agents on animating dialogs, modals, and popovers using Disney's animation principles. Brings structured timing to entrance and exit effects.
npx skills add dylantarre/animation-principles --skill modals-dialogs -a claude-codeWhat modals-dialogs does
This skill instructs the agent on handling transitions for dialogs, popovers, and overlays. Instead of snap-in popups, it translates classic motion principles to CSS. Modals expand from scale 0.9 to 1.0 on entrance, while the backdrop dims to 0.5–0.7 opacity and blurs by 4–8px.
The guide specifies exact timings. Backdrop fade takes 200–250ms, the modal opens in 250–350ms, and it exits faster at 200ms. For easing, it prescribes cubic-bezier(0.16, 1, 0.3, 1). Inside the container, content fades in with a 50–100ms offset.
Exit transitions must run faster than entrances, or the modal feels sticky.
What it helps with
- animate modal and popover entrances in CSS
- stagger form content inside newly opened dialogs
- configure backdrop blur and dimming transitions
- set up error shake keyframes for invalid submissions
Example prompts for the agent
- Animate the login modal enter and exit transitions following the skill guidelines
- Add CSS keyframes for this popover using the recommended cubic-bezier curve
- Stagger the form inputs inside the checkout dialog as it opens
How to install modals-dialogs
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill modals-dialogs -a claude-code2Manually: put the files in place
~/.claude/skills/modals-dialogs/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/modals-dialogs/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill modals-dialogs -a codex2Manually: put the files in place
.agents/skills/modals-dialogs/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill modals-dialogs -a cursor2Manually: put the files in place
.cursor/skills/modals-dialogs/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles modals-dialogs2Manually: put the files in place
.github/skills/modals-dialogs/SKILL.md1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill modals-dialogs -a gemini-cli2Platform CLI
gemini skills install https://github.com/dylantarre/animation-principles --path skills/07-by-ui-element/modals-dialogsManually: put the files in place
.devin/skills/modals-dialogs/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill modals-dialogs -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 modals-dialogs
How do I install modals-dialogs in Claude Code?
Run npx skills add dylantarre/animation-principles --skill modals-dialogs -a claude-code. The file will be placed in ~/.claude/skills/modals-dialogs/SKILL.md.
What does modals-dialogs do?
It provides animation guidelines and CSS parameters for modal dialogs and overlays. The skill sets precise durations, easing curves, and staging rules for container and backdrop elements.
What animation timings does this skill prescribe?
It uses 200–250ms for the backdrop fade, 250–350ms for opening the dialog, and 200ms for closing. Content items stagger by 30–50ms each, while error shake takes 300ms.
Source text
SKILL.md · MIT
---
name: modals-dialogs
description: Use when animating modals, dialogs, popovers, or overlay content to create smooth entrances and exits
---
# Modal & Dialog Animation Principles
Apply Disney's 12 principles to modals for seamless, non-jarring transitions.
## Principles Applied to Modals
### 1. Squash & Stretch
Modal can scale from 0.9 to 1.0 on enter, creating a subtle expansion feel. Exit reverses. Keep it subtle to maintain professionalism.
### 2. Anticipation
Trigger element (button) should react before modal appears. Brief scale-down of trigger, then modal emerges from that point.
### 3. Staging
Backdrop dims (0.5-0.7 opacity) to focus attention on modal. Background content can blur slightly (4-8px). Modal is the star.
### 4. Straight Ahead & Pose to Pose
Define states: hidden, entering, visible, exiting. Clear keyframes for each. Pose-to-pose ensures predictable, controllable animation.
### 5. Follow Through & Overlapping Action
Modal container arrives first, content fades in 50-100ms after. Close button can have slight bounce at end. Stagger form fields.
### 6. Ease In & Ease Out
Enter: `ease-out` (decelerates in). Exit: `ease-in` (accelerates out). `cubic-bezier(0.16, 1, 0.3, 1)` for smooth, bouncy enter.
### 7. Arcs
If modal originates from a button, arc toward center rather than straight line. Creates more organic movement path.
### 8. Secondary Action
While modal scales in (primary), backdrop fades (secondary), content staggers (tertiary). Each supports without competing.
### 9. Timing
- Backdrop fade: 200-250ms
- Modal enter: 250-350ms
- Modal exit: 200ms (faster out)
- Content stagger: 30-50ms per item
- Shake on error: 300ms
### 10. Exaggeration
Dramatic entrance for important alerts. Slight overshoot scale (1.02) before settling at 1.0. Error modals can shake briefly.
### 11. Solid Drawing
Modal shadows should match interface light source. Maintain consistent border-radius. Content should never overflow during animation.
### 12. Appeal
Smooth entrances feel polished. Origin-point animation feels connected. Abrupt modals feel jarring. Invest in modal transitions.
## CSS Implementation
```css
.modal-backdrop {
transition: opacity 250ms ease-out;
}
.modal {
animation: modalEnter 300ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes modalEnter {
from {
opacity: 0;
transform: scale(0.9) translateY(20px);
}
to {
opacity: 1;
transform: scale(1) translateY(0);
}
}
```
## Key Properties
- `transform`: scale, translate (origin point)
- `opacity`: fade in/out
- `backdrop-filter`: blur background
- `animation`: keyframe sequences
- `transform-origin`: source point
© dylantarre · MIT · dylantarre/animation-principles