Skip to content

ghs-release

Create a GitHub Release with auto-generated changelog from merged PRs and conventional commits since the last release.

Skill Info

Version: 1.0.0 Arguments: [owner/repo] [--bump major|minor|patch] [--pre-release] [--dry-run]Trigger phrases: "create release", "release v1.2.0", "patch release", "what would the next release look like", "changelog", "prepare release", "draft release", "pre-release", "cut a release", "ship it"

What It Does

ghs-release detects the current version, gathers changes since the last release, classifies them using conventional commit prefixes and PR labels, determines the semver bump, generates a grouped changelog, and creates a tagged GitHub Release.

Scope Boundary

Creates tags and releases only — never modifies code, merges PRs, deletes branches, or changes repository settings.

Process

  1. Detect current version — From latest GitHub release, git tags, or default to v0.1.0
  2. Gather changes — Merged PRs and commits since last release
  3. Classify changes — Map conventional commit prefixes and labels to changelog groups
  4. Determine version bump — Major (breaking), minor (features), or patch (fixes)
  5. Generate changelog — Grouped by type with author attribution and PR links
  6. Pre-flight checks — CI status, target branch, tag availability, write access
  7. Create release — Or show dry-run preview
  8. Display — Terminal summary with changelog and release URL

Conventional Commits Mapping

PrefixVersion BumpChangelog Group
feat:minorFeatures
fix:patchBug Fixes
BREAKING CHANGE: / feat!:majorBreaking Changes
docs:patchDocumentation
chore(deps):patchDependencies
ci: / test: / refactor: / perf:patchOther

Input Modes

ModeTriggerExample
Auto-detectcreate releaseAnalyze commits to determine bump
Explicit versionrelease v2.0.0Use specified version as-is
Bump typepatch releaseForce a specific bump type
Dry-runwhat would the next release look likePreview without creating
Pre-releaserelease v1.0.0-beta.1Set --prerelease flag
Draftdraft releaseCreate as draft for review

Example

Dry-Run Preview

## Dry-Run Release Preview: phmatray/my-project

  Version:  v1.2.3 -> v1.3.0 (minor bump)
  Tag:      v1.3.0
  Target:   main
  Mode:     dry-run (no release created)

## What's Changed

### Features
- Add dark mode support for dashboard by @alice in #42
- Implement webhook retry logic by @bob in #38

### Bug Fixes
- Fix login timeout on slow connections by @charlie in #41
- Correct pagination offset in API response by @alice in #40

### Dependencies
- Update actions/checkout action to v6 by @renovate in #39
- Update dependency node to v24 by @renovate in #37

**Full Changelog**: https://github.com/owner/repo/compare/v1.2.3...v1.3.0

---
Summary:
  Changes:   6 (2 features, 2 fixes, 2 deps)
  Authors:   @alice, @bob, @charlie, @renovate
  Status:    DRY-RUN — no release created

To create this release: /ghs-release v1.3.0

Successful Release

## Release Created: phmatray/my-project

  Version:  v1.2.3 -> v1.3.0
  Tag:      v1.3.0
  Target:   main
  Type:     release
  URL:      https://github.com/owner/repo/releases/tag/v1.3.0

---
Summary:
  Changes:   6 (2 features, 2 fixes, 2 deps)
  Authors:   @alice, @bob, @charlie
  Status:    [PASS] Release created

Pre-flight Checks

CheckAction on Failure
CI status on default branchWarn; require --force to proceed
Target branch is defaultWarn and ask for confirmation
Tag does not already existAbort; ask for different version
Write access confirmedAbort if insufficient permissions

Routes To

Routes From

Technical Details

PropertyValue
Allowed toolsBash(gh:*), Bash(git:*), Read, Glob, Grep
Spawns sub-agentsNo — single sequential pipeline
Phases8 (Detect, Gather, Classify, Version, Changelog, Pre-flight, Create, Display)
Requiresgh CLI (authenticated), git, network access

Released under the MIT License.