A11y Audit
Purpose
Evaluate accessibility compliance against WCAG 2.2 AA criteria across perceivable, operable, understandable, and robust principles. Identify barriers for users of assistive technologies and provide actionable remediation steps.
Scope Constraints
Reads source code, templates, styles, and component markup for accessibility analysis. Does not modify files or execute code. Does not perform automated accessibility scans (recommend tooling where appropriate).
Inputs
- Feature description or codebase path to audit
- Target WCAG conformance level (default: AA)
- Known assistive technologies in scope (screen readers, switch devices, etc.)
- Any existing accessibility testing results or known issues
Input Sanitization
No user-provided values are used in commands or file paths. All inputs are treated as read-only analysis targets.
Procedure
Progress Checklist
Step 1: Audit Keyboard Navigation and Focus Management
- Verify all interactive elements are reachable via Tab/Shift+Tab.
- Check focus order matches visual reading order.
- Confirm visible focus indicators on all interactive elements (
:focus-visible).
- Verify focus trapping in modals, dialogs, and drawers.
- Check skip-link presence for bypassing repetitive navigation.
- Confirm no keyboard traps (user can always Tab out of any component).
Step 2: Evaluate Screen Reader Compatibility
- Verify heading hierarchy (
h1-h6) is logical and unbroken.
- Check all images have meaningful
alt text or alt="" for decorative.
- Confirm form inputs have associated
<label> elements or aria-label.
- Verify live regions (
aria-live) for dynamic content updates.
- Check landmark regions (
<nav>, <main>, <aside>, <header>, <footer>).
- Confirm status messages use
role="status" or role="alert".
Step 3: Check Color Contrast and Visual Accessibility
- Verify text contrast meets 4.5:1 for normal text, 3:1 for large text (WCAG 1.4.3).
- Check non-text contrast for UI components and graphical objects at 3:1 (WCAG 1.4.11).
- Confirm information is not conveyed by color alone.
- Verify content remains readable at 200% zoom.
- Check text spacing adjustment tolerance (WCAG 1.4.12).
Step 4: Review ARIA Usage and Semantic Markup
- Verify ARIA roles match element behavior (no
role="button" on non-interactive elements without keyboard handlers).
- Check for redundant ARIA on native semantic elements.
- Confirm
aria-expanded, aria-selected, aria-checked states update correctly.
- Verify custom widgets follow WAI-ARIA Authoring Practices patterns.
- Check
aria-describedby and aria-labelledby reference valid IDs.
Step 5: Assess Motion and Animation Accessibility
- Check
prefers-reduced-motion media query support.
- Verify no content relies solely on animation to convey meaning.
- Confirm auto-playing content can be paused, stopped, or hidden (WCAG 2.2.2).
- Check parallax and scrolling effects respect reduced motion preference.
Step 6: Verify Form and Error Handling Accessibility
- Confirm error messages are programmatically associated with inputs (
aria-describedby).
- Verify inline validation announces errors to screen readers.
- Check required fields are indicated both visually and programmatically (
aria-required).
- Confirm form submission errors provide clear recovery instructions.
- Verify autocomplete attributes on identity/payment fields (WCAG 1.3.5).
Compaction resilience: If context was lost, re-read the Inputs section to identify the audit target, check the Progress Checklist for completed steps, then resume from the earliest incomplete step.
Output Format
| Category |
WCAG Criterion |
Finding |
Severity |
Recommendation |
| Keyboard |
2.1.1 Keyboard |
... |
Critical/High/Med/Low |
... |
| Screen reader |
1.3.1 Info and Relationships |
... |
... |
... |
| Color contrast |
1.4.3 Contrast (Minimum) |
... |
... |
... |
| ARIA |
4.1.2 Name, Role, Value |
... |
... |
... |
| Motion |
2.3.1 Three Flashes |
... |
... |
... |
| Forms |
3.3.1 Error Identification |
... |
... |
... |
Handoff
- Hand off to interaction-design if component-level state changes are needed for accessibility remediation.
- Hand off to artisan/visual-audit if contrast or visual design changes require design system updates.
Quality Checks
Evolution Notes
1---2name: a11y-audit3description: Use when auditing accessibility compliance of a feature or codebase. Covers WCAG 2.2 AA conformance, screen reader compatibility, keyboard navigation, focus management, color contrast, reduced motion, and ARIA usage. Do not use for general UX review (use journey-mapping) or component interaction specs (use interaction-design).4---56# A11y Audit78## Purpose910Evaluate accessibility compliance against WCAG 2.2 AA criteria across perceivable, operable, understandable, and robust principles. Identify barriers for users of assistive technologies and provide actionable remediation steps.1112## Scope Constraints1314Reads source code, templates, styles, and component markup for accessibility analysis. Does not modify files or execute code. Does not perform automated accessibility scans (recommend tooling where appropriate).1516## Inputs1718- Feature description or codebase path to audit19- Target WCAG conformance level (default: AA)20- Known assistive technologies in scope (screen readers, switch devices, etc.)21- Any existing accessibility testing results or known issues2223## Input Sanitization2425No user-provided values are used in commands or file paths. All inputs are treated as read-only analysis targets.2627## Procedure2829### Progress Checklist30- [ ] Step 1: Audit keyboard navigation and focus management31- [ ] Step 2: Evaluate screen reader compatibility32- [ ] Step 3: Check color contrast and visual accessibility33- [ ] Step 4: Review ARIA usage and semantic markup34- [ ] Step 5: Assess motion and animation accessibility35- [ ] Step 6: Verify form and error handling accessibility3637### Step 1: Audit Keyboard Navigation and Focus Management3839- Verify all interactive elements are reachable via Tab/Shift+Tab.40- Check focus order matches visual reading order.41- Confirm visible focus indicators on all interactive elements (`:focus-visible`).42- Verify focus trapping in modals, dialogs, and drawers.43- Check skip-link presence for bypassing repetitive navigation.44- Confirm no keyboard traps (user can always Tab out of any component).4546### Step 2: Evaluate Screen Reader Compatibility4748- Verify heading hierarchy (`h1`-`h6`) is logical and unbroken.49- Check all images have meaningful `alt` text or `alt=""` for decorative.50- Confirm form inputs have associated `<label>` elements or `aria-label`.51- Verify live regions (`aria-live`) for dynamic content updates.52- Check landmark regions (`<nav>`, `<main>`, `<aside>`, `<header>`, `<footer>`).53- Confirm status messages use `role="status"` or `role="alert"`.5455### Step 3: Check Color Contrast and Visual Accessibility5657- Verify text contrast meets 4.5:1 for normal text, 3:1 for large text (WCAG 1.4.3).58- Check non-text contrast for UI components and graphical objects at 3:1 (WCAG 1.4.11).59- Confirm information is not conveyed by color alone.60- Verify content remains readable at 200% zoom.61- Check text spacing adjustment tolerance (WCAG 1.4.12).6263### Step 4: Review ARIA Usage and Semantic Markup6465- Verify ARIA roles match element behavior (no `role="button"` on non-interactive elements without keyboard handlers).66- Check for redundant ARIA on native semantic elements.67- Confirm `aria-expanded`, `aria-selected`, `aria-checked` states update correctly.68- Verify custom widgets follow WAI-ARIA Authoring Practices patterns.69- Check `aria-describedby` and `aria-labelledby` reference valid IDs.7071### Step 5: Assess Motion and Animation Accessibility7273- Check `prefers-reduced-motion` media query support.74- Verify no content relies solely on animation to convey meaning.75- Confirm auto-playing content can be paused, stopped, or hidden (WCAG 2.2.2).76- Check parallax and scrolling effects respect reduced motion preference.7778### Step 6: Verify Form and Error Handling Accessibility7980- Confirm error messages are programmatically associated with inputs (`aria-describedby`).81- Verify inline validation announces errors to screen readers.82- Check required fields are indicated both visually and programmatically (`aria-required`).83- Confirm form submission errors provide clear recovery instructions.84- Verify autocomplete attributes on identity/payment fields (WCAG 1.3.5).8586> **Compaction resilience**: If context was lost, re-read the Inputs section to identify the audit target, check the Progress Checklist for completed steps, then resume from the earliest incomplete step.8788## Output Format8990| Category | WCAG Criterion | Finding | Severity | Recommendation |91|----------|---------------|---------|----------|----------------|92| Keyboard | 2.1.1 Keyboard | ... | Critical/High/Med/Low | ... |93| Screen reader | 1.3.1 Info and Relationships | ... | ... | ... |94| Color contrast | 1.4.3 Contrast (Minimum) | ... | ... | ... |95| ARIA | 4.1.2 Name, Role, Value | ... | ... | ... |96| Motion | 2.3.1 Three Flashes | ... | ... | ... |97| Forms | 3.3.1 Error Identification | ... | ... | ... |9899## Handoff100101- Hand off to interaction-design if component-level state changes are needed for accessibility remediation.102- Hand off to artisan/visual-audit if contrast or visual design changes require design system updates.103104## Quality Checks105106- [ ] All interactive elements verified for keyboard accessibility107- [ ] Focus management audited for modals, dialogs, and dynamic content108- [ ] Screen reader heading hierarchy and landmark structure validated109- [ ] Color contrast ratios verified against WCAG 2.2 AA thresholds110- [ ] ARIA usage follows WAI-ARIA Authoring Practices111- [ ] Reduced motion preferences checked112- [ ] Form error handling is accessible113- [ ] Each finding references a specific WCAG success criterion114115## Evolution Notes116<!-- Observations appended after each use -->