About ship-pr
ship-pr is a skill for taking a repository change from verification through review and PR follow-up. It defines checks, evidence, fresh-context review, and babysitting steps before a PR is ready for human review.
Key features
- 01Runs repository checks and tests
- 02Verifies changes on the affected surface
- 03Requests fresh-context self-review
- 04Creates and follows up on PRs
Use cases
- 01Preparing a package or documentation PR
- 02Checking a change against built artifacts
- 03Handling review findings before handoff
MCP support
The skill includes verification of changes on the MCP server surface.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ tester-army/ e2e --skill ship-prAfter installing, type/ship-prin Claude Code to confirm it loaded.
Details
From the project READMEShip a PR
Opening a PR is not the finish line. The finish line is a PR labeled
Ready for Human Review: verified against the built packages, reviewed by a
fresh pair of eyes, green, and every bot thread handled. A human should only
ever spend time on judgment.
Run every step. If one cannot run, say which and why in the handoff instead of skipping it quietly.
1. Checks
Important: first run the shortening pass from
authoring-docs on
every guide page the change touches (docs/**/*.mdx outside
docs/reference/), even for a one-paragraph edit. A reference page the
change touches follows
authoring-docs, Reference pages
instead: ## Reference first, minimal summary tables, every fact kept. The
checks below then catch an anchor either pass broke.
Run what CI runs for what you touched, and fix everything:
pnpm check # lint, dead code, typecheck, error codes, peer ranges, docs
pnpm test # or the touched package: pnpm --filter e2e run test:unit
pnpm --filter @e2e-dev/testbed test
pnpm test:web-benchmark # when the runner, web engine, or benchmark changed
Then the repo rules pnpm check cannot see (AGENTS.md, "Contracts"):
- A user-visible change to a published package adds a
.changeset/entry, bumpedpatchon0.xeven for a feature.minoronly when the change is breaking (summary opens**Breaking:**) or the maintainer calls a big release (**Release:**). - Behavior changes update the matching
docs/**/*.mdxpage in the same change, "not implemented yet" callouts included, andskills/e2e/when it describes the changed surface. - A public API change reviews the emitted
.d.tsand updatespackages/e2e/tests/types/sdk-types.ts; a wire change edits the schema, both fixtures, and the producer together. - A new build input or benchmark dependency goes into
.github/filters.yml. - A new integration, CI service, or migration guide gets the vendor's logo as its sidebar icon and on every card that links to it, never a Font Awesome placeholder. An integration or CI page also gets a card on its overview (authoring-docs, Page icons). A package PR needs this as much as a docs PR.
2. Verify
Prove the change with the verify skill on the surface
it touches: the built CLI on the testbed or a benchmark, the MCP server, a
scratch project for init, or the docs site. Bug fixes capture main against
the branch. Keep the output and any video for the PR.
3. Self-review in a fresh context
The agent that wrote the change does not get to judge it. Spawn a reviewer
with no memory of this conversation (a subagent, or a new session) and give
it references/review-prompt.md with the base
branch filled in. Fix every critical and important finding you agree
with, then rerun steps 1 and 2 for what the fixes touched. For each finding
you reject, keep the one-line reason for the PR body or handoff.
No way to spawn a reviewer: re-read the whole diff cold against the same prompt yourself, and say so in the handoff.
4. Commit and open
- Branch off an up-to-date
origin/main. Commits follow Conventional Commits. - Title and body with the writing-pr skill. The body carries the verification evidence from step 2.
- Open it ready, not draft:
gh pr create --base main --title ... --body-file <file> --attach <each screenshot and video>(gh2.99+). The body must carry the## Verifiedsectionwriting-prdescribes; fix a thin one withgh pr edit --body-file <file> --attach .... - Multi-PR change: open every layer, each based on the one below, before babysitting.
5. Babysit
Hand the PR to the babysit skill and run it to the
end: green, threads handled, Ready for Human Review label. For a stack,
babysit bottom-up; a layer is labeled only when it is ready on its own.
Handoff
Reply to the human with:
- the PR URL and its label state
- how it was verified (surface, what you ran, what you saw, the media)
- what you fixed from review, what you dismissed and why
- anything left for them: escalated threads, parts you could not verify, scope you declined