Finishing a development branch
Skill oscarqjh/super-agent-skills/plugins/super-agent-skills/skills/finishing-a-development-branch
Full-lifecycle engineering plugin for Claude Code — brainstorm → plan → build → review → ship, with production-grade standards at every step.
npx -y skills add oscarqjh/super-agent-skills --skill finishing-a-development-branchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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
SKILL.md
7.5 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Finishing a Development Branch
Overview
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 finishing-a-development-branch skill to complete this work."
The Process
Step 1: Verify Tests
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 1.5.
Step 1.5: Pre-Merge Checklist
After tests pass but before presenting options, verify:
Code Quality:
- No TODO comments that should be resolved before merge
- No
console.logdebugging statements in production code - Error handling covers expected failure modes
- Lint and type checking pass
Security Quick Check:
- No secrets in code or version control
- Input validation on user-facing endpoints
- See
references/security-checklist.mdfor full checklist
If any items fail, fix them before proceeding to Step 2.
Step 2: Determine Base Branch
# 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?"
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
# 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>
# If tests pass
git branch -d <feature-branch>
Before merging/pushing, verify commit hygiene:
- Each commit does one logical thing (atomic commits)
- Commit messages explain the why, not just the what
- No formatting changes mixed with behavior changes
- No secrets in any commit
Then: Cleanup worktree (Step 5)
Option 2: Push and Create PR
# 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
)"
Before merging/pushing, verify commit hygiene:
- Each commit does one logical thing (atomic commits)
- Commit messages explain the why, not just the what
- No formatting changes mixed with behavior changes
- No secrets in any commit
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 exact confirmation.
If confirmed:
git checkout <base-branch>
git branch -D <feature-branch>
Then: Cleanup worktree (Step 5)
Step 5: Cleanup Worktree
For Options 1, 2, 4:
Check if in worktree:
git worktree list | grep $(git branch --show-current)
If yes:
git worktree remove <worktree-path>
For Option 3: Keep worktree.
If not using a worktree (working directly on a branch), skip Step 5. The pre-merge checklist (Step 1.5) and completion options (Steps 2-4) still apply regardless of whether a worktree is involved.
Step 6: Update Backlog & Changelog
After completing the chosen option (merge, PR, keep, or discard):
- Update backlog: Read
docs/super-agent-skills/backlogs.md. Mark any related "In Progress" items as complete ([x]). Move completed items to the "Completed" section with today's date. - Update changelog: Append a one-line entry to
docs/super-agent-skills/changelog.mdunder[Unreleased]describing what was shipped. - Suggest next: If the backlog "In Progress" is now empty, suggest the next item from "Up Next":
"Backlog and changelog updated. Next in backlog: [next item]. Want to start on it?"
Step 7: Capture Learnings
Before moving on, reflect on this work phase:
| Question | If yes → |
|---|---|
| Did the user correct you about a convention? | Add to CLAUDE.md ## Gotchas |
| Did a command fail due to project-specific setup? | Add to CLAUDE.md ## Commands |
| Did the code reviewer flag a pattern violation? | Add to .claude/rules/ as a path-scoped rule |
| Did the self-healing review loop hit 3 rounds? | Note that the spec/plan was ambiguous — add clarity for next time |
| Did you make the same mistake twice in this session? | Add to CLAUDE.md ## Gotchas (high priority — this will recur) |
If any apply, offer to persist:
"I noticed [learning]. Want me to add this to CLAUDE.md so I remember next time?"
Only persist things Claude would get wrong without being told. Don't add obvious conventions Claude already knows.
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 might need it (Option 2, 3)
- Fix: Only cleanup for Options 1 and 4
No confirmation for discard
- Problem: Accidentally delete work
- Fix: Require typed "discard" confirmation
Anti-Rationalizations
| Thought | Reality |
|---|---|
| "Tests pass, good enough to merge" | Tests are necessary but not sufficient. Check the pre-merge checklist. |
| "I'll remove the console.logs later" | Remove them now. They'll ship to production otherwise. |
| "The TODOs are for future work" | If they must be resolved before this feature works correctly, resolve them now. |
| "One big commit is fine" | One big commit is impossible to review, debug, or revert. Split into atomic commits. |
Red Flags
Never:
- Proceed with failing tests
- Merge without verifying tests on result
- Delete work without confirmation
- Force-push without explicit request
Always:
- Verify tests before offering options
- Present exactly 4 options
- Get typed confirmation for Option 4
- Clean up worktree for Options 1 & 4 only
Integration
Called by:
- subagent-driven-development (Step 7) - After all tasks complete
- executing-plans (Step 5) - After all batches complete
Pairs with:
- using-git-worktrees - Cleans up worktree created by that skill
Gives 0 of the 12 instructions most pr commit review skills give in ~1.8k tokens
Counted across 888 of the 1,342 authors here whose files we hold, read 2026-08-06
- use conventional commits formatin 123 of 888, across 110 files
- keep subject line under 72 charactersin 60 of 888, across 46 files
- delete branches after mergein 50 of 888, across 37 files
- use imperative mood in subject linein 50 of 888, across 41 files
- use imperative mood in commit messagesin 45 of 888
- generate a conventional commit messagein 42 of 888
- make atomic commitsin 37 of 888, across 25 files
- run tests before committingin 36 of 888, across 24 files
- run project test suite to verify clean baselinein 35 of 888, across 7 files
- run detected project setup commandsin 34 of 888, across 6 files
- wrap commit body at 72 charactersin 32 of 888, across 25 files
- split unrelated changes into separate commitsin 32 of 888, across 27 files
Said here and by no other author read
- keep branch completion options concise
- verify commit hygiene before merging or pushing
- update backlog and changelog after completion
- capture and offer to persist learnings
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.