plugins/ai-resources/skills/hotkey-helper/SKILL.md
Use when picking or vetting a keyboard shortcut on macOS. Triggers include "what hotkey should I use for X", "is this combo available", "does this shortcut conflict", "recommend a keybinding", "check this combo against my setup", or any mention of choosing, binding, or changing a shortcut in WezTerm, tmux, Zed, Chrome, Claude Code, or macOS. Determines whether a proposed combo collides with OS-reserved bindings, app defaults, or the user's customizations, and recommends ergonomic alternatives when needed.
npx skillsauth add amhuppert/my-ai-resources hotkey-helperInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Pick keyboard shortcuts that won't be swallowed by macOS, the terminal stack, or the focused app — and vet proposed combos before the user binds them. v1 covers macOS only.
This file is the spine. Per-layer knowledge (system bindings, app defaults, config file locations) lives in references/ and loads on demand.
wezterm.lua, Zed keymap.json, tmux.conf, ~/.claude/keybindings.json, or macOS keyboard settings and wants conflict analysis.Do not use this skill for:
keybindings-help skill for ~/.claude/keybindings.json syntax).Before analysis, confirm three things. Ask only what's missing.
check (vet a specific combo) or recommend (propose combos for an action).If the user has not stated the focused app (the one whose binding they actually want to install), ask. The focused app determines which customization files to read.
Ordered by who sees the keystroke first. Earlier layers can swallow it before later ones react.
| Layer | What it covers | Reference |
|---|---|---|
| 1. macOS reserved | Spotlight, Mission Control, app switcher, screenshot, accessibility, system text-editing | references/os-macos.md |
| 2. macOS user shortcuts | System Settings → Keyboard → Shortcuts overrides; Services menu bindings | references/os-macos.md |
| 3. Terminal app | WezTerm bindings (only matters when focused app is in-terminal: tmux/Claude Code) | references/app-wezterm.md |
| 4. Terminal multiplexer | tmux prefix + table (only when focused app runs inside tmux) | references/app-tmux.md |
| 5. Focused app default | Chrome, Zed, Claude Code, etc. | references/app-<name>.md |
| 6. Focused app user/project override | wezterm.lua, ~/.config/zed/keymap.json, <project>/.zed/keymap.json, ~/.claude/keybindings.json, etc. | Per-app reference |
When the focused app is inside a terminal (Claude Code, tmux itself), layers 3 and 4 sit above the app — WezTerm and tmux each get the keystroke first and may consume it. That's why a "great" Claude Code binding can be unreachable in practice.
Apply one per layer hit when analyzing a combo.
Cmd+Tab). Recommendation: pick a different combo.references/app-*.md only if not already loaded.~/.wezterm.lua, ~/.config/wezterm/wezterm.lua, ~/.config/wezterm/*.lua~/.config/zed/keymap.json and (if there's a project) <project>/.zed/keymap.json~/.tmux.conf, ~/.config/tmux/tmux.conf~/.claude/keybindings.jsonreferences/app-<name>.md for the focused app — Zed leans on cmd-k <chord>, WezTerm on CMD+SHIFT+<letter>, etc.).references/safe-combos.md.Check mode:
Proposed: <combo> (macOS, focus = <app>, stack = <list>)
─ Layer analysis ──────────────────────────────────────
1. macOS reserved : <hit or — | severity>
2. macOS user shortcuts : <hit or — | severity | asked-user? y/n>
3. WezTerm : <hit or — | severity | source: defaults / wezterm.lua line N>
4. tmux : <hit or — | severity | source: defaults / tmux.conf line N>
5. <focused app> default : <hit or — | severity>
6. <focused app> override: <hit or — | severity | source: <path:line>>
─ Verdict ─────────────────────────────────────────────
<SAFE | USABLE-WITH-OVERRIDE | UNSAFE>
<one-sentence reasoning>
─ Action ──────────────────────────────────────────────
<concrete next step: bind it / first rebind X in Y / pick another>
─ Alternatives (if not SAFE) ──────────────────────────
- <combo> — <one-line why>
- <combo> — <one-line why>
Recommend mode: same skeleton, but emit 2–3 ranked candidates with their layer analyses stacked.
references/adding-a-reference.md for how to extend.Load on demand.
| Load this | When |
|---|---|
| references/conflict-model.md | Need to reason about override mechanics, layer precedence edge cases, or "can macOS-reserved X actually be disabled?" |
| references/decision-protocol.md | Need the explicit step-by-step for check or recommend mode, including order of file reads and what to ask the user |
| references/safe-combos.md | Generating recommendations — covers ergonomic combos, modifier regions that tend to be free, mnemonic patterns |
| references/adding-a-reference.md | Extending the skill with a new app (e.g., Slack, Notion, VS Code) — template + the required sections |
| references/os-macos.md | Any analysis (always load) — reserved bindings, accessibility traps, where user customizations live |
| references/app-wezterm.md | Focused app is WezTerm or any app running inside WezTerm |
| references/app-tmux.md | Focused app is tmux or any app running inside tmux |
| references/app-chrome.md | Focused app is Chrome |
| references/app-zed.md | Focused app is Zed |
| references/app-claude-code.md | Focused app is Claude Code (the TUI in a terminal) |
Cmd+letter and calling it free. macOS app menu conventions claim most single-letter Cmd+letter combos. Output must name the convention being broken.development
Debug a running web app via the web-debugger SDK: app logs, application state, runtime snapshots, React state, query cache.
development
Thoroughly understand a software development objective before implementation: research, identify ambiguities, ask clarifying questions. Use before starting implementation of a non-trivial or ambiguously specified feature, or when requirements leave open design decisions.
development
Locate the on-disk Claude Code transcript file (.jsonl under ~/.claude/projects/) for the current or a specified conversation.
development
Reflect on codebase navigation effectiveness at end of conversation. Surfaces dead ends, inefficiencies, missing context. Does not write files — pair with /kiro:steering-custom to persist.