From deepest-plan
WCAG 2.1 AA audit via axe-core, keyboard-navigation probe, and screen-reader label verification. Required for any UI plan that ships or modifies a user-visible surface. Optional skill listed in deepest-plan tool_enrichment when in scope.
How this skill is triggered — by the user, by Claude, or both
Slash command
/deepest-plan:accessibility-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Evaluates keyboard accessibility, screen-reader semantics, color contrast, and common WCAG 2.1 AA rules for web and native UIs. Optional — include in a plan when a UI surface is created or modified AND accessibility compliance is required.
Evaluates keyboard accessibility, screen-reader semantics, color contrast, and common WCAG 2.1 AA rules for web and native UIs. Optional — include in a plan when a UI surface is created or modified AND accessibility compliance is required.
npx @axe-core/cli http://localhost:3000/target-route \
--save e2e-evidence/vgN-axe.json \
--tags wcag2a,wcag2aa
PASS criterion: [.violations[] | select(.impact=="serious" or .impact=="critical")] | length == 0
<label> or aria-labelaria-label<header>, <main>, <nav>, <footer>aria-live where dynamic updates occur| Dimension | Tool | File |
|---|---|---|
| axe-core | @axe-core/cli | e2e-evidence/vgN-axe.json |
| Keyboard | Manual sequence via agent-browser | e2e-evidence/vgN-keyboard.md (text trace + screenshots per stop) |
| Screen reader | VoiceOver / NVDA announcement transcript | e2e-evidence/vgN-sr-transcript.md |
| Contrast | Browser DevTools or axe-core output (included) | e2e-evidence/vgN-axe.json |
Accessibility gates use web-validation as the base platform skill with this additional PASS rule:
<validation_gate id="VG-N" blocking="true" platform="web"
protocol="functional-validation"
platform_skill="web-validation"
verdict_by="gate-validation-discipline">
...
<pass_criteria>
[normal UI criteria]
AND axe violations with impact in (serious, critical) == 0
AND every interactive element reachable via Tab (see vgN-keyboard.md)
AND heading hierarchy sequential (no h1 → h4 skips)
</pass_criteria>
<review>
jq -e '[.violations[] | select(.impact=="serious" or .impact=="critical")] | length == 0' e2e-evidence/vgN-axe.json
Read tool: vgN-keyboard.md — verify Tab trace reaches every control
</review>
</validation_gate>
| Finding | Typical cause | Fix |
|---|---|---|
| color-contrast violation | Gray-on-white text | Darken text or use bolder weight |
| label missing | Input without <label> or aria-label | Add label; use htmlFor |
| button-name missing | Icon button with no text | Add aria-label or sr-only text |
| heading-order | h1 followed by h4 | Fix heading levels to be sequential |
| no-skip-link | Missing "Skip to main content" | Add skip link as first focusable element |
<open_questions> with rationaleAxe reports may include source HTML snippets. Treat as evidence; store in gitignored e2e-evidence/.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub krzemienski/deepest-plan-plugin --plugin deepest-plan