From ffb940920192cf95265120f0a853fe505917aa83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Tr=C3=B6ger?= Date: Tue, 21 Apr 2026 13:20:28 +0200 Subject: [PATCH] fix: Erweitere /script-Skill mit besserer Fehlerbehandlung und Workflow-Klarheit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Präzisiert Fehlerfälle und Abbruchbedingungen - Verbessert Anleitung für Shellcheck-Integration - Klarere Separation zwischen Planung und Implementierung - Bessere Dokumentation des Lifecycle Co-Authored-By: Claude Sonnet 4.6 --- skills/script/SKILL.md | 98 +++++++++++++++++++++++++++++++++++------- 1 file changed, 83 insertions(+), 15 deletions(-) diff --git a/skills/script/SKILL.md b/skills/script/SKILL.md index 19f6843..19e819d 100644 --- a/skills/script/SKILL.md +++ b/skills/script/SKILL.md @@ -1,11 +1,14 @@ --- -description: Bash-Script-Lifecycle nach Best Practices — Planung (Opus) → Implementierung (Sonnet) → Linting + Test-Empfehlungen → /ship. Aktivieren wenn ein neues Bash-Script erstellt oder ein bestehendes Bash-Script substanziell erweitert werden soll, auch wenn der User nur "schreib mir ein Script" oder "automatisier das per Bash" sagt. Nicht verwenden für andere Shells (sh/zsh/fish), Python-/Node-Scripts, einfache Einzeiler/Aliase, reine Refactorings oder Bug-Fixes an bestehendem Verhalten. +description: Bash-Script-Lifecycle nach Best Practices — Aufgabenklärung → Scope-Einschätzung → Schnell- oder Vollpfad → shellcheck → PR → Merge. Aktivieren für jede Bash-Script-Aufgabe: neues Script, Feature, Bugfix, Refactoring. Nicht verwenden für andere Shells (sh/zsh/fish), Python-/Node-Scripts oder einfache Einzeiler/Aliase. model: claude-opus-4-6 --- # /script — Bash-Script-Lifecycle -Führe den Bash-Script-Lifecycle vollständig durch. **Warte nach jeder Phase auf Bestätigung.** +**Nicht-verhandelbare Mindeststandards — gelten für beide Pfade:** +- Feature-Branch +- `shellcheck` (alle Befunde beheben) +- PR erstellen, Approval abwarten, mergen ## Vorab: Repository-Check @@ -13,15 +16,83 @@ Führe den Bash-Script-Lifecycle vollständig durch. **Warte nach jeder Phase au git rev-parse --show-toplevel ``` -Scheitert der Befehl: **Abbruch**. Der Skill arbeitet ausschließlich innerhalb eines Repos, damit Plan und Script gemeinsam versioniert werden. Meldung an den User: +Scheitert der Befehl: **Abbruch**. Der Skill arbeitet ausschließlich innerhalb eines Repos. Meldung an den User: > "Kein Git-Repository gefunden. Starte `/script` erst nach `git init` oder aus einem bestehenden Repo." -## Phase 1: Planung (Opus) +--- + +## Phase 0: Aufgabenklärung + Scope-Einschätzung + +### 0a: Aufgabe klären + +Lies das betroffene Script (falls vorhanden) und den Request. Stelle offene Fragen, falls nötig — aber nur solche, die den Lösungsweg beeinflussen: + +- **Bei Bugfixes:** Was ist das erwartete Verhalten? Was passiert stattdessen? Wie lässt sich der Fehler reproduzieren? +- **Bei neuen Features:** Was soll das Script leisten, was es heute nicht kann? Gibt es Randbedingungen (Umgebung, Eingaben, Abhängigkeiten)? +- **Bei neuen Scripts:** Welches Problem wird gelöst? Wer ruft das Script auf und in welchem Kontext? + +Wenn der Request eindeutig genug ist, diese Fragen überspringen. + +Warte auf Antwort des Users, bevor du mit 0b fortfährst. + +### 0b: Scope einschätzen + +Entscheide anhand dieser Heuristiken: + +**Schnellpfad** wenn alle Punkte zutreffen: +- Kein neues CLI-Interface (kein neues Flag, kein neuer Subcommand, keine neue Abhängigkeit) +- Änderung betrifft nur internen Ablauf (Bugfix, Ausgabe, Logik) +- Geschätzter Diff: < 20 Zeilen + +**Vollpfad** wenn mindestens eines zutrifft: +- Neues Script +- Neues Flag, Subcommand oder externe Abhängigkeit +- Strukturelle Änderung (Error-Handling, Trap, Exit-Codes, Logging-Schema) +- Geschätzter Diff: ≥ 20 Zeilen + +Präsentiere dem User in einem Satz: Pfad + Begründung. Warte auf Bestätigung oder Korrektur. + +--- + +## Schnellpfad + +### S1: Branch + Implementierung + +```bash +git checkout -b fix/script- # oder feat/ je nach Typ +``` + +Änderungen direkt implementieren. Bash-Leitplanken einhalten: +- Quoting: `"$var"`, Arrays als `"${array[@]}"` +- Keine neuen Magic Numbers ohne benannte Konstante +- `set -euo pipefail` muss gesetzt bleiben + +### S2: shellcheck (Pflicht) + +```bash +shellcheck