---
description: Use this skill when the user writes/edits components, asks to "fix accessibility issues", "add ARIA labels", "improve accessibility", "check WCAG compliance", "remediate a11y violations", mentions "screen reader support", "keyboard navigation", or wants AI-powered accessibility fixes with one-click application. Automatically analyzes components for a11y issues and suggests context-aware fixes. Trigger on PostToolUse hook or explicit request.
---
# Accessibility Remediation Skill
## Overview
Automatically detect and fix accessibility issues in components with AI-powered analysis, context-aware fix suggestions, and one-click application. Goes beyond detection to provide ranked remediation options based on WCAG 2.2 best practices.
This skill transforms accessibility from a manual checklist into an automated workflow with intelligent fix suggestions.
## What This Skill Provides
### Real-Time Accessibility Analysis
Automatically check components for WCAG 2.2 violations:
- **Missing accessible names**: Buttons, links, form inputs
- **Color contrast**: WCAG AA (4.5:1) and AAA (7:1) compliance
- **Keyboard navigation**: Focus management, tab order
- **ARIA usage**: Proper roles, labels, live regions
- **Semantic HTML**: Use of proper HTML5 elements
- **Form accessibility**: Labels, error messages, validation
### Context-Aware Fix Suggestions
AI understands component purpose and suggests appropriate fixes:
- **Ranked by best practice**: Best → Good → Acceptable
- **Explains trade-offs**: Pros and cons of each approach
- **Considers context**: Close button vs Submit button vs generic action
- **Provides code**: Ready-to-apply fix snippets
- **Educational**: Explains why each fix works
### One-Click Application
Apply fixes instantly without manual implementation:
- **Auto-detection**: Triggers on component creation/edit
- **Interactive prompts**: Choose from ranked suggestions
- **Automatic application**: Updates component code
- **Verification**: Confirms fix resolves issue
- **Learning system**: Remembers user preferences
### WCAG 2.2 Compliance
Built-in support for latest accessibility standards:
- **Level A**: Essential accessibility (mandatory)
- **Level AA**: Recommended compliance (standard)
- **Level AAA**: Enhanced accessibility (optional)
- **ARIA 1.2**: Latest ARIA patterns and practices
- **Section 508**: US federal compliance
## How It Works
### Automatic Detection (PostToolUse Hook)
When you create or edit a component, the accessibility-auditor agent automatically:
1. **Parses component code** (JSX/TSX/Vue/Svelte)
2. **Analyzes for violations** using WCAG 2.2 rules
3. **Generates fix suggestions** ranked by best practice
4. **Presents options** for user selection
5. **Applies chosen fix** and verifies success
### Manual Invocation
You can also explicitly request accessibility analysis:
```bash
User: "Check this Button component for accessibility issues"
Claude: [Runs accessibility-auditor agent]
User: "Fix the accessibility violations in Modal.tsx"
Claude: [Analyzes, suggests fixes, applies selected fix]
```
## Common Accessibility Issues & Fixes
### Issue 1: Missing Accessible Name
**Problem:** Buttons, links, or inputs without labels
**Examples:**
```tsx
// ❌ Bad: Button has no accessible name
// ✅ Fix Option 1: Visible text with icon (BEST)
// ✅ Fix Option 2: aria-label (GOOD)
// ✅ Fix Option 3: title attribute (ACCEPTABLE)
```
**AI Suggestion:**
```
Context: Close button in modal header
Recommendation: Option 1 (best for all users - visible + announced)
WCAG: 4.1.2 Name, Role, Value (Level A)
```
### Issue 2: Poor Color Contrast
**Problem:** Text/UI elements don't meet WCAG contrast ratios
**Examples:**
```tsx
// ❌ Bad: Contrast ratio 2.1:1 (fails WCAG AA)
// ✅ Fix: Contrast ratio 4.6:1 (passes AA)
// ✅ Better: Contrast ratio 7.2:1 (passes AAA)
```
**AI Suggestion:**
```
Issue: Text color #999 on white background (2.1:1 - fails)
Required: 4.5:1 for normal text (WCAG AA)
Suggested colors:
- #666 (4.6:1) ✓ WCAG AA
- #555 (5.8:1) ✓ WCAG AA
- #333 (7.2:1) ✓ WCAG AAA
WCAG: 1.4.3 Contrast (Minimum) (Level AA)
```
### Issue 3: Missing Form Labels
**Problem:** Form inputs without associated labels
**Examples:**
```tsx
// ❌ Bad: No label association
// ✅ Fix Option 1: Proper label element (BEST)
// ✅ Fix Option 2: Label with nesting (GOOD)
// ✅ Fix Option 3: aria-label (ACCEPTABLE)
```
**AI Suggestion:**
```
Context: Email input in login form
Recommendation: Option 1 (explicit label with htmlFor - most robust)
WCAG: 3.3.2 Labels or Instructions (Level A)
```
### Issue 4: Missing Focus Indicators
**Problem:** Interactive elements lack visible focus state
**Examples:**
```tsx
// ❌ Bad: Focus outline removed
// ✅ Fix Option 1: Custom focus-visible (BEST)
// ✅ Fix Option 2: Custom outline (GOOD)
// ✅ Fix Option 3: Default outline (ACCEPTABLE)
```
**AI Suggestion:**
```
Issue: outline: none removes focus indicator
Solution: Use :focus-visible for keyboard-only focus styling
WCAG: 2.4.7 Focus Visible (Level AA)
```
### Issue 5: Invalid ARIA Usage
**Problem:** Incorrect or redundant ARIA attributes
**Examples:**
```tsx
// ❌ Bad: Redundant role on button
// ✅ Fix: Remove redundant role (native button already has role)
// ❌ Bad: Invalid ARIA attribute
Click
// ✅ Fix: Use semantic button element (BEST)
// ✅ Fix: Add keyboard support if div required (ACCEPTABLE)
e.key === 'Enter' && handleClick()}
tabIndex={0}
>
Click
```
**AI Suggestion:**
```
Issue: Redundant role="button" on