今回やること
この記事では、Claude CodeのHooksを使って、編集後にフォーマットを実行する考え方を確認します。
Hooksは実行されるコマンドなので、最初は学習用プロジェクトで軽いコマンドから試します。
前提条件
- Claude Codeの基本操作ができる
- フォーマットコマンドがある
.claude/settings.jsonなどの設定を編集してよい- 公式Hooks referenceを確認する
Step 1: 公式ドキュメントを確認する
Hooksの設定形式やイベント名は、公式ドキュメントで確認します。
https://code.claude.com/docs/en/hooks
記事の例をそのまま本番環境に入れるのではなく、公式と自分の環境に合わせます。
Step 2: まず手動でフォーマットを確認する
Hooksに入れる前に、コマンド単体で動くか確認します。
npm run format
または、プロジェクトに合うコマンドを使います。
npx prettier --write .
手動で失敗するコマンドをHooksに入れると、毎回失敗します。
Step 3: Hooks設定の考え方
編集後に実行したい場合、考え方は次のようになります。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "npm run format"
}
]
}
}
この例は、編集や書き込みの後にフォーマットを実行するイメージです。実際の設定形式は公式ドキュメントを確認します。
Step 4: 軽い範囲から試す
最初からリポジトリ全体をフォーマットすると、差分が大きくなる可能性があります。
npx prettier --write src/example.ts
または、変更ファイルだけを対象にする仕組みを検討します。
Hooksに重い全体フォーマットを入れる前に、変更ファイルだけで動かせるかを考えます。
Step 5: 差分を確認する
Hooksを入れた後は、AIの変更だけでなく、Hookによる変更も確認します。
git diff
フォーマット差分が大量に出た場合は、設定範囲を狭めます。
Step 6: 失敗時の扱いを決める
Hooksが失敗したときに、作業を止めるのか、警告にするのかを決めます。
| 方針 | 向いている場面 |
|---|---|
| 失敗で止める | セキュリティ、危険操作ブロック |
| 警告にする | フォーマット、軽い確認 |
| 手動確認にする | 重いテスト、環境差が大きい処理 |
よくあるエラー
| エラー | よくある原因 | 確認すること |
|---|---|---|
| 毎回Hookが失敗する | コマンド単体で失敗している | 手動実行する |
| 差分が大量に出る | 全体フォーマットしている | 対象を絞る |
| 作業が遅い | 重いコマンドを毎回実行 | タイミングを見直す |
| チームで動かない | 環境依存コマンド | package.jsonに寄せる |
まとめ
Hooksを使うと、Claude Codeの編集後にフォーマットや検証を自動実行できます。まずは手動でコマンドが動くことを確認し、学習用プロジェクトで軽い範囲から試します。差分が大きくなりすぎないよう、対象範囲と失敗時の扱いを設計します。