Finishing a Development Branch

SkillFiles & storage

Use when the user wants to commit, push, and open a pull request for the current changes. Stages relevant files, writes a descriptive commit message, pushes the branch, opens a PR against main, and posts an /oc review comment so opencode automatically reviews and approves if ready.

Available today. Use it from your connected AI after setup.

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 2ssk/dot-files in .claude/skills/ship/SKILL.md and read by ahel’s review.

Guide completion of development work. Verify tests, present clear options, execute the chosen workflow, clean up.

Core Principle

VERIFY TESTS → PRESENT OPTIONS → EXECUTE CHOICE → CLEAN UP.
No merge without verification. No discard without confirmation.

Steps

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: Stop. Report failures. Don't proceed. 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

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?

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

Option 2: Push and Create PR
git push -u origin <feature-branch>
gh pr create --title "<title>" --body "<body>"

Then: Cleanup worktree

Option 3: Keep As-Is

Report: "Keeping branch . Worktree preserved at ." Don't cleanup worktree.

Option 4: Discard

Confirm first: Require typed "discard" confirmation. Then: Delete branch + cleanup worktree. Also: Ask user if they want to remove the change directory from techneering/changes/. If yes, move to techneering/archive/YYYY-MM-DD-<name>-discarded/.

Step 5: Cleanup Worktree

For Options 1, 2, 4:

git worktree list | grep $(git branch --show-current)
# If in worktree:
git worktree remove <worktree-path>

Red Flags

ThoughtReality
"Tests passed before, no need to rerun"Must rerun before merge — context may have changed
"Discard without confirmation"Discard is irreversible — must have typed confirmation
"Force push is fine"Force push may overwrite others' work unless the user explicitly asks
"Skip merge, push directly"Unmerged branches may have hidden conflicts
"Not enough options"Exactly 4 options — don't add or remove any

Common Rationalizations

ExcuseReality
"Tests should pass""Should" is not verification — run to confirm
"Small changes don't need a PR"Small changes can still conflict — PR is a safety net
"Just force push"Not allowed unless the user explicitly requests it
"Discard without confirmation"Discard is irreversible — must confirm
"Worktree doesn't need cleanup"Leftover worktrees cause confusion and disk bloat

Quick Reference

DimensionKey point
PreconditionAll tests must pass
4 optionsMerge / PR / Keep / Discard
ConfirmationDiscard requires typed "discard"
Worktree cleanupOptions 1/2/4 clean up, option 3 keeps
ForbiddenUnconfirmed discard / force push / skipping tests

Next Step

When done:

  • Normal case (options 1 or 2) → invoke tn:vault to archive the change
  • User chose keep (option 3) → end, wait for user follow-up
  • User chose discard (option 4) → clean change directory (move to archive or delete) → end
  • User requests stop → end the current flow

Guardrails

  • Never proceed with failing tests
  • Never merge without verifying tests on result
  • Never delete work without typed "discard" confirmation
  • Never force-push without explicit user request
  • Always present exactly 4 options
  • Announce at start: "I'm using the tn:ship skill to complete this work."

Signals

GitHub stars
251
Forks
12
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
ship
Source
github.com/2ssk/dot-files