Die CLAUDE.md ist eine reine Markdown-Datei, die Claude Code automatisch liest, sobald eine Session startet. Der Inhalt landet im Systemkontext — Claude weiß also vor dem ersten Prompt schon, wer du bist, womit du arbeitest und welche Regeln gelten.
Es gibt zwei Speicherorte:
| Ebene | Pfad | Zweck |
|---|---|---|
| User | ~/.claude/CLAUDE.md | Globale Präferenzen — gelten in jedem Projekt |
| Project | ./CLAUDE.md im Projekt-Root | Projektspezifische Regeln — gelten nur hier |
Beide werden geladen. Project überschreibt nicht — es ergänzt User.
Die User-Memory beantwortet drei Kernfragen:
Die Project-Memory beantwortet die Fragen, die für diese Codebase gelten:
any in TypeScript").env)/docs/ reicht)Hypothetisches Beispiel für eine Freelance-Entwicklerin namens Mira:
# User Memory — Mira Lindqvist
## Wer ich bin
Freelance Fullstack-Entwicklerin, Stockholm.
Sprache: Deutsch oder Englisch je nach Kunde — Default Englisch.
Schwerpunkt: Next.js, TypeScript, Supabase.
## Tooling
- Editor: Cursor / VS Code
- Terminal: Ghostty + zsh
- Package Manager: pnpm (immer, nie npm)
- Git: Conventional Commits
## Code-Style (global)
- TypeScript strict, **kein** `any`
- Functional Components, keine Class Components
- Tailwind statt CSS-Modules
- Lieber drei kleine Files als ein 500-Zeilen-Monster
## Wie ich arbeite
- Morgens 9–13 Uhr Deep Work, keine Meetings
- Tasks lieber in 30-Minuten-Häppchen
- Lieber **kleiner PR** als großer Drop
## Wie du mit mir reden sollst
- Kurze Antworten, keine Floskeln
- Bei Architektur-Fragen: **zwei** Optionen, nicht fünf
- Bei Unsicherheit lieber **nachfragen** als raten
- Push back, wenn du eine Idee schlecht findest
- Keine Emojis im Code, in Antworten okay
Hypothetisches Beispiel für ein SaaS-Projekt namens „TaskFlow":
# Project Memory — TaskFlow
## Projekt
TaskFlow ist eine B2B-SaaS für Projektmanagement in kleinen Agenturen.
Stack: Next.js 15 (App Router), TypeScript, Supabase, Vercel.
## Architektur
- `src/app/` — Routes (App Router)
- `src/components/` — UI Components (shadcn/ui Basis)
- `src/lib/` — Business Logic, Supabase-Client, Utils
- `src/server/` — Server Actions, niemals direkt im Client importieren
- `tests/` — Vitest + Playwright
## Commands
| Aktion | Command |
|---|---|
| Dev-Server | `pnpm dev` |
| Tests | `pnpm test` |
| E2E | `pnpm test:e2e` |
| Lint | `pnpm lint` |
| Build | `pnpm build` |
| DB Migration | `pnpm db:migrate` |
## Konventionen
- Komponenten in PascalCase, Files in kebab-case
- Server Actions immer mit `"use server"` als erste Zeile
- Supabase-Queries **immer** typed (`Database` Generic)
- Kein `fetch()` im Client — nutze Server Components oder Server Actions
- Tailwind-Klassen via `cn()` aus `lib/utils.ts`
## Verbotene Patterns
- ❌ `useState` für Server-Daten — nutze `useQuery` oder Server Components
- ❌ `console.log` in Production-Code — `logger.info()`
- ❌ Direkte DB-Calls aus Client-Components
- ❌ Inline-Styles, immer Tailwind
## Wichtige Files
- `src/lib/supabase/types.ts` — Generierte DB-Types
- `src/middleware.ts` — Auth-Gate
- `docs/architecture.md` — High-Level Architektur
## Test-Strategie
Unit-Tests für `lib/`, Integration für Server Actions, E2E nur für kritische Flows (Signup, Checkout, Onboarding).
Die CLAUDE.md ist kein Wiki. Sie steht in jedem Prompt mit drin — also kostet jedes Wort Tokens. Faustregel: unter 200 Zeilen pro Datei. Was länger ist, gehört in /docs/ und wird nur verlinkt.
❌ „Schreib sauberen Code" ✅ „Funktionen unter 30 Zeilen, max. 3 Argumente, immer Return-Type."
❌ „Antworte freundlich" ✅ „Default: 3 Sätze. Bei Code: ohne Vorrede. Bei Architektur: zwei Optionen."
Project-CLAUDE.md gehört ins Git. Sie ist Teil der Codebase und sollte mit dem Team gepflegt werden. User-CLAUDE.md bleibt lokal — nicht committen, nicht teilen.
Wenn du dich beim Schreiben dabei erwischst, persönliche Vorlieben in die Project-Memory zu schreiben — stopp. Das gehört in die User-Memory. Andersrum: projektspezifische Commands haben nichts in der User-Memory zu suchen.
Die CLAUDE.md ist lebendig. Wenn Claude dauernd denselben Fehler macht oder die gleiche Frage stellt → das ist ein Memory-Update. Direkt eintragen, nicht beim nächsten Mal wieder erklären.
| Frage | Antwort |
|---|---|
| Wo liegt die User-CLAUDE.md? | ~/.claude/CLAUDE.md |
| Wo liegt die Project-CLAUDE.md? | ./CLAUDE.md im Projekt-Root |
| Wird beides gleichzeitig geladen? | Ja — Project ergänzt User |
| Wie lang darf sie sein? | Möglichst unter 200 Zeilen |
| Soll ich sie committen? | Project: ja. User: nein. |
| Was tun, wenn Claude was vergisst? | Eintrag ergänzen, Session neu starten |
Kein Spam, jederzeit abbestellbar
