Finishing a Development Branch
SkillAI & modelsUse 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
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Finishing a Development Branch skill
What this skill tells your AI
The instructions your AI receives, as published by heymegabyte/claude-skills in 20-superpowers/finishing-a-development-branch/SKILL.md and read by ahel’s review.
Integrate finished work: verify → detect environment → choose integration → execute → clean up.
Under [[no-staging-doctrine]] + [[main-only-branch]] the default is merge to main + auto-push — diffs clearing all gates auto-merge. Don't offer "keep the branch as-is, handle it later"; finish the work this turn. PR only when a human review is explicitly wanted.
Announce: "Using the finishing-a-development-branch skill to complete this work."
Step 1 — gate before integrating
- Run the project test suite. Failures block — show them, fix first, do NOT integrate broken code.
- Full deploy + prod-E2E gate is
[[verification-loop]]— local green ≠ done.
Step 2 — detect environment
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
GIT_DIR == GIT_COMMON→ normal repo, no worktree cleanup.GIT_DIR != GIT_COMMON, named branch → worktree, provenance-based cleanup (Step 4).- Detached HEAD → externally managed; no local-merge, no cleanup (push-as-branch or discard only).
- Base branch:
git merge-base HEAD main || git merge-base HEAD master, or confirm with the user.
Step 3 — integrate
-
Merge to base (default).
cdto main repo root first (CWD safety), merge, re-run tests on the merged result, then Step 4 cleanup, thengit branch -d. Always auto-push the merged base.MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel); cd "$MAIN_ROOT" git checkout <base> && git pull && git merge <feature> && <test cmd> && git push -
PR (review wanted).
git push -u origin <feature>. Do NOT clean up the worktree — it's needed to iterate on feedback. -
Discard (abandon). Require a typed
discardconfirmation listing branch + commits + worktree path. Thencdto main root, Step 4 cleanup,git branch -D <feature>.
Step 4 — cleanup (merge + discard only; PR preserves the worktree)
WORKTREE_PATH=$(git rev-parse --show-toplevel)
- Normal repo (
GIT_DIR == GIT_COMMON) → nothing to remove. - Worktree under
.worktrees/orworktrees/→ we own it. From main root (never from inside the worktree):git worktree remove "$WORKTREE_PATH" && git worktree prune. - Anywhere else → harness-owned; use its exit tool (
ExitWorktree) or leave in place. Never remove a worktree you didn't create.
Ordering invariants (why the sequence is fixed)
- Merge BEFORE removing the worktree —
git branch -dfails while a worktree references the branch. cdto main root BEFOREgit worktree remove— fails silently when CWD is inside the target.git worktree pruneafter removal self-heals stale registrations.
See
[[no-staging-doctrine]]·[[main-only-branch]]·[[verification-loop]]using-git-worktrees— the isolation setup this finishes
Signals
- GitHub stars
- 21
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
finishing-a-development-branch-heymegabyte- Source
- github.com/heymegabyte/claude-skills