releaselisted
Install: claude install-skill virajp/ai-plugins
# Release
**Ask the user before running `i:release`.** It is the repo's hard rule, and the
task commits, tags, pushes and triggers a publish.
Releasing via CI is preferred over the local `i:publish`, so every version keeps
the strongest npm trust level (trusted publisher). `v*` is the **installer
CLI's** namespace, matching `package.json` — not a plugin version. Marketplace
plugin versions are not separately tagged; they ride the CLI release that
carries them.
## The procedure
### 1. Cut the tag
```sh
mise run i:release # patch; --minor / --major to choose the bump
```
It requires a clean tree, runs `i:test`, bumps `package.json`, commits
`ops: release vX.Y.Z`, creates the annotated tag, then — interactively — pushes
the commit and tag and watches the `release.yml` run with
`gh run watch --exit-status`, so the task only succeeds if the publish pipeline
does. It needs `gh` installed and authenticated.
`--ci` stops after the tag, with no push and no watch. `deps-update.yml` passes
it and does its own push and dispatch. Do not pass it by hand.
### 2. Cut the GitHub Release
Every `vX.Y.Z` tag carries one — the tag is the npm-publish trigger, the Release
is the human-readable record beside it. The mapping is **1:1**, so a missing
Release means a missed step.
```sh
gh release create vX.Y.Z --title vX.Y.Z --notes-file <notes> --verify-tag
```
- **Creating a Release never publishes.** `release.yml` triggers on
`push: tags: v*`; nothing listens for `release`