From gangsta
Guides clean exit from git development branches when implementation complete and tests pass: verifies tests, presents merge/PR/keep/discard options, executes choice, cleans up worktrees.
npx claudepluginhub kucherenko/gangsta --plugin gangstaThis skill uses the workspace's default tool permissions.
Every operation needs a clean exit. Guide completion of development work by verifying, presenting options, executing, and cleaning up.
Verifies tests pass on completed feature branch, presents options to merge locally, create GitHub PR, keep as-is or discard; executes choice and cleans up worktree.
Verifies tests pass on completed dev branch, then presents options to merge locally, create GitHub PR, keep as-is, or discard; executes choice and cleans up worktree.
Finishes development branches: verifies tests pass, presents options for local merge, push and GitHub PR, keep as-is, or discard; executes git commands and cleans up worktrees.
Share bugs, ideas, or general feedback.
Every operation needs a clean exit. Guide completion of development work by verifying, presenting options, executing, and cleaning up.
Core principle: Verify tests → Present options → Execute choice → Clean up.
Announce at start: "Initiating exit strategy for this branch."
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 exiting:
[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 the Don: "This branch split from main — is that correct?"
Present exactly these 4 options:
Implementation complete. What's the exit strategy?
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>
# If tests pass
git branch -d <feature-branch>
Then: Cleanup safehouse (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: Report PR URL to the Don. Preserve safehouse.
Report: "Keeping branch . Safehouse preserved at ."
Don't cleanup safehouse.
Confirm first:
This will permanently delete:
- Branch <name>
- All commits: <commit-list>
- Safehouse at <path>
Type 'discard' to confirm.
Wait for exact confirmation from the Don.
If confirmed:
git checkout <base-branch>
git branch -D <feature-branch>
Then: Cleanup safehouse (Step 5)
For Options 1, 2, 4:
Check if in a safehouse (worktree):
git worktree list | grep $(git branch --show-current)
If yes:
git worktree remove <worktree-path>
For Option 3: Keep safehouse.
| Option | Merge | Push | Keep Safehouse | Cleanup Branch |
|---|---|---|---|---|
| 1. Merge locally | ✓ | - | - | ✓ |
| 2. Create PR | - | ✓ | ✓ | - |
| 3. Keep as-is | - | - | ✓ | - |
| 4. Discard | - | - | - | ✓ (force) |
Never:
Always:
Called by:
Pairs with: