release
Handles the core steps required to publish a software release.
Install
mkdir -p .claude/skills/release && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/2859" && unzip -o skill.zip -d .claude/skills/release && rm skill.zipInstalls to .claude/skills/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.
Use this skill when the user wants to cut a new release.Key capabilities
- →Verify branch and working tree cleanliness
- →Determine next version based on semantic versioning
- →Execute build and test suites
- →Compare performance benchmarks against previous releases
- →Generate and update changelog entries
- →Tag and push release to remote
How it works
The skill enforces a strict release lifecycle by verifying repository state, running automated tests, and generating documentation before tagging.
Inputs & outputs
When to use release
- →Initiating a new software version
- →Preparing the repository for a production release
- →Verifying release readiness
About this skill
Release
Overview
This skill guides the agent through the process of cutting a new release for this project. It handles version determination, changelog generation, file updates, and git tagging.
Procedure
1. Preparation & Version Determination
- Check Branch: Run
git branch --show-current. If the output is notmain, stop and inform the user that releases must be cut from themainbranch. - Sync with Remote: Run
git fetch origin main. Then verify local is up-to-date by runninggit rev-list HEAD..origin/main --count. If the count is non-zero, stop and inform the user that their localmainis behindorigin/mainand they need to pull first. - Check Working Tree: Run
git status --porcelain.- CRITICAL: If the command produces ANY output (even for untracked files or documentation changes), you MUST ABORT IMMEDIATELY.
- DO NOT attempt to analyze the changes.
- DO NOT ask the user if they want to proceed.
- STOP and inform the user: "Working tree is not clean. Please commit or stash changes before releasing."
- Check Current Version: Read
epsilon/version.goto find the current version (e.g., "0.0.3"). - Determine Target Version:
- User Provided: If the user specified a version, validate it. It must be semantically greater than the current version. If invalid, reject it and explain why.
- Auto-Increment: If no version was provided, increment the patch level of the current version (e.g., 0.0.3 -> 0.0.4).
- Confirm: Briefly mention the plan to the user (e.g., "Preparing release for v0.0.4...").
2. Verification
- Build: Run
make build-all(native + Darwin + Windows cross-compile). If any build fails, stop and report the error. - Run Tests: Run
make test. If tests fail, stop and report the errors. - Compare Benchmarks: Find the previous release tag using
git describe --tags --abbrev=0. Then runmake bench-compare TARGET=. BASE=<last_tag>to compare performance against the last release. Present the results to the user and flag any significant regressions. NOTE: This process can take several minutes as it runs the full benchmark suite twice; ensure a reasonable timeout (e.g., 10m) is applied.
3. Changelog Generation
Only proceed if verification passes.
-
Identify Range: Find the previous release tag using
git describe --tags --abbrev=0. -
Fetch Commits: Run
git log --no-merges --pretty=format:"%h %s%n%b" <last_tag>..HEAD. -
Draft Content: Analyze the commit messages (subject and body) to create a new CHANGELOG entry.
-
Deep Inspection: Look at the commit body for additional context. Squashed PRs often include a detailed list of changes, bullet points, or rationale in the description. Use this to create a more informative summary.
-
Audience: The changelog is for end users. Focus on changes that affect how users interact with the project.
-
Style: Mimic the existing style in
CHANGELOG.md. -
Filtering: Include only changes that matter to users: new features, bug fixes, API changes. Exclude chores, typos, refactoring, CI tweaks, and internal tooling changes.
-
Grouping: Group by category if appropriate (e.g., API Changes, Performance, Fixes).
-
Breaking Changes: Explicitly highlight any breaking changes.
-
Format:
## [Version] - YYYY-MM-DD - Description of change (#PR or commit hash if available). - ...
-
-
Review: Present the drafted CHANGELOG entry to the user and ask for confirmation. Do not proceed without user approval.
4. Execution
Only proceed after User Confirmation of the changelog.
- Update CHANGELOG.md:
- Read
CHANGELOG.md. - Insert the new entry at the top of the changelog (after the header section).
- Write the file.
- Read
- Update Version:
- Update
epsilon/version.gowith the new version string.
- Update
- Commit & Tag:
- Run
git add CHANGELOG.md epsilon/version.go. - Run
git commit -m "Release version <Version>". - Run
git tag v<Version>.
- Run
- Push:
- Run
git push origin main --tags.
- Run
- Finalize:
- Inform the user the release is committed, tagged, and pushed.
When not to use it
- →When the working tree contains uncommitted changes
- →When the current branch is not main
Prerequisites
Limitations
- →Aborts immediately if working tree is not clean
- →Requires successful build and test execution
How it compares
It mandates a clean working tree and automated verification steps to prevent incomplete or broken releases.
Compared to similar skills
release side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| release (this skill) | 1 | 2mo | No flags | Intermediate |
| github-release-management | 4 | 6mo | Review | Advanced |
| agent-release-swarm | 1 | 6mo | Review | Advanced |
| magerun-release | 1 | 5mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
github-release-management
ruvnet
Comprehensive GitHub release orchestration with AI swarm coordination for automated versioning, testing, deployment, and rollback management
agent-release-swarm
ruvnet
Agent skill for release-swarm - invoke with $agent-release-swarm
magerun-release
netz98
Technical release process for n98-magerun2
release-branch
mono
Create a release branch for SkiaSharp. Use when user says "release X", "start release X", "create release branch for X", "I want to release", or "release now". This is the FIRST step of releasing - creates branch and pushes to trigger CI. Can auto-detect next preview version from main branch.
release-minor
knuckleswtf
Automates the process of tagging a new minor release for Scribe by analyzing commit messages, updating the changelog, and creating a GitHub release.
windsurf-cicd-github-actions
jeremylongshore
Generate and maintain GitHub Actions with Cascade assistance. Activate when users mention "github actions", "ci/cd pipeline", "workflow automation", "continuous integration", or "deployment pipeline". Handles CI/CD configuration with AI assistance. Use when working with windsurf cicd github actions functionality. Trigger with phrases like "windsurf cicd github actions", "windsurf actions", "windsurf".