Claude Codeには、特定のタイミングでコマンドを自動実行するHooksがあります。これは「AIにお願いする」指示とは違い、決まった処理を機械的に走らせるための仕組みです。
一言でいうと
Hooksは、Claude Codeの作業前後に決まったコマンドを実行し、フォーマット、検証、危険操作のブロックを自動化する仕組みです。
AIへの指示との違い
| 種類 | 特徴 |
|---|---|
CLAUDE.md の指示 | AIが文脈として読む |
| チャットでの依頼 | その場の作業方針 |
| Hooks | 指定タイミングで機械的に実行 |
たとえば、「編集後にフォーマットして」とAIに頼んでも、状況によって忘れることがあります。Hooksなら、編集後に決めたコマンドを実行できます。
使いどころ
| 目的 | 例 |
|---|---|
| フォーマット | 編集後にPrettierやruff format |
| リント | 変更後にlintを実行 |
| 危険操作の防止 | 特定ファイルへの編集をブロック |
| テスト確認 | 作業終了時にテスト実行 |
| 通知 | 作業完了時に通知 |
設定イメージ
設定内容は環境やバージョンで変わる可能性があります。考え方としては、タイミングとコマンドを組み合わせます。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "npm run format"
}
]
}
}
この例では、編集や書き込みのあとにフォーマットを実行するイメージです。
危険操作を止める
Hooksは、特定の操作を止める用途にも使えます。
たとえば、マイグレーションファイルへの直接編集を禁止したい場合、編集前に対象パスを検査するフックを考えます。
AIに「気をつけて」と頼むより、危険操作はHookや権限設定で止める方が安全です。
注意点
Hooksは便利ですが、設定を間違えると開発体験が悪くなります。
| 注意点 | 内容 |
|---|---|
| 遅いコマンド | 毎回重いテストを走らせると待ち時間が増える |
| 失敗の原因 | Hookの失敗かコードの失敗か切り分ける |
| 無限に近い再実行 | 自動修正が連鎖しないようにする |
| 環境差 | チーム全員の環境で動くか確認する |
よくある誤解
| 誤解 | 実際 |
|---|---|
| Hooksは何でも自動化すべき | 重い処理はタイミングを選びます |
| CLAUDE.mdと同じ | Hooksはコマンド実行の仕組みです |
| 危険操作も注意書きで十分 | ブロックできるものは機械的に止めます |
| 失敗したらAIのせい | Hook設定の問題もあります |
まとめ
Hooksは、Claude Codeの作業前後に決まったコマンドを実行する仕組みです。フォーマット、リント、テスト、危険操作ブロックに向いています。AIへの指示だけに頼らず、確実に実行したいルールはHooksや権限設定で扱います。