# Second-Brain Setup Instructions Du richtest für Jan Heberle den lokalen Zugriff auf sein privates Obsidian-Vault "second-brain" ein. Wichtige Regeln: - Schreibe keine Secrets, Tokens oder Passwörter in Dateien. - Nutze für Git-Zugriff einen dedizierten SSH-Key nur für dieses Repo. - Nutze für Claude Code Remote Control einen dauerhaften Hintergrunddienst, aber überschreibe keine bestehende funktionierende Service-Konfiguration unnötig. - Wenn etwas schon korrekt existiert, ändere es nicht unnötig. - Arbeite idempotent: vorhandene funktionierende Konfiguration beibehalten. - Keine riskanten Kurzbefehle wie `curl ... | sh` verwenden. - Wenn ein Schritt Adminrechte, GitHub-Anmeldung, Claude-Login oder eine einmalige Trust-Bestätigung braucht und das lokal nicht möglich ist, stoppe genau an der Stelle und sage klar, was noch fehlt. Zielzustand: - Das Repo `git@github-vault:heberlej/second-brain.git` ist lokal vorhanden unter: `/Users/janheberle/Library/Mobile Documents/iCloud~md~obsidian/Documents/second-brain` - Ein dedizierter SSH-Key liegt unter: `~/.ssh/obsidian_vault_github` - In `~/.ssh/config` gibt es einen Host-Eintrag `github-vault`, der genau diesen Key nutzt. - Das Vault wird automatisch alle 15 Minuten synchronisiert. - Claude Code Remote Control läuft dauerhaft als Hintergrunddienst, sofern `claude remote-control` auf diesem System verfügbar ist. - Globale Agent-Instruktionen enthalten den Hinweis, wie das Vault zu lesen ist, und bleiben dabei bewusst kompakt. - Tokenärmere Claude-Code-Defaults sind im User-Scope gesetzt, ohne andere bestehende Settings kaputtzumachen. Führe diese Schritte aus: 1. Vorprüfung - Prüfe, ob das Zielverzeichnis schon existiert. - Wenn dort bereits ein Git-Repo liegt, prüfe Remote-URL und Status. - Wenn das Repo schon korrekt vorhanden ist, nicht neu klonen. - Prüfe zusätzlich, ob bereits ein Auto-Sync-Job oder ein Remote-Control-Dienst existiert und korrekt läuft. 2. SSH-Key sicherstellen - Wenn `~/.ssh/obsidian_vault_github` fehlt, generiere einen neuen SSH-Key ohne Passphrase. - Typ bevorzugt: ed25519. - Lege den Public Key als Deploy Key mit Schreibrechten im GitHub-Repo `heberlej/second-brain` an. - Bevorzugt per `gh repo deploy-key add ~/.ssh/obsidian_vault_github.pub --repo heberlej/second-brain --title "$(hostname)-second-brain" --allow-write`. - Wenn der Key schon als Deploy Key existiert, nicht doppelt anlegen. 3. SSH-Config sicherstellen - Ergänze `~/.ssh/config` um genau einen Host-Block für `github-vault`: Host github-vault HostName github.com User git IdentityFile ~/.ssh/obsidian_vault_github IdentitiesOnly yes - Vorhandene andere Host-Blöcke nicht beschädigen. 4. Repo klonen oder reparieren - Repo-URL muss sein: `git@github-vault:heberlej/second-brain.git` - Falls das Repo lokal fehlt: in das Zielverzeichnis klonen. - Falls es lokal existiert, aber einen anderen Remote hat: `origin` auf die URL oben setzen. - Danach Verbindung testen, z. B. mit `git ls-remote origin`. 5. Auto-Sync einrichten - Erstelle das Script `~/.claude/vault-sync.sh`. - Das Script soll: - ins Vault-Verzeichnis wechseln - nur wenn lokale Änderungen existieren automatisch committen - mit einer neutralen Nachricht committen, z. B. `vault sync from $(hostname)` - danach `git pull --rebase` ausführen - danach `git push` ausführen - nach `~/.claude/vault-sync.log` loggen - Stelle sicher, dass das Script ausführbar ist. 6. Scheduler je nach Betriebssystem - macOS: `~/Library/LaunchAgents/com.janheberle.vault-sync.plist` anlegen und per `launchctl bootstrap` bzw. `launchctl kickstart` aktivieren. - Linux: systemd User Service + Timer oder Cronjob alle 15 Minuten. - Windows: Scheduled Task alle 15 Minuten. - Wenn das System eindeutig macOS ist, verwende launchd. 7. Claude Code Remote Control als dauerhaften Dienst einrichten - Ziel: `claude remote-control` soll nach dem Login automatisch starten und bei Abstürzen neu starten. - Prüfe zuerst, ob der Befehl `claude remote-control` auf dem System verfügbar ist. - Wenn eine einmalige Workspace-Trust-Bestätigung nötig ist, führe `claude remote-control` genau einmal interaktiv im gewünschten Arbeitsverzeichnis aus und richte erst danach den Dienst ein. - Bevorzugtes Arbeitsverzeichnis auf macOS: `/Users/janheberle/claude-workspace`. - macOS: richte `~/Library/LaunchAgents/com.claude.remote-control.plist` ein mit `RunAtLoad`, `KeepAlive`, `ThrottleInterval 5`, `TERM=dumb`, `HOME`, sinnvoll gesetztem `PATH`, `WorkingDirectory` auf das Arbeitsverzeichnis und `claude remote-control` als Kommando. - macOS: leite stdout nach `/dev/null` und stderr z. B. nach `~/Library/Logs/claude-remote.log`. - Linux: richte einen systemd User Service mit `Restart=always`, `RestartSec=5` und geeignetem `WorkingDirectory` ein. - Windows: falls praktikabel, einen dauerhaften Hintergrund-Task oder Dienst einrichten; wenn das auf dem Zielsystem nicht sauber möglich ist, klar dokumentieren, was noch manuell offen ist. - Wenn bereits ein funktionierender Remote-Control-Dienst existiert, nicht neu anlegen, sondern nur prüfen und falls nötig minimal korrigieren. 8. Tokenärmere Claude-Code-Defaults im User-Scope setzen - Nutze die offiziell dokumentierte User-Settings-Datei `~/.claude/settings.json`, nicht nur einen interaktiven `/config`-Befehl. - Wenn die Datei fehlt, lege sie an. Wenn sie existiert, merge nur die nötigen Keys und überschreibe keine anderen Einstellungen. - Setze `alwaysThinkingEnabled` auf `false`, sofern keine bewusst abweichende, bereits verwaltete Vorgabe existiert. - Wenn du JSON bearbeitest, arbeite gültig und minimal-invasiv. 9. Globale Agent-Instruktionen ergänzen - Falls `~/.claude/CLAUDE.md` existiert, ergänze dort einen kompakten Abschnitt zum Vault, falls er noch nicht vorhanden ist. - Inhalt sinngemäß: - Pfad des Vaults - Vor jeder Vault-Aufgabe zuerst `INSTRUCTIONS.md`, dann `INDEX.md` lesen - Sprache Deutsch - Wikilinks statt Markdown-Links - Keine Secrets im Klartext - Jede inhaltliche Änderung ins `CHANGELOG.md` - Neue Datei auch in `INDEX.md` aufnehmen - Antworten standardmäßig kurz, direkt und ohne unnötige Wiederholungen halten - Wenn die Datei nicht existiert, lege sie an, aber überschreibe nichts Bestehendes unnötig. - Halte diesen Abschnitt bewusst kurz, damit er nicht unnötig Kontext/Tokens verbraucht. 10. Validierung - Prüfe, ob das Vault-Verzeichnis existiert. - Prüfe, ob `git remote -v` die richtige URL zeigt. - Prüfe, ob `ssh -T github-vault` grundsätzlich funktioniert oder zumindest bis zur GitHub-Antwort kommt. - Prüfe, ob der Scheduler geladen ist. - Prüfe zusätzlich, ob der Remote-Control-Dienst geladen ist und ob der Prozess nach außen stabil läuft. - Prüfe zusätzlich, ob `~/.claude/settings.json` gültiges JSON ist und `alwaysThinkingEnabled: false` enthält. - Prüfe zusätzlich, ob der kompakte Stil-/Vault-Abschnitt in `~/.claude/CLAUDE.md` vorhanden ist. - Gib am Ende eine kurze Zusammenfassung mit: - was erstellt oder geändert wurde - welche Dateien betroffen waren - ob Auto-Sync aktiv ist - ob Remote Control dauerhaft aktiv ist - ob noch ein manueller Schritt offen ist Wenn das Setup schon vollständig vorhanden ist, führe nur die Validierung aus und ändere nichts unnötig.