with one click
git-branch-worktree
// ブランチ作成・切り替え・削除のスキル。_REMOTE 環境変数に応じて worktree(ローカル)または通常ブランチ(Web)を自動選択。Use when: 新ブランチの作成、ブランチ切り替え、並列開発環境のセットアップを依頼された時。
// ブランチ作成・切り替え・削除のスキル。_REMOTE 環境変数に応じて worktree(ローカル)または通常ブランチ(Web)を自動選択。Use when: 新ブランチの作成、ブランチ切り替え、並列開発環境のセットアップを依頼された時。
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | git-branch-worktree |
| description | ブランチ作成・切り替え・削除のスキル。_REMOTE 環境変数に応じて worktree(ローカル)または通常ブランチ(Web)を自動選択。Use when: 新ブランチの作成、ブランチ切り替え、並列開発環境のセットアップを依頼された時。 |
ブランチの作成・切り替え・削除を一元管理するスキル。
*_REMOTE 環境変数の有無に応じて、worktree(ローカルPC)または通常ブランチ(Web環境)を自動選択する。
# *_REMOTE が設定されていれば Web 環境(通常ブランチ)
# 設定されていなければ ローカル環境(worktree)
is_remote_env() {
env | grep -qE '^[A-Z_]+_REMOTE='
}
| 環境 | 判定 | ブランチ方式 |
|---|---|---|
| ローカルPC | *_REMOTE なし | git worktree + Worktrunk(デフォルト) |
| ローカルPC(簡易) | *_REMOTE なし、並列作業不要 | 通常 git branch(一時確認などの例外) |
| Claude Code Web / Codex Web | *_REMOTE=true | 通常 git branch |
worktree を使わず、同一ディレクトリ内で単純にブランチを切り替える場合の手順。 Agent はブランチ移動を忘れやすいため、必ず実行すること。
git checkout -b <branch-name>
git push -u origin <branch-name>
作成後は git branch --show-current で現在のブランチを確認し、目的のブランチにいることを確認する。
git checkout <branch-name>
切り替え後は git branch --show-current で現在のブランチを確認する。
ブランチ名は {type}/{description} 形式とする。
| 要素 | ルール | 例 |
|---|---|---|
type | Conventional Commits と同一の type | feat, fix, docs, refactor, test, chore |
description | kebab-case、簡潔に | add-login, fix-memory-leak |
例:
feat/add-user-authfix/api-timeoutdocs/update-readmerefactor/extract-validatorIssue 番号を付ける場合は {type}/{issue}-{description} も許容する。
feat/123-add-user-authローカル環境(worktree)
AI が修正した未コミット変更は新 worktree に自動で引き継ぐ。以下の順に実行する。
1) 未コミット変更を stash する(変更がある場合のみ)
stashed=$(bash .agents/skills/git-branch-worktree/references/stash-carry-push.sh "<branch-name>")
stash-carry-push.sh は変更があれば --include-untracked 付きで stash し "true" を返す。変更がなければ "false" を返す。
stash したかどうかを stashed 変数で管理し、後続の pop 処理で誤 pop を防ぐ。
2) worktree を作成する
wt switch --create <branch-name>
worktree は Worktrunk の user config にある worktree-path に従って作成される。
このテンプレートの標準配置は ~/worktrees/{{ repo }}/{{ branch | sanitize }}。
scripts/install-tools.sh は user config が未設定の場合に次を追加する。
worktree-path = "~/worktrees/{{ repo }}/{{ branch | sanitize }}"
worktree 作成が失敗した場合は cd する前に元ディレクトリで stash を復元してアボートする。
if [[ "$stashed" == "true" ]]; then
bash .agents/skills/git-branch-worktree/references/stash-carry-pop.sh "<branch-name>"
fi
# 元ディレクトリで実行してから処理を中断する
3) worktree へ移動する
wt switch --create は worktree を作成するが、シェルのカレントディレクトリは移動しない。
Agent の表示と実態を一致させるため、作成後に必ず worktree 内に移動する。
# worktree パスを自動取得して移動
branch_name="<branch-name>"
if worktree_path=$(bash .agents/skills/git-branch-worktree/references/get-worktree-path.sh "$branch_name" 2>/dev/null); then
cd "$worktree_path"
else
# フォールバック: 標準配置から推測(自動取得できない場合のみ)
repo_name=$(basename "$(git rev-parse --show-toplevel)")
branch_sanitized=$(echo "$branch_name" | tr '/' '-')
cd "$HOME/worktrees/$repo_name/$branch_sanitized"
fi
一時的に別の配置先を指定したい場合は、WORKTRUNK_WORKTREE_PATH を使う。
WORKTRUNK_WORKTREE_PATH="/path/to/worktrees/{{ repo }}/{{ branch | sanitize }}" wt switch --create <branch-name>
WORKTRUNK_WORKTREE_PATH は worktree-path テンプレートそのものを指す。
ブランチ部分を二重に連結せず、作成後は上記の git worktree list --porcelain による自動取得を優先する。
自動取得できない場合は wt list や wt switch の出力から実際に作成されたパスを確認して移動する。
4) stash を pop する(1) で stash した場合のみ)
if [[ "$stashed" == "true" ]]; then
bash .agents/skills/git-branch-worktree/references/stash-carry-pop.sh "<branch-name>"
fi
stash-carry-pop.sh は "worktree-carry: <branch-name>" メッセージで stash を特定して pop するため、既存の他の stash を誤 pop しない。
pop が失敗した場合(コンフリクト等)、変更は stash に残っているので作業は失われない。
git stash list でスタック番号を確認するgit checkout stash@{0} -- <file> でファイル単位の回復も可能作成後は worktree 側で bash scripts/env-setup.sh を実行し、依存インストールと環境セットアップを行う。
Web環境(通常ブランチ)
git checkout -b <branch-name>
git push -u origin <branch-name>
ローカル環境(worktree)
wt switch <branch-name>
既存 worktree への切り替え時も、カレントディレクトリを worktree 内に移動する。
# worktree パスを自動取得して移動
branch_name="<branch-name>"
if worktree_path=$(bash .agents/skills/git-branch-worktree/references/get-worktree-path.sh "$branch_name" 2>/dev/null); then
cd "$worktree_path"
fi
Web環境(通常ブランチ)
git checkout <branch-name>
ローカル環境(worktree)
wt remove <branch-name>
Web環境(通常ブランチ)
git branch -d <branch-name>
git push origin --delete <branch-name>
ローカル環境(worktree)
wt list
Web環境(通常ブランチ)
git branch -a
/opsx:apply で実装を行う際、このスキルを参照して適切なブランチ方式を選択する。
worktree の配置先は Worktrunk の user config で定義する。
.config/wt.toml は project config であり、hooks や list 表示などチーム共有の設定に使う。
worktree-path は .config/wt.toml に書かず、user config(デフォルト: ~/.config/worktrunk/config.toml)に書く。
worktree-path = "~/worktrees/{{ repo }}/{{ branch | sanitize }}"
wt コマンドは使用しないwt switch --create。wt create は使用しないwt remove。wt delete は使用しない