skills/release/SKILL.md
Cut a professional release — bump version, write release notes, commit, tag, and push. Use when shipping a new version of any project.
npx skillsauth add ahmedhamadto/software-forge releaseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Guides a professional release process: determines the version bump, writes structured release notes, updates the changelog, commits, tags, and pushes. Ensures consistency and quality across releases.
Announce at start: "I'm using the release skill to cut a new version."
When NOT to use:
All commits and tags are authored by the user, not by Claude.
Co-Authored-By: Claude or any AI attribution to commitsCo-Authored-By trailers of any kindgit config user.name and git config user.emailBefore anything else:
main or a release branch. If on a feature branch, confirm with the user.package.json, Cargo.toml, pyproject.toml, RELEASE-NOTES.md, git tags, or wherever the project tracks its version.Read the commit history since the last release tag to understand what changed:
git log <last-tag>..HEAD --oneline
Apply Semantic Versioning:
| Change Type | Bump | Examples | |------------|------|---------| | Breaking API/behavior changes | Major (X.0.0) | Removed feature, renamed public API, changed data format | | New features, new phases, new skills | Minor (x.Y.0) | Added skill, added phase, new capability | | Bug fixes, typos, doc updates, refactors | Patch (x.y.Z) | Fixed typo, corrected phase number, updated docs |
Present the recommendation to the user:
Based on the changes since vX.Y.Z, I recommend a minor bump to vX.Y+1.0:
- [list key changes]
Does this look right, or would you prefer a different version?
Wait for confirmation before proceeding.
Read the existing RELEASE-NOTES.md to match the project's established style and structure. The new entry must be consistent with previous entries in tone, heading levels, and formatting.
Release notes structure:
## vX.Y.Z (YYYY-MM-DD)
### [Section Header — describes the theme]
[Narrative paragraph explaining the headline change. What it is, why it matters, how it works at a high level.]
### [Additional sections as needed]
[Group related changes under descriptive headers. Not every change needs its own section — group small changes together.]
### Full Changelog
- type: description of change
- type: description of change
Rules:
feat:, fix:, refactor:, docs:, chore:)Update the version string in every manifest file that exists:
| File | Fields to update | |------|-----------------| | .claude-plugin/plugin.json | .version | | .claude-plugin/marketplace.json | .metadata.version AND .plugins[].version | | .cursor-plugin/plugin.json | .version (if exists) | | .codex/plugin.json | .version (if exists) | | package.json | .version | | Cargo.toml / pyproject.toml | version field |
Also check for README badges or version references.
Stage all release-related changes and create a single release commit:
git add -A
git commit -m "release: vX.Y.Z — [one-line summary of headline change]"
No Co-Authored-By trailer. No AI attribution.
Create an annotated tag:
git tag -a vX.Y.Z -m "vX.Y.Z"
Ask the user before pushing:
Ready to push the release commit and tag to origin. Proceed?
If confirmed:
git push && git push --tags
After pushing, complete the release on GitHub:
Create a GitHub Release using gh release create:
gh release create vX.Y.Z --title "Project Name vX.Y.Z" --notes "<release notes>"
Use a condensed version of the RELEASE-NOTES.md entry — headline sections, changelog, key stats. Do not copy the entire file verbatim.
Update the repo description if any stats changed (skill count, phase count, etc.):
gh repo edit OWNER/REPO --description "Updated description"
Verify both by checking the repo page:
gh repo view OWNER/REPO --json description
gh release view vX.Y.Z --repo OWNER/REPO
Do not skip this step. The GitHub Release is how users discover new versions, and the repo description is the first thing visitors see.
Use these in the Full Changelog section:
| Prefix | Meaning |
|--------|---------|
| feat: | New feature or capability |
| fix: | Bug fix |
| refactor: | Code restructuring without behavior change |
| docs: | Documentation only |
| chore: | Build, CI, dependencies, tooling |
| perf: | Performance improvement |
| test: | Test additions or fixes |
| style: | Formatting, whitespace (no logic change) |
| Mistake | Fix |
|---------|-----|
| Releasing without running tests | Always run tests in Step 1 |
| "Bump version" as the commit message | Use release: vX.Y.Z — [summary] |
| Adding AI co-authorship | The user is the author. Period. |
| Dumping raw git log as release notes | Write narrative release notes that a human would want to read |
| Skipping the tag | Tags are how users and tools identify releases |
| Force-pushing a release | Never. If something is wrong, cut a new patch release. |
| Releasing from a feature branch | Releases come from main unless the user explicitly confirms otherwise |
| Pushing the tag but not creating a GitHub Release | Always create a GitHub Release — it's how users find new versions |
| Forgetting to update the repo description | If stats changed (skill count, phase count), update the About section |
testing
Craft stunning macOS desktop experiences with SwiftUI — cinematic animations, particle systems, glass materials, and wallpaper-grade visual design. Use like `/apple-craftsman A minimalist weather widget with aurora particle effects`.
development
Use when you have a spec or requirements for a multi-step task, before touching code
development
Use when testing a web application for security vulnerabilities, before deployment or during security review — guides through a structured 10-phase penetration testing methodology covering mapping, authentication, session management, access controls, injection, logic flaws, and server configuration.
data-ai
Engineer system prompts for LiveKit voice agents with multilingual support. Use when creating or optimizing AI agent conversation flows.