tanstack-hotkeys について
TanStack HotkeysでReactのキーボードショートカットを変更する開発者向けスキルです。実装判断、ドキュメントの確認、各種パターンの検証を支援します。
主な機能
- 01バージョンとショートカット構成の確認
- 02バインド方式とスコープ設定の指針
- 03レコーダーとシーケンスの実装方針
- 04テストとDevtoolsでの検証方法
活用シーン
- 01コマンドパレットや設定画面の実装
- 02スコープ付きまたは連続キーの追加
- 03入力処理やショートカット競合の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill tanstack-hotkeysインストール後、Claude Code で/tanstack-hotkeysを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/display-production.mdsequences-recording-state.mdsetup-core.mdsource-map.md詳細
TanStack Hotkeys
TanStack Hotkeys に関わる作業、特に React のキーボードショートカット、コマンドパレット、ショートカット設定 UI、スコープ付きショートカット、Vim スタイルのシーケンス、キー押下状態を扱う際に、このスキルを使用してください。
ワークフロー
- コードを変更する前に、ローカルのショートカット関連の構成を確認します。
@tanstack/react-hotkeys(0.12.x)、@tanstack/hotkeys(0.10.x)、devtools、React、フレームワークアダプター、テストユーティリティのパッケージバージョンを確認します。core0.8以前向けのコードは、0.9より前のレコーダーや型の動作に依存している場合があります。- ショートカットの形式(単発のホットキー、動的なショートカットリスト、要素スコープのショートカット、グローバルなデフォルト、シーケンス、ユーザーが記録したバインド、ショートカットパレット)を確認します。
- 操作上の制約(フォーカスされた入力欄、モーダル、コマンドパレット、ブラウザーのネイティブショートカット、アプリのモード、無効状態、アクセシビリティ)を確認します。
- 動作やバージョンが重要な場合は、最新のドキュメントとパッケージの情報を確認します。source-map.md から始めてください。
- インストール、ESM/ランタイム要件、論理バインドと物理バインド、
HotkeysProvider、useHotkey、useHotkeys、デフォルト、オプション、スコープ対象、登録については、setup-core.md を参照してください。 useHotkeySequence、useHotkeySequences、useHotkeyRecorder、useHotkeySequenceRecorder、レコーダーの検証/競合、キー押下状態を扱うフック、useHotkeyHint、動的なユーザーショートカットについては、sequences-recording-state.md を参照してください。- 表示形式、ショートカットパレット、devtools、SSR に関する注意事項、アクセシビリティ、テストについては、display-production.md を参照してください。
実装上の判断
- クロスプラットフォームのアプリショートカットには
Modを優先してください。macOS では Command、Windows/Linux では Control に対応します。 - このライブラリはアルファ版(
0.x)として扱ってください。特にレコーダーのオプション、バインドの型、シーケンスの処理など、境界的な動作に依存する前に最新のドキュメントを確認してください。パッケージは core0.10以降、ESM のみです。 - 覚えやすさを重視するショートカットには論理バインド(
Mod+S)、位置ベースの操作には物理バインド(Mod+[KeyS]、{ code: 'KeyS', mod: true })を使用してください。バインドにはkeyまたはcodeのどちらか一方を指定し、両方は指定しません。 - 固定ショートカットには
useHotkey、動的または可変長のリストにはuseHotkeysを使用してください。メニューデータを登録するためにループ内でフックを呼び出さないでください。 - パネル、エディター、モーダルのホットキーは、
targetrefs を使ってスコープを設定してください。通常はtabIndexを指定するなどして、対象がフォーカスを受け取れるようにしてください。 preventDefaultとstopPropagationは意図を持って設定してください。デフォルトはtrueです。これはMod+Sのようなアプリショートカットには適切ですが、ブラウザーのネイティブ動作を維持する場合には適切ではありません。- 通常の文字入力を妨げないようにしてください。テキスト入力欄で単一キーのショートカットを強制的に実行する前に、スマートな
ignoreInputsのデフォルト動作を把握してください。 - モードや状態による制御には
enabledを使用してください。無効にしたホットキーも登録されたままになり、devtools には表示されますが、実行は抑制されます。 - ヘルプ画面、コマンドパレット、devtools に表示するショートカットには、
metaの名前、説明、groupを追加してください。 - レコーダーフックは、ユーザーがショートカットをカスタマイズする設定 UI でのみ使用してください。レコーダーのデフォルトは
recordBy: 'code'(Mod+[KeyS]のような物理キー文字列)です。クリア時に呼び出されるのはonClearのみです。手作りの重複チェックではなく、validate、detectConflicts、onRejectを使用してください。表示ラベルではなく、正規化されたHotkeyまたはHotkeySequenceの値を永続化してください。
検証
リポジトリに既存のチェックがあれば、そちらを優先してください。TanStack Hotkeys に意味のある変更を加えた場合は、関連する項目を以下から選んで実施してください。
- ホットキー文字列、
Hotkey/HotkeySequenceの値、RawHotkey/ParsedHotkeyのユニオン、ターゲット参照、アダプターのインポートを型チェックします。 - コールバックの呼び出し、
enabled、ignoreInputs、preventDefault、stopPropagation、ターゲットのフォーカス、アンマウント時のクリーンアップについて、keyとcodeの両方を含む合成イベントを使ったユニットテストまたはコンポーネントテストを実施します。 - クロスプラットフォームの表示ラベル、フォーカス中の入力欄の動作、モーダルのスコープ、コマンドパレットのショートカット、シーケンスのタイムアウトについて、ブラウザーでスモークテストを実施します。
- シーケンスのタイムアウト、レコーダーのアイドル時の確定、ショートカットのキャプチャーを囲む UI のデバウンスについて、フェイクタイマーを使ったテストを実施します。
- 重複した登録、無効な登録、押下中のキー、ターゲットのスコープ、競合時の動作を DevTools で確認します。
コメント
Markdown 対応