Skip to main content
GeneralTheBushidoCollective

git-worktrees-worktree-management

Manage git worktrees - list active worktrees, prune stale ones, and merge work back into the main branch.

Stars
162
Source
TheBushidoCollective/han
Updated
2026-04-28
Slug
TheBushidoCollective--han--worktree-management
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/TheBushidoCollective/han/HEAD/plugins/patterns/git-worktrees/skills/worktree-management/SKILL.md -o .claude/skills/worktree-management.md

Drops the SKILL.md into .claude/skills/worktree-management.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Worktree Management

Name

git-worktrees:worktree-management - Manage git worktrees created by subagents

Synopsis

/worktree-management [list|prune|merge]

Description

Manages git worktrees that were created by subagents for isolation. Provides commands to list active worktrees, prune stale ones, and merge completed work back into the current branch.

Implementation

List Worktrees

Show all active worktrees and their status:

git worktree list

For worktrees in the .worktrees/ directory, also show their commit status:

for wt in .worktrees/*/; do
  if [ -d "$wt" ]; then
    echo "=== $(basename "$wt") ==="
    git -C "$wt" log --oneline -5
    echo ""
  fi
done

Prune Stale Worktrees

Remove worktrees that are no longer needed:

# Remove all worktrees in .worktrees/
git worktree list --porcelain | grep "^worktree " | grep ".worktrees/" | while read -r line; do
  wt_path="${line#worktree }"
  git worktree remove "$wt_path"
done

# Clean up any stale entries
git worktree prune

Merge Work Back

To merge a specific worktree's work into the current branch:

  1. Identify the worktree and its commits
  2. Cherry-pick or merge the commits into the main working tree
  3. Remove the worktree after successful merge
# From the main working tree:
WORKTREE_NAME="agent-xxx"
WORKTREE_BRANCH=$(git -C ".worktrees/${WORKTREE_NAME}" rev-parse HEAD)

# Cherry-pick the commits
git cherry-pick "${WORKTREE_BRANCH}"

# Or create a merge
git merge "${WORKTREE_BRANCH}" --no-ff -m "merge: integrate work from ${WORKTREE_NAME}"

# Clean up
git worktree remove ".worktrees/${WORKTREE_NAME}"

Example Interaction

User: List my active worktrees

Agent:

$ git worktree list
/path/to/repo                  abc1234 [main]
/path/to/repo/.worktrees/agent-1707123456-12345  def5678 (detached HEAD)
/path/to/repo/.worktrees/agent-1707123789-67890  ghi9012 (detached HEAD)

=== agent-1707123456-12345 ===
def5678 feat: implement user authentication
abc1234 Initial commit

=== agent-1707123789-67890 ===
ghi9012 fix: resolve database connection issue
abc1234 Initial commit

User: Merge the auth worktree and clean up

Agent: Cherry-picks the auth commit, removes the worktree, and prunes stale entries.