wa:deploy-release
Automates the release cycle including semver tagging and changelogs.
Install
mkdir -p .claude/skills/wa-deploy-release && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16827" && unzip -o skill.zip -d .claude/skills/wa-deploy-release && rm skill.zipInstalls to .claude/skills/wa-deploy-release
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Create release: git tag, changelog generation, and release notes.Key capabilities
- →Determine the release version based on arguments or commit analysis
- →Generate a changelog from commit history grouped by conventional commit types
- →Dispatch a `technical-writer` agent to compose release notes prose
- →Create an annotated git tag for the new version
- →Push the tag to the remote repository
- →Create a GitHub release with the generated release notes
How it works
The skill determines a release version, generates a changelog and release notes from commit history, creates and pushes a git tag, and then creates a GitHub release.
Inputs & outputs
When to use wa:deploy-release
- →Creating git release tags
- →Generating versioned changelogs
- →Publishing release documentation
About this skill
Deploy Release
Create release for: $ARGUMENTS
Visual Framework
Follow the visual framework defined in the output:visual-framework primitive.
Task Registration
| Stage | Subject | Active Form | Statusline |
|---|---|---|---|
| 1 | Stage 1: Version | Determining version | Version (1/4) |
| 2 | Stage 2: Changelog | Writing changelog | Changelog (2/4) |
| 3 | Stage 3: Tag | Creating tag | Tag (3/4) |
| 4 | Stage 4: Publish | Publishing release | Publish (4/4) |
Statusline Stage Updates
At the start of each stage, update the statusline:
bash $ECK_HOME/update-stage.sh "{Statusline text from table}"
At skill completion (success or error), reset:
bash $ECK_HOME/update-stage.sh
Usage
/wa:deploy-release 1.3.0
/wa:deploy-release --minor
/wa:deploy-release --patch
/wa:deploy-release --major
Arguments: explicit version string (e.g., 1.3.0) or a semver bump flag. If omitted, the version is suggested from commit analysis.
Stage 1: Version
Inputs
- $ARGUMENTS for optional version string or bump flag (
--major,--minor,--patch) - Last release tag via
git describe --tags --abbrev=0 - Commit history since last tag via
git:log
Activities
-
Check whether a version was provided in $ARGUMENTS:
- Explicit version string (e.g.,
1.3.0) → validate it is a valid semver value and use it. - Bump flag (
--major,--minor,--patch) → calculate from the last tag. - No argument → proceed to auto-suggest.
- Explicit version string (e.g.,
-
Find the last release tag:
git describe --tags --abbrev=0 -
If no version was provided, analyze commits since the last tag using
git:logto suggest a semver bump:- Any
featcommit → minor bump. - Any
BREAKING CHANGEin commit footer → major bump. - All other types → patch bump.
- Display the suggested version and the reasoning, then wait for user confirmation before proceeding.
- Any
-
Confirm the final version with the user. Never proceed without confirmation.
Outputs
- Confirmed version string (valid semver)
- Last release tag for changelog range
Exit Criteria
- Version is confirmed by user
- Version is valid semver
Stage 2: Changelog
Inputs
- Confirmed version from Stage 1
- Last release tag from Stage 1
- Commit history since last tag
technical-writeragent for release notes prosedocs:doc-updateprimitive for CHANGELOG.md
Activities
-
Collect all commits since the last release tag using
git:log:git log {last-tag}..HEAD --pretty=format:"%h %s" --no-merges -
Group commits by conventional commit type:
feat→ Featuresfix→ Bug Fixesrefactor→ Refactorsperf→ Performancedocs→ Documentationtest→ Testschore/ci/build→ Maintenance
-
MUST dispatch a
technical-writeragent to compose release notes prose from the grouped commit list. Do NOT skip agent dispatch and write release notes inline. The agent should produce:- A short paragraph summarizing the release theme.
- Bulleted entries for each changelog group that has at least one entry.
-
Prepend the new release entry to
CHANGELOG.mdusingdocs:doc-update. Use this header format:## [{version}] — {YYYY-MM-DD}
Outputs
- CHANGELOG.md updated with new release entry
- Release notes prose for GitHub release
Exit Criteria
- CHANGELOG.md contains the new version entry
- Release notes prose is ready for Stage 4
Stage 3: Tag
Inputs
- Confirmed version from Stage 1
git:tagprimitive
Activities
-
MUST verify the version does not already exist as a tag:
git tag -l "{version}"If the tag exists → stop immediately and report an error. Never overwrite an existing tag.
-
Create an annotated tag using
git:tagprimitive:git tag -a "{version}" -m "Release {version} — {YYYY-MM-DD}" -
Confirm the tag was created:
git show {version} --stat
Outputs
- Annotated git tag created locally
Exit Criteria
- Tag exists in local repository
- Tag points to correct commit
Stage 4: Publish
Inputs
- Tag from Stage 3
- Release notes prose from Stage 2
- Remote origin URL
Activities
-
Push the tag to the remote:
git push origin {version} -
If the repository is hosted on GitHub, create a GitHub release:
- Title:
{version} - Body: release notes prose from Stage 2
- Tag:
{version} - Mark as latest release
- Title:
-
Display the release summary:
Released: {version} Tag: {version} Date: {YYYY-MM-DD} URL: {release-url or "N/A"} Entries: {N} changelog items
Outputs
- Tag pushed to remote
- GitHub release created (if applicable)
Exit Criteria
- Tag is visible on remote
- Release summary displayed with URL
Error Handling
- Tag already exists: Stop immediately. Report the existing tag SHA. Suggest a different version number — never overwrite tags.
- No commits since last tag: Report that there is nothing to release. Allow the user to override and release anyway if needed.
- Changelog write failure: Report the error but continue — the tag and GitHub release are more critical than the CHANGELOG.md write.
- GitHub release creation failure: Report the API error. The tag was already pushed; the user can create the GitHub release manually.
- On error: Reset the statusline before exiting.
bash $ECK_HOME/update-stage.sh
When not to use it
- →When the user wants to overwrite an existing git tag
- →When there are no commits since the last tag and no override is desired
- →When the repository is not a git repository
Limitations
- →Cannot overwrite existing git tags
- →Requires user confirmation before proceeding with a suggested version
- →Changelog write failures are reported but do not stop the process
How it compares
This skill automates the entire release process, including versioning, changelog generation, tagging, and publishing, unlike performing these steps manually.
Compared to similar skills
wa:deploy-release side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| wa:deploy-release (this skill) | 0 | 3mo | Review | Intermediate |
| proof-of-work | 1 | 7mo | No flags | Intermediate |
| release | 0 | 4mo | No flags | Beginner |
| start | 0 | 5mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
proof-of-work
MadAppGang
Proof artifact generation patterns for task validation. Covers screenshots, test results, deployments, and confidence scoring.
release
mantaskazlauskas
Release workflow for ChattyLittleNpc addon. Bumps the .toc version, commits and pushes to GitHub, then runs release.py to create a GitHub release. Activates for: release, bump version, publish, ship, tag, new version, deploy addon, push release.
start
diegosouzapw
Execute a task autonomously with real-time Telegram progress updates, automatic deployment, commit, and push. No user interaction required - makes all decisions independently.
macos-spm-app-packaging
Dimillian
Scaffold, build, and package SwiftPM-based macOS apps without an Xcode project. Use when you need a from-scratch macOS app layout, SwiftPM targets/resources, a custom .app bundle assembly script, or signing/notarization/appcast steps outside Xcode.
agent-release-manager
ruvnet
Agent skill for release-manager - invoke with $agent-release-manager
dev-release
evolution-foundation
Release preparation — changelog generation, version bump, tag creation. Generic version (not project-specific). For EvoNexus releases, use custom-release instead.