Release
Release a new version with changelog and GitHub release. Accepts optional argument: patch, minor, or major.From its SKILL.md
npx -y skills add banyudu/claude-warden --skill releaseAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
3.9 KB, as published. Nobody here has run it
Release Skill
When invoked, perform a versioned release of claude-warden with changelog updates and a GitHub release.
Constraints
- Shell tooling: don't use
greporfind -namein Bash — the repo's ownenforce_rg_over_grep.pyPreToolUse hook blocks them. Userg(ripgrep),rg --files -g <pattern>, or the Grep/Glob tools. Avoid the stringsgrep/find -nameeven in commit messages, since the hook matches on the command string. mainis protected: directgit push origin mainis rejected. Every change (including the version bump) must land via a release branch + PR.- Publishing is CI-driven: the
auto-release.ymlworkflow creates the tag, GitHub release, and npm publish once achore: release v<version>commit lands onmain. Do not runpnpm publish/npm publishlocally, and don't create the GitHub release by hand — that races with CI and can leave the package half-published.
Steps
1. Sync with remote
Before anything else, pull the latest changes from the remote main branch:
git pull --rebase
This ensures the changelog and version bump account for all merged changes, not just local commits.
2. Determine version bump
If the user provided an argument (patch, minor, or major), use that.
If no argument is provided, auto-decide based on commits since the last tag:
- If any commit has a
feat:orfeat(prefix → minor - Otherwise → patch
- NEVER auto-select
major— major version bumps must always be explicitly requested by the user
3. Generate changelog entry
Compare the current HEAD against the last git tag to find all commits since the last release:
git log $(git describe --tags --abbrev=0)..HEAD --oneline
Group commits by type based on conventional commit prefixes:
- Features —
feat:commits - Bug Fixes —
fix:commits - Other Changes — everything else (
chore:,refactor:,docs:, etc.)
Skip empty sections. Format each entry as - <commit message> (<short hash>).
4. Update CHANGELOG.md
Read the existing CHANGELOG.md (create it if missing). Insert the new version entry at the top, right after the # Changelog header. Use this format:
## [<new-version>] - <YYYY-MM-DD>
### Features
- commit message (abc1234)
### Bug Fixes
- commit message (def5678)
### Other Changes
- commit message (ghi9012)
5. Build and test
pnpm version <bump> --no-git-tag-version— bump versionpnpm run sync-plugin-version— sync plugin.json versionpnpm run build— buildpnpm run test— run tests
6. Create release PR
Since main has branch protection, push via a release branch:
git checkout -b release/v<version>- Stage changes:
git add package.json .claude-plugin/plugin.json CHANGELOG.md dist/plus any new files (e.g.vitest.config.ts). Usegit add -ffor gitignored paths like.claude/. - Commit with message:
chore: release v<version>— this exact format triggers the auto-release CI workflow. - Push:
git push -u origin release/v<version> - Create PR:
gh pr create --title "chore: release v<version>" --body "<changelog>" --base main
After the PR is merged, CI automatically:
- Creates the git tag
v<version> - Creates the GitHub release with changelog notes
- Publishes to npm via the existing publish workflow
7. Report
Tell the user the PR is created. Once merged, the release will be published automatically.
After merge, you can optionally watch the release workflows:
gh run list --workflow=auto-release.yml --limit 1
gh run list --workflow=publish.yml --limit 1
If publish.yml fails, consult CLAUDE.md → "Publish workflow gotchas" (trusted-publisher OIDC needs npx -y [email protected] publish; re-running requires gh release delete vX.Y.Z --yes --cleanup-tag).