Skip to main content
skill CX Codex

attention-grabbers — Claude Code skill: animations that pull focus

A skill that tells your coding agent how to build badge pulses, error shakes and feature highlights using Disney's animation principles.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add dylantarre/animation-principles --skill attention-grabbers -a claude-code
Open on GitHub

What attention-grabbers does

This skill covers motion meant to draw the eye: notification badges, dots, error shakes, new-feature highlights, promo banners. It walks through Disney's 12 principles as they apply here — squash & stretch for a pulsing scale, anticipation before the snap, staging for placement, slow in/slow out so pulses don't feel jerky.

Timing is spelled out in a table: a single attention grab runs 300–500ms, a repeating pulse 2000–3000ms, an urgent one 1000–1500ms, with decay after 3–5 cycles or 10 seconds. Ready-made CSS patterns ship with it: pulse, glow, shake, ring, each with keyframes, plus a JavaScript example using element.animate() that stops itself via setTimeout.

The rules are strict. One attention animation on screen at a time, auto-stop after 3–5 cycles, always a way to dismiss permanently, and a static indicator under prefers-reduced-motion. Urgent alerts need an audio or haptic alternative. If your UI already blinks three badges at once, that's a reason to run this skill and see what it flags.

What it helps with

  • pulse a notification badge
  • pick timing for an error shake
  • highlight a new feature without annoying users
  • auto-stop an attention animation
  • handle prefers-reduced-motion in attention motion

Example prompts for the agent

  • pulse the notification badge using attention-grabbers
  • add a shake to the field on validation error
  • highlight the new toolbar button, but stop after 6 seconds

How to install attention-grabbers

1Skills CLI (Vercel)

npx skills add dylantarre/animation-principles --skill attention-grabbers -a claude-code

2Manually: put the files in place

~/.claude/skills/attention-grabbers/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/attention-grabbers/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about attention-grabbers

How do I install attention-grabbers in Claude?

Run npx skills add dylantarre/animation-principles --skill attention-grabbers -a claude-code. The skill lands in ~/.claude/skills/attention-grabbers/SKILL.md.

What does attention-grabbers do?

It guides the agent through building focus-drawing motion: pulses, shakes, glows. It applies Disney's 12 principles and gives timings with CSS examples.

What limits does the skill set?

One attention animation at a time, auto-stop after 3–5 cycles, a permanent dismiss option, and a static indicator under prefers-reduced-motion.

Source text

SKILL.md · MIT
---
name: attention-grabbers
description: Use when drawing user focus - notification badges, new feature highlights, error callouts, promotional banners, or any animation meant to attract attention.
---

# Attention-Grabbing Animations

Apply Disney's 12 principles to focus-drawing motion.

## Principle Application

**Squash & Stretch**: Pulsing scale draws attention. 1.0 → 1.1 → 1.0 cycle catches peripheral vision.

**Anticipation**: Brief pause before attention animation. Let it build then release.

**Staging**: Position attention elements where users will see them. Corner badges, inline highlights.

**Straight Ahead vs Pose-to-Pose**: Design attention states: rest, active/pulsing, acknowledged.

**Follow Through & Overlapping**: Badge pulses, then count updates. Stagger the attention signals.

**Slow In/Slow Out**: Ease in/out on pulses. Smooth oscillation is less jarring than sharp bounces.

**Arcs**: Shake animations follow arc patterns. Left-right with slight vertical oscillation.

**Secondary Action**: Pulse + glow + color shift for maximum attention (use sparingly).

**Timing**:
- Single attention grab: 300-500ms
- Repeating pulse: 2000-3000ms cycle
- Urgent pulse: 1000-1500ms cycle
- Decay: Stop after 3-5 cycles or 10 seconds

**Exaggeration**: This is where exaggeration shines. Scale to 1.2, bright colors, bold motion.

**Solid Drawing**: Attention elements must still feel part of the UI, not floating or detached.

**Appeal**: Attention should feel like helpful notification, not aggressive demand.

## Timing Recommendations

| Attention Type | Duration | Cycles | Decay |
|---------------|----------|--------|-------|
| Badge Pulse | 300ms | 2-3 | Stop after animation |
| Notification Dot | 2000ms | 3 | 6 seconds total |
| New Feature | 500ms | 2 | Stay subtle |
| Error Shake | 400ms | 1 | None |
| Urgent Alert | 1000ms | infinite | Until dismissed |
| Promotional | 3000ms | 2 | 6 seconds |

## Implementation Patterns

```css
/* Pulse attention */
.badge-pulse {
  animation: pulse 2000ms ease-in-out 3;
}

@keyframes pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.15); }
}

/* Subtle glow */
.glow-attention {
  animation: glow 2000ms ease-in-out 3;
}

@keyframes glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); }
  50% { box-shadow: 0 0 0 8px rgba(59, 130, 246, 0.3); }
}

/* Error shake */
.shake {
  animation: shake 400ms ease-in-out;
}

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  20%, 60% { transform: translateX(-8px); }
  40%, 80% { transform: translateX(8px); }
}

/* Ring animation (notification) */
.ring {
  animation: ring 2500ms ease-in-out 2;
}

@keyframes ring {
  0%, 100% { transform: rotate(0); }
  10%, 30% { transform: rotate(10deg); }
  20%, 40% { transform: rotate(-10deg); }
  50%, 100% { transform: rotate(0); }
}
```

## Attention Budget

```javascript
// Auto-stop attention after timeout
const attention = element.animate([
  { transform: 'scale(1)' },
  { transform: 'scale(1.15)' },
  { transform: 'scale(1)' }
], {
  duration: 2000,
  iterations: 3
});

// Or with CSS
setTimeout(() => {
  element.classList.remove('attention');
}, 6000);
```

## Key Rules

1. Maximum 1 attention animation visible at a time
2. Auto-stop after 3-5 cycles (10 seconds max)
3. Provide way to permanently dismiss
4. Never use for non-essential content
5. `prefers-reduced-motion`: static indicator only, no animation
6. Urgent animations must have audio/haptic alternative for accessibility

© dylantarre · MIT · dylantarre/animation-principles

Similar skills

Everything for Frontend and UI →

From the same set86

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor