Für wen ist dieser Text?
Für dich, wenn du schon mal im Terminal gearbeitet hast, Markdown kennst und
npm,gitoderbrewnicht fremd sind. Du brauchst keine Grundlagen mehr — aber etwas Kontext, warum die Teile so zusammengebaut werden, hilft.Ergebnis: Drei funktionierende Kontext-Ebenen (global, Projekt, Vault), die Claude Code bei jedem Start automatisch liest.
Das mentale Modell
Claude Code ist nicht „ChatGPT im Terminal". Es ist ein LLM, das im Arbeitsverzeichnis lesen, schreiben und Befehle ausführen darf — mit Sicherheitsnetzen. Damit das sinnvoll wird, brauchst du Kontext in drei Schichten, die alle automatisch geladen werden:
- Global —
~/.claude/CLAUDE.md. Gilt überall, in jeder Session. Hier stehen Person, Sprache, harte Regeln, Anti-Präferenzen. - Projekt —
<repo>/CLAUDE.md. Stack, Build-Befehle, projektspezifische Hard Rules, Kundenkontext. - Vault —
<obsidian-root>/CLAUDE.md. Geschäftsmodell, Taxonomie, Workflow-Konventionen.
Alle drei werden beim Start einer Session als System-Prompt mitgegeben. Das ist der Grund, warum Claude Code aus dem Stand deinen Preis, deine Tonalität und deinen Stack kennt — ohne dass du es 100-mal im Chat wiederholst.
Darauf setzt alles Weitere auf (Skills, Slash-Commands, Subagents — das kommt in Tauchgang 02).
Lektion 1.1 — Installation und globale Konfiguration
Voraussetzungen prüfen
node -v # >= 18 erwartet; v20 LTS empfohlen
npm -v # kommt mit Node
Wenn Node fehlt: LTS von nodejs.org installieren. Auf dem Mac ist nvm bequemer, wenn du mehrere Node-Versionen parallel brauchst — nvm install --lts reicht dann.
Claude Code installieren
npm install -g @anthropic-ai/claude-code
Ein paar Punkte, die dir Zeit sparen:
- Wenn du Homebrew-Node nutzt, braucht
npm i -gkeinsudo. Bei System-Node schon. - Nach der Installation eine neue Shell öffnen, damit
$PATHdas neue Binary findet. Tmux/Zellij-Panes laufen in alter Umgebung — dort nochmalsource ~/.zshrcoder Pane neu aufmachen. - Authentifizierung funktioniert nur mit Claude Pro, Max, Team oder Enterprise (ab 20 $/Monat). Der erste
claude-Aufruf öffnet einen Browser-Login. Der Token landet in~/.config/anthropic/— auf Headless-Servern brauchst du SSH-Port-Forwarding für den Login-Flow.
claude # erster Start → Browser-Login
/exit # Session beenden
Die globale CLAUDE.md
Speicherort: ~/.claude/CLAUDE.md. Diese Datei wird in jeder Claude-Code-Session automatisch geladen, egal aus welchem Arbeitsverzeichnis heraus.
# Global
## Identity
- Sebastian Sperber, Mediengestalter & Art Director, Röthenbach a. d. Pegnitz.
- §19 UStG Kleinunternehmer — keine MwSt. auf Rechnungen.
## Language
- Antworte auf Deutsch. Code, Datei-/Branch-Namen, Git-Commits auf Englisch.
- Commit-Format: Conventional Commits (feat:, fix:, docs:, …).
## Behavior
- Lies Dateien vollständig, bevor du editierst. Keine Edits ohne vorherigen Read.
- Keine erfundenen Pfade/Funktionen. Lieber ehrlich „weiß ich nicht".
- Keine Trailing-Summary — ich lese den Diff.
- Kein Emoji-Noise.
## Tooling-Präferenzen
- TypeScript bevorzugt, strict: true, kein any.
- Kein redundantes Error-Handling für Szenarien, die nicht eintreten können.
- Prefer rg über grep, fd über find, wenn verfügbar.
## Destruktives
- Nie ohne Rückfrage: git reset --hard, git push --force, rm -rf, DB-DROP, publish.
- Backups vor Migrationen verifizieren, nicht nur anstoßen.
Die Projekt-CLAUDE.md
In jedem Repo (oder Projekt-Ordner) legst du eine eigene CLAUDE.md. Pattern für ein WordPress-Kundenprojekt:
# Kinderhaus Feucht – Website
## Stack
- WordPress 6.x, Elementor Pro, Astra-Child-Theme
- PHP 8.2, MySQL 8
- UpdraftPlus daily, Backups auf externen Server
- Lokal: WordPress Studio (wp-studio://)
## Befehle
- wp db export backups/$(date +%F).sql vor DB-Edits — immer.
- Staging-Push via „All-in-One WP Migration", kein roher DB-Copy.
## Hard Rules
- Parent-Theme wird nicht editiert. Nur Astra-Child.
- Fluent Forms, nicht Contact Form 7 (DSGVO + Entry-Handling).
- Vor jedem Deploy: UpdraftPlus-Backup ausführen UND prüfen, dass es durchgelaufen ist.
## Kunde
- Kinderhaus Feucht, Bestandskunde (65 €/h).
- Ansprache „Sie", Mail bevorzugt vor Call.
- Stefan Krieger ist Haupt-Ansprechpartner.
Zwei Tipps aus Erfahrung:
- Die CLAUDE.md gehört ins Repo, nicht ins
.gitignore. So hat jeder Claude-Lauf denselben Kontext, egal auf welchem Rechner. Wenn Secrets drin sein müssten, zieh sie in eine separate Datei und verweise per Pfad. - Die Datei ist ein lebendes Dokument. Wenn du dich beim dritten Mal wiederholst („immer Child-Theme, nie Parent"), gehört die Regel in die CLAUDE.md — nicht nochmal in den Chat.
Verifikation
cd ~/Projekte/kinderhaus
claude
Prompt:
Fasse den Kontext aus globaler und Projekt-CLAUDE.md in einer Bullet-Liste zusammen.
Hebe Widersprüche hervor, falls vorhanden.
Wenn beide Ebenen erkannt werden und keine Widersprüche gemeldet werden: Kontext-Layering steht.
Lektion 1.2 — Obsidian als Second Brain
Warum Obsidian und nicht Notion / Logseq / Capacities?
Plain Markdown auf der Platte. Das ist der einzige Grund, der zählt, wenn du mit Claude Code arbeiten willst:
rg,grep,claudeund jedes andere Tool lesen die Dateien direkt.- Kein API-Rate-Limit, kein OAuth-Refresh, kein Vendor-Lock-in.
- Sync wählst du dir aus: iCloud, Syncthing, ein Git-Repo — je nach Datenschutz-Level.
- DSGVO-nativ, wenn du nichts ausversehen ins Community-Plugin-Netz tropfen lässt.
Notion und Konsorten haben ihre Daseinsberechtigung, aber wenn Claude Code die Wissensbasis pflegen soll, brauchst du Plain-MD.
Ordnerstruktur
Eine opinionated Struktur, die sich bewährt hat:
MeinBusiness/
├── 00-daily/ # YYYY-MM-DD.md, eine Datei pro Tag
├── 00-inbox/ # unsortiert, Triage später
├── raw/ # Rohmaterial (Karpathy-raw-layer)
├── wiki/ # LLM-kuratierte Wissensbasis
│ └── index.md # Katalog, wird mitgepflegt
├── 01-calls/ # YYYY-MM-DD-<slug>.md, Prep + Notes
├── 02-proposals/ # YYYY-MM-DD-<kunde>-<projekt>.md
├── 03-marketing/ # Content-Strategie, Posts
├── 04-crm/kunden/ # <id>-<slug>.md pro Kunde
├── 05-content/ # Video-/Blog-/Newsletter-Drafts
├── 07-templates/ # wiederverwendbare Vorlagen
└── CLAUDE.md # Business-Schema
00- ganz oben = täglich benutzt. 07-/08- unten = selten gebraucht. Beiläufiger Effekt: beim Navigieren im Terminal kommst du mit cd 04<tab> schnell zum CRM.
Installation + Bootstrap
brew install --cask obsidian
cd ~/Documents
mkdir -p MeinBusiness/{00-daily,00-inbox,raw,wiki,01-calls,02-proposals,03-marketing,04-crm/kunden,05-content,07-templates}
cd MeinBusiness
git init
echo ".obsidian/workspace*" >> .gitignore
echo ".DS_Store" >> .gitignore
.obsidian/workspace* ignorieren: das sind Per-Machine-Layout-Dateien (welches Panel gerade offen ist), die in einem Git-Repo nur Konflikte erzeugen. Die Plugin-Konfigs (.obsidian/plugins/) willst du aber mitversionieren — sonst fehlen dir auf dem zweiten Rechner die Erweiterungen.
Business-CLAUDE.md im Vault
# Business
## Identity & Goals
- Preise: 82,50 €/h (Neu) · 65 €/h (Bestand)
- Jahresziel: 20 Kursteilnehmer:innen „Tauchgang" bis Ende Q2.
## Services
| Service | Einheit | Preis | Notiz |
|---|---|---|---|
| Website-Check | 30 min | 150 € | Lead-Magnet |
| WP-Neuaufbau | pauschal | ab 1.500 € | Scope-Kickoff vor Angebot |
| Betreuungsvertrag | Monat | ab 250 € | Recurring Revenue |
## Workflows
- Anfrage → 04-crm/kunden/<id>-<slug>.md anlegen (Template aus 07-templates/kunde.md).
- Call → 01-calls/YYYY-MM-DD-<slug>.md (Prep oben, Notes unten).
- Angebot → 02-proposals/YYYY-MM-DD-<kunde>-<projekt>.md.
## Anti-Liste
- Keine Aufträge unter 200 €.
- Keine Shops ohne klares Zahlungs-Setup.
- Keine Projekte mit mehr als drei Entscheidern ohne PM-Rolle.
Der Punkt mit der Anti-Liste wird oft unterschätzt. Wenn Claude einen Angebotsentwurf schreiben soll, liest er die Anti-Liste und lehnt den Entwurf höflich ab, wenn das Briefing gegen die Regeln verstößt. Das spart mehr Entscheidungen, als man am Anfang glaubt.
Lektion 1.3 — Claude und Vault integrieren
Das raw/ → wiki/ Prinzip
Kommt von Andrej Karpathy. Grundidee: trenne ungefiltertes Eingangsmaterial von der kuratierten Wissensbasis. Claude macht die Brücke.
- In
raw/landet alles unbearbeitet: Artikel-Exports, Call-Transkripte (MacWhisper speichert direkt als.md), Mail-Auszüge, Screenshots mit OCR-Text. - Aus
raw/zieht Claude strukturierte Artikel nachwiki/<thema>.md. Jeder Artikel hat einen klaren Fokus, Quellenangabe und Wiki-Links zu verwandten Themen. wiki/index.mdwächst als Inhaltsverzeichnis mit,wiki/log.mdprotokolliert jede LLM-Bearbeitung.
Der Prompt (später als Slash-Command in Tauchgang 02):
Lies alle Dateien in raw/, deren mtime nach dem letzten Eintrag in wiki/log.md liegt.
Für jede Datei:
1. Extrahiere die 3-5 Kern-Themen.
2. Lege oder erweitere wiki/<thema>.md. Bei bestehenden Artikeln: neuen Abschnitt ergänzen,
nicht überschreiben.
3. Quelle als Fußnote oder YAML-Frontmatter vermerken (source, date, tags).
4. Wiki-Links [[...]] zu verwandten Artikeln ziehen.
5. wiki/index.md flach nach Kategorie aktualisieren.
6. Append an wiki/log.md: "ISO-Datum | Datei | Aktion".
Bei Binary-Quellen (PDF, PNG) → in raw/skipped.md notieren, nicht parsen.
Performance-Tipp: PDFs vorher mit pdftotext oder pandoc nach Markdown wandeln. Der LLM braucht für eine PDF-Seite je nach Einbettung 5–20× so viele Tokens wie für reinen Text.
CRM — ein Template statt Freestyle
Lege eine Vorlage an: 07-templates/kunde.md. Dann kopierst du sie pro neuem Kunden und passt die YAML-Metadaten an.
---
id: <nnn>
name: <Name>
tier: bestand|neu
rate: 65|82.50
since: YYYY-MM
channel: mail|call
---
# <nnn> <Name>
## Kontakt
- E-Mail:
- Telefon:
- Website:
## Status
- Seit:
- Letzter Kontakt:
## Gesprächshistorie
## Aktive Projekte
## Offene Rechnungen
## Nächste Schritte
- [ ]
Warum das YAML-Frontmatter? Damit lassen sich zielgerichtete Claude-Abfragen auf den Metadaten bauen, ohne jede Datei vollständig zu lesen:
Öffne 04-crm/kunden/*.md, lies NUR das YAML-Frontmatter.
Gib mir alle Kunden mit tier=bestand und (heute - since) > 180 Tage,
die in den letzten 30 Tagen keinen Kontakt hatten.
Das spart in großen Vaults dramatisch Tokens.
Morgendliche Triage
Ein Prompt, den du zur Gewohnheit machst:
Lies 04-crm/kunden/*.md und 00-daily/ der letzten 7 Tage.
Output:
- Kunden mit "Letzter Kontakt" > 14 Tage und offenen Tasks.
- Gesamtbetrag offene Rechnungen.
- Nicht-beantwortete Anfragen.
Format: priorisierte Liste, jede Zeile mit einer konkreten nächsten Aktion.
Der Output gehört als Eröffnung in dein heutiges Daily-Log. Drei Minuten morgens, und du weißt, wo du wirklich stehst.
Test der gesamten Integration
cd ~/Documents/MeinBusiness
claude
Prompt:
Gib mir die drei dringendsten Business-Themen für diese Woche.
Jedes Thema mit Datei-Referenz (Pfad:Zeile oder Pfad) und einer konkreten nächsten Aktion.
Wenn Claude mit echten Datei-Referenzen antwortet, nicht mit Allgemeinplätzen: dein Business hat ein Gedächtnis, das skaliert.
Häufige Probleme und Lösungen
| Problem | Ursache | Lösung |
|---|---|---|
command not found: claude nach Installation | $PATH noch nicht aktualisiert | Neue Shell öffnen oder source ~/.zshrc |
EACCES-Fehler bei npm install -g | System-Node ohne Schreibrechte | sudo npm install -g … oder via nvm einen User-Node installieren |
| Claude erfindet Pfade/Funktionen | Kontext zu knapp oder widersprüchlich | Regel in CLAUDE.md: „Keine erfundenen Pfade"; zusätzlich --model-Stufe erhöhen |
| Session wird beim CRM-Durchsuchen langsam | Vault zu groß, zu viel Inline-Content | Erst rg oder fd für Vorfilterung, dann nur Treffer in den Prompt reichen |
iCloud-Sync erzeugt .conflict-* in Vault | Zwei Geräte schreiben parallel | Cron oder Hazel: Konflikte nach 00-inbox/conflicts/ verschieben und in wiki/log.md vermerken |
| Token-Budget knapp | Große Sessions, alles mit Claude Opus | Für CRM-Lookups Haiku oder Sonnet nehmen, Opus nur für Content-Generation |
Nach diesem Tauchgang
claudeCLI in$PATH, eingeloggt.~/.claude/CLAUDE.mdmit persönlichen Regeln.- Obsidian-Vault mit Karpathy-Layer und Git-Init.
- Business-
CLAUDE.mdim Vault mit Preisen, Services, Anti-Liste. - Mindestens eine Client-Datei aus
07-templates/kunde.md+ erstes Daily-Log. - Raw-zu-Wiki-Prompt einmal getestet.
Erfolgs-Check: Dreistufiger Kontext (global, Projekt, Vault) wird beim Start automatisch geladen. Claude zitiert konkrete Datei-Pfade und Zeilen, nicht nur Plattitüden.
Weiterführend (optional)
- Andrej Karpathys Tweets zum „Raw-Wiki-Pattern" — Suchbegriff: Karpathy raw wiki knowledge base.
- GitHub
anthropic/claude-code— Issues und Diskussionen für CLI-Flags und Release-Notes. @anthropic-ai/sdk— wenn du Skripte ohne Chat-UI bauen willst (z. B. nächtliche Wiki-Pflege per Cron).obsidianmd/obsidian-releases— Installer-Automatisierung für Multi-Geräte-Setups.