skills/github-workflow/skills/gh-changelog/SKILL.md
Use when generating a changelog from merged pull requests and commits since the last release.
npx skillsauth add dtsong/my-claude-setup gh-changelogInstall 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.
v1.2.3) with alphanumeric characters, dots, hyphens only.owner/repo format with alphanumeric characters and hyphens only.Generate a changelog from merged PRs and commits since the last release.
/gh-changelog # Changelog since last tag
/gh-changelog --since v1.0.0 # Since specific version
/gh-changelog --since v1.0.0 --until v1.1.0 # Between versions
/gh-changelog --format md # Markdown output (default)
/gh-changelog --format json # JSON output
/gh-changelog --pr-only # Only include PR information
# Get latest tag
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null)
# Or use specified version
SINCE="${SINCE_TAG:-$LATEST_TAG}"
UNTIL="${UNTIL_TAG:-HEAD}"
echo "Generating changelog: $SINCE..$UNTIL"
# Get merged PRs since last tag
gh pr list --state merged --base main --json number,title,author,labels,mergedAt \
--jq ".[] | select(.mergedAt > \"$SINCE_DATE\")"
# Or parse from git log
git log $SINCE..$UNTIL --merges --format="%s" | grep -oE '#[0-9]+'
Based on PR labels or conventional commits:
feat: → Features
fix: → Bug Fixes
docs: → Documentation
perf: → Performance
refactor: → Refactoring
test: → Tests
chore: → Maintenance
Format into structured changelog.
Changelog: v1.1.0 → HEAD
Generated: 2025-01-25
Commits: 23
PRs merged: 8
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## Features
- Add dark mode support (#123) - @user1
Adds system theme detection and manual toggle
- Improve theme persistence (#124) - @user2
Saves theme preference to localStorage
- Add keyboard shortcuts (#130) - @user3
Adds Ctrl+K command palette
## Bug Fixes
- Fix login validation (#125) - @user4
Properly validates email format
- Fix memory leak in theme hook (#127) - @user1
Adds proper cleanup in useEffect
- Fix mobile responsive layout (#129) - @user5
Fixes header overflow on small screens
## Performance
- Optimize bundle size (#126) - @user6
Reduces initial load by 30%
## Documentation
- Update API documentation (#128) - @user7
Adds examples for new endpoints
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## Contributors
Thanks to all contributors for this release!
@user1, @user2, @user3, @user4, @user5, @user6, @user7
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Full diff: https://github.com/owner/repo/compare/v1.1.0...HEAD
## Changelog
### Features
- Add dark mode support ([#123](https://github.com/owner/repo/pull/123)) - @user1
- Improve theme persistence ([#124](https://github.com/owner/repo/pull/124)) - @user2
- Add keyboard shortcuts ([#130](https://github.com/owner/repo/pull/130)) - @user3
### Bug Fixes
- Fix login validation ([#125](https://github.com/owner/repo/pull/125)) - @user4
- Fix memory leak in theme hook ([#127](https://github.com/owner/repo/pull/127)) - @user1
- Fix mobile responsive layout ([#129](https://github.com/owner/repo/pull/129)) - @user5
### Performance
- Optimize bundle size ([#126](https://github.com/owner/repo/pull/126)) - @user6
### Documentation
- Update API documentation ([#128](https://github.com/owner/repo/pull/128)) - @user7
### Contributors
@user1, @user2, @user3, @user4, @user5, @user6, @user7
**Full Changelog**: [v1.1.0...HEAD](https://github.com/owner/repo/compare/v1.1.0...HEAD)
{
"from": "v1.1.0",
"to": "HEAD",
"generated": "2025-01-25T10:30:00Z",
"categories": {
"features": [
{
"pr": 123,
"title": "Add dark mode support",
"author": "user1",
"labels": ["enhancement"]
}
],
"fixes": [...],
"performance": [...],
"documentation": [...]
},
"contributors": ["user1", "user2", ...],
"stats": {
"commits": 23,
"prs": 8,
"files_changed": 45
}
}
If breaking changes detected:
## ⚠️ Breaking Changes
- **API change**: `getTheme()` now returns Promise (#131)
Migration: Change `const theme = getTheme()` to `const theme = await getTheme()`
- **Config format**: Theme config moved to separate file (#132)
Migration: Move theme settings from `config.json` to `theme.config.json`
| Label | Category |
|-------|----------|
| enhancement, feature | Features |
| bug, fix | Bug Fixes |
| documentation | Documentation |
| performance | Performance |
| breaking-change | Breaking Changes |
| Prefix | Category |
|--------|----------|
| feat: | Features |
| fix: | Bug Fixes |
| docs: | Documentation |
| perf: | Performance |
| BREAKING CHANGE: | Breaking Changes |
For PRs/commits that don't match categories:
## Other Changes
- Update dependencies (#140) - @dependabot
- Refactor internal utilities (#141) - @user8
- Add more tests (#142) - @user9
The changelog generation script is at:
~/.claude/skills/github-workflow/scripts/release-notes.sh
/gh-release to prepare release notes/gh-tag to tag the releasetesting
Use to convert a Word .docx file to PDF and/or verify its page count. Triggers on: converting docx to pdf, rendering a document, checking how many pages a docx produces, or asserting a page-count constraint (e.g. a resume must stay 2 pages). Wraps LibreOffice headless conversion.
development
Security audit checklist for web applications. Use when reviewing, auditing, or hardening a web app's security posture. Covers rate limiting, auth headers, IP blocking, CORS, security middleware, input validation, file upload limits, ORM usage, and password hashing. Triggers on requests like "review security", "harden this app", "security audit", "check for vulnerabilities", or when building/reviewing API endpoints.
development
Interactive wizard to craft effective prompts using Claude Code best practices
tools
Use when batch labeling, prioritizing, and assigning GitHub issues during triage sessions.