原文(日本語に翻訳)
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"
fijson
{
"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のパスを参照できます。