ship
Skill1 starsChanged 52 days agoApache-2.0View on GitHub
Have the AI branch, commit, push, and create or update a pull request in the current repository. Use when the user says ship, asks to prepare a branch or commit, or wants help following the repo branch and PR workflow without pushing to the base branch.
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
Show its rules and text
We split this skill into the rules it gives an agent
41 rules. 0 are common, 29 are distinctive, and 12 are very specific to this project.
0
Common
Most of the 180 edited versions we read keep these.
29
Distinctive
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill when the user asks the AI to ship work.
- Distinctive: line 27
Use the current topic branch, or create a policy-compliant branch from the base branch when currently on it or on the repository's default …
- Distinctive: line 31
Create or update the pull request and report the branch, commit, PR, and validation result.
- Very specific: line 36
Only start this workflow when the user's current message explicitly asks to ship, create a branch/commit/PR, or otherwise gives a clear go …
- Distinctive: line 39
Do not infer shipping approval from the fact that changes were just made, validation passed, a prior turn discussed shipping, or the work …
- Distinctive: line 41
If the user asks for edits, review, validation, or policy changes without a current-turn ship request, make the changes only and wait for …
- Distinctive: line 47
Not a land workflow for merging pull requests or deleting topic branches.
- Distinctive: line 48
Not approval to commit unrelated local changes.
- Distinctive: line 49
Not permission to push directly to the base branch unless the user explicitly asks.
- Distinctive: line 51
Not permission to commit, push, or open/update a pull request after ordinary edits unless the user explicitly asks to ship in the current …
- Distinctive: line 53
Not a replacement for validation.
- Very specific: line 65
Read the target repo's config file — .orchraft.jsonc, else .orchraft.json — when one exists, per context/policies/config-policy.md (the …
- Distinctive: line 70
Check git status --short --branch before changing branch or commit state.
- Distinctive: line 73
If already on a topic branch, assume the user wants to ship additional work on that branch unless they explicitly ask for a different …
- Very specific: line 84
When the config file sets validate, run that command rather than discovering one from the repository.
- Distinctive: line 95
If on either, create a policy-compliant branch from the base branch.
- Very specific: line 104
Write a commit title using <type>(<scope>): <summary>.
- Very specific: line 105
Add a commit body only when the title doesn't fully explain the change, written as free-form prose with no headings, per …
- Very specific: line 113
Create or update the branch pull request through the GitHub MCP connector when it is available in the session.
- Very specific: line 121
If the PR has open review threads from a prior roast pass and this diff fixes the finding one flags, resolve that specific thread via …
- Very specific: line 136
If a review thread's finding — from roast, CodeRabbit, or a human reviewer — is being declined rather than fixed (a false positive, a …
- Distinctive: line 165
Always inspect the whole set of changes the user wants shipped before choosing the branch name, commit title/body, PR title, or PR body.
- Very specific: line 170
Commit title: follow context/policies/commit-policy.md exactly: <type>(<scope>): <summary>.
- Very specific: line 172
Commit body: follow context/policies/commit-policy.md exactly: optional, free-form prose with no headings, describing only the staged diff.
- Distinctive: line 184
Never commit or push directly to the base branch unless the user explicitly asks.
- Distinctive: line 186
Do not stop after push until the PR step is complete or clearly blocked.
- Distinctive: line 187
If the branch name would violate policy, stop and fix the branch name instead of improvising.
- Distinctive: line 188
Do not create a second topic branch from an existing topic branch unless the user explicitly asks to branch off or retarget the work.
- Very specific: line 190
If branch creation fails with a git refs collision such as an existing docs ref blocking docs/..., diagnose the local and remote refs with …
- Very specific: line 194
If a git or network command fails because of the sandbox (read-only .git, blocked network), follow context/policies/sandbox-policy.md (the …
- Distinctive: line 200
Never resolve a review thread whose finding this diff doesn't actually fix, and never resolve one without the user's current-turn go-ahead.
- Distinctive: line 202
Never post a decline reply to a review thread without the user's current-turn go-ahead, and never resolve a thread just because a decline …
- Distinctive: line 209
Stop before commit, push, or PR mutation if the user has not explicitly asked to ship in the current turn.
- Distinctive: line 211
Stop if there are no changes to ship.
- Distinctive: line 212
Stop if the only available branch would be the base branch and the user did not explicitly allow committing to it.
- Distinctive: line 214
Stop if intended and unrelated changes cannot be separated safely.
- Distinctive: line 215
Stop if validation for the touched area fails, unless the user explicitly asks to ship despite the failure.
- Distinctive: line 217
Stop if a required git or network command remains blocked by the host sandbox after per-command escalation.
- Distinctive: line 221
Stop if local git hooks fail, abort the commit, or leave unexpected changes.
- Distinctive: line 222
Stop if branch, commit, or pull request text would violate the policy files.
- Distinctive: line 237
If shipping stops or fails, skip the shipping phrase and state the blocker plainly.
“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 Workflow
Use this skill when the user asks the AI to ship work.
Contents
- At A Glance
- Trigger Rules
- What This Is Not
- Prerequisites
- Default Path
- Naming And Text
- Guardrails
- Stop Conditions
- Handoff
- Response Examples
At A Glance
- Inspect the current branch, status, and actual diff.
- Validate the touched area.
- Use the current topic branch, or create a policy-compliant branch from the base branch when currently on it or on the repository's default branch.
- Stage only intended changes, commit with a policy-compliant message, then push.
- Create or update the pull request and report the branch, commit, PR, and validation result.
Trigger Rules
- Only start this workflow when the user's current message explicitly asks to ship, create a branch/commit/PR, or otherwise gives a clear go signal for the full ship workflow.
- Do not infer shipping approval from the fact that changes were just made, validation passed, a prior turn discussed shipping, or the work appears ready.
- If the user asks for edits, review, validation, or policy changes without a current-turn ship request, make the changes only and wait for an explicit ship/go confirmation before committing, pushing, or opening/updating a PR.
What This Is Not
- Not a land workflow for merging pull requests or deleting topic branches.
- Not approval to commit unrelated local changes.
- Not permission to push directly to the base branch unless the user explicitly asks.
- Not permission to commit, push, or open/update a pull request after ordinary edits unless the user explicitly asks to ship in the current turn.
- Not a replacement for validation; run the smallest relevant checks before committing.
Prerequisites
- Read
context/policies/approval-policy.md,context/policies/branch-policy.md,context/policies/commit-policy.md,context/policies/verification-policy.md, andcontext/policies/writing-guidelines.md. Use the target repo's copy of each when it exists; otherwise use the bundled copy at${CLAUDE_PLUGIN_ROOT}/context/policies/<file>. - Read the target repo's config file —
.orchraft.jsonc, else.orchraft.json— when one exists, percontext/policies/config-policy.md(the target repo's copy when it exists, otherwise${CLAUDE_PLUGIN_ROOT}/context/policies/config-policy.md). A missing file is the normal case and means the documented defaults apply. - Check
git status --short --branchbefore changing branch or commit state. - Confirm there are intended changes to ship.
- Identify untracked files and include only the ones that belong to this work.
- If already on a topic branch, assume the user wants to ship additional work on that branch unless they explicitly ask for a different branch.
- Inspect the full intended change set before naming anything: current branch,
git status, unstaged diff, staged diff, and relevant untracked files. - Generate the branch name, commit message, and pull request text from that complete inspected change set, not from memory or the ticket title alone.
Default Path
- Inspect branch state and working tree.
- Validate the touched area per
context/policies/verification-policy.md. When the config file setsvalidate, run that command rather than discovering one from the repository; it is the answer the repo already gave, so there is nothing left to infer. Everything else inverification-policy.mdstill applies to it — a failure is a stop, and the command that ran is reported as written. - Resolve the base branch first:
baseBranchfrom the config file when set, otherwise the repository's default branch. Do not assumemain— a repository onmasterordevelopdoes not use it. WhenbaseBranchnames a branch other than the default, the default branch is not a topic branch either: every rule in this skill that refers to the base branch — the guardrail, the stop condition, not pushing to it — applies to both. If on either, create a policy-compliant branch from the base branch; if already on a topic branch, keep using it. Before creating or renaming any branch, count the words after/(excluding an Optional Ticket Key segment, if used) againstcontext/policies/branch-policy.md's limit and check the allowed characters — verify the generated name against the policy text itself, not just against the rule from memory, before runninggit checkout -bor a rename. A name that fails this check gets fixed before it's used, not caught later byroast. - Stage only the intended changes.
- Write a commit title using
<type>(<scope>): <summary>. - Add a commit body only when the title doesn't fully explain the change,
written as free-form prose with no headings, per
context/policies/commit-policy.md. - Let local git hooks run normally during commit. If hooks auto-fix files, review the resulting diff, stage only intended hook changes, and commit again.
- Confirm the commit succeeded and no intended hook changes remain unstaged.
- Push the topic branch.
- Create or update the branch pull request through the GitHub MCP connector
when it is available in the session. Use
ghonly after the MCP path has been tried and is unavailable or blocked. When updating an existing PR, re-read the whole body against the branch as it now stands, not just the section the new commit belongs in: commit counts, the list of touched files, and the commit each validation claim ran against all go stale when a push only appends a line. Correct or re-run anything that no longer holds. - If the PR has open review threads from a prior
roastpass and this diff fixes the finding one flags, resolve that specific thread viapull_request_review_write(methodresolve_thread) once the user gives the current-turn go-ahead percontext/policies/approval-policy.md. Match each resolution to the finding it actually fixes; do not resolve threads wholesale or resolve one whose finding this diff doesn't address. A finding that a statement is wrong is fixed only when every copy of it is: before committing the fix, search the repository for other places stating the same fact or rule, and fix those in the same commit. The flagged line is where a reviewer happened to look, not the only place the wording lives. A finding posted as an "outside diff range" or general PR comment (common from CodeRabbit and similar bots, since GitHub only allows threads on lines inside a diff hunk) has no review thread to resolve at all — say so plainly instead of treating it as resolved just because the diff fixes it. - If a review thread's finding — from
roast, CodeRabbit, or a human reviewer — is being declined rather than fixed (a false positive, a deliberate tradeoff, out of scope for this PR), do not resolve it silently and do not leave it hanging with no response either. Draft a short, technical reply stating the concrete reason it won't be fixed, and once the user gives the current-turn go-ahead percontext/policies/approval-policy.md, post it viaadd_reply_to_pull_request_comment. If that MCP path is unavailable, fall back togh api --method POST "repos/$owner/$repo/pulls/$number/comments" -f "body=$reply" -F "in_reply_to=$parent_review_comment_id"— quoted shell variables, not bare angle-bracket placeholders, since an unquoted multiline reply can be parsed as redirection or split into multiple arguments. Nevergh pr comment, which creates a top-level PR comment instead of a review-thread reply, soreckoningwould never find it. This exactgh apiform matches GitHub's documented review-comment-reply behavior but hasn't been exercised live in this repo; confirm the response actually carries a validid/html_urlthe first time this fallback path fires, the same wayroast's ownghfallback validates its result, rather than trusting the command because it reads correctly. A reply is not a resolution: leave the thread unresolved unless the user separately asks to resolve it too. End the reply's visible text with a blank line and the hidden marker<!-- orchraft:declined -->soreckoningcan find it later; the marker is metadata for that skill, not part of the stated reason itself.
Naming And Text
- Always inspect the whole set of changes the user wants shipped before choosing the branch name, commit title/body, PR title, or PR body.
- Branch: follow
context/policies/branch-policy.mdexactly:<type>/<short-kebab-description>, using the same conventional type as the dominant change where possible. - Commit title: follow
context/policies/commit-policy.mdexactly:<type>(<scope>): <summary>. - Commit body: follow
context/policies/commit-policy.mdexactly: optional, free-form prose with no headings, describing only the staged diff. - Pull request title:
<type>: <short technical summary>percontext/policies/writing-guidelines.md— keep the<type>:prefix, just omit the(scope)parentheses unless the user explicitly asks for one. - Pull request body: follow
context/policies/writing-guidelines.md. Describe the whole branch, not just the final commit. If the repository provides a PR template or PR body checks, follow that format first. Do not invent checklist items, screenshots, reviewers, or follow-up work.
Guardrails
- Never commit or push directly to the base branch unless the user explicitly asks.
- Do not stop after push until the PR step is complete or clearly blocked.
- If the branch name would violate policy, stop and fix the branch name instead of improvising.
- Do not create a second topic branch from an existing topic branch unless the user explicitly asks to branch off or retarget the work.
- If branch creation fails with a git refs collision such as an existing
docsref blockingdocs/..., diagnose the local and remote refs with the correct git commands before changing the branch name. Do not switch to a less accurate type or unrelated branch name just to bypass the error. - If a git or network command fails because of the sandbox (read-only
.git, blocked network), followcontext/policies/sandbox-policy.md(the target repo's copy when it exists, otherwise${CLAUDE_PLUGIN_ROOT}/context/policies/sandbox-policy.md): rerun that command with escalation, never substitute the GitHub API for the local commit, and stop if escalation is declined. - Never resolve a review thread whose finding this diff doesn't actually fix, and never resolve one without the user's current-turn go-ahead.
- Never post a decline reply to a review thread without the user's current-turn go-ahead, and never resolve a thread just because a decline reply was posted to it — a reply and a resolution are separate actions, each needing its own go-ahead.
Stop Conditions
- Stop before commit, push, or PR mutation if the user has not explicitly asked to ship in the current turn.
- Stop if there are no changes to ship.
- Stop if the only available branch would be the base branch and the user did not explicitly allow committing to it.
- Stop if intended and unrelated changes cannot be separated safely.
- Stop if validation for the touched area fails, unless the user explicitly asks to ship despite the failure.
- Stop if a required git or network command remains blocked by the host sandbox after per-command escalation. Report the blocked command and tell the user the exact command to rerun with approved git mutation access; do not substitute a GitHub API for the local branch or commit steps.
- Stop if local git hooks fail, abort the commit, or leave unexpected changes.
- Stop if branch, commit, or pull request text would violate the policy files.
Handoff
- Unless the user asked for plain output, open with a fresh one-line success
phrase in the orc voice, speaking as the Raid Captain from
context/personality.md(the target repo's copy when it exists, otherwise${CLAUDE_PLUGIN_ROOT}/context/personality.md). If they did, open with the plain result instead. - Report the branch name.
- Report the commit title.
- Report the pull request URL or say why PR creation/update was blocked.
- Report validation that ran, or why validation could not run.
- Report which review threads, if any, were resolved and which finding each one fixed, and which threads, if any, got a decline reply and why.
- If shipping stops or fails, skip the shipping phrase and state the blocker plainly.
Response Examples
Opening lines are samples of the orc voice; write a fresh one each time.
Successful ship:
🚢 Grah! War party launched. PR #123 holds the beach for review, chief. ✨
Branch: `fix/login-null-token`
Commit: `fix(auth): guard null login token`
PR: https://github.com/example/repo/pull/123
Validation: `<project validation command>`Successful ship with docs only:
🚢 Battle scrolls packed for the march. The docs PR has taken the field.
Branch: `docs/land-workflow`
Commit: `docs(agents): clarify land workflow`
PR: https://github.com/example/repo/pull/124
Validation: reviewed markdown changesSuccessful ship on existing branch:
🚢 Reinforcements sent to the same front. PR #124 holds the new line.
Branch: `docs/land-workflow`
Commit: `docs(agents): document land trigger rules`
PR: https://github.com/example/repo/pull/124
Validation: reviewed markdown changesBlocked ship:
⚠️ Shipping is blocked: validation failed in `<project validation command>`.
No commit or push was performed.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.

