Borrowing it
Nothing to install: this file belongs to jswest/bartleby. 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/jswest/bartleby/main/.agents/skills/release/SKILL.mdgit clone --depth 1 https://github.com/jswest/bartlebyWrote 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/jswest/bartleby/release)<a href="https://agentmods.dev/skills/jswest/bartleby/release"><img src="https://agentmods.dev/badge/skills/jswest/bartleby/release/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/jswest/bartleby/release"><img src="https://agentmods.dev/badge/skills/jswest/bartleby/release.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.00061 | $0.00997 |
| Opus 5.5 | $0.00024 | $0.00399 |
| Sonnet 5.5 | $0.00012 | $0.00199 |
| Haiku 4.5 | $0.00006 | $0.00100 |
Grade A, and why
release 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 2mo 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 — 72 lines — stays where its author put it; the contents beside it link to each section on GitHub.
release — cut a release with dry-run → confirm → publish
No argument. Run the steps in order. One hard stop is marked PAUSE: do not pass it without the user's OK.
Cutting a release is a deliberate, post-merge act on main — never a
per-issue step, never something to fold into a /ship run. This skill only
advises and orchestrates; scripts/release.py is the source of truth for the
version math and the schema-drift guard. Do not invent, pass, or guess a
version — the script computes it from SCHEMA_VERSION and the last tag.
Repo specifics: the main checkout is /Users/johnwest/Code/spot/bartleby; run
everything from there. The release runs via uv run python scripts/release.py,
which starts with uv, so the guard-main-write.sh hook (it gates only segments
beginning with git commit / git push) never sees the script's internal
git tag / git push. Never reach around the script with a bare git tag
or git push on main — those would be blocked, and rightly. Always go through
the script.
Versioning is automatic: v0.<SCHEMA_VERSION>.<patch> — minor is
SCHEMA_VERSION (read from bartleby/db/schema.py), patch increments at the
same schema and resets to 0 on a schema bump, major is carried forward.
1. Preconditions (enforce these — the script does not)
The script warns on a non-main branch and refuses a dirty tree (unless
--allow-dirty), and never checks sync with the remote, so this skill enforces
the guardrails up front. Refuse to proceed unless all hold:
- On
main.git rev-parse --abbrev-ref HEADismain. If not, stop — a release is cut frommainafter a merge. - Working tree clean.
git status --porcelainis empty. - Synced with the remote.
git fetch origin, then confirm HEAD is up to date withorigin/main(git rev-parse HEAD==git rev-parse origin/main, i.e. no un-pulled or un-pushed commits). If behind,git pull --ff-only origin mainfirst; if ahead, stop and report (a release should only contain merged work). - Confirm
gh auth statusis good (the publish step callsgh).
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.
- 2mo ago First seen · 72 lines · 61 tokens per session scan A f683c0ab563c
release is a skill published in the GitHub repository jswest/bartleby (12 stars, last pushed 1mo ago), licensed MIT. It adds 61 tokens to every session and 997 once invoked, about $0.0002 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-08-30.
release compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| releasejswest/bartleby | Skill | 12 | 1mo ago | MIT | A | 61 | Claude Code, Codex |
| release-announcementpaperclipai/paperclip | Skill | 111k | yesterday | MIT | A | 42 | Claude Code, Codex |
| releasethedotmack/claude-mem | Skill | 114k | yesterday | Apache-2.0 | A | 13 | Claude Code |
| release-notesphuryn/pm-skills | Skill | 28k | 8d ago | MIT | A | 57 | Claude Code |
| multi-agent-release-managerchromium/chromium | Skill | 25k | yesterday | BSD-3-Clause | A | 27 | Claude Code, Codex |
| pack-submitaeonfun/aeon | Skill | 788 | yesterday | MIT | A | 27 | Claude Code, Codex |
| updater_guidesiddsachar/row-bot | Skill | 1.7k | yesterday | Apache-2.0 | A | 22 | Claude Code, Codex |