Borrowing it
Nothing to install: this file belongs to gymcoach-app/gymcoach. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/gymcoach-app/gymcoach/main/.claude/skills/ship-pr/SKILL.mdgit clone --depth 1 https://github.com/gymcoach-app/gymcoachWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/gymcoach-app/gymcoach/ship-pr)<a href="https://agentmods.dev/skills/gymcoach-app/gymcoach/ship-pr"><img src="https://agentmods.dev/badge/skills/gymcoach-app/gymcoach/ship-pr/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/gymcoach-app/gymcoach/ship-pr"><img src="https://agentmods.dev/badge/skills/gymcoach-app/gymcoach/ship-pr.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00076 | $0.05847 |
| Opus 5.5 | $0.00030 | $0.02339 |
| Sonnet 5.5 | $0.00015 | $0.01169 |
| Haiku 4.5 | $0.00008 | $0.00585 |
Grade A, and why
ship-pr scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 316 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ship-pr
The shipping half of the pipeline. implement-issue opens PRs; this skill takes one
open PR from "opened" to "merged", autonomously. It is the reusable unit behind the
CI-watch and auto-merge loops. Read CLAUDE.md first.
Autonomy boundary (decided): auto-merge is allowed only when CI is green and the self-review is clean. The green CI is the trust boundary - never merge around it, never merge on a red or pending gate, never merge a PR a human has marked as draft or requested changes on.
Input
- A PR number, OR "ship the ready PRs" (then operate on each open, non-draft PR that
targets
mainand is authored by the loop).
Procedure (per PR)
- Load state and trust gate.
gh pr view <n> --json number,title,headRefName,isCrossRepository,author,isDraft,mergeable,reviewDecision,state. This repo is public, so gate as an allowlist, not a blocklist, per the tiered policy indocs/loops/10-external-contributions.md(single source of truth):author.loginin{JulienAu, Julien-Au}and not a fork: the normal pipeline below. GitHub authorship is authenticated; the login allowlist is the real control. Do NOT gate onauthorAssociation == OWNER(the loop's account is aCOLLABORATOR; an OWNER check would break its autonomy).- Author on the vetted contributors list in that policy file (fork PRs included):
auto-merge is permitted ONLY after that policy's full sequence - mechanical
hard-block path gate (group B = verdict only; group A = see below), no file overlap with another PR handled this run, multi-lens
adversarial review with structured verdicts, green CI on the SHA recorded before
review, then the pinned merge of step 5 with
--method merge(a merge commit, the default for every vetted fork PR, stacked or not). Local gate runs and fixups are permitted at this tier only. - Anyone else: do NOT execute their code locally (CI is the only executor - no
verify.sh, nonpm cion their branch, even in a worktree). Run the read-only review of step 4 (diff as data) and post the structured verdict as a PR comment - no CI-fixing (step 3), no fixup commits. Under the operator's 2026-10-07 standing delegation, merge it on the pinned SHA (the step 5 command with--method squash) only when the same full sequence is clean - no group B path, every lens clean with no blocking/major/security finding, green CI on the recorded SHA - and the PR adds value; anything short of that, stop after the verdict, no merge. - Group A paths, either external tier (operator extension 2026-10-13:
lib/mcp/**,lib/auth*,lib/api.ts,lib/rate-limit*,app/api/mcp-tokens/**, bulk-data routes,lib/llm/**,lib/prompts/**, Prisma schema and migrations,messages/**,i18n/**): mergeable by the loop only when, on top of the sequence above, the egress/backdoor lens and the threat-model lens both ran on those paths and are clean, and a rollback tagautonomy-baseline-<date>[suffix]is pushed at the pre-mergemainbefore the merge call. No local run, container included, and no fixup on the contributor's branch. Group B paths (.github/**,scripts/**,.claude/**,automation/**,CLAUDE.md,docs/loops/**, container, ignore and env files,middleware.ts, dependency manifests and lockfiles, executable configs,.coderabbit.yaml): verdict only, a human merges. The lists in the policy file are authoritative. Also skip if: draft,state != OPEN,reviewDecision == CHANGES_REQUESTED, or not targetingmain. Report why it was skipped.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago Changed · +12 lines 11ec00a317cd
- 16d ago Changed · +22 lines 2e44f81d20a6
- 22d ago Changed · +11 lines 73ae6174bd51
- 24d ago First seen · 271 lines · 76 tokens per session scan A 3451ada2f48d
ship-pr is a skill published in the GitHub repository gymcoach-app/gymcoach (169 stars, last pushed 3d ago), licensed MIT. It adds 76 tokens to every session and 5,847 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-13.
ship-pr compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| ship-prgymcoach-app/gymcoach | Skill | 169 | 3d ago | MIT | A | 76 | Claude Code |
| github-pr-workflowStarryCod/cogitum | Skill | 12 | 5mo ago | MIT | D | 20 | Claude Code, Codex |
| caveman-commitJuliusBrussee/caveman | Skill | 118k | yesterday | Apache-2.0 | A | 38 | Claude Code |
| githubNousResearch/hermes-agent | Skill | 261k | yesterday | MIT | A | 19 | Claude Code, Codex |
| feature-publishomnigent-ai/omnigent | Skill | 11k | yesterday | Apache-2.0 | A | 24 | Claude Code, Codex |
| lean-reviewSnowflake-Labs/cocoplus | Skill | 727 | 2d ago | MIT | A | 44 | Claude Code |
| understand-prmastra-ai/mastra | Skill | 29k | yesterday | none | A | 53 | Claude Code, Codex |