--- name: wartung description: "Werkstatt-Kreislauf der AI-Box: einen KLEINEN Wartungsauftrag (Config-Migration, Dependency-Bump, Ein-/Zwei-Datei-Patch) eigenständig umsetzen — Branch im Box-Checkout, Patch, separater Reviewer-Subagent, Gate, Telegram-Merge-Vorschlag. Merge/Deploy NIE selbst." version: 1.0.0 author: MC2 (Autonomie E6) platforms: [linux] metadata: hermes: tags: [wartung, werkstatt, maintenance, mc2] --- # Werkstatt — Selbstwartungs-Kreislauf der Box Nutze diesen Skill, wenn ein kleiner, klar umrissener Wartungsauftrag für das MC2-Repo (`~/mission-control-v2`) vorliegt — vom Evolution-Radar oder direkt vom User. **Scope-Check zuerst:** Klein = Config-Schlüssel-Migration, Dependency-Bump (Lockfile), Patch in 1–2 Dateien. Alles Größere (Architektur, mehrere Module, neue Features): NUR einen Plan liefern (Text im Telegram-Vorschlag), KEINEN Code. ## Leitplanken (nicht verhandelbar) - NIEMALS auf `main` committen. NIEMALS mergen. NIEMALS deployen oder Dienste neu starten. - Security-Config ist TABU: keine Tokens, approvals, ufw, sudoers anfassen. - Die Live-Instanz (`~/mission-control-v2`) bleibt unberührt — gearbeitet wird NUR im Worktree. - Am Ende steht IMMER ein Telegram-Vorschlag; die Entscheidung trifft der User. - Gate rot oder Reviewer dagegen → trotzdem ehrlich melden (Branch bleibt liegen), nichts beschönigen. ## Ablauf 1. **Worktree anlegen** (Slug = kurzer Kebab-Case-Name des Auftrags): `cd ~/mission-control-v2 && git fetch origin && git worktree add /tmp/wartung- -b wartung/ origin/main` 2. **Patch** nur im Worktree. Minimal-invasiv, Stil der umgebenden Datei übernehmen (deutsche Kommentare, bestehende Muster). 3. **Selbst-Gate** (was zutrifft): - Python geändert → `python3 -m py_compile ` - Shell geändert → `bash -n ` - Frontend (`frontend/src/...`) geändert → auf der Box gibt es KEIN Node. Im Vorschlag ausweisen: „Gate eingeschränkt: tsc/Build läuft erst beim Merge auf dem PC." - Live-Check: `curl -sf http://127.0.0.1:9001/api/health` (muss grün bleiben — beweist, dass du die Live-Instanz nicht angefasst hast). 4. **Reviewer-Subagent** (frischer Kontext, Worker/Reviewer-Muster): `delegate_task` mit role=leaf. Gib ihm den AUFTRAG im Wortlaut + `git diff` des Worktrees. Seine Fragen: Erfüllt der Diff den Auftrag? Minimal-invasiv? Risiken/Nebenwirkungen? — Bei berechtigter Kritik: nachbessern (max. 2 Runden), sonst Kritik in den Vorschlag schreiben. 5. **Commit im Worktree** (Message `Werkstatt: ` + 2–4 Zeilen Was/Warum), dann **Branch zu Gitea pushen:** `git push origin wartung/` (die Box hat einen eigenen scoped Token, seit 02.07. hinterlegt). Push fehlgeschlagen? Nicht schlimm — Branch bleibt lokal, im Vorschlag erwähnen. 6. **Telegram-Vorschlag** über `bash ~/mission-control-v2/deploy/notify.sh -s "[Werkstatt]" ""`: In LUCYS Stimme an den Commander (nicht als anonymer Job): erst 1–2 Sätze, was gemacht wurde und was er jetzt entscheiden soll — dann knapp: geänderte Dateien · Kern des Diffs · Gate-Ergebnis · Reviewer-Urteil · Branch-Name · Frage „merge oder verwerfen?" 7. **Nichts löschen:** Worktree + Branch bleiben liegen, bis der User entschieden hat. ## Nach dem User-Entscheid (kommt als neuer Auftrag) - „verwerfen" → `git worktree remove /tmp/wartung- --force && git branch -D wartung/` (+ Remote-Branch löschen, falls gepusht: `git push origin --delete wartung/`) - „merge" → das Mergen nach main + Deploy macht der PC/Claude (Frontend-Builds gibt es nur dort). Du pushst NIE nach main — auch nicht mit Token.