ship
Skill2 starsChanged 14 days agoMITView on GitHub
Push the task branch and open its pull request: rebase on a moved base, settle approval lines, commit the plan, re-run the gate, write the PR body in the repo's own format, push, gh pr create. Run only when the owner asks. Not for merging, force-pushing or reviewing a PR.
- 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 repository13 other files it gives its agents.
- templates/CLAUDE.mdCLAUDE.md
- capture-lessonSkill
- find-skillsSkill
- gateSkill
- grillSkill
- handoffSkill
- initSkill
- kickoff-promptSkill
- measureSkill
- memory-hygieneSkill
- reviewSkill
- setupSkill
- start-taskSkill
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 3 are distinctive, and 6 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.
6
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 23
Never --force or --force-with-lease, never rewrite history beyond step 2's rebase, never push to <base>, never merge, never enable …
- Distinctive: line 25
Never write that the owner approved anything they did not say in this session.
- Very specific: line 34
No issue, and git ls-remote --heads origin <branch> lists the branch: read git log --format='%an <%ae>' origin/<base>..origin/<branch>.
- Very specific: line 38
Base: If git status --porcelain --untracked-files=no, leaving out the plan file (step 4 commits it), prints anything, stop and ask the …
- Distinctive: line 46
If the rebase refuses to start (not a conflict): stop and quote its message.
- Very specific: line 55
Plan commit: Commit the plan as its own commit (docs: plan for #<issue>.
- Very specific: line 62
Gate: Run node "${CLAUDE_PLUGIN_ROOT}/scripts/gate/run.mjs" --plan <plan> (no plan: drop --plan) once, from any folder in the project.
- Very specific: line 71
PR body: If gh pr view <branch> --json url,state shows an OPEN PR, skip this step.
- Distinctive: line 84
Write it to the path git rev-parse --git-path nauraiz-dev-pr-body.md prints, never into the working tree.
“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
Push the current branch and open its PR. Only on the owner's request in this session to
push or open a PR; running /nauraiz-dev:ship is that request, so do not ask again
whether to push or open the PR. Do the steps in order.
Config: .claude/nauraiz-dev.json, with .claude/nauraiz-dev.local.json over it. Keys:
branch.base (default main), plan.dir (default .work/tasks), pr.sections, gate.
Local mode: the local file exists and the project file does not. Plan: the file under
plan.dir whose branch: is this branch.
Rules for every step:
- "Stop" and "ask" mean: end your turn with the question and wait. Ask only what this skill cannot know.
- Never
--forceor--force-with-lease, never rewrite history beyond step 2's rebase, never push to<base>, never merge, never enable auto-merge. - Never write that the owner approved anything they did not say in this session.
Steps
- Collision check.
git branch --show-currentis<branch>; if it is<base>, stop. Rungit fetch origin. Issue: from the plan or the branch name (feature/12-xis 12). Runnode "${CLAUDE_PLUGIN_ROOT}/scripts/task/collision.mjs" <issue> --branch <branch>.taken: stop; say who and where (reason,remoteBranchname and authors, open PRs).unknownor no verdict: ask whether to go on, quotingreason.oursorfree: go on. No issue, andgit ls-remote --heads origin <branch>lists the branch: readgit log --format='%an <%ae>' origin/<base>..origin/<branch>. If any author matches neithergit config user.namenorgit config user.email, stop and name them. - Base. If
git status --porcelain --untracked-files=no, leaving out the plan file (step 4 commits it), prints anything, stop and ask the owner to commit or stash it: the gate runs on the working tree, but the push sends HEAD. Thengit rev-list --count HEAD..origin/<base>. If 0, go on. Otherwise readgit log --oneline origin/<base>..HEAD:- Branch already on origin: rebasing would need a force push. Stop; say how far behind
it is and ask: merge
origin/<base>into it, or ship as it is. - Commits that are not this task's (another issue, another author): stop and list them.
- Otherwise
git rebase origin/<base>. - On a conflict:
git rebase --abort, stop, name the conflicting files. - If the rebase refuses to start (not a conflict): stop and quote its message.
- Branch already on origin: rebasing would need a force push. Stop; say how far behind
it is and ask: merge
- Approvals. Find every
*_approvalkey in the plan whose value does not start withpending. None: go on. Otherwise oneAskUserQuestioncall, one question per value (more than four: one question for all), quoting the key and value, options "Keep as given" and "Set to pending". Headless (the run is unattended, orAskUserQuestionis unavailable, errors or returns no answer): set every one topending owner confirmation. Never choose for the owner. - Plan commit. Commit the plan as its own commit (
docs: plan for #<issue>; no issue:docs: plan for <branch>) whengit status --porcelain -- <plan>shows a change and it is tracked (git ls-files <plan>prints it) or the project commits plans (git ls-tree -r --name-only origin/<base> -- <plan.dir>lists a file). Never commit an untracked plan in local mode. Committing before the gate makes the pushed HEAD the gated HEAD with no rewrite. That covers tracked files only: an untracked file the gate reads is not pushed; tell the owner to add it or ignore it. - Gate. Run
node "${CLAUDE_PLUGIN_ROOT}/scripts/gate/run.mjs" --plan <plan>(no plan: drop--plan) once, from any folder in the project; it prints every exit code, so never appendecho $?, pipes orcd; re-run only after you changed code, or once with--plan <path>when a row saysno plan for this branch. Exit 1: stop and paste the output. Exit 2: quote everynauraiz-dev:line first. A line other thanno gate configured …that names a config file means the config failed to load: stop, say it needs fixing, and never offer to ship without a gate. Otherwise ask "No gate configured. Ship without one?". Exit 3 (the runner failed): stop and quote the output. Any other non-zero exit: the same. Keep the output for step 6. - PR body. If
gh pr view <branch> --json url,stateshows anOPENPR, skip this step. Headings, first match wins:gh pr list --state merged --author @me --limit 1 --json number, thengh pr view <n> --json body, and take that body's##headings in order; elsepr.sections. Runnode "${CLAUDE_PLUGIN_ROOT}/scripts/show.mjs" templates/PR_TEMPLATE.mdonce for what each section holds.- Fill every section from the plan, the commits and this session; write "None" rather than drop one. Approvals set to pending go under the decisions to confirm.
- The gate output from step 5, verbatim, under the gate heading (or
## Gate output). - What was not verified, under the heading for it (such as
Unverified), else add## Not verified. Closes #<issue>when there is an issue. End with the PR attribution line your instructions give, if any. Write it to the pathgit rev-parse --git-path nauraiz-dev-pr-body.mdprints, never into the working tree.
- Push and open.
git push -u origin <branch>; if it is rejected, stop and say why. An open PR from step 6: print its URL instead ofgh pr create. Otherwisegh pr create --base <base> --head <branch> --title "<title>" --body-file <file>, title from the issue or the plan. Print the PR URL and stop: never merge.
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.

