ed399cec6c
fix-issue/next-issue had unresolved placeholders (<dein Testkommando>, <owner>/<repo>) and no explicit branch-creation step, so a run that skipped the CLAUDE.md convention could commit straight to main. Adds a CI-gate before setting ai-review (actions_run_read against the existing .gitea/workflows/ci.yml) instead of trusting self-reported test results, plus a /work-queue command to chain next-issue -> fix-issue. dev.bundle is Vaadin-regenerated and was tracked+dirty, so every autofix commit would have swept in unrelated binary diffs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0114SVTvBYjLBt3TTxhzJttd
3.0 KiB
3.0 KiB
description, argument-hint, allowed-tools, model
| description | argument-hint | allowed-tools | model |
|---|---|---|---|
| Behebt ein einzelnes Gitea-Issue Ende-zu-Ende. | <issue-nummer> | 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 | 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: [<id>]) und remove_label (mit label_id: <id>).
Niemals replace_labels oder clear_labels benutzen — das löscht alle
übrigen Labels des Issues (z.B. prio/*).
- Vorbedingungen: Wenn Issue #$1 bereits
ai-wipoderai-blockedträgt, abbrechen (kein Doppelstart). Prüfegit status --porcelain— ist der Baum nicht sauber, abbrechen statt fremde Änderungen mitzucommitten. - Lies Issue #$1 (Titel, Beschreibung, Kommentare) über
issue_read. Notiere die aktuell gesetzten Labels, damit du sie nicht verlierst. - Hole die Label-Liste via
label_read. Setze Labelai-wip(add_labels), entferneai-ready(remove_label). - 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, entferneai-wip, und beende ohne Codeänderung. - Lege den Branch an:
git checkout main && git pull --ff-only, danngit checkout -b ai/issue-$1-<kurz-slug>(Slug aus dem Issue-Titel, kleingeschrieben, Bindestriche statt Leerzeichen). - Implementiere den Fix. Halte den Diff minimal und fokussiert.
- Führe die Tests aus (
./mvnw test). Bei Rot: bis zu 2x nachbessern. Wenn danach immer noch rot →ai-blocked,ai-wipentfernen, 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. - Commit mit Message:
fix: <kurze Beschreibung> (#$1). - Push den Branch zum Remote.
- Öffne via
pull_request_writeeinen PR gegenmain. Die PR-Beschreibung MUSSCloses #$1enthalten. - 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), entferneai-wip(remove_label). - Rot: setze
ai-blocked, entferneai-wip, kommentiere das Issue mit einem kurzen Auszug aus dem CI-Log. Keinai-review.
- Grün: kommentiere am Issue mit dem PR-Link, setze Label
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.