Loading blog posts...
Loading blog posts...
Laden...

Claude Code voelt geweldig aan gedurende 10 minuten, maar dan begint het ineens beperkingen te missen, verkeerde bestanden te herschrijven, of beslissingen die u eerder hebt genomen te "vergeten". Wat ik heb gezien is dat die terugval meestal niet komt doordat het model "slecht" is. Het ligt bijna altijd aan contextvenster-beheer plus een gebrek aan duurzame, repo-specifieke regels.
Hieronder staan de Claude Code best practices die teams in 2026 gebruiken, met kopieerbare patronen en een productie-klare CLAUDE.md die helpt om resultaten consistent te houden tussen sessies en ontwikkelaars.
Dit is de situatie: een van de meest voorkomende fouten is het plakken van een 2.000-regel build log en vragen "wat is er gebeurd?" Claude zal het proberen, zeker, maar u hebt eigenlijk het grootste deel van uw contextvenster besteed aan tekst die over vijf minuten niet meer uitmaakt.
bash ## Goede workflow: logs lokaal samenvatten, dan alleen de samenvatting + een paar kritieke regels plakken pytest -q 2>&1 | tail -n 80 # Of volledige logs naar een bestand vastleggen en alleen het relevante fragment plakken pytest -q 2>&1 | tee /tmp/test.log rg -n "FAIL|ERROR|Traceback" /tmp/test.log | head -n 40
Het contextvenster van het model is eindig, en het wordt meestal minder betrouwbaar naarmate het volloopt met chatgeschiedenis, geplakte bestanden en uitgebreide output. De praktische consequentie is vrij eenvoudig: behandel context als RAM. Houd alleen wat de agent nodig heeft om de volgende wijziging te bepalen, niet alles wat u zag tijdens het debuggen (hoe verleidelijk dat ook is).
Tip
[!TIP] Wanneer output lang is, plak: 1) het commando dat u uitvoerde, 2) de bovenste foutlijn, 3) 20 tot 80 regels rond de fout, 4) wat u al hebt geprobeerd.
Als de taak meerdere bestanden nodig heeft, dump ze niet allemaal vooraf. Geef eerst een kaart, trek dan alleen de bestanden binnen die Claude vraagt.
textRepo kaart: - apps/web: Next.js app, routes in app/ - packages/ui: gedeelde componenten - packages/api: tRPC router + zod schemas Doel: login redirect loop in apps/web repareren. Waarschijnlijk betrokken bestanden: apps/web/middleware.ts, apps/web/app/login/page.tsx Niet aanraken: packages/ui
Dit "repo kaart dan verzoek" patroon houdt het model bezig met architectuur en intentie, niet verdrinken in ruwe tekst. Het vermindert ook onbedoelde bewerkingen in niet-gerelateerde gebieden omdat de grens expliciet is. Voor officiële richtlijnen over deze beperking, zie Best Practices for Claude Code.
De meeste Claude Code fouten die ik zie in echte repos zien er zo uit: de agent probeert behulpzaam te zijn en breidt stilletjes de scope uit. De oplossing is om grenzen uitvoerbaar te maken, niet aspirationeel.
textTaak: Request-id propagatie toevoegen aan onze Node API. Scope: - `x-request-id` generatie toevoegen indien ontbrekend. - Propageren naar downstream fetch calls. Non-goals: - Geen logging wijzigingen. - Geen refactor van fetch wrapper. Acceptatiecriteria: - Unit test bewijst dat header wordt ingesteld en doorgestuurd. - Geen publieke API vorm wijzigingen. Vereiste commando's: - pnpm test --filter api
Dit werkt omdat het "doe het juiste" verandert in een checklist die Claude daadwerkelijk kan vervullen. Onder de motorkap vermindert u dubbelzinnigheid, wat betekent dat de agent minder geneigd is om extra wijzigingen te verzinnen om zich "klaar" te voelen.
Warning
[!WARNING] Als u "Niet aanraken" en "Non-goals" weglaat, "ruimt" Claude vaak code style of types op in bestanden, wat rommelige diffs creëert en review vertraagt.
Een gewoonte die ik sterk aanbeveel: vereist een plan voor bewerkingen wanneer de wijziging modulegrenzen overschrijdt.
textVoor het coderen: 1) Lijst bestanden die u gaat wijzigen. 2) Voor elk bestand, beschrijf de minimale bewerking. 3) Bevestig tests die u gaat uitvoeren. Wacht op goedkeuring, implementeer dan.
Die ene stap vangt veel "verkeerde laag" fouten vroeg op omdat u bestandskeuzes kunt vetoen voordat codewijzigingen landen.
Begin met een CLAUDE.md die kort, scanbaar en afdwingbaar is. Schrijf geen manifest. Schrijf de regels die dure fouten voorkomen - degene die u blijft herhalen in code review.
md## CLAUDE.md ## Hoe te werken in deze repo - Standaard branch: `main` - Package manager: `pnpm` (gebruik geen npm/yarn) - Node versie: 20.x (zie `.nvmrc`) - Formattering: voer `pnpm lint` uit voor finale output ## Repo layout - `apps/web`: Next.js 15 app router - `apps/api`: Node API (Fastify) - `packages/shared`: gedeelde types en utilities ## Wel doen - Houd wijzigingen minimaal en beperkt tot de taak. - Voeg tests toe of update ze voor gedragswijzigingen. - Verkies bestaande utilities boven nieuwe dependencies toevoegen. ## Niet doen - Hernoem geen publieke exports zonder goedkeuring. - Herformatteer geen niet-gerelateerde bestanden. - Wijzig geen database migraties tenzij expliciet gevraagd. ## Commando's - Installeren: `pnpm i` - Tests: `pnpm test` - Web tests: `pnpm test --filter web` - API tests: `pnpm test --filter api` - Lint: `pnpm lint` - Typecheck: `pnpm typecheck` ## Code style regels - TypeScript: geen `any` tenzij gerechtvaardigd in een comment. - React: verkies server componenten tenzij client state vereist is. - Error handling: return typed errors, geen stringly-typed error codes. ## PR checklist - Diff is minimaal en matcht scope. - Tests toegevoegd/geüpdatet en slagen. - Geen secrets in code of logs.
Dit is belangrijk omdat het "tribale kennis" verandert in duurzame instructies die blijven bestaan tussen chats en tussen ontwikkelaars. Claude volgt instructies hiërarchisch, dus een repo-niveau CLAUDE.md kan generieke defaults overschrijven terwijl het nog steeds past bij organisatie-brede standaarden (wat precies is wat u wilt).
Teams die CLAUDE.md kort houden krijgen meestal betere naleving. Lange docs worden genegeerd omdat ze moeilijk te scannen zijn en duur om in context te laden. Voor diepere voorbeelden en structuur ideeën, zie The Complete Guide to CLAUDE.md, Creating the Perfect CLAUDE.md for Claude Code, en de samengestelde patronen in Awesome Claude.md.
De snelste manier om te standaardiseren is een twee-laags setup: org defaults plus repo overrides. Houd org defaults klein en universeel, laat dan elke repo commando's, layouts en scherpe "niet doen" regels specificeren.
md# [ORG] Claude defaults (intern delen) ## Niet-onderhandelbaar - Houd diffs klein en reviewbaar. - Verander nooit niet-gerelateerde formattering. - Vermeld altijd commando's nodig om wijzigingen te valideren. ## Output regels - Geef bestandspaden voor bewerkingen. - Voeg test commando's toe om uit te voeren. - Bij onzekerheid, stel één verduidelijkende vraag, ga dan verder.
Dan in elke repo focust CLAUDE.md op wat uniek is: architectuur beperkingen, build commando's en verboden refactors. Dit voorkomt een veelvoorkomende faalwijze waar generieke "best practices" botsen met repo realiteit.
Een patroon dat ik leuk vind (omdat het praktisch is) is het coderen van "veilige refactor corridors" in plaats van refactors volledig verbieden.
md## Veilige refactors (toegestaan zonder extra goedkeuring) - Lokale variabelen hernoemen binnen één functie. - Helper functies extraheren binnen dezelfde module. - Gedupliceerde literals vervangen door bestaande constanten. ## Refactors die goedkeuring vereisen - Bestanden verplaatsen tussen packages - Publieke exports wijzigen - Nieuwe runtime dependencies introduceren
Dit maakt Claude sneller omdat het niet hoeft te raden welk niveau van wijziging acceptabel is. Review versnelt ook omdat de diff vorm matcht wat het team verwacht. Voor team rollouts en "skills" style presets, zie Claude Skills and CLAUDE.md: a practical 2026 guide for teams.
Claude Code werkt het beste wanneer het wijzigingen kan verifiëren met echte commando's. De "tools lijst" hieronder gaat minder over wat trendy is en meer over het strak houden van feedback loops (omdat strakke loops zijn wat agents eerlijk houden).
Claude Code voert taken uit binnen uw project en kan bestanden bewerken, tests uitvoeren en itereren. Het is belangrijk omdat het model de loop kan sluiten door aannames te valideren met commando's in plaats van gissen.
textClaude Code taak formaat om in chat te plakken: - Doel: [ÉÉN zin] - Scope: [2-5 bullets] - Non-goals: [2-5 bullets] - Bestanden: [expliciete lijst of "vraag eerst"] - Commando's: [exacte commando's] - Acceptatiecriteria: [testbare uitkomsten]
Wanneer teams dit formaat adopteren, verminderen ze "agent drift" waar het model extra lagen wijzigt om zich grondig te voelen. Het maakt PR review ook sneller omdat de diff overeenkomt met de gedeclareerde scope.
Docs: Claude Code Best Practices
GitHub Actions voert dezelfde test en lint commando's uit die Claude lokaal wordt verteld uit te voeren. Het is belangrijk omdat het "werkt op mijn machine" voorkomt en de agent dwingt om de echte gates van de repo te respecteren.
yaml#.github/workflows/ci.yml name: ci on: [pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: 9 - uses: actions/setup-node@v4 with: node-version-file: .nvmrc cache: pnpm - run: pnpm i --frozen-lockfile - run: pnpm lint - run: pnpm typecheck - run: pnpm test
Sla het saaie deel niet over: spiegel CLAUDE.md commando's exact. Als CLAUDE.md zegt pnpm typecheck maar CI voert iets anders uit, zal Claude "lokaal slagen" en falen in CI, en u verspilt tijd zonder goede reden.
Pre-commit hooks stoppen onbedoelde formattering explosies en ontbrekende lint fixes. Het is belangrijk omdat Claude correcte logica kan genereren maar nog steeds een formattering of import regel missen die uw repo afdwingt (het gebeurt).
json// package.json { "lint-staged": { "*.{ts,tsx,js,jsx}": [ "eslint --fix", "prettier -w" ], "*.{md,json,yml,yaml}": [ "prettier -w" ] } }
Dit vermindert review ruis en beschermt de "minimale diff" regel. Het maakt Claude's output ook voorspelbaarder omdat de finale diff vorm mechanisch wordt afgedwongen.
Ripgrep (rg) vindt referenties zonder hele bestanden in de chat te laden. Het is belangrijk omdat u "waar wordt dit gebruikt?" kunt beantwoorden met 10 regels output in plaats van 500.
bash## Vind waar een header wordt ingesteld of doorgestuurd rg -n "x-request-id|request[-_]?id" apps packages # Vind de exacte handler voor een route rg -n "GET\\s+/login|/login" apps/web
De consequentie is minder "context dumps." Claude krijgt gerichte snippets, dus het is minder waarschijnlijk dat het brede bewerkingen maakt.
Soms is de beste praktijk het kiezen van een ander tool voor de taak.
| Tool | Waar het uitblinkt | Trade-offs | Beste voor |
|---|---|---|---|
| Claude Code | Multi-stap repo wijzigingen met tests | Heeft strikte scope nodig om drift te voorkomen | Refactors, feature slices |
| GitHub Copilot | Inline completion en snelle bewerkingen | Minder "project geheugen" tenzij begeleid | Kleine bewerkingen, boilerplate |
| Cursor | IDE-first agent workflows | Makkelijk om over-bewerken zonder regels | UI werk, snelle iteratie |
| ChatGPT (web/app) | Brede redenering en uitleg | Moeilijker om repo commando's uit te voeren | Architectuur discussie |
Als de taak "leg deze fout uit" of "ontwerp een interface" is, is een chat-only tool vaak genoeg. Als de taak "wijzig code en bewijs dat het slaagt" is, is Claude Code plus afgedwongen commando's meestal het veiligere pad.

Wanneer Claude begint te oscilleren of te veel wijzigt, schakel ik over naar "diff discipline" prompts. Ze zijn eenvoudig, maar ze veranderen gedrag snel.
Gebruik dit wanneer het model blijft refactoren van niet-gerelateerde code.
textMaak alleen wijzigingen die vereist zijn om de acceptatiecriteria te vervullen. Als u een bestand aanraakt, rechtvaardig waarom het moet wijzigen. Verkies code toevoegen boven code verplaatsen. Return een bestand-voor-bestand patch plan voor bewerken.
Gebruik dit wanneer het model blijft vragen om meer context.
textNeem aan dat ontbrekende details onbekend zijn. Stel maximaal 2 verduidelijkende vragen. Als nog steeds geblokkeerd, stel 2 opties voor met trade-offs en kies er een om te implementeren.
Gebruik dit wanneer tests traag zijn en Claude probeert ze over te slaan.
textU moet eerst de snelste relevante test subset uitvoeren. Als het slaagt, voer de volledige suite uit. Rapporteer de exacte commando's en samengevatte resultaten.
Deze prompts werken omdat ze expliciet optimaliseren voor begrensde wijzigingen en verificatie. Zonder dat heeft een agent de neiging om te optimaliseren voor "volledigheid," wat vaak uitmondt in scope creep.
Voor meer community patronen, zie de discussie thread: What are your best practices for Claude Code in early 2026?
Het doel is niet "meer AI." Het is minder review cycli en minder regressies van agentische bewerkingen.
| Metriek om te volgen | Doel | Hoe te meten | Wat het u vertelt |
|---|---|---|---|
| PR review rondes | 1-2 rondes | GitHub PR tijdlijn | Scope helderheid en diff kwaliteit |
| CI failure rate op AI PRs | < 10% | Workflow runs getagd door auteur | Of CLAUDE.md commando's matchen CI |
| Gemiddelde diff grootte | < 300 regels | GitHub diff stats | Of "minimale diff" regels blijven plakken |
| Time-to-merge | 1 dag mediaan | PR geopend tot gemerged | End-to-end doorvoer |
Enkele bekende engineering organisaties hebben de waarde van strakke loops en automatisering getoond. Netflix rapporteerde het verkorten van deployment tijd van uren naar minuten met Spinnaker-style automatisering, een verschuiving die kleine, verifieerbare wijzigingen de norm maakte. Stripe heeft besproken hoe ontwikkelaar snelheid hoog houden door sterke interne tooling en snelle CI feedback loops. Shopify heeft gedeeld dat het verminderen van CI tijd en het verbeteren van build betrouwbaarheid direct ontwikkelaar doorvoer verbetert en wijzigingsrisico verlaagt.
Die voorbeelden zijn geen "Claude metrieken," maar ze mappen naar hetzelfde principe: hoe sneller de feedback loop, hoe kleiner en veiliger de wijzigingenset.
Als uw team ook de web stack moderniseert, geldt dezelfde "kleine diffs, snelle verificatie" filosofie ook voor frameworks. Zie Next.js 15: The Complete Guide to React's Most Powerful Framework voor patronen die wijzigingen reviewbaar houden in App Router codebases.
Begin hier (uw eerste stap)
Voeg een CLAUDE.md toe met alleen: commando's, repo layout, 5 "Wel doen" regels, 5 "Niet doen" regels.
Snelle winsten (directe impact)
Scope, Non-goals, en Acceptatiecriteria bevat in het eerste bericht.Diepgaand (voor degenen die meer willen)
CLAUDE.md, dwing het dan af in PR review gedurende 2 weken.CLAUDE.md om te matchen met de echte CI commando's.CLAUDE.md voorbeelden en templates.Claude Code in 2026 gaat minder over slimme prompts en meer over operationele discipline: houd context klein, stel harde grenzen en maak validatie commando's niet-optioneel. Naar mijn ervaring is een onderhouden CLAUDE.md de hoogste-ROI wijziging omdat het "hoe we hier werken" verandert in duurzame, scanbare regels die overleven tussen sessies. Teams die het contextvenster behandelen als een schaarse resource krijgen meer correcte diffs, minder CI verrassingen en snellere merges.