Claude Code¶
Konfiguration der Claude-Code-Installation auf der Dev-Workstation. Der
maßgebliche, jeweils aktuelle Bestand steht in INVENTORY.md im Repo
claude-code-setup; diese
Seite beschreibt die Struktur und die Entscheidungen dahinter.
Die Dotfiles selbst liegen zentral im Repo dotfiles-claude und werden nach
~/.claude/ verlinkt.
Leitlinie: CLI-first¶
Wo es eine CLI gibt, wird die CLI genommen — nicht ein lokaler MCP-Server. Der Grund stammt noch vom Raspberry Pi mit seinen 4 GB, gilt aber weiter: Jeder lokale MCP-Server belegt dauerhaft 50–200 MB.
| Bedarf | Werkzeug | Nicht |
|---|---|---|
| Doku-Lookup | ctx7-CLI |
Context7 als lokaler Server |
| GitHub | gh-CLI |
GitHub-MCP-Server |
| Web-Suche | Exa (remote) | lokale Suchserver |
| Supabase | supabase-CLI |
Supabase-MCP |
Remote-MCP-Server über claude.ai sind davon ausgenommen — sie laufen nicht auf
der Maschine. Lokale Prozesse starten nur gitnexus und der Playwright-MCP,
letzterer bei Bedarf über npx.
Absicherung¶
Zwei Ebenen greifen ineinander: eine Deny-Liste in settings.json und Hooks,
die Befehle vor der Ausführung prüfen.
Deny-Liste¶
| Gesperrt | 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* |
Verwerfen lokaler Arbeit |
Edit(~/.bashrc), Edit(~/.zshrc) |
Shell-Konfiguration |
Edit(~/.ssh/**), Read(~/.ssh/**) |
SSH-Schlüssel |
Read(~/.gnupg/**), Read(~/.aws/**), Read(~/.azure/**), Read(~/.kube/**) |
Zugangsdaten |
Read(~/.git-credentials), Read(~/.docker/config.json) |
Weitere Secrets |
Hooks¶
| Zeitpunkt | Hook | Wirkung |
|---|---|---|
| PreToolUse (Bash) | rtk-rewrite.sh |
Schreibt Befehle auf token-sparende rtk-Äquivalente um |
| PreToolUse (Edit/Write) | block-sensitive.sh |
Blockiert .env, secrets/ und Lock-Dateien |
| PreToolUse (Grep/Glob/Bash) | gitnexus-hook.cjs |
Reichert um Kontext aus dem Code-Graphen an |
| PostToolUse (Edit/Write) | lint-on-write.sh |
Lintet automatisch: ruff, shellcheck, terraform fmt, yamllint, tsc, hadolint |
| PostToolUse (Bash) | gitnexus-hook.cjs |
Prüft, ob der Index veraltet ist |
Zwei Regeln des Force-Push-Schutzes haben praktische Folgen: Nach einem Rebase
wird nicht force-gepusht, sondern ein neuer Branch gepusht und der alte PR
mit Verweis geschlossen. Und .env-Dateien kann Claude nicht anlegen — dafür
nutzen Compose-Dateien ${VAR:?meldung} und eine ENV-Tabelle in der Doku.
Agents und Skills¶
Zwei eigene Subagents:
| Agent | Modell | Zweck |
|---|---|---|
security-reviewer |
Opus | OWASP Top 10, Injection, Auth, Secrets, Abhängigkeiten |
infra-reviewer |
Sonnet | Docker, Traefik, Terraform, Bash, Netz und Härtung |
Dazu lokale Skills, unter anderem homelab-infra (Hosts, Ports, Storage,
Domains — ohne Secrets), docker-compose-gotchas, infra-review,
setup-dependabot-renovate und merk-global für den projektübergreifenden
Wissens-Layer.
Regeln unter ~/.claude/rules/ gelten dauerhaft: context7.md (CLI statt MCP
für Doku) und gotchas.md — eine gepflegte Liste von Fallstricken nach dem
Muster Symptom → Fix, begrenzt auf 150 Zeilen, damit sie nicht ausufert.
Plugins¶
15 aktive Plugins aus acht Marketplaces. Die wichtigsten Gruppen:
| Quelle | Plugins |
|---|---|
| Anthropic | superpowers, feature-dev, commit-commands, pr-review-toolkit, claude-md-management, frontend-design, playwright, ralph-loop, security-guidance |
| Trail of Bits | ask-questions-if-underspecified, audit-context-building, insecure-defaults, modern-python |
| Weitere | cloudflare, home-assistant-skills |
Das Cloudflare-Plugin bringt elf Skills, zwei Commands und fünf remote MCP-Server mit.
MCP-Server aus Plugins nicht zusätzlich von Hand eintragen
Die Cloudflare-Server sind in
~/.claude/plugins/marketplaces/cloudflare/.mcp.json definiert. Ein
zusätzlicher Eintrag in ~/.claude.json erzeugt Duplikate.
Bewusst nicht installiert: das TypeScript-LSP-Plugin (über 500 MB RAM) und WarpGrep (GitNexus deckt den Bedarf ab).
Modell-Einstellungen¶
Extended Thinking ist dauerhaft aktiv. Das erhöht die Token-Kosten je Anfrage, verbessert aber die Ergebnisse bei Architektur- und Debugging-Aufgaben deutlich.
Statusline¶
statusline.sh zeigt Modell, Verzeichnis, Branch, Kontextverbrauch, Kosten,
Sitzungsdauer und Cache-Trefferquote:
[Opus 5] 📁 homelab-docs │ 🌿 docs/gesamtueberarbeitung-aiserver
████████⣿⣿⣿⣿ 67% │ $1.24 │ 14m 32s │ ↻82%
Der Balken färbt sich ab 50 % gelb und ab 80 % rot — dann steht die
Kontext-Verdichtung bevor. Der Prozentwert stammt aus Claude Codes
remaining_percentage und rechnet die Reserve dafür bereits ein.
Historisches¶
- agentmemory lief von Mai bis Juli 2026 als sitzungsübergreifendes Projektgedächtnis und war die einzige bewusste Ausnahme von der CLI-first-Linie. Am 07.07.2026 abgeschaltet — Dienst, zwölf Hooks und der MCP-Eintrag entfernt. Der systemd-User-Service ist inaktiv, sein Port ist nicht mehr offen.
- tmux für persistente Sitzungen war auf dem headless betriebenen Pi zwingend, weil ein SSH-Abbruch sonst die Sitzung mitnahm. Auf dem Laptop ist es nur noch Komfort.