
CLAUDE.md Best Practices: 9 Regels Waarmee Claude Code Je Instructies Niet Meer Negeert (2026)
De meeste artikelen over CLAUDE.md best practices geven je een template en houden het daarbij — maar het bestand dat je vorige week schreef wordt waarschijnlijk al genegeerd, en je weet het niet eens. De oplossing is zelden "voeg meer regels toe." Het is bijna altijd het tegenovergestelde. We hebben Claude Code op elk recent klantproject gebruikt, en deze 9 regels zijn wat écht verschil maakt: een hiërarchie die aansluit op hoe Claude bestanden laadt, een instructiebudget dat je niet kunt overtreden, de AGENTS.md-beslissing, en de zes redenen waarom Claude je bestand halverwege een sessie stilletjes laat vallen.
Belangrijkste inzichten
- CLAUDE.md is projectgeheugen dat in Claude Code's context wordt geladen — houd het onder de 200 regels, anders vallen regels af.
- Bestanden laden van boven naar beneden: globaal, projectroot, submap (lazy), en CLAUDE.local.md (persoonlijk, gitgenegeerd).
- Gebruik AGENTS.md als je ook Cursor of Copilot gebruikt; maak een symlink van CLAUDE.md naar AGENTS.md om beide te voeden.
- Als Claude je bestand negeert, zit het in 90% van de gevallen aan de lengte, vage formuleringen of een ontbrekende "waarom."
Wat CLAUDE.md Eigenlijk Doet (En Waarom Het Ertoe Doet)
Kortweg: CLAUDE.md is een markdown-bestand dat Claude Code als projectgeheugen leest aan het begin van elke sessie. Het is geen systeem-prompt, geen hook en geen skill — het is adviserende context die Claude richting de conventies van je team stuurt. Zie het minder als documentatie en meer als een configuratiebestand dat je AI-programmeermaatje daadwerkelijk leest.
Veel teams schrijven CLAUDE.md als een README. Dat is de eerste fout. Een README legt het project uit aan mensen die kunnen scrollen en overslaan. CLAUDE.md wordt door Claude Code in zijn geheel gelezen bij de start van elke sessie — elke regel kost tokens én naleving. Het lijkt veel meer op een configuratiebestand of een set testfixtures dan op documentatie.
Het is ook niet de enige manier om Claude te sturen. Hooks voeren deterministische acties uit (formatteren, commits blokkeren). Skills bundelen herbruikbare workflows. CLAUDE.md zit er tussenin als adviserende context — Claude evalueert het, wijkt er soms van af, en vergeet delen ervan als je te veel schrijft. Dat onderscheid is de basis voor alles hieronder, en het is waarom CLAUDE.md één tool is in de bredere praktijk van context engineering, geen wondermiddel.
Regel 1: Behandel het als code, niet als docs. Versieer het. Review het in pull requests. Trim het zoals je een opgeblazen module zou refactoren. Volgens Anthropic's CLAUDE.md-gids wordt het bestand met dezelfde prioriteit geladen als elke systeeminstructie — wat betekent dat een verouderde regel van zes maanden geleden vandaag nog steeds actief elke reactie beïnvloedt.
Hoe CLAUDE.md Laadt: De 4-Laags Hiërarchie
Kortweg: Claude Code laadt CLAUDE.md uit vier lagen: globaal (
~/.claude/CLAUDE.md), projectroot,CLAUDE.local.mdvoor persoonlijke overschrijvingen, en submapbestanden die lazy-loaden alleen wanneer Claude bestanden in die map opent. Naburige submappen zien elkaars CLAUDE.md nooit, wat het claude code-geheugen scherp afgebakend houdt.

De hiërarchie is het meest misverstane onderdeel van CLAUDE.md — en het onderdeel waar geen van de top-5 zoekresultaten diep op ingaat. Dit is wat er daadwerkelijk achter de schermen gebeurt:
| Laag | Locatie | Laadt wanneer | Bereik | Git |
|---|---|---|---|---|
| Globaal | ~/.claude/CLAUDE.md | Sessiestart | Alle projecten op je machine | Persoonlijk |
| Projectroot | ./CLAUDE.md | Sessiestart | Hele repo | Gecommit |
| Lokaal | ./CLAUDE.local.md | Sessiestart | Deze checkout, jouw machine | Handmatig gitgenegeerd |
| Submap | ./frontend/CLAUDE.md e.d. | Lazy — wanneer Claude een bestand in die map opent | Die subboom | Gecommit |
Twee begrippen die de moeite waard zijn om vast te leggen: lazy loading en sibling-isolatie.
Lazy loading betekent dat een submap-CLAUDE.md pas in Claude's context terechtkomt wanneer Claude daadwerkelijk een bestand in die map opent. Als je vraagt "fix de inlogbug" en Claude alleen backend/ aanraakt, wordt frontend/CLAUDE.md nooit geladen. Dat is handig — het houdt het contextvenster schoon — maar het bijt teams die kritieke regels in submappen hebben gezet in de verwachting dat ze altijd van toepassing zijn.
Sibling-isolatie is het gevolg: frontend/CLAUDE.md en backend/CLAUDE.md laden elkaar nooit. Ze delen alleen wat in het projectrootbestand staat. Als je frontend-regels dus conflicteren met je backend-regels, is dat prima. Als ze een conventie moeten delen, zet die dan in het rootbestand.
CLAUDE.local.md is de nooduitgang. Het wordt geladen maar niet gecommit — perfect voor "ik gebruik liever pnpm maar het team heeft npm gestandaardiseerd"-overschrijvingen. Let op: het wordt niet automatisch gitgenegeerd. Je moet het zelf toevoegen. Vergeet je dat, dan commit je je persoonlijke regels in de repo van het team.
Regel 4: Zet instructies daar waar Claude ze daadwerkelijk leest. Stijlregels voor React-componenten horen in frontend/CLAUDE.md, niet in de root. Database-migratieregels horen in backend/. De Anthropic Memory-docs (bijgewerkt november 2025) bevestigen dit — het lazy-load-gedrag is opzettelijk en essentieel.
Wat Je In CLAUDE.md Zet (En Wat Niet)
Kortweg: In CLAUDE.md hoort alles wat Claude niet uit je code kan afleiden: buildcommando's, naamconventies, anti-patronen waar je team op gestuit is, en de reden achter elke regel. Eruit gaat alles wat in de README staat, alles wat in
package.jsonstaat, en elke regel die wekelijks verandert. claude code-instructies moeten testbaar en specifiek zijn.
Hier is een minimale CLAUDE.md die écht zijn gewicht trekt:
# Project: techsy-app
## Commando's
- Build: `pnpm build` (Turbopack — Webpack-flags zijn niet van toepassing)
- Test: `pnpm test --run` (we gebruiken Vitest, niet Jest)
- Lint: `pnpm lint` (mislukt in CI bij waarschuwingen, niet alleen fouten)
## Conventies
- Server components standaard. Voeg `'use client'` alleen toe als het echt nodig is.
Waarom: we hadden vorig kwartaal 8s LCP door overmatig gebruik van client-components.
- Databasetoegang alleen via `lib/db/`-helpers — nooit raw SQL in routes.
Waarom: row-level security-beleid zit in die helpers.
- Tests staan naast het bestand als `*.test.ts`.
## Verboden
- Voeg geen nieuwe dependency toe zonder eerst een PR-opmerking te plaatsen.
- Gebruik geen `any` — gebruik `unknown` en vernauw het type.
## Waar te kijken
- Schema: `db/schema.ts`
- Auth-flow: `lib/auth/README.md`Vergelijk dat met de anti-patroonversie die de meeste teams uitsturen:
# Projectregels
- Schrijf schone, onderhoudbare code.
- Volg best practices.
- Gebruik TypeScript correct.
- Zorg dat tests slagen.
- Wees consistent met bestaande patronen.
- Documenteer complexe logica.Het tweede bestand is niet fout. Het is gewoon nutteloos. Claude wil al schone code schrijven. "Wees consistent" vertelt Claude niet met welk patroon consistent te zijn. Anthropic-ingenieur Boris Cherny's publieke voorbeelden neigen sterk naar de eerste stijl — concrete commando's, benoemde tools, en de reden achter beslissingen die niet vanzelfsprekend zijn uit de codebase.
Regel 2: Wees specifiek, niet ambitieus. "Schrijf schone code" is ambitieus. "Server components standaard; voeg 'use client' alleen toe als het echt nodig is" is testbaar. Dezelfde discipline ligt ten grondslag aan goede prompt engineering: specifieke, testbare instructies verslaan vage ambities, of ze nu in een prompt of een CLAUDE.md staan.
Regel 3: Leg de reden achter elke regel uit. De "waarom" is geen opvulling — het is hoe Claude randgevallen afhandelt. Een regel met een reden ("we hadden 8s LCP door te veel client-components") generaliseert naar vergelijkbare situaties. Een regel zonder reden wordt genegeerd zodra de context verschuift. Dit patroon is ook gedocumenteerd in Builder.io's CLAUDE.md-gids.
Waarom Negeert Claude Je CLAUDE.md? Het Instructiebudget
Kortweg: Claude is niet kwaadwillend — het raakt gewoon buiten adem. Na grofweg 80 regels zie je regels wegvallen; na 200 regels worden grote blokken volledig genegeerd; na 500 woorden aan dichte regels stort de naleving in. De oplossing is een instructiebudget. Behandel elke regel als een kostenpost voor claude code-geheugen en per-regel naleving.
Recent onderzoek bevestigt wat productiegebruikers steeds opnieuw ontdekken: het volgen van instructies verslechtert niet-lineair met het aantal regels. Het arxiv-paper 2507.11538 over instructievolgcapaciteit laat zien dat de naleving per regel daalt naarmate je er meer stapelt — en HumanLayer's analyse van CLAUDE.md in productie geeft hetzelfde beeld.
Vertaling: elke regel die je toevoegt maakt elke andere regel iets minder waarschijnlijk nageleefd te worden. Een CLAUDE.md van 400 regels is dus niet vier keer zo effectief als een van 100 regels. Vaak is het minder effectief, omdat de regels die er echt toe doen worden verwaterd door die regels die je op een vrijdagmiddag drie maanden geleden hebt geschreven en nooit meer hebt verwijderd.
In onze CLAUDE.md-bestanden begint alles voorbij regel 150 zichtbaar aan naleving te verliezen. Voorbij regel 250 hebben we Claude hele secties zien overslaan. Dus we houden een maximum aan.
wc -l CLAUDE.mdDat is de hele tool. Voer hem uit. Zit je over 200? Dan zit je over budget. De harde regel die we naar klanten sturen:
Behandel CLAUDE.md als een budget van 200 regels. Elke regel kost naleving. Geef het uit waar het telt.
Regel 1 nog eens benadrukt: houd het kort. Onder 200 regels. Onder 500 woorden aan dichte regels. Als je automatiseringsregels wilt toevoegen ("voer altijd prettier uit na wijzigingen"), horen die waarschijnlijk in Claude Code hooks — hooks zijn deterministisch en kosten geen instructiebudget-tokens.
CLAUDE.md, AGENTS.md, .cursorrules of copilot-instructions: Wat Gebruik Je?
Kortweg: Als je alleen Claude Code gebruikt, is CLAUDE.md prima. Als je twee of meer agent-CLI's gebruikt (Codex, Cursor, Copilot, Sourcegraph), schakel dan over naar AGENTS.md en maak een symlink van CLAUDE.md naar AGENTS.md. AGENTS.md is in late 2025 ontstaan als een cross-tool-standaard — de meeste moderne agents vallen er automatisch op terug, zodat één bestand alle ecosystemen voedt.
Dit is de vraag die geen van de top-5 resultaten werkelijk beantwoordt. Hier is de matrix:
| Bestand | Tool | Bereik | Wanneer te gebruiken | Fallback |
|---|---|---|---|---|
CLAUDE.md | Claude Code | Per project + globaal | Teams die alleen Claude Code gebruiken | Claude leest alleen dit |
AGENTS.md | OpenAI Codex, Cursor, Sourcegraph, Factory, Google | Per project | Je gebruikt 2+ agent-CLI's | De meeste agents vallen hierop terug |
.cursorrules | Cursor | Per project | Alleen Cursor of als Cursor-specifieke aanvulling | Alleen Cursor |
.github/copilot-instructions.md | GitHub Copilot | Per project | Alleen Copilot | Alleen Copilot |
De dual-target-truc is één regel:
ln -s AGENTS.md CLAUDE.mdDat is alles. Nu lezen Claude Code, Codex en elk AGENTS.md-compatibel tool hetzelfde bestand. Eén keer bijwerken, elke agent pikt het op. De AGENTS.md-spec is open en bewust minimaal — het is gewoon markdown met conventionele secties.
Twee praktische kanttekeningen. Ten eerste: als je team een Cursor-power-user heeft, hanteert Cursor's .cursorrules een andere aanpak — één bestand, geen hiërarchie, strikter formaat. Sommige teams houden beide: AGENTS.md voor de gedeelde regels, .cursorrules voor Cursor-specifieke eigenaardigheden. Ten tweede: Copilot's .github/copilot-instructions.md valt niet terug op AGENTS.md, dus teams die veel met Copilot werken, hebben een apart bestand nodig.
Als je een agent-stack helemaal opnieuw opbouwt, behandelt onze Claude Code vs Cursor vs Copilot-vergelijking de trade-offs op harness-niveau. De korte versie: de hiërarchie van Claude Code is het krachtigst voor monorepo's, de UX van Cursor wint voor solowerk, en de IDE-integratie van Copilot is nog steeds het soepelst voor geleidelijke adoptie.
Regel 9: Gebruik AGENTS.md als je meer dan één agent-CLI gebruikt. Onderhoud geen twee bestanden die hetzelfde zeggen. Kies het bestand dat de meeste tools in je stack lezen en symlink de rest.
CLAUDE.md vs Hooks vs Skills: De Beslissingsdriehoek
Kortweg: CLAUDE.md = adviserende context. Hooks = deterministische acties. Skills = gebundelde mogelijkheden. Kies de verkeerde en je verbrandt instructiebudget op iets wat een hook zou moeten afhandelen, of schrijf een CLAUDE.md-regel voor iets wat alleen een skill kan leveren. De driehoek is de goedkoopste manier om CLAUDE.md slank te houden.

Drie tools, drie taken. De meest voorkomende fout: "voer altijd prettier uit na het bewerken" in CLAUDE.md zetten. Claude leest het. Claude voert prettier soms uit. Je bent gefrustreerd. De oplossing is die regel uit CLAUDE.md te verplaatsen naar een hook — want hooks vuren deterministisch elke keer, zonder adviserend speelruimte.
| Gebruiksscenario | Tool | Waarom |
|---|---|---|
| Prettier uitvoeren bij opslaan | Hook | Deterministisch — moet altijd gebeuren |
| 2-spatie inspringing gebruiken | CLAUDE.md | Adviserende stijlvoorkeur |
| Onze testpipeline met onze config uitvoeren | Skill | Herbruikbare gebundelde workflow |
| Commits naar main blokkeren | Hook | Harde regel, geen onderhandeling |
| Voorkeur voor functionele boven klasse-componenten | CLAUDE.md | Stijladvies dat Claude evalueert |
| Een Sanity-schema genereren | Skill | Meerstaps mogelijkheid met assets |
Als een regel altijd moet vuren, hoort het in een hook. Als het een stijlvoorkeur is die Claude kan evalueren tegen de context, hoort het in CLAUDE.md. Als het een meerstaps workflow is met gebundelde assets (templates, scripts, prompts), hoort het in een skill.
Regel 8: Kies correct tussen CLAUDE.md, hooks en skills — een hook in CLAUDE.md stoppen is de meest voorkomende verspilling van instructiebudget. Stel deterministische acties in met Claude Code hooks en verpak herbruikbare workflows als Claude skills. Je CLAUDE.md wordt korter, je guardrails worden steviger, en Claude vergeet de regels die ertoe doen minder snel.
Monorepo-patronen: Geneste CLAUDE.md, @imports en .claude/rules/
Kortweg: In een monorepo houd je de root-CLAUDE.md klein — alleen verwijzingen en gedeelde conventies. Schuif specifieke regels naar
apps/*/CLAUDE.mdzodat elke subboom afgebakende regels heeft. Gebruik @imports om modulaire regelbestanden te delen via.claude/rules/. Dit is progressive disclosure — Claude haalt elk onderdeel alleen op wanneer het relevant is.
Een typische CLAUDE.md-boomstructuur voor een monorepo:
.
├── CLAUDE.md # 30 regels — verwijst naar submappen en gedeelde regels
├── .claude/
│ └── rules/
│ ├── style.md
│ ├── testing.md
│ └── security.md
├── apps/
│ ├── web/
│ │ └── CLAUDE.md # Next.js-specifieke regels
│ └── api/
│ └── CLAUDE.md # Fastify-specifieke regels
└── packages/
└── shared/
└── CLAUDE.md # Regels voor library-auteursDe @import-syntaxis laat het rootbestand gedeelde regelstukken ophalen zonder ze te herhalen:
# Root CLAUDE.md
Dit is een Turborepo. Zie submap-CLAUDE.md voor app-specifieke regels.
@import .claude/rules/style.md
@import .claude/rules/testing.md
@import .claude/rules/security.md
## Toplevel-commando's
- `pnpm dev` draait alle apps parallel
- `pnpm test` voert het testscript van elke workspace uitDit is progressive disclosure in de praktijk. Het rootbestand is een verwijzer van 30 regels. Elk submap-CLAUDE.md voegt 50–80 regels gefocuste regels toe. De .claude/rules/-bestanden bevatten conventies die meerdere submappen kunnen ophalen. Niets wordt gedupliceerd, niets wordt gemist, en geen enkel bestand overschrijdt het instructiebudget.
De lazy-loading-regel van eerder is hier nog relevanter: wanneer Claude werkt aan apps/web/Button.tsx, ziet het het rootbestand plus apps/web/CLAUDE.md plus de @import-ed regelbestanden. Het ziet apps/api/CLAUDE.md niet. Dat is het hele punt — backend-conventies vervuilen de frontend-context niet, en je contextvenster blijft bruikbaar.
Regel 6: Gebruik @imports om het rootbestand onder 200 regels te houden. De Anthropic Best Practices for Claude Code-gids beschouwt dit als het standaard monorepo-patroon. Subagents erven ook de parent-CLAUDE.md-context, wat het waard is te weten als je workflows nest — zie context engineering voor hoe dat samenwerkt met subagent-ontwerp.
6 Redenen Waarom Claude Je Bestand Negeert (En De Fix Voor Elk)
Kortweg: Als Claude CLAUDE.md negeert, is het bijna altijd één van zes oorzaken: bestand te lang, vage formulering, ontbrekende "waarom," context compaction, conflicterend bovenliggend bestand, of verkeerde bestandsnaam. Elke oorzaak heeft een 60-seconden-fix. Test in een verse sessie na elke wijziging — dat is Regel 7.
1. Bestand te lang (>200 regels / >500 woorden)
Voer wc -l CLAUDE.md uit. Zit je over 200, trim dan agressief. Verplaats automatiseringsregels naar hooks. Verplaats workflows naar skills. Splits gedeelde stukken op in .claude/rules/ en haal ze op met @import. De meest voorkomende reden dat Claude "gestopt is met het volgen" van je regels, is dat het bestand in de loop van de tijd te lang is geworden en de naleving stilletjes is ingestort.
2. Vage formulering ("schrijf schone code")
Vervang elke ambitieuze regel door een specifieke, testbare. "Wees consistent" is onzichtbaar voor Claude. "Gebruik server components standaard; voeg 'use client' alleen toe voor formulieren of interactieve UI" is iets wat Claude daadwerkelijk kan toepassen.
3. Ontbrekende "waarom"
Regels zonder redenen generaliseren niet. Claude kan niet afleiden wanneer de regel gebogen kan worden, omdat het niet weet wat de regel beschermt. Elke niet-voor-de-hand-liggende regel krijgt een one-liner: "we gebruiken unknown en niet any omdat we vorig kwartaal drie runtime-crashes hadden van API-responses die als any getypeerd waren."
4. Context compaction heeft het weggegooid
Lange sessies triggeren compaction — Claude vat eerdere context samen om in het venster te passen, en CLAUDE.md-inhoud raakt soms samengevat tot niets. De fix: gebruik /clear na zware contextverwerkingsslagen, of herstart de sessie volledig. Dit is precies wat GitHub Issue #17530 keer op keer aan de oppervlakte brengt.
5. Conflicterend bovenliggend CLAUDE.md
Globaal zegt "gebruik 4 spaties." Projectroot zegt "gebruik 2 spaties." Submap zegt niets. Claude kiest één — soms de verkeerde. Controleer ~/.claude/CLAUDE.md en de projectroot op tegenstrijdigheden. Welke specifieker is, zou moeten winnen, maar alleen als je dat expliciet maakt.
6. Verkeerde bestandslocatie of hoofdlettergebruik in de bestandsnaam
Claude.md en CLAUDE.md zijn verschillende bestanden op Linux en macOS. claude.md en CLAUDE.md ook. Controleer of het pad exact ./CLAUDE.md is (allemaal hoofdletters), en controleer of Claude Code gestart is vanuit de map die het bestand bevat. GitHub Issue #668 staat vol gevallen waarin het bestand bestond maar Claude het niet kon zien vanwege een padprobleem.
Regel 7: Test in een verse sessie. Nadat je een CLAUDE.md hebt gewijzigd, open je een nieuwe sessie en vraag je Claude "vat de regels in CLAUDE.md samen." Als de samenvatting iets mist, doet het bestand zijn werk niet.
Je Eerste CLAUDE.md in 10 Minuten: Een Starterplan in 5 Stappen
Kortweg: Voer
/inituit om een concept te genereren, trim het tot 6–10 echte regels met redenen, voeg 3 commando's toe die Claude moet kennen, voeg 2 anti-patronen toe die je team is tegengekomen, en test dan in een verse sessie door Claude te vragen het bestand samen te vatten. Totale tijd: ongeveer 10 minuten. Dit 5-staps recept gebruiken we op dag 1 van elke nieuwe repo.
-
Voer
/inituit om een concept te genereren. Het/init-commando van Claude Code scant je repo en schrijft een starter-CLAUDE.md. Stuur niet op wat het schrijft./init-uitvoer is een startpunt, geen afgewerkt bestand — en eerlijk gezegd kan het meeste wat het genereert weg. -
Trim het tot 6–10 echte regels met redenen. Verwijder alles wat generiek is. Verwijder alles wat in de README staat. Behoud alleen regels die Claude niet uit de code zelf kan afleiden.
-
Voeg 3 commando's toe die Claude moet kennen. Build, test, lint. Vermeld het exacte commando en eventuele niet-voor-de-hand-liggende flags. Als je Vitest en niet Jest gebruikt, zeg dat dan.
-
Voeg 2 anti-patronen toe die dit team is tegengekomen. Echte. "Gebruik geen
anywant we hadden drie runtime-crashes" verslaat "gebruik TypeScript correct" elke keer. -
Open een verse sessie en verifieer. Vraag Claude "vat de regels in CLAUDE.md samen." Als het iets mist, is het bestand te lang, te vaag, of mist er een "waarom." Pas aan en herhaal.
Regel 5: Genereer niet alleen vanuit /init. /init is een startpunt, geen afgewerkt bestand. De 8 minuten die je besteedt aan trimmen zijn waar de waarde zit.
Veelgestelde Vragen
Wat is een CLAUDE.md-bestand?
Een CLAUDE.md-bestand is een markdown-bestand dat Claude Code als projectgeheugen leest aan het begin van elke sessie. Het vertelt Claude je conventies, commando's en anti-patronen, zodat het niet hoeft te raden. Het werkt op vier niveaus: globaal, projectroot, submap (lazy-loaded), en een persoonlijke CLAUDE.local.md die je gitgenegeerd houdt.
Hoe lang mag een CLAUDE.md-bestand zijn?
Onder 200 regels en onder 500 woorden aan dichte regels. Voorbij die drempels verslechtert de instructieopvolging van Claude — elke regel die je toevoegt maakt elke andere regel iets minder waarschijnlijk nageleefd te worden. Behandel het als een vast budget. Als je meer nodig hebt, splits het dan op in submap-CLAUDE.md-bestanden en gebruik @import voor gedeelde stukken.
Waar moet ik CLAUDE.md neerzetten?
De hoofdversie staat in je projectroot (./CLAUDE.md) en wordt gecommit. Voeg submap-CLAUDE.md-bestanden toe voor app-specifieke regels in monorepo's. Zet cross-project-voorkeuren in ~/.claude/CLAUDE.md. Gebruik CLAUDE.local.md voor persoonlijke overschrijvingen die je niet wilt committen — maar vergeet niet het handmatig te gitnegeeren.
Waarom negeert Claude mijn CLAUDE.md?
In 90% van de gevallen is het een van drie dingen: het bestand is te lang (meer dan 200 regels), de regels zijn vaag ("schrijf schone code"), of regels missen een "waarom" die Claude kan gebruiken om ze toe te passen. Voer wc -l CLAUDE.md uit, en controleer dan op specificiteit. Test wijzigingen in een verse sessie door Claude te vragen het bestand samen te vatten.
Moet ik CLAUDE.md of AGENTS.md gebruiken?
Als je team alleen Claude Code gebruikt, blijf dan bij CLAUDE.md. Als je twee of meer agent-CLI's gebruikt (Codex, Cursor, Sourcegraph), schakel dan over naar AGENTS.md en maak een symlink van CLAUDE.md ernaar: ln -s AGENTS.md CLAUDE.md. De meeste moderne agent-CLI's vallen terug op AGENTS.md, zodat één bestand alle tools voedt.
Moet ik /init uitvoeren om CLAUDE.md te genereren?
Ja — als concept. Nee — als afgewerkt bestand. /init scant je repo en maakt een starter, maar die is uitgebreid en generiek. Zowel Anthropic als HumanLayer raden aan na /init agressief te trimmen. De 8 minuten die je besteedt aan knippen en "waarom"-regels toevoegen zijn waar het bestand daadwerkelijk nuttig wordt.
Hoe werken CLAUDE.md-bestanden in een monorepo?
De root-CLAUDE.md blijft klein — alleen verwijzingen en gedeelde regels. Elke app krijgt zijn eigen apps/*/CLAUDE.md met afgebakende conventies. Submapbestanden laden lazy alleen wanneer Claude bestanden in die subboom opent, dus siblings blijven geïsoleerd. Gebruik @import .claude/rules/style.md om modulaire regelstukken te delen zonder ze te dupliceren over apps.
Wat is het verschil tussen CLAUDE.md, hooks en skills?
CLAUDE.md is adviserende context — Claude leest het en volgt het meestal. Hooks zijn deterministische acties die altijd vuren (formatteren, commits blokkeren). Skills zijn gebundelde mogelijkheden voor herbruikbare workflows met assets. Gebruik CLAUDE.md voor stijladvies, hooks voor harde regels, en skills voor meerstaps taken die je over meerdere projecten herhaalt.
Hoe Techsy Dit Aanpakt
Bij Techsy heeft elk Claude Code-project dat we opleveren een CLAUDE.md van onder de 150 regels en een AGENTS.md-symlink. We behandelen het bestand als code — we versiebeheren het, reviewen wijzigingen in pull requests, en testen opnieuw in verse sessies vóór de merge. Wil je hulp bij het koppelen van AI-agents aan je ontwikkelworkflow? Vraag een gratis consult aan.