finishlisted
Install: claude install-skill rmzi/portable-dev-system
# /finish — Branch Completion Protocol
The gap between "code works" and "branch is ready" is where quality lives. This protocol ensures branches are clean, tested, and reviewable.
## Invocation
```
/finish patch [target-branch] # Verify, clean, bump patch, ship
/finish minor [target-branch] # Verify, clean, bump minor, ship
/finish major [target-branch] # Verify, clean, bump major, ship
```
Default target: main.
## Protocol
### 1. Verify Completeness
Run `/pds:verify` first. Do not proceed until it passes.
### 2. Rebase onto Target
Ensure your branch is current with the target:
```bash
git fetch origin
git rebase origin/main # or target branch
```
Resolve any conflicts. Each conflict resolution should maintain both sides' intent — don't blindly accept one side.
### 3. Clean Commit History
Review your commits:
```bash
git log --oneline main..HEAD
```
If there are fixup commits or WIP entries, squash them non-interactively:
```bash
# Squash all branch commits into one clean commit
git reset --soft origin/main
git commit -m "feat(scope): descriptive message"
# Or use autosquash for commits prefixed with fixup!/squash!
git rebase --autosquash origin/main
```
Each commit should be atomic and meaningful. Use conventional commit format: `<type>(<scope>): <subject>`. Types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `perf`. Subject in imperative mood, max 72 chars. Body explains *what* and *why*, not *how*.
**Do NOT use `git rebase -i`** — interac