{"id":"5dcceaff-bb0e-483c-8b0c-6d504812f073","slug":"nparashar150-claude-keyboard-shortcuts","kind":"skill","name":"claude-keyboard-shortcuts","summary":"","owner":"nparashar150","repoUrl":"https://github.com/nparashar150/claude-keyboard-shortcuts","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-09-13T22:23:16.000Z","addedAt":"2026-10-14T05:11:12.583Z","logoUrl":"https://avatars.githubusercontent.com/u/63806451?u=aa63bee219a263624b5b7e27195bea978f0623ac&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["writing"],"tags":[],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-17T22:29:57.398Z","sample":false,"url":"https://conduits.dev/tools/nparashar150-claude-keyboard-shortcuts","language":"","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# keyboard-shortcuts\n\nA Claude skill that audits a web app for missing keyboard shortcuts, separates the genuine\naccessibility defects from the nice-to-haves, and implements them as one small system\ninstead of another scattered `keydown` listener.\n\n## What it does\n\nMost codebases arrive at shortcuts the same way: a `useEffect` with\n`addEventListener('keydown')` in one component, another in a modal, a palette somebody\nwired up for search, and a `Cmd+S` handler fighting the browser. This skill replaces that.\n\n**Audit.** Ripgrep recipes find every existing listener, modal, list, form, search input,\ndestructive action, editor, and mouse-only `onClick`. Every gap is sorted into four tiers.\nTier 0 is reported as defects with WCAG citations (a modal with no `Escape`, a list the\nmouse can traverse but the keyboard cannot, `onClick` on a div with no `onKeyDown`), because\nframing those as enhancements is how they stay unfixed. Output goes to\n`docs/keyboard-audit.md`.\n\n**Implement.** A command registry, an observable context store for scoping, bindings as\ndata, one document-level listener, last-match-wins resolution. This is the VS Code model\n(`key` / `command` / `when`), which makes the palette, the `?` help sheet, the `<Kbd>`\nhints, remapping, and telemetry all views over one data structure rather than parallel\nsystems that drift apart.\n\n**Verify.** It writes `keymap.test.ts` with six invariants for CI: no browser-reserved\nchords, every bare key focus-scoped, no duplicate binding in a scope, sequence prefixes\nunbound alone, every binding points at a registered command, every command discoverable.\nPlus the four manual checks tests cannot reach.\n\n## What it gets right that hand-rolled implementations usually do not\n\n- **IME composition.** A keydown during CJK or Vietnamese composition carries\n  candidate-selection intent, not command intent. Without an `event.isComposing` guard,\n  `Enter` and arrows hijack the candidate window. Almost no library guards this for you.\n- **`event.key`, not `event.code`.** `code` is a physical position, so `\"KeyQ\"` is the `'`\n  key on Dvorak and `A` on AZERTY. Several popular libraries default to matching `code`.\n- **Shift tokens.** Shift already changed `event.key` for digits and punctuation\n  (`Shift+2` is `@`), so bind the produced character. Write `?`, never `Shift+/`.\n- **Platform detection.** `navigator.userAgentData` is Chromium-only, so it falls back the\n  way shipping libraries actually do, and exposes the result as context so tests can swap it.\n- **Reserved keys.** `Mod+W`, `Mod+T`, `Mod+N`, `Mod+Q`, `Mod+L` are refused. Firefox\n  removed several of these from script control and closed it WONTFIX.\n- **WCAG 2.1.4 Character Key Shortcuts is Level A**, and the skill treats it that way.\n\n## Install\n\nAs a plugin, in Claude Code or Cowork:\n\n```\n/plugin marketplace add nparashar150/claude-keyboard-shortcuts\n/plugin install keyboard-shortcuts@nparashar-skills\n```\n\nWith the skills CLI:\n\n```\nnpx skills add nparashar150/claude-keyboard-shortcuts\n```\n\nOr upload `keyboard-shortcuts.zip` in claude.ai under Customize > Skills.\n\n## When it triggers\n\nAny mention of keyboard shortcuts, hotkeys, keybindings, a command palette, `Cmd+K`,\npower-user features, or making an app feel fast. Also when building or reviewing a list,\ntable, modal, form, or editor, since keyboard access belongs there whether or not anyone\nsays the word shortcut.\n\n## Structure\n\n```\n.claude-plugin/\n├── marketplace.json\n└── plugin.json\nskills/keyboard-shortcuts/SKILL.md\n```\n\n## License\n\nMIT\n"}