MCPInstall

keyboard-navigation

Design keyboard navigation and focus management for users who cannot or prefer not to use a mouse or touch screen. Use when designing any interactive interface — forms, menus, modals, tabs, carousels, drag-and-drop, data tables, or custom components. Triggers on: keyboard, focus, tab order, focus trap, skip link, arrow keys, keyboard shortcut, can't use mouse, motor disability, switch access, focus indicator, focus ring.

Installs
97
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/owl-listener/inclusive-design-skills --skill keyboard-navigation
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads keyboard-navigation automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Keyboard Navigation

Design interactions so that every task can be completed using only a keyboard. This is non-negotiable — it's the foundation of all interaction accessibility.

Who This Is For

  • People with motor disabilities who cannot use a mouse
  • People using switch devices or mouth sticks
  • Screen reader users (keyboard is their primary input)
  • Power users who prefer keyboard for speed
  • Anyone with a temporarily injured hand or arm

Core Principles

Everything Must Be Reachable

  • Every interactive element must be focusable via Tab key
  • Focus order must follow the visual reading order (left to right, top to bottom in LTR languages)
  • No element should be reachable only by mouse hover or click
  • Custom components need explicit tabindex and keyboard handlers

Focus Must Be Visible

  • Focus indicator must be visible on every interactive element
  • Minimum: 2px solid outline with 3:1 contrast against background
  • Never use outline: none or outline: 0 without a visible replacement
  • Focus style should be consistent across the entire interface
  • Test: can you always see which element is focused?

Focus Must Be Managed

  • When a modal opens, move focus into the modal
  • When a modal closes, return focus to the element that opened it
  • When content is deleted, move focus to a logical next element
  • When a page section updates dynamically, manage focus appropriately
  • Never trap focus unintentionally (only trap inside open modals)

Keyboard Patterns by Component

Navigation Menus

  • Tab moves between top-level items
  • Arrow keys move within a dropdown
  • Enter/Space activates a menu item
  • Escape closes an open dropdown and returns focus to trigger

Tabs

  • Tab moves to the active tab panel, not through all tabs
  • Arrow keys move between tabs
  • Enter/Space activates a tab (if not automatic)

Modals / Dialogs

  • Focus moves to first focusable element inside modal on open
  • Tab cycles only within the modal (focus trap)
  • Escape closes the modal
  • Focus returns to trigger element on close

Forms

  • Tab moves between fields in logical order
  • Error messages are focusable or announced
  • Submit via Enter key on the last field or a visible button
  • Required field indicators are not conveyed by colour alone

Drag and Drop

  • Always provide a keyboard alternative (move up/down buttons, select-and-place, or arrow key reordering)
  • Announce the current position and available actions

Carousels / Sliders

  • Arrow keys move between items
  • Provide visible previous/next buttons
  • Pause autoplay on focus or hover
  • Announce current position ("Item 2 of 5")

Skip Links

Every page should have a "Skip to main content" link as the first focusable element. This lets keyboard users bypass repeated navigation.

  • Visible on focus (can be visually hidden until focused)
  • Links to the main content area via an anchor
  • Consider additional skip links for long pages ("Skip to search", "Skip to footer")

Assessment Checklist

  • Every interactive element is reachable via Tab
  • Focus order matches visual order
  • Focus indicator is visible on every element (2px, 3:1 contrast)
  • Modals trap focus and return it on close
  • All custom components have keyboard handlers
  • Drag-and-drop has a keyboard alternative
  • Skip link is present and functional
  • No keyboard traps exist anywhere in the interface
  • Dynamic content changes manage focus appropriately

FAQ

What does the keyboard-navigation skill do?

Design keyboard navigation and focus management for users who cannot or prefer not to use a mouse or touch screen. Use when designing any interactive interface — forms, menus, modals, tabs, carousels, drag-and-drop, data tables, or custom components. Triggers on: keyboard, focus, tab order, focus trap, skip link, arrow keys, keyboard shortcut, can't use mouse, motor disability, switch access, focus indicator, focus ring.

How do I install keyboard-navigation?

Run npx skills add https://github.com/owl-listener/inclusive-design-skills --skill keyboard-navigation in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/keyboard-navigation/ (personal) or .claude/skills/keyboard-navigation/ (project).

Which AI agents can use keyboard-navigation?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is keyboard-navigation safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains keyboard-navigation?

It is published by owl-listener in owl-listener/inclusive-design-skills. It has 97 recorded installs.

More from owl-listener/inclusive-design-skills

View all →

plain-language-design

owl-listener/inclusive-design-skills

Open the skill to read its SKILL.md instructions.

97 installs

cognitive-load-assessment

owl-listener/inclusive-design-skills

Open the skill to read its SKILL.md instructions.

88 installs

responsive-review

owl-listener/inclusive-design-skills

Open the skill to read its SKILL.md instructions.

user-preference-respect

owl-listener/inclusive-design-skills

Design interfaces that detect and respond to system-level user preferences. Use when implementing dark mode, reduced motion, high contrast, text scaling, or any user preference that affects how the interface renders. Triggers on: user preference, system preference, prefers-reduced-motion, prefers-contrast, prefers-color-scheme, forced-colors, media query, user settings, system settings, accessibility settings, OS settings.

error-prevention-recovery

owl-listener/inclusive-design-skills

Open the skill to read its SKILL.md instructions.

81 installs

responsive-accessibility

owl-listener/inclusive-design-skills

Design responsive layouts that maintain accessibility across screen sizes, zoom levels, and orientations. Use when designing responsive interfaces, testing zoom behaviour, or reviewing layouts across devices. Triggers on: responsive, zoom, reflow, breakpoint, mobile accessibility, screen size, orientation, viewport, 200% zoom, text scaling, layout shift, horizontal scroll.

Popular other skills

View category →

hyperframes-cli

heygen-com/hyperframes

The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.

1.3M installs

triage

mattpocock/skills

Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.

1M installs

ask-matt

mattpocock/skills

Ask which skill or flow fits your situation. A router over the skills in this repo.

778.4K installs

to-questionnaire

mattpocock/skills

Turn a decision you can't fully answer into a questionnaire for someone else to fill in.

508.9K installs

wait-what

mattpocock/skills

Stop. That last message did not land: re-pitch it.

459.7K installs

loop-me

mattpocock/skills

Grill me about specs for the workflows I want to build, within this workspace.

447.9K installs