【要約】Claude Code の Stop hook で「テストが通るまで終わらせない」ゲートを作る [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
Claude Codeを利用する開発者が、AIの編集ミスによるテスト失敗を見逃す問題に直面している。AIがファイルを編集した直後にテストを走らせる手法では、以下の課題がある。
- ・PostToolUseでは編集ファイル周辺しか見られず、他パッケージへの波及が見えない。
- ・複数ファイルを連続編集する際、毎回全テストを走らせると開発速度が低下する。
- ・テストが落ちたままAIが「完了」と報告し、不完全な状態で作業が終了する。
// Approach
筆者は、セッション終了時に変更範囲をまとめて検証する仕組みを構築した。以下の手法を用いることで、検証の網羅性と速度を両立させている。
- ・PostToolUseで変更ファイルを記録し、セッションごとに状態を管理する。
- ・Stop hookで、変更ファイルにマッチするテストをgate.yamlに基づき実行する。
- ・成功したファイルは退避させ、最後に「最終検証パス」で全体への波及を確認する。
- ・per_file_dirにより、モノレポ環境でも適切なディレクトリでテストを実行する。
// Result
この仕組みにより、AIエージェントによるコード生成の品質管理を自動化した。開発現場では、以下の具体的な成果が得られる。
- ・変更ファイルに絞ったテスト実行により、検証コストを抑えつつ開発体験を維持できる。
- ・「最終検証パス」の実装により、他パッケージへの副作用も確実に検知できる。
- ・リトライ回数の制限や、内部エラー時のフェイルオープン設計により、実運用に耐える安定性を確保した。
Senior Engineer Insight
> AIエージェントの自律性が高まる中、この「ガードレール」は極めて実践的だ。特に、変更ファイルに絞ったテスト実行と、副作用を検知する最終検証パスの組み合わせは、計算コストと精度のバランスが取れている。ただし、AI自身が設定ファイルを書き換えて回避できる脆弱性があるため、実運用ではpermissions.denyによる権限分離が必須だ。