Files
claude-workflow/skills/ship/SKILL.md
T
martinandClaude Opus 4.6 a25d5eacac feat: .commit-on-main als Workflow-Erkennung in /go und /ship
Beide Skills erkennen den direkten Workflow jetzt über zwei Wege:
CLAUDE.md-Angabe oder Vorhandensein der Datei .commit-on-main.
Konflikt mit Remote-Version zugunsten der strukturierteren Variante
aufgelöst (explizite Schritt-Markierungen, getrennter Abschluss-Block).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-04 08:38:43 +02:00

125 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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: Git-Workflow erkennen
Prüfe, ob das Projekt den direkten Workflow (ohne Branches/PRs) nutzt. Das ist der Fall, wenn **mindestens eine** der folgenden Bedingungen zutrifft:
1. Die `CLAUDE.md` im Repository-Root gibt an, dass **direkt auf `master`/`main` commitet und gepusht** werden soll
2. Eine Datei `.commit-on-main` existiert im Repository-Root
**Nur Schritt 1 (Commit) und Schritt 2 (Push) ausführen**, dann direkt zum Abschluss springen. Schritte 37 entfallen.
Ansonsten: normaler Branch+PR-Workflow (weiter mit Branch-Prüfung).
## Schritt 0b: Branch-Prüfung (nur bei Branch+PR-Workflow)
```
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 (nur bei Branch+PR-Workflow)
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 (nur bei Branch+PR-Workflow)
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 (nur bei Branch+PR-Workflow)
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 (nur bei Branch+PR-Workflow)
```
git checkout main
git pull
```
## Schritt 7: Lokale Branches aufräumen (nur bei Branch+PR-Workflow)
```
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
**Bei direktem Workflow (kein PR):**
- Commit-Hash und -Titel
- Aktueller Stand von `git log --oneline -3`
**Bei Branch+PR-Workflow:**
- PR-URL
- Welche Branches gelöscht wurden
- Aktueller Stand von `git log --oneline -3`