Ship

Take a feature branch all the way to a merge-ready PR. Runs a full-convergence pipeline — loops /code-review until it reports zer…

antosubash 1 updated 1mo ago
Claude CodeGeneric
View source ↗
---
description: Take a feature branch all the way to a merge-ready PR. Runs a full-convergence pipeline — loops /code-review until it reports zero findings, runs the full /qa browser cycle (which fixes bugs), then re-reviews whatever changed, repeating until a complete pass finds no review issues AND no QA bugs, and finally runs /vf to open exactly one PR. Use this whenever you want to "ship", "finalize", "wrap up", "finish", or "get this branch ready for review/merge" — i.e. do the full review + QA + verify + PR dance in one shot, not just a single review or a single QA pass.
argument-hint: [feature description] [--port N] [--route PATH] [--url URL] [--start CMD] [--base BRANCH] [--depth shallow|normal|deep] [--review-effort low|medium|high|max] [--max-outer-iterations N] [--max-review-iterations N] [--no-review] [--no-qa] [--no-pr] [--skip-browser] [--a11y] [--responsive] [--perf]
allowed-tools: Bash, Read, Edit, Write, Glob, Grep, Agent, Skill, TaskCreate, TaskUpdate, TaskList, mcp__plugin_playwright_playwright__browser_navigate, mcp__plugin_playwright_playwright__browser_snapshot, mcp__plugin_playwright_playwright__browser_click, mcp__plugin_playwright_playwright__browser_type, mcp__plugin_playwright_playwright__browser_hover, mcp__plugin_playwright_playwright__browser_take_screenshot, mcp__plugin_playwright_playwright__browser_fill_form, mcp__plugin_playwright_playwright__browser_select_option, mcp__plugin_playwright_playwright__browser_press_key, mcp__plugin_playwright_playwright__browser_wait_for, mcp__plugin_playwright_playwright__browser_console_messages, mcp__plugin_playwright_playwright__browser_network_requests, mcp__plugin_playwright_playwright__browser_network_request, mcp__plugin_playwright_playwright__browser_evaluate, mcp__plugin_playwright_playwright__browser_tabs, mcp__plugin_playwright_playwright__browser_navigate_back, mcp__plugin_playwright_playwright__browser_close, mcp__plugin_playwright_playwright__browser_resize, mcp__plugin_playwright_playwright__browser_file_upload, mcp__plugin_playwright_playwright__browser_handle_dialog
---

# /ship — Review → QA → Verify → PR (full-convergence pipeline)

You are a release lead taking a feature branch from "I think it's done" to a clean, merge-ready PR. You orchestrate three existing commands and loop until the branch is genuinely clean:

┌──────────────────────────────────────────────────────────────────────┐ │ OUTER LOOP (repeat until a full pass is clean, or max-outer hit) │ │ │ │ STAGE A ── code-review loop ──► /code-review → fix → re-review │ │ until 0 findings (or max-review-iterations) │ │ │ │ STAGE B ── QA cycle ──────────► /qa --no-vf │ │ full browser test + auto-fix, loops internally │ │ │ │ CONVERGENCE CHECK │ │ review found 0 AND qa found 0 → CONVERGED, exit loop │ │ anything changed → outer++ , go back to STAGE A │ └──────────────────────────────────────────────────────────────────────┘ │ (converged clean) ▼ STAGE C ── /vf --qa-passed ──► local CI + ONE PR


The whole point: **code review and QA fix code, and fixing code can introduce new problems.** So after either one changes anything, you re-review and re-test. You only open the PR once a complete pass over the branch finds nothing left to fix.

## Arguments

User invoked with: `$ARGUMENTS`

Parse into:
- **Feature description** — free text (anything not a flag). Passed through to `/qa` and `/vf` and used in the PR body.
- `--port N`, `--route PATH`, `--url URL`, `--start CMD` — server/route hints. Passed through to `/qa` and `/vf`.
- `--base BRANCH` — base branch for rebase + PR. Passed to `/vf` (defaults: `main`, else `master`).
- `--depth shallow|normal|deep` — QA thoroughness (default `normal`). Passed to `/qa`.
- `--review-effort low|medium|high|max` — effort for `/code-review` (default `high`). Higher = broader coverage, more findings.
- `--max-outer-iterations N` — max review↔QA convergence rounds (default **3**). Each round runs a full `/qa`, so this bounds cost.
- `--max-review-iterations N` — max passes inside a single Stage A code-review loop (default **5**).
- `--no-review` — skip Stage A (the standalone code-review loop). QA still runs its own internal review gate.
- `--no-qa` — skip Stage B. Pipeline becomes: code-review loop → `/vf`. (`/vf` runs without `--qa-passed`, so it does its own smoke check.)
- `--no-pr` — run the full pipeline but pass `--no-pr` to `/vf` (verify only, no PR).
- `--skip-browser` — non-web project: skip browser QA. Implies `--no-qa` and passes `--skip-browser` to `/vf`.
- `--a11y`, `--responsive`, `--perf` — passed through to `/qa` for deeper audits.

Don't ask clarifying questions when reasonable defaults exist — echo what you detected and proceed. Ask **once** only for a value you genuinely cannot infer (e.g. a port with no detectable default).

## Hard Rules

- **This is a real loop. You keep going until an exit condition is met — never stop after one round and ask the user whether to continue.** The exit conditions are: a fully clean pass, or `max-outer-iterations` reached.
- **Exactly one PR.** `/qa` is always invoked with `--no-vf` so it never opens its own PR. Only Stage C opens a PR, and only if the branch converged clean and `--no-pr` was not passed.
- **Never open a PR with known unfixed issues.** If you hit `max-outer-iterations` with issues still open, STOP at Stage C, list what remains, and do NOT run `/vf` to create a PR.
- **Must be on a feature branch.** Refuse to run on the base branch (`main`/`master`) — `/vf` will

Maintain Ship?

Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.

[Ship on getagentictools](https://getagentictools.com/loops/antosubash-ship-review-qa-verify-pr-full-convergence-pipeline?ref=badge)