Build This Now
Build This Now
キーボードショートカットステータスラインガイド
フックガイドClaude Code クロスプラットフォームフックClaude Code セットアップフックストップフック自己検証する Claude Code エージェントClaude Code セッションフックClaude Code コンテキストバックアップフックスキルアクティベーションフックClaude Code パーミッションフック
speedy_devvkoen_salo
Blog/Toolkit/Hooks/Claude Code Setup Hooks

Claude Code セットアップフック

スクリプト、エージェント、ドキュメントをClaude Codeのセットアップフックに組み合わせる方法。1つのコマンドで決定論的スクリプトを実行し、診断エージェントに出力を渡し、自動更新されるドキュメントを記録する。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

Published Mar 11, 2026Toolkit hubHooks index

エンジニアリングチームの質は1つの数字に表れる。新入社員がプロジェクトを自分のマシンで動かすまでにかかる時間だ。

優れたチームはリンク1つ、ドキュメント1つ、数コマンドで済む。多くのチームは1〜2日をペアプログラミング、Slackのスレッド、古くなったWikiページ、そして何かが壊れた原因の追求に費やす。

エージェントはこれを解決できる。

コードベースを立ち上げる方法には、常に3つの悪い選択肢があった:

純粋なスクリプトは予測可能だが脆弱だ。毎回同じコマンドを実行し、現実が変わった瞬間に止まる。依存関係が欠けていたり、データベースが落ちていたりすると、スクリプトはただ失敗する。

純粋なエージェントは賢いが信頼性に欠ける。CI/CDパイプラインに組み込んで、毎回まったく同じ出力を期待することはできない。

純粋なドキュメントは柔軟だが人に依存する。誰も読まないし、数週間で古くなる。

3つを組み合わせることがうまくいく。スクリプトが実行を担う。エージェントが監視する。結果として実行できるリビングドキュメントができあがる。

セットアップフックは2026年1月25日に Claude Code に追加された。セッションが起動する前に実行される専用のフック型だ。次のコマンドを実行すると:

claude --init

セットアップフックが先に動き、その後 Claude が起動する。フックはパッケージのインストール、データベースのシード、環境の準備を行う。Claude が起動する頃には、何が起きたかをすでに把握している。

ここで面白くなる。initフラグにプロンプトを追加できる:

claude --init "/install"

フックが動き、続いて /install コマンドが実行される。エージェントはログファイルを読み込み、何が起きたかを把握し、平易な言葉でレポートする。

claude --init "/install true"

これで3つのセットアップモードが使えるようになる:

┌─────────────────────────────────────────────────────────┐
│  DETERMINISTIC          AGENTIC           INTERACTIVE   │
│  (hooks only)           (hooks + prompt)  (hooks + Qs)  │
│                                                         │
│  claude --init          /install          /install true │
│                                                         │
│  - Fast                 - Supervised      - Asks Qs     │
│  - Predictable          - Diagnostic      - Adapts      │
│  - CI-friendly          - Reports status  - Context-    │
│                                             aware       │
└─────────────────────────────────────────────────────────┘

決定論的モード: スクリプトのみ。高速で再現性があり、すべての実行が一致する必要があるCI/CDに最適だ。

エージェントモード: スクリプトが先に動き、エージェントが結果を読み込む。ログファイルをスキャンし、エラーを解析し、何がうまくいったか・何が失敗したかを平易な言葉で伝える。

インタラクティブモード: スクリプトが先に動き、エージェントが短いQ&Aに引き込む。「新しいデータベースを作成しますか、それとも既存のものを維持しますか?フルインストールか最小インストールか?前提条件を先に確認しますか?」

スクリプトは常に信頼の源だ。フックとプロンプトは毎回同じスクリプトを呼ぶ。変わるのはエージェントが監視するかどうか、そして事前に質問するかどうかだ。

Just は小さなコマンドランナーで、セットアップフックとの相性が良い。エンジニアリング作業のランチャーとして使える。フラグを覚えなくても just と入力すれば利用可能なコマンドが一覧で見える:

just          # See all commands
just cldi     # Deterministic setup
just cldii    # Agentic setup (with reporting)
just cldit    # Interactive setup (asks questions)

justfile 自体はシンプルに保てる:

# Deterministic codebase setup
cldi:
  claude --init
 
# Agentic codebase setup
cldii:
  claude --init "/install"
 
# Interactive setup (asks questions)
cldit:
  claude --init "/install true"
 
# Deterministic maintenance
cldm:
  claude --maintenance
 
# Agentic maintenance (with reporting)
cldmm:
  claude --maintenance "/maintenance"

チームメンバーもエージェントも、フラグを二度覚える必要がない。just cldii を実行すれば動く。

シナリオモードコマンド
CI/CDパイプライン決定論的claude --init-only
クイックなローカルセットアップ決定論的just cldi
セットアップ失敗、診断が必要エージェントjust cldii
新人エンジニア、コードベースに不慣れインタラクティブjust cldit
週次の依存関係アップデートエージェントjust cldmm

--init-only はパイプライン用フラグだ。フックを実行し、終了コードを返し、シャットダウンする。インタラクティブなセッションは付かない。

オンボーディングこそこの仕組みが輝く場面だ。新人エンジニアが just cldit と入力すると、エージェントがガイドしてくれる:

Agent: How should I handle the database?

┌─ Database Setup ─────────────────────────────────┐
│  ○ Fresh database (Recommended)                  │
│  ○ Keep existing                                 │
│  ○ Skip database setup                           │
└──────────────────────────────────────────────────┘

エージェントはインストールモード、環境変数、前提条件の確認有無について質問する。回答に応じて処理を調整し、該当するステップだけを実行する。

スクリプトにはこれができない。スクリプトは毎回同じテープを再生するだけだ。エージェントは途中で止まり、確認の質問をして、答えに応じて分岐できる。

セットアップフックはフックシステムにある12のライフサイクルイベントのひとつだ。設定は .claude/settings.json に記述する:

{
  "hooks": {
    "Setup": [
      {
        "matcher": "init",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/setup_init.py",
            "timeout": 120
          }
        ]
      },
      {
        "matcher": "maintenance",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/setup_maintenance.py",
            "timeout": 60
          }
        ]
      }
    ]
  }
}

フックスクリプトはコマンドを実行し、全体をログに記録する:

def main():
    # Install backend dependencies
    run(["uv", "sync"], cwd="apps/backend")
 
    # Install frontend dependencies
    run(["npm", "install"], cwd="apps/frontend")
 
    # Initialize database
    run(["uv", "run", "python", "init_db.py"], cwd="apps/backend")
 
    # Tell Claude what happened
    print(json.dumps({
        "hookSpecificOutput": {
            "hookEventName": "Setup",
            "additionalContext": "Setup complete. Run 'just be' and 'just fe' to start."
        }
    }))

/install スラッシュコマンドはログを読み込み、結果をまとめる:

---
description: Run setup and report installation results
---
 
## Workflow
 
1. Run /prime to understand the codebase
2. Read the log file at .claude/hooks/setup.init.log
3. Analyze for successes and failures
4. Write results to app_docs/install_results.md
5. Report to user

何かが壊れたとき、エージェントにはすでに診断に必要なコンテキストがある。プロンプト内によくある失敗パターンを記述しておけば、エージェントが自ら修正の手順を追っていく。

チームの成長ペースに合わせて、オンボーディング時間を考えてみてほしい。1つのプロンプトが新入社員のセットアップとインストールを担えるだろうか?行動する前に質問することで各ステップを明確にできるだろうか?

どちらも「できる」だ。エージェントはそれに十分な水準にある。不足しているのは標準化だ。

決定論を保持: フックは毎回同じスクリプトを実行する。実行中のLLMのばらつきはゼロだ。エージェントが結果を確認するのは、決定論的な作業が完了した後だけだ。

CIと互換: GitHub Actions は claude --init-only を実行してクリーンな終了コードを受け取る。

必要なときだけインタラクティブ: 新入社員はセットアップを案内してもらえる。他の人は高速バージョンを実行する。

実行できるリビングドキュメント: インストールプロセスが自然言語でプロンプトに記述され、エージェントがそれに従う。更新はプロンプトを編集するだけで完了する。

シンプルに始めよう。依存関係をインストールする .claude/hooks/setup_init.py スクリプトを書き、.claude/settings.json に組み込み、ログを読んでレポートする /install コマンドを追加する。これ全体を justfile でラップすれば、チームが just install を実行するだけで済むようになる。

もっとシンプルなものが欲しい場合は、セッションタイプごとに異なるコンテキストを読み込みたいだけなら、スラッシュコマンドで十分なことが多い。インストールスクリプトは不要だ。

セットアップフックが最も効果を発揮するのは、環境を丸ごとインストールし、失敗を診断し、新入エンジニアを各ステップにガイドする1つのコマンドが欲しいときだ。スクリプトが確実性を提供し、エージェントが判断を提供する。チームがWindows、Linux、macOSを行き来する場合は、クロスプラットフォームのフックパターンを読んで、同じセットアップがすべてのOSで動くようにしてほしい。

Continue in Hooks

  • Claude Code コンテキストバックアップフック
    StatusLineを活用したClaude Codeのコンテキストバックアップフック。10Kトークンごとに構造化されたスナップショットを書き込み、自動圧縮によってエラー文字列・関数シグネチャ・判断内容が失われるのを防ぐ。
  • Claude Code クロスプラットフォームフック
    Claude Codeのクロスプラットフォームフック: .cmd・.sh・.ps1のラッパーを捨て、nodeを直接呼び出すことで、1つの.mjsファイルがmacOS・Linux・Windowsで動く方法。
  • フックガイド
    Claude Code フックの基礎から実践まで: 終了コード、JSON出力、非同期コマンド、HTTPエンドポイント、PreToolUseとPostToolUseのマッチャー、本番環境パターン。
  • Claude Code パーミッションフック
    3階層の Claude Code パーミッションフックをインストールする: 安全な呼び出しは即時許可、危険な呼び出しは即時拒否、グレーゾーンは LLM チェック。スキップフラグ不要。
  • 自己検証する Claude Code エージェント
    自己検証する Claude Code エージェント: PostToolUse リントフック、Stop フック、読み取り専用レビュアーのサブエージェントをエージェント定義に組み込み、不良な出力が出荷されないようにする。
  • Claude Code セッションフック
    4 つの Claude Code セッションライフサイクルフック: オンデマンドで init を実行し、SessionStart でプロジェクトコンテキストを注入し、トランスクリプトをバックアップし、SessionEnd 終了時にログクリーンアップを行う。

More from Toolkit

  • キーボードショートカット
    Claude Codeのkeybindings.jsonを設定する: 17のコンテキスト、キーストローク構文、コードシーケンス、修飾キーの組み合わせ、デフォルトショートカットを即座に無効化する方法。
  • ステータスラインガイド
    Claude Code のステータスラインにモデル名、gitブランチ、セッションコスト、コンテキスト使用量を表示する方法。settings.json の設定、JSON入力、bash、Python、Node.js スクリプトを解説。
  • AIによるSEOとGEO最適化
    Generative Engine Optimizationの解説: Googleで上位表示されるだけでなく、ChatGPT、Claude、Perplexityの回答内でコンテンツが引用されるようにする方法。
  • 2026年版 Claude Code と Cursor の比較
    2026年の Claude Code と Cursor を並べて比較します。エージェントモデル、コンテキストウィンドウ、料金プラン、そして各ツールが異なる開発ワークフローにどう適合するかを解説します。

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。

Claude Code クロスプラットフォームフック

Claude Codeのクロスプラットフォームフック: .cmd・.sh・.ps1のラッパーを捨て、nodeを直接呼び出すことで、1つの.mjsファイルがmacOS・Linux・Windowsで動く方法。

ストップフック

ストップフックはテストが失敗、ビルドが壊れている、またはlintがエラー状態のうちはClaude Codeがターンを終了するのをブロックする。4つの強制パターンとループ保護のセーフガード。

On this page

No Headings

設定をやめて、構築を始めよう。

AIオーケストレーション付きSaaSビルダーテンプレート。