Ship
A staged spec → plan → coding → review workflow for shipping AI-assisted code. Works with Claude Code, Codex, Cursor & Antigravity.
npx -y skills add bonnguyenitc/specship --skill shipAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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 "/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 explore-source.
SKILL.md
7.6 KB, as published. Nobody here has run it
Ship
Goal: given a feature request (e.g. /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.
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 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
specskill 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 approvedplan.md), start from the first incomplete stage instead of redoing finished ones. - Not for codebase exploration: this skill never runs
explore-source. Ifdocs/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 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 thespecstage will open a new task. If that named task is shelved (status: paused, or found undertasks/archive/), un-shelve it first exactly asresume-taskdoes (restore the folder and/or flippaused→active, with the dated log trace) before advancing. Readtasks/LESSONS.mdif 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 ship overrides as follows:
spec— formalize the request intotasks/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-blockerQ#with its proposed default taken). Setstatus: confirmedand continue. An open blockerQ#is a hard stop — blocker questions are the one thing autopilot never answers itself. Verifiability gate (replaces the skipped human confirmation): before auto-advancing, everyAC#must carry a concreteverify:check and everyR#must be covered by at least oneAC#(per thespecskill's confirmation gate). Autopilot has no human sign-off to lean on here, so these objective checks stand in for it — anAC#with no runnable verify or an uncoveredR#is a hard stop, not an auto-advance.plan— produceplan.mdas the skill specifies. Approval is delegated: setstatus: approveddirectly (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 tocoding, everyS#must list at least onecovers:ID and an executableverify:(a runnable command/test, not prose), and — coverage running both ways per theplanskill's approval gate — everyR#/AC#inspec.mdmust 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.coding— don't ask TDD vs conventional: apply the skill's own default (whatever the codebase already does). Implement everyS#, verify, tick. Deviation under autopilot: small deviations follow thecodingskill unchanged (inline note + Change History). A structural deviation (the approach doesn't work) triggers the plan re-approval thecodingskill requires — undershipthat re-approval is delegated like the original: re-runplanfor the affected steps, logship: 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.debug— on a non-obvious failure at any point, invokedebug, fix to root cause, then resume the interrupted stage directly — no "resume?" question.review— full gate +AC#verification.approved→ done.changes-requested→ loop back tocoding(ordebugfor a defect) automatically with the Findings as input, then re-runreview. Cap: 2 loop-backs. A thirdchanges-requestedis 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
codingabove). - The verifiability gate fails: an
AC#with no runnableverify:, or anS#with no executableverify:— 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.mdcarries 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
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 ship, and ship is never a value of --phase — it launches spec/plan/coding/review/debug individually instead. Nothing here changes for interactive users: 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.