ship
Skill0 starsChanged 5 months agoMITView on GitHub
Terminal skill of the SpecStudio pipeline. Enforces spec-aware release gates for a single Feature, dispatches the deploy to a project-configured delegate skill, and on the delegate's explicit success transitions the Feature Implementing -> Stable and emits ship.completed. Ship gates, records, and performs a single dispatch — it never executes or orchestrates a deploy itself (no deploy mechanics, sequencing, retry, rollback, canary, flag-flips, scheduling, or multi-feature coordination). Trigger: "ship", "/ship", "specstudio:ship".
194 other projects use a version of this.
Adopted by
Most recently taken up by
- wboayue/rust-ibapitheir own version, first seen Nov 9, 2026
- haiggoh/run-to-completiontheir own version, first seen Nov 8, 2026
- sanmidable/skillstheir own version, first seen Nov 8, 2026
- Yesterday-AI/ytstacktheir own version, first seen Nov 8, 2026
- gaoyu06/harnesstheir own version, first seen Nov 8, 2026
- PeanutGT/NutsSkillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use ios-sync, open-gstack-browser and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Saqlain-811Skillios-sync
Regenerate the iOS debug bridge against the latest upstream gstack templates. (gstack)
Also in 6 projects that use this
seek888Skillopen-gstack-browser
Launch GStack Browser — AI-controlled Chromium with the sidebar extension baked in. Opens a visible browser window where you can watch every action in real time. The sidebar shows a live activity feed and chat. Anti-bot stealth built in. Use when asked to "open gstack browser", "launch browser", "connect chrome", "open chrome", "real browser", "launch chrome", "side panel", or "control my browser". Voice triggers (speech-to-text aliases): "show me the browser".
Also in 10 projects that use this
ayudaySkillsetup-deploy
Configure deployment settings for /land-and-deploy. Detects your deploy platform (Fly.io, Render, Vercel, Netlify, Heroku, GitHub Actions, custom), production URL, health check endpoints, and deploy status commands. Writes the configuration to CLAUDE.md so all future deploys are automatic. Use when: "setup deploy", "configure deployment", "set up land-and-deploy", "how do I deploy with gstack", "add deploy config".
Also in 19 projects that use this
ShreyRaviSkilllanding-report
Read-only queue dashboard for workspace-aware ship. Shows which VERSION slots are currently claimed by open PRs, which sibling Conductor workspaces have WIP work likely to ship soon, and what slot /ship would pick next. No mutations — just a snapshot. Use when asked to "landing report", "what's in the queue", "show me open PRs", or "which version do I claim next". (gstack)
Also in 9 projects that use this
zebbernSkilldebug-fix
Find and fix a bug or issue — from any source (GitHub issue, error message, user report, or observed behavior)
Also in 4 projects that use this
ramybarsoumSkilldocument-release
Post-ship documentation update. Reads all project docs, cross-references the diff, updates README/ARCHITECTURE/CONTRIBUTING/CLAUDE.md to match what shipped, polishes CHANGELOG voice, cleans up TODOS, and optionally bumps VERSION. Use when asked to "update the docs", "sync documentation", or "post-ship docs". Proactively suggest after a PR is merged or code is shipped.
Also in 23 projects that use this
Other versions194 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 194
- garrytan/gstack★ 141ksame name
- rtk-ai/rtk★ 86ksame name
- simstudioai/sim★ 30ksame name
- millionco/react-doctor★ 15ksame name
- BuilderIO/agent-native★ 7.6ksame name
- nightly-labs/openbot★ 6.3ksame name
- fallow-rs/fallow★ 5.3ksame name
- puncsky/system-design-and-architecture★ 3.6ksame name
- plugin87/ux-ui-agent-skills★ 3.1ksame name
- ShenSeanChen/waku-agent★ 2ksame name
184 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 180 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 59
Create a task for each and complete in order:
- Distinctive: line 77
When the reviewer gate releases, ship hands the deploy to a project-configured delegate.
- Very specific: line 92
Configured delegate → single dispatch: When ship.delegate is present, invoke the named delegate skill exactly once, passing delegate.args.
- Very specific: line 93
No delegate → hand back: When ship.delegate is absent, summarize the gate results, state explicitly that no deploy delegate is configured, …
- Distinctive: line 94
Explicit success only: Treat only the delegate's explicit success signal as success.
“Common” is measured: kept by at least 6 in 10 of the 180 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Ship
Close the SpecStudio pipeline for a single Feature: enforce the spec-aware release gates, hand the deploy off to a project-configured delegate skill, and record the outcome. Ship gates, records, and dispatches once — it never deploys, sequences, retries, rolls back, or orchestrates. The high-blast-radius deploy execution lives in a tool the project already trusts.
Implements the Ship Skill Feature.
When to Use
- A single Feature at
spec/features/<feature-slug>/README.mdis**Status:** Implementing, its ACs have all been verified green, its latest recap shows no contradictions, and the user wants to release it. - The user wants to run the spec-aware release gates for one Feature and (when a delegate is configured) dispatch the deploy.
Refuse and redirect when:
- The invocation does not name exactly one Feature slug → print a usage error and exit non-zero. Ship operates on one Feature per invocation. (AC:
rejects-non-feature-input) - The Feature's
**Status:**is notImplementing→ print the current Status and recommend the appropriate prior step (Implementingis the only status from whichStableis reachable). Write nothing; exit non-zero. (AC:refuses-non-implementing-status) - The Feature's latest verify report is missing or not all-green → recommend
specstudio:verify <feature-slug>. Write nothing; exit non-zero. (AC:refuses-when-verify-not-green) - The Feature's latest recap report is missing or contains any contradiction and the recap gate is enforced (the default —
recap.required_for_shipis absent ortrue) → recommendspecstudio:recap <feature-slug>. Write nothing; exit non-zero. (AC:refuses-on-recap-contradiction) Whenrecap.required_for_shipisfalse, this refusal does not apply — the recap gate is skipped (AC:proceeds-when-recap-waived).
Pre-Flight
Pre-flight refusals exit immediately, write nothing, and dispatch no reviewer and no delegate.
- Resolve input. The skill MUST accept exactly one positional argument — the Feature slug — and resolve it to
spec/features/<feature-slug>/README.md. Zero arguments or more than one argument is a usage error: print the correct usage, write nothing, and exit non-zero. Ship coordinates exactly one Feature; it never operates on a set of Features in one run. (AC:rejects-non-feature-input) - Status guard. Read the resolved Feature's body-metadata
**Status:**line. Refuse unless it is exactlyImplementing. On refusal, print the current Status value and recommend the appropriate prior step (e.g.specstudio:implementto reachImplementing, or note that an already-StableFeature has nothing to ship). The lifecycle transition ship performs isImplementing → Stable, which is reachable only fromImplementing; any other status is refused here before any further work. (AC:refuses-non-implementing-status)
Machine gates
These are hard gates ship enforces itself by reading committed artifacts — it does not delegate them to a reviewer. They mirror how specstudio:verify and specstudio:recap resolve their reports. Both run after the status guard and before any reviewer or delegate is dispatched.
- Verify-green gate. Resolve the latest
spec/features/<feature-slug>/_verify/<sha>.mdreport reachable at HEAD — prefer the report whose<sha>matchesgit rev-parse --short HEAD, otherwise the report whose embedded YAMLrevision:is most recent in branch history (the same resolutionspecstudio:recapuses). Parse its top-of-file YAML summary block. Refuse unless every AC verdict ispass(zerofail, zeroerror, zerounmapped). If_verify/is absent or contains no report reachable at HEAD, refuse. On any refusal, name the failing or missing condition, recommendspecstudio:verify <feature-slug>, write nothing, and exit non-zero. (AC:refuses-when-verify-not-green) Recap-no-contradiction gate (config-gated). First read
recap.required_for_shipfromspecscore.yaml(defaulttruewhen therecap:block or the key is absent). The waiver is read from config only — never inferred from project size, token budget, or any heuristic.- Enforced (
true, the default): Resolve the latestspec/features/<feature-slug>/_recap/<sha>.mdreport reachable at HEAD using the same resolution rule as step 3. Parse its YAML summary'sdrift:list. Refuse unless it contains zerocontradictionverdicts. If_recap/is absent or contains no report reachable at HEAD, refuse. On any refusal, name the contradiction or missing-recap condition, recommendspecstudio:recap <feature-slug>, write nothing, and exit non-zero. (AC:refuses-on-recap-contradiction) - Waived (
false): Skip this gate entirely — perform no recap-presence check and no contradiction check — and proceed to the reviewer gate. The waiver MUST be disclosed in pre-flight output (see step 5 of the checklist /## Recap-Gate Waiverbelow); it is never silent. (AC:proceeds-when-recap-waived)
The waiver applies only to the recap gate. The verify-green gate (step 3) is unaffected and remains mandatory in all cases.
- Enforced (
Checklist
Create a task for each and complete in order:
- Pre-flight input + status (Pre-Flight steps 1–2): resolve the single-Feature input, then the status guard. Refusals exit immediately; do not proceed.
- Pre-flight machine gates (Pre-Flight steps 3–4): verify-green, then recap-no-contradiction. Both are hard gates; any refusal exits immediately.
- Reviewer gate (
## Reviewer Gate): fireship.pre_dispatch, load and rungates.ship.pre_dispatchreviewers (AND-composed). Halt onIssues Found; proceed only on release. - Deploy dispatch (
## Deploy Dispatch): ifship.delegateis configured, dispatch it once; otherwise hand back. Act on the delegate's outcome only. - Transition and emit (
## Lifecycle Transition and Event): on explicit delegate success, transitionImplementing → Stable, apply publication policy, and emitship.completedexactly once.
Reviewer Gate
After every pre-flight gate passes, ship fires the ship.pre_dispatch gate-point event and evaluates the reviewer gate keyed on it — gates.ship.pre_dispatch in specscore.yaml — via the shared reviewer-gates loader and runner. This is the judgment-and-human go/no-go checkpoint before any deploy. Ship carries no hardcoded baseline reviewer; the reviewer list comes exclusively from the gate config.
- Fire and load. Fire
ship.pre_dispatch(single-fire per run; see events.md). Load and validategates.ship.pre_dispatch.reviewersvia the loader with event keyship.pre_dispatch. If the gate is unconfigured or invalid, the loader refuses per its contract — surface its error verbatim and halt; do not dispatch a delegate, do not transition status. - Run. Dispatch the validated reviewer list via the runner: serial, in declared list order, AND-composed. The gate releases only when every entry returns
Approved. Atype: humanentry is the operator's go/no-go. Ship introduces no new reviewer type — it uses only the types reviewer-gates already defines (ai,human, and the broaderdeterministic/auto-approve). - Outcome. On release (
Approved), proceed to deploy dispatch. OnIssues Found, halt: surface the failing reviewer'sBlockerfindings, dispatch no delegate, and transition no status. (AC:gate-releases-only-on-all-approved)
Deploy Dispatch
When the reviewer gate releases, ship hands the deploy to a project-configured delegate. Ship dispatches once and reacts to a single outcome — it never sequences, retries, or orchestrates.
Config schema (ship: in specscore.yaml)
ship:
delegate:
skill: <skill-name> # the deploy skill ship invokes (e.g. gh-deploy)
args: <string> # opaque args handed to the delegate verbatimdelegate.skill and delegate.args are the only recognized fields. Ship MUST NOT honor — and the ship: schema MUST NOT grow — any field expressing sequencing, retry, rollback, canary, feature-flag, or scheduling behavior; those belong to the delegate, never to ship (the boundary the bars-execution-and-orchestration AC enforces).
Dispatch behavior
- Configured delegate → single dispatch. When
ship.delegateis present, invoke the named delegate skill exactly once, passingdelegate.args. Ship does not sequence multiple delegates and does not retry. (AC:dispatches-single-configured-delegate) - No delegate → hand back. When
ship.delegateis absent, summarize the gate results, state explicitly that no deploy delegate is configured, transition no status, emit noship.completed, and exit without attempting a deploy. Ship never guesses how to deploy. (AC:hands-back-when-no-delegate) - Explicit success only. Treat only the delegate's explicit success signal as success. On delegate failure, an ambiguous result, or no clear success signal, leave the Feature in
Implementing, do not retry, surface the delegate's outcome verbatim, and emit noship.completed. (AC:no-transition-on-delegate-failure)
Lifecycle Transition and Event
Runs only on the delegate's explicit success (never on refusal or hand-back).
- Transition. Transition the Feature
Implementing → Stableby invokingspecscore feature change-status <feature-slug> --to Stable. Ship owns this status write;Implementing → Stableis the only transition ship performs. (AC:transitions-to-stable-on-success) - Publication + event. Build the checkpoint manifest, apply publication-policy.md for the
ship.completedcheckpoint, then emitship.completedexactly once withpublication_resultper events.md. The event carriesfeature_slug,revision, the dispatcheddelegate,from_status: Implementing/to_status: Stable, andrecap_status(enforced|waived) recording whether the recap gate ran this run. Noship.completedis emitted on any refusal or on the no-delegate hand-back. (AC:emits-ship-completed-once,records-recap-waiver)
Recap-Gate Waiver
Recap is a mandatory upstream gate for ship by default. A project that accepts shipping without a fresh drift verdict (e.g. a solo or low-stakes project) can waive it explicitly via a top-level recap: block in specscore.yaml:
recap:
required_for_ship: true # default; ship refuses without a contradiction-free recap report
# required_for_ship: false → ship skips the recap gate entirely (see Pre-Flight step 4)required_for_shipis a boolean; its default istrue(the key and therecap:block may both be absent — the gate is enforced).- The waiver is explicit: read from config only, never inferred.
- The waiver covers only the recap gate. The verify-green gate is never waivable here.
- A waived run is never silent: the skill MUST state in its pre-flight output that the recap gate was waived (e.g. "Recap gate waived (
recap.required_for_ship: false); shipping on verify-green only."), and MUST recordrecap_status: waivedon theship.completedevent. When enforced,recap_statusisenforced. (AC:records-recap-waiver)
This Feature only makes the gate waivable. Reducing recap's per-AC token cost (incremental / cheaper recap) is a separate, deferred effort.
Architectural Boundary
This boundary is load-bearing and applies across the whole skill: ship gates, records, and dispatches once — it never executes or orchestrates. Concretely, ship MUST NOT itself perform any of:
- deploy mechanics (build, push, migrate);
- sequencing of multiple steps, or retrying a failed step;
- rollback, canary rollout, or feature-flag flips;
- scheduling, or dispatching work across runs;
- multi-feature or multi-project release coordination.
All of these belong to the delegate or to a separate orchestration layer. The ship: config block MUST expose only delegate.skill and delegate.args; it MUST NOT grow any field expressing the concerns above. Working inside one project is ship's scope; executing and dispatching work across things is not. (AC: bars-execution-and-orchestration)
Red Flags
- Performing a deploy, migration, or push directly instead of delegating it.
- Sequencing or retrying delegates, or interposing orchestration between ship and the delegate.
- Owning rollback, canary, or feature-flag logic in ship.
- Adding any
ship:config field beyonddelegate.skill/delegate.args. - Transitioning status or emitting
ship.completedon anything other than the delegate's explicit success. - Coordinating more than one Feature in a single ship run.
- Carrying a hardcoded reviewer instead of loading
gates.ship.pre_dispatch. - Waiving the verify-green gate (never waivable), or waiving the recap gate by any path other than an explicit
recap.required_for_ship: falseconfig — or waiving recap silently (a waived run MUST disclose it and recordrecap_status: waived).
References
- Feature: Ship Skill — the SpecScore Feature this skill implements.
- Plan: Ship Skill — the six-task plan this skill realizes.
- verify SKILL.md, recap SKILL.md — sibling pipeline skills whose pre-flight and report-resolution conventions ship mirrors.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

