Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
When implementation is complete and tests pass, this skill presents 4 options: merge locally, create PR, keep as-is, or discard. It handles the chosen workflow including safe worktree cleanup.
/plugin marketplace add pproenca/dot-claude-old/plugin install workflow@dot-claudeThis skill is limited to using the following tools:
Guide completion of development work by presenting clear options and handling chosen workflow.
Core principle: Verify tests → Present options → Execute choice → Clean up.
Announce at start: "I'm using the finish-branch skill to complete this work."
Before presenting options, verify tests pass:
# Run project's test suite
npm test / cargo test / pytest / go test ./...
If tests fail:
Tests failing (<N> failures). Must fix before completing:
[Show failures]
Cannot proceed with merge/PR until tests pass.
Stop. Don't proceed to Step 2.
If tests pass: Continue to Step 2.
# Try common base branches
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
Or ask: "This branch split from main - is that correct?"
Present exactly these 4 options:
Implementation complete. What would you like to do?
1. Merge back to <base-branch> locally
2. Push and create a Pull Request
3. Keep the branch as-is (I'll handle it later)
4. Discard this work
Which option?
Don't add explanation - keep options concise.
# Switch to base branch
git checkout <base-branch>
# Pull latest
git pull
# Merge feature branch
git merge <feature-branch>
# Verify tests on merged result
<test command>
Then: Cleanup worktree and branch (Step 5)
# Push branch
git push -u origin <feature-branch>
# Create PR
gh pr create --title "<title>" --body "$(cat <<'EOF'
## Summary
<2-3 bullets of what changed>
## Test Plan
- [ ] <verification steps>
EOF
)"
Then: Cleanup worktree (Step 5)
Report: "Keeping branch <name>. Worktree preserved at <path>."
Don't cleanup worktree.
Confirm first:
This will permanently delete:
- Branch <name>
- All commits: <commit-list>
- Worktree at <path>
Type 'discard' to confirm.
Wait for exact confirmation.
If confirmed:
git checkout <base-branch>
git branch -D <feature-branch>
Then: Cleanup worktree (Step 5)
For Options 1, 2, 4:
CRITICAL: Follow this exact sequence to avoid errors.
# Check if current directory is inside a worktree
worktree_path=$(git rev-parse --show-toplevel)
main_repo=$(git rev-parse --path-format=absolute --git-common-dir | sed 's|/\.git$||')
# If worktree_path != main_repo, we're in a worktree
Cannot remove a worktree while standing in it (causes "Permission denied").
# Change to main repository BEFORE attempting removal
cd "$main_repo"
# Now safe to remove worktree
git worktree remove "$worktree_path"
If worktree removal fails with "not a working tree":
# Directory may have been manually deleted - prune stale entries
git worktree prune
Cannot delete a branch while it's checked out in any worktree.
# For merged branches (Options 1, 2)
git branch -d <feature-branch>
# For discarded branches (Option 4)
git branch -D <feature-branch>
If branch deletion fails with "used by worktree":
# Worktree removal may not have completed - verify state
git worktree list
# If worktree still listed, force prune then retry
git worktree prune
git branch -d <feature-branch>
For reference, the full safe cleanup sequence:
# 1. Capture paths while still in worktree
worktree_path=$(git rev-parse --show-toplevel)
main_repo=$(git rev-parse --path-format=absolute --git-common-dir | sed 's|/\.git$||')
branch_name=$(git branch --show-current)
# 2. Leave worktree (CRITICAL - must do before removal)
cd "$main_repo"
# 3. Remove worktree
git worktree remove "$worktree_path" || git worktree prune
# 4. Delete branch (only after worktree gone)
git branch -d "$branch_name" # or -D for force delete
For Option 3: Keep worktree - skip this entire step.
| Option | Merge | Push | Keep Worktree | Cleanup Branch |
|---|---|---|---|---|
| 1. Merge locally | ✓ | - | - | ✓ |
| 2. Create PR | - | ✓ | ✓ | - |
| 3. Keep as-is | - | - | ✓ | - |
| 4. Discard | - | - | - | ✓ (force) |
Skipping test verification
Open-ended questions
Automatic worktree cleanup
No confirmation for discard
Wrong cleanup sequence (deleting branch before worktree)
git branch -d fails with "used by worktree"Removing worktree while standing in it
git worktree remove fails with "Permission denied"cd to main repository BEFORE removing worktreeInconsistent worktree state after partial failures
git worktree prune to clean up stale entriesNever:
Always:
Called by:
Pairs with:
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.