Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/panda850819/verbs/shipnpx skills add panda850819/verbs --skill shipgit clone --depth 1 https://github.com/panda850819/verbsWrote 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/panda850819/verbs/ship)<a href="https://agentmods.dev/skills/panda850819/verbs/ship"><img src="https://agentmods.dev/badge/skills/panda850819/verbs/ship.svg" alt="Measured on agentmods" 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 | $0.00065 | $0.01513 |
| Opus 5 | $0.00032 | $0.00757 |
| Sonnet 5 | $0.00013 | $0.00303 |
| Haiku 4.5 | $0.00006 | $0.00151 |
Grade A, and why
ship 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 4d 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 — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Ship
/ship closes completed code work through a pull request. Knowledge-note
lifecycle and external publication remain host concerns. You already know how
to write a commit; this skill is the gate sequence, not the coaching.
Gates (in order, none skippable silently)
- Config — read the
## verbsblock fromCLAUDE.mdorAGENTS.mdfor the test command, tag format, and release preference. - Pre-flight —
git pull; run the project's test/build command and STOP on failure with the output; inspectgit diff --stat,git log origin/{main}..HEAD --oneline, and the current branch. - Pitfall ack — search
{learnings_dir}fortype: pitfallentries whosefiles:touch changed files; a match must be listed and acknowledged before proceeding. Skip only what an earlier read this session already listed by this same query: an escalatedreview's RECALL block covers an entry only when it actually named it. Runningreviewis not itself evidence — its recall ranks by topic-token overlap against title and tags, takes the top 3-5, and drops effective confidence below 3, so a pitfall naming a changed file can sit outside its results entirely. Same store, different query. Acknowledge the remainder here. - Scope check — if a brief for this branch exists in
docs/briefs/, compare the current full diff against its Scope In/Out and the diff at review time. PrintScope: ON TRACK, orSCOPE DRIFT: [...]/POST-REVIEW CHANGES: [...]and ask before proceeding. No brief → still warn on commits made after the last/reviewthis session. - Review gate — if
/reviewhas not run on the current diff this session, warn: "Review not run. Run /review first?" Proceed only on an explicit skip. - Branch before commit (hard rule) — never push to main/master; always
ship via PR. On main → create
fix/*/feat/*/refactor/*BEFORE staging; a branch created after the commit still advances the local default branch. - Commit — stage relevant files only (never
git add -A); conventional messagetype(scope): description; emptygit diff --cachedafter staging → report and skip the commit; never amend, never skip hooks. - Tag / release (config-gated) —
tag: semver→ derive the bump from commits (feat = minor, fix = patch) and tag;release: true→ GitHub Release from the tag with generated notes. Truth gate before publishing: every PR / SHA the notes cite must be an ancestor of the tag (git merge-base --is-ancestor), and added/removed claims must matchgit diff {prev-tag}..{tag} --stat— the notes describe what the tag contains, nothing more. On mismatch fix the notes, never re-tag. Otherwise skip both. - Push + PR — push with
-u(plus tags if created);gh pr createwith a title under 70 chars and a what/why/how-to-test body. Resolve an existing PR instead of creating a duplicate. - QA evidence upsert — when
qaran, read the handoff from the Git metadata path defined inlib/qa-evidence-format.md. Recompute its artifact identity against the PR head, then create or update the authenticated viewer's single marker comment. Read the comment back before reporting its URL. A stale artifact, malformed block,FAIL, orUNPROVENrow still gets published asAcceptance: NOT VERIFIED, but blocks a ready/done claim. For a UI diff that requiredqa, missing evidence also blocks completion. For non-UI work, stateQA evidence: not applicable; never fabricate a report. Re-runningshipupdates the same comment rather than adding another. - Artifact proof — before asking a human to validate an artifact or using
manual validation as completion evidence, apply
lib/verify-the-test-loop.mdand prove that the tested artifact contains the current commit. Missing artifact identity blocks the completion claim. - Closure evidence — done means the PR URL, pushed commit/branch, and, when QA ran, the verified QA comment URL are printed. Missing delivery evidence → name the gap and do not claim done.
What ships with it
6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 4d ago First seen · 119 lines · 65 tokens per session scan A 88d37fe16bd8
ship is a skill published in the GitHub repository panda850819/verbs (5 stars, last pushed 11d ago), licensed MIT. It adds 65 tokens to every session and 1,513 once invoked, about $0.0003 per session on Opus 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-08-31.
Other skills, from other repositories
re0-release
Walk a pending change through this repo's shipping and releasing checklist end to end, then tag and publish once confirmed. User-invoked: run it when you've decided to ship.
synthetic-release-notes
Draft release notes from user-provided changes.
release
Ships completed work in the obsidian-markdown-lint-mcp-server repository. Two phases depending on context: WRAP UP (on a feature branch with committed work, runs the test gates, updates CHANGELOG and README, commits, pushes, opens a draft PR) and CUT RELEASE (on main after a merge, determines the semver bump, bumps…
conventions
Defines the commit message, branch naming, pull request, and release note conventions for the obsidian-markdown-lint-mcp-server repository. Make sure to load this skill whenever writing a commit message, naming a branch, drafting a PR title or body, or writing CHANGELOG entries in this repo. Use when the user asks…
release
Create and publish releases for the Hongdown project. Use when releasing a new version, creating a patch release, or creating a major/minor release. Handles CHANGES.md updates, version bumping, tagging, and branch management.
release
Draft, prepare, or publish a GitHub or GitLab release. Use when the user asks for release notes, wants to publish a release, or asks what changed since the last tag.