git v1.0.0 · Updated Apr 17, 2026 · by Justin Adams

Ship PR Pipeline

Mandatory pre-PR pipeline for Claude Code — branch check, simplify, security review, tests, scope check. Blocks 'merge-ready' status until every gate is green.

Claude Code
$ curl -fsSL https://www.cendis.ai/library/skill/ship-pr/install | sh

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.