Gavel

Claude Code の物理コントローラー。

なぜ「Gavel(木槌)」?

裁判官の木槌は判決を確定させます——そして、ここでは常に人間が判断を下す側です。 同じキーはどんなキーボードでも送れますが、専用のデバイスがあることで、 無意識にキーを叩く代わりに立ち止まって考えるようになります。反射ではなく、判断として。

入力

3 つの物理ボタンで Claude Code のパーミッションプロンプトに回答します(1 一回許可 / 2 常に許可 / 3 拒否)。キーボードを触る必要はありません。

出力

Claude Code のフックイベントに応じて LED が点灯し、Claude の動作をリアルタイムでフィードバックします。

仕組み

マイコンは 1 本の USB ケーブルで 2 つの独立した役割を担います:

  1. USB HID キーボード — ボタンを押すと、対応するキーが端末に送信されます。Claude Code はユーザーが直接タイプしたかのように受信します。Claude Code の特別な設定は不要です。
  2. シリアルリスナー — Claude Code フックが Mac 側の Python スクリプトを呼び出し、 マイコンの USB シリアルポートへ小さな JSON メッセージを送信して LED を制御します。
フック LED の反応
PreToolUse 全 LED 点灯
PostToolUse 全 LED 消灯
Notification (info) ゆっくり 1 回点滅
Notification (warn) 中程度で 3 回点滅
Notification (error) 速く 5 回点滅(赤のみ)
PostToolUse(コンテキスト 90% 以上) 中程度で 3 回点滅、その後消灯
アイドル — Pico(KITT モード) ナイトライダー風スウィープ
アイドル — RP2040 Zero(KITT モード) ブルー呼吸フェード

セットアップ

セットアップは簡単です:

  1. ボードに CircuitPython をインストール
  2. firmware/boot.pyfirmware/code.pyCIRCUITPY ドライブにコピー
  3. adafruit_hid/(全ボード)と neopixel.mpy(RP2040 Zero のみ)を CIRCUITPY/lib/ にコピー
  4. boot.py を有効にするため、ボードの電源を入れ直す(USB を抜き差し)
  5. Mac 側の依存関係をインストール:pip3 install pyserial
  6. ハードウェア配線ガイドに従ってボタンと LED を配線
  7. ./install.sh --deploy を実行して ~/.claude/settings.json にフックを登録