| name | sp-finishing-a-development-branch |
| description | Use when implementation is complete and all tests pass, to decide how to integrate the work. Guides branch completion by presenting 4 structured options: merge locally, push and create a PR, keep as-is, or discard. |
| tags | ["workflow","git","branching","completion","integration"] |
| version | 1.0.0 |
| risk | external-action |
| triggers | ["finish development branch","finishing a development branch","complete the branch","wrap up the branch","ready to merge","ready for PR","branch complete","integrate my work"] |
| requirements | {"cli":["git"],"env":[]} |
| upstream_ref | skills/finishing-a-development-branch/SKILL.md |
| author | AlphaComposite |
| license | MIT |
| dependencies | ["sp-verification-before-completion","sp-using-git-worktrees","sp-subagent-driven-development","sp-executing-plans"] |
Finishing a Development Branch
Overview
Guide completion of development work by presenting clear options and handling the chosen workflow.
Core principle: Verify tests → Present options → Execute choice → Clean up.
Announce at start: "I'm using the sp-finishing-a-development-branch skill to complete this work."
The Process
Step 1: Verify Tests
Before presenting options, verify tests pass:
npm 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.
Step 2: Determine Base Branch
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?"
Step 3: Present Options
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.
Step 4: Execute Choice
Option 1: Merge Locally
git checkout <base-branch>
git pull
git merge <feature-branch>
<test command>
git branch -d <feature-branch>
Then: Cleanup worktree (Step 5)
Option 2: Push and Create a Pull Request
git push -u origin <feature-branch>
After pushing, create a Pull Request via your preferred method (GitHub web UI, gh pr create, GitLab MR, etc.) with:
- A clear title describing the change
- A summary of what changed (2–3 bullets)
- A test plan showing how to verify the work
Then: Cleanup worktree (Step 5)
Option 3: Keep As-Is
Report: "Keeping branch <name>. Worktree preserved at <path>."
Don't cleanup worktree.
Option 4: Discard
Confirm first:
This will permanently delete:
- Branch <name>
- All commits: <commit-list>
- Worktree at <path>
Type 'discard' to confirm.
Wait for the exact word discard. Do not proceed without it.
If confirmed:
git checkout <base-branch>
git branch -D <feature-branch>
Then: Cleanup worktree (Step 5)
Step 5: Cleanup Worktree
For Options 1, 2, and 4:
Check if in a worktree:
git worktree list | grep $(git branch --show-current)
If yes:
git worktree remove <worktree-path>
For Option 3: Keep worktree intact.
Quick Reference
| Option | Merge | Push | Keep Worktree | Cleanup Branch |
|---|
| 1. Merge locally | ✓ | — | — | ✓ |
| 2. Create PR | — | ✓ | ✓ | — |
| 3. Keep as-is | — | — | ✓ | — |
| 4. Discard | — | — | — | ✓ (force) |
Common Mistakes
Skipping test verification
- Problem: Merge broken code, create failing PR
- Fix: Always verify tests before offering options
Open-ended questions
- Problem: "What should I do next?" → ambiguous
- Fix: Present exactly 4 structured options
Automatic worktree cleanup
- Problem: Remove worktree when it might still be needed (Options 2 and 3)
- Fix: Only cleanup for Options 1 and 4
No confirmation for discard
- Problem: Accidentally delete work
- Fix: Require typed "discard" confirmation
Red Flags
Never:
- Proceed with failing tests
- Merge without verifying tests on the merged result
- Delete work without typed confirmation
- Force-push without explicit request
Always:
- Verify tests before offering options
- Present exactly 4 options
- Get typed "discard" confirmation for Option 4
- Clean up worktree for Options 1 and 4 only
Integration
Called by:
sp-subagent-driven-development — After all tasks complete
sp-executing-plans — After all batches complete
Pairs with:
sp-using-git-worktrees — Cleans up the worktree created by that skill
sp-verification-before-completion — Run this before step 1 to confirm tests actually pass