One command. Commit, push, open the PR, fix CodeQL, resolve threads, fix CI, verify everything is green. Never merges. That’s a human decision.
/ship is the local escape hatch for the cloud pipeline. The cloud pipeline
(ai-workflows,
claude-code-routines) gets a PR opened and reviewed
without you. /ship is what you run from a Claude Code session when you are the one
iterating on a PR. It drives that PR to a ready-to-merge state in one command.
What /ship does
/ship is a thin orchestrator. It detects uncommitted changes (commits them), discovers recently created PRs, then for each PR invokes /finalize-pr, which is where the real work happens.
What /finalize-pr does
/finalize-pr is the loop. Five phases per PR:
What it never does
- Never merges. Merge is always a human decision.
- Never approves. No auto-approval of PRs.
- Never crosses org boundaries in org-wide mode.
- Never bypasses branch protection.
Subagents in the call chain
When to use /ship vs the cloud pipeline
Where to go next
CodeQL resolution
Why CodeQL is fixed separately from CI checks, and what
/resolve-codeql does.claude-code-plugins
The plugin home for
/ship, /finalize-pr, and all the supporting skills.Source: ship/SKILL.md
The full skill definition.
Source: finalize-pr/SKILL.md
Phases, gates, and the merge prohibition.