About ship-pr
A repository skill that guides contributors through preparing a pull request for human review. It covers checks, verification against built packages, fresh-context review, opening the PR, and follow-up until review-ready.
Key features
- 01Run CI and repository-specific checks
- 02Verify changes on the relevant surface
- 03Review the diff in a fresh context
- 04Open a ready-for-review PR
- 05Track fixes and review threads
Use cases
- 01Preparing a package change for review
- 02Verifying a CLI or MCP server change
- 03Handling a multi-PR change stack
- 04Completing PR checks and bot threads
MCP support
The skill directs contributors to verify MCP changes through the e2e MCP server on the testbed. It describes registering and restarting that server as needed for verification.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ e2e-inc/ 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 on every card that links to it, never a Font Awesome placeholder, and a card on its section's overview (authoring-docs, Vendor logos). 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