Claude Code の Hooks をかなり使っている。
Hooks は Context File や Slash Command に頼らず、AI に対して機械的・自動的に介入できるしくみだ。 静的解析の自動実行など、特定の状況で素早くフィードバックを返したいケースに向いており、世間でも活用プラクティスが紹介されている。
ただ、公式ドキュメント(https://code.claude.com/docs/en/hooks)にもあるように、Hooks を真面目に書こうとすると次の処理が必須になる。
- stdin に渡される JSON をパース
- Hook でやりたい任意の処理を走らせる
- AI へのフィードバック内容に応じて適切な終了コードと出力でプロセスを終了させる
このあたりを素朴に書くと、どうしてもボイラープレートが多くなる。
「便利だが毎回書きたくはない」という状態だったため、仕様に対する軽量な wrapper ライブラリを作って数カ月使っている。
とにかく公式が求める挙動を手早く書ければよいので、シュッと作れて楽しかった。
PreToolUse / PostToolUse イベントに関してはツール固有の型定義が欲しくなりそうだったのでユーザー側で型を自由に拡張できるようにしてある。
個人的にかなり入れてよかったしくみで、実際この機能を使っていただいたブログも上がっているので読みは悪くなさそうだと思う。
Claude Code 本体との型の差分チェックも自動化してあるので、メンテナンスも既存の CI さえ通せれば安心してバージョンを上げられることになっていてかなり効率よく作れたと感じる。型プログラミング / 型テストのいい勉強になった。
実は @berlysia さんがこのライブラリを結構使っている気配を感じているので、今週あたりで使い方を見ながら export してあると嬉しい型を export するなど改善していこうと思っている。
おわり
おわり