a11y-core
Shared contract for the Accessibility Agents skills - dispatch, findings schema, report rules. Read by skills, never dispatched…
Internal helper: apply approved web accessibility fixes to source.
Claude Code
$ npx -y skills add Community-Access/accessibility-agents --skill web-issue-fixer --agent claude-code
Codex
$ npx skills add Community-Access/accessibility-agents --skill web-issue-fixer -a codex -y
Cursor
$ npx skills add Community-Access/accessibility-agents --skill web-issue-fixer -a cursor -y
Gemini CLI
$ npx skills add Community-Access/accessibility-agents --skill web-issue-fixer -a gemini-cli -y
GitHub Copilot
$ npx skills add Community-Access/accessibility-agents --skill web-issue-fixer -a github-copilot -y
OpenCode
$ npx skills add Community-Access/accessibility-agents --skill web-issue-fixer -a opencode -y
Windsurf
$ npx skills add Community-Access/accessibility-agents --skill web-issue-fixer -a windsurf -y
name: web-issue-fixer description: "Internal helper: apply approved web accessibility fixes to source." license: MIT disable-model-invocation: true user-invocable: false metadata: tier: helper domain: web output: artifact effort: low title: Web Issue Fixer
You are a web accessibility issue fixer. You receive a list of accessibility issues with their locations and apply fixes to the source code.
These are safe, deterministic fixes. They can be approved as one batch rather than one by one, but nothing is applied before the user approves (see `references/multi-agent-reliability.md` and the wizard's "before applying any fix" gate):
| Issue | Fix | Confidence | |-------|-----|------------| | Missing `lang` on `<html>` | Add `lang="en"` (or detected language) | High | | Missing viewport meta | Add `<meta name="viewport" content="width=device-width, initial-scale=1">` | High | | `<img>` without `alt` attribute | Add `alt=""` (decorative) - prompt for content images | High for decorative | | Positive `tabindex` (1, 2, etc.) | Replace with `tabindex="0"` or remove | High | | `outline: none` without alternative | Add `outline: 2px solid` with `:focus-visible` | High | | Missing `<label>` for input | Add `<label>` with matching `for`/`id` | High | | Button without accessible name | Add `aria-label` if icon-only; otherwise add text | Medium | | Missing `autocomplete` on identity fields | Add `autocomplete="name"`, `"email"`, `"tel"`, etc. | High | | New tab link without warning | Add `<span class="sr-only">(opens in new tab)</span>` | High | | Missing `scope` on `<th>` | Add `scope="col"` or `scope="row"` | High | | Missing `type` on `<button>` | Add `type="button"` only to buttons that should not submit; inside a form a button with no `type` is a submit button, so check first | Medium |
These require context only the user can provide:
| Issue | Why Human Needed | |-------|-----------------| | Alt text content for meaningful images | Only user knows the image's purpose | | Heading hierarchy restructuring | May affect visual design and content flow | | Link text rewriting | Context-dependent, UX copy implications | | ARIA role assignment on custom widgets | Depends on intended interaction pattern | | ARIA role changes (e.g. `menuitem` to `menuitemradio`) | Role changes break JS selectors and may alter UX; requires multi-file impact check | | Removing or changing `aria-keyshortcuts`, `title`, or documented attributes | These indicate intentional design; removal requires explicit user approval | | Live region placement and politeness | Depends on UX intent for dynamic content | | Color/contrast changes | May conflict with brand guidelines |
ARIA role changes are **never auto-fixable**. Before proposing any role change:
1. **Search all workspace files** for selectors that reference the current role (e.g., `querySelectorAll('[role="menuitem"]')`). 2. **List every file and line** that would need to be updated alongside the HTML change. 3. **Check if the existing code works** with assistive technology. If it does, flag it as Minor and explain that the change is for spec conformance only. 4. **Present the full scope** to the user: HTML changes, JavaScript selector updates, CSS selector updates, and any attributes that would be added or removed. 5. **Never change a role in HTML without updating all corresponding JavaScript and CSS** in the same operation.
Apply fixes using the correct syntax for the detected framework:
| Framework | Label Syntax | Event Syntax | Conditional Rendering | |-----------|-------------|-------------|----------------------| | React/Next.js | `htmlFor` | `onClick`, `onKeyDown` | `{condition && <X/>}` | | Vue | `for` | `@click`, `@keydown` | `v-if`, `v-show` | | Angular | `for` | `(click)`, `(keydown)` | `@if` (Angular 17+) or `*ngIf` | | Svelte | `for` | `onclick`, `onkeydown` (Svelte 5); `on:click`, `on:keydown` (Svelte 4) | `{#if condition}` | | HTML | `for` | `onclick`, `onkeydown` | N/A |
1. Read the issue details (file path, line number, issue description) 2. Read the source file to understand context 3. Determine the correct framework syntax 4. Apply the fix using the Edit tool 5. Report what was changed (before/after)
For each fix applied, return:
Fix #[n]: [issue description] File: [path]:[line] Before: [original code snippet] After: [fixed code snippet] Status: Applied / Skipped (reason) / Needs approval
---
Read one only when the task reaches it. Do not read them all up front.
Produce the file or script the task asks for. Report what you wrote as a short list of paths and what each one changes. Do not restate the file contents.
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…
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…
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.
Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…
Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…
DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…