# Agentic Second Brain Bootstrap

Du bist Setup-Assistent für ein Agentic Second Brain.

## Voraussetzung — uv installiert

`uv` muss auf dem System verfügbar sein. Single-Liner-Install:
- macOS/Linux: `curl -sSf https://astral.sh/uv/install.sh | sh`
- Windows PowerShell: `irm https://astral.sh/uv/install.ps1 | iex`

Prüfe die uv-Installation **primär per Bash**, weil Claude Codes PowerShell-Subprocess das frisch installierte `uv` im PATH nicht zuverlässig findet (B+-Testlauf 2026-05-11: vier PowerShell-Versuche schlugen fehl, ein Bash-Versuch ging sofort durch). Reihenfolge:

1. `bash -c "uv --version"` — primärer Versuch, funktioniert auf Windows (Git-Bash), macOS und Linux.
2. PowerShell-Fallback (nur Windows, wenn Bash nicht verfügbar): `& (where.exe uv | Select-Object -First 1) --version`. Robuster als nacktes `uv --version`, weil `where.exe` den Pfad explizit auflöst.

Bricht ab, wenn keiner der Wege Exit 0 mit Versions-String liefert.

## Schritt 1 — Bundle holen

URL: https://bootstrap.lehnisch.de/{{VERSION}}/bundle.zip
SHA-256: {{SHA256}}
Public Key (minisign, optional): nicht in {{VERSION}} — kommt mit v0.2.0

Lade Bundle, verifiziere SHA-256. Bei Mismatch: harter Abbruch, kein Fallback.

## Schritt 2 — Setup ausführen

**Zuerst: Ziel-Vault-Pfad explizit bestimmen (Pflicht, vor dem Entpacken).**
Frag den User über das `AskUserQuestion`-Tool nach dem absoluten Pfad des
Ziel-Vault-Ordners. Default-Vorschlag: das Verzeichnis, in dem diese
BOOTSTRAP.md liegt (das aktuelle Arbeitsverzeichnis). Der User darf bewusst
einen anderen Ort wählen — etwa einen anderen OneDrive- oder
OneDrive-for-Business-Ordner. Der bestätigte Pfad ist `<Ziel-Vault>` für alle
folgenden Schritte (Entpacken hier sowie INSTALL.md Schritt 7, 9 und 11) und
wird in INSTALL.md nicht erneut abgefragt. Fallback ohne `AskUserQuestion`-Tool
(Codex, eingeschränkte Sets): eine einzelne klare Chat-Frage, eine Antwort
abwarten. Entpacke erst, nachdem der Pfad bestätigt ist.

`AskUserQuestion`-Schema-Beispiel:

```json
{
  "questions": [
    {"question": "Absoluter Pfad des Ziel-Vault-Ordners (Default: aktuelles Verzeichnis dieser BOOTSTRAP.md). Du kannst bewusst einen anderen Ordner wählen, z.B. einen OneDrive-for-Business-Pfad:", "header": "Ziel-Vault-Pfad", "multiSelect": false}
  ]
}
```

Entpacke Bundle in `<Ziel-Vault>/.tmp_install/`. WICHTIG: `.tmp_install/`
muss IM Ziel-Vault-Ordner liegen (nicht unter C:\\temp\\), weil das atomare
Move auf Windows nicht cross-volume sicher ist.

**Cloud-Sync-Hinweis (OneDrive, Dropbox, iCloud):** Wenn der Ziel-Vault unter
einem Cloud-Sync-Pfad liegt, pausiere die Synchronisierung jetzt — der Setup-
Agent fragt das in INSTALL.md Schritt 8 nochmal über `AskUserQuestion` ab,
aber eine frühe Pause spart die Sync-Konflikte aus, die der B+-Lauf
2026-05-11 nachgewiesen hat. Pause-Anleitung Windows: Rechtsklick auf das
OneDrive-Tray-Icon → „Synchronisierung anhalten — 2 Stunden".

User-Eingaben sammelt der Setup-Agent in INSTALL.md durchgängig über
das `AskUserQuestion`-Tool (nicht über Markdown-Fließtext-Fragen). Falls
dein Agent das Tool nicht hat (Codex, eingeschränkte Sets): eine Frage pro
Nachricht, klare Antwort abwarten, dann nächste.

Lies `<Ziel-Vault>/.tmp_install/INSTALL.md`. Folge den Phasen dort. Die
Pipeline endet mit einem finalen sync-Lauf gegen den Vault-Root (INSTALL.md
Schritt 12c) — erst der setzt die Codex-Hook-Pfade auf den echten Vault-Pfad.
Codex-Nutzer bestätigen beim ersten Start einmalig den Hook-Trust.

**Entpack-Hinweis (gehärtet nach v0.19.4-Befund 3):** Der Setup-Agent entpackt
das Bundle via Python `zipfile`, nicht via Git-Bash `unzip`. Das garantiert
UTF-8-Sicherheit für Umlaute in Dateinamen (`07 Anhänge` bleibt mit echtem `ä`).
Details in INSTALL.md Schritt 9.

## Schritt 3 — Beide Tool-Konfigurationen

EGAL ob du Claude Code oder Codex bist: schreibe IMMER beide Tool-Konfigurationen
(.claude/settings.json UND .codex/config.toml). Auch beide Spiegelordner-Strukturen
werden angelegt. System-Eval-Test prüft das später.
