Borrowing it
Nothing to install: this file belongs to szymdzum/browser-debugger-cli. 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/szymdzum/browser-debugger-cli/main/.claude/skills/ship/SKILL.mdgit clone --depth 1 https://github.com/szymdzum/browser-debugger-cliWrote 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/szymdzum/browser-debugger-cli/ship)<a href="https://agentmods.dev/skills/szymdzum/browser-debugger-cli/ship"><img src="https://agentmods.dev/badge/skills/szymdzum/browser-debugger-cli/ship/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/szymdzum/browser-debugger-cli/ship"><img src="https://agentmods.dev/badge/skills/szymdzum/browser-debugger-cli/ship.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.00092 | $0.07585 |
| Opus 5.5 | $0.00037 | $0.03034 |
| Sonnet 5.5 | $0.00018 | $0.01517 |
| Haiku 4.5 | $0.00009 | $0.00758 |
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 15d 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 — 131 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Ship (bdg)
You are the orchestrator: you choose the issues, write the briefs, judge the reports, route the findings, and merge. You don't write feature code. Everything mechanical goes through the script, so your attention stays on judgment:
ship() { node "$(git rev-parse --show-toplevel)/.claude/skills/ship/scripts/ship.mjs" "$@"; } # ship help
Call it only through this function: a command kept in a variable (S="node …"; $S brief …) is not split into words in zsh, and in S14 that wrote two empty briefs.
Each PR gets three independent looks before it lands, none of which sees the author's reasoning: tests written first that fail before the fix (the red commit), a fresh reviewer with the diff and the issue only, and a fresh-agent test in which a new agent uses the change as bdg's real users (coding agents) would. Skip none of them for behaviour changes.
Files:
- briefs.md: the four briefs and their shared blocks; render them with
ship brief. Read before spawning any subagent. - scenarios.md: fresh-agent test rounds, the report format, scenarios S01–S17, the exploratory sweep. Read before any fresh-agent test.
- log.md: one row per merged PR (
ship log); the retro's data. - scripts/ship.mjs: the commands below; its tests run in
npm test.
Session start
ship snapshot(gate 8 compares against it; it lives in~/.cache/ship/, so a reboot keeps it). It andship briefwarn when the load average is above 50: find what is running before starting agents or Chromes (S27: the Mac rebooted mid-session). It also warns when the main checkout'snode_modulesdon't matchpackage-lock.json, as after dependabot merges (S16 #803: an implementer wrote a dead type extension against stale types); runnpm cithere, notnpm install, which rewrites the lockfile's libc fields.ship worktreewarns the same way.- Only verified issues go in. Verified means one command you have already run that shows the symptom on
main: a bdg invocation on a fixture page or a real site, a test, or a script; deterministic, or for timing bugs reproducing at a rate you can debug against. Record the command and output on the issue; it becomes the red commit's first test. Behaviour that can't be run (dead code, a wrong doc) may be confirmed with file:line. Neither: verify first or ask. - Themed sweep first. A session has a theme (one root cause or one area). One verifier (verifier brief, Sweep block filled in) re-runs every open issue of the theme on
mainand sweeps the theme's surfaces for symptoms the issues don't name. Issues it can't reproduce get aneeds reprocomment and drop out; new symptoms join an existing issue or an umbrella issue. - A pick by the user (named issues, or a mix such as "one hard, two medium, two easy") replaces the theme: the verifier re-runs the picked issues' commands instead of a sweep, and the polish sweep PR is optional.
- Propose 4–6 issues, one line each on why; recommend one set, no menu. The proposal carries the plan per issue: tier, the acceptance criteria as the tests the red commit will hold, the 5–8 files to read first, open questions. The user's pick of the set is the go for the implementers; it is neither merge authority (its own yes/no below) nor an answer to a product decision. Show the balance: issues opened vs closed since the last session (from
log.mdand the tracker), and the target of at least two closed for each one filed. At least half of a wave's PRs close issues that predate the session; a feature-only session is the user's explicit choice. - Polish sweep PR (themed sessions): one tier-1 PR, last in the session, one commit per wording nit of the queue: human-output text that no test asserts and no agent parses. A
--jsonfield, an asserted hint or--help --jsontext is tier 2, not a sweep item. - Waves of at most 2 parallel implementers. Issues touching the same functions or output run in sequence. Two PRs that change different functions of one file may run in parallel; the one that merges second rebases before its gates (S14 #785 next to #782, S15 #799 next to #798: clean rebases, 1–2 h saved each). Light, conflict-free changes first; docs last.
- Ask for merge authority as a yes/no question: "May I merge on my own once the gates hold, or do you want to OK each PR?" A bare "OK" is not an answer. It doesn't carry over to the next session.
- Product decisions belong to the user: changed defaults, contracts, exit codes, removed
--jsonfields. Options with a recommendation, then wait. A standing "pick the recommended option" never covers a contract change or a third fix round.
What ships with it
14 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.
- briefs.md 26 KB
- cloud/agents/r1-nav.md 2.3 KB
- cloud/agents/r2-verdicts.md 2.2 KB
- cloud/agents/r3-forms.md 2.2 KB
- cloud/agents/r4-network.md 2.1 KB
- cloud/agents/r5-cli.md 2.3 KB
- cloud/agents/smoke.md 1.2 KB
- cloud/README.md 3.7 KB
- cloud/render.mjs 4.2 KB runs code
- cloud/routine-template.md 4.9 KB
- log.md 46 KB
- scenarios.md 22 KB
- scripts/ship.mjs 114 KB runs code
- scripts/ship.test.mjs 59 KB runs code
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.
- 15d ago Changed · +1 lines 5a8fce5acff0
- 16d ago Changed 8cbe66106ded
- 17d ago Changed 488945c3ca97
- 18d ago Changed 9af97da112ae
- 19d ago Changed 7980fd1a756b
- 20d ago Changed · +1 lines 24a0d94bcf40
- 21d ago Changed · +5 lines d37c25c99fb4
- 22d ago Changed 4239a4b4e1b0
- 23d ago Changed · +5 lines f009a3b377b1
- 24d ago First seen · 119 lines · 92 tokens per session scan A 5df559ecd6ee
ship is a skill published in the GitHub repository szymdzum/browser-debugger-cli (183 stars, last pushed 2d ago), licensed MIT. It adds 92 tokens to every session and 7,585 once invoked, about $0.0004 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-11.
ship compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| shipszymdzum/browser-debugger-cli | Skill | 183 | 2d ago | MIT | A | 92 | Claude Code |
| opencli-autofixjackwener/OpenCLI | Skill | 31k | yesterday | Apache-2.0 | A | 61 | Claude Code |
| smart-searchjackwener/OpenCLI | Skill | 31k | yesterday | Apache-2.0 | A | 72 | Claude Code, Codex |
| opencli-browserjackwener/OpenCLI | Skill | 31k | yesterday | Apache-2.0 | A | 43 | Claude Code |
| opencli-adapter-authorjackwener/OpenCLI | Skill | 31k | yesterday | Apache-2.0 | A | 38 | Claude Code |
| opencli-usagejackwener/OpenCLI | Skill | 31k | yesterday | Apache-2.0 | A | 31 | Claude Code |
| BrowserBash Browser AutomationPramodDutta/qaskills | Skill | 245 | 3d ago | MIT | A | 79 | Claude Code, Codex |