Skill

worktree-cleanup

Install
1
Install the plugin
$
npx claudepluginhub synaptic-labs-ai/pact-plugin

Want just this skill?

Add to a custom plugin, then install with one command.

Description

Remove a git worktree and its branch after PACT workflow completes. Use when: PR is merged, sub-scope work is consolidated, or manual cleanup is needed. Triggers on: worktree cleanup, remove worktree, delete worktree, branch cleanup.

Tool Access

This skill uses the workspace's default tool permissions.

Skill Content

Worktree Cleanup

Remove a git worktree and its associated branch after work is complete. Typically invoked after a PR is merged, after CONSOLIDATE merges sub-scope branches, or manually by the user.

When to Use

  • After peer-review merges a PR (automatic cleanup)
  • After CONSOLIDATE merges sub-scope branches
  • Manual cleanup of stale worktrees (/PACT:worktree-cleanup)
  • User aborts a workflow and wants to clean up

Process

Follow these steps in order. Surface all git errors clearly — the user resolves them.

Step 1: Identify Target

Determine which worktree to remove.

If a worktree path or branch name was provided: Use that directly.

If no target was specified: List all worktrees and ask the user which to clean up.

git worktree list

Present the list and ask: "Which worktree should I remove?"

Step 2: Navigate to Repo Root and Remove the Worktree

Before removal, the shell's working directory must NOT be inside the worktree being removed. Compute the repo root, cd to it, and remove the worktree — all in a single bash call. This is critical because if the shell CWD is inside the deleted worktree, all subsequent commands will fail.

# Compute repo root, cd there, then remove the worktree — must be ONE bash call
MAIN_GIT_DIR=$(git rev-parse --git-common-dir)
REPO_ROOT=$(cd "$(dirname "$MAIN_GIT_DIR")" && pwd)
cd "$REPO_ROOT" && git worktree remove "$REPO_ROOT/.worktrees/{branch}"

Note: Claude Code's Bash tool persists the working directory between calls. After this command, subsequent calls will run from $REPO_ROOT.

If removal fails (uncommitted changes):

Git will refuse with an error like: fatal: cannot remove: '.worktrees/{branch}' has changes.

Surface this to the user:

Cannot remove worktree — uncommitted changes exist in .worktrees/{branch}.
Options:
  1. Commit or stash changes first, then retry cleanup
  2. Force removal: git worktree remove --force "$REPO_ROOT/.worktrees/{branch}"
     (This discards uncommitted changes permanently)

Do NOT force-remove automatically. The user must choose.

Step 3: Clean Up Paused State

Remove any paused-state.json left from a previous /PACT:pause invocation. The slug is the project directory basename (same as session_init.py's derivation).

rm -f ~/.claude/pact-sessions/{slug}/paused-state.json

This is best-effort — skip silently if the file or directory doesn't exist.

Step 4: Delete the Branch

After the worktree is removed, delete the local branch.

git branch -d {branch}

If deletion fails (branch not fully merged):

Git will refuse with an error like: error: branch '{branch}' is not fully merged.

Surface this to the user:

Cannot delete branch — '{branch}' is not fully merged.
Options:
  1. Merge the branch first, then retry cleanup
  2. Force delete: git branch -D {branch}
     (This deletes the branch even if unmerged — changes may be lost)

Do NOT force-delete automatically. The user must choose.

Step 5: Report

Cleaned up worktree for {branch}
  Worktree removed: .worktrees/{branch}
  Branch deleted: {branch}

Edge Cases

CaseHandling
Worktree has uncommitted changesSurface git error, offer commit/stash or force options
Branch not fully mergedSurface git error, offer merge or force-delete options
Worktree directory already goneRun git worktree prune to clean up stale refs, then delete branch
Currently inside the target worktreeNavigate to main repo root before removal
No worktrees existReport "No worktrees found"
Multiple worktrees for related branchesList all, let user choose which to remove
Stats
Stars52
Forks11
Last CommitMar 20, 2026
Actions

Similar Skills