/checklist

/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.

Was ist checklist?

Die Skill /checklist ist ein fortschrittliches Werkzeug, das Entwicklern und KI-Agenten (wie Claude Code, Cursor, Codex) hilft, den Projektfortschritt in einem eigenen Chat zu verfolgen. Sie installiert automatisch alle fehlenden Komponenten: ein Arbeitsprotokoll (`documenti/lavori.yaml`), ein Status-Skript (`strumenti-locali/avanzamento/stato.mjs`), einen Regelblock in der `CLAUDE.md` und die entsprechenden Einträge in der `.git/info/exclude`-Datei. Nach der Installation öffnet sie einen dedizierten Chat „Checklist: <Projektname>“, der das Status-Skript ausführt und die Checkliste als Widget oder Markdown-Tabelle anzeigt. Die Skill ist besonders nützlich für Projekte, die eine klare Fortschrittsverfolgung benötigen, ohne bestehende Dateien zu überschreiben. Sie unterstützt sowohl interaktive als auch nicht-interaktive Modi und arbeitet mit Git-Repositories zusammen, indem sie sensible Dateien vor git versteckt. Entwickler können dann einfach in der Checkliste-Chat sagen, wenn sie Aufgaben hinzufügen oder abschließen möchten – die Regel in der CLAUDE.md sorgt für die automatische Aktualisierung des Protokolls.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Wolftux/checklist/tree/HEAD/plugins/checklist/checklist

Installed? Explore more Produktivität & Zusammenarbeit skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation


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 grep verwendet -a: In Claude Code kann grep eine Nicht-UTF-8-Datei als Binärdatei behandeln und vorhandene Zeilen nicht finden.

Schritt 1: Vorprüfungen

  1. Führe command -v node aus. Wenn nichts ausgegeben wird, schreibe eine Zeile («Node.js 18 oder höher wird benötigt: installiere es und starte /checklist erneut») und stoppe.
  2. Führe git rev-parse --path-format=absolute --git-dir und git rev-parse --path-format=absolute --git-common-dir aus. 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.
  3. Führe pwd -P und (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.md gelingt (wenn CLAUDE.md nicht existiert, fehlt der Block);
  • die Ausschlusszeilen, nur mit Git (git rev-parse --is-inside-work-tree gibt true aus): die Datei, die von git rev-parse --git-path info/exclude ausgegeben wird, enthält die genauen Zeilen **/documenti/lavori.yaml und **/strumenti-locali/avanzamento/. Es sind nur die Dateien der Skill: andere documenti/-Ordner des Projekts bleiben für git sichtbar. Überprüfe jede mit grep -aqxF '**/documenti/lavori.yaml' "<Ausschlussdatei>" und grep -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

  1. Wenn der Block in der CLAUDE.md vorhanden 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.
  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.
  3. 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.

  1. Protokoll. Wenn es fehlt: mkdir -p documenti und [ -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, ob documenti/lavori.yaml erstellt 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.
  2. Skript. Wenn es fehlt: mkdir -p strumenti-locali/avanzamento und cp -n "<base>/modelle/stato.mjs" strumenti-locali/avanzamento/stato.mjs.
  3. Block in der CLAUDE.md. Wenn er fehlt:
    • lese <base>/modelle/claude-md.md und ersetze jedes <PROJEKT> durch den Namen;
    • führe mktemp -d aus und schreibe den bereits ersetzten Block mit dem Dateischreibwerkzeug in <tmp>/block.md (<tmp> ist der ausgegebene Ordner);
    • wenn CLAUDE.md existiert 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.
  4. Ausschlusszeilen, nur mit Git. Sei <ausschluss> der Pfad, der von git rev-parse --git-path info/exclude ausgegeben 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.yaml und **/strumenti-locali/avanzamento/: printf '%s\n' '**/documenti/lavori.yaml' >> "<ausschluss>" (oder '**/strumenti-locali/avanzamento/').
  5. 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.

  1. Wenn mcp__ccd_session__start_session und mcp__ccd_session_mgmt__detach_session zu den deferred-Tools gehören, lade sie mit ToolSearch.
  2. Rufe start_session auf mit:
    • initiation: user_asked
    • context: fresh
    • use_worktree: false
    • effort: 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ühre node strumenti-locali/avanzamento/stato.mjs aus und zeige die Checkliste wie in der CLAUDE.md beschrieben»
    • background: «Fortschritts-Checkliste des Projekts : das Skript ist strumenti-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.»
  3. Rufe unmittelbar danach detach_session mit der zurückgegebenen ID auf: Es ist ein Haupt-Chat, kein Unter-Chat.
  4. Wenn start_session fehlt (CLI) oder ablehnt: führe node strumenti-locali/avanzamento/stato.mjs aus und zeige die Checkliste in diesem Chat an, wie in <base>/modelle/claude-md.md beschrieben: mit show_widget oder als Markdown-Tabelle, wenn show_widget fehlt.
  5. Wenn start_session gelingt, aber das Abtrennen fehlt oder ablehnt, schreibe eine Zeile: «Trenne es von der Seitenleiste mit Detach to top level ab.»
  6. 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.

Verwandte Skills