Hierarchie & Regeln
Wissen
Die 4-Ebenen-Hierarchie im Detail
Claude Code lädt CLAUDE.md-Dateien aus vier verschiedenen Orten. Die Grundregel ist einfach: Spezifischer gewinnt. Wenn eine globale Regel sagt "Nutze Tabs" und eine Projekt-Regel sagt "Nutze Spaces", dann gelten Spaces -- genau wie bei CSS-Spezifität.
Klicke auf eine Ebene
Regeln nur für dieses Verzeichnis und Unterverzeichnisse. Höchste Spezifität.
projekt/src/components/.claude/CLAUDE.md
Alle Komponenten hier nutzen CSS Modules statt Tailwind
Über die Claude-Config definierte Projektregeln. Werden vor Projekt-CLAUDE.md geladen.
.claude/settings.json → allowedTools
Erlaube nur bestimmte Tools für dieses Projekt
Projektspezifische Regeln. Gelten für alle, die an diesem Projekt arbeiten.
projekt/CLAUDE.md
Nutze TypeScript strict mode, teste mit Vitest
Persönliche Regeln, gelten für alle Projekte. Niedrigste Spezifität.
~/.claude/CLAUDE.md
Antworte immer auf Deutsch, nutze Conventional Commits
Ebene 1: Global (~/.claude/CLAUDE.md)
Diese Datei gilt für alle deine Projekte. Hier gehören Dinge rein, die du immer willst -- unabhängig davon, an welchem Projekt du arbeitest.
# Globale Regeln
- Antworte auf Deutsch, wenn ich Deutsch schreibe
- Nutze immer TypeScript statt JavaScript
- Bevorzuge funktionale Programmierung
- Commit-Messages auf Englisch im Conventional-Commits-Format
Ebene 2: Projekt-Root (./CLAUDE.md)
Die wichtigste Ebene. Diese Datei liegt im Root deines Repositories und wird über Git mit dem Team geteilt. Hier stehen projektspezifische Regeln, die für alle Teammitglieder gelten.
# Projekt: Meine App
## Befehle
npm run dev # Entwicklungsserver
npm run test # Tests mit Vitest
npm run lint # ESLint
## Architektur
- App Router mit [locale] Segment
- Zustand für State Management
- Tailwind CSS 4 für Styling
iTeam-Konvention
Die Projekt-Root-CLAUDE.md ist ideal für Team-Regeln: Build-Befehle, Branch-Naming, PR-Konventionen und Architektur-Entscheidungen. Jeder im Team profitiert davon, wenn diese Datei gut gepflegt ist.
Ebene 3: Projekt-Config (./.claude/CLAUDE.md)
Diese Datei liegt im .claude/-Verzeichnis deines Projekts, das normalerweise in .gitignore steht. Sie ist user-spezifisch -- hier kannst du persönliche Präferenzen festlegen, die das Team nicht betreffen.
# Meine persönlichen Regeln für dieses Projekt
- Ich bevorzuge ausführliche Erklärungen in Kommentaren
- Zeige mir immer die Diffs vor einem Commit
- Nutze Vim-Keybindings in Code-Beispielen
Ebene 4: Unterverzeichnis (subdir/CLAUDE.md)
Claude lädt diese Dateien on-demand, wenn es in einem Unterverzeichnis arbeitet. Perfekt für Monorepos oder Projekte mit unterschiedlichen Bereichen.
# src/api/CLAUDE.md
- Alle API-Routen nutzen Zod für Validierung
- Fehler-Responses folgen dem RFC 7807 Format
- Rate Limiting ist Pflicht für öffentliche Endpunkte
!Prioritätsregel
Wenn die gleiche Regel auf mehreren Ebenen existiert, gewinnt immer die spezifischere: Unterverzeichnis > Projekt-Config > Projekt-Root > Global. Claude merged alle Ebenen intelligent zusammen.
Verstehen
Enterprise: Managed Policies
In Unternehmensumgebungen gibt es eine zusätzliche Ebene: Managed Policies. Administratoren können unter /Library/Application Support/ClaudeCode/policies/CLAUDE.md (macOS) organisationsweite Regeln definieren, die nicht überschrieben werden können.
# Managed Policy (von der IT-Abteilung)
- Keine API-Keys im Code
- Alle externen Abhängigkeiten müssen aus dem Firmen-Registry kommen
- Keine Ausführung von rm -rf Befehlen
Diese Policies werden von Claude Code als unveränderliche Regeln behandelt -- sie haben die höchste Priorität und können von keiner anderen CLAUDE.md überschrieben werden.
Die @-Import-Syntax
Du kannst andere Dateien in deine CLAUDE.md importieren, um sie modular zu halten:
# CLAUDE.md
@docs/coding-standards.md
@.cursor/rules/api-conventions.md
@scripts/README.md
Jeder @-Import muss auf einer eigenen Zeile stehen. Claude löst diese Referenzen rekursiv auf, allerdings mit einem Maximum von 5 Verschachtelungsebenen, um Endlosschleifen zu vermeiden.
*Praxis-Tipp
Die @-Syntax ist besonders nützlich, wenn du bereits Cursor-Rules oder andere Dokumentation hast. Du kannst bestehende Dateien einfach referenzieren, statt Inhalte zu duplizieren.
Lazy-loaded Regeldateien
Für große Projekte bietet Claude Code .claude/rules/*.md -- Regelfiles, die nur geladen werden, wenn sie relevant sind. Mit YAML-Frontmatter kannst du definieren, für welche Dateipfade eine Regel gilt:
---
paths:
- "src/api/**/*.ts"
---
# API Conventions
- Nutze express-validator für Input-Validierung
- Alle Endpunkte brauchen JSDoc-Kommentare
- Error-Handler müssen den HTTP-Status loggen
Diese Regeln werden nur in den Kontext geladen, wenn Claude an Dateien arbeitet, die zum paths-Muster passen. Das spart wertvolles Context-Budget.
Technische Details
Überleben bei /compact: Ja. Wenn du /compact ausführst, um den Kontext zu komprimieren, werden alle CLAUDE.md-Dateien danach neu geladen. Deine Regeln gehen also nie verloren.
HTML-Kommentare: Kommentare wie <!-- TODO: Diese Regel aktualisieren --> werden automatisch herausgefiltert und nicht an Claude gesendet. Du kannst sie für interne Notizen nutzen.
Du hast in ~/.claude/CLAUDE.md 'Nutze Tabs' stehen und in ./CLAUDE.md 'Nutze Spaces'. Was verwendet Claude?