Web accessibility
Skill ahtishamshahzad/agent_dev_flow/.ai/skills/web/web-accessibility
Tool-neutral AI Engineering System: 174 reusable skills (installable as Claude Code plugins) for planning and building software with AI agents. Classify → plan → approve → build under quality gates. Works with Claude Code, Codex, Cursor, Windsurf, Copilot & Antigravity. Canonical in .ai/.
npx -y skills add ahtishamshahzad/agent_dev_flow --skill web-accessibilityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 21 days oldThe repository was created 21 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use to plan and validate web accessibility — semantic HTML first, landmarks, keyboard operability, focus management on route changes and modals, labeled forms, contrast in every theme, ARIA only where semantics fall short, and automated (axe) plus manual checks. Applies to dashboards as much as public pages.
SKILL.md
5.4 KB, as published. Nobody here has run it
Web Accessibility
Purpose
Make the app operable and understandable for everyone: semantic structure, full keyboard support, managed focus, labeled controls, and sufficient contrast — verified with automated and manual checks. Accessibility is part of each component's definition of done, not a post-launch audit line.
When to Use
- While defining design-system primitives (
web-design-system) and forms (web-forms). - When auditing an existing app (
existing-web-audit) or before release (../../final-quality-audit). - Always in scope — internal dashboards included; admins use assistive tech too.
Inputs
- The component/primitive inventory and page/route tree.
- Theme tokens (
web-theme) for contrast validation. - Any explicit conformance target (WCAG 2.1/2.2 AA is the usual bar).
Discovery Questions
- What conformance target applies (contractual/legal, or team standard — default WCAG AA)?
- Which interactions are custom (menus, dialogs, comboboxes, drag-drop) vs native elements?
- How do route changes announce themselves in the SPA (focus/title management)?
- Which checks run automatically (axe in component tests/E2E) and which manually (keyboard pass, screen reader)?
Responsibilities
- Enforce semantic HTML first: native elements (
button,a,label,select, headings, lists) before ARIA re-implementations; landmarks (header/nav/main/footer) and a logical heading hierarchy per page. - Plan keyboard operability: every action reachable and operable by keyboard, visible focus indicators, no traps, skip link, sensible tab order.
- Plan focus management: on SPA route change (focus the new content/heading, update
document.title), in dialogs (trap while open, restore on close), after destructive/creative actions. - Require labeled controls: every input programmatically labeled; errors associated via
aria-describedbyand announced (web-forms). - Validate contrast in every theme against tokens (
web-theme); never rely on color alone to convey state. - Use ARIA only when semantics fall short — correct roles/states for custom widgets (prefer battle-tested headless primitives over hand-rolled ARIA).
- Define the checking regime: automated axe checks wired into component tests (
web-component-testing) and E2E (playwright-e2e), plus a manual keyboard/screen-reader pass on critical flows.
Required Workflow
- Fix the conformance target and record it.
- Bake criteria into design-system primitives and form patterns.
- Define focus/announcement behavior for routes, dialogs, and async updates.
- Wire automated checks into the test layers; schedule manual passes on critical flows.
- Record findings/exceptions honestly — "not yet accessible" is a finding, not a footnote.
Decision Rules
- Native element vs ARIA widget: if a native element does the job, use it — no
div role="button". - Custom widget needed → adopt an accessible headless primitive before hand-writing ARIA state machines.
- Contrast failures are fixed in tokens, not per-component overrides.
- Automated checks gate regressions; manual passes validate real usability — neither substitutes for the other.
Rules
- Accessibility criteria are part of a primitive/feature's definition of done.
- Both themes ship accessible or the failing theme doesn't ship (
web-theme). - Never claim conformance from automated checks alone; state what was manually verified.
Anti-Patterns
- Click-handlers on divs; icon buttons with no accessible name.
- Focus lost to
bodyafter every route change or modal close. aria-*sprinkled to silence audit tools without behavior behind it.- Treating the dashboard as exempt "because it's internal."
Validation Checklist
- Conformance target recorded.
- Primitives/forms carry semantic + labeling requirements.
- Keyboard operability and focus management planned (routes, dialogs, async).
- Contrast validated per theme at the token level.
- Automated checks wired into test layers; manual passes scheduled on critical flows.
- Gaps recorded as findings with owners.
Definition of Done
A recorded accessibility plan — target, primitive-level criteria, focus/keyboard behavior, contrast validation, and a two-track checking regime — with current gaps stated honestly and no surface exempted by default.
Related Skills
web-design-system, web-theme, web-forms, web-component-testing, playwright-e2e, existing-web-audit, ../../final-quality-audit.
Related Knowledge
../../../knowledge/ (conformance obligations).
Related References
../../../references/web/design-system/ (accessible primitive specs — when populated).
Context Loading Guidance
- Requires: component/page inventory, theme tokens, conformance target.
- Does not require: data-layer internals, deployment detail.
- May load:
web-component-testing/playwright-e2eto wire checks. - Stop when: criteria, checking regime, and gaps are recorded.
Token Efficiency Guidance
State criteria once at the primitive level; don't repeat them per page. Report gaps as a findings table (issue → location → severity).