Skip to content

原文(日本語に翻訳)

WorktreeCreate および WorktreeRemove フックイベントが追加されました。エージェントのworktree分離がworktreeを作成・削除する際に、カスタムVCSのセットアップとクリーンアップが可能になります。

原文(英語)

Added WorktreeCreate and WorktreeRemove hook events, enabling custom VCS setup and teardown when agent worktree isolation creates or removes worktrees.

概要

エージェントが isolation: worktree を使用して分離されたgit worktreeを作成・削除する際に、カスタムシェルスクリプトを自動実行できるようになりました。これにより、worktree作成時の依存関係セットアップ、環境変数の設定、クリーンアップ処理などを自動化できます。

基本的な使い方

.claude/hooks/ ディレクトリにフックスクリプトを配置するか、設定ファイルでフックを定義します。

json
{
  "hooks": {
    "WorktreeCreate": [
      {
        "type": "command",
        "command": "bash /path/to/worktree-setup.sh"
      }
    ],
    "WorktreeRemove": [
      {
        "type": "command",
        "command": "bash /path/to/worktree-cleanup.sh"
      }
    ]
  }
}

フックは以下の環境変数を受け取ります:

  • WORKTREE_PATH: 作成または削除されたworktreeのパス
  • WORKTREE_NAME: worktreeの名前

実践例

ユースケース1: worktree作成時の依存関係インストール

新しいworktreeが作成された際に自動的に依存関係をインストールします。

bash
#!/bin/bash
# worktree-setup.sh

WORKTREE_PATH="$1"

echo "Setting up worktree: $WORKTREE_PATH"

# Node.js依存関係のインストール
if [ -f "$WORKTREE_PATH/package.json" ]; then
  cd "$WORKTREE_PATH"
  npm install --silent
  echo "Node.js dependencies installed"
fi

# Python仮想環境のセットアップ
if [ -f "$WORKTREE_PATH/requirements.txt" ]; then
  cd "$WORKTREE_PATH"
  python -m venv .venv
  .venv/bin/pip install -r requirements.txt --quiet
  echo "Python dependencies installed"
fi
json
{
  "hooks": {
    "WorktreeCreate": [
      {
        "type": "command",
        "command": "bash .claude/scripts/worktree-setup.sh $WORKTREE_PATH"
      }
    ]
  }
}

ユースケース2: worktree作成時の環境変数ファイルコピー

各worktreeに .env ファイルをコピーして環境設定を引き継ぎます。

bash
#!/bin/bash
# copy-env.sh

WORKTREE_PATH="${WORKTREE_PATH:-$1}"

if [ -f ".env" ]; then
  cp .env "$WORKTREE_PATH/.env"
  echo ".env file copied to $WORKTREE_PATH"
fi

if [ -f ".env.local" ]; then
  cp .env.local "$WORKTREE_PATH/.env.local"
  echo ".env.local file copied to $WORKTREE_PATH"
fi

ユースケース3: worktree削除時のクリーンアップ

worktreeが削除される際に一時ファイルやキャッシュを削除します。

bash
#!/bin/bash
# worktree-cleanup.sh

WORKTREE_PATH="${WORKTREE_PATH:-$1}"

echo "Cleaning up worktree: $WORKTREE_PATH"

# ビルドキャッシュの削除
if [ -d "$WORKTREE_PATH/.cache" ]; then
  rm -rf "$WORKTREE_PATH/.cache"
fi

# Docker関連リソースのクリーンアップ
if [ -f "$WORKTREE_PATH/docker-compose.yml" ]; then
  cd "$WORKTREE_PATH"
  docker compose down --remove-orphans 2>/dev/null || true
fi

echo "Cleanup completed"
json
{
  "hooks": {
    "WorktreeCreate": [
      {
        "type": "command",
        "command": "bash .claude/scripts/copy-env.sh"
      }
    ],
    "WorktreeRemove": [
      {
        "type": "command",
        "command": "bash .claude/scripts/worktree-cleanup.sh"
      }
    ]
  }
}

注意点

  • WorktreeCreate フックはworktreeが正常に作成された後に実行されます。
  • WorktreeRemove フックはworktreeが削除される前に実行されます。クリーンアップ処理が完了してからworktreeが削除されます。
  • フックスクリプトの実行に失敗してもworktreeの作成・削除処理自体は続行されます。
  • isolation: worktree と組み合わせて使用します。この設定が有効なエージェントがworktreeを使用する場合にのみフックが発火します。
  • WORKTREE_PATH 環境変数でworktreeのパスを参照できます。

関連情報