コンテンツにスキップ

フック

フックを使用すると、Worktreeのライフサイクル中にコマンドを自動的に実行できます。

フック実行タイミング作業ディレクトリ
pre_startWorktree作成前元リポジトリ
post_startWorktree作成後新しいWorktree
pre_cleanWorktree削除前現在のWorktree
post_cleanWorktree削除後メインリポジトリ
[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'"
]

vibeはフック実行中にリアルタイム進捗ツリーを表示します:

✶ Setting up worktree feature/new-ui…
┗ ☒ Pre-start hooks
┗ ☒ npm install
☒ cargo build --release
⠋ Copying files
┗ ⠋ .env.local
☐ node_modules/
状況標準出力標準エラー出力
進捗表示が有効抑制される常に表示
進捗表示が無効標準エラーに出力常に表示
失敗したフックN/A常に表示

vibe startの場合:

  1. pre_startフックが元リポジトリで実行
  2. Worktreeが作成される
  3. ファイル/ディレクトリがコピーされる
  4. post_startフックが新しいWorktreeで実行

vibe cleanの場合:

  1. pre_cleanフックが現在のWorktreeで実行
  2. Worktreeが削除される
  3. post_cleanフックがメインリポジトリで実行
[hooks]
post_start = [
"pnpm install",
"pnpm build"
]
pre_clean = ["git stash --include-untracked"]
[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"
]
[hooks]
post_start = [
"docker-compose up -d",
"sleep 5",
"pnpm db:migrate"
]
pre_clean = ["docker-compose down"]

--no-hooksオプションでフックをスキップできます:

Terminal window
vibe start feat/quick-fix --no-hooks

vibeはClaude CodeWorktreeCreateおよびWorktreeRemoveフックと連携できます。これにより、Claude Codeのデフォルトのgit worktree add動作をvibeのフルワークフロー(フック、CoWファイルコピー、設定を含む)に置き換えます。

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"
}
]
}
]
}
}

Claude CodeがWorktreeを作成する場合(自然言語、isolation: "worktree"、または/worktreeコマンド経由)、vibeがフルライフサイクルを管理します:

WorktreeCreate:

  1. stdinからWorktree名を読み取り(Claude Codeフックプロトコル)
  2. 元リポジトリでpre_startフックを実行
  3. git Worktreeを作成
  4. CoWを使用してファイル/ディレクトリをコピー
  5. 新しいWorktreeでpost_startフックを実行(例:pnpm install
  6. Claude Code向けにWorktreeパスをstdoutに出力

WorktreeRemove:

  1. stdinからWorktreeパスを読み取り(Claude Codeフックプロトコル)
  2. Worktreeでpre_cleanフックを実行
  3. git Worktreeを削除
  4. メインリポジトリでpost_cleanフックを実行

この連携がない場合、Claude CodeのWorktree作成はgit worktree addのみを実行します。vibeのフックを使用することで、以下が自動的に行われます:

  • 依存関係の自動インストールpnpm installbun installなど)
  • CoWファイルコピー.envnode_modulesなど)
  • カスタムセットアップスクリプト(データベースマイグレーション、Dockerコンテナなど)
  • Worktree削除時のクリーンアップフック