Skip to content

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.

  1. Maak de skill-map aan:

    mkdir -p ~/.claude/skills/changelog-generator
    
  2. 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.

~/.claude/skills/changelog-generator/SKILL.md
---
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