Bouw een Claude Code-skill die reviewt, trieert en commit
Hoe je één enkele Claude Code-skill bouwt die je wijzigingen reviewt, kwaliteitscontroles uitvoert, TODO's triageert en elke avond naar GitHub commit.
Er is een specifiek soort ontwikkelaarschuldgevoel dat rond 18:00 uur toeslaat. Je bent de hele dag gefocust bezig geweest, alles werkt min of meer, maar de Git-geschiedenis is een kerkhof van halfafgemaakte commits. Er staat een TODO drie bestanden diep die je om 10 uur mentaal had gemarkeerd en volledig bent vergeten. De README beschrijft nog de architectuur van drie weken geleden.
We wilden dit oplossen zonder nóg een tool, nóg een proces of nóg iets om te onthouden. Typ één commando aan het eind van de dag en laat de AI-codeerpartner de rest afhandelen.
Dit is hoe we /wrapup hebben gebouwd — een Claude Code skill die precies dat doet.
Hoe een goede einde-van-de-dag overdracht eruitziet
Een goede wrapup doet vijf dingen:
- Bekijkt wat er daadwerkelijk is veranderd — niet alleen een
git diff, maar een leesbare samenvatting van wat er is aangepast en waarom. - Voert kwaliteitscontroles uit — lint, types, tests, een snelle build. Vangt de gênante fouten op voordat ze op GitHub belanden.
- Houdt documentatie eerlijk — werkt
CLAUDE.md, de README en een changelog bij als die bestaat. De dingen die altijd wegglippen. - Triageert openstaande issues — scant op
TODO's en openstaande GitHub-issues, doet een snelle Q&A over alles wat belangrijk is, en schrijft een geprioriteerde agenda voor de volgende ochtend. - Commit en pusht — automatisch voor schone of laagrisico-wijzigingen, met een pauze voor menselijke review alleen als er iets kritieks onopgelost is.
Het resultaat is een Git-geschiedenis die een samenhangend verhaal vertelt, een CLAUDE.md die actueel blijft, en een ## Next Session-blok waardoor je morgenochtend het project opent en meteen weet waar je moet beginnen.
Hoe de skill werkt
De skill is een Markdown-bestand. Dat is oprecht alles wat het is. Claude Code leest het, laadt de instructies in de context en volgt ze wanneer je het commando aanroept.
Dit is de volledige volgorde:
Fase 1 — Wijzigingen reviewen. Voert git status, git diff HEAD en git log --oneline -10 uit. Produceert een samenvatting in gewone taal van wat er vandaag is veranderd.
Fase 2 — Kwaliteitscontroles. Detecteert de toolchain van het project via package.json of CLAUDE.md en voert uit wat past: ESLint of Ruff voor linting, tsc --noEmit of Mypy voor types, de testsuite, een build-check. Kleine problemen zoals verdwaalde console.log-statements worden automatisch opgelost. Grotere problemen worden gemarkeerd en gedocumenteerd als TODO's in plaats van midden in de wrapup gerepareerd.
Fase 3 — Geheugen en docs bijwerken. Controleert of er iets nieuws in CLAUDE.md moet — nieuwe commando's, conventies, omgevingsvariabelen. Werkt de README bij als er gebruikersgerichte functionaliteit is veranderd. Voegt toe aan een changelog als die bestaat.
Fase 3b — Issues en TODO's triageren. Dit is het deel dat we het meest waardevol vinden. Het grept door de hele codebase op TODO, FIXME, HACK en XXX, en haalt openstaande GitHub-issues op via de gh CLI. Voor elk belangrijk item voert het een korte Q&A uit: wat is het probleem, is er een duidelijke oplossing, wat is de inschatting van de benodigde inspanning, zijn er blokkades? Alles wordt gesorteerd in drie emmers — kritiek, belangrijk, backlog — en een ## Next Session-blok wordt geschreven in CLAUDE.md met de prioriteiten voor morgen op volgorde.
Fase 4 — De commit voorbereiden. Staget wijzigingen en stelt een conventioneel commit-bericht op. Als er onopgeloste kritieke issues bestaan, pauzeert het en toont de gestagede diff ter review. Anders gaat het automatisch verder.
Fase 5 — Committen en pushen. Commit, pusht naar de huidige tracking branch en toont een samenvatting van één scherm: wat er is geshipt, wat kritiek is voor morgen, welke docs zijn bijgewerkt en de commit-hash.
Wat is een Claude Code skill precies?
Claude Code heeft persistente, herbruikbare instructies die uitbreiden wat het kan doen. CLAUDE.md regelt de altijd-actieve projectcontext. Skills regelen specifieke herhaalbare workflows die je op aanvraag aanroept.
Een skill is een map met een SKILL.md-bestand. Dat bestand heeft twee delen:
---
name: wrapup
description: End-of-day review, triage, and commit. Run before closing the project.
allowed-tools: Read, Write, Bash(git:*), Bash(gh:*), Bash(grep:*), Bash(npm:*), Bash(ruff:*), Bash(tsc:*)
---
# End-of-Day Wrapup
## Phase 1 — Review changes
Run `git status`, `git diff HEAD`, and `git log --oneline -10`.
Summarise what changed today in plain language.
## Phase 2 — Quality checks
Detect the toolchain from package.json or CLAUDE.md.
Run lint, type checks, tests, and build. Fix minor issues automatically.
Flag larger issues as TODOs rather than attempting repairs mid-wrapup.
## Phase 3 — Update memory and docs
...
De YAML-frontmatter vertelt Claude Code de naam van de skill (die het /slash-command wordt), een beschrijving die wordt gebruikt om te bepalen wanneer deze automatisch geladen moet worden, en welke tools hij mag gebruiken. De Markdown-body is de prompt — gewone taal, gestructureerd op een manier die logisch is voor de taak.
Wanneer je /wrapup typt, laadt Claude Code de skill in de context en volgt de instructies. Het kan bash-commando's uitvoeren, bestanden lezen en schrijven, de gh CLI aanroepen, naar Git committen — alles wat de allowed-tools-lijst toestaat.
Skills maken deel uit van de Agent Skills open standaard, dus ze werken in Claude Code, Claude op het web en Claude Desktop. Eenmaal definiëren, overal gebruiken.
Drie manieren om een skill te installeren
Globaal (beschikbaar in elk project)
Het beste als de skill algemeen toepasbaar is en je hem wilt hebben ongeacht in welke repo je zit. /wrapup past hier.
mkdir -p ~/.claude/skills/wrapup
nano ~/.claude/skills/wrapup/SKILL.md
Plak de skill-inhoud erin en sla op. Geen herstart nodig — Claude Code detecteert skill-wijzigingen live.
Projectgebonden (gecommit naar de repo)
Het beste als de skill projectspecifiek is, of als het hele team hem moet hebben.
mkdir -p .claude/skills/wrapup
nano .claude/skills/wrapup/SKILL.md
Commit het dan:
git add .claude/skills/wrapup/SKILL.md
git commit -m "chore: add /wrapup end-of-day skill"
git push
Iedereen die de repo clonet krijgt de skill automatisch.
Persoonlijke project-override (niet gecommit)
Voor projectspecifieke skills die niet in de gedeelde codebase thuishoren — eigenzinnige commit-berichtstijlen, persoonlijke triagecriteria, stack-specifieke snelkoppelingen die je team niet gebruikt.
mkdir -p .claude/commands
echo ".claude/commands/" >> .gitignore
nano .claude/commands/wrapup.md
De skill aanroepen
Typ / in Claude Code en wrapup verschijnt in de autocompletelijst:
/wrapup
Of met het project-namespaceprefix als er een naamconflict is:
/project:wrapup
Je kunt controleren of het geregistreerd is door /help uit te voeren — alle beschikbare skills verschijnen met hun beschrijvingen. Als wrapup ontbreekt, controleer dan het SKILL.md-pad en valideer de frontmatter YAML.
Waarom de commit pauzeert bij kritieke issues
Eén ontwerpbeslissing die uitleg verdient: de skill commit en pusht automatisch voor normaal werk, maar pauzeert als er onopgeloste kritieke issues bestaan.
De logica in de skill-instructies:
## Phase 4 — Prepare the commit
Stage all changes with `git add -A`.
Compose a conventional commit message summarising today's work.
If any CRITICAL issues remain unresolved:
- Print the staged diff
- Print the proposed commit message
- Wait for explicit confirmation before proceeding
Otherwise:
- Commit and push without interruption
De pauze is niet bedoeld om je te blokkeren bij het shippen. Het is om ervoor te zorgen dat je bewust besluit om te pushen in een toestand waarin iets belangrijks stuk is. Vaak push je alsnog — het werk is niet gerelateerd aan het kritieke issue — maar je doet het intentioneel in plaats van per ongeluk.
Een geautomatiseerde tool die stilletjes een kapotte staat shipt is erger dan geen automatisering. De pauze is de skill die erkent dat hij niet de volledige context heeft, en die specifieke beslissing aan jou teruggeeft.
CLAUDE.md als werkgeheugen
Het ## Next Session-blok dat aan het eind van Fase 3b wordt geschreven verdient zijn eigen sectie.
Omdat Claude Code CLAUDE.md automatisch laadt aan het begin van elke sessie, weet Claude morgenochtend al de drie dingen die moeten gebeuren, in prioriteitsvolgorde. Je hoeft geen context opnieuw uit te leggen, je eigen notities niet terug te lezen, en geen vijftien minuten te besteden aan het herinneren waar je was gebleven.
Het blok ziet er zo uit na een typische wrapup:
## Next Session
**Last updated:** 2025-01-14 18:03
### Critical
- [ ] Fix auth token expiry not being caught in `api/middleware.ts` — users hitting 401s silently
- [ ] The `/export` endpoint times out for datasets > 10k rows — needs investigation
### Important
- [ ] Migrate remaining fetch calls in `dashboard/` to the new API client
- [ ] Write tests for the CSV parser edge cases (empty rows, quoted commas)
### Backlog
- [ ] Update the deployment docs — still references the old Docker setup
- [ ] TODO in `utils/date.ts:47` — handle timezone offsets properly
Elke sessie eindigt met een overdracht naar de volgende. Na verloop van tijd wordt CLAUDE.md een levend document dat de huidige staat van het project weerspiegelt — niet alleen de architectuur, maar ook het werk in uitvoering. Wanneer je een nieuwe medewerker onboardt, of na twee weken terugkeert bij een project, vertelt dat bestand het volledige verhaal.
Hoe de output eruitziet
Na het uitvoeren van /wrapup verschijnt de eindsamenvatting in de terminal:
── Wrapup complete ──────────────────────────────────────
Commit: a3f91c2
Branch: main → origin/main
Changed
Modified src/api/middleware.ts
Modified src/dashboard/index.tsx
Added src/utils/csv-parser.ts
Modified README.md
Quality checks
ESLint passed
TypeScript passed
Tests 47 passed, 0 failed
Build passed
Fixed 2 stray console.log statements
Docs updated
CLAUDE.md Next Session block updated
README.md Updated /export endpoint docs
Critical for tomorrow
1. Auth token expiry silent failure — api/middleware.ts
2. /export timeout on large datasets
─────────────────────────────────────────────────────────
Eén scherm. Alles wat je nodig hebt om de laptop dicht te klappen.
Maak het je eigen
De wrapup-skill kostte ongeveer een uur om te schrijven en maakt sindsdien deel uit van onze dagelijkse routine. De Git-geschiedenis is schoner. De docs zijn nauwkeuriger. Elke ochtend begint met een duidelijke lijst die al in de context is geladen.
Het is ook een goed voorbeeld van waar skills in het algemeen goed voor zijn: een meerstaps, contextafhankelijke workflow die je anders handmatig zou doen — of overslaan — één keer vastleggen in een Markdown-bestand. Claude Code handelt de uitvoering af. Jij typt één woord.
De kosten van een goede einde-van-de-dag routine zitten niet in het werk zelf. Het is de frictie van onthouden om het te doen en weten waar je moet beginnen. Een skill elimineert beide. Kopieer het bestand, vervang npm test door pytest, vervang ESLint door Ruff, voeg toe wat er aan projectspecifieke checks nodig is — en draai vanavond /wrapup.
Als je problemen hebt bij het aanpassen van de skill aan jouw stack, plak dan de URL van dit bericht in Claude Code of je AI-assistent naar keuze. Die heeft dan de volledige context om je te helpen debuggen.
Waar je dit kunt draaien
Je hebt een machine nodig waarop Claude Code en Git beschikbaar zijn — dat is elke Linux-box met een terminal. Als je ontwikkelomgevingen draait op een VPS, dan geeft Hetzner je een CX22 voor €4,85/maand met €10 gratis tegoed. Daar draait deze blog ook op.
Als je liever het serverbeheer overslaat en een gehoste omgeving wilt voor AI-workflows, dan regelt xCloud de infrastructuur zodat jij je kunt richten op de skills zelf.
Voor teams die monitoring willen op de services waar Claude naar commit, biedt UptimeRobot 50 monitors in de gratis tier met intervallen van 5 minuten — handig om die /export timeout-problemen op te vangen voordat je gebruikers dat doen.
(Affiliate links — we ontvangen een kleine vergoeding als je je aanmeldt, zonder extra kosten voor jou.)