Files
Pit Friedrich ed399cec6c chore: harden gitea autofix workflow, ignore dev.bundle
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
2026-07-28 22:50:49 +02:00

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/*).

  1. 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.
  2. Lies Issue #$1 (Titel, Beschreibung, Kommentare) über issue_read. Notiere die aktuell gesetzten Labels, damit du sie nicht verlierst.
  3. Hole die Label-Liste via label_read. Setze Label ai-wip (add_labels), entferne ai-ready (remove_label).
  4. 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.
  5. Lege den Branch an: git checkout main && git pull --ff-only, dann git checkout -b ai/issue-$1-<kurz-slug> (Slug aus dem Issue-Titel, kleingeschrieben, Bindestriche statt Leerzeichen).
  6. Implementiere den Fix. Halte den Diff minimal und fokussiert.
  7. 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.
  8. Commit mit Message: fix: <kurze Beschreibung> (#$1).
  9. Push den Branch zum Remote.
  10. Öffne via pull_request_write einen PR gegen main. Die PR-Beschreibung MUSS Closes #$1 enthalten.
  11. 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.