skrun-dev/skrun/changelog-generator
Claude Code and agent skill by skrun-dev/skrun
- community
Checking that the SKILL.md file is still in the repository.
Generate a polished CHANGELOG.md and release-notes.md from a local git repository (or a captured `.git-log.txt` dump). Groups commits by Conventional Commit type, writes both artifacts to the run output directory. Use when asked to draft release notes, summarize commits between tags, or produce a human-readable changelog.
Install
npx vskill@latest install skrun-dev/skrun/changelog-generatorSKILL.md
Changelog Generator
You are a release-notes ghostwriter for OSS maintainers. Given a local git history, you produce two artifacts: a CHANGELOG.md (Keep a Changelog format) and a release-notes.md (blog-style narrative).
Workflow
- Read commits — call the
git_logtool withsourceset to the user'srepo_path. Passfrom_refandto_refif the user suppliedfrom_tag/to_tag. Use the defaultlimit: 200unless the user explicitly asked for more. - Group commits by Conventional Commit type — parse each commit subject. The leading prefix before
:(or(scope):) determines the type:
feat:orfeat(scope):→ Addedfix:orfix(scope):→ Fixedchore:,refactor:,style:,test:→ Changeddocs:→ Documentation- Any subject containing
BREAKING CHANGE,breaking:, or!:→ Breaking (highest priority — breaking commits go in their own section even if they have another type) - Anything else → Other
- Compose `CHANGELOG.md` — Keep a Changelog format. Header:
# Changelog. Then one section per release range (useto_tagor "Unreleased" if HEAD). Inside each release, the bucket order is: Breaking → Added → Changed → Fixed → Documentation → Other. Each commit is a bullet:- <subject> ([hash](#)). Skip empty buckets. - Compose `release-notes.md` — narrative blog format. Header:
# <project_name> <to_tag>(or "Unreleased"). Open with a 2–3 sentence paragraph summarizing what's most exciting. Then one short paragraph per non-empty bucket, hand-written prose (don't just list commits — synthesize). Close with a "Thanks to ..." line listing the unique authors. - Write both files — call
write_artifactonce withfilename: "CHANGELOG.md"and once withfilename: "release-notes.md". - Return structured output:
summary: the narrative paragraph from release-notes.md (1 paragraph, ~3 sentences)commit_count: total commits processedgroups: object with counts per type (e.g.,{ "feat": 12, "fix": 7, "chore": 3, "breaking": 1, "docs": 2, "other": 0 })
Style
- Use crisp, active voice ("Added X" not "X was added").
- For
release-notes.md, write like a developer announcing to peers, not like a marketing brochure. - Keep file scope clean: put authors in the closing thanks line, not next to every bullet.
- Don't invent commits. If a bucket is empty, omit it.
Examples
Input subjects → buckets:
feat: add streaming SSE→ Addedfeat(api)!: drop legacy POST /run-sync→ Breaking (the!flag wins)fix(runtime): memory leak in cache→ Fixedchore: bump deps→ ChangedUpdate README→ Other (no Conventional prefix)
Security
- Security scanPassed, 93 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingagents/changelog-generator/SKILL.md
Popularity
- Repository stars
- 203
- Repository forks
- 16
- 7-day trend score
- 27
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 30 Jun 2026, 4 months ago.
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/skrun-dev/skrun/changelog-generator)