diff --git a/CLAUDE.md b/CLAUDE.md index 834c136..e83d04a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -56,15 +56,17 @@ Kurzbefehl für den gesamten Ablauf: `/story` | Plan-Review | `/plan-review` | Opus 4.7 (Subagent) | | Implementierung | direkt | Sonnet 4.6 | | Test + Simplify + PR | `/go` | Haiku / Sonnet (Subagenten) | +| Commit + PR + Merge | `/ship` | Sonnet (fork) | | Security-Audit | `security-audit`-Agent | Opus 4.7 | ## Skills | Befehl | Datei | Beschreibung | |---|---|---| -| `/go` | `skills/go.md` | test-runner → code-simplifier → Gitea-PR | -| `/plan-review` | `skills/plan-review.md` | Startet plan-reviewer-Agent (Opus, fork) | -| `/story` | `skills/story.md` | Voller Lifecycle von Research bis PR | +| `/go` | `skills/go/SKILL.md` | test-runner → code-simplifier → Gitea-PR | +| `/ship` | `skills/ship/SKILL.md` | Commit → Push → PR → Merge → Cleanup (finales Kommando) | +| `/plan-review` | `skills/plan-review/SKILL.md` | Startet plan-reviewer-Agent (Opus, fork) | +| `/story` | `skills/story/SKILL.md` | Voller Lifecycle von Research bis PR | ## Agenten diff --git a/skills/ship/SKILL.md b/skills/ship/SKILL.md new file mode 100644 index 0000000..b23d177 --- /dev/null +++ b/skills/ship/SKILL.md @@ -0,0 +1,88 @@ +--- +description: Finales Commit → Push → PR erstellen → Mergen → Aufräumen. Explizit vom User aufzurufen wenn ein Feature abgeschlossen ist. +context: fork +--- + +# /ship — Commit, PR, Merge, Cleanup + +Führe diese Schritte der Reihe nach aus. Bei jedem Fehler: Abbruch mit klarer Fehlermeldung. + +## Schritt 1: Commit + +Prüfe ob es uncommittete Änderungen gibt: +``` +git status +git diff --stat +``` + +Falls ja: Erstelle einen Commit. Leite den Commit-Titel aus den geänderten Dateien und `git diff --stat` ab. Nutze das HEREDOC-Format: +``` +git add -p ← nur wenn sinnvoll, sonst: git add +git commit -m "..." +``` + +Falls nichts zu committen: weiter mit Schritt 2. + +## Schritt 2: Push + +``` +git push +``` + +Falls der Branch noch kein Remote-Tracking hat: +``` +git push -u origin +``` + +## Schritt 3: PR erstellen + +Ermittle Branch-Namen und Commits seit main: +``` +git branch --show-current +git log --oneline origin/main..HEAD +``` + +Erstelle den PR via `mcp__gitea__pull_request_write` (method: create): +- `owner`: aus git remote URL ermitteln +- `repo`: aus git remote URL ermitteln +- `head`: aktueller Branch +- `base`: main +- `title`: Erster Commit-Titel des Branches +- `body`: Alle Commits als Aufzählung + Akzeptanzkriterien als Checkboxen (was wurde geändert, wie verifiziert) + +Merke dir den PR-Index aus der Antwort. + +## Schritt 4: PR freigeben (Approve) + +Genehmige den PR via `mcp__gitea__pull_request_review_write` (method: create_review): +- `review_type`: APPROVED +- `body`: "Automatisch freigegeben via /ship" + +## Schritt 5: PR mergen + +Merge via `mcp__gitea__pull_request_write` (method: merge): +- `merge_style`: merge +- `delete_branch`: true ← löscht Remote-Branch automatisch + +## Schritt 6: Checkout main + Pull + +``` +git checkout main +git pull +``` + +## Schritt 7: Lokale Branches aufräumen + +``` +git branch -d +git remote prune origin +``` + +Falls `git branch -d` scheitert (Branch nicht vollständig gemergt laut git): trotzdem löschen mit `-D`, da wir wissen dass der PR gemergt wurde. + +## Abschluss + +Gib aus: +- PR-URL +- Welche Branches gelöscht wurden +- Aktueller Stand von `git log --oneline -3`