← ClaudeAtlas

aria-usagelisted

Use ARIA correctly by preferring native HTML, applying roles/states/properties only where needed, and following known widget patterns. Use when making custom components accessible or fixing broken ARIA.
Amey-Thakur/AI-SKILLS · ★ 4 · AI & Automation · score 77
Install: claude install-skill Amey-Thakur/AI-SKILLS
# ARIA usage ARIA adds accessibility semantics where HTML falls short, and its first rule is a warning: do not use ARIA if a native element does the job. Most broken ARIA comes from adding it where it was not needed or adding roles without the keyboard behavior and state management they require. Native first, ARIA carefully. ## Method 1. **Prefer native HTML elements (the first rule of ARIA).** A `<button>` is accessible for free: focusable, keyboard- operable, announced as a button. A `<div role="button">` requires you to add tabindex, keyboard handlers, and states manually, and you will miss some. Use `<button>`, `<a>`, `<input>`, `<select>`, `<nav>`, `<main>` before reaching for ARIA: native semantics beat reimplemented ones every time. 2. **Understand roles, states, and properties.** Role (what it is: `role="tab"`), states (current condition, dynamic: `aria-selected="true"`, `aria-expanded="false"`), properties (characteristics, mostly static: `aria-label`, `aria-controls`). A role sets expectations the rest of the ARIA and the keyboard behavior must fulfill; `role="tab"` promises tab behavior you must then deliver. 3. **Follow the established widget patterns.** For custom widgets (tabs, menus, comboboxes, dialogs, tree, accordion), the ARIA Authoring Practices Guide defines the exact roles, states, and keyboard interactions expected: implement the whole pattern, not a subset. Half-implemented patterns (a role wi