--- description: Behebt ein einzelnes Gitea-Issue Ende-zu-Ende. argument-hint: allowed-tools: > Bash, Edit, Read, Write, Grep, Glob, mcp__gitea__issue_read, mcp__gitea__issue_write, mcp__gitea__label_read, mcp__gitea__pull_request_write, mcp__gitea__pull_request_read, mcp__gitea__actions_run_read model: opus --- Bearbeite Gitea-Issue #$1 im aktuellen Repo. Schritt für Schritt: **Label-Regeln (wichtig):** Die Gitea-Label-API arbeitet mit numerischen Label-IDs, nicht mit Namen. Hole daher ZUERST einmalig die Label-Liste über `label_read` (`method: list_repo_labels`) und merke dir die Zuordnung Name → ID für die gesamte Bearbeitung. Verwende ausschließlich `add_labels` (mit `labels: []`) und `remove_label` (mit `label_id: `). Niemals `replace_labels` oder `clear_labels` benutzen — das löscht alle übrigen Labels des Issues (z.B. `prio/*`). 0. Vorbedingungen: Wenn Issue #$1 bereits `ai-wip` oder `ai-blocked` trägt, abbrechen (kein Doppelstart). Prüfe `git status --porcelain` — ist der Baum nicht sauber, abbrechen statt fremde Änderungen mitzucommitten. 1. Lies Issue #$1 (Titel, Beschreibung, Kommentare) über `issue_read`. Notiere die aktuell gesetzten Labels, damit du sie nicht verlierst. 2. Hole die Label-Liste via `label_read`. Setze Label `ai-wip` (`add_labels`), entferne `ai-ready` (`remove_label`). 3. Analysiere das Repo und finde die Ursache. Wenn der Scope zu groß/unklar ist (siehe CLAUDE.md), brich ab: kommentiere das Issue mit einer kurzen Begründung, setze `ai-blocked`, entferne `ai-wip`, und beende ohne Codeänderung. 4. Lege den Branch an: `git checkout main && git pull --ff-only`, dann `git checkout -b ai/issue-$1-` (Slug aus dem Issue-Titel, kleingeschrieben, Bindestriche statt Leerzeichen). 5. Implementiere den Fix. Halte den Diff minimal und fokussiert. 6. Führe die Tests aus (`./mvnw test`). Bei Rot: bis zu 2x nachbessern. Wenn danach immer noch rot → `ai-blocked`, `ai-wip` entfernen, Issue kommentieren, abbrechen. Hinweis: `e2e/*PlaywrightTest` überspringt sich selbst per JUnit-Assumption, wenn der Browser-Download fehlschlägt — übersprungen zählt nicht als rot und ist kein Abbruchgrund. 7. Commit mit Message: `fix: (#$1)`. 8. Push den Branch zum Remote. 9. Öffne via `pull_request_write` einen PR gegen `main`. Die PR-Beschreibung MUSS `Closes #$1` enthalten. 10. Warte den CI-Lauf des PR-Branches ab (`actions_run_read`, PR läuft automatisch gegen `.gitea/workflows/ci.yml`). - Grün: kommentiere am Issue mit dem PR-Link, setze Label `ai-review` (`add_labels`), entferne `ai-wip` (`remove_label`). - Rot: setze `ai-blocked`, entferne `ai-wip`, kommentiere das Issue mit einem kurzen Auszug aus dem CI-Log. Kein `ai-review`. Wenn du in einem Schritt `ai-blocked` setzt, entferne ebenfalls `ai-wip`. Existiert ein benötigtes Label nicht im Repo, kommentiere das am Issue statt zu raten — erfinde keine Label-IDs.