release-pluginlisted
Install: claude install-skill uHappyLogic/cairn
# 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 the shipped `skills/` tree, so it is never transpiled into
`.agents/plugins/cairn/` and never reaches a consuming project.
The going-forward tag format is a bare `MAJOR.MINOR.PATCH`. The legacy `v.0.9.x` and
`v0.9.7` tags are never created, moved, or deleted by this skill.
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.
**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:
```bash
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, and step 6 is skipped whole
— the comm