Changelog Generator Skill (Claude Code)¶
Claude Code Skill die automatisch een technische changelog-entry genereert op basis van
de openstaande (nog niet gecommitte) wijzigingen in de huidige git repo, en deze
wegschrijft naar CHANGELOG.md in Keep a Changelog-stijl.
Verschil met de handmatige prompt
Dit is een andere aanpak dan de Changelog Generatie prompt:
die genereert tekst voor een commit message, deze skill schrijft direct een entry
naar het CHANGELOG.md bestand in de repo. Zie de vergelijkingstabel hieronder.
Installatie (globaal, voor alle projecten)¶
Skills die in ~/.claude/skills/<naam>/SKILL.md staan worden door Claude Code automatisch
geladen, in élk project — dat maakt de skill globaal beschikbaar in plaats van projectgebonden.
-
Maak de skill-map aan:
mkdir -p ~/.claude/skills/changelog-generator -
Zet onderstaande skill-inhoud in
~/.claude/skills/changelog-generator/SKILL.md. Heb je het bestand al gedownload (bijv. via Slack of e-mail)? Dan volstaat:mv ~/Downloads/SKILL.md ~/.claude/skills/changelog-generator/SKILL.md
Project-gebonden alternatief
Wil je de skill alleen binnen één specifieke repo beschikbaar maken (bijv. omdat de
categorisering per project afwijkt)? Zet het bestand dan in .claude/skills/changelog-generator/SKILL.md
binnen die repo, in plaats van in de home directory.
Hoe Claude Code de skill oppikt¶
Er is geen slash-command nodig — de description in de YAML-frontmatter van SKILL.md
is het triggermechanisme. Claude Code herkent zelf wanneer een vraag bij de skill past.
Voorbeelden van vragen die de skill automatisch activeren:
- "Maak een changelog van mijn openstaande wijzigingen"
- "Kun je de CHANGELOG.md bijwerken op basis van wat ik nu heb aangepast?"
- "Wat heb ik allemaal veranderd sinds de laatste commit? Zet het in de changelog"
Wil je het expliciet forceren, verwijs dan direct: "gebruik de changelog-generator skill om ..."
Let op bij gebruik
- De skill werkt op
git diff HEAD(staged + unstaged) — alleen zinvol als er ook daadwerkelijk niet-gecommitte wijzigingen zijn. - Nieuwe entries komen bovenaan in
CHANGELOG.md, onder[Unreleased], in Keep a Changelog-stijl. - Lockfiles, gegenereerde assets en formatting-only diffs worden genegeerd — pas dit aan in de skill zelf (stap 3, "Categoriseer") als je dat anders wilt.
Vergelijking met de handmatige prompt¶
| Aspect | Handmatige prompt (changelog-generatie.md) |
Changelog Generator Skill |
|---|---|---|
| Output | Commit message / commit description | Entry in CHANGELOG.md |
| Bron | Zichtbare context (open bestanden / geplakte diff) | git diff HEAD (staged + unstaged) |
| Aanroepen | Prompt handmatig plakken in de chat | Automatisch, op basis van herkenbare vraag |
| Scope | Werkt in elke AI-assistent (ook zonder Claude Code) | Specifiek voor Claude Code (skill-systeem) |
| Doel | Changelog-tekst voor de commit message zelf | Los bijgehouden CHANGELOG.md bestand in de repo |
Skill-inhoud (SKILL.md)¶
Onderstaande inhoud is de volledige, actuele versie van de skill. Kopieer dit één-op-één
naar ~/.claude/skills/changelog-generator/SKILL.md om de skill zelf te installeren.
---
name: changelog-generator
description: Genereer een technische changelog-entry op basis van openstaande (staged + unstaged, nog niet gecommitte) wijzigingen in de huidige git repository. Gebruik deze skill wanneer de gebruiker vraagt om "een changelog te maken", "changelog bijwerken", "CHANGELOG.md aan te vullen", of wil weten "wat er allemaal is aangepast" voordat hij commit/pusht. Werkt op basis van `git diff` (working dir + staged), niet op basis van commit history sinds een tag.
---
# Changelog Generator
Genereert een changelog-entry in Keep a Changelog stijl, gebaseerd op de huidige
niet-gecommitte wijzigingen in de git repo (staged + unstaged). Bedoeld voor
intern/technisch gebruik door developers van Flooris.
## Workflow
1. **Controleer of er een git repo is.**
```bash
git rev-parse --is-inside-work-tree
```
Zo niet: meld dit aan de gebruiker en stop.
2. **Verzamel de wijzigingen.**
```bash
git status --porcelain=v1
git diff HEAD # staged + unstaged t.o.v. laatste commit
```
- `git diff HEAD` toont zowel staged als unstaged wijzigingen t.o.v. de laatste commit.
- Nieuwe (untracked) bestanden staan niet in `git diff` — haal die apart op met
`git status --porcelain=v1 | grep '^??'` en bekijk relevante nieuwe files met `cat`/`view`
om te begrijpen wat ze toevoegen.
- Voor grote diffs: werk file-per-file (`git diff HEAD -- <pad>`) i.p.v. alles in één keer
door te lezen, om context-overflow te voorkomen.
3. **Categoriseer elke wijziging** volgens Keep a Changelog secties:
- **Added** — nieuwe features, routes, componenten, endpoints
- **Changed** — aanpassingen aan bestaand gedrag
- **Fixed** — bugfixes
- **Removed** — verwijderde code/features
- **Security** — security-gerelateerde fixes (indien van toepassing)
Baseer de categorisering op de daadwerkelijke code-diff, niet alleen op bestandsnamen.
Negeer ruis: lockfiles (`package-lock.json`, `composer.lock`), gegenereerde assets,
`.env`-wijzigingen, en formatting-only diffs (whitespace/imports-only) — vermeld deze
niet als changelog-item, tenzij de gebruiker daar expliciet om vraagt.
4. **Schrijf de entry.**
- Eén regel per wijziging, technisch en specifiek (bestand/module + wat er functioneel
verandert), geen commit-message jargon herhalen zonder context.
- Groepeer per sectie (Added/Changed/Fixed/...), laat lege secties weg.
- Datum-header in `[Unreleased]` of `[YYYY-MM-DD]` indien de gebruiker een versie/datum opgeeft.
5. **Wegschrijven naar CHANGELOG.md.**
- Zoek `CHANGELOG.md` in de repo-root. Bestaat het niet: maak het aan met een
Keep a Changelog header.
- Nieuwe entry komt **bovenaan**, direct onder de titel/intro, boven eerdere entries.
- Gebruik file-edit tools (niet blind overschrijven) zodat bestaande inhoud behouden blijft.
6. **Toon een korte samenvatting** in de chat van wat is toegevoegd aan CHANGELOG.md,
zodat de gebruiker het kan controleren voordat hij commit.
## Voorbeeld output-formaat
```markdown
## [Unreleased]
### Added
- Nieuwe export-endpoint voor orderregels in `app/Http/Controllers/OrderExportController.php`
### Fixed
- Race condition bij gelijktijdige stockupdates in `app/Services/StockService.php`
### Changed
- Validatie van klant-e-mailadres nu case-insensitive in `app/Http/Requests/CustomerRequest.php`
```
## Randgevallen
- **Geen wijzigingen gevonden**: meld dit expliciet, maak niets aan.
- **Monorepo / meerdere packages**: vraag of de changelog per package of globaal moet, tenzij
al duidelijk uit de repostructuur (bv. losse `CHANGELOG.md` per package-map).
- **Gebruiker wil juist committed history sinds laatste tag**: dat valt buiten deze skill
(deze werkt bewust op *openstaande* wijzigingen); gebruik in dat geval `git log <last-tag>..HEAD`
los, zonder deze skill-flow te forceren.
Gerelateerde pagina's¶
- Changelog Generatie voor Git Commits — handmatige prompt-variant voor commit messages
- Claude Code Skills voor Git & PR's —
/commit,/create-feature-pren/create-release-pr, onderhouden inteam-guidelines - Keep a Changelog