mcpbeat

A11y Audit

plugin87/a11y-audit

Audit a UI or design against WCAG 2.2 AA/AAA and ARIA patterns, returning criterion-referenced findings with severity and specific fixes. Use when the user wants an accessibility check, contrast verification, keyboard/screen-reader review, or wants to confirm a component meets POUR.

394 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
482
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/plugin87/ux-ui-agent-skills --skill a11y-audit

The instruction itself

3 sections, as written by the author

Skill: Accessibility Audit

Evaluate against WCAG 2.2 and the project's ARIA patterns.

Steps

  • Read accessibility/wcag-checklist.md (POUR-organized, P0/P1/P2) and accessibility/aria-patterns.md.
  • Check the mandatory P0 set per component: keyboard navigable, focus visible (≥3:1), screen-reader name/role/state, contrast (4.5:1 text / 3:1 UI), target size ≥24×24, no color-only signaling.
  • Verify WCAG 2.2 additions: Focus Not Obscured (2.4.11), Target Size (2.5.8), Accessible Authentication (3.3.8).
  • Contrast — measure, don't eyeball. For rendered HTML, RUN the real-render gates and report their actual output (CLAUDE.md → Verification Protocol): node scripts/measure_render.mjs <file> [--dark] (every text element) AND node scripts/verify_states.mjs <file> [--dark] (every interactive element in default/hover/focus — catches hover-state failures). For loose color pairs, python3 scripts/contrast.py "<fg>" "<bg>". Never state a ratio you did not measure.
  • Check reduced-motion handling (taste/motion-choreography.md).

Output

A findings table: WCAG criterion (e.g. 1.4.3) · severity (P0/P1/P2) · what fails · specific fix. Confirm passes explicitly. Accessibility may never be traded for aesthetics.

How to use it

Copy the folder

Take plugin87/a11y-audit from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.