s-release
Prepare and execute an addon release, including version bumping, changelog updates, git tagging, and validation. Use when ready to publish a new version. Triggers: release, version bump, changelog, gi
Files1
View on GitHubSKILL.md.claude/skills/s-release
GitHubReleasing WoW Addons
Guidance for the release workflow with Mechanic. A release changes files, creates a commit and a tag: never run it without an explicit request from the user, and always preview first.
Related Commands
- c-release - Release workflow
MCP Tools
Call MCP tools directly (using-mechanic). Inputs are in the generated command reference.
| Task | MCP Tool |
|---|---|
| Validate TOC and structure | addon.validate(addon="MyAddon") |
| Lint / tests / deprecations | addon.lint, addon.test or sandbox.test, addon.deprecations (limited database, see s-audit) |
| Preview the release | release.all(addon, version, message, category, dry_run=true) |
| Run the release | release.all(addon, version, message, category) after the user confirms |
| Individual steps (recovery only) | version.bump, changelog.add, git.commit, git.tag |
Workflow
- Pre-release checks:
addon.validate,addon.lint, tests,addon.deprecations. Fix or report problems. - Dry run:
release.allwithdry_run: true. It runs the same preflight (tag conflict check, existing staged changes) and returnssteps_plannedwith nothing changed. Show the planned version, changelog text, category and tag to the user. - Ask for confirmation of exactly that plan. Do not proceed on silence.
- Run
release.allwithoutdry_run. It bumps the TOC version, inserts the changelog entry, commits only the addon's files (chore(release): v<version>), and creates the annotated tagv<version>. - Report the version, commit hash and tag. Pushing and publishing are separate steps for the user.
Behaviour to know
- Changelog categories:
Added,Changed,Deprecated,Removed,Fixed,Security(case-insensitive; anything else fails withINVALID_CATEGORY). Default isChanged. The entry is inserted before the first existing## [heading, dated today. - Version: validated (
INVALID_VERSION); the tag isv<version>and an existing tag is never moved (TAG_CONFLICT). - Preflight errors:
STAGED_CHANGES(commit or unstage first),TAG_CONFLICT,NO_TOC,GIT_NOT_FOUND,PREFLIGHT_FAILED. - Not transactional: on failure the result is
RELEASE_PARTIAL_FAILUREwithdetails.failed_step,steps_completedandrecovery. Completed steps are not rolled back, and rerunningrelease.allmay duplicate the changelog entry. Inspectgit statusandgit diff --cached, then finish the remaining steps individually. - A Mechanic release has two TOCs (
!MechanicandMechanic) with separate versions and changelogs; release each addon by name and keep their changelogs in step. - The user's CLI equivalent is
mech release ADDON VERSION MESSAGE --dry-run(cli-commands); agents use the MCP tool.
Routing Logic
| Request type | Load reference |
|---|---|
| Release workflow, changelog format | ../../../docs/integration/release.md |
| Human CLI reference | ../../../docs/cli-reference.md |