← ClaudeAtlas

a11y-keyboard-focuslisted

Use this skill when the user asks about keyboard navigation, keyboard accessibility, focus management, focus trapping, focus ring, focus indicator, ":focus-visible", skip links, "tabindex", "Tab key navigation", "focus order", "focus returns", "orphaned focus", "focus lost", "modal focus trap", "focus after close", "roving tabindex", "keyboard trap", or is building modals, dialogs, drawers, dropdowns, or any component requiring programmatic focus management. Also use when diagnosing why keyboard navigation feels broken.
RadOrigin-LLC/RAD-Claude-Skills · ★ 5 · Code & Development · score 73
Install: claude install-skill RadOrigin-LLC/RAD-Claude-Skills
# Keyboard Navigation and Focus Management > **Skill type: Reference.** This is teaching/pattern content — it explains keyboard contracts, focus management strategies, and focus-restoration patterns for modals/dialogs. It is not a scanner. Static review (`/a11y-review`) catches common keyboard/focus source patterns; *runtime keyboard feel* (Tab order making sense, focus indicator quality) requires browser testing. Keyboard accessibility is non-negotiable for WCAG 2.1.1 (Keyboard) and required for motor-impaired users, power users, and assistive technology users. Every interactive element must be reachable and operable via keyboard alone. --- ## Focus Fundamentals ### What Receives Focus By default, only natively focusable elements receive keyboard focus: - `<a href="...">` — links with valid `href` - `<button>`, `<input>`, `<select>`, `<textarea>` — form controls - `<summary>` — disclosure toggle - Elements with `tabindex="0"` — explicitly focusable - Elements with `tabindex="-1"` — programmatically focusable only (not via Tab) **`tabindex` values:** | Value | Effect | |-------|--------| | `0` | Element enters natural Tab order at its DOM position | | `-1` | Element is focusable via `element.focus()` but excluded from Tab order | | `> 0` | **Never use.** Overrides natural order, causes confusing navigation | ### Tab Order = DOM Order Focus follows the DOM order, not the visual layout. CSS reordering (`flex-direction: row-reverse`, `order`, `grid-template-areas`, `pos