From release-notes
Generates changelogs from conventional commits, bumps semantic versions in pyproject.toml or package.json, and publishes GitHub releases. Use when asked to "create release", "release notes", "changelog", "bump version", "semantic version", "tag release", "publish release", or "what changed since last release".
npx claudepluginhub shouenlee/ghcp-dev-plugin --plugin release-notesThis skill uses the workspace's default tool permissions.
Generate changelogs, bump semantic versions, and publish GitHub releases from conventional commits.
Automates releases on GitHub, GitLab, or Gitea: detects platform, computes semver bump, generates notes from PRs/commits, previews before tagging/publishing.
Generates changelog from git commits, determines semver bump from commit messages or user input, updates package.json, commits/tags/pushes, creates GitHub release, publishes to npm.
Creates GitHub releases with semantic versioning: analyzes commits for version bumps, generates changelogs, updates version files like package.json or pyproject.toml, creates git tags, publishes notes, and attaches artifacts.
Share bugs, ideas, or general feedback.
Generate changelogs, bump semantic versions, and publish GitHub releases from conventional commits.
feat:, fix:, docs:)v1.0.0)gh CLI installed and authenticated for publishing releases (gh auth status)/release notes — Generate changelogFind the most recent git tag:
git describe --tags --abbrev=0
Or use a user-specified tag as the starting point.
Get all commits since that tag:
git log <tag>..HEAD --pretty=format:"%h %s" --no-merges
Parse conventional commit prefixes from each commit message (feat, fix, docs, chore, perf, refactor, test, ci, style).
Group commits by type with human-readable headers:
feat commitsfix commitsdocs commitsperf commitsBREAKING CHANGE in the body or ! after the typerefactor, test, chore, ci, style commitsGenerate markdown changelog with version header and date:
## v1.2.0 (2026-03-02)
### Features
- abc1234 Add user authentication flow
### Bug Fixes
- def5678 Fix null pointer in config parser
Include links to commits if a GitHub remote is available:
- [`abc1234`](https://github.com/owner/repo/commit/abc1234) Add user authentication flow
Output the changelog to stdout, or offer to prepend it to CHANGELOG.md.
/release bump — Semantic version bumpAnalyze commits since the last tag to determine the bump type:
BREAKING CHANGE or ! → major
feat → minor
fix, perf, refactor → patch
Calculate the new version from the current tag:
# Example: v1.2.3 with a feat commit → v1.3.0
git describe --tags --abbrev=0 # returns v1.2.3
Update the version in the project manifest if present:
# pyproject.toml: [project] version = "1.3.0"
# package.json: "version": "1.3.0"
Show the planned change and ask for confirmation:
Version bump: v1.2.3 → v1.3.0 (minor — new features detected)
Updated: pyproject.toml
Create a new git tag:
git tag v1.3.0
/release publish — Create GitHub releaseDetermine the latest tag, or accept a user-specified tag:
git describe --tags --abbrev=0
Generate release notes using the same logic as /release notes.
Create the GitHub release:
gh release create <tag> --title "<tag>" --notes "<changelog>"
Offer additional options:
--draft — create as a draft release--prerelease — mark as a pre-releaseConfirm with the user before publishing the release.
| Problem | Cause | Solution |
|---|---|---|
fatal: No names found | No git tags exist in the repository | Create an initial tag with git tag v0.1.0 |
| Commits not grouped correctly | Commit messages don't follow conventional format | Use type: description format (e.g., feat: add login) |
gh: not logged in | gh CLI is not authenticated | Run gh auth login |
| Version not updated in manifest | No pyproject.toml or package.json found | Manually specify the file or create the manifest |
| Tag already exists | The computed version tag already exists | Use a different version or delete the existing tag |