Ship Safely
Deploy with /mk:ship: conventional commits, PR creation, CI verification, and rollback documentation.
/mk:ship handles deployment. It runs tests, creates conventional commits, opens a PR, and verifies CI. It never pushes directly to main. It also documents rollback steps.
Quick start
/mk:shipMeowKit runs the full pre-ship checklist: test → lint → typecheck → commit → PR → CI verification. You review the PR and merge when CI passes.
What happens
Phase 4 review approved (Gate 2)
→ pre-ship.sh: full test + lint + typecheck
→ git-manager: stage changes, conventional commit
→ shipper: push branch, create PR
→ Wait for CI
→ Document rollback steps
→ Merge when CI passesFlags
/mk:ship # Standard ship pipeline
/mk:ship --canary # Staged deployment with monitoring
/mk:ship --dry-run # Preview without pushing or creating PROfficial versus beta
Where you are shipping changes what runs. A beta ship trades the adversarial review and the docs update for speed; an official ship does not.
| Mode | Target | Adversarial review | Version format | Docs update |
|---|---|---|---|---|
official | main/master | Full, auto-scaled | 1.2.3 | Yes |
beta | dev/beta | Skipped | 1.2.3-beta.1 | Skipped |
--dry-run | nothing, preview only | Shows the plan | Shows the prediction | Shows what would change |
Commit format
Every ship produces a conventional commit:
feat(scope): description matching plan
Refs: #42The scope and description come from the approved plan. No manual commit message needed.
Safety rules
- Never pushes to main directly. Always creates a PR.
- CI must pass before merging. The shipper verifies CI status.
- Rollback docs required. Every ship documents how to revert.
- Pre-ship hook runs first.
pre-ship.shblocks the ship if tests, lint, or typecheck fail.
Hotfix exception
/mk:fix "critical payment bug" --quick
# After fix verified:
/mk:ship # Hotfix: requires human approval but skips some checksHotfixes still require Gate 2 approval but may skip non-critical checks. Document the reason in the PR description.
Memory capture
Before shipping, capture non-obvious decisions and corrections:
##decision: Used connection pool over per-request connection, load testing showed 3x throughput
##pattern:bug-class Race condition in payment retry, fixed with idempotency keyThese persist to .meowkit/memory/ for future sessions.
When it goes wrong
| What you see | Why | What to do |
|---|---|---|
| Pre-ship checks fail | Tests, lint, or types are broken | Fix them first; the ship is correctly refusing |
| Merge conflicts | The base branch moved | Resolve manually, then re-run |
| CI fails on the PR but passed locally | Something differs in the CI environment | Read the CI logs; the difference is the bug |
gh not found | GitHub CLI is not installed | Install gh, or push and open the PR in the browser |
Don't use /mk:ship for
- Features still in development. Complete the review pipeline first
- Experimental code. Ship only reviewed, tested code
- Force pushes. MeowKit never force-pushes
Next steps
- Build a feature: the full pipeline ending with ship
- Review code: the review phase before shipping
- Gates & security: how Gate 2 protects shipping