Ship
Goal: given a feature request (e.g. /ss-ship thực hiện chức năng login), drive the task through the whole pipeline in a single run — spec → plan → coding → review, attaching debug whenever a defect appears — stopping only when genuinely blocked.
ss-ship is an orchestrator, not a stage: it doesn't replace the stage skills, it invokes them in order and carries the user's consent across the handoffs where each stage would normally stop and ask. Invoking ss-ship is that consent, granted once for the whole task.
When to use
- The user hands you a feature request, ticket, or PRD — anything the
ss-spec skill could consume — and wants it taken all the way to reviewed code.
- Also works mid-pipeline: if the task already has artifacts (a confirmed
spec.md, an approved plan.md), start from the first incomplete stage instead of redoing finished ones.
- Not for codebase exploration: this skill never runs
ss-explore-source. If docs/onboarding/* is missing and the codebase is unfamiliar, tell the user to run it first rather than shipping blind.
Shared task state
Part of the task pipeline — see ../WORKFLOW.md for the full contract. Every rule there (artifacts, IDs, preconditions, traces, lessons) applies unchanged; the only thing ss-ship overrides is the per-handoff "ask the user" step.
- Hydrate: if the request matches an existing task (explicit
TASK-<ID>, or one in conversation), resume it from its current stage; otherwise the spec stage will open a new task. If that named task is shelved (status: paused, or found under tasks/archive/), un-shelve it first exactly as ss-resume-task does (restore the folder and/or flip paused→active, with the dated log trace) before advancing. Read tasks/LESSONS.md if present.
- Checkpoint: each stage skill does its own checkpointing. Additionally, log every auto-advance as a dated Pipeline Log line in
task.md, e.g. - <YYYY-MM-DD HH:MM +TZ> ship: auto-advanced spec → plan — carrying your agent label (format: ../WORKFLOW.md → Agent handoff).
Method — run the stages
Invoke each stage skill via the Skill tool, in order, starting from the first incomplete stage. Follow its playbook fully — artifacts, templates, gates, traces — except its "ask the user" points, which ss-ship overrides as follows:
ss-spec — formalize the request into tasks/TASK-<ID>/spec.md (opens the task). Resolve what the request and the codebase answer; anything underspecified but non-blocking becomes an entry in Assumptions (or a non-blocker Q# with its proposed default taken). Set status: confirmed and continue. An open blocker Q# is a hard stop — blocker questions are the one thing autopilot never answers itself. Verifiability gate (replaces the skipped human confirmation): before auto-advancing, every AC# must carry a concrete verify: check and every R# must be covered by at least one AC# (per the ss-spec skill's confirmation gate). Autopilot has no human sign-off to lean on here, so these objective checks stand in for it — an AC# with no runnable verify or an uncovered R# is a hard stop, not an auto-advance.
ss-plan — produce plan.md as the skill specifies. Approval is delegated: set status: approved directly (don't use EnterPlanMode) and log it. If planning surfaces something that changes the spec's scope, that's a hard stop, not a silent re-plan. Verifiability gate: before auto-advancing to coding, every S# must list at least one covers: ID and an executable verify: (a runnable command/test, not prose), and — coverage running both ways per the ss-plan skill's approval gate — every R#/AC# in spec.md must be covered by at least one step. A step whose check can't be run, or a spec ID no step covers, is a hard stop — autopilot won't hand the coding loop a blurry target.
ss-coding — don't ask TDD vs conventional: apply the skill's own default (whatever the codebase already does). Implement every S#, verify, tick. Deviation under autopilot: small deviations follow the ss-coding skill unchanged (inline note + Change History). A structural deviation (the approach doesn't work) triggers the plan re-approval the ss-coding skill requires — under ss-ship that re-approval is delegated like the original: re-run ss-plan for the affected steps, log ship: re-planned (approach change), and continue. Once per run — a second structural re-plan means the spec's ground truth is off, and that's a hard stop, not another silent pivot. If the deviation touches the spec's scope, it's a hard stop regardless.
ss-debug — on a non-obvious failure at any point, invoke ss-debug, fix to root cause, then resume the interrupted stage directly — no "resume?" question.
ss-review — full gate + AC# verification.
approved → done.
changes-requested → loop back to ss-coding (or ss-debug for a defect) automatically with the Findings as input, then re-run ss-review. Cap: 2 loop-backs. A third changes-requested is a hard stop.
Hard stops — hand back to the user
Stop, checkpoint, and report (never push through) when:
- A blocker
Q# is open, or a stage reveals the spec's scope is wrong.
- The request is too big for one run: the spec turns out to hold multiple unrelated goals, or the plan balloons past what one review can meaningfully verify (roughly >10 steps). Propose a split into separate
TASK-<ID>s with a suggested order instead — small verifiable increments beat one mega-run whose review rubber-stamps.
- The structural re-plan budget is spent (one per run — see
ss-coding above).
- The verifiability gate fails: an
AC# with no runnable verify:, or an S# with no executable verify: — autopilot can't self-confirm an unverifiable criterion, so it hands back instead of advancing blind.
- The next action is destructive or hard to reverse: data/schema migrations on real data, deleting things the task didn't create, anything outward-facing.
- The review loop cap is hit, or a gate can't be made green.
- As always: never run
git add / commit / push — review.md carries the drafted commit/PR message for the user.
On a hard stop, make sure task.md reflects the true stage/status and the Pipeline Log says why autopilot stopped — any stage skill can then resume manually from that state.
Not an external phase
ss-ship is autopilot: it deliberately runs the whole pipeline in one go. That makes it the opposite of external orchestration, where the launcher owns the pipeline and each agent runs exactly one phase and stops (../WORKFLOW.md → External phase execution). An orchestrator therefore never launches ss-ship, and ss-ship is never a value of --phase — it launches spec/plan/coding/review/debug individually instead. Nothing here changes for interactive users: ss-ship stays the normal autopilot entry point.
When done
One final report covering the whole run: stages executed, key assumptions made in the spec, AC# verification results, gate results, files changed, bugs hit (BUG#), deviations from the plan, the drafted commit message from review.md, and follow-ups. The task is done only when review says approved.
1---2name: ss-ship3description: Take a feature request from idea to reviewed, ready-to-commit code in one run — spec → plan → coding → review (+ debug on defects) — without asking at each stage. Use when given a request like "/ss-ship implement login", "ship this feature", "do the whole flow for X", "làm hết flow cho chức năng X". Orchestrator over the stage skills; never runs ss-explore-source.4---56# Ship78Goal: given a feature request (e.g. `/ss-ship thực hiện chức năng login`), drive the task through the **whole pipeline** in a single run — **spec → plan → coding → review**, attaching `debug` whenever a defect appears — stopping only when genuinely blocked.910`ss-ship` is an **orchestrator, not a stage**: it doesn't replace the stage skills, it invokes them in order and carries the user's consent across the handoffs where each stage would normally stop and ask. Invoking `ss-ship` *is* that consent, granted once for the whole task.1112## When to use13- The user hands you a feature request, ticket, or PRD — anything the `ss-spec` skill could consume — and wants it taken all the way to reviewed code.14- Also works mid-pipeline: if the task already has artifacts (a confirmed `spec.md`, an approved `plan.md`), start from the first incomplete stage instead of redoing finished ones.15- Not for codebase exploration: this skill never runs `ss-explore-source`. If `docs/onboarding/*` is missing and the codebase is unfamiliar, tell the user to run it first rather than shipping blind.1617## Shared task state18Part of the task pipeline — see `../WORKFLOW.md` for the full contract. Every rule there (artifacts, IDs, preconditions, traces, lessons) applies unchanged; the only thing `ss-ship` overrides is the per-handoff "ask the user" step.19- **Hydrate:** if the request matches an existing task (explicit `TASK-<ID>`, or one in conversation), resume it from its current stage; otherwise the `spec` stage will open a new task. If that named task is shelved (`status: paused`, or found under `tasks/archive/`), un-shelve it first exactly as `ss-resume-task` does (restore the folder and/or flip `paused`→`active`, with the dated log trace) before advancing. Read `tasks/LESSONS.md` if present.20- **Checkpoint:** each stage skill does its own checkpointing. Additionally, log every auto-advance as a dated Pipeline Log line in `task.md`, e.g. `- <YYYY-MM-DD HH:MM +TZ> ship: auto-advanced spec → plan` — carrying your agent label (format: `../WORKFLOW.md` → Agent handoff).2122## Method — run the stages23Invoke each stage skill via the Skill tool, in order, starting from the first incomplete stage. Follow its playbook fully — artifacts, templates, gates, traces — **except its "ask the user" points, which `ss-ship` overrides as follows:**24251. **`ss-spec`** — formalize the request into `tasks/TASK-<ID>/spec.md` (opens the task). Resolve what the request and the codebase answer; anything underspecified but non-blocking becomes an entry in **Assumptions** (or a non-blocker `Q#` with its proposed default taken). Set `status: confirmed` and continue. An open **blocker** `Q#` is a hard stop — blocker questions are the one thing autopilot never answers itself. **Verifiability gate (replaces the skipped human confirmation):** before auto-advancing, every `AC#` must carry a concrete `verify:` check **and every `R#` must be covered by at least one `AC#`** (per the `ss-spec` skill's confirmation gate). Autopilot has no human sign-off to lean on here, so these objective checks stand in for it — an `AC#` with no runnable verify or an uncovered `R#` is a hard stop, not an auto-advance.262. **`ss-plan`** — produce `plan.md` as the skill specifies. Approval is delegated: set `status: approved` directly (don't use EnterPlanMode) and log it. If planning surfaces something that changes the spec's scope, that's a hard stop, not a silent re-plan. **Verifiability gate:** before auto-advancing to `coding`, every `S#` must list at least one `covers:` ID **and an executable `verify:`** (a runnable command/test, not prose), and — coverage running both ways per the `ss-plan` skill's approval gate — **every `R#`/`AC#` in `spec.md` must be covered by at least one step**. A step whose check can't be run, or a spec ID no step covers, is a hard stop — autopilot won't hand the coding loop a blurry target.273. **`ss-coding`** — don't ask TDD vs conventional: apply the skill's own default (whatever the codebase already does). Implement every `S#`, verify, tick. **Deviation under autopilot:** small deviations follow the `ss-coding` skill unchanged (inline note + Change History). A **structural** deviation (the approach doesn't work) triggers the plan re-approval the `ss-coding` skill requires — under `ss-ship` that re-approval is delegated like the original: re-run `ss-plan` for the affected steps, log `ship: re-planned (approach change)`, and continue. **Once per run** — a second structural re-plan means the spec's ground truth is off, and that's a hard stop, not another silent pivot. If the deviation touches the spec's scope, it's a hard stop regardless.284. **`ss-debug`** — on a non-obvious failure at any point, invoke `ss-debug`, fix to root cause, then resume the interrupted stage directly — no "resume?" question.295. **`ss-review`** — full gate + `AC#` verification.30 - `approved` → done.31 - `changes-requested` → loop back to `ss-coding` (or `ss-debug` for a defect) automatically with the Findings as input, then re-run `ss-review`. **Cap: 2 loop-backs.** A third `changes-requested` is a hard stop.3233## Hard stops — hand back to the user34Stop, checkpoint, and report (never push through) when:35- A **blocker `Q#`** is open, or a stage reveals the spec's scope is wrong.36- The request is **too big for one run**: the spec turns out to hold multiple unrelated goals, or the plan balloons past what one review can meaningfully verify (roughly >10 steps). Propose a split into separate `TASK-<ID>`s with a suggested order instead — small verifiable increments beat one mega-run whose review rubber-stamps.37- The **structural re-plan budget** is spent (one per run — see `ss-coding` above).38- The **verifiability gate fails**: an `AC#` with no runnable `verify:`, or an `S#` with no executable `verify:` — autopilot can't self-confirm an unverifiable criterion, so it hands back instead of advancing blind.39- The next action is **destructive or hard to reverse**: data/schema migrations on real data, deleting things the task didn't create, anything outward-facing.40- The **review loop cap** is hit, or a gate can't be made green.41- As always: **never run `git add` / `commit` / `push`** — `review.md` carries the drafted commit/PR message for the user.4243On a hard stop, make sure `task.md` reflects the true stage/status and the Pipeline Log says why autopilot stopped — any stage skill can then resume manually from that state.4445## Not an external phase46`ss-ship` is autopilot: it deliberately runs the *whole* pipeline in one go. That makes it the opposite of external orchestration, where the launcher owns the pipeline and each agent runs exactly one phase and stops (`../WORKFLOW.md` → External phase execution). An orchestrator therefore never launches `ss-ship`, and `ss-ship` is never a value of `--phase` — it launches `spec`/`plan`/`coding`/`review`/`debug` individually instead. Nothing here changes for interactive users: `ss-ship` stays the normal autopilot entry point.4748## When done49One final report covering the whole run: stages executed, key assumptions made in the spec, `AC#` verification results, gate results, files changed, bugs hit (`BUG#`), deviations from the plan, the drafted commit message from `review.md`, and follow-ups. The task is `done` only when `review` says `approved`.