WCAG 2.1/2.2 accessibility verification checklist and automated audit methodology skill. Use for requests like 'verify accessibility', 'WCAG check', 'check contrast ratio', 'ARIA audit', 'keyboard accessibility', 'screen reader test', etc. Note: running actual assistive technology (JAWS/NVDA), legal consultation, and accessibility certification issuance are outside the scope of this skill.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add revfactory/harness-100 --skill wcag-checker --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Wcag Checker?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/revfactory-wcag-checker-harness-100)More formats (shields.io, HTML) on the badges page.
---
name: wcag-checker
description: "WCAG 2.1/2.2 accessibility verification checklist and automated audit methodology skill. Use for requests like 'verify accessibility', 'WCAG check', 'check contrast ratio', 'ARIA audit', 'keyboard accessibility', 'screen reader test', etc. Note: running actual assistive technology (JAWS/NVDA), legal consultation, and accessibility certification issuance are outside the scope of this skill."
---
# WCAG Checker — Accessibility Verification Checklist + Tools
A domain knowledge skill that enhances the a11y-auditor agent's accessibility verification capabilities.
## Target Agents
- **a11y-auditor** — Uses this skill's checklist and formulas to verify per-component accessibility
- **component-developer** — Checks accessibility requirements proactively during development
## WCAG 2.1 AA Mandatory Criteria Checklist
### 1. Perceivable
| Criterion | Item | Verification Method | Severity |
|----------|------|-------------------|----------|
| 1.1.1 | Alt text for non-text content | `img` has `alt`, decorative images have `alt=""` | P0 |
| 1.3.1 | Info and relationships programmatically determined | Semantic HTML, ARIA roles | P0 |
| 1.3.2 | Meaningful sequence | DOM order = visual order | P1 |
| 1.4.1 | Color not sole means of conveying info | Supplemented with icons/text | P0 |
| 1.4.3 | Contrast ratio minimum 4.5:1 (normal), 3:1 (large) | Contrast ratio formula calculation | P0 |
| 1.4.4 | No content loss at 200% zoom | Use `rem`/`em` units | P1 |
| 1.4.11 | Non-text UI contrast ratio 3:1+ | Focus rings, borders, icons | P0 |
### 2. Operable
| Criterion | Item | Verification Method | Severity |
|----------|------|-------------------|----------|
| 2.1.1 | Keyboard accessible | Tab/Enter/Space/Esc/Arrow behavior | P0 |
| 2.1.2 | No keyboard trap | Tab out possible from all elements | P0 |
| 2.4.3 | Logical focus order | No positive `tabindex` values | P0 |
| 2.4.7 | Visual focus indicator | `:focus-visible` styling | P0 |
### 3. Understandable
| Criterion | Item | Verification Method | Severity |
|----------|------|-------------------|----------|
| 3.1.1 | Page language specified | `<html lang="en">` | P0 |
| 3.2.1 | No context change on focus | Focus alone must not trigger navigation | P0 |
| 3.3.1 | Error identification text provided | Text error messages beyond color alone | P0 |
| 3.3.2 | Labels or instructions | `<label>` association; no placeholder-only usage | P0 |
### 4. Robust
| Criterion | Item | Verification Method | Severity |
|----------|------|-------------------|----------|
| 4.1.2 | Name, role, value programmatically determined | ARIA attribute accuracy | P0 |
| 4.1.3 | Status messages conveyed to assistive technology | `aria-live`, `role="status"` | P1 |
## Contrast Ratio Calculation Formula
### Relative Luminance
```
L = 0.2126 * R_lin + 0.7152 * G_lin + 0.0722 * B_lin
Where:
- Normalize sRGB to 0-1 (e.g., #FF -> 1.0)
- C_lin = C_srgb <= 0.04045 ? C_srgb/12.92 : ((C_srgb+0.055)/1.055)^2.4
```
### Contrast Ratio Formula
```
CR = (L_lighter + 0.05) / (L_darker + 0.05)
AA criteria:
- Normal text (< 18pt or < 14pt bold): CR >= 4.5
- Large text (>= 18pt or >= 14pt bold): CR >= 3.0
- UI components/graphics: CR >= 3.0
AAA criteria:
- Normal text: CR >= 7.0
- Large text: CR >= 4.5
```
### Auto-Adjustment When Contrast Not Met
```
1. Calculate contrast ratio of current foreground and background
2. If CR < target:
a. Adjust L only in HSL color space to preserve hue
b. Back-calculate L_target: (L_fg + 0.05) / target_CR - 0.05
3. Report both pre- and post-adjustment colors
```
## Per-Component ARIA Patterns
### Button
```html
<button type="button" aria-label="Close" aria-pressed="false">
<svg aria-hidden="true">...</svg>
</button>
```
### Modal/Dialog
```html
<div role="dialog" aria-modal="true" aria-labelledby="title-id">
<h2 id="title-id">Title</h2>
<!-- Focus trap: Tab cycles within dialog only -->
<!-- Close with Esc, return focus to trigger element on close -->
</div>
```
### Select/Combobox
```html
<div role="combobox" aria-expanded="false" aria-haspopup="listbox">
<input aria-autocomplete="list" aria-controls="listbox-id" />
<ul id="listbox-id" role="listbox">
<li role="option" aria-selected="true">Option 1</li>
</ul>
</div>
```
### Tab
```html
<div role="tablist" aria-label="Settings">
<button role="tab" aria-selected="true" aria-controls="panel-1">Tab 1</button>
</div>
<div role="tabpanel" id="panel-1" aria-labelledby="tab-1">Content</div>
```
## Keyboard Interaction Matrix
| Component | Tab | Enter | Space | Esc | Arrow | Home/End |
|----------|-----|-------|-------|-----|-------|----------|
| Button | Focus | Click | Click | - | - | - |
| Checkbox | Focus | Toggle | Toggle | - | - | - |
| Radio | Group focus | Select | Select | - | Cycle | First/Last |
| Select | Focus | Open | Open | Close | Move items | First/Last |
| Modal | Cycle within | - | - | Close | - | - |
| Tab | Tab focus | Activate | Activate | - | Move tabs | First/Last |
| Menu | Focus | Open/Execute | Open/Execute | Close | Move items | First/Last |
| Slider | Focus | - | - | - | Adjust value | Min/Max |
## Verification Report Template
```markdown
## Accessibility Verification Report
### Summary
- Verification Level: WCAG 2.1 AA
- P0 Issues: N (release blocker)
- P1 Issues: N (recommended)
### P0 Issues (Must Fix)
| # | Component | Criterion | Issue | Fix Proposal |
### Contrast Ratio Matrix
| Foreground | Background | Contrast Ratio | AA Normal | AA Large |
### Keyboard Test Results
| Component | Tab | Enter | Space | Esc | Arrow | Result |
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!