フック
フックを使用すると、Worktreeのライフサイクル中にコマンドを自動的に実行できます。
利用可能なフック
Section titled “利用可能なフック”| フック | 実行タイミング | 作業ディレクトリ |
|---|---|---|
pre_start | Worktree作成前 | 元リポジトリ |
post_start | Worktree作成後 | 新しいWorktree |
pre_clean | Worktree削除前 | 現在のWorktree |
post_clean | Worktree削除後 | メインリポジトリ |
[hooks]pre_start = ["echo 'Worktreeを準備中...'"]post_start = [ "pnpm install", "pnpm db:migrate"]pre_clean = ["git stash"]post_clean = ["echo 'クリーンアップ完了'"]すべてのフックコマンドで以下の環境変数が利用可能です:
| 変数 | 説明 |
|---|---|
VIBE_WORKTREE_PATH | 作成されたWorktreeの絶対パス |
VIBE_ORIGIN_PATH | 元リポジトリの絶対パス |
[hooks]post_start = [ "echo 'Worktree作成先: $VIBE_WORKTREE_PATH'", "echo '元リポジトリ: $VIBE_ORIGIN_PATH'"]フック実行時の出力動作
Section titled “フック実行時の出力動作”vibeはフック実行中にリアルタイム進捗ツリーを表示します:
✶ Setting up worktree feature/new-ui…┗ ☒ Pre-start hooks ┗ ☒ npm install ☒ cargo build --release ⠋ Copying files ┗ ⠋ .env.local ☐ node_modules/| 状況 | 標準出力 | 標準エラー出力 |
|---|---|---|
| 進捗表示が有効 | 抑制される | 常に表示 |
| 進捗表示が無効 | 標準エラーに出力 | 常に表示 |
| 失敗したフック | N/A | 常に表示 |
フック実行順序
Section titled “フック実行順序”vibe startの場合:
pre_startフックが元リポジトリで実行- Worktreeが作成される
- ファイル/ディレクトリがコピーされる
post_startフックが新しいWorktreeで実行
vibe cleanの場合:
pre_cleanフックが現在のWorktreeで実行- Worktreeが削除される
post_cleanフックがメインリポジトリで実行
よくあるパターン
Section titled “よくあるパターン”Node.jsプロジェクト
Section titled “Node.jsプロジェクト”[hooks]post_start = [ "pnpm install", "pnpm build"]pre_clean = ["git stash --include-untracked"]Bunプロジェクト
Section titled “Bunプロジェクト”[hooks]post_start = [ "bun install", "bun run build"]pre_clean = ["git stash --include-untracked"]データベースマイグレーション
Section titled “データベースマイグレーション”[hooks]post_start = [ "pnpm install", "pnpm db:migrate", "pnpm db:seed"]Docker環境
Section titled “Docker環境”[hooks]post_start = [ "docker-compose up -d", "sleep 5", "pnpm db:migrate"]pre_clean = ["docker-compose down"]フックのスキップ
Section titled “フックのスキップ”--no-hooksオプションでフックをスキップできます:
vibe start feat/quick-fix --no-hooksClaude Code連携
Section titled “Claude Code連携”vibeはClaude CodeのWorktreeCreateおよびWorktreeRemoveフックと連携できます。これにより、Claude Codeのデフォルトのgit worktree add動作をvibeのフルワークフロー(フック、CoWファイルコピー、設定を含む)に置き換えます。
セットアップ
Section titled “セットアップ”Claude Codeのsettings.jsonに以下を追加してください:
{ "hooks": { "WorktreeCreate": [ { "hooks": [ { "type": "command", "command": "vibe start --claude-code-worktree-hook --quiet 2>/dev/null" } ] } ], "WorktreeRemove": [ { "hooks": [ { "type": "command", "command": "vibe clean --claude-code-worktree-hook --force 2>/dev/null" } ] } ] }}動作の仕組み
Section titled “動作の仕組み”Claude CodeがWorktreeを作成する場合(自然言語、isolation: "worktree"、または/worktreeコマンド経由)、vibeがフルライフサイクルを管理します:
WorktreeCreate:
- stdinからWorktree名を読み取り(Claude Codeフックプロトコル)
- 元リポジトリで
pre_startフックを実行 - git Worktreeを作成
- CoWを使用してファイル/ディレクトリをコピー
- 新しいWorktreeで
post_startフックを実行(例:pnpm install) - Claude Code向けにWorktreeパスをstdoutに出力
WorktreeRemove:
- stdinからWorktreeパスを読み取り(Claude Codeフックプロトコル)
- Worktreeで
pre_cleanフックを実行 - git Worktreeを削除
- メインリポジトリで
post_cleanフックを実行
この連携がない場合、Claude CodeのWorktree作成はgit worktree addのみを実行します。vibeのフックを使用することで、以下が自動的に行われます:
- 依存関係の自動インストール(
pnpm install、bun installなど) - CoWファイルコピー(
.env、node_modulesなど) - カスタムセットアップスクリプト(データベースマイグレーション、Dockerコンテナなど)
- Worktree削除時のクリーンアップフック