Vårt Claude Code-oppsett
Hvilke filer ligger hvor. Hva hookene gjør. Hva slash-kommandoene heter. Hva vi har lært om å ikke bygge for mye.
Boris Cherny laget Claude Code. På Threads i januar skrev han noe overraskende:
“My setup might be surprisingly vanilla! Claude Code works great out of the box, so I personally don’t customize it much. […] There is no one correct way to use Claude Code: we intentionally build it in a way that you can use it, customize it, and hack it however you like.” — Boris Cherny, Threads, 2026-01-02
Det er en advarsel og en invitasjon i samme setning.
Advarselen: hver linje du legger til konfigurasjonen koster noe — tokens i hver sesjon, vedlikehold over tid. Du kan absolutt overkonfigurere Claude Code. Vi har gjort det. Vi har trimmet ned igjen.
Invitasjonen: det er ikke én riktig måte. Dette er måten vi gjør det på. Stjel det som passer. La resten ligge.
Det minimale oppsettet — det Anthropic anbefaler
Begynn her. Ikke gå lenger før dette gir mening.
~/.claude/CLAUDE.md— dine personlige preferanser, gjelder for alle prosjekter../CLAUDE.mdi hvert prosjekt — kontekst som er spesifikk for det prosjektet.~/.claude/settings.json— én eller to hooks, det du faktisk trenger.- Slash-kommandoer i
~/.claude/commands/for ting du gjør oftere enn én gang om dagen.
Det er hele kjernen. Alt annet er pynt.
Filene — hvor de bor og hva de gjør
Claude leser fra flere steder samtidig. Hierarkiet er verdt å forstå.
| Plassering | Hva det er | Hvem ser den |
|---|---|---|
/Library/Application Support/ClaudeCode/CLAUDE.md | bedrifts-policy | hele organisasjonen |
~/.claude/CLAUDE.md | dine personlige regler | bare deg, alle prosjekter |
./CLAUDE.md eller ./.claude/CLAUDE.md | prosjektregler | alle som klona repoet |
./CLAUDE.local.md | dine personlige regler i akkurat dette prosjektet | bare deg, ikke i Git |
Det øverste vinner ved konflikt. I praksis bruker vi de to nederste mest.
CLAUDE.md — slik skriver vi den
Anthropic er direkte om hva CLAUDE.md er, og hva den ikke er:
“Treat CLAUDE.md as the place you write down what you’d otherwise re-explain. Add to it when:
- Claude makes the same mistake a second time
- A code review catches something Claude should have known about this codebase
- You type the same correction or clarification into chat that you typed last session
- A new teammate would need the same context to be productive” — Anthropic, How Claude remembers your project
Boris formulerer det samme prinsippet enklere:
“Anytime we see Claude do something incorrectly we add it to the CLAUDE.md, so Claude knows not to do it next time.” — Boris Cherny
Det er hele læringssløyfa. CLAUDE.md vokser ikke fordi du planlegger den. Den vokser fordi du tar imot rettelser og fester dem skriftlig.
Et viktig forbehold fra Anthropic:
“Size: target under 200 lines per CLAUDE.md file. Longer files consume more context and reduce adherence.” — Anthropic
200 linjer er tommelfingerregelen for øvre grense. Når en del av CLAUDE.md begynner å bli en prosedyre — flere trinn, en sjekkliste — så er det tid for å flytte den ut i en skill (mer om det nedenfor).
Hooks — det deterministiske laget
Dette er det viktigste skillet å forstå, og det er forskjellen mellom et godt og et frustrerende oppsett.
CLAUDE.md er rådgivende. Hooks er deterministisk. Anthropic skriver:
“Hooks are user-defined shell commands that execute at specific points in Claude Code’s lifecycle. They provide deterministic control over Claude Code’s behavior, ensuring certain actions always happen rather than relying on the LLM to choose to run them.” — Anthropic, Automate workflows with hooks
Hvis du skriver «ALDRI rør disse filene» i CLAUDE.md og forventer at det holder — du blir skuffet. Skriv en PreToolUse-hook hvis det må holdes.
Vi bruker tre hooks i hverdagen.
PreToolUse — sandbox-vakta
Vi har en bash-fil som leser Claudes tool-input før hver Write, Edit eller NotebookEdit. Den sjekker at fila som skal skrives ligger under ~/PROJECTS/ eller ~/.claude/. Hvis ikke, returnerer den exit-kode 2, og Claude får et tydelig signal om at skrivingen er blokkert.
39 linjer bash. Sparte oss for utallige feilskrivinger.
SessionStart — kontekst inn fra dag én
Når Claude Code starter en sesjon, kjører vi et kort lite skript som leser det aktive prosjektets PWD og velger en passende persona. «Auto-detected persona for this session: developer» eller writer eller default. Det er én linje kontekst, og det er nok til at modellen treffer riktig register fra første prompt.
Stop — påminnelse om læringssløyfa
Når en agent-tur avsluttes, viser hooken en kort påminnelse om å kjøre /lessons hvis noe nytt kom opp i sesjonen. Det er det som gjør CLAUDE.md voksende — uten påminnelsen ville vi glemt å sette inn rettelsene.
Slash-kommandoer — alt du gjør oftere enn én gang om dagen
Anthropic kalte dem custom commands i en periode, og slo dem nylig sammen med skills:
“Custom commands have been merged into skills. A file at
.claude/commands/deploy.mdand a skill at.claude/skills/deploy/SKILL.mdboth create/deployand work the same way.” — Anthropic
Vi har ti kommandoer i daglig bruk. Her er de:
/check-memory— siste prosjektkontekst fra claude-mem/check-todo— dagens og forfalte oppgaver i Todoist/what-next— neste prioritetsoppgave/log— logger fullført arbeid til Todoist/wrap-up— rituell sesjons-slutt/lessons— fanger friksjonen fra dagens sesjon/sources— logger kilder brukt i sesjonen/weekly— ukentlig oppsummering/monthly— månedlig utviklerrapport/persona— bytter aktiv persona
Hver er en .md-fil med en kort instruks Claude utfører. De er bygd av friksjon — hver gang vi merket vi gjorde det samme tre dager på rad, ble det en slash-kommando.
Skills — det som er for mye for CLAUDE.md
Skills er der prosedyrer går. Anthropic forklarer skillet:
“Create a skill when you keep pasting the same instructions, checklist, or multi-step procedure into chat, or when a section of CLAUDE.md has grown into a procedure rather than a fact. Unlike CLAUDE.md content, a skill’s body loads only when it’s used, so long reference material costs almost nothing until you need it.” — Anthropic
Det er den kritiske forskjellen: CLAUDE.md laster hver sesjon. Skills laster bare når de brukes. Lange referansematerialer skal være skills, ikke CLAUDE.md-linjer.
Vi har en skill som heter flowing-norwegian med konkrete norske-versus-engelske eksempler — den kjøres når noe skal skrives ut på norsk. Den ville lagt 500 ekstra linjer inn i hver eneste sesjon hvis den lå i CLAUDE.md. I Flytende norsk fra Claude går vi dypere på akkurat den.
MCP-servere — koble Claude til verktøyene dine
“Claude Code can connect to hundreds of external tools and data sources through the Model Context Protocol (MCP), an open source standard for AI-tool integrations. […] Connect a server when you find yourself copying data into chat from another tool, like an issue tracker or a monitoring dashboard.” — Anthropic, Connect Claude Code to tools via MCP
Testen er klar: koble til en MCP-server når du stadig kopierer fra et eksternt verktøy inn i Claude. Ikke fordi det er kult.
Vi har akkurat én lokal MCP-server: Todoist. Den lar Claude lese og skrive oppgaver direkte. Resten av integrasjonene våre — Gmail, Google Drive, Cloudflare, open-design, git — kobles via OAuth gjennom Anthropics directory, og dukker opp som mcp__-prefiksede tools.
En advarsel rett fra Anthropic:
“Verify you trust each server before connecting it. Servers that fetch external content can expose you to prompt injection risk.” — Anthropic
Ikke koble til alt du finner. Hver server legger til tools som spiser kontekst-vinduet i hver sesjon. Velg per behov.
Persona-systemet
Vi har fem personaer i ~/.claude/personas/: default, developer, writer, gamer, pluss en privat. Hver er en kort fil med stemmebrytere og fokus. SessionStart-hooken velger basert på hvor terminalen er åpnet.
Når PWD er i et skrive-prosjekt, lastes writer. Når PWD er i et kode-prosjekt, lastes developer. Det er null arbeid for oss, og Claude treffer riktig modus fra første sekund.
Verifisering — Boris-prinsippet
Den ene tingen som gjør størst forskjell, ifølge Boris:
“Probably the most important thing to get great results out of Claude Code — give Claude a way to verify its work. If Claude has that feedback loop, it will 2-3x the quality of the final result.” — Boris Cherny
I praksis: sørg for at det finnes en kommando Claude kan kjøre for å sjekke at arbeidet er godt. Tester for kode. Lint for stil. Et lite skript som kjører før hver commit. Verifisering er det som tar Claude fra «det ser ut som det funker» til «det funker faktisk».
Boris gjentar det med enda mer trykk i en senere kommentar:
“Give Claude a way to verify its work. This has always been a way to 2-3x what you get out of Claude, and with 4.7 it’s more important than ever.” — Boris Cherny
Dette gjelder også for tekstarbeid. En stemme.md med tydelige forbudte fraser er en verifiserings-mekanisme. Claude kan kjøre den selv som sjekkliste etter hver seksjon.
Fallgruvene vi har snublet i
- Overkonfigurasjon. Vi har hatt CLAUDE.md på 600 linjer. Den ble dårligere, ikke bedre. Trimmet til 200.
- Hooks som blokkerte arbeid. En sandbox-guard for streng. En auto-format som krasjet. Test hooks som kode.
- MCP-rot. 10 servere koblet til betyr 100+ ekstra tool-definisjoner i kontekst hver sesjon. Vi reduserte til tre aktive.
- Persona-bloat. Tidlig hadde vi 500-linjes personaer. Skar dem ned. Mindre er klarere.
- Maskinoversatte regler. Klippe-og-lim fra engelske guider gir engelsk-formet norsk i CLAUDE.md. Skriv reglene dine på det språket du faktisk vil ha utdata på.
Slik bruker du dette i praksis
- Begynn med det minste oppsettet. Bare
~/.claude/CLAUDE.mdmed fem linjer som er sant for deg. - Legg til ett
./CLAUDE.mdper prosjekt etter hvert som du starter dem. Korte. - Når du har rettet Claude på samme måte tre ganger i samme uke — skriv det inn i passende CLAUDE.md.
- Når en seksjon i CLAUDE.md blir en prosedyre med flere trinn — flytt den til en skill.
- Legg på én hook av gangen. Test den. Vent en uke. Legg på neste hvis du fortsatt vil ha den.
- Koble til MCP-servere bare når du faktisk kopierer fra et verktøy mer enn én gang om dagen.
- Sett opp en
/wrap-upeller tilsvarende rituell sesjons-slutt. Det er der læringen festes.
Trenger du å se GitHub-grunnlaget først, så er det der versjonshistorikken til alt dette bor.
Det beste Claude Code-oppsettet er det minste som ennå løser problemene dine.