worktree-done

star 0

worktree開発完了後のクリーンアップ。/worktree-done コマンドで使用。PRマージ確認→worktree削除→ブランチ削除を安全に実行。

YH-05 By YH-05 schedule Updated 1/23/2026

name: worktree-done description: worktree開発完了後のクリーンアップ。/worktree-done コマンドで使用。PRマージ確認→worktree削除→ブランチ削除を安全に実行。 allowed-tools: Read, Bash

Worktree Done - Worktree 完了・クリーンアップ

worktree での開発完了後、PR がメインブランチにマージされたことを確認してから、worktree とブランチを安全に削除します。

目的: マージ確認 → worktree削除 → ブランチ削除の安全なクリーンアップ

使用例

# ブランチ名を指定してクリーンアップ(必須)
/worktree-done feature/user-auth
/worktree-done fix/login-bug

ステップ 0: 現在地とworktree情報の確認

0.1 引数の確認

引数がない場合: エラーを表示して処理を中断

エラー: ブランチ名を指定してください。

使用方法:
  /worktree-done <branch-name>

例:
  /worktree-done feature/user-auth
  /worktree-done fix/login-bug

現在のworktree一覧:
<git worktree list の出力>

0.2 worktree一覧の取得

git worktree list

0.3 対象worktreeの特定

指定されたブランチ名から対象worktreeを特定する:

  • worktree一覧からブランチ名が一致するエントリを探す
  • 見つからない場合はエラー

0.4 worktreeパスの取得

# worktree一覧からブランチ名に対応するパスを取得
git worktree list | grep "<branch-name>"

worktreeが見つからない場合:

エラー: ブランチ '<branch-name>' のworktreeが見つかりません。

現在のworktree一覧:
<git worktree list の出力>

ブランチ名を確認してください。

0.5 ブランチの検証

mainブランチの場合:

エラー: mainブランチのworktreeは削除できません。
対象: <worktree-path>

feature/*, fix/* などの作業ブランチのworktreeを指定してください。

ステップ 1: PRの検索と状態確認

1.1 関連PRの検索

gh pr list --head <branch-name> --state all --json number,state,mergedAt,url,title

1.2 PR状態による分岐

ケースA: PRが存在しない

PRが見つかりません。

ブランチ: <branch-name>
worktree: <worktree-path>

次のステップ:
1. 変更をコミット & プッシュ: /push
2. PRを作成: /commit-and-pr
3. PRがマージされてから再度 /worktree-done を実行

処理を中断する。

ケースB: PRがオープン(OPEN)

PRはまだマージされていません。

PR: #<number> - <title>
URL: <url>
状態: オープン

次のステップ:
1. PRをレビュー & マージしてください
2. マージ後に再度 /worktree-done を実行

PRを確認: gh pr view <number> --web

処理を中断する。

ケースC: PRがマージ済み(MERGED)

✓ PRがマージされています

PR: #<number> - <title>
マージ日時: <mergedAt>

クリーンアップを続行します...

→ ステップ1.5へ進む

ケースD: PRがクローズ(CLOSED, 未マージ)

警告: PRはマージされずにクローズされています。

PR: #<number> - <title>
状態: クローズ(未マージ)

オプション:
1. 開発内容を破棄してworktreeを削除(--force)
2. PRを再オープン: gh pr reopen <number>
3. 処理を中断

AskUserQuestion で確認を求める。


ステップ 1.5: 関連IssueのGitHub Project更新

PRがマージされた場合、関連するIssueをGitHub Projectで「Done」に移動する。

1.5.1 関連Issueの特定

PRの本文から関連Issueを抽出:

gh pr view <pr-number> --json body,closingIssuesReferences --jq '.closingIssuesReferences[].number'

注意: closes #XX, fixes #XX, resolves #XX などのキーワードで紐付けられたIssueが対象

1.5.2 各IssueのProject情報取得

各Issueについて、所属するGitHub Projectを確認:

gh issue view <issue-number> --json projectItems --jq '.projectItems[] | "\(.project.title)|\(.project.number)"'

1.5.3 ProjectのフィールドID取得

各Projectについて、StatusフィールドのIDとDoneオプションのIDを取得:

# Statusフィールドの情報を取得
gh project field-list <project-number> --owner <owner> --format json | \
  jq -r '.fields[] | select(.name == "Status") | "\(.id)|\(.options[] | select(.name == "Done") | .id)"'

1.5.4 ステータスを「Done」に更新

# ProjectアイテムIDを取得
ITEM_ID=$(gh project item-list <project-number> --owner <owner> --format json | \
  jq -r '.items[] | select(.content.number == <issue-number>) | .id')

# ステータスを更新
gh project item-edit \
  --project-id <project-id> \
  --id $ITEM_ID \
  --field-id <status-field-id> \
  --single-select-option-id <done-option-id>

1.5.5 更新結果の表示

GitHub Project のステータスを更新しました:

Project: <project-name>
  - Issue #<number>: <title> → Done ✓
  - Issue #<number>: <title> → Done ✓

(Projectに未登録のIssueはスキップされます)

関連Issueがない場合:

PRに関連するIssueが見つかりませんでした。
GitHub Projectの更新をスキップします。

→ ステップ2へ進む


ステップ 2: 未保存変更の確認

2.1 未コミット変更の確認

git -C <worktree-path> status --porcelain

未コミット変更がある場合:

警告: worktreeに未コミットの変更があります。

変更ファイル:
<modified files>

オプション:
1. 変更をコミット: /push を実行
2. 変更を破棄: git checkout . && git clean -fd
3. 処理を中断

AskUserQuestion で確認を求める。

2.2 未プッシュコミットの確認

git -C <worktree-path> log @{u}..HEAD --oneline 2>/dev/null

未プッシュコミットがある場合:

警告: worktreeに未プッシュのコミットがあります。

未プッシュコミット:
<commit list>

これらのコミットはPRに含まれていない可能性があります。

オプション:
1. コミットをプッシュ: /push を実行
2. コミットを無視してクリーンアップを続行(--force)
3. 処理を中断

AskUserQuestion で確認を求める。


ステップ 3: Worktree削除

3.1 メインリポジトリのパス特定

# worktreeリストからメインリポジトリを特定
git worktree list | head -1 | awk '{print $1}'

3.2 Worktree削除の実行

# メインリポジトリから削除コマンドを実行
git -C <main-repo-path> worktree remove <worktree-path>

削除に失敗した場合:

# 強制削除(未コミット変更がある場合など)
git -C <main-repo-path> worktree remove --force <worktree-path>

3.3 参照のクリーンアップ

git -C <main-repo-path> worktree prune

ステップ 4: ブランチ削除

4.1 ローカルブランチ削除

# マージ済みブランチの安全な削除
git -C <main-repo-path> branch -d <branch-name>

削除失敗時(未マージ扱い):

# 強制削除(PRがマージ済みなので安全)
git -C <main-repo-path> branch -D <branch-name>

4.2 リモートブランチ削除

git -C <main-repo-path> push origin --delete <branch-name>

リモートブランチが既に削除されている場合: 警告をスキップ


ステップ 5: 完了報告

✓ Worktree のクリーンアップが完了しました

削除したworktree: <worktree-path>
削除したブランチ: <branch-name>(ローカル + リモート)
マージされたPR: #<pr-number>

GitHub Project 更新:
  - Issue #<number>: Done ✓
  - Issue #<number>: Done ✓

メインリポジトリ: <main-repo-path>

次のステップ:
- 新しい開発を開始: /worktree <feature-name>
- メインリポジトリに移動: cd <main-repo-path>

オプション

オプション 説明
--force 未マージPRや未コミット変更があっても強制削除
--dry-run 実際には削除せず、何が削除されるか表示
--keep-remote リモートブランチを削除しない

エラーハンドリング

E1: worktreeが見つからない

エラー: 指定されたworktreeが見つかりません。

指定パス: <path>

現在のworktree一覧:
<git worktree list output>

正しいパスを指定してください。

E2: GitHub CLI未設定

エラー: GitHub CLI (gh) が設定されていません。

PRのマージ状態を確認できないため、処理を中断します。

セットアップ方法:
1. gh auth login
2. 認証を完了
3. 再度 /worktree-done を実行

E3: ネットワークエラー

エラー: GitHubへの接続に失敗しました。

ネットワーク接続を確認してください。
オフラインでクリーンアップする場合は --force オプションを使用してください。

E4: パーミッションエラー

エラー: ディレクトリを削除できません。

worktree: <path>
理由: パーミッション不足

手動で削除してください:
rm -rf <path>
git worktree prune

関連コマンド

コマンド 説明
/worktree 新しいworktreeとブランチを作成
/push 変更をコミット & プッシュ
/commit-and-pr コミット & PR作成

ワークフロー例

/worktree feature/new-api     # 1. worktree作成
cd ../.worktrees/.../feature-new-api
# 開発作業...
/commit-and-pr                # 2. PR作成
# PRレビュー & マージ(GitHub上)
/worktree-done                # 3. クリーンアップ

完了条件

このワークフローは、以下の全ての条件を満たした時点で完了:

  • ステップ 1: PRがMERGED状態であることが確認されている
  • ステップ 1.5: 関連IssueがGitHub Projectで「Done」に更新されている
  • ステップ 2: 未保存変更がないか、ユーザーが確認済み
  • ステップ 3: worktreeが削除されている(git worktree list で確認)
  • ステップ 4: ローカル・リモートブランチが削除されている
  • ステップ 5: 完了報告がユーザーに表示されている
Install via CLI
npx skills add https://github.com/YH-05/quants --skill worktree-done
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator