worker-cleanup
Remove completed or abandoned worker worktrees and their branches. Use to clean up after workers finish their tasks.
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.
| name | worker-cleanup |
|---|---|
| description | Remove completed or abandoned worker worktrees and their branches. Use to clean up after workers finish their tasks. |
| allowed-tools | Bash, 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:
Check for uncommitted changes
cd <worktree> && git status --porcelainIf dirty, warn user and ask for confirmation.
Check if branch was merged
git branch --merged main | grep <branch>If not merged, warn user about unmerged commits.
Remove worktree
git worktree remove <worktree-path>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:
- List all worktrees
- Show uncommitted/unmerged status for each
- Require explicit confirmation
- 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
-Dflag to force) - Always show what will be deleted before confirming