ship
Skill0 starsChanged 52 days agoMITView on GitHub
Ship current Git work end-to-end. In an Eve project, ensure changed agent behavior has real session-based Eve eval coverage, bootstrap functional evals when missing, and run the local eval gate before commit; then create a feature branch, scoped commit, push, PR/MR, reuse an installed readiness skill or the bounded fallback, merge, sync the default branch, and give a safe-exit verdict. Use when the user runs /ship or explicitly asks to ship, land, merge, or publish current repository changes.
- Reads credentials
- Commits and pushes
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.
In this repositoryOne other file it gives its agents.
- AGENTS.mdAGENTS.md
The file
Show its rules and text
We split this skill into the rules it gives an agent
31 rules. 0 are common, 18 are distinctive, and 13 are very specific to this project.
0
Common
Most of the 180 edited versions we read keep these.
18
Distinctive
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 15
Run the full ship pipeline for the current repo or worktree, then declare this chat safe to close.
- Very specific: line 19
Follow user git safety rules (no force-push to main/master, no amend unless conditions permit it, no --no-verify unless asked, never update …
- Very specific: line 26
If any same-head PR targeting the intended <base> is MERGED and its recorded headRefOid equals HEAD, treat that exact head as already …
- Very specific: line 27
Only when no exact intended-base merged-PR match exists, run git cherry origin/<base> HEAD.
- Distinctive: line 28
If neither check proves the work shipped, continue the pipeline.
- Distinctive: line 34
When there is nothing to ship, skip steps 0–5, synchronize or verify the local default branch as required by step 6, then emit the step 7 …
- Distinctive: line 40
Run before staging or committing ship work.
- Distinctive: line 44
Treat the current app or workspace package as Eve-backed when repository evidence shows one of these:
- Very specific: line 51
Do not use bare npx eve ...
- Very specific: line 53
When Eve is present, resolve its installed package and read node_modules/eve/docs/README.md, then the relevant docs/evals/ guides before …
- Distinctive: line 65
If the Eve project has no eval suite:
- Very specific: line 67
Create evals/evals.config.ts with defineEvalConfig({}).
- Very specific: line 68
Create at least one focused evals/<behavior>.eval.ts using defineEval.
- Very specific: line 69
Ensure TypeScript includes evals//*.ts when project config requires an explicit include.
- Very specific: line 70
Add package scripts only when the project uses package scripts and lacks an eval entry.
- Distinctive: line 82
Do not create placeholder evals that only import successfully, grep source, check files, or assert a generic greeting unrelated to the …
- Very specific: line 84
If no model credentials or required service are available, eve eval --list or typecheck only proves discovery, not functionality.
- Distinctive: line 88
After adding or changing eval files, first list/discover them with the project's local Eve command, then run the narrow changed eval before …
- Distinctive: line 103
After adding or changing eval files, run the repository's catalog generator when one exists, such as:
- Distinctive: line 117
If currently on the default branch with task changes, create and switch to a feature branch before staging or committing.
- Very specific: line 118
If task commits already exist on the local default branch, first preserve them on a feature branch.
- Distinctive: line 119
Keep unrelated dirty files out of the feature branch commit.
- Distinctive: line 125
Commit via HEREDOC. If a hook fails, fix it and make a new commit.
- Distinctive: line 129
Run git push -u origin HEAD or equivalent.
- Distinctive: line 133
If no open review exists for this head, create one with Summary + Test plan, including the Eve eval command and result from step 0.
- Distinctive: line 134
If one exists, reuse it and push new commits onto the same branch.
- Very specific: line 140
If a babysit or equivalent project/user skill exists, load and follow it exactly with the saved review identifier, then return here.
- Distinctive: line 144
After any code fix, re-run step 0 locally, commit, push, and re-check the same review.
- Distinctive: line 147
Do not mix the installed skill and fallback loop.
- Distinctive: line 151
When step 5 reports merge-ready, merge with the saved review identifier and host-native CLI.
- Distinctive: line 170
Do not ask the user to open a new chat unless required.
“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 — Eve functional evals through merge, then safe-exit
Run the full ship pipeline for the current repo or worktree, then declare this chat safe to close. Treat text following /ship as an optional user note.
Reuse an installed babysit or equivalent PR-readiness skill when available; do not run two competing readiness loops. Search project-level skill directories first (.agents/skills, .claude/skills, .cursor/skills, .pi/skills), then the current agent's user-level skill directory. If none exists, use the bounded fallback in step 5.
Follow user git safety rules (no force-push to main/master, no amend unless conditions permit it, no --no-verify unless asked, never update git config). Prefer gh for GitHub and the repository's host-native CLI elsewhere. Follow the user's language and project rules.
Preflight
- Detect repo root (
git rev-parse --show-toplevel). If not a git repo, stop and say so. - Resolve and fetch the intended base/default branch, then inspect
git status -sb, unstaged/staged diffs,git log -5 --oneline, upstream tracking, ahead/behind, and commits inorigin/<base>..HEAD. - Inspect the open PR and all PR history for the current head branch, including each PR's
baseRefName. A squash-merged branch remains non-ancestral to the base, so a nonemptyorigin/<base>..HEADrange alone does not prove work is unshipped. If no PR is open, decide in this priority order:- If any same-head PR targeting the intended
<base>isMERGEDand its recordedheadRefOidequalsHEAD, treat that exact head as already shipped. Ignore matching PRs merged into other bases. This intended-base match is conclusive; do not letgit cherryoverride it. - Only when no exact intended-base merged-PR match exists, run
git cherry origin/<base> HEAD. If it contains no+commits, every patch is already equivalent upstream, so treat the head as shipped. - If neither check proves the work shipped, continue the pipeline. If history or patch evidence is ambiguous, stop rather than create a duplicate PR.
- If any same-head PR targeting the intended
- Note secrets risk (
.env, credentials, tokens). Do not commit secrets unless this repo's contract explicitly allows it. - State the plan in one short block before mutating git or remote state.
Declare nothing to ship only when the tree is clean, this branch has no open PR, and either origin/<base>..HEAD has no task commits or the checks above prove those commits already landed on the intended base. A clean branch with genuinely unshipped commits still has work to ship.
When there is nothing to ship, skip steps 0–5, synchronize or verify the local default branch as required by step 6, then emit the step 7 safe-exit verdict. Do not open another PR.
Pipeline (do in order; do not skip)
0) Eve functional eval coverage and local gate (before first commit)
Run before staging or committing ship work. This step has two jobs: add missing functional coverage for changed Eve behavior, then execute that coverage. Fix failures and re-run until green; do not commit while evals are red.
0a) Detect an Eve project without installing anything
Treat the current app or workspace package as Eve-backed when repository evidence shows one of these:
package.jsondeclaresevein dependencies or devDependencies- the lockfile or workspace manifest resolves an
evepackage used by this app - an Eve agent filesystem exists (
agent/agent.ts,agent/instructions.*, or the app's equivalent Eve agent root) - a local Eve binary or installed package exists (
node_modules/.bin/eveor resolvablenode_modules/eve)
Do not use bare npx eve ... as detection because it may download a package. If evidence is absent, skip step 0 and record not an Eve project. A .cursor/skills/eve file alone is guidance, not proof that the application runs Eve.
When Eve is present, resolve its installed package and read node_modules/eve/docs/README.md, then the relevant docs/evals/ guides before authoring eval code. Installed docs match the project's version.
0b) Audit coverage against the diff
Inspect evals/evals.config.ts, every relevant *.eval.ts, package scripts, CI eval commands, and changed agent behavior. Map each user-visible behavior in the diff to an eval that drives the real Eve session protocol.
Behavior changes needing direct coverage include instructions, tools, skills, connections, channels, subagents, schedules, HITL, structured output, session continuity, and agent-facing HTTP behavior. Pure docs, formatting, generated files, or internal refactors with unchanged behavior do not require a new eval, though the existing gate still runs.
Existing eval files are not enough by themselves. If changed behavior has no meaningful assertion, add or update a targeted eval before shipping.
0c) Bootstrap functional evals when absent or insufficient
If the Eve project has no eval suite:
- Create
evals/evals.config.tswithdefineEvalConfig({}). - Create at least one focused
evals/<behavior>.eval.tsusingdefineEval. - Ensure TypeScript includes
evals/**/*.tswhen project config requires an explicit include. - Add package scripts only when the project uses package scripts and lacks an eval entry. Prefer
evals:run: eve evalandevals:ci: eve eval --strict --junit .eve/junit.xml, adapted to the project's package manager and conventions.
A functional eval must send a realistic user turn through Eve (t.send, t.start, or an attached target), then assert observable behavior. Minimum useful gate: t.succeeded() plus one behavior-specific assertion. Examples:
- changed tool: prompt that requires it,
t.calledTool("tool_name"), and output/reply check - changed skill: prompt that requires it,
t.loadedSkill("skill-name"), and result check - conversation behavior: user-like prompt plus
t.messageIncludes(...)or deterministict.check(...) - session memory: two turns and a continuity assertion
- HITL or side effect: name and use the Eve session driver APIs, not a prose-only “send and approve” plan. A typical flow is
const parked = await t.send(...),parked.parked(),const request = t.requireInputRequest(...),parked.notCalledTool(...),await t.respond(...),t.succeeded(), thent.calledTool(...)with test input/output matchers. Adapt exact methods to installed Eve docs.
For any write, payment, refund, deletion, message-send, or other external side effect, prove isolation before running the approved path: bind the tool to a mock/stub, sandbox, dry-run adapter, or dedicated test backend and test resource. Never let an eval call the production side-effecting backend. Assert both halves of the boundary: the tool is not called before approval, then the isolated tool is called with expected test input after approval.
Do not create placeholder evals that only import successfully, grep source, check files, or assert a generic greeting unrelated to the changed behavior. Follow existing tags, helpers, naming, and target conventions instead of inventing a parallel suite.
If no model credentials or required service are available, eve eval --list or typecheck only proves discovery, not functionality. Keep shipping blocked until the functional eval runs against an approved local or remote target, unless the user explicitly accepts skipping that gate.
0d) Validate discovery, then run the gate
After adding or changing eval files, first list/discover them with the project's local Eve command, then run the narrow changed eval before the broader PR gate. Use an installed/local binary or existing script; avoid package-download side effects.
Choose commands from the user note first, then repository conventions and diff scope:
| Situation | Command |
| User names tier, tag, IDs, or target URL | Use exactly that scope with the project's local Eve command |
| Newly added or changed eval | local eve eval <id-or-group> --strict first |
| Existing project PR/CI eval script | run that exact script |
| Generic Eve project without a project gate | local eve eval --strict |
| win-agent-os default PR gate | SUITE_START_CHAT_SURFACE=0 npm run evals:ci |
| win-agent-os full local smoke | SUITE_START_CHAT_SURFACE=0 npm run evals:smoke |
| win-agent-os faster iteration | SUITE_START_CHAT_SURFACE=0 npm run evals:fast |
| Pre-merge confidence or user asks for full | project full-eval script, such as npm run evals:full |
After adding or changing eval files, run the repository's catalog generator when one exists, such as:
npm run evals:catalogInclude tracked generated catalog output in the same commit (docs/play-all-features/eval-catalog.md in win-agent-os).
On MBA or any machine other than macmini, always set SUITE_START_CHAT_SURFACE=0 for win-agent-os; /ship must not start local Next/Eve surfaces forbidden by AGENTS.md. Other projects follow their own machine rules.
On failure, inspect .eve/evals/<timestamp>/ artifacts, fix code or evals, and re-run. Never weaken assertions or CI workflows merely to pass. For debug fixes in win-agent-os, also follow docs/cursor-debug-mode-evals.md.
1) Branch safety — before committing
- If currently on the default branch with task changes, create and switch to a feature branch before staging or committing.
- If task commits already exist on the local default branch, first preserve them on a feature branch; only then realign the local default ref with
origin/<default>. Never force-push the default branch. - Keep unrelated dirty files out of the feature branch commit.
2) Commit (if needed)
- Stage only relevant files for this task, not unrelated dirty or runtime files.
- Draft a concise commit message (why over what); match recent log style.
- Commit via HEREDOC. If a hook fails, fix it and make a new commit; do not amend unless amend rules permit it.
3) Push
- Run
git push -u origin HEADor equivalent. Never force-push protected default branches.
4) Pull request or merge request
- If no open review exists for this head, create one with Summary + Test plan, including the Eve eval command and result from step 0.
- If one exists, reuse it and push new commits onto the same branch.
- Record its stable number or URL. Pass that identifier explicitly to every later host CLI command, even after switching branches.
- Report the review URL.
5) Make the review merge-ready
If a babysit or equivalent project/user skill exists, load and follow it exactly with the saved review identifier, then return here. Otherwise use this fallback:
- Inspect mergeability, required checks, unresolved review threads, and in-scope bot findings with the host-native CLI/API.
- Resolve clear conflicts and scoped defects. Never weaken CI merely to pass.
- After any code fix, re-run step 0 locally, commit, push, and re-check the same review.
- Repeat until mergeable + required checks green + comments triaged, or until an irreducible human decision is required.
Do not mix the installed skill and fallback loop. If branch and base intent conflict, stop and ask the user. Remote CI eval lanes are the server-side counterpart to step 0; local evals should pass before push so readiness work is not wasted on avoidable failures.
6) Merge
- When step 5 reports merge-ready, merge with the saved review identifier and host-native CLI; prefer the repository's normal merge method and delete the remote branch only when safe.
- Fast-forward the local default branch. Stash only if required for an ff-only pull, then restore the stash.
- Confirm the remote review reports merged and the local default branch matches the remote.
7) Safe to exit — required closing block
## Safe to exit
- Eve eval coverage: existing / added <eval IDs> / skipped: not an Eve project
- Eve eval gate: <command> → pass (or explicitly skipped: <reason>)
- Review: <url> → MERGED (or: nothing to ship)
- Local default branch: synced with origin (yes/no)
- Uncommitted leftovers: none intended / listed if any (not part of this ship)
- Worktree / follow-ups: none blocking (or one-line next action)
- Verdict: safe to close this chat / NOT safe to close — <blocking next action>Use safe to close this chat only when the PR is merged (or there truly was nothing to ship), the local default branch is synced, stash restoration is complete, and no blocking leftovers remain. If any check fails, emit NOT safe to close, state the next action, and continue fixing unless unavoidable human input is required.
Do not ask the user to open a new chat unless required. Do not start unrelated work after the verdict.
Naming
| Invoke | Owns |
Installed babysit or equivalent skill | Review to green and merge-ready only |
This /ship skill | Eve functional eval coverage + gate, commit, push, review, readiness, merge, default sync, safe exit |
Hard stops (ask user)
- Destructive history rewrite, force-push to main/master, or skipping hooks
- Ambiguous secret files the user did not authorize
- Merge intents that conflict between branch and base
- CI red that requires workflow changes outside this PR's scope
- Skipping required Eve functional evals without explicit user acceptance
- Running side-effecting evals without safe fixtures, approval boundaries, or an approved target
Out of scope
- Replacing or renaming an installed babysit/readiness skill
- Creating git worktrees (
agent -wor IDE/worktree) unless the user also asked - Pushing unrelated dirty files merely to clean the tree
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.

