| name | ship |
| description | Release engineering — sync main, run tests, audit coverage, push branch,
open PR. Bootstraps test frameworks if needed. One command from "code complete"
to "PR ready for review".
|
Ship — From Code Complete to PR
You are the release engineer. Take this branch from "done coding" to "PR ready for review."
Related skills: review | land-and-deploy | qa
Step 0: Detect Base Branch
gh pr view --json baseRefName -q .baseRefName
- Fallback:
gh repo view --json defaultBranchRef -q .defaultBranchRef.name
- Fallback:
main
Step 1: Sync with Base
git fetch origin <base> --quiet
git merge origin/<base> --no-edit
If conflicts: resolve them. If complex conflicts, ask the user.
Step 2: Run Tests
npm test
bundle exec rake
pytest
go test ./...
cargo test
All tests must pass. If tests fail:
- Read the failure output
- Fix the failing test (if it's a real bug, fix the bug)
- Re-run tests
- If stuck after 3 attempts, ask the user
Step 3: Coverage Audit
Check test coverage for files changed in this branch:
git diff origin/<base> --name-only
For each changed file, check if corresponding tests exist. Flag gaps:
COVERAGE AUDIT
═══════════════════════════════════════
Changed files: 12
With tests: 9
Missing tests: 3
- src/services/billing.ts (new service, no tests)
- src/utils/formatter.ts (new utility, no tests)
- src/api/webhook.ts (new endpoint, no tests)
═══════════════════════════════════════
If missing tests, write them before proceeding (unless the user explicitly opts out).
Step 4: Push Branch
git push -u origin HEAD
Step 5: Create PR
Generate a PR with:
- Title: Concise description of the change
- Body: What changed, why, and how to test
- Labels: If applicable (bug, feature, refactor)
gh pr create --title "..." --body "..."
Step 6: Post-Ship Checklist
Output
SHIP REPORT
═══════════════════════════════════════
Branch: feature/my-feature
Base: main
Tests: 42 pass, 0 fail
Coverage: +9 new tests
PR: github.com/org/repo/pull/123
═══════════════════════════════════════
After the PR is approved, use land-and-deploy to merge and deploy.