Claude-skill-registry feedback-indicators
Use when confirming user actions - success checkmarks, error alerts, form validation, save confirmations, or any animation acknowledging what the user did.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/feedback-indicators" ~/.claude/skills/majiayu000-claude-skill-registry-feedback-indicators && rm -rf "$T"
skills/data/feedback-indicators/SKILL.mdFeedback Indicator Animations
Apply Disney's 12 principles to action confirmation animations.
Principle Application
Squash & Stretch: Success checkmarks can scale with overshoot. Compress on draw, expand on complete.
Anticipation: Brief gather before feedback appears. 50ms of preparation before the confirmation.
Staging: Feedback appears at the action location. Button shows checkmark, field shows validation.
Straight Ahead vs Pose-to-Pose: Define feedback states: neutral → processing → success/error.
Follow Through & Overlapping: Icon animates, then label appears. Stagger confirmation elements.
Slow In/Slow Out: Success: ease-out (confident arrival). Error: ease-in-out (shake settles).
Arcs: Checkmarks draw in arcs, not straight lines. Error X's cross naturally.
Secondary Action: Checkmark draws + color shifts + scale bounces for rich feedback.
Timing:
- Instant feedback: 100-200ms (form validation)
- Success confirmation: 300-500ms (checkmark draw)
- Error indication: 400ms (shake + message)
- Auto-dismiss: 2000-4000ms after appearance
Exaggeration: Success deserves celebration. Overshoot scale to 1.2, bold colors, confident motion.
Solid Drawing: Feedback icons must be clear at a glance. Recognition in 100ms or less.
Appeal: Positive feedback should feel rewarding. Negative feedback firm but not punishing.
Timing Recommendations
| Feedback Type | Duration | Auto-dismiss | Easing |
|---|---|---|---|
| Inline Validation | 150ms | No | ease-out |
| Checkmark Draw | 400ms | 3000ms | ease-out |
| Success Toast | 300ms | 4000ms | ease-out |
| Error Shake | 400ms | No | ease-in-out |
| Error Toast | 300ms | 6000ms | ease-out |
| Save Indicator | 200ms | 2000ms | ease-out |
Implementation Patterns
/* Checkmark draw */ .checkmark { stroke-dasharray: 50; stroke-dashoffset: 50; animation: draw-check 400ms ease-out forwards; } @keyframes draw-check { to { stroke-dashoffset: 0; } } /* Success with scale */ .success-icon { animation: success 500ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards; } @keyframes success { 0% { transform: scale(0); opacity: 0; } 60% { transform: scale(1.2); opacity: 1; } 100% { transform: scale(1); opacity: 1; } } /* Error shake */ .error-shake { animation: shake 400ms ease-in-out; } @keyframes shake { 0%, 100% { transform: translateX(0); } 20%, 60% { transform: translateX(-6px); } 40%, 80% { transform: translateX(6px); } } /* Inline validation */ .field-valid { animation: valid-pop 200ms ease-out; } @keyframes valid-pop { 0% { transform: scale(0.8); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
SVG Checkmark Pattern
<svg class="checkmark" viewBox="0 0 24 24"> <circle cx="12" cy="12" r="10" fill="#10B981"/> <path class="check-path" d="M7 13l3 3 7-7" stroke="white" stroke-width="2" fill="none" /> </svg>
Auto-Dismiss Pattern
// Show success, auto-hide element.classList.add('success-visible'); setTimeout(() => { element.classList.remove('success-visible'); element.classList.add('success-hidden'); }, 3000);
Key Rules
- Feedback must appear within 100ms of action
- Success states: celebrate briefly, don't linger
- Error states: persist until user acknowledges
- Always provide text alongside icons for accessibility
: instant state, no animationprefers-reduced-motion