Files
claude-workflow/skills/ship/SKILL.md
T
martinandClaude Sonnet 4.6 2fbb59852e feat: Erweitere Skill-Beschreibungen mit präziseren Nutzungsrichtlinien
- Verfeinere Description-Felder aller Skills für besseres Triggering
- Neue skill-creator@claude-plugins-official Permission
- /story mit neuer Reference-Struktur (phase-spezifische Detail-Dateien)
- /go, /plan-review, /ship, /workflow-review: klarere Abgrenzungen
- Vereinfachung im Vergleich zu vorigen Versionen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 15:44:52 +02:00

110 lines
3.1 KiB
Markdown

---
description: Finaler Abschluss eines Features: Commit → Push → PR erstellen → PR mergen → Branch löschen → main pullen. Aktivieren wenn alles fertig ist und der Branch vollständig in main überführt werden soll. Unterschied zu /go: /ship merged den PR und räumt auf. Nicht aufrufen wenn der User nur committen, nur pushen, nur einen PR erstellen oder die Tests noch laufen lassen möchte.
context: fork
model: claude-haiku-4-5-20251001
---
# /ship — Commit, PR, Merge, Cleanup
Führe diese Schritte der Reihe nach aus. Bei jedem Fehler: Abbruch mit klarer Fehlermeldung.
## Schritt 0: Branch-Prüfung
```
git branch --show-current
```
Falls der aktuelle Branch `main` ist **und** es uncommittete Änderungen oder lokale Commits gibt, die noch nicht auf Remote sind: Branch-Namen direkt aus den geänderten Dateien ableiten und ohne lange Erklärung vorschlagen:
> „Du bist auf `main`. Ich lege Branch `feat/xyz` an — OK?"
Nach Bestätigung:
```
git checkout -b <branch-name>
```
Bei uncommitteten Änderungen: Änderungen bleiben erhalten (kein stash nötig, `checkout -b` nimmt sie mit).
Bei lokalen Commits auf main: Branch anlegen, dann `git push -u origin <branch-name>` — main bleibt unverändert.
Danach normal weiter mit Schritt 1.
## 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 <spezifische Dateien>
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 <branch>
```
## 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 <feature-branch>
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`