Claude Code¶
Claude Code läuft auf dem Pi dauerhaft in einer tmux-Session. Die gesamte
Konfiguration liegt im Repo unter claude/ und wird per bootstrap.sh
nach ~/.claude/ symlinkt.
Installation¶
OAuth-Setup beim ersten Start:
tmux: Persistente Sessions¶
Ohne tmux stirbt die Claude-Code-Session bei einem SSH-Verbindungsabbruch. tmux hält die Session am Leben — Claude Code läuft weiter, auch wenn keine SSH-Verbindung besteht.
tmux # Neue Session starten
claude # Claude Code darin starten
# Ctrl+B, D # Session detachen (SSH kann jetzt getrennt werden)
tmux attach # Wieder verbinden
tmux-Konfiguration¶
Die Datei tmux/tmux.conf ist auf headlosen Dauerbetrieb optimiert:
- Scrollback-Buffer: 50.000 Zeilen (statt 2.000) — wichtig bei langen Claude-Code-Outputs
- Maus-Support: aktiviert — Scrollen und Pane-Auswahl per Trackpad/Maus
- Basis-Index 1: Fenster und Panes starten bei 1 statt 0 — angenehmer bei Keyboard-Shortcuts
- Automatisches Renummerieren: Fenster behalten lückenlose Nummerierung nach dem Schließen
- Vi-Mode: Copy-Mode nutzt Vi-Keybindings (
vzum Markieren,yzum Kopieren) - Escape-Time 10 ms: Reduziert die Verzögerung bei Escape-Sequenzen (wichtig für Vi-ähnliche Workflows)
settings.json¶
Die Datei ~/.claude/settings.json steuert Berechtigungen, Hooks,
Umgebungsvariablen und aktivierte Plugins.
Umgebungsvariablen¶
"env": {
"DISABLE_TELEMETRY": "1",
"DISABLE_ERROR_REPORTING": "1",
"CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY": "1",
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
Telemetrie und Error Reporting sind deaktiviert. Das experimentelle Agent-Teams-Feature ist aktiviert.
Berechtigungen (deny-Liste)¶
Claude Code darf bestimmte Operationen nicht ohne explizite Bestätigung ausführen. Die deny-Liste blockiert destruktive Befehle grundsätzlich:
| Gesperrte Operation | Grund |
|---|---|
rm -rf *, rm -fr * |
Rekursives Löschen |
sudo * |
Alle sudo-Befehle |
mkfs *, dd * |
Disk-Operationen |
curl * \| bash*, wget * \| bash* |
Pipe-to-Shell |
git push --force* |
Force-Push |
git reset --hard* |
Destructive Reset |
Edit(~/.bashrc), Edit(~/.zshrc) |
Shell-Konfiguration |
Edit(~/.ssh/**) |
SSH-Konfiguration |
Read(~/.ssh/**), Read(~/.gnupg/**) |
Private Keys |
Read(~/.aws/**), Read(~/.azure/**) |
Cloud-Credentials |
Read(~/.kube/**) |
Kubernetes-Credentials |
Read(~/.git-credentials), Read(~/.docker/config.json) |
Weitere Secrets |
PreToolUse-Hooks¶
Zusätzlich zur deny-Liste gibt es zwei aktive Hooks, die Bash-Befehle vor der Ausführung analysieren:
Hook 1: rm -rf Erkennung
Erkennt rekursives Löschen per Regex auch dann, wenn die Flags kombiniert
werden (z.B. rm -rfv). Gibt eine klare Fehlermeldung aus und bricht ab.
Hook 2: Direct-Push-Erkennung
Blockiert git push direkt auf main oder master. Erzwingt Feature-Branch-
Workflow.
Modell-Einstellungen¶
Extended Thinking ist dauerhaft aktiviert. Das erhöht die Token-Kosten pro Anfrage, verbessert aber die Qualität bei komplexen Architektur- und Debugging-Aufgaben erheblich.
Plugins (enabledPlugins)¶
Die Plugins erweitern Claude Code um spezialisierte Fähigkeiten und zusätzlichen Kontext. Sie kommen aus drei Quellen:
Offizielle Plugins (claude-plugins-official)¶
| Plugin | Zweck |
|---|---|
planning-with-files |
Strukturierte Planung in Markdown-Dateien |
code-review |
Systematische Code-Reviews |
superpowers |
Allgemeine Erweiterungen |
frontend-design |
UI/UX-Patterns |
feature-dev |
Feature-Entwicklungs-Workflow |
code-simplifier |
Komplexitätsreduktion |
typescript-lsp |
TypeScript Language Server Integration |
commit-commands |
Standardisierte Git-Commits |
claude-md-management |
CLAUDE.md-Verwaltung |
github |
GitHub CLI und API Integration |
claude-code-setup |
Projekt-Onboarding |
Trail of Bits Plugins (trailofbits)¶
Sicherheitsfokussierte Plugins von Trail of Bits:
| Plugin | Zweck |
|---|---|
agentic-actions-auditor |
Prüft agentengesteuerte Aktionen auf Risiken |
ask-questions-if-underspecified |
Fordert Klarstellung bei unklaren Aufgaben |
audit-context-building |
Strukturierter Aufbau von Sicherheits-Audits |
building-secure-contracts |
Secure-by-default Entwicklungsmuster |
devcontainer-setup |
Dev-Container-Konfiguration |
gh-cli |
GitHub CLI Workflows |
git-cleanup |
Aufräumen von Git-Repos |
insecure-defaults |
Warnt vor unsicheren Standardkonfigurationen |
modern-python |
Moderne Python-Patterns (ruff, uv, mypy) |
Spezialisierte Plugins¶
| Plugin | Quelle | Zweck |
|---|---|---|
cloudflare |
cloudflare | Cloudflare Workers / Pages |
python-code-simplifier |
skills-curated | Python-Refactoring |
humanizer |
skills-curated | Natürlichere Ausgabe |
supabase |
claude-plugins-official | Supabase-Integration |
legalzoom |
claude-plugins-official | Rechtliche Dokumentation |
Zusätzliches Plugin-Marketplace¶
Neben dem offiziellen Marketplace ist ein zweiter Marketplace konfiguriert:
"extraKnownMarketplaces": {
"claude-code-plugins": {
"source": {
"source": "github",
"repo": "anthropics/claude-code"
}
}
}
MCP: Exa AI¶
Exa AI ist als MCP-Server über HTTP eingebunden und ermöglicht Claude Code web-basierte Suchanfragen während Entwicklungsaufgaben.
Exa wird der globalen CLAUDE.md als bevorzugte Suchmaschine gegenüber
dem generischen WebSearch-Tool gesetzt.
Statusline¶
Die statusline.sh zeigt in der Claude-Code-Statusleiste kontextrelevante
Informationen an, ohne das Terminal zu verlassen.
Aufbau¶
Zeile 1:
- Kurzname des aktiven Modells (z.B. Sonnet 4.5 statt Claude 3.5 Sonnet)
- Aktuelles Verzeichnis (Repo-Name oder Ordner)
- Git-Branch (falls vorhanden)
Zeile 2:
- Visueller Fortschrittsbalken (12 Zeichen) für den Context-Window-Verbrauch
- Context-Prozentsatz — basiert auf Claude Codes remaining_percentage,
das die Compaction-Reserve bereits einrechnet
- Kosten der aktuellen Session in USD
- Session-Dauer (formatiert: 14m 32s)
- Cache-Hit-Rate (z.B. ↻82%) — zeigt wie viel des Inputs aus dem Cache kommt
Farben des Fortschrittsbalkens:
| Bereich | Farbe | Bedeutung |
|---|---|---|
| 0–49% | Grün | Genug Kontext vorhanden |
| 50–79% | Gelb | Kontext wird knapper |
| 80–100% | Rot | Compaction steht bevor |
Technische Umsetzung¶
Das Skript empfängt JSON-Daten von Claude Code über stdin und extrahiert alle
Werte in einem einzigen jq-Aufruf. Ein Bash-Fallback fängt jq-Fehler ab.
Git-Informationen werden direkt über git branch und git rev-parse ermittelt.
Die Konfiguration in settings.json:
CLAUDE.md (globale Instruktionen)¶
Die Datei ~/.claude/CLAUDE.md enthält globale Verhaltensanweisungen für
alle Claude-Code-Projekte. Sie liegt im Repo unter claude/CLAUDE.md und
wird per Symlink eingebunden.
Inhalt:
- Sprache: Deutsch für Antworten, Englisch für Code, Commits und Variablennamen
- Stack: Azure Cloud, Kubernetes, Docker, Terraform, DevSecOps
- Plattform: Raspberry Pi 4 B (ARM64, Pi OS Lite Trixie) mit Podman statt Docker
- Qualitätsgrenzen: Funktionslänge ≤100 Zeilen, Cyclomatic Complexity ≤8
- Zero-Warnings-Policy: Jede Warnung wird behoben oder explizit ignoriert
- Workflow: Conventional Commits, Feature Branches, Pre-commit Hooks via prek
- CLI-Tools: rg, fd, shellcheck, shfmt statt grep/find
- Python: uv, ruff, mypy
- Sicherheit: ISO 27001 ISB, NIS2 Kontext — keine Secrets im Code
Projektspezifische CLAUDE.md-Dateien in einzelnen Repos können diese
globalen Einstellungen überschreiben.