| name | worktree-manager |
| description | Proactive git worktree orchestration - detects WIP state (uncommitted changes, stashes, unpushed commits) and offers to isolate work into worktrees. MUST activate BEFORE any implementation task (add, create, build, implement, develop, make, fix, refactor) when the working directory has uncommitted changes or stashes. Also provides dashboard, context recovery, multi-worktree creation, cleanup advisor, and conflict early warning across parallel development sessions. Triggers: any implementation request when WIP exists, "show my worktrees", "what am I working on", "help me manage parallel tasks", "worktree status", "coordinate my work". TRIGGER WHEN: before any implementation task (add, create, build, fix, refactor) when the working directory has uncommitted changes, stashes, or unpushed commits; when the user asks about worktrees, branches, or parallel development. DO NOT TRIGGER WHEN: the repo state is clean and the user is doing a single-file read-only task.
|
Worktree Manager
Orchestrate parallel development through git worktrees. Proactively detect WIP state and offer isolation. Provide dashboards, context recovery, and conflict warnings.
Proactive Trigger
Activate when session starts and working directory has WIP state. Detection:
git status --porcelain
git stash list
git log --oneline @{u}..HEAD 2>/dev/null
If ANY of these return output, present:
I notice you have work in progress:
[X modified files / Y staged files / Z stashes / N unpushed commits]
Would you like to:
A) Move this WIP into a worktree (stash, create worktree, apply there)
B) Continue on current branch (I'll back off)
C) Show details first
Option A - Move WIP to worktree
- Ask for worktree name and description
git stash push -m "wt-migration: <name>"
- Create worktree via
/wt new <name> --desc "..." -- pass name and description directly, never prompt for category or work type
- In the new worktree:
git stash pop
- Confirm: "WIP moved to worktree ''. Current branch is now clean."
Option B - Continue on current branch
Back off for the session. Do not prompt again about WIP state.
Option C - Show details
Show full output of all three detection commands, then re-offer A/B.
Dashboard
When asked "show my worktrees", "what am I working on", or "worktree status":
- Read
.worktrees/registry.json
- For each worktree, gather:
git -C <path> log --oneline <base>..<branch> - commits ahead
git -C <path> log --oneline <branch>..<base> - commits behind base
git -C <path> status --porcelain - uncommitted changes
git -C <path> log -1 --format=%ar - last activity
- Present:
Parallel Development Dashboard
==============================
[1] auth-refactor [active] - 2h ago
Branch: wt/auth-refactor (from master)
+5 commits, 0 behind | 3 modified files
"Refactoring auth middleware for compliance"
[2] fix-login [paused] - 1d ago
Branch: wt/fix-login (from master)
+2 commits, 3 behind | clean
"Fix OAuth login redirect bug"
Warnings:
- fix-login is 3 commits behind master - consider rebasing
Context Recovery
When user says "what am I working on" or returns after a break:
- Show dashboard (above)
- For the most recently active worktree, show:
- Last 3 commit messages
- Files currently modified
- Any TODO/FIXME comments added in the branch diff
- Suggest: "Want to continue with ''? cd "
Multi-Worktree Creation
When user says "I need to work on N things" or lists multiple tasks:
- Parse the tasks from user input
- For each task, derive a worktree name and description from the user's task list -- never prompt for categories or work types
- Show plan:
I'll create 3 worktrees:
1. auth-refactor -> wt/auth-refactor "Refactor auth middleware"
2. fix-login -> wt/fix-login "Fix OAuth redirect bug"
3. add-dashboard -> wt/add-dashboard "New analytics dashboard"
Proceed?
- On confirmation, create all worktrees sequentially via
/wt new flow
- Show final dashboard
Cleanup Advisor
When asked "clean up worktrees" or detected during dashboard:
Identify candidates:
- Done: worktrees where branch is fully merged into base
- Stale: worktrees with no commits in >7 days and status "active"
- Missing: registry entries where path no longer exists
Present:
Cleanup recommendations:
Done (branch merged):
- fix-login: branch wt/fix-login merged into master
-> /wt rm fix-login
Stale (no activity >7 days):
- old-experiment: last commit 12 days ago
-> Pause? Remove?
Missing (path gone):
- deleted-wt: path .worktrees/deleted-wt not found
-> Remove from registry
Conflict Early Warning
When asked "check for conflicts" or proactively during dashboard if >1 active worktree:
- For each pair of active worktrees, check file overlap:
git -C <path1> diff --name-only <base1>...<branch1>
git -C <path2> diff --name-only <base2>...<branch2>
- Find intersection of changed files
- For overlapping files, check if changes touch the same lines:
git -C <path1> diff <base1>...<branch1> -- <file>
git -C <path2> diff <base2>...<branch2> -- <file>
- Report:
Conflict Risk Assessment
========================
auth-refactor vs fix-login:
Overlapping files: 2
src/middleware/auth.ts - LIKELY CONFLICT (both modify lines 45-80)
src/config.ts - low risk (different sections)
auth-refactor vs add-dashboard:
No overlapping files - clean
Recommendation: Merge auth-refactor first, then rebase fix-login.
Commands Reference
Direct the user to /wt command for operations:
/wt new <name> - create worktree
/wt list - compact listing
/wt status - detailed dashboard
/wt pause <name> / /wt resume <name> - toggle status
/wt rm <name> - remove worktree
/wt merge <name> - guided merge flow