name: checkliste description: Checkliste für den Fortschritt im Chat für jedes Projekt. Installiert fehlende Teile (Arbeitsprotokoll documenti/lavori.yaml, Skript strumenti-locali/avanzamento/stato.mjs, Regel in der CLAUDE.md, Zeilen in .git/info/exclude) und öffnet den Chat «Checkliste: Projektname» mit dem Widget. Verwenden, wenn der Benutzer /checklist schreibt oder bittet, die Checkliste in einem Projekt zu installieren. Um die Checkliste in einem Projekt anzuzeigen, das sie bereits hat, reicht die Regel in seiner CLAUDE.md.
/checklist: die Fortschritts-Checkliste im Projekt
/checklist installiert im aktuellen Ordner, was für die Checkliste fehlt, und zeigt sie dann in einem eigenen Chat an. Es überschreibt oder verändert nichts, was bereits vorhanden ist.
So arbeitest du:
- Der Projektordner ist der aktuelle Ordner. Alle Befehle starten von dort aus.
<base>ist das «Basisverzeichnis», das oben in dieser Skill angezeigt wird. Die Vorlagen befinden sich in<base>/modelle/.- Setze jeden Pfad in den Befehlen in Anführungszeichen: das Basis- und das Projektverzeichnis können Leerzeichen enthalten.
- Führe die Schritte der Reihe nach aus, ohne nach Bestätigungen zu fragen, es sei denn, der Schritt sagt dies.
- Jedes
grepverwendet-a: In Claude Code kanngrepeine Nicht-UTF-8-Datei als Binärdatei behandeln und vorhandene Zeilen nicht finden.
Schritt 1: Vorprüfungen
- Führe
command -v nodeaus. Wenn nichts ausgegeben wird, schreibe eine Zeile («Node.js 18 oder höher wird benötigt: installiere es und starte /checklist erneut») und stoppe. - Führe
git rev-parse --path-format=absolute --git-dirundgit rev-parse --path-format=absolute --git-common-diraus. Wenn die beiden unterschiedliche Ergebnisse liefern, befindest du dich in einem sekundären Worktree: schreibe eine Zeile («Du bist in einem Worktree: Das Protokoll würde mit ihm verschwinden. Führe /checklist im Hauptverzeichnis des Projekts aus») und stoppe. Wenn beide Befehle fehlschlagen, gibt es kein Git: fahre fort. - Führe
pwd -Pund(cd ~ && pwd -P)aus. Wenn sie das gleiche Ergebnis liefern, bist du im Home-Verzeichnis: schreibe eine Zeile («Du bist im Home-Verzeichnis: Der Block in der CLAUDE.md würde für alle Projekte gelten. Führe /checklist im Projektverzeichnis aus») und stoppe.
Der Schritt ist beendet, wenn node vorhanden ist und das Verzeichnis weder ein sekundärer Worktree noch das Home-Verzeichnis ist.
Schritt 2: Überprüfung der vier Teile
Schreibe nichts. Notiere für jeden, ob er vorhanden ist oder fehlt:
- das Protokoll: existiert
documenti/lavori.yaml; - das Skript: existiert
strumenti-locali/avanzamento/stato.mjs; - der Block:
grep -aqx '## Fortschritts-Checkliste' CLAUDE.mdgelingt (wennCLAUDE.mdnicht existiert, fehlt der Block); - die Ausschlusszeilen, nur mit Git (
git rev-parse --is-inside-work-treegibttrueaus): die Datei, die vongit rev-parse --git-path info/excludeausgegeben wird, enthält die genauen Zeilen**/documenti/lavori.yamlund**/strumenti-locali/avanzamento/. Es sind nur die Dateien der Skill: anderedocumenti/-Ordner des Projekts bleiben für git sichtbar. Überprüfe jede mitgrep -aqxF '**/documenti/lavori.yaml' "<Ausschlussdatei>"undgrep -aqxF '**/strumenti-locali/avanzamento/' "<Ausschlussdatei>". Wenn die Datei nicht existiert, fehlen beide.
Der Schritt ist beendet, wenn du weißt, welche Teile fehlen.
Schritt 3: Projektname
- Wenn der Block in der
CLAUDE.mdvorhanden ist, ist der Name, was auf «Aktualisiere die Checkliste von » bis zum schließenden Anführungszeichen»folgt, beim ersten Vorkommen. Befehl:grep -ao 'Aktualisiere die Checkliste von [^»]*' CLAUDE.md | head -1, ohne das Präfix. Wenn der Name vorhanden ist, stelle keine Fragen. Wenn der Befehl nichts ausgibt oder der Name leer bleibt (vom Benutzer geänderte Zeile), gehe zu Punkt 2. - Andernfalls stelle eine Frage mit AskUserQuestion. Erste Option, empfohlen: der Name des Ordners. Zweite Option: eine Variante, also der Titel
#der README, falls vorhanden und vom Ordnernamen verschieden, andernfalls der Ordnername mit anderen Groß-/Kleinschreibung oder Leerzeichen. Der Benutzer kann immer einen anderen Namen eingeben. - Wenn du keine Fragen stellen kannst (z.B. im nicht-interaktiven Modus), verwende den Ordnernamen und schreibe eine Zeile, die das sagt.
Der Schritt ist beendet, wenn du den Namen hast, der unten <PROJEKT> genannt wird.
Schritt 4: Installation der fehlenden Teile
Führe nur das aus, was Schritt 2 als fehlend festgestellt hat. Überschreibe oder modifiziere niemals, was vorhanden ist.
- Protokoll. Wenn es fehlt:
mkdir -p documentiund[ -e documenti/lavori.yaml ] || sed "s/<HEUTE>/$(date +%F)/g" "<base>/modelle/lavori.yaml" > documenti/lavori.yaml(die Sicherung schützt ein vorhandenes Protokoll, selbst wenn Schritt 2 sich geirrt hat). Wenn das Skript jedoch bereits vorhanden ist, könnte das Projekt eine eigene Checkliste haben, die ein anderes Protokoll liest (z.B.lavori.json): frage zuerst mit AskUserQuestion, obdocumenti/lavori.yamlerstellt werden soll. Erste Option, empfohlen: es nicht erstellen. Wenn die Antwort nein ist oder du keine Fragen stellen kannst, erstelle es nicht, schreibe eine Zeile, die das sagt, und überspringe auch die Ausschlusszeilen (Punkt 4), die sonst die Dateien der Projekt-Checkliste vor git verstecken würden. - Skript. Wenn es fehlt:
mkdir -p strumenti-locali/avanzamentoundcp -n "<base>/modelle/stato.mjs" strumenti-locali/avanzamento/stato.mjs. - Block in der CLAUDE.md. Wenn er fehlt:
- lese
<base>/modelle/claude-md.mdund ersetze jedes<PROJEKT>durch den Namen; - führe
mktemp -daus und schreibe den bereits ersetzten Block mit dem Dateischreibwerkzeug in<tmp>/block.md(<tmp>ist der ausgegebene Ordner); - wenn
CLAUDE.mdexistiert und nicht leer ist, bereite das Anhängen mit diesen beiden Befehlen vor (lies die Datei nicht und schreibe sie nicht neu):if [ -s CLAUDE.md ] && [ -n "$(tail -c1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi(fügt den abschließenden Zeilenumbruch hinzu, wenn er fehlt)if [ -s CLAUDE.md ] && [ -n "$(tail -n1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi(fügt die leere Zeile hinzu, wenn die letzte Zeile nicht leer ist) - hänge den Block an:
cat "<tmp>/block.md" >> CLAUDE.md(erstellt die Datei, wenn sie nicht existiert). Der Text des Benutzers wird niemals neu geschrieben. - Verwende nicht
sed: der Name kann/oder&enthalten.
- lese
- Ausschlusszeilen, nur mit Git. Sei
<ausschluss>der Pfad, der vongit rev-parse --git-path info/excludeausgegeben wird.mkdir -p "$(dirname "<ausschluss>")".- Füge den abschließenden Zeilenumbruch hinzu, wenn er fehlt:
if [ -s "<ausschluss>" ] && [ -n "$(tail -c1 "<ausschluss>")" ]; then printf '\n' >> "<ausschluss>"; fi. - Für jede fehlende Zeile von
**/documenti/lavori.yamlund**/strumenti-locali/avanzamento/:printf '%s\n' '**/documenti/lavori.yaml' >> "<ausschluss>"(oder'**/strumenti-locali/avanzamento/').
- Ohne Git, schreibe eine Warnzeile: «Hier gibt es kein Git: die Repo-Zeile im Widget bleibt leer.»
Der Schritt ist beendet, wenn jedes fehlende Teil erstellt wurde. Wenn nichts fehlte, ist der Schritt sofort beendet.
Schritt 5: Öffnen des Checklisten-Chats
Führe dies sowohl nach einer Installation als auch aus, wenn alles bereits vorhanden war.
- Wenn
mcp__ccd_session__start_sessionundmcp__ccd_session_mgmt__detach_sessionzu den deferred-Tools gehören, lade sie mit ToolSearch. - Rufe
start_sessionauf mit:initiation:user_askedcontext:freshuse_worktree:falseeffort:low(der Chat führt ein Skript aus und erstellt ein Widget: der Aufwand der Sitzung, von der aus gestartet wird, wird nicht benötigt)title: «Checkliste: »prompt: «Führenode strumenti-locali/avanzamento/stato.mjsaus und zeige die Checkliste wie in der CLAUDE.md beschrieben»background: «Fortschritts-Checkliste des Projekts : das Skript iststrumenti-locali/avanzamento/stato.mjs. Die CLAUDE.md des Projekts sagt, welches Protokoll verwendet wird, wie die Checkliste angezeigt wird und wann das Protokoll aktualisiert werden muss.»
- Rufe unmittelbar danach
detach_sessionmit der zurückgegebenen ID auf: Es ist ein Haupt-Chat, kein Unter-Chat. - Wenn
start_sessionfehlt (CLI) oder ablehnt: führenode strumenti-locali/avanzamento/stato.mjsaus und zeige die Checkliste in diesem Chat an, wie in<base>/modelle/claude-md.mdbeschrieben: mitshow_widgetoder als Markdown-Tabelle, wennshow_widgetfehlt. - Wenn
start_sessiongelingt, aber das Abtrennen fehlt oder ablehnt, schreibe eine Zeile: «Trenne es von der Seitenleiste mit Detach to top level ab.» - Jeder Start öffnet einen neuen Chat: suche nicht nach vorherigen Chats.
Der Schritt ist beendet, wenn der Chat geöffnet und abgetrennt ist oder die Checkliste in diesem Chat angezeigt wurde.
Schritt 6: Abschlussmeldung
Schreibe zwei oder drei Zeilen:
- was du hinzugefügt hast, oder «Alles war bereits vorhanden»;
- die Warnungen, falls vorhanden;
- wo der Checklisten-Chat zu finden ist.
Schreibe auch, dass es zum Hinzufügen oder Schließen von Aufgaben reicht, es im Chat zu sagen: die Regel in der CLAUDE.md aktualisiert das Protokoll.
Der Schritt ist beendet, wenn die Meldung geschrieben ist.