a11y-review

star 3

Audit a user interface for accessibility (WCAG) — semantic markup, keyboard navigation and focus order, ARIA correctness, color contrast, screen-reader labelling, accessible forms/error messaging, and reduced-motion. Use for "accessibility review", "a11y audit", "is this accessible", "WCAG check", "keyboard navigation", "screen reader support", "contrast check". The tool for qa.md's UI/UX & accessibility dimension. UI repos only — N/A for headless/CLI/library code.

harleypig By harleypig schedule Updated 6/11/2026

name: a11y-review description: Audit a user interface for accessibility (WCAG) — semantic markup, keyboard navigation and focus order, ARIA correctness, color contrast, screen-reader labelling, accessible forms/error messaging, and reduced-motion. Use for "accessibility review", "a11y audit", "is this accessible", "WCAG check", "keyboard navigation", "screen reader support", "contrast check". The tool for qa.md's UI/UX & accessibility dimension. UI repos only — N/A for headless/CLI/library code.

a11y-review

Version: v1.0.0

Audit a user interface for accessibility against WCAG. The tool for qa.md's UI/UX & accessibility dimension, which says to do the manual pass even when no tooling exists yet. Framework-agnostic (any UI stack).

Applicability — check first

This applies only to repos that render a UI. For a headless service, CLI, or library, say "N/A — no UI" and stop. (A terminal UI has its own constraints; treat WCAG as inspiration, not a literal checklist, there.)

What it checks

A manual pass — automated checkers catch ~30% of issues; the rest is judgment:

  • Semantic structure — real landmarks/headings/lists/buttons, not div-soup; one logical reading order.
  • Keyboard — every interactive element reachable and operable by keyboard; a visible focus indicator; no traps; focus order matches visual order; focus managed on route/modal changes.
  • ARIA — only where semantics fall short, and correct (right role/state, aria-* that matches reality) — wrong ARIA is worse than none.
  • Names & labels — every control/image/icon has an accessible name; form fields have associated labels; errors are announced and tied to their field.
  • Contrast — text and meaningful UI meets WCAG AA contrast; information is not conveyed by color alone.
  • Motion/media — respects prefers-reduced-motion; media has captions/alternatives.

Type / agent use

A skill you invoke. Reading a large component tree can be delegated to a subagent that returns the violations; the judgment calls (is this ARIA right? is the focus order sane?) stay with you.

Output

## Accessibility review — <scope>   (WCAG 2.x AA)

1. 🔴 `component` — <barrier, e.g. icon button has no accessible name> → <fix>
2. 🟡 <contrast/focus-order/…> → <fix>

Rank by barrier severity — a keyboard trap or an unlabelled control blocks users entirely; a minor contrast miss degrades. Assess only; applying fixes is a separate step. Note what needs a real assistive-tech / manual check you couldn't fully perform from the code.

Provenance

Adapted (idea-level) from the mining census — claude-tools accessibility-specialist. No upstream code reused. See SOURCE.md.

Install via CLI
npx skills add https://github.com/harleypig/dotfiles --skill a11y-review
Repository Details
star Stars 3
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator