Ueberblick: Zwei Memory-Systeme
Claude Code verwaltet dein Projekt-Wissen mit zwei komplementaeren Systemen:
| Aspekt | CLAUDE.md Files | Auto Memory |
|---|---|---|
| Wer schreibt | Du | Claude |
| Inhalt | Anweisungen, Regeln | Learnings, Patterns |
| Scope | Projekt, User, Org | Pro Worktree |
| Geladen in | Jede Session | Jede Session (erste 200 Zeilen) |
| Nutzung | Kodier-Standards, Workflows | Build-Befehle, Debug-Insights |
Lade-Reihenfolge (Exakte Sequenz)
Claude Code folgt dieser Reihenfolge beim Laden:
- Managed Policy (System-Level) — organisationsweit
- Project Root CLAUDE.md —
./CLAUDE.mdoder./.claude/CLAUDE.md - User CLAUDE.md —
~/.claude/CLAUDE.md - Rules Directory —
./.claude/rules/*.md(alle Dateien rekursiv) - Subdirectory CLAUDE.md — on-demand beim Lesen von Dateien
- Auto Memory —
~/.claude/projects/<project>/memory/MEMORY.md(erste 200 Zeilen)
Präzedenz: Spezifischere Orte schlagen allgemeinere auf.
- Path-Specific Rules schlagen normale Rules
- Project Rules schlagen User Rules
- Managed Policy kann NICHT ausgeschlossen werden
Scope-Levels: Orte & Prioritaeten
| Scope | Ort | Sichtbarkeit | Use Case | Prioritaet |
|---|---|---|---|---|
| Managed Policy | macOS: /Library/Application Support/ClaudeCode/CLAUDE.mdLinux: /etc/claude-code/CLAUDE.mdWindows: C:\Program Files\ClaudeCode\CLAUDE.md |
Alle Nutzer der Org | Compliance, Sicherheit, Org-Standards | 1 (hoechste) |
| Project Inst. | ./CLAUDE.md oder ./.claude/CLAUDE.md |
Team via Git | Architektur, Coding-Standards, Workflows | 2 |
| User Inst. | ~/.claude/CLAUDE.md |
Nur dieser User | Persoenliche Praeferenzen, Shortcuts | 3 |
| Rules Directory | ./.claude/rules/*.md |
Team via Git | Modulare Regeln, Path-Scoped Instructions | 2 (Project-Level) |
| User Rules | ~/.claude/rules/*.md |
Nur dieser User | Persoenliche Rules | zwischen 2 & 3 |
CLAUDE.md Datei-Formate
Basis-Format: Markdown mit optionalem Frontmatter
---
# Optional: YAML Frontmatter (fuer Path-Scoped Rules)
paths:
- "src/api/**/*.ts"
- "src/**/*.{ts,tsx}"
---
# Anweisungen
Dein Text hier. Strukturiert mit Markdown:
- Bullets
- Nummern
- **Fett**, `Code`
## Sections
Verwende Ueberschriften zur Gliederung.
Projekt-Level CLAUDE.md (Root)
# Mein Projekt — Anweisungen
## Build & Test
- Bauen: `npm run build`
- Tests: `npm test` vor Commit
- Type Check: `npm run type-check`
## Code-Standards
- 2 Spaces Einrueckung
- Imports nach External, Internal, Local sortiert
- Keine Barrel-Exports (außer index.ts)
## Architektur
- src/
- api/ — API-Handler
- components/ — React-Komponenten
- hooks/ — Custom Hooks
- utils/ — Utility-Funktionen
## Imports - Muster
- `@/` Alias für `src/`
- Relative Imports für lokale Module
- Absolute Imports für Dependencies
## Dokumentation
Siehe @README.md für Ueberblick.
Siehe @docs/architecture.md für tiefere Details.
Optimale Länge: < 200 Zeilen (Token-Effizienz & Adhärenz)
User-Level CLAUDE.md
# Meine persoenlichen Praeferenzen
## Coding Style
- Prefer const über let
- Line length max 100 chars
- Arrow functions statt function keyword
## Tools & Workflows
- Immer `git stash` bevor ich branch wechsle
- Commit-Messages: Imperative Form ("Add feature" nicht "Added feature")
- Prefer rebase über merge
## Debugging
- Nutze `node --inspect` für Node-Debugging
- Chrome DevTools für Frontend
Rules Directory: .claude/rules/
Zweck & Struktur
Rules organisieren grosse Anweisungsmengen in mehreren Dateien:
your-project/
├── .claude/
│ ├── CLAUDE.md # Main (< 200 Zeilen)
│ └── rules/
│ ├── code-style.md # Coding Standards
│ ├── testing.md # Test-Konventionen
│ ├── security.md # Security Requirements
│ ├── frontend/
│ │ ├── react.md # React-specific Rules
│ │ └── styling.md # CSS/Styling Rules
│ └── backend/
│ ├── api.md # API Design
│ └── database.md # DB Konventionen
Wichtig: Rules sind KEINE Skills. Sie werden in jede Session geladen (oder on-demand). Skills laden nur bei explizitem Aufruf.
Path-Specific Rules (Bedingte Anweisungen)
Rules können mit YAML Frontmatter auf Dateitypen oder Verzeichnisse beschraenkt werden:
---
paths:
- "src/api/**/*.ts"
- "src/components/**/*.tsx"
---
# API & React Component Rules
- Alle API-Endpoints brauchen Input-Validierung
- React Components nutzen Custom Hooks, nicht inline State
- PropTypes oder TypeScript Props definieren
Glob-Muster:
| Muster | Trifft zu |
|---|---|
**/*.ts |
Alle TypeScript-Dateien |
src/**/* |
Alles unter src/ |
*.md |
Markdown im Project Root |
src/components/*.tsx |
React Components im src/components/ |
src/**/*.{ts,tsx} |
TypeScript & TSX |
Mehrere Muster:
---
paths:
- "src/**/*.{ts,tsx}"
- "lib/**/*.ts"
- "tests/**/*.test.ts"
---
Lade-Verhalten von Path-Specific Rules
- Rules OHNE
pathsFeld: bei Session-Start geladen - Rules MIT
pathsFeld: on-demand, wenn Claude Dateien lesst die matchen - Triggert NICHT bei jeden Tool-Call — nur beim Lesen von Dateien
Symlinks in .claude/rules/
Unterst ützt Symlinks fuer gemeinsame Rules:
# Gemeinsame Rules linken
ln -s ~/shared-claude-rules .claude/rules/shared
ln -s ~/company-standards/security.md .claude/rules/security.md
Zirkulaere Symlinks werden erkannt und behandelt.
User-Level Rules
Persoenliche Rules fuer alle Projekte:
~/.claude/rules/
├── preferences.md # Persoenliche Praeferenzen
├── workflows.md # Lieblings-Workflows
└── ...
User-Level Rules werden geladen, bevor Project Rules geladen werden → Project Rules gewinnen bei Konflikten.
@import Syntax: Externe Dateien Einbinden
CLAUDE.md kann externe Dateien mit @path/to/file Syntax importieren:
# Setup
Siehe @README.md fuer ueberblick.
Verfuegbare npm Commands: @package.json
Git-Workflow: @docs/git-instructions.md
# Imports von ausserhalb
Meine lokalen Prefs: @~/.claude/my-project-prefs.md
Eigenschaften:
- Relative Pfade — relativ zur importierenden Datei, NICHT zum Working Directory
- Absolute Pfade — Home-Verzeichnis mit
~/ - Rekursion — Importierte Dateien können Dateien importieren (max 5 Tiefe)
- Approval Dialog — Beim ersten Mal zeigt Claude Code eine Approval-Liste
Beispiel: Persoenliche Prefs nicht einchecken:
# Individuelle Praeferenzen
Siehe @~/.claude/my-personal-prefs.md (lokal, nicht im Repo)
Auto Memory: Claude lernt selbst
Aktivierung
Auto Memory ist per Default AN. Zum Deaktivieren:
/memoryin einer Session oeffnen → Toggle ausschalten, ODER- In
.claude/settings.json:{ "autoMemoryEnabled": false } - Environment Variable:
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
Voraussetzung: Claude Code v2.1.59+
Speicherort
Auto Memory pro Projekt:
~/.claude/projects/<project>/memory/
├── MEMORY.md # Index (geladen in jede Session)
├── debugging.md # Debug-Patterns
├── api-conventions.md # API-Entscheidungen
└── ... # Topic-Dateien
<project> wird vom Git Repository abgeleitet. Alle Worktrees desselben Repos teilen eine Memory.
Custom Ort via Settings (user oder local):
{
"autoMemoryDirectory": "~/my-custom-memory-dir"
}
Kann NICHT in Project Settings gesetzt werden (Sicherheit).
MEMORY.md: Das Index-Konzept
- Erste 200 Zeilen: Geladen bei Session-Start (Index)
- Ueber Zeile 200: On-Demand lesbar, nicht auto-geladen
- Topic-Dateien:
debugging.md,patterns.mdetc. — nicht auto-geladen
Claude fuehrt Eintraege aus, um MEMORY.md unter 200 Zeilen zu halten:
# Memory Index
- [architecture-decisions.md](architecture-decisions.md) — Architektur-Entscheide
- [debugging-patterns.md](debugging-patterns.md) — Debug-Patterns
- [api-conventions.md](api-conventions.md) — API-Konventionen
## Quick Facts
- Build-Command: npm run build
- Test-Port: 3001
- ...
Audit & Editing
Auto Memory ist reiner Markdown. Editable jederzeit:
/memoryausfuehren → Auto Memory Folder oeffnen- Dateien editieren/loeschen
- MEMORY.md oder Topic-Dateien aendern
Was speichert Claude?
Claude speichert auf Basis von Lernwert:
- Build-Befehle (die du haeufig verwendest)
- Debug-Insights (Fehler die du gefunden hast)
- Code-Style-Praeferenzen
- Workflow-Gewohnheiten
- Architektur-Erkenntnisse
Claude speichert NICHT jeden Session. Es prueft: "Waere das in einer zukuenftigen Conversation nuetzlich?"
claudeMdExcludes: Dateien Ausschliessen
In grossen Monorepos werden CLAUDE.md Dateien von Parent-Teamfolders geladen. Ausschluss per claudeMdExcludes:
In .claude/settings.local.json:
{
"claudeMdExcludes": [
"**/monorepo/other-team/CLAUDE.md",
"**/other-team/.claude/rules/**",
"/absolute/path/CLAUDE.md"
]
}
Eigenschaften:
- Glob-Pattern gegen absolute Pfade
- Mehrere Patterns moglich (Arrays mergen ueber Layer)
- Managed Policy CLAUDE.md KANN NICHT ausgeschlossen werden
- Lokal per
.claude/settings.local.jsonsetzen
Projekt-Initialisierung: /init
/init analysiert dein Project automatisch und erstellt/verbessert CLAUDE.md:
claude /init
Was /init macht:
- Scannt Codebase (Build-Tools, Test-Befehle, etc.)
- Erkannt Architektur & Konventionen
- Erstellt oder verbessert CLAUDE.md
- (Optional mit
CLAUDE_CODE_NEW_INIT=true): Interactive Flow mit Subagent
Mit Interactive Mode:
CLAUDE_CODE_NEW_INIT=true claude /init
- Fragt welche Artifacts zu setzen: CLAUDE.md, Skills, Hooks
- Subagent exploriert Codebase
- Follow-up Fragen fuer Gaps
- Zeigt Proposal zur Review bevor Changes geschrieben werden
Effektive Anweisungen: Best Practices
Groesse: Token-Effizienz
- < 200 Zeilen CLAUDE.md — Konsumiert Token, bessere Adhärenz bei Kürzung
- Laengere Rules: In
.claude/rules/*.mdauslagern - Auto Memory: Kommt kostenlos (nur erste 200 Zeilen)
Struktur: Lesbar für Mensch & Claude
GUT:
## Code Style
- Indentation: 2 Spaces
- Imports: External → Internal → Local
- Max line width: 100 chars
## Common Commands
- Build: npm run build
- Test: npm test
- Deploy: npm run deploy:prod
SCHLECHT:
Mach Code-Formatting korrekt. Imports richtig sortiert.
Spezifitaet: Verifizierbar
GUT: "Use 2-space indentation, validate with npm run lint"
SCHLECHT: "Format code nicely"
GUT: "API handlers live in src/api/handlers/"
SCHLECHT: "Keep files organized"
Konflikt-Freiheit
Review periodisch:
./CLAUDE.mdvs./.claude/CLAUDE.md— darf nur EINE existieren- Rules mit widerspruchlichen Anweisungen
- User CLAUDE.md vs Project CLAUDE.md
Claude waehlt arbiträr wenn widerspruchlich.
Advanced: Zusatz-Verzeichnisse Laden
Mit --add-dir Flag kannst du externe Verzeichnisse oeffnen. CLAUDE.md von dort wird NUR geladen mit:
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config
Ohne diese Env-Var: --add-dir Verzeichnisse bekommen KEINE CLAUDE.md Lade-Prioritaet.
Integration mit anderen Features
String Substitutions (in CLAUDE.md Body nutzbar)
| Variable | Ergebnis |
|---|---|
$ARGUMENTS |
Alle uebergebenen Argumente |
$0, $1 |
Erstes, zweites Argument |
${CLAUDE_SESSION_ID} |
Aktuelle Session-ID |
${CLAUDE_SKILL_DIR} |
Skill-Verzeichnis (absolut) |
Dynamic Context Injection
Shell-Output wird VOR Claude injiziert:
## Aktueller Status
!`curl -s http://localhost:8000/health | jq .status`!
Das Kommando wird ausfuehrt, Output inline eingefuegt.
Fehlerbehebung: Haeufige Probleme
Claude folgt CLAUDE.md nicht
/memory→ CLAUDE.md gelistet?- Datei am richtigen Ort? (
./CLAUDE.mdoder./.claude/CLAUDE.md) - Pfad zu Rules richtig? (
*.mdDateien in./.claude/rules/) - Konflikt-Regeln? (zwei Dateien geben verschiedene Anweisung)
- Spezifitaet: "2 Spaces" besser als "Format nicely"
Debug-Trick: InstructionsLoaded Hook nutzen (loggt welche Dateien, wann, warum)
Auto Memory verschwindet nach /compact
Auto Memory ueberlebt /compact. Nach Compaction wird CLAUDE.md frisch von Disk gelesen & injiziert.
Falls eine Anweisung nach /compact fehlte: Sie war nur im Gespraech, nicht in CLAUDE.md geschrieben. Schreib sie in CLAUDE.md!
CLAUDE.md ist zu gross
- Verschieb Details in separate Dateien mit
@imports - Oder teile in
.claude/rules/*.mdauf - Ziel: Project CLAUDE.md < 200 Zeilen
Path-Specific Rules laden nicht
- YAML Frontmatter korrekt?
--- paths: - "src/api/**/*.ts" --- - Glob-Pattern stimmt?
- Claude liest aktuell Dateien die matchen?
Path-Rules laden on-demand, NICHT auto bei Session-Start.
Managed CLAUDE.md für grosse Organisationen
Deploy Organization-Wide CLAUDE.md
IT/DevOps kann eine zentrale Managed CLAUDE.md deployen:
- macOS:
/Library/Application Support/ClaudeCode/CLAUDE.md - Linux:
/etc/claude-code/CLAUDE.md - Windows:
C:\Program Files\ClaudeCode\CLAUDE.md
Via MDM, Group Policy, Ansible verteilen.
Managed CLAUDE.md vs Managed Settings
| Concern | Konfigurieren in |
|---|---|
| Code-Style, Quality Guidelines | Managed CLAUDE.md |
| Data Handling, Compliance | Managed CLAUDE.md |
| Tools/Commands blocken | Managed Settings (permissions.deny) |
| Sandbox erzwingen | Managed Settings (sandbox.enabled) |
| Auth, Org Lock | Managed Settings |
- Settings: Enforcement (Claude kann nicht umgehen)
- CLAUDE.md: Behavioral Guidance (Claude versucht zu folgen)
Managed CLAUDE.md kann NICHT ausgeschlossen werden.
Zusammenfassung: Workflow
- Projekt starten →
/initausfuehren - Gemeinsame Standards →
./.claude/CLAUDE.mdschreiben (< 200 Zeilen) - Grosse Regelsets →
./.claude/rules/*.mdsplitten - Persoenliche Prefs →
~/.claude/CLAUDE.md(Home-Level) - Externe Dateien →
@path/to/fileimportieren - Memory pruefen →
/memoryperiodisch reviewen - Auto Memory nutzen → Claude lernt deine Patterns
Zuletzt aktualisiert: 2026-03-21 | Basierend auf: Claude Code v2.1.59+ | Status: Reference Grade
