Schliesst Tickets ab mit Status-Update in Ticket-Datei und INDEX.md. Prueft Akzeptanzkriterien und Dokumentations-Anforderungen...
Ein Ticket wird mit diesem Skill vollstaendig abgeschlossen — Code, Doku, Status und Git in einem Rutsch.
Ein Ticket ist erst DONE wenn alles drumherum stimmt:
[x] DONEWas dieser Skill NICHT tut:
/review-code vor dem Close.git push und kein remote-delete des Branches — der User pusht manuell./close-ticket ios-023Aus Git-History und CHANGELOG-Struktur:
feature/<ticket-id> oder feature/<ticket-id>-<platform> (z.B. feature/ios-042, feature/shared-067-ios)<type>(<scope>): #<ticket-id> <kurzbeschreibung> (z.B. feat(ios): #ios-041 Bibliotheks-Suche)feat, fix, refactor, docs, test, choreios, android, shared, oder Sub-Bereich[Unreleased]-Sektion mit Subsektionen ### Added|Changed|Fixed|Removed (iOS) bzw. (Android). Jeder Eintrag endet mit (Ticket: <ticket-id>).Reihenfolge der Quellen:
(ios|android|shared)-(\d+) (z.B. "Schliesse Ticket ios-023" → ios-023)git rev-parse --abbrev-ref HEAD, dann Pattern feature/(ios|android|shared)-(\d+)(-(ios|android))? matchen. Beispiele:feature/ios-042 → ios-042feature/shared-067-ios → shared-067, Plattform-Hinweis ios (relevant fuer Shared-Tickets-Sonderfall)feature/shared-075 → shared-075Wenn die ID aus dem Branch abgeleitet wird, einmal sichtbar bestaetigen:
"Schliesse Ticket {id} (aus Branch
{branch}abgeleitet)."
Falls die Trigger-ID und die Branch-ID auseinanderlaufen: STOP, fragen welche stimmt — sonst merged man am Ende den falschen Branch.
Ticket-Dateinamen haben Suffixe — nie raten, immer per Glob suchen:
dev-docs/tickets/{platform}/{ticket-id}*.mdLese die Datei und extrahiere:
[ ], [~], [x])Wenn Status bereits [x] DONE:
"Ticket {id} ist bereits abgeschlossen. Pruefe nur noch Git-Zustand und Merge?" Bei "ja" weiter ab Schritt 4. Bei "nein" Ende.
Ermittle aktuellen Branch: git rev-parse --abbrev-ref HEAD
main → STOP, fragen: "Du bist auf main. Welcher Branch gehoert zu {ticket-id}?"{branch} — gehoert er zu {ticket-id}? (ja/nein)"git status --porcelain
Wenn leer: weiter zu Schritt 5.
Wenn nicht leer:
git status + kurzen git diff --stat.<type>(<scope>): #<ticket-id> <kurzbeschreibung>type aus Ticket-Typ ableiten (Feature → feat, Bug Fix → fix, Refactoring → refactor, sonst chore)scope aus Plattform (ios, android, shared)git add -A, lieber konkrete Pfade aus git status), commit.Lies den [Unreleased]-Block aus CHANGELOG.md.
Suche nach einer Zeile mit (Ticket: {ticket-id}).
Wenn vorhanden: OK, weiter zu Schritt 6.
Wenn nicht vorhanden:
Added (neues Feature), Changed (Aenderung an Bestehendem), Fixed (Bug Fix), Removed (Entfernung)(iOS) / (Android))- **Titel** - Beschreibung. (Ticket: {ticket-id})docs(<scope>): #<ticket-id> CHANGELOG-Eintrag**Status**: [~] IN PROGRESS (oder [ ] TODO) → **Status**: [x] DONEdev-docs/tickets/INDEX.md: Zeile mit Ticket-ID finden, [~] oder [ ] → [x]docs(<ticket-id>): Ticket abschliessengit checkout maingit merge --no-ff <branch> — Default-Merge-Message (Merge branch '<branch>') ist okgit branch -d <branch> (kein -D — falls da noch was nicht gemerged ist, soll's failen und der User entscheidet)Ticket geschlossen: {ticket-id}
Status: [x] DONE
Datei: dev-docs/tickets/{platform}/{filename}.md
INDEX.md: Aktualisiert
CHANGELOG: {Eintrag vorhanden / neu erstellt}
Git:
- Commits auf {branch}: {N}
- Merged in main (--no-ff)
- Branch lokal geloescht
Noch zu tun (manuell):
- git push origin main
- git push origin --delete {branch}
Falls User sagt "als WONTFIX schliessen":
[x] WONTFIX (statt [x] DONE)Bei shared-*-Tickets:
feature/shared-082-ios) → dann normal mergen, INDEX-Eintrag bleibt teilweise offenNormaler Pfad — Schritt 5 fuegt CHANGELOG nachtraeglich hinzu (eigener docs:-Commit). Kein Squash, kein Amend.
dev-docs/tickets/INDEX.md — Ticket-UebersichtCHANGELOG.md — [Unreleased]-Sektion ist Pflicht-Quelle fuer Release Notesdev-docs/release/RELEASE_GUIDE.md — was nach dem Close mit [Unreleased] passiert