release-plugin

release-plugin is a skill for Claude Code from uHappyLogic/cairn. It costs 34 tokens per session (11,259 once invoked), scanned B, original, MIT.

A maintainer-only procedure for publishing a versioned Cairn plugin release. It defines pre-release checks, version rules, release notes, tags, and how to resume after an interrupted release.

In plain words
What is it for?
Use it to prepare, validate, tag, and publish a specified MAJOR.MINOR.PATCH release.
Why use it?
It prevents publishing or changing repository history before required checks pass and keeps release steps consistent.

Skill for Claude Code

Written for Claude Code: installed under .claude/. Also seen: reads .claude/ paths; mentions .claude-plugin; mentions CLAUDE.md.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is uv run scripts/build_hosts.py --check.

Good fit Use it to prepare, validate, tag, and publish a specified MAJOR.MINOR.PATCH release.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/uHappyLogic/cairn
agentmods
npx agentmods add skills/uhappylogic/cairn/release-plugin

Made for: Claude Code.

Wrote 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.

agentmods badge for release-plugin

README.md
[![agentmods](https://agentmods.dev/badge/skills/uhappylogic/cairn/release-plugin/github.svg)](https://agentmods.dev/skills/uhappylogic/cairn/release-plugin)
Your own site
<a href="https://agentmods.dev/skills/uhappylogic/cairn/release-plugin"><img src="https://agentmods.dev/badge/skills/uhappylogic/cairn/release-plugin/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.

agentmods 80×15 button for release-plugin

Your own site · 80×15
<a href="https://agentmods.dev/skills/uhappylogic/cairn/release-plugin"><img src="https://agentmods.dev/badge/skills/uhappylogic/cairn/release-plugin.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 34 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 11,259 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00034 $0.11259
Opus 5.5 $0.00014 $0.04504
Sonnet 5.5 $0.00007 $0.02252
Haiku 4.5 $0.00003 $0.01126

Measured 5d ago against content hash 1dc13dab7c4f, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade B, and why

release-plugin scanned grade B with 1 finding 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 5d 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.

Reads agent configuration directoriesmediumAgent snooping

.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.

plugin copy at `~/.gemini/config/plugins/cairn`; it sits outside `testpaths`, so neither
.claude/skills/release-plugin/SKILL.md · 921 lines

How it starts

The opening of the file, as written. The whole thing — 921 lines — stays where its author put it; the contents beside it link to each section on GitHub.

release-plugin

Releases the cairn plugin at a maintainer-supplied MAJOR.MINOR.PATCH version. This SKILL.md is the single place the release procedure is documented — no release prose lives in CLAUDE.md or README.md. It is a maintainer-only, project-local skill: it lives under .claude/skills/, outside core/, so no host build renders it into a hosts/<host>/ tree and it never reaches a consuming project.

Every tag and release is a bare MAJOR.MINOR.PATCH, with no v prefix anywhere in the history — the legacy v.0.9.x and v0.9.7 tags were renamed to their bare form on 2026-09-07, and no v-prefixed tag remains on either side.

Nothing is written, committed, pushed, tagged, or published until every gate below has passed and the release notes have been composed. The pre-flight and version gates (steps 2 and 3) are hard stops: on failure, report the specific reason and exit, having changed nothing. Never work around a gate, and never ask the maintainer to waive one.

The release notes live in the repository: the Release: <VERSION> commit prepends them to CHANGELOG.md as the entry ## <VERSION> — <YYYY-MM-DD>, and from that commit on the committed entry — extracted from HEAD:CHANGELOG.md by the rule step 7 states — is the one source of the notes: step 7 shows it (and, while the commit is still unpushed, revises it in place at the maintainer's request by amending that commit) and step 8 publishes it to the monorepo release and every distribution release, so the changelog and the three release pages carry identical text by construction.

Resuming an interrupted release. Re-running with the same version after a failed run is the whole recovery story — there is no rollback of already-published refs and no hand-run recovery command. A resumption is detected once, up front:

git log -1 --format='%s' HEAD

If that prints exactly Release: <VERSION>, this version's release commit is already recorded and the run is a resumption. When it is, step 1 excludes <VERSION> from the last-release lookup, step 3b tolerates a tag that points at HEAD, step 3c requires the CHANGELOG.md entry it would otherwise forbid, and steps 5 and 6 are skipped whole — the notes step 5 would compose and the commit step 6 would produce already exist, as the entry in HEAD:CHANGELOG.md, and steps 7 and 8 read that entry exactly as they do on a fresh run. Every other step runs unchanged, and step 8's per-artifact checks pick the run up from the first step that did not complete.

Read the full file on GitHub · 921 lines

Changes

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.

  1. 5d ago Changed · +31 lines scan A → B 1dc13dab7c4f
  2. 22d ago Changed · +47 lines 16503190ac30
  3. 1mo ago Changed · +34 lines 3c7b96caebf2
  4. 1mo ago Changed · +12 lines 9099bb247366
  5. 1mo ago Changed · +347 lines 11604f24a8dd
  6. 1mo ago Changed · -4 lines 42d3a2757475
  7. 1mo ago First seen · 454 lines · 34 tokens per session scan A 8591399152a2

Subscribe to this mod's changes

release-plugin is a skill published in the GitHub repository uHappyLogic/cairn (3 stars, last pushed today), licensed MIT. It adds 34 tokens to every session and 11,259 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-06.

Related

Other skills, from other repositories

release

Bump a plugin's version, write a detailed changelog entry for the upgrade skill to consume, and commit+push. Takes a plugin slug argument identifying which plugin under plugins/ to release. Use this skill whenever the user says "release", "version bump", "cut a release", "changelog and push", or finishes a set of…

gtapps/claude-code-hermit · 104 tokens

release

Bump a plugin's version, write a detailed changelog entry for the upgrade skill to consume, and commit+push. Takes a plugin slug argument identifying which plugin under plugins/ to release. Use this skill whenever the user says "release", "version bump", "cut a release", "changelog and push", or finishes a set of…

gtapps/hermitd · 104 tokens

pre-release-review

Run the pre-release gate for this multi-plugin monorepo: establish each plugin's release boundary from its last reachable tag to HEAD, audit every changed plugin's [Unreleased] changelog against the actual code diff, identify contract-surface and breaking changes, and, per the objective the user picks up front, either…

gtapps/claude-code-hermit · 188 tokens

fleet-release

Use this skill whenever the user wants to release, ship, prep, or cut versions for two or more plugins together on the current branch. Trigger on phrasings like "release both plugins", "ship them together", "release all changed plugins", "fleet release", "multi-plugin release", "release in order", or "release…

gtapps/claude-code-hermit · 96 tokens

fleet-release

Use this skill whenever the user wants to release, ship, prep, or cut versions for two or more plugins together on the current branch. Trigger on phrasings like "release both plugins", "ship them together", "release all changed plugins", "fleet release", "multi-plugin release", "release in order", or "release…

gtapps/hermitd · 96 tokens

pipeline-digest

Daily release-pipeline digest with a change gate — reports which plugins are pending release, whether main's CI is green, and which branches went stale, and notifies the operator only when that state actually moved since the last run. Use when the operator asks "what moved in the pipeline", "anything to ship"…

gtapps/claude-code-hermit · 99 tokens