What it does
Defines a strict pre-PR checklist that the agent must complete before pushing or opening a pull request. Each step has a clear pass/fail outcome. The agent cannot report “ready to merge” until every checkpoint is checked.
When to use it
- In team repos where PR quality is enforced through review
- When a non-technical reviewer needs the agent to self-police before asking for sign-off
- In codebases with mandatory security or simplicity reviews
- Anywhere “almost done” PRs have caused churn
How it works
Add to your .claude/skills/ship-pr.md (or copy into CLAUDE.md):
# Ship PR
Mandatory pipeline before opening any PR. Do not skip steps.
## Checklist
Create a todo entry for each step:
1. **Branch check**
- Run `git branch --show-current` and confirm it matches the intended branch
- In a worktree, confirm `pwd` is the correct directory
- Never commit to `main` or to a branch belonging to a different task
2. **Simplify review**
- Review the diff for unnecessary abstractions, dead code, premature optimization
- Apply fixes; re-review until clean
3. **Security review (when applicable)**
- If the change touches auth, tokens, API endpoints, or database queries: run a security review pass
- Apply fixes; re-review until clean
- For pure UI/copy/docs changes, note that security review was not required
4. **Local verification**
- Typecheck must pass
- Tests must pass
- For user-facing behavior, run E2E tests
5. **Diff self-review**
- `git diff main...HEAD` — scan for scope creep, debug leftovers, commented-out code
- If scope grew beyond the original task, stop and re-confirm
6. **Open PR**
- Push the branch
- Open the PR with summary + test plan
- Update the linked issue/ticket status
## Output
End with a confirmation block:
[x] Branch verified: <branch-name>
[x] Simplify review: clean
[x] Security review: clean / N/A (reason)
[x] Typecheck: pass
[x] Tests: pass (<count>)
[x] Scope matches task
[x] PR opened: <url>
If any line is [ ], the work is not shipped.
Optional gates
Pair this with these companion skills (or substitute your own):
- Simplify review — review for unnecessary complexity
- Security review — review auth, RLS, and query code
- Issue tracker update — sync status to Linear, Jira, GitHub Issues
Why it matters
PRs without enforced gates ship bugs, scope creep, and security issues. By making every checkpoint explicit and binary (pass/fail, no “looks fine”), the agent cannot rationalize skipping a step. The confirmation block at the end is also a paste-ready summary for the PR description or stand-up update.