Skip to content
Back to skills

Forge A11y

ASecurity

Playbook for WCAG 2.2 audits: axe, keyboard (gebruik bij toegankelijkheid).

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
ai-agentsrustreactawstestingcode-reviewgitfrontend

Works with

  • cli

Security analysis

A100/100

Pro scans all 8 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add ForgeyClap/Forge-Core --skill forge-a11y --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Forge A11y?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Forge A11y
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/forgeyclap-forge-a11y-forge-core/badge)](https://www.skillsdirectory.com/skills/forgeyclap-forge-a11y-forge-core)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: forge-a11y
description: "Playbook for WCAG 2.2 audits: axe, keyboard (gebruik bij toegankelijkheid)."
# Q3 fix-round original description (listing budget): "Playbook for WCAG 2.2 audits: axe, keyboard, focus, contrast (gebruik bij toegankelijkheid)."
---

<!--
  Source: https://github.com/wshobson/agents
  Upstream paths: plugins/accessibility-compliance/skills/wcag-audit-patterns/SKILL.md and
    plugins/accessibility-compliance/skills/screen-reader-testing/SKILL.md (main, path commit seen 7e2fb55,
    2026-10-30; read 2026-11-02)
  License: MIT -- complete terms in LICENSE next to this file (Copyright (c) 2024 Seth Hobson)
  Forge adaptation note: conformance levels, the severity tiers, native-HTML-before-ARIA, the common-mistakes list
  and the screen-reader test matrix and widget scenarios are rewritten in Forge's words; no upstream file is
  shipped verbatim (references/details.md upstream was not read or copied). The WCAG 2.2 new-criteria list, the
  axe and Playwright recipes, keyboard/contrast checks and gates are Forge-native. Upstream content was treated
  as untrusted data: no scripts, install commands or dynamic-context lines were taken over.
-->

# Forge playbook — Accessibility (WCAG 2.2)

## When to use
- Use for: an accessibility audit of a page, component or app; fixing a11y findings; adding automated a11y
  checks to a test suite; preparing an accessibility statement (for example for the EU Accessibility Act).
- Not for: visual design direction (`frontend-design`, `forge-craft`), general web quality and SEO
  (`forge-website`), writing the test suite itself (`forge-testing`).

**Do not duplicate — defer to:** `forge-website` (a11y is one of its audits; this file is the method),
`forge-testing` (where the automated checks live), `forge-code-review` (severity flow for findings).

## Hard rules
- **Target WCAG 2.2 level AA** unless the owner names another level. AA is what most laws and procurement ask.
- **Automation is not an audit.** Automated tools find roughly a third to a half of issues. A pass from axe or
  Lighthouse is never reported as "accessible"; keyboard and screen-reader checks are required.
- **Native HTML before ARIA.** A `<button>` beats `<div role="button" tabindex="0">`. ARIA only fills gaps,
  and wrong ARIA is worse than none.
- **Every finding names the criterion** (number + name), the element (selector or file:line), the impact on a
  real user, and the fix.
- **Never remove focus outlines without a visible replacement, never disable zoom, never use colour alone**
  to carry meaning.
- **Honest scope:** say which pages, states, browsers and screen readers were actually tested and which were
  not. No "fully compliant" claim from a partial audit.

## Severity
| Tier | Meaning | Examples |
|---|---|---|
| Critical | blocks a task for some users | no keyboard access to a control, functional image without text alternative, form field without a label, focus trapped |
| Serious | major difficulty | contrast below AA, no skip link on long navigation, missing page title, focus not visible, target too small |
| Moderate | friction | missing `lang`, vague link text ("click here"), skipped heading levels, missing autocomplete on personal fields |
| Minor | polish | redundant title attributes, decorative image announced |

Critical and Serious map to HIGH in `forge-code-review` and block completion of a UI work package.

## Workflow
1. **Scope:** list the pages and states (empty, loading, error, success, modal open, mobile menu open).
2. **Automated pass:** axe in the browser or in Playwright on every page and state
   (`references/axe-and-tools.md`). Fix obvious hits first.
3. **Keyboard pass:** Tab through everything (`references/keyboard-focus-contrast.md`).
4. **Visual checks:** contrast, 200% and 400% zoom / reflow at 320 CSS px, text spacing, reduced motion.
5. **Screen-reader pass:** at least one desktop and one mobile pairing (`references/screen-readers.md`).
6. **WCAG 2.2 additions:** check the new criteria in `references/wcag22.md`.
7. **React or Next code:** review components against `references/react-patterns.md` (label and error
   wiring, widget keyboard patterns, dialogs and focus restore).
8. **Write up** findings by severity with criterion, element, user impact and fix; re-test after fixes and keep
   an automated axe check in the test suite as a regression guard.

## Domain gates
- Zero axe violations of impact critical/serious on the scoped pages, or each one listed with a reason.
- Every interactive element reachable and operable by keyboard, with a visible focus indicator, in a logical order.
- Text contrast at least 4.5:1 (3:1 for large text and for UI component boundaries and focus indicators).
- Forms: every field has a programmatic label; errors are announced and say how to fix them.
- Page has a unique `<title>`, `lang`, one `h1` and a logical heading outline, and landmarks.
- Dynamic updates (toasts, validation, cart count) are announced via a live region.

## Safety and honesty
- Never claim legal compliance; report the WCAG level and scope tested. Legal sign-off is the owner's call.
- Shared gates for every playbook (honesty, owner approval, secrets, reviews):
  `.claude/docs/forge-reference/playbook-template.md`.

## References
- `references/wcag22.md` — POUR, levels and the criteria that are new in WCAG 2.2.
- `references/axe-and-tools.md` — axe in the browser, in Playwright and on the CLI; Lighthouse caveats.
- `references/keyboard-focus-contrast.md` — keyboard, focus management, contrast, zoom and motion checks.
- `references/screen-readers.md` — screen-reader matrix, modes, widget patterns to verify.
- `references/react-patterns.md` — React/Next code patterns: label and error wiring, combobox and accordion
  keys, native dialog and focus restore, reduced motion, anti-pattern table.

## Provenance
- **wshobson/agents** — see the source comment at the top of this file (MIT, Copyright (c) 2024 Seth
  Hobson; full terms in `LICENSE`).
- **ECC `skills/frontend-a11y/SKILL.md`** — pinned local catalog commit
  `e2b8a51cea2228e515e1c3653effbeb62a2800fa`; MIT, Copyright (c) 2026 Affaan Mustafa (same MIT terms as
  `LICENSE`). Taken (rewritten) into `references/react-patterns.md`: label-to-input wiring, required and
  error wiring, accordion and combobox keyboard handling, modal focus save and restore, the reduced-motion
  hook, the anti-pattern list and checklist. Corrected while adopting: the combobox sample (no
  `aria-activedescendant`, listbox nested in the combobox), `role="alert"` on every inline error,
  `role="status"` mixed with `aria-live="assertive"`, and the focus-restore effect; the native `<dialog>`
  with `showModal()` replaces the default focus-trap dependency. Excluded: the CodeRabbit/ESLint
  tooling mentions and the related-skills links to ECC skills Forge does not ship.

Files in this skill

  • LICENSE1 KB
  • SKILL.md6.7 KB
  • evals.json3.3 KB
  • references/axe-and-tools.md2.3 KB
  • references/keyboard-focus-contrast.md2.6 KB
  • references/react-patterns.md10.9 KB
  • references/screen-readers.md2.7 KB
  • references/wcag22.md2.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.