Changelog Generator Skill

Convert a git log, commit list, or release notes into a polished, user-facing changelog.

Changelog Generator Skill — The Skill Playground: pick the Executive Update skill, fill in a few notes, hit run, and watch a structured executive… (from the mohitagw15856/pm-claude-skills README)

From the mohitagw15856/pm-claude-skills README — shows the whole collection, not only this skill. · view on GitHub

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/changelog-generator, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit mohitagw15856/pm-claude-skills/skills/changelog-generator#main ~/.claude/skills/changelog-generator

For one project only, change the path to .claude/skills/changelog-generator. This skill also uses CHANGELOG.md — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Changelog Generator Skill

Show the full text116 lines
namedescription
changelog-generatorConvert a git log, commit list, or release notes into a polished, user-facing changelog. Use when writing release notes, generating a CHANGELOG.md entry, or documenting what changed in a version. Produces a structured changelog section with version header, categorised changes, and migration notes. For an already-curated change list use changelog-writer instead.

Changelog Generator Skill

Converts raw git commits, a diff summary, or developer release notes into a polished changelog entry — categorised, user-facing, and following Keep a Changelog conventions.

Required Inputs

Ask for these if not provided:

  • Commits or release notes (paste git log --oneline, raw commit messages, or a description of what changed)
  • Version number (e.g. 2.4.0, v1.0.0-beta.2)
  • Release date (or "today")
  • Audience (developers using an API / end users of a product / internal team — affects language)
  • Any breaking changes (flag these explicitly if known)
  • Previous version behaviour (optional — paste the previous changelog entry or describe what is changing; needed for accurate "Changed" entries)
  • Scope (whole product / specific package or module — e.g. "payments SDK only", "iOS app", "all services")

Output Format

Follow Keep a Changelog format:


[X.Y.Z] — YYYY-MM-DD

Breaking Changes ⚠️

[Only include if there are breaking changes]

  • [Breaking change]: [What changed and what it breaks]
  • Migration required: [Specific action the user must take]
Added
  • [New feature or capability, written from the user's perspective]
  • [Another addition]
Changed
  • [Changed behaviour — what it did before vs. what it does now]
  • [Performance improvement with measurable impact if known]
Fixed
  • [Bug fixed — describe what was broken, not the fix implementation]
  • [Another fix]
Deprecated
  • [Deprecated thing] — use [replacement] instead. Will be removed in [version].
Removed
  • [Removed thing] — was deprecated in [version]
Security
  • [Security fix — describe the vulnerability class, not exploit details]


Skill guidance — do not include the following section in the delivered changelog:

Formatting Rules Applied

Language: Write for the reader, not the committer. "Add dark mode support" not "implement ThemeProvider with dark palette variant".

Breaking changes: Always call these out first with ⚠️. Include a migration path.

Bug fixes: Describe what was broken, not what was changed. "Fix crash when user has no profile picture" not "null-check avatar URL before rendering".

Granularity: Group related commits into one line. Don't list every micro-commit separately.

Tone: Active voice, imperative mood. "Add", "Fix", "Remove" — not "Added", "Fixed", "Removed".

Empty sections: Omit any section with no entries. Don't include empty ### Fixed blocks.

Deeper Materials

This skill ships with support files — use them when they are available:

  • references/user-translation.md — Commit-to-Changelog Translation: Writing for the People Affected. Apply it while producing the output; it carries the calibration and judgment calls the method summary above compresses.
  • templates/release-entry.md — a fill-in version of the deliverable with the quality gates inline. Offer it when the user wants to work the document themselves rather than have it generated.

Scoring Rubric (0–40)

Score any output of this skill before handing it over; 32+ is ship-quality.

Dimension 0 5 10
Reader-facing translation Entries restate commit messages, with internal identifiers and implementation details Mostly user-facing, but a few entries leak internals or describe the patch rather than what was broken Every entry describes the change from the reader's perspective — what changed for them, never how the code was refactored
Breaking-change handling Breaking changes buried mid-list or missing a migration path Flagged at the top, but migration guidance is vague ("update your code") At the top with ⚠️, each with a specific migration action the user can execute
Curation & grouping Every micro-commit listed; internal-only commits included Some grouping, but related commits still appear as separate entries or noise slips through Related commits grouped into single entries; internal-only commits excluded; nothing a user can't observe
Format discipline Wrong or missing version/date header; past-tense verbs; empty sections left in Header correct but tense or empty-section slips remain Keep a Changelog conventions throughout — correct header, imperative mood, only populated sections

Quality Checks

  • Breaking changes are at the top with migration instructions
  • All entries are user-facing language (no internal variable names or implementation details)
  • Related commits are grouped into single entries (not listed individually)
  • Version and date header is correct
  • Empty sections are omitted
  • No entries start with past-tense verbs (no "Added", "Fixed", "Removed" — use "Add", "Fix", "Remove")
  • Every breaking change entry includes a specific migration action (not just "update your code")

Anti-Patterns

  • Do not include implementation details in changelog entries — users need to know what changed for them, not how the code was refactored internally
  • Do not list every micro-commit as a separate entry — related commits should be grouped into one user-facing change
  • Do not omit the migration path for breaking changes — a breaking change entry without a specific migration action forces users to read the source code
  • Do not include empty sections — a "### Fixed" section with no entries signals the template was filled in carelessly
  • Do not write breaking changes in the same casual tone as minor additions — breaking changes must be visually prominent and call out migration requirements explicitly

Usage Examples

  • "Write a changelog for version [X]" + [paste commits]
  • "Generate release notes from these commits"
  • "Turn this git log into a CHANGELOG entry"
  • "Write the CHANGELOG.md update for this release"
  • "What changed in this release?" + [paste commit list]
1---
2name: changelog-generator
3description: "Convert a git log, commit list, or release notes into a polished, user-facing changelog. Use when writing release notes, generating a CHANGELOG.md entry, or documenting what changed in a version. Produces a structured changelog section with version header, categorised changes, and migration notes. For an already-curated change list use changelog-writer instead."
4---
5 
6# Changelog Generator Skill
7 
8Converts raw git commits, a diff summary, or developer release notes into a polished changelog entry — categorised, user-facing, and following Keep a Changelog conventions.
9 
10## Required Inputs
11 
12Ask for these if not provided:
13- **Commits or release notes** (paste `git log --oneline`, raw commit messages, or a description of what changed)
14- **Version number** (e.g. 2.4.0, v1.0.0-beta.2)
15- **Release date** (or "today")
16- **Audience** (developers using an API / end users of a product / internal team — affects language)
17- **Any breaking changes** (flag these explicitly if known)
18- **Previous version behaviour** (optional — paste the previous changelog entry or describe what is changing; needed for accurate "Changed" entries)
19- **Scope** (whole product / specific package or module — e.g. "payments SDK only", "iOS app", "all services")
20 
21## Output Format
22 
23Follow [Keep a Changelog](https://keepachangelog.com) format:
24 
25---
26 
27## [X.Y.Z] — YYYY-MM-DD
28 
29### Breaking Changes ⚠️
30[Only include if there are breaking changes]
31- **[Breaking change]:** [What changed and what it breaks]
32- **Migration required:** [Specific action the user must take]
33 
34### Added
35- [New feature or capability, written from the user's perspective]
36- [Another addition]
37 
38### Changed
39- [Changed behaviour — what it did before vs. what it does now]
40- [Performance improvement with measurable impact if known]
41 
42### Fixed
43- [Bug fixed — describe what was broken, not the fix implementation]
44- [Another fix]
45 
46### Deprecated
47- [Deprecated thing] — use [replacement] instead. Will be removed in [version].
48 
49### Removed
50- [Removed thing] — was deprecated in [version]
51 
52### Security
53- [Security fix — describe the vulnerability class, not exploit details]
54 
55---
56 
57---
58 
59> **Skill guidance — do not include the following section in the delivered changelog:**
60 
61## Formatting Rules Applied
62 
63**Language:** Write for the reader, not the committer. "Add dark mode support" not "implement ThemeProvider with dark palette variant".
64 
65**Breaking changes:** Always call these out first with ⚠️. Include a migration path.
66 
67**Bug fixes:** Describe what was broken, not what was changed. "Fix crash when user has no profile picture" not "null-check avatar URL before rendering".
68 
69**Granularity:** Group related commits into one line. Don't list every micro-commit separately.
70 
71**Tone:** Active voice, imperative mood. "Add", "Fix", "Remove" — not "Added", "Fixed", "Removed".
72 
73**Empty sections:** Omit any section with no entries. Don't include empty `### Fixed` blocks.
74 
75## Deeper Materials
76 
77This skill ships with support files — use them when they are available:
78 
79- **`references/user-translation.md`** — Commit-to-Changelog Translation: Writing for the People Affected. Apply it while producing the output; it carries the calibration and judgment calls the method summary above compresses.
80- **`templates/release-entry.md`** — a fill-in version of the deliverable with the quality gates inline. Offer it when the user wants to work the document themselves rather than have it generated.
81 
82## Scoring Rubric (0–40)
83 
84Score any output of this skill before handing it over; 32+ is ship-quality.
85 
86| Dimension | 0 | 5 | 10 |
87|---|---|---|---|
88| **Reader-facing translation** | Entries restate commit messages, with internal identifiers and implementation details | Mostly user-facing, but a few entries leak internals or describe the patch rather than what was broken | Every entry describes the change from the reader's perspective — what changed for them, never how the code was refactored |
89| **Breaking-change handling** | Breaking changes buried mid-list or missing a migration path | Flagged at the top, but migration guidance is vague ("update your code") | At the top with ⚠️, each with a specific migration action the user can execute |
90| **Curation & grouping** | Every micro-commit listed; internal-only commits included | Some grouping, but related commits still appear as separate entries or noise slips through | Related commits grouped into single entries; internal-only commits excluded; nothing a user can't observe |
91| **Format discipline** | Wrong or missing version/date header; past-tense verbs; empty sections left in | Header correct but tense or empty-section slips remain | Keep a Changelog conventions throughout — correct header, imperative mood, only populated sections |
92 
93## Quality Checks
94- [ ] Breaking changes are at the top with migration instructions
95- [ ] All entries are user-facing language (no internal variable names or implementation details)
96- [ ] Related commits are grouped into single entries (not listed individually)
97- [ ] Version and date header is correct
98- [ ] Empty sections are omitted
99- [ ] No entries start with past-tense verbs (no "Added", "Fixed", "Removed" — use "Add", "Fix", "Remove")
100- [ ] Every breaking change entry includes a specific migration action (not just "update your code")
101 
102## Anti-Patterns
103 
104- [ ] Do not include implementation details in changelog entries — users need to know what changed for them, not how the code was refactored internally
105- [ ] Do not list every micro-commit as a separate entry — related commits should be grouped into one user-facing change
106- [ ] Do not omit the migration path for breaking changes — a breaking change entry without a specific migration action forces users to read the source code
107- [ ] Do not include empty sections — a "### Fixed" section with no entries signals the template was filled in carelessly
108- [ ] Do not write breaking changes in the same casual tone as minor additions — breaking changes must be visually prominent and call out migration requirements explicitly
109 
110## Usage Examples
111- "Write a changelog for version [X]" + [paste commits]
112- "Generate release notes from these commits"
113- "Turn this git log into a CHANGELOG entry"
114- "Write the CHANGELOG.md update for this release"
115- "What changed in this release?" + [paste commit list]
116 

Discussion

Alternatives

Also in Developer docsSee all 533 in Development →