janekbaraniewski/openusage/cut-release
Claude Code and agent skill by janekbaraniewski/openusage
- community
Checking that the SKILL.md file is still in the repository.
Install
npx vskill@latest install janekbaraniewski/openusage/cut-releaseSKILL.md
Skill: Cut Release
Create a new release for OpenUsage — tag, push, and publish GitHub release with hand-crafted notes.
When to use
When the user asks to create a new release, cut a release, or bump the version.
Prerequisites
- All changes merged to
main - On
mainbranch (or will checkout) ghCLI authenticated
Phases
Phase 1 — Determine Version
- Fetch tags:
git fetch --tags - Find latest tag:
git tag --sort=-v:refname | head -1 - Suggest next version based on changes:
- Patch (0.x.Y): bug fixes, performance improvements, small features
- Minor (0.X.0): significant new features, breaking changes to internal APIs
- Major bumps are not expected pre-1.0
- Confirm version with user.
Phase 2 — Review Changes
- Fetch and update main:
git fetch origin main && git checkout main && git pull origin main
- If local changes conflict, stash first
- List all commits since last tag:
git log <last-tag>..origin/main --oneline - List merged PRs since last tag:
gh pr list --state merged --json number,title,mergedAtfiltered by date - Review the diff:
git diff <last-tag>..origin/main --stat - Categorize changes into sections (see Release Notes Format below)
Phase 3 — Create Tag and Release
- Ensure on main at HEAD:
git checkout main && git pull origin main - Create tag:
git tag v<version> - Push tag:
git push origin v<version>
- This triggers the Release workflow (GoReleaser + macOS builds + Homebrew tap update)
- Create GitHub release with hand-crafted notes:
gh release create v<version> --title "v<version>" --notes "..."
Phase 4 — Verify
- Check workflow started:
gh run list --workflow=release.yaml --limit 1 - Report release URL to user
Release Notes Format
Use this exact format. No version header, no tagline — start directly with ## Changelog.
Format rules
- No emojis — not in headers, not in bullet points, nowhere
- No version header or tagline — don't start with
## OpenUsage <version>or project description. Jump straight to## Changelog - PR references — every bullet ends with
(#<number>)linking to the PR that introduced it - Section headers — use:
Performance,Features,Bug Fixes,Maintenance. Omit empty sections. - Bold for feature names — use
**bold**for the feature name, followed by—(em dash) and description - Full Changelog link — always include at the bottom comparing previous tag to current
- No commit hashes — don't include commit SHAs in the notes (unlike goreleaser auto-generated ones)
- No author attribution — don't include
(@username)in bullet points - Concise descriptions — each bullet should be 1 line, explain what changed not how
- Group related changes — if multiple PRs contribute to one feature area, combine into a single bullet referencing all PRs
What NOT to include
- Internal refactors that don't affect users (unless significant)
gofmt/ lint-only commits- CI/workflow changes (unless they affect the release artifacts)
- WIP or stash commits
- Merge commits
- Design docs or documentation-only changes (unless user-facing docs)
Goreleaser note
The release workflow uses GoReleaser which auto-generates its own changelog. When we create the release with gh release create before GoReleaser runs, our hand-crafted notes take precedence. GoReleaser will not overwrite an existing release body. This is the intended flow — we want curated notes, not auto-generated commit dumps.
Note: .goreleaser.yaml has a release.header template with a version header and tagline. That only applies when GoReleaser creates the release from scratch (i.e., if we don't pre-create it). Our flow always pre-creates the release, so that header is never used.
Rules
- NEVER create a tag without user confirmation of the version number.
- NEVER tag anything other than the HEAD of
main. - NEVER delete or move existing tags.
- Always review the full diff before writing release notes — don't guess what changed.
- If the release workflow fails, report it — don't try to manually upload artifacts.
- If there are no meaningful changes since the last tag, tell the user — don't create an empty release.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/skills/cut-release/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/janekbaraniewski/openusage/cut-release)