Borrowing it
Nothing to install: this file belongs to AssemblyAI/blurt. 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/AssemblyAI/blurt/main/.claude/skills/release/SKILL.mdgit clone --depth 1 https://github.com/AssemblyAI/blurtWrote 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/assemblyai/blurt/release)<a href="https://agentmods.dev/skills/assemblyai/blurt/release"><img src="https://agentmods.dev/badge/skills/assemblyai/blurt/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/assemblyai/blurt/release"><img src="https://agentmods.dev/badge/skills/assemblyai/blurt/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.00072 | $0.01728 |
| Opus 5.5 | $0.00029 | $0.00691 |
| Sonnet 5.5 | $0.00014 | $0.00346 |
| Haiku 4.5 | $0.00007 | $0.00173 |
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 1mo 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 — 116 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Releasing Blurt
Everything happens in GitHub Actions, not on this machine — so this works from a web or chat session with no terminal, and without permission to dispatch a workflow. Confirm the target version with the user before starting — publishing is hard to undo.
Preconditions (verify first)
mainis up to date and green; releases ship frommain.- The
release-buildenvironment has the signing + notary secrets andSPARKLE_ED_PRIVATE_KEY, andrelease-publishhas required reviewers. SeeRELEASE.md— that is the source of truth for custody. Without them thereleaseworkflow fails on its secrets-presence step. - Check the highest existing
vX.Y.Ztag, not just the version onmain: an orphan tag from an abandoned release means the next patch number is already taken, andrelease-bump.shrefuses to reuse one.
Steps
-
Start
release-bump. You almost certainly can't dispatch a workflow (that needsactions: write), so push a marker branch instead — it needs only the push you already do:git push origin main:refs/heads/release/v0.1.37The branch name names the version, and it must carry nothing of its own: the workflow refuses a marker that isn't an ancestor of
main. It then runsscripts/release-bump.shonmacos-26(marketing version + build number inApp/Blurt/project.yml, regenerate the project, commit) and force-pushes the bump onto that same branch. Dispatching still works if you do have the permission, and only that path accepts an empty version (next patch). -
Get the release notes written. The bump also commits
release-notes/X.Y.Z.md: the commits since the last release in an HTML comment, and aTODOwhere the notes go. They are what Sparkle's update window shows every user,checkfails while theTODOis there, and the release build refuses to run without them — there is no automatic fallback. Read RELEASE.md → Release notes → Writing them first and follow it: translate each commit into what a user notices, drop what they wouldn't (refactors, CI, docs, reverted work), order by how noticeable it is, and match the length and voice of the model notes there. Fewer bullets is better than padding. Before drafting, skim the merged PRs behind the subjects (gh pr view <n>) when a subject doesn't say what the user sees. Runscripts/check-release-notes.sh, then show the draft to the user — with the commits you left out and why — and get their go-ahead before committing it to the release branch. Their judgment is the point of the rule. -
Open the PR for that branch and hand it to the user to merge. The workflow does not open it, on purpose: a PR created by
GITHUB_TOKENnever triggerscheckand so can never merge. Opening it from here works — an agent's own credentials are notGITHUB_TOKEN. -
Merging it starts
release— no dispatch.release.ymltriggers on a push tomaintouchingproject.yml; itsresolvejob confirms the version changed and isn't already tagged, then thebuildjob does the whole Apple path (xcodebuildRelease → sign nested code → notarize → staple → DMG → verify → EdDSA-sign the DMG → writeappcast.xmlwith the notes) and uploads the artifacts. Dispatchreleaseby hand only to re-run a failed build, torepublish, or for a non-maindry run. -
Hand the ship gate to the user — the
publishjob parks on therelease-publishenvironment. Tell them to download the DMG from the run's artifacts, install it, and approve once it works. Nothing is rebuilt after approval, so what they test is what ships.release-publish.shthen tags, pushes, and publishes — and flipping the release to latest is what moves the Sparkle feed, so installed copies see it within a day.
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.
- 1mo ago Changed · +23 lines · +11 tokens per session c876bdfcd9a4
- 2mo ago First seen · 93 lines · 61 tokens per session scan A dd389fb7917d
release is a skill published in the GitHub repository AssemblyAI/blurt (65 stars, last pushed today), licensed MIT. It adds 72 tokens to every session and 1,728 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-08-31.
Other skills, from other repositories
ship
Pre-release gate. Run the full gate, responsive + render checks, then produce the release checklist (README badge/current/changelog). Use before tagging a release.
release
Prepare, verify, and publish Sutando engine releases. Use when asked to prepare a release proposal, determine a version bump, audit release documentation, validate release gates, create a release PR, tag a confirmed release, or publish GitHub release notes. Preparation is safe and non-publishing; tagging and…
starcat-update-changelog
Update Starcat changelog documents in supports/starcat-pro/ by reading ALL git commits from the main Starcat project and generating categorized release notes in both English and Chinese. Use this skill whenever the user wants to update changelog, release notes, update records, or sync the changelog with recent…
daily-briefing
Daily GitHub briefing: issues, PRs, reviews, releases and discussions.
release-manager
GitHub releases: create, edit and manage releases and their assets.
publish-plugins
(project) Use when editing any file under skills/ or plugins/ to bump the plugin version and check the manifests.