Claude CodeのHooksで編集後にlint・format・testを実行する
公開 2026-04-24 更新 2026-09-11

関連テーマ:繰り返す作業を自動化する
編集のたびに検査を忘れたくないなら、PostToolUse Hookに既存の検査コマンドを接続します。Hookの設定場所はプロジェクト共有の.claude/settings.json、個人用の.claude/settings.local.json、全プロジェクト共通のユーザー設定です。
例
本文のPostToolUse例は、次の順に条件がつながります。
- 1Edit/Writeが完了対象のツールイベントが発生する。
- 2matcherに一致Edit|Write の条件に合うとHookの実行へ進む。
- 3検査コマンドを実行手動で確認済みの npm run lint の結果を読む。
この例は、すべての編集やBash実行を監視する設定ではありません。発火しなければイベント・matcher・コマンドを分けて確認します。
まず、手動でnpm run lintなどがプロジェクトのルートから成功することを確かめます。次に.claude/settings.jsonへ次のような設定を追加します。
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "npm run lint"
}]
}]
}
}
formatterも実行するなら、順序と失敗時の扱いをスクリプトにまとめます。時間のかかるテストを毎回走らせると作業を遅くするため、編集対象をmatcherやスクリプトで絞るか、Stop時だけ統合テストを起動します。HookはClaudeがBashを使った時ではなく、該当するツールイベントで発火する点に注意してください。
確認とトラブル対処
/hooksで現在の設定とイベントを確認し、Hookを含む設定JSONの構文エラーを解消します。発火しない場合はmatcherが実際のツール名と一致しているか、設定ファイルのscopeが対象プロジェクトか、コマンド単体が同じシェルで動くかを調べます。停止Hookが繰り返しブロックする場合は、修正処理を再び同じイベントへ結び付けていないか確認します。
Hookに秘密情報を渡さず、ファイルパスや標準入力を検証してください。自動チェックが通っても、要件・差分・依存更新を人が確認する工程は残ります。公式Hooksガイドとリファレンスを2026年9月10日に確認しました。概要はHooksとは。実機検証はしていません。
ここで例にしたPostToolUseのEdit|Write matcherは、ファイル編集後のHookだけを説明しています。すべてのBash実行や他のイベントに同じ挙動が適用されるわけではないため、対象イベントとmatcherを設定ごとに確認します。
Hookの基本概念は自動ガードレールの整理、全体の自動化設計は機能別の比較で補えます。
このテーマを続けて読む
Skills・Hooks・プラグインから、定期処理や外部イベントの扱いへ。
繰り返す作業を自動化するの記事をまとめて見る