Best for
- remediating semantic HTML, labels, roles, and landmarks
- fixing keyboard access, focus management, or SPA route focus behavior
- implementing APG-style component patterns
vasilyu1983/AI-Agents-public/frameworks/shared-skills/skills/software-accessibility/SKILL.md
Implements accessibility fixes in code. Use when remediating semantic HTML, ARIA, focus, keyboard support, or screen-reader behavior.
Decision brief
Use this skill to implement accessibility in code: semantic HTML, ARIA only where necessary, keyboard support, focus management, screen-reader compatibility, and baseline automation in CI.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Declared | Source record | Install path and trigger |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-accessibility"Inspect the Agent Skill "software-accessibility" from https://github.com/vasilyu1983/AI-Agents-public/blob/53f6cb73ea53a2646e3e7d4665062ad66f3683ac/frameworks/shared-skills/skills/software-accessibility/SKILL.md at commit 53f6cb73ea53a2646e3e7d4665062ad66f3683ac. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Identify the affected flow, component, and assistive-technology risk. 2. Replace incorrect custom markup with semantic HTML where possible. 3. Add the minimum ARIA state and relationship attributes required for the pattern. 4. Verify keyboard interaction and focus behavior. 5…
1. native element 2. minimal ARIA enhancement 3. fully custom widget only when no native pattern exists
Minimum verification set:
Do not call the work complete until all of these are checked:
Review the “Quick Reference” section in the pinned source before continuing.
Permission review
The documentation asks the agent to create, modify, or delete local files.
Update the token file and regenerate CSS; run Lighthouse in CI to catch regressions.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 82 | Source | Repository attention, not individual Skill quality |
| Compatibility | 2 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Use this skill to implement accessibility in code: semantic HTML, ARIA only where necessary, keyboard support, focus management, screen-reader compatibility, and baseline automation in CI.
This skill owns engineering implementation. It does not own design-side WCAG interpretation or formal accessibility-test programs.
| Need | Default | Notes |
|---|---|---|
| fix component semantics | semantic HTML first | add ARIA only when HTML is insufficient |
| keyboard support | tab order, visible focus, correct key handling | test manually every time |
| screen reader verification | VoiceOver plus NVDA minimum | use two readers when possible |
| automated coverage | axe-core plus Lighthouse or Pa11y | automation catches markup-level issues, not the full experience |
| modal or composite widget | APG-aligned pattern | do not invent custom keyboard behavior |
| compliance prep | WCAG 2.2 AA minimum, then local regulation check | verify current legal posture before final claims |
| WCAG 2.2 checklist, axe-core/Pa11y snippets, EU Accessibility Act | references/wcag-2-2-checklist.md | includes June 2025 EAA applicability decision |
| run axe-core in CI | scripts/run_axe.sh | exits non-zero on violations |
Use this skill when the main work is:
Route elsewhere when the main work is:
| Need | Use Instead |
|---|---|
| design-side accessibility and interaction design | ../software-ui-ux-design/SKILL.md |
| accessibility test automation program or formal audit flow | ../qa-testing-accessibility/SKILL.md |
| usability research with disabled users | ../software-ux-research/SKILL.md |
| frontend stack setup and general UI build work | ../software-frontend/SKILL.md |
| platform-specific mobile accessibility behavior | ../software-mobile/SKILL.md |
Accessibility request
-> Identify affected flow and assistive-technology risk
-> Prefer native semantic HTML or platform control
-> Add only required ARIA, labels, state, and relationships
-> Verify keyboard, focus, and screen-reader behavior
-> Add automated regression checks
-> Report remaining manual or compliance risk
Default order:
Common mistakes to avoid:
div or span used as buttonsaria-labelaria-expandedEvery interactive surface must support:
Minimum verification set:
Minimum matrix:
| Layer | Tool | Catches |
|---|---|---|
| Authoring | eslint-plugin-jsx-a11y (React) or axe-linter | Missing labels, wrong roles, bad ARIA usage |
| Component tests | @axe-core/react or jest-axe | Markup-level violations per component |
| E2E / integration | axe-core via Playwright or Cypress | Page-level violations in rendered state |
| CI gate | Lighthouse or Pa11y | Score regression and critical issues |
Automation does not replace keyboard walkthroughs, screen-reader validation, or judgment on content order, announcement quality, and alt-text quality.
Automated tools detect a real but bounded slice of issues: Deque's 2021 audit-data study found axe-core-class rule checking fully covered about 57% of WCAG issues found in expert audits (verify current figure before quoting; see references/wcag-2-2-checklist.md). Treat "green" automated results as a floor, not a compliance conclusion — a page can pass every automated rule and still fail for real screen-reader users on announcement quality, reading order, and interaction logic that no rule engine parses.
| Signal type | Automatable | Requires a human pass |
|---|---|---|
Missing alt, label, or landmark | Yes — rule-detectable | — |
| Contrast ratio below threshold | Yes — rule-detectable | — |
role/state attribute present but semantically wrong for context | Partial — flags presence, not correctness | Yes — judgment on whether the role fits the interaction |
| Reading order matches visual order | No | Yes — screen-reader walkthrough |
| Live-region announcement is timely and not noisy | No | Yes — screen-reader walkthrough |
| Focus lands somewhere sensible after a route change or async update | No | Yes — keyboard + screen-reader walkthrough |
| Alt text is accurate and non-redundant (not just present) | No | Yes — content review |
| Keyboard operability of a composite widget (arrow keys, Home/End, typeahead) | No | Yes — manual keyboard pass |
Never report an automated scan result (axe-core, Lighthouse, WAVE, Pa11y) as "accessible" or "WCAG conformant" on its own — report it as "N automated violations resolved; manual keyboard and screen-reader verification pending/complete."
When a scan or audit returns more issues than can be fixed at once, rank by user impact, not by rule-engine severity label alone:
Effort-vs-impact check before committing to a large remediation plan: a single shared-component fix (e.g., the button, input, or modal primitive) frequently resolves dozens of scattered violations at once — audit the design system before auditing every page.
Do not recommend, and flag if found, third-party "accessibility overlay" or "widget" scripts (icon-based toolbars that claim to auto-remediate a site via injected JavaScript) as a compliance solution. As of 2026-07-11:
Use APG-aligned implementations. Do not invent new interaction models when a known pattern exists.
| Widget | Required keyboard behavior | ARIA pattern |
|---|---|---|
| Tabs | Arrow keys switch tabs; Tab moves into panel | role="tablist", role="tab", aria-selected |
| Dialog | Tab/Shift+Tab cycles inside; Escape closes | role="dialog", aria-modal="true", aria-labelledby |
| Combobox | Arrow keys navigate listbox; Enter selects; Escape closes | role="combobox", aria-expanded, aria-controls |
| Accordion | Enter/Space toggle panels; optional arrow-key navigation | role="button", aria-expanded, aria-controls |
| Menu | Arrow keys navigate items; Escape closes; Tab exits | role="menu", role="menuitem", aria-haspopup |
| Tree view | Arrow keys navigate; Enter activates; Space selects | role="tree", role="treeitem", aria-expanded |
tabindex used to force order instead of fixing DOM order.aria-label added on top of already-correct visible labels, creating redundant or conflicting names.aria-hidden="true" applied to visible interactive content.Pay extra attention to AI-produced code that shows:
Do not call the work complete until all of these are checked:
outline: none alone)for/id or aria-labelledby; errors use aria-describedbyaria-live regionThe EAA (Directive 2019/882) entered enforcement on 28 June 2025. Scope covers B2C digital services: e-commerce order flows, online banking and financial portals, transport ticketing, e-books and reader apps, and audiovisual media player controls. Member-state market surveillance authorities are live; non-compliance exposes organizations to enforcement and disability-rights litigation. The technical standard is EN 301 549 v3.2.1, which references WCAG 2.1 AA as the web-content baseline; target WCAG 2.2 AA for new builds. See references/wcag-2.2-and-3.0-watchlist.md for full detail.
Recipes keyed to symptoms or remediation moments. Each lists the shortest path to resolution.
placeholder-only fields with visible <label for="id"> elements.aria-describedby.tabindex.inert attribute to all sibling roots outside the dialog on open; remove on close.<body> on page transition.#main-content.<h1> or the #main-content landmark.useEffect on the route segment to move focus after hydration settles.prefers-reduced-motion branch.@media (prefers-reduced-motion: reduce) CSS overrides or check the media query in JS.reducedMotion: 'reduce' context) to prevent regression.Adjacent skills
Sources
## Accessibility Overlay Warning. Regulators and courts increasingly treat overlay-only remediation as evidence of bad faith rather than good-faith effort.Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.
Frequently asked questions
Use this skill to implement accessibility in code: semantic HTML, ARIA only where necessary, keyboard support, focus management, screen-reader compatibility, and baseline automation in CI.
The source record exposes this install command: npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-accessibility". Inspect the command and pinned source before running it.
The pinned source record declares support for: codex, claude code.
Static rules flagged write-files in the source; the page lists the matching lines and excerpts.
Alternatives
vasilyu1983/AI-Agents-public
Guides iOS testing with XCTest, XCUITest, Swift Testing, simctl, and xcresult. Use when choosing destinations, controlling flakes, or parsing test artifacts for native apps.
vasilyu1983/AI-Agents-public
Designs and audits UI/UX systems with usability and accessibility requirements. Use when shaping flows, design systems, interaction patterns, or WCAG-aware product behavior.
vasilyu1983/AI-Agents-public
Designs session lifecycle for coding-agent runtimes. Use when implementing resume, transcript restoration, checkpoint rewind, cross-worktree recovery, or session-state persistence.
vasilyu1983/AI-Agents-public
Designs and audits native Android interfaces. Use when reviewing Compose layout, typography, color, motion, or adaptive patterns on a verified emulator build.