--- name: ck:ship description: "Ship pipeline: merge main, test, review, commit, push, PR. Single command from feature branch to PR URL. Use for shipping official releases to main/master or beta releases to dev/beta branches." argument-hint: "[official|beta] [--skip-tests] [--skip-review] [--skip-journal] [--skip-docs] [--dry-run]" license: MIT metadata: author: claudekit version: "2.0.0" --- # Ship: Unified Ship Pipeline Single command to ship a feature branch. Fully automated — only stops for test failures, critical review issues, or major version bumps. **Inspired by:** gstack `/ship` by Garry Tan. Adapted for framework-agnostic, multi-language support. ## Arguments | Flag | Effect | |------|--------| | `official` | Ship to default branch (main/master). Full pipeline with docs + journal | | `beta` | Ship to dev/beta branch. Lighter pipeline, skip docs update | | (none) | Auto-detect: if base branch is main/master → official, else → beta | | `--skip-tests` | Skip test step (use when tests already passed) | | `--skip-review` | Skip pre-landing review step | | `--skip-journal` | Skip journal writing step | | `--skip-docs` | Skip docs update step | | `--dry-run` | Show what would happen without executing | ## Ship Mode Detection ``` If argument = "official" → target = main/master (auto-detect default branch) If argument = "beta" → target = dev/beta (auto-detect dev branch) If no argument → infer from current branch naming: - feature/* hotfix/* bugfix/* → official (target main) - dev/* beta/* experiment/* → beta (target dev/beta) - unclear → AskUserQuestion ``` ## When to Stop (blocking) - On target branch already → abort - Merge conflicts that can't be auto-resolved → stop, show conflicts - Test failures → stop, show failures - Critical review issues → AskUserQuestion per issue - Major/minor version bump needed → AskUserQuestion ## When NOT to Stop - Uncommitted changes → always include them - Patch version bump → auto-decide - Changelog content → auto-generate - Commit message → auto-compose - No version file → skip version step silently - No changelog → skip changelog step silently ## Pipeline ``` Step 1: Pre-flight → Branch check, mode detection, status, diff analysis Step 2: Link Issues → Find/create related GitHub issues Step 3: Merge target → Fetch + merge origin/ Step 4: Run tests → Auto-detect test runner, run, check results Step 5: Review → Two-pass checklist review (critical + informational) Step 6: Version bump → Auto-detect version file, bump patch/minor Step 7: Changelog → Auto-generate from commits + diff Step 8: Journal → Write technical journal via /ck:journal Step 9: Docs update → Update project docs via /ck:docs update (official only) Step 10: Commit → Conventional commit with version/changelog Step 11: Push → git push -u origin Step 12: Create PR → gh pr create with structured body + linked issues ``` **Detailed steps:** Load `references/ship-workflow.md` **Auto-detection:** Load `references/auto-detect.md` **PR template:** Load `references/pr-template.md` ## Token Efficiency Rules - Steps 4 (tests) and 5 (review): delegate to `tester` and `code-reviewer` subagents — don't inline - Steps 8 (journal) and 9 (docs): run in **background** — don't block pipeline - Step 2 (issues): use single `gh` command batch — avoid multiple API calls - Skip steps early via flags to save tokens on unnecessary work - Beta mode auto-skips: docs update (Step 9) - Capture step outputs inline — don't re-read files already in context ## Quick Start User says `/ck:ship` → run full pipeline → output PR URL. User says `/ck:ship beta` → ship to dev branch with lighter pipeline. User says `/ck:ship official` → ship to main with full docs + journal. ## Output Format ``` ✓ Pre-flight: branch feature/foo, 5 commits, +200/-50 lines (mode: official) ✓ Issues: linked #42, created #43 ✓ Merged: origin/main (up to date) ✓ Tests: 42 passed, 0 failed ✓ Review: 0 critical, 2 informational ✓ Version: 1.2.3 → 1.2.4 ✓ Changelog: updated ✓ Journal: written (background) ✓ Docs: updated (background) ✓ Committed: feat(auth): add OAuth2 login flow ✓ Pushed: origin/feature/foo ✓ PR: https://github.com/org/repo/pull/123 (linked: #42, #43) ``` ## Important Rules - **Never skip tests** (unless `--skip-tests`). If tests fail, stop. - **Never force push.** Regular `git push` only. - **Never ask for confirmation** except for critical review issues and major/minor version bumps. - **Auto-detect everything.** Test runner, version file, changelog format, target branch — detect from project files. - **Framework-agnostic.** Works for Node, Python, Rust, Go, Ruby, Java, or any project with a test command. - **Subagent delegation.** Use `tester` for tests, `code-reviewer` for review, `journal-writer` for journal, `docs-manager` for docs. Don't inline. - **Background tasks.** Journal and docs run in background to not block the pipeline.