Use when the user wants to commit, push, and create a PR in one command. Shortcut for the full ship workflow — stages, commits, pushes, and opens a GitHub PR.
/ship [message]
/ship only runs when you invoke it by name — saying “ship it” in prose deliberately routes to /pr, the QA’d path/ship
What you’ll see: a quick revert-safety check, changed files staged, the commit message shown before the commit runs, the branch rebased on latest and pushed, and a final report with the commit subject, files staged, branch, and PR URL — plus a reminder that no local tests ran, so watch CI (/monitor ci or gh pr checks --watch).
/ship # auto-generate the commit message from the diff
/ship fix flaky retry in webhook poller # use your text as the commit message
| Flag | Values | Default | What it does |
|---|---|---|---|
<message> |
free text | auto-generated | Used as the commit message; without it, one is written from the diff in your repo’s commit style |
/revert-check in advisory mode first. Silent when clean; if it suspects your tree is undoing recently-merged work, it shows the files and asks before proceeding.git status and the diff. Refuses to run on main — create a feature branch first. On toolkit projects (those with tests/run.sh, like this repo), also requires a fresh .precheck-passed marker from /precheck — missing or stale, and /ship stops with PRECHECK REQUIRED. If the tree is clean, skips straight to push + PR..env, .env.local, credentials, coverage.xml, or large binaries) and commits with your message or an auto-generated one matched to recent commit style. The generated message is shown before the commit runs, and every commit is appended with Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>.What it deliberately does not do: run QA/lint/tests (use /pr for that), merge the PR, or deploy.
| Problem | Fix |
|---|---|
Refuses to run on main |
git checkout -b my-change and re-run — /ship never pushes to main |
PRECHECK REQUIRED error |
Only on toolkit-shaped projects (repos with tests/run.sh, like claude-agents itself). Run /precheck first — it writes a marker /ship checks for that must be fresh (same commit, less than 30 minutes old) |
| Rebase conflicts before push | /ship stops and shows the instructions — resolve, then git rebase --continue and re-run (or git rebase --abort) |
| Revert check flags files you deleted on purpose | Confirm the changes are intentional when asked, and /ship continues |
| Pre-commit hook fails | The skill fixes the issue, re-stages, and creates a new commit (it never amends) |
gh not found or not authenticated |
Install the GitHub CLI and run gh auth login |