MeowKit

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:ship

MeowKit 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 passes

Flags

/mk:ship              # Standard ship pipeline
/mk:ship --canary     # Staged deployment with monitoring
/mk:ship --dry-run    # Preview without pushing or creating PR

Official 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.

ModeTargetAdversarial reviewVersion formatDocs update
officialmain/masterFull, auto-scaled1.2.3Yes
betadev/betaSkipped1.2.3-beta.1Skipped
--dry-runnothing, preview onlyShows the planShows the predictionShows what would change

Commit format

Every ship produces a conventional commit:

feat(scope): description matching plan

Refs: #42

The 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.sh blocks 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 checks

Hotfixes 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 key

These persist to .meowkit/memory/ for future sessions.

When it goes wrong

What you seeWhyWhat to do
Pre-ship checks failTests, lint, or types are brokenFix them first; the ship is correctly refusing
Merge conflictsThe base branch movedResolve manually, then re-run
CI fails on the PR but passed locallySomething differs in the CI environmentRead the CI logs; the difference is the bug
gh not foundGitHub CLI is not installedInstall 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

On this page