--- name: a11y description: | Production-grade accessibility skill for WCAG 2.2 AA compliance. Covers auditing, remediation, component authoring, and validation workflows. Auto-invoked for UI implementation, a11y fixes, and accessibility testing. --- Accessibility implementation guide aligned with WCAG 2.2 Level AA, WAI-ARIA 1.2, and WCAG2ICT. ## Standards Reference | Standard | Scope | Normative Source | |----------|-------|------------------| | WCAG 2.2 | Web content | https://www.w3.org/TR/WCAG22/ | | WAI-ARIA 1.2 | Widget semantics | https://www.w3.org/TR/wai-aria-1.2/ | | ARIA APG | Authoring patterns | https://www.w3.org/WAI/ARIA/apg/ | | WCAG2ICT | Non-web ICT | https://www.w3.org/TR/wcag2ict-22/ | | EN 301 549 | EU procurement | ETSI EN 301 549 V3.2.1 | ## WCAG 2.2 New Success Criteria | SC | Level | Requirement | Implementation | |----|-------|-------------|----------------| | 2.4.11 | AA | Focus Not Obscured (Minimum) | Ensure focused element is at least partially visible | | 2.4.13 | AAA | Focus Appearance | Focus indicator area ≥ 2px perimeter, 3:1 contrast | | 2.5.7 | A | Dragging Movements | Provide single-pointer alternative to drag operations | | 2.5.8 | AA | Target Size (Minimum) | 24×24 CSS pixels minimum | | 3.2.6 | A | Consistent Help | Place help mechanisms in same relative location | | 3.3.7 | A | Redundant Entry | Auto-populate previously entered information | | 3.3.8 | AA | Accessible Authentication | No cognitive function test for login | ## Critical Success Criteria ### Perceivable | SC | Requirement | Implementation | Test | |----|-------------|----------------|------| | 1.1.1 | Non-text content | `alt` on images, `aria-label` on icon buttons | `img[alt]`, `button[aria-label]` | | 1.3.1 | Info and relationships | Semantic HTML, no `
// GOOD: Informative
// GOOD: Decorative
```
### 6. Insufficient contrast (SC 1.4.3)
```css
/* BAD: ~2.5:1 ratio */
.muted { color: oklch(75% 0 0); }
/* GOOD: 4.5:1+ ratio */
.muted { color: oklch(45% 0 0); }
```
### Color Vision Deficiency (CVD) Support
Never rely on color alone to convey information (SC 1.4.1):
```tsx
// BAD: Color-only status
{status}
// GOOD: Color + icon + text
{status === "error" ?