--- name: ctx:cleanup description: Clean up completed worktrees and branches keywords: - clean up - cleanup worktrees - remove worktrees - cleanup tasks - cleanup parallel - remove completed - clean worktrees executable: true --- # Parallel Cleanup - Remove Completed Worktrees You are performing cleanup of completed parallel development work. **Contextune Integration:** This command can be triggered via `/contextune:parallel:cleanup` or natural language like "clean up parallel worktrees", "remove completed tasks". --- ## Execution Workflow ### Step 1: Identify Merged Branches **Check which parallel branches have been merged to main:** ```bash # List all feature branches that are fully merged git branch --merged main | grep "feature/task-" ``` **Expected output:** ``` feature/task-0 feature/task-2 ``` **Interpret:** - Listed branches: Safe to delete (already in main) โœ… - Not listed: Still has unmerged commits โš ๏ธ --- ### Step 2: Show Cleanup Plan (Ask User) **Before deleting anything, show what will be removed:** ``` ๐Ÿงน Cleanup Plan **Will remove:** โœ… Worktree: worktrees/task-0 (merged to main) โœ… Local branch: feature/task-0 (merged) โœ… Remote branch: origin/feature/task-0 (if exists) โœ… Worktree: worktrees/task-2 (merged to main) โœ… Local branch: feature/task-2 (merged) โœ… Remote branch: origin/feature/task-2 (if exists) **Will keep:** โณ Worktree: worktrees/task-1 (not merged - has uncommitted work) Proceed with cleanup? (yes/no) ``` **Ask user for confirmation before proceeding.** --- ### Step 3: Remove Merged Worktrees **For each merged branch, remove its worktree:** ```bash # Remove worktree for task-0 git worktree remove worktrees/task-0 # Remove worktree for task-2 git worktree remove worktrees/task-2 ``` **Expected output per removal:** ``` โœ… Removed worktree 'worktrees/task-0' ``` **If removal fails:** ``` Error: worktree has uncommitted changes ``` โ†’ Skip this worktree, warn user --- ### Step 4: Delete Local Merged Branches **Delete the local branches that were merged:** ```bash # Delete local branch git branch -d feature/task-0 # Delete local branch git branch -d feature/task-2 ``` **Expected output:** ``` Deleted branch feature/task-0 (was abc1234). ``` **If deletion fails:** ``` error: The branch 'feature/task-0' is not fully merged. ``` โ†’ Use `-D` to force (ask user first!) or skip --- ### Step 5: Delete Remote Branches (Optional) **Ask user:** "Also delete remote branches?" **If yes:** ```bash # Delete remote branch git push origin --delete feature/task-0 # Delete remote branch git push origin --delete feature/task-2 ``` **Expected output:** ``` To github.com:user/repo.git - [deleted] feature/task-0 ``` **If no:** Skip this step --- ### Step 6: Archive Completed Tasks (Optional) **Move completed task files to archive:** ```bash # Create archive directory mkdir -p .parallel/archive/completed-$(date +%Y%m%d) # Move completed task files mv .parallel/plans/tasks/task-0.md .parallel/archive/completed-$(date +%Y%m%d)/ mv .parallel/plans/tasks/task-2.md .parallel/archive/completed-$(date +%Y%m%d)/ ``` **Or keep them for reference** (task files are lightweight) --- ### Step 7: Prune Stale References **Clean up git's internal references:** ```bash git worktree prune git remote prune origin ``` **Expected output:** ``` โœ… Pruned worktree references โœ… Pruned remote references ``` --- ### Step 8: Verify Cleanup **Confirm everything was cleaned up:** ```bash # Check remaining worktrees git worktree list # Check remaining feature branches git branch | grep "feature/task-" # Check remote branches git branch -r | grep "feature/task-" ``` **Expected:** Only unmerged tasks should remain --- ### Step 9: Report Results ``` โœ… Cleanup complete! **Removed:** โ€ข 2 worktrees (task-0, task-2) โ€ข 2 local branches โ€ข 2 remote branches **Kept:** โ€ข 1 worktree (task-1 - unmerged) **Remaining parallel work:** - task-1: In progress (3 commits ahead) **Next actions:** โ€ข Continue work on task-1 โ€ข Or run /ctx:status for detailed progress ``` --- ## Contextune-Specific Additions ### Natural Language Triggers Users can trigger this command with: - `/contextune:parallel:cleanup` (explicit) - "clean up parallel worktrees" - "remove completed tasks" - "clean up parallel work" - "delete merged branches" Contextune automatically detects these intents. ### Global Availability Works in ALL projects after installing Contextune: ```bash /plugin install slashsense ``` ### Related Commands When suggesting next steps, mention: - `/contextune:parallel:status` - Check what's left - `/contextune:parallel:execute` - Start new parallel work - `/contextune:parallel:plan` - Plan next iteration --- ## Example User Interactions **Natural Language:** ``` User: "clean up the parallel worktrees" You: [Execute cleanup workflow] 1. Identify merged branches 2. Ask for confirmation 3. Clean up safely 4. Report results ``` **Explicit Command:** ``` User: "/contextune:parallel:cleanup" You: [Execute cleanup workflow] ``` **With Options:** ``` User: "/contextune:parallel:cleanup --dry-run" You: [Show what WOULD be deleted] Don't actually delete anything Provide option to run for real ``` --- ## Safety First Always: - Verify branches are merged before deleting - Ask for user confirmation - Provide recovery instructions if something goes wrong - Support dry-run mode for safety - Never delete unmerged work automatically --- ## Implementation Notes - Use the exact same implementation as `/.claude/commands/parallel/cleanup.md` - Add Contextune branding where appropriate - Support both explicit and natural language invocation - Be conservative - when in doubt, keep rather than delete