| name | ship |
| description | Run the full wrap-up pipeline — polish, then docs-revise, then a single commit — in one deliberate pass. Use ONLY when the user explicitly asks to run polish, docs-revise, and commit together as one pipeline (e.g. "/ship", "polish docs-revise and commit", "wrap this up and ship it"). Do NOT auto-trigger for a plain "clean this up", "commit", "polish", or "update docs" request — those are the individual skills. |
ship — polish -> docs-revise -> commit
Thin orchestrator. Owns no logic — it runs the polish, docs-revise, and
commit skills in sequence. Each sub-skill stays its own source of truth; never
reimplement their behavior here.
Never auto-commits outside Phase 3. Never pushes unless the user says then push in the current ship request.
Arguments
Only then push is recognized; pass it through verbatim to the commit skill.
polish max-iterations is always its default (5), not configurable here.
Pre-check
Run git diff HEAD --name-only.
-
Non-empty -> normal path. Continue to Phase 1.
-
Empty (clean tree) -> tell the user up front:
working tree clean — polishing the last commit, will create a new follow-up commit.
Then run polish in non-interactive mode: it must skip its interactive
prompts and assume last-commit = yes, commitMode = new. ship owns the
single commit in Phase 3 — polish must not commit or amend.
Phase 1 — polish
Run the polish skill (default iterations). Read its exit state from the report
it returns:
- Pass -> continue to Phase 2.
- Stuck / Max-out / Scope-drift -> halt. Surface polish's report, then
ask the user: "polish exited . Proceed to docs-revise + commit anyway,
or stop?" On stop, end ship (nothing committed). On proceed, continue to
Phase 2. Wait for the answer before acting.
Phase 2 — docs-revise
Run the docs-revise skill (always the full-project audit; it has no scoping
input — do not attempt to scope it).
- Relay its summary. Soft gate: auto-proceed to Phase 3.
- Exception: if docs-revise reports an inability or a contradiction it could not
resolve, surface it and ask the user whether to proceed or stop.
- No doc changes -> continue silently.
Phase 3 — commit
Run the commit skill, passing then push through only if it was in the
current ship request.
commit detects the repo convention and applies the voice profile itself — do
not draft the message here. One commit for the whole working tree (code +
docs together). The title is driven by the primary code change; it is a
docs:-type title only if the change set is docs-only.
Final report
Emit ONE compact block, <=15 lines:
ship complete
polish: <Pass|Stuck|Max-out|Scope-drift> — <findings delta>
docs-revise: <files touched | docs already fresh>
commit: <short-hash> <title>
push: <pushed | not requested>
Each sub-skill prints its own detail during the run; this is only the
consolidated bottom line.