# 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. - Wenn etwas schon korrekt existiert, ändere es nicht unnötig. - Arbeite idempotent: vorhandene funktionierende Konfiguration beibehalten. - Wenn ein Schritt Adminrechte oder eine GitHub-Anmeldung 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. - Globale Agent-Instruktionen enthalten den Hinweis, wie das Vault zu lesen ist. 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. 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 - `git pull --rebase` ausführen - lokale Änderungen automatisch committen, aber nur wenn es Änderungen gibt - mit einer neutralen Nachricht committen, z. B. `vault sync from $(hostname)` - `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. 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 - Wenn die Datei nicht existiert, lege sie an, aber überschreibe nichts Bestehendes unnötig. 8. 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. - Gib am Ende eine kurze Zusammenfassung mit: - was erstellt oder geändert wurde - welche Dateien betroffen waren - ob Auto-Sync 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.