【AI】Claude Code Hooksで開発作業を自動化する方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

Claude Code Hooksで開発作業を自動化したい」とお考えではありませんか?

Claude Codeがツールを実行する前後に、自分で決めた処理を差し込みたい方へ。

Claude Code Hooksを使えば、危険なコマンドのブロックや保存後の自動フォーマットをAIの動作に合わせて自動化できます。

いずみ

サクッと解説します。

ということで、本記事ではClaude Code Hooksで開発作業を自動化する方法を解説します。

いずみ

すぐ読み終わるので、ぜひ最後まで読んでくださいませ。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

【AI】Claude Code Hooksで開発作業を自動化する方法

早速ですが、Claude Code Hooksで開発作業を自動化する方法を解説します。

Claude Code Hooksとは

Claude Code Hooksは、Claude Codeのライフサイクルの特定のタイミングでシェルコマンドを自動実行する仕組みです。

たとえばツールを実行する前のPreToolUse、実行した後のPostToolUse、セッション開始時のSessionStartといったイベントがあります。

ほかにもStopやUserPromptSubmit、PreCompactなど多くのイベントが用意されています。

Gitのフックが人間の操作に反応するのに対し、Claude Code HooksはAIの動作に反応する点が違います。

いずみ

AIの挙動に「決まりごと」を持ち込めるイメージです。

Hooksを設定する場所

Hooksはsettings.jsonに記述します。

読み込まれる場所は次の4つで、優先度の高い順に並びます。

  • ~/.claude/settings.json(ユーザー全体の設定)
  • .claude/settings.json(プロジェクトで共有する設定)
  • .claude/settings.local.json(プロジェクト個人用でGit管理外)
  • 組織で配布される管理ポリシー

設定は「イベント名 → matcher(対象ツール) → hooks(実行内容)」の3階層で書きます。

matcherにはBashやEdit|Writeのようにツール名を指定し、空文字やアスタリスクで全ツールを対象にできます。

PreToolUseで危険なコマンドをブロックする

PreToolUseを使うと、Claude Codeがツールを実行する直前に処理を挟めます。

rm -rfのような危険なコマンドを止める例を作ってみます。

STEP
settings.jsonにフックを登録する

プロジェクト直下の.claude/settings.jsonに、PreToolUseのフックを追加します。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/block-rm.sh"
          }
        ]
      }
    ]
  }
}

matcherをBashにすることで、Bashツールの実行時だけスクリプトが動きます。

STEP
判定用スクリプトを作成する

.claude/hooks/block-rm.shを作成し、実行権限を付けます。

#!/bin/bash
input=$(cat)
command=$(echo "$input" | jq -r '.tool_input.command')

if echo "$command" | grep -qE 'rm +-rf'; then
  echo "rm -rf の実行は禁止されています" >&2
  exit 2
fi

exit 0

スクリプトは標準入力でJSONを受け取り、jqでtool_input.commandを取り出します。

rm -rfにマッチしたら、終了コード2で実行をブロックします。

いずみ

終了コード2のときは、標準エラー出力の内容がClaudeに渡されて理由として表示されます。

STEP
動作を確認する

Claude Codeを再起動し、rm -rfを含むコマンドを試します。

フックがブロックし、指定したメッセージがClaudeに返れば成功です。

いずみ

/hooksコマンドで、登録済みのフック一覧を確認できます。

PostToolUseで編集後に自動フォーマットする

PostToolUseは、ツールの実行が終わった後に動きます。

EditやWriteでファイルを書き換えた直後に、フォーマッタを走らせる例です。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/format.sh"
          }
        ]
      }
    ]
  }
}
#!/bin/bash
input=$(cat)
file=$(echo "$input" | jq -r '.tool_input.file_path')

if [ -n "$file" ]; then
  npx prettier --write "$file"
fi

format.shは標準入力のJSONからtool_input.file_pathを取り出し、変更されたファイルだけにprettierをかけます。

いずみ

全ファイルを整形すると時間がかかるので、変更されたファイルに絞るのがコツです。

SessionStartで作業開始時に情報を渡す

SessionStartは、セッションが始まったときに一度だけ動きます。

直近のコミット履歴をClaudeに渡しておく例です。

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "git log --oneline -5"
          }
        ]
      }
    ]
  }
}

終了コード0で標準出力に文字列を返すと、標準出力の内容がセッションの参考情報としてClaudeに追加されます。

いずみ

プロジェクト固有の注意点を毎回リマインドさせる用途にも便利です。

終了コードとJSON出力の使い分け

フックの結果は、終了コードと標準出力のJSONでClaude Codeに伝わります。

終了コード0は成功で、標準出力が波括弧で始まり波括弧で終わるとJSONとして解釈されます。

終了コード2はブロックエラーで、PreToolUseならツール実行の中止、UserPromptSubmitならプロンプトの却下といった動作になります。

終了コード2のときは標準出力のJSONは無視され、標準エラー出力がClaudeへのメッセージになります。

終了コード0と2以外は、基本的に非ブロックとして扱われ、処理はそのまま進みます。

より細かく制御したい場合は、終了コード0のままJSONを返します。

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "permissionDecision": "deny",
    "permissionDecisionReason": "本番用の認証情報に触れるコマンドは禁止です"
  }
}

permissionDecisionにdenyを指定すると実行を拒否でき、permissionDecisionReasonに理由を書けます。

allowを指定すれば許可、askを指定すれば確認プロンプトを出せます。

いずみ

単純なブロックは終了コード2、条件分岐や理由付きの制御はJSON出力、と覚えておくと迷いません。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式

【厳選】フリーランスエンジニアにおすすめなエージェント3選

フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。

僕が実際に利用しているおすすめエージェントを紹介しますね。

いずみ

エージェントは必ず複数登録してください。

担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…

僕は実際に5つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • IT案件に特化したフリーランスエージェント。
  • 週2〜3日の案件が豊富。
  • リモート案件が多く、直エンドなので単価も高い。

※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。

はIT案件に特化したフリーランスエージェントです。

週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。

いずみ

週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。

とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!

よくある質問

Hooksの設定を変えたらすぐ反映されますか?

安全のため、セッション開始時のフック設定がそのセッション中は使われます。

settings.jsonを直接編集した場合は、/hooksメニューで内容を確認してから反映するか、Claude Codeを再起動します。

フックの実行が終わらないときは?

hookごとにtimeoutを秒単位で指定できます。

指定しない場合は既定のタイムアウトが適用され、超過したフックは打ち切られます。

カスタムスラッシュコマンドとの違いは?

スラッシュコマンドは手動で呼び出すのに対し、Claude Code Hooksはライフサイクルのイベントで自動的に動きます。

必ず実行させたいチェックや整形は、Claude Code Hooksのほうが向いています。

まとめ

今回は、Claude Code Hooksで開発作業を自動化する方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • Claude Code HooksはPreToolUse・PostToolUse・SessionStartなどのタイミングでシェルコマンドを自動実行する仕組み。
  • settings.jsonにイベント名・matcher・hooksの3階層で登録する。
  • 終了コード2でツール実行をブロックでき、標準出力のJSONで許可や拒否を細かく制御できる。
まとめ
いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次