Claude Code: KI-gestützte Entwicklung auf der Kommandozeile
Stell dir vor, du beschreibst in natürlicher Sprache, was du programmieren möchtest - und ein KI-Agent setzt es direkt in deinem Terminal um. Er liest deinen Code, versteht den Kontext, schreibt Dateien, führt Befehle aus und testet das Ergebnis. Das ist Claude Code - ein agentenbasiertes CLI-Tool von Anthropic, das KI direkt in deine Entwicklungsumgebung bringt.
Was ist Claude Code?
Claude Code ist ein interaktives Kommandozeilen-Tool, das auf Anthropics Claude-Modellen basiert. Im Gegensatz zu Chat-basierten Assistenten, die nur Textantworten liefern, ist Claude Code ein vollwertiger Agent: Er kann Dateien lesen und schreiben, Shell-Befehle ausführen, im Web suchen und komplexe mehrstufige Aufgaben autonom abarbeiten.
Die wichtigsten Fähigkeiten:
- Codebases verstehen und navigieren
- Dateien erstellen, bearbeiten und löschen
- Git-Operationen durchführen
- Shell-Befehle ausführen
- Tests schreiben und ausführen
- Bugs finden und beheben
- Refactoring durchführen
Claude Code arbeitet lokal in deinem Terminal - dein Code verlässt nie deinen Rechner, nur die Konversation mit Claude wird über die API gesendet.
Installation und Erste Schritte
Voraussetzungen
- Node.js 18 oder höher
- Ein Anthropic API-Key (oder Claude Max Abo)
Installation
1
2
3
4
5
# Global installieren
npm install -g @anthropic-ai/claude-code
# Oder mit npx direkt ausführen
npx @anthropic-ai/claude-code
Erster Start
1
2
3
4
5
6
7
8
# In dein Projektverzeichnis wechseln
cd ~/mein-projekt
# Claude Code starten
claude
# Oder direkt mit einer Aufgabe starten
claude "Erkläre mir die Struktur dieses Projekts"
Beim ersten Start wirst du aufgefordert, dich zu authentifizieren. Du kannst entweder:
- API-Key verwenden: Setze
ANTHROPIC_API_KEYals Umgebungsvariable - Claude Max: Authentifiziere dich über den Browser
Die Konfigurationsdateien
Claude Code verwendet mehrere Konfigurationsdateien auf verschiedenen Ebenen. Das Verständnis dieser Hierarchie ist der Schlüssel zu effektiver Nutzung.
flowchart TB
subgraph Global["Globale Konfiguration (~/.claude/)"]
G_CLAUDE["CLAUDE.md"]
G_SETTINGS["settings.json"]
G_MCP[".claude.json (MCP)"]
end
subgraph Project["Projekt-Konfiguration (.claude/)"]
P_CLAUDE["CLAUDE.md"]
P_SETTINGS["settings.json"]
P_LOCAL["settings.local.json"]
P_MCP[".mcp.json"]
P_RULES["rules/*.md"]
end
subgraph Root["Projekt-Root"]
R_CLAUDE["CLAUDE.md"]
end
G_CLAUDE --> P_CLAUDE
G_SETTINGS --> P_SETTINGS
P_CLAUDE --> R_CLAUDE
P_SETTINGS --> P_LOCAL
Priorität der Konfiguration
Die Konfigurationen werden in folgender Reihenfolge geladen (höhere überschreibt niedrigere):
| Priorität | Scope | Ort | Zweck |
|---|---|---|---|
| 1 (höchste) | Lokal | .claude/settings.local.json |
Persönliche Projekt-Overrides |
| 2 | Projekt | .claude/settings.json |
Team-geteilte Einstellungen |
| 3 | Benutzer | ~/.claude/settings.json |
Globale persönliche Settings |
| 4 (niedrigste) | Managed | /etc/claude-code/ |
IT-verwaltete Einstellungen |
CLAUDE.md - Das Gedächtnis von Claude
Die CLAUDE.md-Datei ist das Herzstück der Konfiguration. Sie wird bei jedem Gespräch geladen und gibt Claude Kontext über dein Projekt, deine Präferenzen und spezielle Anweisungen.
Wo kann CLAUDE.md liegen?
| Ort | Scope | Beispiel |
|---|---|---|
~/.claude/CLAUDE.md |
Global | Gilt für alle Projekte |
./CLAUDE.md |
Projekt | Im Repository-Root |
./.claude/CLAUDE.md |
Projekt | Im .claude-Ordner |
./.claude/CLAUDE.local.md |
Lokal | Persönlich, nicht committet |
Was gehört in eine CLAUDE.md?
Gute Inhalte:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## Build-Befehle
- `npm run dev` - Entwicklungsserver starten
- `npm test` - Tests ausführen
- `npm run lint` - Code-Style prüfen
## Code-Konventionen
- TypeScript strict mode verwenden
- Funktionale Komponenten mit Hooks
- Tests mit Vitest schreiben
## Projekt-Struktur
- `/src/components/` - React-Komponenten
- `/src/api/` - Backend-Integration
- `/tests/` - Test-Dateien
## Git-Workflow
- Feature-Branches: `feature/beschreibung`
- Commit-Messages auf Deutsch
- Vor Push: Tests ausführen
Was NICHT hineingehört:
- Dinge, die Claude aus dem Code lesen kann
- Standard-Konventionen der Sprache
- Lange Erklärungen oder Tutorials
- Datei-für-Datei Beschreibungen
Halte die CLAUDE.md kurz und prägnant. Claude liest sie bei jeder Interaktion - je kürzer, desto effizienter.
Praxis-Beispiel: Homelab-Projekt
Hier ein reales Beispiel aus einem Homelab-Ansible-Projekt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
## VM-Zugang
| Parameter | Wert |
|-----------|------|
| Host | 192.168.60.141 |
| User | admin |
| SSH | `ssh [email protected]` |
## Deployment-Workflow
1. Lokale Änderungen testen
2. `scp` auf Ziel-VM
3. `docker compose up -d` auf VM
## Wichtige Pfade
- `/opt/app/docker-compose.yml` - Aktive Konfiguration
- `/opt/app/.env` - Secrets (NIE committen!)
- `/mnt/data/` - Persistente Daten
## Häufige Befehle
```bash
# Container-Status prüfen
ssh [email protected] "docker ps"
# Logs anzeigen
ssh [email protected] "docker logs -f app"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{: file="CLAUDE.md" }
---
## settings.json - Berechtigungen und Verhalten
Die `settings.json` steuert, was Claude darf und was nicht. Dies ist besonders wichtig für die Sicherheit.
### Grundstruktur
```json
{
"permissions": {
"allow": [],
"ask": [],
"deny": []
},
"env": {},
"model": "claude-sonnet-4-20250514"
}
Berechtigungssystem
Claude fragt standardmäßig bei jeder potenziell gefährlichen Aktion um Erlaubnis. Mit der permissions-Konfiguration kannst du das anpassen:
| Liste | Bedeutung |
|---|---|
allow |
Automatisch erlaubt, keine Nachfrage |
ask |
Immer nachfragen (Standard) |
deny |
Immer blockiert |
Syntax für Berechtigungsregeln
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"permissions": {
"allow": [
"Bash(npm run:*)", // Alle npm run Befehle
"Bash(git status)", // Exakter Befehl
"Read(src/**)", // Alle Dateien in src/
"WebSearch" // Web-Suche erlauben
],
"deny": [
"Read(.env)", // Keine .env lesen
"Read(**/*secret*)", // Keine Secret-Dateien
"Bash(rm -rf:*)" // Kein rekursives Löschen
]
}
}
Pattern-Syntax:
| Pattern | Bedeutung |
|---|---|
Tool |
Alle Verwendungen des Tools |
Tool(exact) |
Exakter Match |
Tool(prefix:*) |
Prefix-Match mit Wortgrenze |
Tool(glob*) |
Glob-Pattern |
Sicherheits-Empfehlung
Eine sichere Basis-Konfiguration:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"permissions": {
"allow": [
"Bash(git status)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(npm run:*)",
"Bash(npm test:*)"
],
"deny": [
"Read(~/.ssh/**)",
"Read(~/.aws/**)",
"Read(**/.env)",
"Read(**/.env.*)",
"Read(**/secrets/**)",
"Read(**/*credential*)",
"Bash(rm -rf:*)",
"Bash(sudo:*)"
]
}
}
Das .claude-Verzeichnis
Das .claude/-Verzeichnis im Projekt-Root enthält alle projektspezifischen Konfigurationen:
1
2
3
4
5
6
7
8
9
10
11
12
.claude/
├── settings.json # Team-Einstellungen (git-tracked)
├── settings.local.json # Persönliche Overrides (gitignored)
├── CLAUDE.md # Projekt-Anweisungen
├── .mcp.json # MCP-Server Konfiguration
├── agents/ # Custom Agenten
│ ├── code-reviewer.md
│ └── debugger.md
└── rules/ # Modulare Regeln
├── code-style.md
├── testing.md
└── security.md
settings.local.json
Diese Datei wird nicht ins Git committet und enthält persönliche Anpassungen:
1
2
3
4
5
6
7
8
{
"permissions": {
"allow": [
"Bash(ssh [email protected]:*)",
"Bash(scp:*)"
]
}
}
Modulare Regeln mit rules/
Statt alles in eine CLAUDE.md zu packen, kannst du thematische Regel-Dateien erstellen:
1
2
3
4
5
6
7
8
9
10
11
---
paths:
- "src/**/*.ts"
- "src/**/*.tsx"
---
# TypeScript-Regeln
- Strict Mode verwenden
- Interfaces statt Types für Objekte
- Generics für wiederverwendbare Komponenten
Der paths-Header sorgt dafür, dass diese Regeln nur geladen werden, wenn Claude mit passenden Dateien arbeitet.
MCP-Server - Erweiterungen für Claude
MCP (Model Context Protocol) ermöglicht es, Claude um externe Tools zu erweitern. Damit kann Claude z.B. mit Datenbanken, APIs oder spezialisierten Tools interagieren.
Konfiguration
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.github.com/mcp/"
},
"database": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
}
}
Scope-Optionen:
| Ort | Scope | Sichtbarkeit |
|---|---|---|
~/.claude.json |
User | Alle deine Projekte |
.mcp.json |
Project | Team-geteilt |
Workflow-Automatisierung
Mit den richtigen Konfigurationen wird Claude zu einem mächtigen Automatisierungswerkzeug.
Beispiel: Automatisches Deployment
CLAUDE.md:
1
2
3
4
5
6
7
8
9
10
11
12
13
## Deployment
Nach Änderungen am Code:
1. Tests ausführen: `npm test`
2. Auf VM kopieren: `scp -r dist/ admin@server:/opt/app/`
3. Container neustarten: `ssh admin@server "docker compose restart"`
## Commit-Konventionen
- Keine automatischen Signaturen
- Deutsche Commit-Messages
- Format: `<typ>: <beschreibung>`
settings.local.json:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"permissions": {
"allow": [
"Bash(npm test)",
"Bash(npm run build)",
"Bash(scp:*)",
"Bash(ssh admin@server:*)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(git push)"
]
}
}
Nutzung:
1
claude "Deploye die aktuellen Änderungen auf den Server"
Claude wird dann:
- Tests ausführen
- Den Build erstellen
- Dateien auf den Server kopieren
- Container neustarten
- Bei Erfolg optional committen
Die Verzeichnisstruktur im Überblick
flowchart TB
subgraph Home["Home-Verzeichnis (~/)"]
direction TB
H_CLAUDE[".claude/"]
H_CLAUDEJSON[".claude.json"]
end
subgraph ClaudeDir["~/.claude/"]
direction TB
C_MD["CLAUDE.md<br/>(Global Instructions)"]
C_SETTINGS["settings.json<br/>(Global Settings)"]
C_COMMANDS["commands/<br/>(Custom Commands)"]
C_CACHE["cache/<br/>(Temporary Data)"]
C_HISTORY["history.jsonl<br/>(Conversation Log)"]
end
subgraph Project["Projekt-Verzeichnis"]
direction TB
P_ROOT["./"]
P_CLAUDE[".claude/"]
P_ROOTMD["CLAUDE.md"]
end
subgraph ProjectClaude[".claude/"]
direction TB
PC_SETTINGS["settings.json"]
PC_LOCAL["settings.local.json"]
PC_MD["CLAUDE.md"]
PC_MCP[".mcp.json"]
PC_AGENTS["agents/*.md"]
PC_RULES["rules/*.md"]
end
H_CLAUDE --> ClaudeDir
P_CLAUDE --> ProjectClaude
Zusammenfassung der Dateien
| Datei | Ort | Zweck | Git? |
|---|---|---|---|
CLAUDE.md |
~/.claude/ |
Globale Anweisungen | - |
CLAUDE.md |
Projekt-Root | Projekt-Anweisungen | Ja |
CLAUDE.local.md |
.claude/ |
Persönliche Anweisungen | Nein |
settings.json |
~/.claude/ |
Globale Einstellungen | - |
settings.json |
.claude/ |
Team-Einstellungen | Ja |
settings.local.json |
.claude/ |
Persönliche Overrides | Nein |
.claude.json |
~/ |
MCP-Server (User) | - |
.mcp.json |
.claude/ |
MCP-Server (Projekt) | Ja |
agents/*.md |
~/.claude/ |
Globale Agenten | - |
agents/*.md |
.claude/ |
Projekt-Agenten | Ja |
Agenten - Spezialisierte Assistenten
Eine der mächtigsten Funktionen von Claude Code sind Subagenten - spezialisierte KI-Assistenten, die bestimmte Aufgaben autonom übernehmen. Jeder Agent läuft in seinem eigenen Kontext mit eigenem System-Prompt, definierten Tools und unabhängigen Berechtigungen.
Warum Agenten?
| Vorteil | Beschreibung |
|---|---|
| Kontext-Trennung | Exploration und Implementierung bleiben getrennt |
| Tool-Beschränkung | Nur notwendige Werkzeuge verfügbar |
| Wiederverwendbarkeit | Einmal definiert, überall nutzbar |
| Spezialisierung | Fokussierte System-Prompts für bessere Ergebnisse |
| Kostenoptimierung | Schnellere Modelle (Haiku) für einfache Tasks |
Built-in Agenten
Claude Code bringt bereits einige Agenten mit:
| Agent | Modell | Tools | Zweck |
|---|---|---|---|
| Explore | Haiku | Nur Lesen | Schnelle Codebase-Suche |
| Plan | Erbt | Nur Lesen | Recherche für Planungsmodus |
| General-purpose | Erbt | Alle | Komplexe mehrstufige Aufgaben |
| Bash | Erbt | Bash | Terminal-Befehle in separatem Kontext |
Eigene Agenten erstellen
Agenten werden als Markdown-Dateien mit YAML-Frontmatter definiert:
Speicherorte:
| Ort | Scope | Empfehlung |
|---|---|---|
.claude/agents/ |
Projekt | Team-geteilt, in Git |
~/.claude/agents/ |
Global | Persönliche Agenten |
Dateiformat:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
---
name: code-reviewer
description: Code-Review-Spezialist. Prüft Code auf Qualität und Sicherheit.
tools: Read, Grep, Glob, Bash
model: sonnet
---
Du bist ein erfahrener Code-Reviewer.
Wenn du aufgerufen wirst:
1. Führe `git diff` aus, um Änderungen zu sehen
2. Fokussiere dich auf geänderte Dateien
3. Beginne sofort mit dem Review
Prüfe auf:
- Code-Klarheit und Lesbarkeit
- Korrekte Namensgebung
- Keine doppelten Code-Blöcke
- Fehlerbehandlung
- Keine exponierten Secrets
- Input-Validierung
Organisiere Feedback nach Priorität:
- Kritisch (muss behoben werden)
- Warnung (sollte behoben werden)
- Vorschlag (Verbesserungspotential)
Frontmatter-Felder
| Feld | Pflicht | Beschreibung |
|---|---|---|
name |
Ja | Eindeutiger Name (lowercase, Bindestriche) |
description |
Ja | Wann Claude diesen Agent nutzen soll |
tools |
Nein | Komma-getrennte Tool-Liste |
model |
Nein | sonnet, opus, haiku oder inherit |
permissionMode |
Nein | default, acceptEdits, plan |
Agenten aufrufen
Automatisch: Claude erkennt anhand der description, wann ein Agent passend ist:
1
2
claude "Prüfe meine letzten Code-Änderungen"
# → Claude delegiert automatisch an code-reviewer
Explizit: Direkt einen Agenten anfordern:
1
claude "Nutze den code-reviewer Agent für die Änderungen in src/"
Per /agents Befehl: Interaktive Verwaltung:
1
/agents
Beispiel: Debugger-Agent
Ein Agent zum Finden und Beheben von Fehlern:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
---
name: debugger
description: Debugging-Spezialist für Fehler und unerwartetes Verhalten.
tools: Read, Edit, Bash, Grep, Glob
model: sonnet
---
Du bist ein Debugging-Experte für Root-Cause-Analyse.
Debugging-Prozess:
1. Erfasse Fehlermeldung und Stack-Trace
2. Identifiziere Reproduktionsschritte
3. Lokalisiere die Fehlerquelle
4. Implementiere minimalen Fix
5. Verifiziere die Lösung
Für jeden Fehler liefere:
- Ursachen-Erklärung
- Evidenz für die Diagnose
- Konkreten Code-Fix
- Test-Ansatz
- Präventions-Empfehlungen
Behebe die Ursache, nicht das Symptom.
Beispiel: Datenbank-Agent mit Hook
Ein Read-Only Agent für Datenbank-Abfragen mit Sicherheits-Hook:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
name: db-reader
description: Führt nur SELECT-Abfragen aus. Für Datenanalysen.
tools: Bash
hooks:
PreToolUse:
- matcher: "Bash"
hooks:
- type: command
command: "./scripts/validate-readonly-query.sh"
---
Du bist ein Datenbank-Analyst mit Read-Only-Zugriff.
Du darfst NUR SELECT-Abfragen ausführen.
Bei INSERT, UPDATE, DELETE oder Schema-Änderungen:
→ Erkläre, dass du nur Lesezugriff hast.
Wenn du Daten analysierst:
1. Identifiziere relevante Tabellen
2. Schreibe effiziente SELECT-Queries
3. Präsentiere Ergebnisse klar strukturiert
Das Validierungs-Script blockiert Write-Operationen:
1
2
3
4
5
6
7
8
9
#!/bin/bash
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
if echo "$COMMAND" | grep -iE '\b(INSERT|UPDATE|DELETE|DROP|CREATE|ALTER)\b' > /dev/null; then
echo "Blocked: Nur SELECT-Queries erlaubt." >&2
exit 2
fi
exit 0
Agent-Workflow visualisiert
flowchart TB
User([Benutzer])
Claude[Claude Code]
subgraph Agents["Verfügbare Agenten"]
Explore[Explore<br/>Haiku]
Reviewer[Code-Reviewer<br/>Sonnet]
Debugger[Debugger<br/>Sonnet]
Custom[Custom Agent<br/>...]
end
User -->|"Prüfe meinen Code"| Claude
Claude -->|Delegiert| Reviewer
Reviewer -->|Liest Code| Files[(Dateien)]
Reviewer -->|Ergebnis| Claude
Claude -->|Review-Feedback| User
User -->|"Finde den Bug"| Claude
Claude -->|Delegiert| Debugger
Debugger -->|Analysiert| Files
Debugger -->|Fix| Claude
Claude -->|Lösung| User
Best Practices für Agenten
- Fokussiert bleiben - Ein Agent = Eine Aufgabe
- Tools beschränken - Nur notwendige Berechtigungen
- Gute Description - Klar beschreiben, wann der Agent helfen soll
- In Git committen -
.claude/agents/versionieren - Hooks für Sicherheit - Kritische Operationen validieren
Agenten sind besonders nützlich für wiederkehrende Aufgaben wie Code-Reviews, Debugging, oder Dokumentation. Einmal definiert, übernimmt Claude automatisch die Delegation.
Tipps für Einsteiger
1. Klein anfangen
Starte mit einer minimalen CLAUDE.md:
1
2
3
4
5
6
7
8
## Projekt
Dies ist ein [Projekttyp]-Projekt.
## Befehle
- Build: `npm run build`
- Test: `npm test`
2. Berechtigungen schrittweise erweitern
Beginne mit restriktiven Berechtigungen und erweitere sie, wenn du Claude besser kennst:
1
2
3
4
5
{
"permissions": {
"allow": ["Bash(git status)", "Bash(git diff:*)"]
}
}
3. Sensitive Dateien schützen
Füge immer Deny-Regeln für sensitive Dateien hinzu:
1
2
3
4
5
6
7
8
9
{
"permissions": {
"deny": [
"Read(**/.env*)",
"Read(**/secret*)",
"Read(~/.ssh/**)"
]
}
}
4. Projekt-spezifische Konfiguration nutzen
Lege für jedes Projekt eine .claude/-Struktur an:
1
2
3
4
mkdir -p .claude
echo '{}' > .claude/settings.json
echo '# Projekt-Anweisungen' > .claude/CLAUDE.md
echo '.claude/settings.local.json' >> .gitignore
5. CLAUDE.md regelmäßig pflegen
Lösche Anweisungen, die Claude nicht mehr braucht. Eine kürzere CLAUDE.md ist eine bessere CLAUDE.md.
Häufige Probleme
Claude fragt ständig nach Berechtigungen
Lösung: Füge häufig genutzte Befehle zu allow hinzu:
1
2
3
4
5
{
"permissions": {
"allow": ["Bash(npm:*)", "Bash(git:*)"]
}
}
Claude versteht den Projekt-Kontext nicht
Lösung: Verbessere die CLAUDE.md mit relevanten Informationen:
- Build-System und Befehle
- Projektstruktur
- Technologie-Stack
- Besondere Konventionen
Claude macht unerwartete Änderungen
Lösung: Nutze präzisere Anweisungen und aktiviere ggf. den Plan-Modus:
1
2
3
4
5
{
"permissions": {
"defaultMode": "plan"
}
}
Im Plan-Modus zeigt Claude erst seinen Plan und führt ihn erst nach Bestätigung aus.
Tipps und Tricks für Fortgeschrittene
Tastenkürzel und Befehle
| Kürzel/Befehl | Funktion |
|---|---|
Ctrl+C |
Aktuelle Aktion abbrechen |
Ctrl+D |
Session beenden |
Ctrl+L |
Terminal leeren |
Ctrl+R |
In History suchen |
/help |
Hilfe anzeigen |
/clear |
Konversation zurücksetzen |
/compact |
Kontext komprimieren |
/config |
Konfiguration anzeigen |
/agents |
Agenten verwalten |
/model |
Modell wechseln |
Effiziente Prompts schreiben
Schlecht:
1
Kannst du vielleicht mal schauen ob da irgendwo ein Bug ist?
Gut:
1
2
In src/api/auth.ts schlägt der Login fehl wenn das Passwort
Sonderzeichen enthält. Finde den Bug und behebe ihn.
Noch besser:
1
2
3
4
Bug: Login schlägt fehl bei Sonderzeichen im Passwort
Datei: src/api/auth.ts
Fehler: "Invalid character in input"
Erwartung: Login sollte mit allen UTF-8 Zeichen funktionieren
Kontext-Management
Claude hat ein begrenztes Kontext-Fenster. So nutzt du es optimal:
1
2
3
4
5
6
7
8
# Kontext komprimieren wenn er voll wird
/compact
# Neue Session für unabhängige Aufgaben
claude --new
# Session fortsetzen
claude --resume
Multi-File Operationen
Für Änderungen an mehreren Dateien:
1
claude "Refactore alle API-Calls in src/api/ zu async/await"
Claude wird:
- Alle relevanten Dateien finden
- Einen Plan erstellen
- Nach Bestätigung alle Dateien ändern
Git-Integration nutzen
1
2
3
4
5
6
7
8
# Änderungen reviewen lassen
claude "Review meine staged changes und erstelle eine Commit-Message"
# Merge-Konflikte lösen
claude "Löse die Merge-Konflikte in src/components/"
# Interaktives Rebase vorbereiten
claude "Erkläre mir die letzten 5 Commits und schlage eine Rebase-Strategie vor"
Pipe-Input verwenden
1
2
3
4
5
6
7
8
# Fehlerlog analysieren
cat error.log | claude "Analysiere diese Fehler und schlage Fixes vor"
# Code aus Clipboard
pbpaste | claude "Optimiere diesen Code"
# Diff analysieren
git diff | claude "Erstelle eine detaillierte Commit-Message"
Environment-Variablen
1
2
3
4
5
6
7
8
# Modell für Session festlegen
ANTHROPIC_MODEL=claude-opus-4 claude
# Debug-Output aktivieren
CLAUDE_DEBUG=1 claude
# Eigenes Config-Verzeichnis
CLAUDE_CONFIG_DIR=~/my-config claude
Hooks für Automatisierung
In settings.json kannst du Hooks definieren, die bei bestimmten Events ausgeführt werden:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npm run lint --fix"
}
]
}
]
}
}
Verfügbare Hook-Events:
| Event | Auslöser |
|---|---|
PreToolUse |
Vor Tool-Ausführung |
PostToolUse |
Nach Tool-Ausführung |
SessionStart |
Session startet |
SessionEnd |
Session endet |
UserPromptSubmit |
Vor Prompt-Verarbeitung |
Modell-Auswahl je nach Aufgabe
| Aufgabe | Empfohlenes Modell |
|---|---|
| Komplexe Architektur | Opus |
| Standard-Entwicklung | Sonnet |
| Schnelle Suche/Analyse | Haiku |
| Code-Review | Sonnet |
| Debugging | Opus |
1
2
3
4
5
# Für diese Session Opus nutzen
claude --model opus "Designe die Architektur für ein Event-System"
# Schnelle Frage mit Haiku
claude --model haiku "Wo ist die main() Funktion?"
Sicherheitshinweise
Grundprinzipien
Wichtig: Claude Code hat Zugriff auf dein Dateisystem und kann Shell-Befehle ausführen. Behandle es wie einen neuen Mitarbeiter mit Admin-Rechten - vertraue, aber verifiziere.
Sensitive Daten schützen
Niemals in CLAUDE.md oder Prompts:
- Passwörter
- API-Keys
- Private Keys
- Tokens
- Persönliche Daten
Deny-Rules für kritische Dateien:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"permissions": {
"deny": [
"Read(~/.ssh/**)",
"Read(~/.gnupg/**)",
"Read(~/.aws/**)",
"Read(~/.kube/config)",
"Read(~/.docker/config.json)",
"Read(**/.env)",
"Read(**/.env.*)",
"Read(**/.env.local)",
"Read(**/secrets/**)",
"Read(**/*secret*)",
"Read(**/*credential*)",
"Read(**/*password*)",
"Read(**/*.pem)",
"Read(**/*.key)",
"Read(**/*token*)"
]
}
}
Gefährliche Befehle blockieren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"permissions": {
"deny": [
"Bash(rm -rf:*)",
"Bash(rm -r:*)",
"Bash(sudo rm:*)",
"Bash(chmod 777:*)",
"Bash(curl:* | bash)",
"Bash(wget:* | bash)",
"Bash(eval:*)",
"Bash(> /dev/sda:*)",
"Bash(dd if=:*)",
"Bash(mkfs:*)",
"Bash(:(){ :|:& };:)",
"Bash(sudo su:*)",
"Bash(passwd:*)"
]
}
}
Netzwerk-Sicherheit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"permissions": {
"deny": [
"Bash(nc -l:*)",
"Bash(netcat:*)",
"Bash(nmap:*)",
"Bash(ssh-keygen:*)",
"Bash(scp:* @*:*)"
],
"ask": [
"Bash(curl:*)",
"Bash(wget:*)",
"Bash(ssh:*)",
"WebFetch",
"WebSearch"
]
}
}
Git-Sicherheit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"permissions": {
"deny": [
"Bash(git push --force:*)",
"Bash(git push -f:*)",
"Bash(git reset --hard:*)",
"Bash(git clean -fd:*)",
"Bash(git checkout -- .)"
],
"ask": [
"Bash(git push:*)",
"Bash(git commit:*)",
"Bash(git rebase:*)"
]
}
}
Umgebungs-Isolation
Für besonders sensible Projekte:
1
2
3
# Separates Config-Verzeichnis für sensible Projekte
mkdir -p ~/secure-claude-config
CLAUDE_CONFIG_DIR=~/secure-claude-config claude
1
2
3
4
5
6
7
{
"permissions": {
"defaultMode": "plan",
"allow": [],
"deny": ["Bash(*)", "Write(*)", "Edit(*)"]
}
}
Audit-Trail führen
Claude Code speichert Konversationen in ~/.claude/history.jsonl. Für sicherheitskritische Umgebungen:
1
2
3
4
5
# History regelmäßig prüfen
tail -100 ~/.claude/history.jsonl | jq '.tool_calls[]?'
# Alte Sessions aufräumen
find ~/.claude/projects -name "*.jsonl" -mtime +30 -delete
Checkliste vor dem Produktiveinsatz
- Deny-Rules für alle sensitiven Dateien definiert
- Gefährliche Bash-Befehle blockiert
- Git-Force-Push verhindert
defaultMode: "plan"für kritische Projekte.claude/settings.local.jsonin.gitignore- Keine Secrets in CLAUDE.md
- Regelmäßige Review der erlaubten Befehle
Was Claude NICHT sehen sollte
| Kategorie | Beispiele |
|---|---|
| Authentifizierung | SSH-Keys, API-Keys, Tokens, Passwörter |
| Infrastruktur | Kubeconfig, AWS Credentials, Cloud-Zugänge |
| Persönliche Daten | E-Mails, Kontakte, private Dokumente |
| Geschäftsdaten | Kundendaten, Finanzdaten, interne Docs |
| Kryptografie | Private Keys, Zertifikate, Keystores |
Incident Response
Falls Claude unbeabsichtigt auf sensitive Daten zugegriffen hat:
- Session beenden:
Ctrl+D - Logs prüfen:
~/.claude/history.jsonl - Credentials rotieren: Falls Secrets exponiert
- Deny-Rules erweitern: Lücke schließen
- History bereinigen: Betroffene Einträge entfernen
1
2
# Letzte Einträge der History prüfen
tail -50 ~/.claude/history.jsonl | grep -i "secret\|password\|key\|token"
Tipp: Starte mit restriktiven Berechtigungen und erweitere sie nur bei Bedarf. Es ist einfacher, Berechtigungen hinzuzufügen als versehentlich exponierte Daten wieder einzufangen.
Fazit
Claude Code ist mehr als ein Chat-Bot - es ist ein vollwertiger Entwicklungsassistent, der direkt in deinem Terminal arbeitet. Mit der richtigen Konfiguration wird er zu einem unverzichtbaren Werkzeug für:
- Routine-Aufgaben automatisieren - Tests, Deployments, Git-Workflows
- Code verstehen - Schneller Einstieg in fremde Codebases
- Entwicklung beschleunigen - Von der Idee zum Code in Minuten
Die wichtigsten Punkte:
- CLAUDE.md ist dein Hauptwerkzeug - halte sie kurz und relevant
- settings.json schützt dich - definiere klare Berechtigungen
- Projekt-Konfiguration macht Claude zum Team-Mitglied
- Iterativ verbessern - Passe die Konfiguration an deine Workflows an
Starte mit einer einfachen Konfiguration und erweitere sie Schritt für Schritt. Nach einer Woche wirst du dich fragen, wie du je ohne Claude Code entwickelt hast.
Ressourcen
- Claude Code Dokumentation - Offizielle Docs
- Anthropic Console - API-Key Management
- Model Context Protocol - MCP-Server entwickeln
- Claude Code GitHub - Issues und Releases
