Accessibility auditor ecosystem
Every rule has a handbook page at
a11y-audit-rules/<rule-id-kebab>.html
(example: DET.A11Y.GENERIC.LANG).
See Accessibility auditor ecosystem for lanes (axe, DET, AI),
standards presets, and KS auto-detection.
Before/After gallery shows all rule fixtures on one page.
Compliance profiles
Named bundles map procurement frameworks (ADA, Section 508, EN 301 549) to axe tag sets and
which DET.A11Y.* rules run. The axe lane carries most WCAG automation (~80+ rules);
the 17 deterministic rules are Forge supplements — not one rule per WCAG success criterion.
Automated axe and deterministic checks do not constitute legal conformance, ADA certification, VPAT completion, or WCAG sign-off. Pair with manual testing and, when needed, forge-accessibility Studio evidence.
| Profile | WCAG | Axe tags | DET standards tags |
|---|---|---|---|
wcag20aWCAG 2.0 Level A | 2.0 A | wcag2a | wcag2a, wcag2aa |
wcag20aaWCAG 2.0 Level AA | 2.0 AA | wcag2a, wcag2aa | wcag2a, wcag2aa |
wcag20aaaWCAG 2.0 Level AAA | 2.0 AAA | wcag2a, wcag2aa, wcag2aaa | wcag2a, wcag2aa, wcag2aaa |
wcag21aWCAG 2.1 Level A | 2.1 A | wcag2a, wcag21a | wcag2a, wcag21a, wcag2aa |
wcag21aaWCAG 2.1 Level AA | 2.1 AA | wcag2a, wcag2aa, wcag21a, wcag21aa | wcag2a, wcag2aa, wcag21a, wcag21aa |
wcag21aaaWCAG 2.1 Level AAA | 2.1 AAA | wcag2a, wcag2aa, wcag2aaa, wcag21a, wcag21aa | wcag2a, wcag2aa, wcag2aaa, wcag21a, wcag21aa, wcag21aaa, wcag22aa |
wcag22aWCAG 2.2 Level A | 2.2 A | wcag2a, wcag21a | wcag2a, wcag21a, wcag22aa |
wcag22aaWCAG 2.2 Level AA | 2.2 AA | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa |
wcag22aaaWCAG 2.2 Level AAA | 2.2 AAA | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, wcag22aaa | wcag2a, wcag2aa, wcag2aaa, wcag21a, wcag21aa, wcag21aaa, wcag22aa, wcag22aaa |
wcag30bronzeWCAG 3.0 Bronze (draft) | 3.0 Bronze | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, wcag30bronze |
wcag30silverWCAG 3.0 Silver (draft) | 3.0 Silver | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, wcag30bronze, wcag30silver |
wcag30goldWCAG 3.0 Gold (draft) | 3.0 Gold | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, wcag22aaa | wcag2a, wcag2aa, wcag2aaa, wcag21a, wcag21aa, wcag22aa, wcag22aaa, wcag30bronze, wcag30silver, wcag30gold |
ada-title-ii-wcag21aaADA Title II — WCAG 2.1 AA (axe mapping) | 2.1 AA | wcag2a, wcag2aa, wcag21a, wcag21aa | wcag2a, wcag2aa, wcag21a, wcag21aa |
ada-title-iii-wcag21aaADA Title III — WCAG 2.1 AA (axe mapping) | 2.1 AA | wcag2a, wcag2aa, wcag21a, wcag21aa | wcag2a, wcag2aa, wcag21a, wcag21aa |
section508US Section 508 (axe tag mapping) | 2.0+ AA | section508, wcag2aa | section508, wcag2aa, wcag21aa |
en301549EN 301 549 (EU ICT, axe tag mapping) | 2.1 AA | wcag2aa, wcag21aa | wcag2aa, wcag21aa |
best-practiceDeque best-practice | — — | best-practice | wcag2aa, wcag21aa, wcag22aa |
CLI: --standard <profile-id> or --compliance-profile <profile-id>. See docs/design/a11y-audit/compliance-profiles.md.
Standards traceability matrix (RTM)
Maps WCAG 2.1 AA and 2.2 AA success criteria to axe-core rules and Forge
DET.A11Y.* / AI.A11Y.* rules. Regenerated by
npm run blend-rules.
Automated axe and deterministic checks do not constitute legal conformance, ADA certification, VPAT completion, or WCAG sign-off. Pair with manual testing and, when needed, forge-accessibility Studio evidence.
See docs/design/a11y-audit/standards-traceability.md, standards-traceability-gaps.md, and standards-packs.md (per-profile *.pack.json for compliance scoring).
wcag20aa
- Success criteria
- 38
- Covered
- 26
- Manual expected
- 12
- Uncovered gaps
- 0
- Untied rules
- 0
Coverage by WCAG principle:
| Principle | Covered | Manual expected | Uncovered | Total |
|---|---|---|---|---|
| Perceivable | 7 | 7 | 0 | 14 |
| Operable | 10 | 2 | 0 | 12 |
| Understandable | 8 | 2 | 0 | 10 |
| Robust | 1 | 1 | 0 | 2 |
wcag20aaa
- Success criteria
- 61
- Covered
- 31
- Manual expected
- 30
- Uncovered gaps
- 0
- Untied rules
- 0
Coverage by WCAG principle:
| Principle | Covered | Manual expected | Uncovered | Total |
|---|---|---|---|---|
| Perceivable | 9 | 13 | 0 | 22 |
| Operable | 13 | 7 | 0 | 20 |
| Understandable | 8 | 9 | 0 | 17 |
| Robust | 1 | 1 | 0 | 2 |
wcag21aa
- Success criteria
- 50
- Covered
- 37
- Manual expected
- 13
- Uncovered gaps
- 0
- Untied rules
- 0
Coverage by WCAG principle:
| Principle | Covered | Manual expected | Uncovered | Total |
|---|---|---|---|---|
| Perceivable | 13 | 7 | 0 | 20 |
| Operable | 14 | 3 | 0 | 17 |
| Understandable | 8 | 2 | 0 | 10 |
| Robust | 2 | 1 | 0 | 3 |
wcag22aa
- Success criteria
- 56
- Covered
- 39
- Manual expected
- 17
- Uncovered gaps
- 0
- Untied rules
- 0
Coverage by WCAG principle:
| Principle | Covered | Manual expected | Uncovered | Total |
|---|---|---|---|---|
| Perceivable | 13 | 7 | 0 | 20 |
| Operable | 16 | 4 | 0 | 20 |
| Understandable | 8 | 5 | 0 | 13 |
| Robust | 2 | 1 | 0 | 3 |
Lifecycle
Canonical definitions live under docs/design/a11y-audit/. The blender emits
registry.generated.json. Handbook pages live in
docs/design/a11y-audit/rule-pages/ and compile to
showcase/a11y-audit-rules/.
- Blend —
npm run blend-rulesintools/website-a11y-auditor. - Bootstrap pages —
python3 generator/bootstrap_a11y_rule_pages.py(initial/stub refresh). - build-showcase — compiles ecosystem, gallery, and per-rule HTML.
Refresh handbook
cd tools/website-a11y-auditor
npm run blend-rules
cd ../..
python3 generator/bootstrap_a11y_rule_pages.py
python3 generator/build-showcase.py
Coverage summary
- Registry fingerprint
b3797010c3ca988bb0d21d5e85d4efece0b9e83f311c2d4981ebbf402df7a7c2- Total rules
- 89
- Deterministic
- 68
- AI
- 21
- Handbook current
- 89
Deterministic rules (DET.A11Y.*)
Each rule has its own page under a11y-audit-rules/ — click the rule id or Open page for purpose, scope, Before/After, and remediation.
| Rule | Scope | What it checks | Examples | Open page |
|---|---|---|---|---|
DET.A11Y.GENERIC.ACCESSIBLE_AUTHENTICATION current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.APP_FOCUS_TRAP current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.AUTOPLAY_AUDIO current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.CHANGE_ON_REQUEST current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.CHARACTER_SHORTCUTS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.CONCURRENT_INPUT current | generic | generic scope · Do not block keyboard or pointer when not essential (2.5.6). | Before/After | Open page |
DET.A11Y.GENERIC.CONSISTENT_HELP current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.CONSISTENT_LABELS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.CONSISTENT_NAV current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.CONTEXT_HELP current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.CONTRAST current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.CONTRAST_ENHANCED current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.DATA_TABLE_HEADERS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.DIAGRAM_ALT current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.DRAGGING_MOVEMENTS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.ERROR_PREVENTION current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.FLASH_THRESHOLD current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.FOCUS_APPEARANCE current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.FOCUS_CONTEXT_CHANGE current | generic | generic scope · Avoid navigation or submit on focus (3.2.1). | Before/After | Open page |
DET.A11Y.GENERIC.FOCUS_NOT_OBSCURED current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.FOCUS_OBSCURED_ENHANCED current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.FOCUS_ORDER current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.GLOSSARY_ABBR current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.HOVER_FOCUS_CONTENT current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.IMAGES_ALT current | generic | generic scope · Informative images need meaningful alt. | Before/After | Open page |
DET.A11Y.GENERIC.IMAGES_OF_TEXT current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.INPUT_CONTEXT_CHANGE current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.INPUT_PURPOSE current | generic | generic scope · Personal data fields need autocomplete tokens (1.3.5). | Before/After | Open page |
DET.A11Y.GENERIC.INTERRUPTIONS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.KEYBOARD_ACCESS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.LABELS_INSTRUCTIONS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.LABEL_IN_NAME current | generic | generic scope · Accessible name should include visible label (2.5.3). | Before/After | Open page |
DET.A11Y.GENERIC.LANDMARKS current | generic | generic scope · One main landmark and nav when chrome links exist. | Before/After | Open page |
DET.A11Y.GENERIC.LANG current | generic | generic scope · Root html must declare lang. | Before/After | Open page |
DET.A11Y.GENERIC.LANG_OF_PARTS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.LINK_PURPOSE current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.LOW_BACKGROUND_AUDIO current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.MEDIA_TRACKS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.MOTION_ACTUATION current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.MOTION_FLASH current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.MOTION_REDUCED current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.MULTIPLE_WAYS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.NON_TEXT_CONTRAST current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.ORIENTATION current | generic | generic scope · Do not lock viewport or CSS to one orientation (1.3.4). | Before/After | Open page |
DET.A11Y.GENERIC.PAGE_LOCATION current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.PAUSE_STOP_HIDE current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.POINTER_CANCELLATION current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.POINTER_GESTURES current | generic | generic scope · Provide single-pointer alternative to path gestures (2.5.1). | Before/After | Open page |
DET.A11Y.GENERIC.READING_LEVEL_HEURISTIC current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.READING_ORDER current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.REDUNDANT_ENTRY current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.RESIZE_TEXT current | generic | generic scope · Viewport must allow zoom; avoid clipping enlarged text (1.4.4). | Before/After | Open page |
DET.A11Y.GENERIC.RE_AUTHENTICATION current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.SECTION_HEADINGS current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.SENSORY_CUES current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.STATUS_MESSAGES current | generic | generic scope · Dynamic status needs role or aria-live (4.1.3). | Before/After | Open page |
DET.A11Y.GENERIC.TARGET_SIZE_MIN current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.TEXT_SPACING current | generic | generic scope · Avoid clipping when spacing increases (1.4.12). | Before/After | Open page |
DET.A11Y.GENERIC.TIMING current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.TITLE current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.USE_OF_COLOR current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.VIEWPORT current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.GENERIC.VISUAL_PRESENTATION_AAA current | generic | generic scope · Deterministic accessibility check (generic scope). | Before/After | Open page |
DET.A11Y.KS.BREADCRUMB current | ks | ks scope · Deterministic accessibility check (ks scope). | Before/After | Open page |
DET.A11Y.KS.HANDBOOK_SINGLE_H1 current | ks | ks scope · One primary h1 inside handbook chapter layout. | Before/After | Open page |
DET.A11Y.KS.HASH_MARKERS current | ks | ks scope · hash and data-ks-hash must agree on visual roots. | Before/After | Open page |
DET.A11Y.KS.PY_HASH_ATTRS current | ks | ks scope · Deterministic accessibility check (ks scope). | Before/After | Open page |
DET.A11Y.KS.REACT_A11Y_ROLE current | ks | ks scope · Deterministic accessibility check (ks scope). | Before/After | Open page |
AI rules (AI.A11Y.*)
Each rule has its own page under a11y-audit-rules/ — click the rule id or Open page for purpose, scope, Before/After, and remediation.
| Rule | Scope | What it checks | Examples | Open page |
|---|---|---|---|---|
AI.A11Y.GENERIC.AUDIO_CONTROL current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.CHANGE_ON_REQUEST current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.CONSISTENT_NAV_JUDGMENT current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.CONTEXT_HELP current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.ERROR_PREVENTION current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.FORM_ERROR_ASSOCIATION current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.INTERRUPTIONS current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.KEYBOARD_NO_EXCEPTION current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.KEYBOARD_TASK_FLOW current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.MEDIA_ALTERNATIVES current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.MULTIPLE_WAYS current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.POINTER_GESTURES_JUDGMENT current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.PRONUNCIATION current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.READING_LEVEL current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.RE_AUTHENTICATION current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.SENSORY_INSTRUCTIONS current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.TIMING_ADJUSTABLE current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.UNUSUAL_WORDS current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.GENERIC.VISUAL_PRESENTATION current | generic | generic scope · AI judgment overlay (generic scope). | Before/After | Open page |
AI.A11Y.KS.HANDBOOK_SIDEBAR_LABELS current | ks | ks scope · AI judgment overlay (ks scope). | Before/After | Open page |
AI.A11Y.KS.REGION_LABELING current | ks | ks scope · AI judgment overlay (ks scope). | Before/After | Open page |