一键导入
worktree
Git worktree 生命週期管理 — 建立、列出狀態(含 PR 進度)、清理已 merge 的 worktree
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Git worktree 生命週期管理 — 建立、列出狀態(含 PR 進度)、清理已 merge 的 worktree
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
本 repo 自持 agent 定義目錄索引(complexity-triage / doc-reviewer / doc-updater / tdd-guide),供 design、update 等 skill 的 general-purpose subagent 呼叫時引用定義與檢查清單;本身非直接可呼叫的 skill,不會出現在指令清單中。
萬用助手 — 自動分析情境、盤點可用資源、智慧路由至最佳 agent/skill 組合,一鍵完成複雜工作流。
開發設計 — 自動盤點可用資源,透過 Plan agent 建立完整實作計畫,輸出至 plans/active/<slug>.md 供使用者確認後才進入實作。
更新知識庫 — 依序執行文件更新、審查、context 整理、pattern 提取,將本次 session 的變更沉澱為文件與知識。
貼上 Notion URL,自動抓取頁面需求內容,串接 /design 建立實作計畫。
產生跨 context 接手 prompt — 萃取本次對話的目標、進度、決策、未完成項目,輸出可直接貼到新 session 或 /compact 之後使用的自包含 prompt。
| name | worktree |
| description | Git worktree 生命週期管理 — 建立、列出狀態(含 PR 進度)、清理已 merge 的 worktree |
| allowed-tools | Bash, AskUserQuestion |
| argument-hint | ["status|create <name>|cleanup|prune"] |
管理 worktree 的建立、狀態查詢、清理。統一存放位置為 ~/Documents/<repo>-<name>。
從 $ARGUMENTS 判斷子指令:
| 輸入 | 子指令 |
|---|---|
(空)或 status | status |
create <name> | create |
cleanup | cleanup |
prune | prune |
所有子指令開始前,先取得 repo 資訊:
REPO_ROOT=$(git rev-parse --show-toplevel)
REPO_NAME=$(basename "$REPO_ROOT")
若不在 git repo 中,提示使用者切換到 git repo 目錄。
列出所有 worktree 及其狀態。
步驟:
git worktree list --porcelain 取得所有 worktree
排除 main worktree(即 REPO_ROOT 本身)
對每個 worktree:
gh pr list --head <branch> --state all --json number,state,mergedAt --limit 1 查 PR 狀態du -sh <path> 取得磁碟用量~/Documents/<repo>-* → 標準路徑(無標記).claude/worktrees/ → [legacy]/tmp/ 或 /private/tmp/ → [non-standard][non-standard]一致性檢查(manifest vs. 實際目錄的 set difference):
git worktree list 回傳的路徑,執行 test -d <path> 確認目錄實際存在[orphan],並在輸出最後顯示警告:
警告:偵測到 N 個孤立 worktree metadata(目錄已不存在但 git 仍有紀錄)
執行 `/worktree prune` 清理孤立 metadata。
輸出格式:
Repo: <repo-name> | Base: <current-branch> | N worktrees (+ main)
Path Branch PR State Disk
─────────────────────────────────────────────────────────────────────────────────────────────
~/Documents/<repo>-<name> worktree-<name> — no PR 196M
~/Documents/<repo>-<name2> feat/<name2> #1234 MERGED 1.8G
.claude/worktrees/<name3> worktree-<name3> #5678 OPEN 800M [legacy]
Tip: 有 MERGED/CLOSED 的 PR → `/worktree cleanup`
Tip 行只在有可清理 worktree 時顯示。
建立新 worktree。
步驟:
從 $ARGUMENTS 解析 name(create 後的部分)
計算路徑:~/Documents/<repo>-<name>
計算分支名:worktree-<name>
檢查路徑是否已存在(test -d)→ 已存在則提示並中止
檢查分支是否已存在(git branch --list)→ 已存在則提示並中止
使用 AskUserQuestion 詢問 base branch:
從哪個分支建立 worktree?
- (目前分支)
- master
- 其他(請指定)
建立 worktree:
git worktree add -b worktree-<name> ~/Documents/<repo>-<name> <base-branch>
輸出結果:
Worktree 已建立:
- 路徑:~/Documents/<repo>-<name>
- 分支:worktree-<name>
- Base:<base-branch>
開新 Claude Code session 在該目錄開發:
cd ~/Documents/<repo>-<name> && claude
自動偵測並清理已 merge/closed PR 的 worktree。
單一 repo(互動式):依下列步驟由 skill 執行;
跨 repo 批次:直接呼叫 scripts/worktree-cleanup.sh(dry-run 預設,--apply 才動作;--force-dirty 強制清髒目錄;--include-unknown 將 PR 狀態不明者也列入清理;--root 覆寫掃描根目錄)。
步驟:
git worktree list --porcelain 列出所有非 main worktree
對每個 worktree 判斷是否符合清理條件:
gh pr list --head <branch> --state all --json number,state,mergedAt --limit 1 查詢 PR 狀態gh 指令失敗(非零 exit code)或回傳空結果 → PR 狀態標記為 [unknown],不靜默跳過,仍列入清理候選並在表格中顯示 [unknown](依據:ITIL CMDB Reconciliation — 查詢失敗需明確標記,不得隱式忽略)[unknown] → 列入清理候選,表格標記 [unknown],讓使用者自行判斷git branch --merged <base> | grep <branch>)對符合條件的 worktree,檢查髒目錄:
git -C <path> status --porcelain 若有輸出 → 標記 [dirty] 並警告若無可清理的 worktree → 提示「沒有需要清理的 worktree」並結束
顯示清理清單,使用 AskUserQuestion 確認:
以下 worktree 符合清理條件:
Path Branch PR State Disk Note ~/Documents/- worktree- #1234 MERGED 800M .claude/worktrees/ worktree- — merged 200M [legacy] ~/Documents/- worktree- #5678 CLOSED 1.2G [dirty] ⚠️ 確認清理?(dirty worktree 將被跳過)
- 確認 — 清理上述 worktree(跳過 dirty)
- 全部清理 — 包含 dirty worktree(未 commit 變更將遺失)
- 取消
依使用者選擇執行:
git worktree remove <path>
git branch -d <branch> # 若分支已 merged
操作驗證(expected vs. actual count):
刪除後重新執行 git worktree list --porcelain,確認已刪除的路徑不再出現於列表
逐條對照清理清單(manifest):
| Path | 預期結果 | 實際結果 |
|---|---|---|
| ~/Documents/- | 已移除 | PASS / FAIL |
若任何路徑仍在列表中 → 輸出 [FAIL] 並提示手動執行 git worktree prune
報告結果:
已清理 N 個 worktree,回收 X 磁碟空間。
驗證:N/N 個 worktree 已從 git 列表移除。
清理孤立 worktree metadata(worktree 目錄已被手動刪除但 git 紀錄仍在)。
步驟:
git worktree list --porcelain 檢查每個 worktree 路徑是否存在git worktree prune