Skip to main content
skill CX Codex

accessibility-issues — Claude Code skill: animation that excludes

Audits motion that hurts users with vestibular disorders, cognitive overload or screen reader needs, then names the fix for each case.

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

What accessibility-issues does

The skill kicks in when animation pushes people away: motion sickness complaints, keyboard focus lost mid-transition, flashing, screen reader confusion. It maps each symptom to an animation principle and gives a correction. Excessive squash and stretch should go for prefers-reduced-motion and be replaced with opacity changes; curved paths should become linear motion for anything essential in the UI.

Inside you get problem indicators, a diagnosis per principle, quick fixes and a troubleshooting checklist. Two snippets ship with it: a CSS block under @media (prefers-reduced-motion: reduce) that cuts animation and transition durations, and a JS check through window.matchMedia.

One thing to plan for: the checklist asks you to test with a screen reader on, not just read the code. And if your project autoplays motion, the skill is blunt about it — let the user trigger the movement instead.

What it helps with

  • strip motion for users who asked for reduced motion
  • track down the transition that hides keyboard focus
  • keep flash rate below the seizure threshold
  • tell a screen reader that dynamic content changed
  • cut five moving elements down to one

Example prompts for the agent

  • Check my modal animation for accessibility issues and list what to fix
  • Users get motion sick from the parallax — run it through the accessibility-issues checklist
  • Add prefers-reduced-motion handling to this CSS using the skill's pattern

How to install accessibility-issues

1Skills CLI (Vercel)

npx skills add dylantarre/animation-principles --skill accessibility-issues -a claude-code

2Manually: put the files in place

~/.claude/skills/accessibility-issues/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/accessibility-issues/

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

Questions about accessibility-issues

How do I install accessibility-issues in Claude?

Run npx skills add dylantarre/animation-principles --skill accessibility-issues -a claude-code. The skill then lives at ~/.claude/skills/accessibility-issues/SKILL.md.

What does accessibility-issues do?

It reviews animation from the perspective of users it harms and proposes concrete edits: drop distortion, limit how many elements move at once, keep timing predictable, swap arcs for linear motion.

What do I need for the skill to work?

Nothing beyond a normal setup. It relies on the prefers-reduced-motion media query and window.matchMedia, and it recommends testing with a screen reader enabled.

Source text

SKILL.md · MIT
---
name: accessibility-issues
description: Use when animation excludes users with vestibular disorders, cognitive disabilities, or assistive technology needs
---

# Accessibility Issues

Make animations inclusive using Disney's principles thoughtfully.

## Problem Indicators
- Motion sickness complaints
- Vestibular disorder triggers
- Screen reader confusion
- Cognitive overload
- Seizure risk (flashing)
- Keyboard focus lost during animation

## Diagnosis by Principle

### Squash and Stretch
**Issue**: Excessive distortion causes disorientation
**Fix**: Reduce or eliminate squash/stretch for users with `prefers-reduced-motion`. Use opacity changes instead.

### Secondary Action
**Issue**: Too many moving elements
**Fix**: Limit to one animated element at a time. Secondary actions should be subtle or removed.

### Exaggeration
**Issue**: Dramatic motion triggers vestibular responses
**Fix**: Reduce scale, rotation, and position changes. Keep movements small and predictable.

### Timing
**Issue**: Animations too fast or too slow
**Fix**: Provide consistent, predictable timing. Avoid sudden speed changes.

### Arcs
**Issue**: Curved motion paths cause tracking difficulty
**Fix**: Use linear motion for essential UI. Save arcs for optional decorative elements.

## Quick Fixes

1. **Respect `prefers-reduced-motion`** - Always check and honor
2. **No autoplay animation** - Let users trigger motion
3. **Keep focus visible** - Never animate focus indicator away
4. **Announce changes** - Use ARIA live regions for dynamic content
5. **Provide pause controls** - For any looping animation

## Troubleshooting Checklist

- [ ] Does animation respect `prefers-reduced-motion`?
- [ ] Is there a way to pause/stop animations?
- [ ] Are state changes announced to screen readers?
- [ ] Does keyboard focus remain visible and logical?
- [ ] Is flash rate under 3 per second?
- [ ] Can users complete tasks without animation?
- [ ] Are animations triggered by user action (not autoplay)?
- [ ] Test with screen reader enabled

## Code Pattern

```css
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
```

```js
// Check preference in JS
const prefersReducedMotion = window.matchMedia(
  '(prefers-reduced-motion: reduce)'
).matches;
```

© 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