De fleste udviklere bruger Claude Code som en hurtigere måde at skrive kode på. De prompter, får et svar, accepterer eller retter, og gentager. Det er fint. Men forskellen mellem den brug og det fulde potentiale er som forskellen mellem at bruge git til commit og push versus at forstå rebase, worktrees og hooks. Denne guide dækker det dokumentationen gemmer tre lag nede.
.claude-mappen - dit projekts hukommelse
Claude Code læser automatisk en CLAUDE.md-fil fra projektets rod ved hver session. Det er det vigtigste konfigurationspunkt du har. Filen deles med teamet via git og bestemmer hvordan Claude opfører sig i netop dette projekt.
Men CLAUDE.md er kun toppen. Den fulde struktur ser sådan ud:
projekt-rod/
├── CLAUDE.md # Teamets delte instruktioner
├── CLAUDE.local.md # Dine personlige overrides (gitignored)
├── .mcp.json # MCP-servere delt med teamet
└── .claude/
├── settings.json # Tilladelser, hooks, miljøvariabler
├── settings.local.json # Personlige indstillinger (gitignored)
├── rules/
│ └── api-endpoints.md # Path-scopede regler med frontmatter
├── agents/
│ └── pr-review.md # Subagent-definitioner
└── skills/
└── deploy/
└── SKILL.md # Genbrugelig skill
Det hele merger i et hierarki med stigende prioritet: managed policy (enterprise), bruger-niveau (~/.claude/), projekt-niveau, lokale overrides, og til sidst CLI-flag.
Her er et realistisk CLAUDE.md-eksempel for et Next.js-projekt:
# Projekt: Dashboard Pro
## Stack
- Next.js 15 (App Router), TypeScript strict, Tailwind CSS 4
- Database: Drizzle ORM + PostgreSQL
- Auth: Better Auth v2
- Test: Vitest + Playwright
## Kodestil
- Brug `bun`, aldrig `npm` eller `yarn`
- Funktionelle komponenter, ingen class components
- Server Components som default, "use client" kun når nødvendigt
- Navngivning: camelCase til variabler, PascalCase til komponenter
- Imports: absolut path via @/ alias
## Workflow
1. Typetjek: `bun run typecheck`
2. Test: `bun run test`
3. Lint: `bun run lint`
4. Kør alle tre før PR
## Arkitektur
- API routes i app/api/ - brug altid route handlers, ikke pages
- Database queries kun via Drizzle - aldrig rå SQL
- Shared types i lib/types/ - én fil per domæne
- Miljøvariabler: valider via env.ts, brug aldrig process.env direkte
## Filer der IKKE må røres
- drizzle.config.ts (genereret)
- migrations/ (genereret af drizzle-kit)
## Gotchas
- Drizzle .where() kræver eq() wrapper - brug ALDRIG === i queries
- Better Auth session kræver await - glem ikke async i server components
- Tailwind 4 bruger CSS-baseret config, ikke tailwind.config.js
- app/layout.tsx: metadata export SKAL være i layout, ikke page
Gotchas-sektionen er den vigtigste del. Hver linje repræsenterer en faktisk fejl Claude har lavet. Mønsteret er: Claude laver en fejl, du retter den, og siger derefter "opdater CLAUDE.md så du ikke gentager dette." Claude er overraskende god til at skrive regler for sig selv ud fra fejl. Over tid kompoundes det - fejlene bliver sjældnere.
Til monorepos er rules/-mappen med path-scoping den nye standard. Hver rule-fil har frontmatter der angiver hvilke stier den gælder for:
---
description: Regler for API-endpoints
globs: ["app/api/**/*.ts", "lib/api/**/*.ts"]
---
Brug altid zod til request-validering.
Returner altid NextResponse.json() med explicit statuskode.
Log fejl via logger.error(), aldrig console.error().
Kommandoer de fleste overser
Claude Code har langt flere kommandoer end de fleste opdager. Her er de vigtigste:
| Kommando | Hvad den gør |
|---|---|
| /plan | Skifter til plan mode - Claude analyserer uden at røre filer |
| /goal | Sætter et verificerbart mål, Claude arbejder autonomt til det er nået |
| /focus | Skjuler tool calls, viser kun resultater |
| /batch | Opdeler store ændringer i parallelle worktrees |
| /teleport | Trækker en websession ind i terminalen |
| /voice | Taleinput - cirka tre gange hurtigere end at skrive |
| /loop | Kører en prompt gentagne gange på interval |
| /schedule | Planlægger opgaver der kører i baggrunden i skyen |
| /compact | Komprimerer kontekst intelligent med valgfrit hint |
| /context | Viser hvor kontekstvinduet bruges |
| /insights | Analyserer brugsmønstre og foreslår optimeringer |
| /permissions | Interaktiv dialog for tool-tilladelser |
| /branch | Forker sessionen til at teste risikable tilgange |
| /rewind | Spoler hele sessionen tilbage - kode, samtale eller begge |
Fire af dem fortjener ekstra opmærksomhed.
/goal implementerer det der er blevet kaldt "Ralph Loop" - opkaldt efter run-and-loop-mønsteret. Du angiver en verificerbar betingelse, og Claude arbejder i en løkke til betingelsen er opfyldt. En lille, hurtig valideringsmodel tjekker efter hvert skridt om målet er nået. Hvis nej, fortsætter hovedmodellen.
/goal alle tests i test/billing/ består og coverage er over 85 procent
Det afgørende er at betingelsen skal være mekanisk verificerbar. "Koden er pæn" drifter. "Alle 47 tests består og lint er ren" terminerer.
/plan aktiveres med Shift+Tab to gange eller claude --permission-mode plan. Claude skifter til read-only mode og analyserer uden at ændre filer. Workflowet er: plan mode til du har en strategi, gennemgå planen, skift til execute mode. For komplekse ændringer kan du starte en separat Claude-session til at reviewe planen som en uafhængig kritiker.
/batch interviewer dig om ændringen, dekomponerer den i delopgaver, og fordeler dem på parallelle worktrees. Hver agent tester sin del og opretter en PR. Det er bygget til migrationer og bulk-refactoring.
Kombinationen /goal + auto mode + /focus er nøglen til uovervågede kørsler. Skriv et præcist brief, sæt målet, og gå væk fra skærmen.
Skills og subagents
Skills er genbrugelige instruktionssæt under .claude/skills/<navn>/SKILL.md. De bruger progressiv indlæsning - kun beskrivelsen (cirka 100 tokens) indlæses ved sessionstart, resten først når skill'en aktiveres. Det holder konteksten slank.
---
description: Kører deploy-pipeline til staging med verifikation
allowed-tools: Bash, Read
---
# Deploy til staging
1. Kør `bun run build` og verificer at build lykkes
2. Kør `!kubectl config current-context` og bekræft staging-cluster
3. Kør `kubectl apply -k k8s/staging/`
4. Vent 60 sekunder
5. Kør `!curl -s https://staging.example.com/health` og verificer 200 OK
6. Rapporter status
Linjer med ! er inline shell-kommandoer der eksekveres og injicerer output direkte i konteksten.
Subagents er noget andet. De kører i deres eget kontekstvindue med egne tool-tilladelser og returnerer kun et resumé til hovedsessionen. Definitioner ligger i .claude/agents/*.md:
---
name: pr-review
description: Reviewer diffs mod projektets standarder
tools: Read, Grep, Glob, Bash
model: opus
---
# PR Review Agent
Læs diffen for den aktuelle branch mod main.
Tjek mod reglerne i CLAUDE.md og .claude/rules/.
## Flag efter alvorlighed
- KRITISK: Sikkerhedsproblemer, datalæk, manglende auth-tjek
- VIGTIGT: Manglende tests, brudte typer, forkert fejlhåndtering
- BEMÆRK: Stilafvigelser, manglende kommentarer
## Flag IKKE
- Personlige stilpræferencer
- Refactoring-forslag der ikke løser et problem
## Output
Afslut med en af tre verdikter: SHIP, FIX FIRST, eller REWORK.
Bemærk at tools er sat til read-only. Det er bevidst - en reviewer der kan ændre kode mister sin uafhængighed.
Agent Teams, lanceret i februar 2026 sammen med Opus 4.6, går et skridt videre. En Claude-session agerer som teamleder og spawner uafhængige agents der kommunikerer peer-to-peer via et mailbox-system. En frontend-agent kan fortælle en backend-agent om en API-ændring direkte, uden at gå igennem teamlederen.
Hooks - automatisering uden at spørge Claude
Hooks er shell-kommandoer, HTTP-endpoints eller LLM-prompts der kører automatisk på bestemte tidspunkter i Claude Codes livscyklus. Der er 27+ lifecycle events og fire handler-typer: command, HTTP, prompt og agent.
Konfiguration sker i settings.json. Her er tre praktiske eksempler:
Auto-formatering efter filredigeringer:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "bun run prettier --write \"$CLAUDE_FILE_PATH\""
}
]
}
]
}
}
Blokering af farlige kommandoer:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "echo \"$CLAUDE_TOOL_INPUT\" | grep -qE '(rm -rf /|DROP TABLE|force push)' && exit 2 || exit 0"
}
]
}
]
}
}
Slack-notifikation når Claude venter på input:
{
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "curl -X POST -H 'Content-Type: application/json' -d '{\"text\":\"Claude Code venter på input\"}' $SLACK_WEBHOOK_URL"
}
]
}
]
}
}
Exit-kode 2 i en PreToolUse-hook blokerer tool-kaldet. Exit-kode 0 tillader det. Det er en simpel men effektiv gate.
MCP-integrationer der faktisk gør en forskel
Model Context Protocol forbinder Claude Code med eksterne systemer. Der er over 500 servere tilgængelige, men den praktiske grænse ligger omkring 40-50 tools på tværs af alle MCP-servere - herefter begynder konteksten at lide.
De seks der giver mest værdi:
- GitHub - repos, PRs, issues, code search direkte fra terminalen
- Playwright - browserautomation og visuel verifikation via accessibility snapshots
- Context7 - live dokumentation for biblioteker, altid opdateret
- Sentry - fejlkontekst, stack traces og breadcrumbs direkte i sessionen
- Linear - tickets og status uden at forlade terminalen
- PostgreSQL - databaseforespørgsler direkte i Claude Code
Teamets MCP-opsætning deles via .mcp.json i projektroden:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "env:GITHUB_TOKEN" }
},
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
},
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"]
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": { "DATABASE_URL": "env:DATABASE_URL" }
}
}
}
Personlige MCP-servere der ikke skal deles med teamet konfigureres i ~/.claude.json.
Daglige workflows
Tre mønstre giver størst udbytte i praksis.
Det første er Plan-Review-Execute-løkken. Start i plan mode, lad Claude analysere kodebasen og foreslå en tilgang. Gennemgå planen, juster den. Skift til execute mode. For vigtige ændringer kan du starte en separat session til at reviewe planen - den har ingen forudindtagethed fra implementeringsovervejelser.
Det andet er parallelle sessioner med worktrees. claude --worktree giver hver session sit eget isolerede checkout. Tre til fem samtidige sessioner er det anbefalede antal. Writer/Reviewer-mønsteret udnytter dette: en session implementerer, en anden reviewer kun diffen i frisk kontekst. Boris Cherny fra Anthropic kalder det den største produktivitetsgevinst.
Det tredje er nattekørsler. Kombinationen af /goal med auto mode og routiner der kører i skyen betyder at Claude kan arbejde videre mens du sover. Natlig issue-triage, ugentlig dokumentationsgennemgang eller test-suite-vedligeholdelse er oplagte kandidater. Routines kører på Anthropics infrastruktur uafhængigt af din maskine.
Derudover er /batch til migrationer uvurderlig. Den dekomponerer en stor ændring - skift fra et ORM til et andet, opdatering af hundredvis af imports - og fordeler arbejdet på parallelle agents der hver arbejder i sin egen worktree.
Fra bruger til operatør
Det egentlige skift handler ikke om at lære flere kommandoer. Det handler om at gå fra at bruge Claude Code til at skrive kode, til at træne, konfigurere og operere Claude Code som en kollega.
Udviklere der investerer i CLAUDE.md, skills og subagents får kompounderende afkast. Hver korrektion bliver en permanent regel. Hvert workflow bliver en genbrugelig skill. Hvert review-mønster bliver en subagent der kan aktiveres med et enkelt ord. Strukturen i kodebasen bliver den afgørende faktor for hvor meget værdi du får ud af værktøjet.
Med routines, agent teams og plugin marketplace (over 1.100 plugins per maj 2026) bevæger Claude Code sig fra værktøj til platform. Forskellen mellem de udviklere der konfigurerer det og dem der bare prompter det bliver kun større. De der bygger infrastrukturen nu - CLAUDE.md, gotchas, skills, hooks - investerer i noget der bliver bedre for hver session. De der venter, starter fra nul hver gang.


