ship
Skill3 starsChanged 21 days agoMITView on GitHub
Walk the change through the teach-back brief, then push to staging and open a DRAFT PR — never main/master/prod. Use when the user types /ship or asks to push, open a PR, or ship the change. Stops for explicit approval before pushing.
- 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 repository11 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- braintrustSkill
- demoSkill
- explain-prSkill
- full-output-enforcementSkill
- gateSkill
- impeccableSkill
- sanad-implementationSkill
- sanadSkill
- specSkill
- worktreeSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 180 edited versions we read keep these.
2
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
- could be automatic: a setting could enforce it
- Very specific: line 18
Identity: Commit author is developzone5 + the noreply email (CLAUDE.md Ground rules) — check git config user.name / user.email before the …
- Distinctive: line 56
Never merge a PR, never merge into a shared/prod branch, never tag a release, never trigger a prod deploy.
- Distinctive: line 57
If told to target prod directly, restate the target and require a one-time confirmation before acting.
- Very specific: line 66
No AI attribution (no session links or Claude-Session: trailers either), no internal agent notes.
“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
<!-- Author: Eng. Mohammed Almutairi - Developzone.net -->/ship — teach-back, then push to staging
This file is the single source for the shipping flow (moved from CLAUDE.md 2026-09-28): the teach-back brief, the integration-branch and draft rules, and the after-deploy smoke — see Rules below. CLAUDE.md's "Self-review your diff first" still applies before the brief.
Pushing and opening a PR are explicit-approval steps. Brief first, ask, wait for a yes, then push. Never automatic — and a "yes" to the task is not a "yes" to the push; approval is per-action and expires.
Pre-flight — check all five before the brief
- Fresh base. Synchronize before final verification/review per execution.md. This pre-flight is the final freshness check, not the first integration update.
git fetch originmust succeed — a failed or timed-out fetch is a stop (report it; never publish on stale remote data). Then: (a)gh pr view --json number,state,baseRefName— if this branch's PR is already MERGED, do not push more commits to it: create a new branch offorigin/<integration>(git checkout -b <type>/<name> origin/<integration>), cherry-pick/re-apply the work, and re-brief; (b) if the branch is behindorigin/<integration>(git rev-list --left-right --count origin/<integration>...HEAD), merge it into the feature branch (never rebase a pushed branch), collect affected checks and the required review for changed content/context, then re-run/gate. If no relevant inputs changed, reuse the completed evidence. Thesession-start.jshook prints this state at startup; re-check here because it changes mid-session. - Review + gate. Both PASS for the current result, per
/gate(it owns the evidence rules: completed independent review, source-bound evidence.mjs receipt, docs-only exception); each verdict line plain at line start in a text-only message. An already-reviewed cherry-pick follows promotion.md. Missing, pending or failed required checks block the push, drafts included. - Identity. Commit author is
developzone5+ the noreply email (CLAUDE.md Ground rules) — checkgit config user.name/user.emailbefore the first commit; a fresh clone has none set. Never commit asRND. - Spec. Finalize its implementation milestones, actual verification evidence and
In reviewstatus before independent review so the spec ships in the reviewed snapshot. Do not edit it during this pre-flight or after the gate. Necessary later changes require review again; final review/gate/approval results live in the conversation, saved evidence and PR body. MarkShippedonly after the feature actually ships, in a later documentation update. - Required list (user rule 2026-10-30). Print this list in the brief, each item
doneornot done, read from what actually ran on the final revision: full review of each PR (full-pr-review.md, this engine and the other), each finding confirmed or dismissed, full test suite on the top branch, every push line's branch, and the PR body check (node ~/.claude/skills/gate/scripts/check-pr-body.mjs <body file>printedPR BODY: clean; user rule 2026-11-05: only the user parks a finding), the ticket-lines check when the task has a ticket (check-ticket-lines.mjsprinted every line✓), and one commit per PR. Anynot doneitem means no push line, even when the user will run the push: the push guard does not see a user's own commands, so this list is the check. Never say "all checks are done" without it.
Flow
- Branch & commit. On
main/masteror the integration branch → create a feature branch first. Stage named files only (nogit add .); Conventional Commit messages (CLAUDE.md Ground rules). One commit per PR (user rule 2026-11-05: "in this pr and previous one make it one commit then add it as rule"). Before every push, the PR's own commits become one Conventional Commit whose tree is the tested tree. Keep abackup/<branch>-before-squashbranch, then build the commit withgit commit-tree <tested HEAD>^{tree} -p <merge base with origin/<integration>>: the PR title is the subject and the why is the body. An integration merge already in the tree is folded in, never redone. Check that the new tree id equals the tested one, so no check reruns. Before the first push, amending the one commit does the same. Once the PR is pushed, the squash needs a force push with lease on the old head: the brief says so, and the user runs it after the yes. - Discover the PR base — never assume. Read the repo's branches:
staging→develop→dev, first that exists is the base. Nevermain/master/prod/production/release/*— even if checked out on one. If no integration branch exists (onlymain/master), STOP and ask which branch is the integration target — never default tomain. - Self-review the staged diff (CLAUDE.md), then give the teach-back brief (Rules below), stating the target out loud:
Pushing <branch> → PR base <integration branch>. Then wait for explicit approval — do not push while waiting. - Push, then open the PR as DRAFT with an explicit base —
gh pr create --draft --base <integration>— never rely on the repo's default base. The PR body reuses the brief:## Summary/## Test plan/## Risk / migrations / config/## Rollback, per "Draft until proven" below. Test plan lists only what actually ran. Follow-up push to an existing PR: update the body from the current brief and gate (gh pr edit <n> --body-file). Read the existing body, remove invalidated claims, and preserve valid evidence with its original command/output, checked revision and source link. Label reused evidence honestly; never claim it ran again this session. Add a## Reviewsection with findings/dispositions and reused source reviews when applicable. - Check the PR head. Read its head SHA, required CI and review findings after pushing. Pending or failing required checks keep it draft. Re-check the SHA before declaring CI green; after any new commit, repeat affected local proof and check CI on the new head. Never merge or change repository protection settings.
- Report the PR URL plus what remains unverified (e.g. UI not browser-tested). Push rejected (non-fast-forward) → fetch and merge locally (never rebase a pushed branch), then re-brief if the diff changed; never force-push a shared branch.
Record task metrics (user choice 2026-09-28): append one line to the project's
memory/task-metrics.md—date · task · PR · route (direct/review/braintrust) · agents (boss/panel/reviewer runs) · review rounds · full-suite runs · elapsed (first request → PR) · escaped bugs: 0. Use real counts from this session; unknown stays?. Compare these lines before tuning the workflow further; no unmeasured speed or quality claims. - Deferred expert maintenance. After the PR is open, required task work is complete and the PR handoff above has been delivered, process pending boss coaching notes through expert-learning.md. Reuse existing findings and evidence; update only the responsible expert's skill guidance file. Report this separately from the task handoff. Do not delay PR creation or task completion, change the reviewed project snapshot, rerun the panel or reopen cleared reviews for skill-only maintenance. If there are no pending notes, skip it. If shipping or task completion is still pending, retain the notes as pending; do not claim background work will run after the session ends.
Rules (single source; moved from CLAUDE.md 2026-09-28)
Teach before you push
Pushing and opening a PR are explicit-approval steps, never automatic. Before a push, stop and tell the human what you fixed and why — that is the whole point of the brief. Lead with it, make it clear, then add only what's needed to approve:
- What I changed and why — the heart of the brief: each change and the reason behind it, one clear line each. Not a diff dump, not an essay — the fix and the decision. Name the tradeoff you rejected if it wasn't obvious.
- How I checked it — what you ran → what you saw (build, tests, the real run).
- Risk — migrations, config/env, deleted code, anything needing a manual step.
noneif nothing. - Not done — what you didn't touch, guessed, or left for the human.
- Where it goes —
Pushing <branch> → PR base <staging>. Approve?
Talk like a peer explaining a change, not a form and not a wall of text. Use the plain words of CLAUDE.md "How you talk": no Sanad labels, each line readable without asking. Then wait for the yes. Told to "just push" with the task → still give the what-and-why first, then push. A "yes" to the task is not a "yes" to the push. (/ship runs this brief + the draft-PR flow, and still stops for the explicit yes.)
Push only to the integration branch
Push branches and open PRs against the staging/dev integration branch ONLY — never main, master, prod, production, or any release/* branch, even if currently checked out on one.
- State the target out loud before acting: "Pushing
<branch>→ PR base<integration>." - Discover the base, don't assume: read the repo's branches (default-branch ref, branch list). A
develop/staging/devbranch is the base. If onlymainexists, STOP and ask which branch is the integration target — never default tomain. - PR-create MUST pass an explicit base; never rely on the default base.
- Never merge a PR, never merge into a shared/prod branch, never tag a release, never trigger a prod deploy. Promotion to prod is the human's call, per-action.
- If told to target prod directly, restate the target and require a one-time confirmation before acting.
Draft until proven
Open as a DRAFT unless every Definition-of-Done item passed. Mark ready only after the full gate is green, stating which items you verified vs. couldn't (e.g. UI not browser-tested). A branch that can't deploy cleanly stays draft. The PR body reuses the teach-back — don't invent new prose:
## Summary— what + why.## Test plan— only what you actually ran, per the gate. Not aspirational. Opt-in tests that CI skips (environment-gated real-provider tests) are listed with their local result and the note "not run by CI".## Risk / migrations / config— migrations? new env/config keys? a manual step? Write "none" explicitly.## Rollback— how to undo; for an applied migration, the down/expand-contract path. "Irreversible" is a blocker — flag it.
No AI attribution (no session links or Claude-Session: trailers either), no internal agent notes.
After the deploy
Merging isn't done. Once it deploys, smoke the primary happy path end to end against the deployed URL (the one flow this change touches, hit for real) and scan logs for new errors/warnings just after deploy; paste the result. Can't reach the environment → list the exact manual smoke steps, don't mark it verified.
For any new flow crossing a boundary (HTTP in, external call, background job, multi-step write), make it traceable without a debugger: a correlation/request id on every log line, a structured info event at the business start and end with key ids, an error event with that id on the catch — never a bare "failed". Surface the correlation id in the user-facing error so a report maps to a log line. No secrets/PII in any of it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
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.

