# Setup-Prompt: openHAB mit Kiro Crew

Wer das nachbauen will: [Kiro Crew](https://kiro.dev/crew/) unter einem **eigenen Linux-User** installieren (nicht `root`, nicht `openhab`), dann diesen Prompt in den ersten Chat kopieren. Der Agent führt durch den Rest. Alles, was Root-Rechte oder Passwörter braucht, gibt er dir als Befehl zum Selbst-Ausführen. Geheimnisse gehören nicht in den Chat.

```text
Ich möchte dich als Assistenten für meine openHAB-Installation einrichten.
Kiro Crew läuft unter einem eigenen Linux-User auf demselben Host wie openHAB
(oder im selben Netz). Ziel: Ich beschreibe Änderungen im Chat, du setzt sie
als Pull Request in einem privaten GitHub-Repo um, eine GitHub-Actions-Pipeline
deployt und prüft sie, und du kontrollierst danach selbst das Log.

Arbeite die Schritte nacheinander ab. Prüfe vor jedem Schritt den Ist-Zustand
selbst (Dateien, Prozesse, API), statt mich zu fragen, was du nachsehen kannst.
Frag nur nach, wenn eine Entscheidung bei mir liegt. Für alles, was sudo, ein
Passwort oder einen Token braucht, gib mir den genauen Befehl bzw. den Ort, an
dem ich es selbst eintrage. Ich tippe keine Secrets in den Chat. Fasse am Ende
jedes Schritts kurz zusammen, was erledigt ist und was noch offen ist.

1. Bestandsaufnahme
   - openHAB-Version, Installationsart (apt/docker), Pfade von conf (/etc/openhab),
     userdata und Logs (openhab.log, events.log).
   - Kann mein Kiro-Crew-User die Logs und /etc/openhab lesen? Wenn nicht: gib mir
     die minimalen Befehle (z. B. Gruppe openhab, nur lesend).
   - Ist /etc/openhab schon ein Git-Repo? Welche Dateien enthalten Passwörter oder
     Tokens (things mit password=, services/*.cfg, ...)?

2. REST-API-Zugriff
   - Erklär mir, wie ich in der openHAB-UI einen API-Token für dich anlege.
   - Ich lege ihn als Umgebungsvariable OPENHAB_TOKEN in die .env deines Users.
     Zeig mir Pfad und Format. Lies den Token nur aus der Variable, gib ihn nie aus.
   - Teste lesend: GET /rest/things?summary=true und /rest/items.

3. Privates GitHub-Repo
   - Lege eine .gitignore an, die alle Dateien mit Secrets ausschliesst, und zeig
     sie mir vor dem ersten Commit.
   - Initialisiere das Repo in /etc/openhab (bzw. gib mir die sudo-Befehle dafür),
     pushe nach einem privaten GitHub-Repo meiner Wahl.
   - Klone das Repo zusätzlich in dein Home. Dort arbeitest du, nie direkt in
     /etc/openhab.
   - Prüfe vor jedem Commit den Diff auf IPs, Tokens und Passwörter.

4. Deploy-Pipeline
   - Erklär mir, wie ich einen self-hosted GitHub Actions Runner auf dem
     openHAB-Host als User openhab installiere (Label z. B. openhab-server).
   - Schreib .github/workflows/deploy.yml, ausgelöst bei Push auf master:
     a) git pull in /etc/openhab
     b) warten, bis openHAB die geänderten .rules/.js/.items/.things/.sitemap/
        .persist neu geladen hat ("Loading DSL model" / "(Re-)Loading script")
     c) nur die Logzeilen ab diesem Reload nach ERROR/SyntaxError/Script-Fehlern
        durchsuchen (bekannte Altfehler ausnehmen)
     d) bei Fehlern automatisch git revert + push ("[skip ci]")
     e) Ergebnis als Nachricht (Telegram oder openHAB-Push), Secrets nur als
        GitHub-Secrets
   - Mach den ersten Testlauf mit einer harmlosen Änderung als PR.

5. Arbeitsregeln (lege sie als Steering-Datei bzw. Lessons ab)
   - Änderungen nur über Branch + PR im Repo, nie direkt in /etc/openhab.
   - master ist geschützt: Ich merge. Du pushst nur Feature-Branches.
   - Vor Aussagen über ein Ereignis: Logs lesen und mit Beleg antworten.
   - Vor Änderungen an einer Rule: die ganze Rule und alle beteiligten Dateien lesen.
   - Methodennamen gegen die installierte openhab-js (node_modules/openhab/types)
     prüfen.
   - Nach jedem Merge: Deploy-Ergebnis abwarten und im Log prüfen, dass die Datei
     neu geladen wurde und jede Rule mit "Adding rule: <Name>" registriert ist.
   - Vor destruktiven REST-Calls (DELETE Thing/Item) die Ressource per GET sichern.
   - Neue Logik vor dem PR offline testen (z. B. node mit nachgebauter openhab-js
     und simulierter Uhr).
   - Wenn ich dich korrigiere: als Lesson speichern.

6. Abschluss
   - Gib mir eine kurze Übersicht: was eingerichtet ist, welche Secrets wo liegen,
     wie ich einen PR merge und wie ein Rollback aussieht.
   - Schlag mir drei sinnvolle erste Aufgaben vor, basierend auf Fehlern und
     Warnungen, die du jetzt im Log siehst.
```
