agentleFS
wboayuewboayue/rust-ibapi/.claude/skills/ship/SKILL.md

ship

Skill400 starsChanged 8 days agoMITView on GitHub

Take a finished change from local gates to a merged PR — pick the gates the diff needs, self-review, open the PR, get CI to run, choose the merge strategy, handle stacks and fork PRs, clean up. Asks before merging.

  • Commits and pushes

194 other projects use a version of this, 2 of them edited.

Adopted by

Most recently taken up by

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-811Skill

    ios-sync

    Regenerate the iOS debug bridge against the latest upstream gstack templates. (gstack)

    Also in 6 projects that use this

  • seek888Skill

    open-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

  • ayudaySkill

    setup-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

  • ShreyRaviSkill

    landing-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

  • zebbernSkill

    debug-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

  • ramybarsoumSkill

    document-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

The file

We split this skill into the rules it gives an agent

10 rules. 0 are common, 3 are distinctive, and 7 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.

  • 7

    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
  1. Distinctive:

    Never commit to main. Substantive changes go branch → push → PR.

    line 19
  2. Distinctive:

    Always run the full list in pre-PR checks, on the pinned toolchain.

    line 27
  3. Very specific:

    Read the full diff as a reviewer would (/code-review or the review-code skill for a second read).

    line 48
  4. Very specific:

    Duplication: no helper re-implementing one that exists (ToField, some_str, shared test helpers).

    line 51
  5. Very specific:

    Tests: every new pub / pub(crate) fn has one that exercises production code.

    line 53
  6. Very specific:

    Leftovers: no PR-narrative comments ("added in this PR"), no plans/ paths, no file.rs:NNN citations, no temp #[ignore] probe tests, no …

    line 55
  7. Very specific:

    Retargeting does not start CI: After gh pr edit <N> --base main, push something: git merge origin/main && git push on the branch.

    line 78
  8. Very specific:

    Fork PRs: wait at action_required until approved: gh api -X POST repos/wboayue/rust-ibapi/actions/runs/<id>/approve.

    line 81
  9. Distinctive:

    Ask first unless told to merge.

    line 96
  10. Very specific:

    Follow-ups deferred during review go in GitHub issues, cited as #N in the PR (plans and issues).

    line 133

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Ship a change

From "the code is done" to merged on main. Releases are a separate flow: /release.

Outward-facing steps are asked first: push, gh pr create, and merge each need the user's go-ahead unless they already gave it for this change ("open a PR", "merge it"). Approval for one PR doesn't carry to the next.

$S is your scratchpad directory.

1. Branch

  • Never commit to main. Substantive changes go branch → push → PR; a direct push can't be undone (force-push to main is blocked even for admins). If it happens anyway: git revert on main, re-land via PR.
  • Work in a worktree on its own branch. Other agents may share the main checkout and switch its branch under you.

2. Gates

Always run the full list in pre-PR checks, on the pinned toolchain. Then add what the diff touches:

git diff --name-only origin/main...HEAD
Diff touchesAlso
src/proto/, decoders, encoders, subscriptions/, any public signatureintegration crate builds (no CI job builds them)
AGENTS.md, docs/rules/, docs/wire-facts/, .claude/skills/just rules-check
A new pub / pub(crate) fntest + coverage floor; pub fn also needs a doc example
Behavior a user would noticechangelog entry under ## [Unreleased], same PR
Removed or renamed public itemuser docs sync; grep -rn <old name> README.md docs/ examples/
Deleted or renamed any symbolgrep -rn <symbol> docs/rules/ docs/wire-facts/ .claude/skills/
A breaking changestop and ask: it queues for the next major

Docs-only diffs (*.md, skills) skip the cargo gates but not rules-check.

3. Self-review

Read the full diff as a reviewer would (/code-review or the review-code skill for a second read). At minimum:

  • Duplication: no helper re-implementing one that exists (ToField, some_str, shared test helpers); no logic written twice across sync/async.
  • Tests: every new pub / pub(crate) fn has one that exercises production code.
  • Consistency: the touched module matches its siblings' layout and idiom.
  • Leftovers: no PR-narrative comments ("added in this PR"), no plans/ paths, no file.rs:NNN citations, no temp #[ignore] probe tests, no unused imports.

Fix what you find before opening the PR, not in review rounds.

4. Commit and PR

  • Messages: concise, technical, say what changed and why. No AI attribution lines or footers.
  • Anything longer than one line, or containing quotes/backticks, goes through a file: git commit -F $S/msg.txt, gh pr create --body-file $S/pr.md. Inline heredocs inside chained commands have failed and taken the commit down with them.
  • PR body: why first, then what. Cite issues as #N; Closes #N for the one it resolves. Say what was verified and how (which gates, a live probe), so claims are checkable.
  • Title scoped like the log: <area>: <change>.

5. CI

gh pr checks <N> --watch --interval 30
  • CI runs only on PRs whose base is main (or v2-stable). A stacked child gets no CI until retargeted; rely on local gates meanwhile.
  • Retargeting does not start CI. After gh pr edit <N> --base main, push something: git merge origin/main && git push on the branch.
  • A red leg: reproduce locally with that leg's exact flags before pushing a fix.
  • Fork PRs wait at action_required until approved: gh api -X POST repos/wboayue/rust-ibapi/actions/runs/<id>/approve. Approve the run for the current head SHA (gh api "repos/wboayue/rust-ibapi/actions/runs?head_sha=<sha>"). Approving an older run tests a stale commit, so cancel it.
  • A conflicting PR gets no CI at all. Pushes to a PR with mergeable: CONFLICTING start no run. Resolve the conflict first (§6 Fork PRs).
  • Confirm green against the head you'll merge. A --watch started right after a push can report the previous head's checks: gh api repos/wboayue/rust-ibapi/commits/<sha>/check-runs --jq '.check_runs[]|"\(.name) \(.conclusion)"'. Merge with --match-head-commit <sha> so a later push can't slip in.
  • A failure unrelated to the diff, like No space left on device on the runner, is infrastructure: gh run rerun <id> --failed.

6. Merge

Ask first unless told to merge. State the strategy and why. Take the first row that matches:

Branch holdsCommand
A child PR stacked on itgh pr merge <N> --merge (see Stacks)
One commitgh pr merge <N> --squash
Several commits forming one change, each buildsgh pr merge <N> --merge
Several independent small commits, nothing stacked on topgh pr merge <N> --rebase
Fixup / review-response / merge-from-main commits, or a fork PRgh pr merge <N> --squash
…and an abandoned approach among the commits--squash --body-file $S/body.md describing only the final design (the default body concatenates every commit)

Stacks, in this order:

  1. gh pr edit <child> --base main while the child is open. Merging the parent first deletes its branch, which can close the child for good: it then can't be reopened or retargeted (#723 was lost this way and reopened as #724).
  2. Merge the parent with --merge (a squashed parent leaves the child with duplicate commits).
  3. Push to the child to start its CI (§5), wait for green, merge it.

Fork PRs with conflicts: merge main into the contributor's branch, never rebase. A rebase needs a force-push over their history. Check gh pr view <N> --json isCrossRepository,maintainerCanModify first.

Verify with gh pr view <N> --json state,mergedAt. When gh pr merge errors on local cleanup ('main' is already used by worktree), the server-side merge has usually succeeded; check before re-running.

7. Clean up

The repo deletes merged branches on GitHub (delete_branch_on_merge), so don't pass --delete-branch.

git worktree remove <path>
git branch -D <branch>
git fetch -p

Follow-ups deferred during review go in GitHub issues, cited as #N in the PR (plans and issues).

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.