Skip to content
Development
Skill

/common-accessibility

Enforce WCAG 2.2 AA compliance with semantic HTML, ARIA roles, keyboard navigation, and color contrast standards for web UIs. Use when building interactive components, adding form labels, fixing focus traps, or auditing a11y compliance.

From plugin
agent-skills-standard
538200 skills1 MCP
Install
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill common-accessibility --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition โ†’
  • You can call itInvoke it directly when you want it.
  • Slash command/common-accessibility

Context preview

The summary Claude sees to decide when to auto-load this skill.

Enforce WCAG 2.2 AA compliance with semantic HTML, ARIA roles, keyboard navigation, and color contrast standards for web UIs. Use when building interactive components, adding form labels, fixing focus traps, or auditing a11y compliance.

SKILL.md

common-accessibility.SKILL.md
name: common-accessibility
description: Enforce WCAG 2.2 AA compliance with semantic HTML, ARIA roles, keyboard navigation, and color contrast standards for web UIs. Use when building interactive components, adding form labels, fixing focus traps, or auditing a11y compliance.
metadata:
  triggers:
    files:
    - '**/*.tsx'
    - '**/*.jsx'
    - '**/*.html'
    - '**/*.vue'
    - '**/*.component.html'
    keywords:
    - accessibility
    - a11y
    - wcag
    - aria
    - screen reader
    - focus
    - alt text

Common Accessibility (a11y) Standards

**Priority: P1 (HIGH)**

> Legal req: EU (Web Accessibility Directive), USA (ADA/Section 508). Non-compliance = litigation risk. Minimum: **WCAG 2.2 Level AA**.

๐Ÿ— Semantic HTML First

  • Use native HTML before ARIA. `<button>`, `<a>`, `<nav>`, `<main>`, `<section>`, `<form>`, `<label>` convey semantics natively.
  • Never `<div>`/`<span>` for interactive elements โ€” no keyboard role by default.
  • Headings (`h1`โ€“`h6`) must form logical outline. One `h1` per page.
  • `<button>` not `<div onClick>`, `<a>` not `<span onClick>`.

๐ŸŽญ ARIA โ€” Use Sparingly

ARIA supplements native HTML when insufficient (e.g., custom widgets). Rules:

1. **No ARIA > Bad ARIA**: If native HTML works, use it. ARIA only adds roles, not behavior. 2. **Required attributes**: Every `role` with required properties must include them (e.g., `role="slider"` needs `aria-valuenow`, `aria-valuemin`, `aria-valuemax`). 3. **Live Regions**: Use `aria-live="polite"` for status messages; `aria-live="assertive"` only for critical alerts. 4. **Labels**: Every form control needs programmatic label (`<label>`, `aria-label`, or `aria-labelledby`). 5. **Hidden content**: Use `aria-hidden="true"` on decorative icons; never on focusable elements.

โŒจ๏ธ Keyboard Navigation

  • All interactive elements MUST reachable and operable via keyboard.
  • Tab order must follow visual reading order. No positive `tabindex` (`tabindex="1"` breaks natural order).
  • Visible focus indicators required (see Focus style rule below).
  • **Modals/Dialogs**: Trap focus inside when open. Return focus to trigger element on close.
  • **Escape key**: Must close modals, dropdowns, and tooltips.
  • **Focus style**: Never `outline: none` without visible replacement (min 2px solid, 3:1 contrast).

๐ŸŽจ Color & Contrast

  • Normal text: โ‰ฅ 4.5:1 ratio. Large text (โ‰ฅ 18pt or 14pt bold): โ‰ฅ 3:1. UI components: โ‰ฅ 3:1.
  • Never convey information through color alone โ€” add icon, pattern, or text label.
  • Test with: axe DevTools, WAVE, Lighthouse.

๐Ÿ“ Touch & Pointer Targets

  • Minimum interactive target size: **44ร—44px** (WCAG 2.5.5 AAA) / **24ร—24px** minimum (WCAG 2.2 AA).
  • Sufficient spacing between adjacent targets โ€” prevent mis-taps.

๐Ÿ–ผ Images & Media

  • Decorative images: `alt="` (empty, not missing).
  • Informative images: descriptive `alt` โ€” what image conveys, not "image ofโ€ฆ".
  • Complex charts/graphs: text summary or data table alternative.
  • Video: Captions mandatory. Audio descriptions for visual-only content.

๐Ÿงช Testing Minimum

  • CI gate: `axe-core` zero critical violations.
  • Manual: keyboard-only full flow + screen reader (NVDA/VoiceOver) + 200% zoom.

Anti-Patterns

  • **No `onClick` on `<div>`**: Use `<button>` or add `role`, `tabindex`, and keyboard handlers.
  • **No missing `alt`**: Every `<img>` must `alt` attribute (empty string if decorative).
  • **No color-only status**: Red = error must also show icon or text.
  • **No `outline: none`** without replacement focus style.
  • **No auto-playing media**: Users with vestibular disorders may harmed.
  • **No dynamic content without announcement**: Use `aria-live` for async status updates.

References

  • [Semantic HTML, ARIA & Focus Patterns](references/REFERENCE.md)
  • [WCAG 2.2 Quick Reference](https://www.w3.org/WAI/WCAG22/quickref/)
  • [ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/)
  • [axe-core Rules](https://dequeuniversity.com/rules/axe/)
Read more
Ships withagent-skills-standard

The portable SDLC standards layer for AI coding agents. Sync once, then work in your own runtime.

Get the whole plugin

Other skills on agent-skills-standard.