claude/ai-resources-plugin/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 `<combo>` available", "does this shortcut conflict", "recommend a keybinding for…", "check `<combo>` against my setup", "pick a hotkey for…", or any mention of choosing/binding/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
Detect and remove dead code with knip. Use when the user asks to "run knip", "find unused files", "find unused exports", "find unused dependencies", "clean up dead code", "remove dead code", "set up knip", "configure knip", "knip.json", "knip false positive", "knip CI", or mentions a `knip` config, dependency bloat, bundle bloat from unused imports, or tree-shaking unused exports. Covers the configuration-first workflow, confidence-gated deletion, framework-specific gotchas (Next.js 15+, Tailwind, Storybook, Jest, Bun's test runner and `bun build --compile`), monorepos, CI integration, and performance tuning.
tools
This skill should be used when the user asks to "set up react-scan", "install react-scan", "diagnose React re-renders", "find unnecessary renders", "find unstable props", "automate React render checks with Playwright", "react-scan + playwright", "measure component renders programmatically", "check why a React component is slow", or mentions React rendering issues, slow React interactions, render counts, or component-level perf attribution. Covers install across Next.js/Vite/Remix/script-tag/browser-extension, the lite headless API for CI, and the canonical render-attribution → fix → validate loop driven through Playwright.
documentation
This skill should be used when integrating source material into a knowledge base, including when the user asks to "integrate this document into the knowledge base", "add this transcript to the memory bank", "ingest this document", "update the knowledge base", "analyze a new source document", or "sync current-state docs with this source".
tools
--- name: kb-ingest description: Delegate knowledge-base ingestion to the `knowledge-base-ingester` sub-agent so the source document, primary/current trees, and ingest workflow stay out of the main conversation's context window. Run this when the user explicitly invokes `/ai-resources:kb-ingest`; do not auto-trigger from natural-language ingestion requests (those should use the `knowledge-base-ingest` skill directly). disable-agent disable-model-invocation: true --- # kb-ingest Run a knowledge