worker-cleanup

schmug's avatarfrom schmug

Remove completed or abandoned worker worktrees and their branches. Use to clean up after workers finish their tasks.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 3, 2026

When & Why to Use This Skill

The Worker Cleanup skill is a specialized utility designed to automate the management and removal of Git worktrees and branches. It streamlines the post-development workflow by identifying and cleaning up completed or abandoned tasks, ensuring a clutter-free environment while preventing data loss through rigorous safety checks for uncommitted changes and merge status.

Use Cases

  • Automated Agent Cleanup: Efficiently remove temporary worktrees and branches generated by AI coding agents or automated workers after they complete their assigned tasks.
  • Repository Maintenance: Bulk clean merged branches and their corresponding worktrees to optimize local storage and maintain project organization using the --all-merged flag.
  • Safe Workspace Management: Safely decommission abandoned feature branches by verifying their status against the main branch and checking for unsaved progress before deletion.
nameworker-cleanup
descriptionRemove completed or abandoned worker worktrees and their branches. Use to clean up after workers finish their tasks.
allowed-toolsBash, Read

Worker Cleanup Skill

Remove completed or abandoned worker worktrees.

Usage

/worker-cleanup [worktree-path-or-branch]
/worker-cleanup --all-merged
/worker-cleanup --all

Examples

/worker-cleanup ../artemis-issue-42
/worker-cleanup feat/issue-42-retry
/worker-cleanup --all-merged

Instructions

Single Worktree Cleanup

When given a specific worktree or branch:

  1. Check for uncommitted changes

    cd <worktree> && git status --porcelain
    

    If dirty, warn user and ask for confirmation.

  2. Check if branch was merged

    git branch --merged main | grep <branch>
    

    If not merged, warn user about unmerged commits.

  3. Remove worktree

    git worktree remove <worktree-path>
    
  4. Delete branch if merged

    git branch -d <branch>  # Safe delete (fails if unmerged)
    

Cleanup All Merged (--all-merged)

Find and remove all worktrees whose branches are merged to main:

# Get merged branches
MERGED=$(git branch --merged main | grep -v main)

# For each, remove worktree and branch
for branch in $MERGED; do
  worktree=$(git worktree list | grep "$branch" | awk '{print $1}')
  if [ -n "$worktree" ]; then
    git worktree remove "$worktree"
    git branch -d "$branch"
  fi
done

Cleanup All (--all)

DANGEROUS - Removes all non-main worktrees:

  1. List all worktrees
  2. Show uncommitted/unmerged status for each
  3. Require explicit confirmation
  4. Remove each worktree and optionally delete branches

Output

Show cleanup summary:

Cleaned up 3 worktrees:
  - ../artemis-issue-42 (feat/issue-42-retry) - merged, deleted
  - ../artemis-feat-logging (feat/add-logging) - merged, deleted
  - ../artemis-old-experiment (test/old) - unmerged, branch kept

Remaining worktrees: 1
  - ../artemis-wip (feat/work-in-progress) - has uncommitted changes

Safety

  • Never remove main worktree
  • Warn before removing worktrees with uncommitted changes
  • Keep unmerged branches by default (use -D flag to force)
  • Always show what will be deleted before confirming