Zum Inhalt

CLAUDE.md Templates

Fertige Templates für verschiedene Projekt-Typen – direkt kopieren und anpassen.

Warum Templates?

Eine gute CLAUDE.md spart bei jedem Claude-Start Tokens und Missverständnisse. Schlechte CLAUDE.md-Dateien haben zwei Probleme: zu lang (wird ignoriert) oder zu vage (bringt nichts).

Goldene Regel: Alles reinschreiben, was Claude sonst raten müsste. Alles weglassen, was offensichtlich ist.

Template 1: Web Application

Für Node.js/Python/Go Web Apps.

# CLAUDE.md

## Projekt

[Projektname] – [1 Satz Beschreibung]
Stack: [z.B. Express.js + PostgreSQL + React]

## Commands

```bash
npm run dev        # Dev-Server starten
npm test           # Tests ausführen
npm run lint       # ESLint
npm run build      # Production Build

Coding Standards

  • TypeScript strict mode, keine any
  • ESLint + Prettier (Config in .eslintrc)
  • Tests: Jest, Testdateien in __tests__/ neben dem Source
  • API: RESTful, Versionierung via /api/v1/

Architektur

src/
├── routes/     # Express Router
├── services/   # Business Logic
├── models/     # TypeORM Entities
└── utils/      # Shared Utilities

Wichtig: Services kennen keine HTTP-Konzepte (req/res), nur Routes kennen Express.

Environment

  • .env.example als Referenz, nie .env committen
  • Config über src/config/index.ts laden, nie direkt process.env

Off-Limits

  • src/legacy/ – Migration läuft, nicht anfassen
  • migrations/ – Nur mit explizitem Auftrag ändern

Bekannte Issues

  • [Kritisches Problem das Claude wissen sollte]
    ## Template 2: Network/Infrastructure
    
    Für Ansible, Terraform, Netzwerk-Skripte.
    
    ```markdown
    # CLAUDE.md
    
    ## Projekt
    
    [Projektname] – Automatisierung für [Umgebungsbeschreibung]
    Scope: [z.B. 15 FortiGates, 3 OPNsense, 20 Cisco Switches]
    
    ## Inventory
    
    inventory/ ├── production/ # Produktiv-Hosts (mit Vorsicht!) ├── staging/ # Test-Umgebung └── group_vars/ # Variablen nach Gruppe
    **Immer `--limit` nutzen** bevor `--inventory production` verwendet wird.
    
    ## Credentials
    
    - Alle Secrets in Vault (`ansible-vault`)
    - Vault-Password via `ANSIBLE_VAULT_PASSWORD_FILE`
    - Kein Klartext in Git, nie
    
    ## Vendor-spezifisch
    
    - **FortiGate:** fortinet.fortios Collection, VDOM immer explizit
    - **OPNsense:** ansibleguy.opnsense, API Key/Secret aus Vault
    - **Cisco:** cisco.ios, `network_cli` Connection
    
    ## Ausführung
    
    ```bash
    # Syntax Check
    ansible-playbook site.yml --syntax-check
    
    # Dry Run
    ansible-playbook site.yml --check --diff
    
    # Produktiv (mit Bestätigung)
    ansible-playbook site.yml --limit staging
    

Off-Limits

  • Direkte Änderungen an inventory/production/ ohne Plan Mode
  • Keine Passwörter in vars/, nur Vault-Referenzen
    ## Template 3: Data Science / ML
    
    Für Python Data-Pipelines, Notebooks, ML-Projekte.
    
    ```markdown
    # CLAUDE.md
    
    ## Projekt
    
    [Projektname] – [Was wird analysiert/vorhergesagt]
    Stack: Python 3.11, pandas, scikit-learn, [weitere Libs]
    
    ## Setup
    
    ```bash
    python -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    

Daten

  • data/raw/ – Originaldaten, nie ändern
  • data/processed/ – Transformierte Daten, reproducierbar
  • data/external/ – Externe Quellen

Große Dateien (>10MB) nicht committen – sind in .gitignore

Code-Struktur

src/
├── data/       # Daten laden und validieren
├── features/   # Feature Engineering
├── models/     # Modell-Training und -Evaluation
└── viz/        # Visualisierungen

Notebooks in notebooks/ nur für Exploration. Finaler Code in src/.

Reproduzierbarkeit

  • Random Seeds immer setzen: RANDOM_SEED = 42
  • Modelle mit Metadaten speichern (Datum, Params, Metrics)
  • MLflow für Experiment-Tracking

Tests

pytest tests/ -v

Mindest-Coverage: 80% für src/, Notebooks sind ausgenommen.

## Template 4: Homelab / Self-Hosted

Für Docker Compose, Proxmox, Home Automation.

```markdown
# CLAUDE.md

## Projekt

[Projektname] – Self-hosted [Service] auf [Hardware/VM]
Host: [z.B. Proxmox Node pve-01, 16GB RAM, Ubuntu 22.04]

## Services

| Service | Port | Beschreibung |
|---------|------|--------------|
| [App]   | 8080 | [Was macht er] |
| Traefik | 80/443 | Reverse Proxy |

## Deployment

```bash
# Starten
docker compose up -d

# Logs
docker compose logs -f [service]

# Update
docker compose pull && docker compose up -d

Konfiguration

  • Secrets in .env (nicht in Git), Vorlage in .env.example
  • Persistente Daten in data/ (Volume-Mount)
  • Traefik Labels in docker-compose.yml für Routing

Netzwerk

  • Services im internen traefik-network Netzwerk
  • Nur Traefik ist nach außen exposed
  • DNS: [service].intern.example.com

Backup

  • data/ täglich via [Backup-Tool] nach [Ziel]
  • Config-Files in Git

Bekannte Eigenheiten

  • [Service X] braucht 2 Minuten zum Starten, nicht vorher anfassen
    ## Checkliste: Gute CLAUDE.md
    
    ??? success "Pflicht-Inhalte"
        - [ ] Projekt in 1-2 Sätzen erklärt
        - [ ] Build/Test/Start Commands
        - [ ] Wichtigste Coding-Konventionen (3-5 Regeln)
        - [ ] Off-Limits Bereiche
    
    ??? question "Sinnvoll wenn vorhanden"
        - [ ] Architektur-Diagramm oder Verzeichnisstruktur
        - [ ] Bekannte Bugs/Eigenheiten
        - [ ] Environment-Variable Referenz
        - [ ] Vendor/Library-spezifische Hinweise
    
    ??? danger "Weglassen"
        - [ ] Alles was in der README steht
        - [ ] Offensichtliche Coding-Standards ("Code soll lesbar sein")
        - [ ] Mehr als 150 Zeilen
        - [ ] Veraltete Informationen
    
    ## CLAUDE.md für verschiedene Scopes
    
    ### Persönliches Setup (~/.claude/CLAUDE.md)
    
    Globale Regeln die für alle Projekte gelten:
    
    ```markdown
    # Globale Präferenzen
    
    ## Sprache
    
    Antworte immer auf Deutsch, außer bei Code und Fachbegriffen.
    
    ## Stil
    
    - Kurz und direkt, keine langen Einleitungen
    - Code-Beispiele bevorzugt vor Erklärungen
    
    ## Tools
    
    - Shell-Skripte: bash, POSIX-kompatibel
    - Kein PowerShell außer wenn explizit gewünscht
    

Monorepo-Setup

/monorepo/
├── CLAUDE.md              # Allgemein: Monorepo-Struktur, gemeinsame Tools
├── packages/
│   ├── api/
│   │   └── CLAUDE.md      # API-spezifisch: Express, ORM, Tests
│   └── frontend/
│       └── CLAUDE.md      # Frontend: React, State, Components
└── infra/
    └── CLAUDE.md          # Infra: Terraform, Cloud-Provider

Claude lädt automatisch die CLAUDE.md des aktuellen Verzeichnisses + alle übergeordneten bis zum Repo-Root.