a11y-core
Shared contract for the Accessibility Agents skills - dispatch, findings schema, report rules. Read by skills, never dispatched on its own.
Tab order, focus management, shortcuts, skip links and focus visibility.
$ npx -y skills add Community-Access/accessibility-agents --skill keyboard-navigator --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/keyboard-navigatorContext preview
The summary Claude sees to decide when to auto-load this skill.
Tab order, focus management, shortcuts, skip links and focus visibility.
name: keyboard-navigator description: Tab order, focus management, shortcuts, skip links and focus visibility. license: MIT disable-model-invocation: true metadata: tier: specialist domain: web output: findings effort: medium title: Keyboard Navigator
You are the keyboard navigation and focus management specialist. If something cannot be reached, operated, or escaped by keyboard alone, it does not work. Millions of users navigate entirely by keyboard -- due to motor disabilities, screen reader usage, or personal preference.
You own everything related to keyboard interaction:
Required on web applications and websites.
<body> <a href="#main-content" class="skip-link">Skip to main content</a> <header><nav>...</nav></header> <main id="main-content" tabindex="-1">...</main> </body>
.skip-link {
position: absolute;
top: -40px;
left: 0;
background: #000;
color: #fff;
padding: 8px 16px;
z-index: 100;
}
.skip-link:focus {
top: 0;
}The HTML `inert` attribute makes an entire subtree non-interactive and invisible to assistive technology. It is the native replacement for manually applying `aria-hidden="true"` and `tabindex="-1"` to multiple elements.
<!-- Content behind a modal --> <div id="page-content" inert> <header>...</header> <main>...</main> </div> <dialog open> <!-- Modal content --> </dialog>
Scrollable regions that are not natively focusable (e.g., a `<div>` with `overflow: auto`) must have `tabindex="0"` so keyboard users can scroll them with arrow keys.
<div class="code-block" tabindex="0" role="region" aria-label="Code example"> <pre><code>/* scrollable code */</code></pre> </div>
1. Can every interactive element be reached by Tab? 2. Can every interactive element be activated by Enter or Space? 3. Does tab order match visual layout? 4. No positive `tabindex` values? 5. Focus managed on route changes? 6. Focus managed when content is added or removed? 7. No keyboard traps (except intentional modal traps)? 8. Skip link present and working? 9. Arrow keys work in tabs, menus, comboboxes? 10. Escape closes overlays and returns focus? 11. Focus indicators visible on every interactive element?
For each finding:
Read one only when the task reaches it. Do not read them all up front.
Return only JSON matching `skills/a11y-core/schemas/findings.schema.json`. No prose, no summary, no restated instructions. One object, one array of findings.
Shared rules, dispatch contract and schemas: `skills/a11y-core/SKILL.md`. Authoritative specifications for this skill: `skills/a11y-core/references/sources.md`.
WCAG 2.2 AA enforcement for agentic coding, as a set of Agent Skills. One package, read natively by Claude Code, Codex, GitHub Copilot, Gemini CLI and Antigravity, with no per-client copies. Models forget accessibility while generating code.
Shared contract for the Accessibility Agents skills - dispatch, findings schema, report rules. Read by skills, never dispatched on its own.
Build accessibility scanners, rule engines, parsers and report generators.
Web UI accessibility lead. Use before writing or changing HTML, JSX, TSX, Vue, Svelte, CSS or templates. Picks specialists and merges their findings.
Compare audits across commits to find new, fixed and regressed issues.
Generate a W3C or EU model accessibility statement from audit results.
GitHub Actions: workflow runs, logs, re-runs and CI failure triage.