From reviw-plugin
Safely deletes merged Git worktrees after verifying git merge status and GitHub PR closure via gh CLI. Handles single branch or 'all' for batch cleanup post-PR merge.
How this skill is triggered — by the user, by Claude, or both
Slash command
/reviw-plugin:delete-worktreeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
マージ済みのworktreeを安全に削除する。
マージ済みのworktreeを安全に削除する。 git的にマージ済み + PR的にもマージ済みであることを確認してから削除する。
$ARGUMENTS = 削除対象のブランチ名、または all(一括クリーンアップ)
git wt list は禁止("list" というworktreeが作成されてしまう)git wt(引数なし)を使うgit worktree list を使う# 引数なしで一覧表示
git wt
引数あり(単一削除): $ARGUMENTS で指定されたブランチを対象とする
引数が "all"(一括クリーンアップ): 全worktreeを走査し、マージ済みのものを検出
# 各worktreeのブランチについてマージ状態を確認
for branch in $(git worktree list --porcelain | grep 'branch refs/heads/' | sed 's|branch refs/heads/||'); do
# デフォルトブランチ(main/master)はスキップ
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||')
[ "$branch" = "$DEFAULT_BRANCH" ] && continue
echo "--- $branch ---"
# gitマージ状態
if git branch --merged "$DEFAULT_BRANCH" | grep -q "$branch"; then
echo " git: merged"
else
echo " git: NOT merged"
fi
# PRマージ状態
gh pr list --head "$branch" --state merged --json number,title --jq '.[] | " PR #\(.number): \(.title) (merged)"'
gh pr list --head "$branch" --state open --json number,title --jq '.[] | " PR #\(.number): \(.title) (OPEN)"'
done
以下の全てを確認:
| チェック項目 | コマンド | 合格条件 |
|---|---|---|
| gitマージ済み | git branch --merged <default> | ブランチが含まれる |
| PRマージ済み | gh pr list --head <branch> --state merged | 結果が1件以上 |
| 未コミット変更なし | git -C .worktree/<branch> status --porcelain | 出力が空 |
PRが存在しない場合: 警告を表示し、ユーザーに確認する
Question: "ブランチ <branch> にはPRがありません。削除してよいですか?"
Header: "確認"
Options:
1. "削除する" - worktreeとブランチを削除
2. "スキップ" - このブランチは残す
gitで未マージの場合: git wt -d が自動で失敗するので安全。強制削除が必要なら:
Question: "ブランチ <branch> はデフォルトブランチにマージされていません。強制削除しますか?"
Header: "未マージ"
Options:
1. "強制削除 (-D)" - git wt -D で強制削除
2. "スキップ" - このブランチは残す
# worktree + ローカルブランチ削除(マージ済みのみ)
git wt -d <branch>
# 強制削除が必要な場合
git wt -D <branch>
Question: "リモートブランチ origin/<branch> も削除しますか?"
Header: "リモート"
Options:
1. "削除する (Recommended)" - git push origin --delete <branch>
2. "残す" - リモートブランチは残す
git push origin --delete <branch>
| ブランチ | worktree | ローカル | リモート | PR |
|---------|----------|---------|---------|-----|
| feature/xxx | 削除済み | 削除済み | 削除済み | #123 (merged) |
| fix/yyy | 削除済み | 削除済み | スキップ | なし |
git wt list の使用("list" worktreeが作られる)npx claudepluginhub joshuarweaver/cascade-code-general-misc-1 --plugin kazuph-reviwInteractively selects and safely removes a specific git worktree for issues, checking if linked issue is closed, branch merged into default, and no uncommitted changes before removal, with optional branch deletion.
Removes git worktrees and associated branches after PR merges, sub-scope consolidation, or manual cleanup. Lists worktrees if unspecified, handles uncommitted changes and paused states.
Analyzes and safely cleans up local git branches and worktrees, categorizing them as merged, squash-merged, superseded, or active work before deletion.