Dokumentiert die 3 in diesem Repo gefundenen Fehlerklassen als wiederverwendbares Prüf-Prompt für andere Repos mit ähnlichen gh-tickets PowerShell-Skripten.
3.8 KiB
| description | agent | model | tools | ||||
|---|---|---|---|---|---|---|---|
| Audit der gh-tickets PowerShell-Skripte auf bekannte Fehlerklassen. Kopiere dieses Prompt in ein anderes Repo, das ähnliche Skripte verwendet. | agent | Claude Sonnet 4.6 (copilot) |
|
Audit: gh-tickets PowerShell-Skripte
Dieses Prompt prüft die PowerShell-Skripte eines gh-tickets-Skills (oder ähnlicher GitHub-CLI-Skripte) auf bekannte Fehlerklassen und repariert gefundene Probleme.
Schritt 1 – Skripte lokalisieren
Suche alle .ps1-Dateien im Skill-Verzeichnis (typisch: .github/skills/gh-tickets/).
Lies jede Datei vollständig.
Schritt 2 – Prüfliste
Prüfe jedes Skript auf folgende Muster:
2a) gh CLI – --json-Flag mit Leerzeichen nach Kommas
Fehlermuster:
gh issue view $N --repo $repo --json number, title, labels
Problem: gh interpretiert number,, title, und labels als drei separate Positionsargumente → Fehler accepts 1 arg(s), received 3.
Korrektur: Keine Leerzeichen nach Kommas:
gh issue view $N --repo $repo --json number,title,labels
2b) gh project item-list ohne --limit
Fehlermuster:
gh project item-list 2 --owner <owner> --format json | ConvertFrom-Json
Problem: Standard-Limit ist 20 Items. Bei >20 Items im Board werden Tickets stillschweigend nicht zurückgegeben – keine Fehlermeldung, falsches Ergebnis.
Korrektur:
gh project item-list 2 --owner <owner> --format json --limit 200 | ConvertFrom-Json
Prüfe alle Stellen im Skript, nicht nur die erste – manche Skripte rufen item-list mehrfach auf (z. B. einmal zum Suchen, einmal zum Lesen des Minimum-Order-Werts).
2c) Type-Label-Validierung unvollständig
Fehlermuster: Validierung prüft nur einen Teil der gültigen Type-Labels:
$hasType = ($labelList -contains "migration") -or
($labelList -contains "tech-decision") -or
($labelList -contains "infrastructure")
Problem: Weitere gültige Typen (block-planning, feature, refactoring, planning, test) werden als ungültig abgelehnt → Issues mit diesen Labels können nicht erstellt werden.
Korrektur: Vollständige Liste verwenden und dynamisch prüfen:
$validTypes = @("migration","tech-decision","infrastructure","block-planning","feature","refactoring","planning","test")
$hasType = ($labelList | Where-Object { $validTypes -contains $_ }).Count -gt 0
if (-not $hasType) {
Write-Error "Mindestens ein Type-Label erforderlich: $($validTypes -join ', ')"
exit 1
}
Passe $validTypes an die im jeweiligen Repo tatsächlich verwendeten Labels an (SKILL.md oder ähnliche Konventionsdatei lesen).
2d) Weitere Plausibilitätsprüfungen
$LASTEXITCODEnach Pipeline: Beiexternal_cmd 2>&1 | Out-Null– prüfe, ob$LASTEXITCODEdanach korrekt ausgewertet wird. In PowerShell 5.1 ist das zuverlässig; in PS 7 kann-ErrorActionnötig sein.- Fehlende Null-Checks: Wenn
$itemaus einerWhere-Object-Abfrage kommen kann, prüfe obif (-not $item)vorhanden ist. - Hardcodierte IDs: Project-ID, Field-IDs und Option-IDs sind oft hartcodiert. Prüfe ob sie noch mit dem tatsächlichen Board übereinstimmen (
gh project field-list <N> --owner <owner> --format json).
Schritt 3 – Fixes anwenden
Für jeden gefundenen Bug:
- Datei bearbeiten und Fix anwenden
- Fix direkt im Terminal testen (Skript aufrufen, Ausgabe prüfen)
- Kurze Zusammenfassung: welcher Bug, welches Skript, wie gefixt
Schritt 4 – Ergebnis berichten
Erstelle am Ende eine kompakte Tabelle:
| Skript | Bug | Status |
|---|---|---|
next-ticket.ps1 |
--json-Leerzeichen |
✅ gefixt |
| … | … | … / ✅ nicht betroffen |