wolneydev/slate-sdd

Geführte spezifikationsgetriebene Entwicklung (SDD). Verwende dies, wenn der Benutzer ein Feature beginnt, eine task.md / Anforderung / Idee sendet oder einfügt, nach dem nächsten Schritt in einem SDD-Flow fragt oder ein spezifikations-, design-, aufgaben- oder reviewdokument bzw. das docs/-Verzeichnis für SDD einrichten möchte. Auslöser sind „nova feature“, „crie uma spec“, „sdd“, „docs/specs“, „task.md“, „próximo passo“, „continuar“, „o que falta“.

Was ist slate-sdd?

Diese Klarheit-Skill implementiert einen vollständig geführten, spezifikationsgetriebenen Entwicklungsablauf (Spec-Driven Development, SDD) für KI-Assistenten wie Claude Code, Cursor oder Codex. Die Skill treibt den gesamten Prozess eigenständig voran: Sie erkennt den aktuellen Projektzustand, verarbeitet Benutzereingaben (Task-Dateien, Text, Ideen, Korrekturen oder einfache Bestätigungen), erstellt die erforderlichen SDD-Dokumente (Spezifikation, Design, Aufgaben, Review) und führt die Implementierung Schritt für Schritt durch. Jedes Feature durchläuft die Phasen Setup → Triage → Spezifikation → Design → Aufgaben → Implementierung → Review → Abschluss, wobei der Assistent nach jedem Schritt die Lücken identifiziert und nur gezielte Fragen stellt, die nicht aus Code oder vorhandenen Dokumenten beantwortet werden können. Die Skill unterstützt verschiedene Feature-Größen (klein, Feature, forschungsbedürftig), folgt einer strengen Schreibstil-Richtlinie aus ASD-STE100 (max. 20 Wörter pro Anweisung, aktiv, imperativ) und endet jede Antwort mit einem Guide-Block – einer Zusammenfassung des aktuellen Schritts, der erledigten Arbeit und des nächsten Schritts, sodass der Benutzer nie über den weiteren Verlauf nachdenken muss.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wolneydev/slatebend-sdd/tree/HEAD/skills/slate-sdd

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

Spezifikationsgetriebene Entwicklung (SDD) – geführter Modus

Der Benutzer muss den SDD-Ablauf nie kennen. Du steuerst ihn: Bei jeder Interaktion ermittelst du, wo das Projekt steht, erledigst alles, was du selbst tun kannst, fragst nur das, was du nicht ableiten kannst, und beendest die Antwort, indem du dem Benutzer genau mitteilst, was als Nächstes passiert.

Jedes Feature durchläuft spec.md → design.md → tasks.md → Implementierung → review.md. Vorlagen liegen in ${CLAUDE_PLUGIN_ROOT}/skills/slate-sdd/templates/. Beginne jeden Shell-Befehl, der Vorlagen kopiert, mit T="${CLAUDE_PLUGIN_ROOT}/skills/slate-sdd/templates"; (die Code-Ausschnitte unten verwenden $T).

Der Ablauf (führe dies jedes Mal aus, wenn die Skill verwendet wird)

  1. Erkenne den Zustand (siehe Zustandserkennung). Tue dies still – lies Dateien, frage den Benutzer nicht, wo er ist.
  2. Nimm die Eingabe auf. Was auch immer der Benutzer gesendet hat – einen task.md-Pfad, ein eingefügtes Dokument, einen Satz, „continue“, „ok“ – ordne es dem aktuellen Schritt zu (siehe Eingabe verarbeiten).
  3. Erledige die Arbeit des Schrittes selbst. Entwerfe das Dokument aus dem, was du weißt: der Eingabe, docs/PRODUCT.md, docs/PRINCIPLES.md, docs/ARCHITECTURE.md, docs/GLOSSARY.md und dem Code selbst. Untersuche die Codebasis, anstatt Dinge zu fragen, die der Code beantwortet (Stack, Befehle, Dateipfade, bestehende Muster). Schreibe jedes Dokument gemäß Schreibstil und führe vor dem Anzeigen dessen Selbstprüfung durch.
  4. Frage nur die Lücken (siehe Fragen stellen). Frage nie nach etwas, das du bereits mit angemessener Sicherheit entworfen hast – zeige es und lass es der Benutzer korrigieren.
  5. Schließe mit dem Guide-Block (siehe Guide-Block). Jede Antwort endet damit, ausnahmslos.

Sprich mit dem Benutzer in der Sprache, in der er schreibt. Schreibe die Dokumente in der Sprache, die die vorhandenen Projektdokumente verwenden (Englisch, falls es noch keine gibt, es sei denn, der Benutzer wünscht etwas anderes).

Zustandserkennung

Prüfe in dieser Reihenfolge und stoppe beim ersten Treffer:

#BedingungAktueller Schritt
1Kein docs/PRODUCT.md oder docs/PRINCIPLES.mdSetup – Projektdokumente
2PRODUCT.md/PRINCIPLES.md enthalten noch [placeholder]-TextSetup – fülle sie fertig aus
3Benutzer hat neue Arbeit (Datei, Text, Idee) gesendet, die nicht das aktive Feature istTriage der neuen Arbeit
4Aktives Feature hat spec.md mit status: draftSpezifikation
5spec.md genehmigt, design.md fehlt oder status: draftDesign
6design.md genehmigt, tasks.md enthält noch Vorlagen-PlatzhalterAufgaben (Planung)
7tasks.md hat eine T, die nicht done istImplementieren – nächste T
8Alle T erledigt, review.md status: pendingReview
9review.md genehmigt / genehmigt-mit-AnmerkungenAbschluss – Gedächtnis + Zustand, dann nächstes Feature anbieten

Aktives Feature = dasjenige, das in docs/MEMORY.md → Aktueller Zustand → In Bearbeitung genannt ist; falls das leer ist, das docs/specs/NNN-*/ mit der höchsten Nummer, dessen review.md nicht genehmigt ist. Wenn mehrere offen sind und der Benutzer keins genannt hat, frage welches (eine Frage, liste sie auf).

Eine schnelle Möglichkeit, den Zustand zu lesen:

ls docs/ docs/specs/ 2>/dev/null
grep -H '^status:' docs/specs/*/*.md 2>/dev/null
grep -H -- '- \*\*Status:\*\*' docs/specs/*/tasks.md 2>/dev/null

Eingabe verarbeiten

  • Ein Pfad zu einer task.md (oder einer .md/.txt) – lies sie vollständig. Behandle sie als rohe Anforderungen, nicht als fertige tasks.md: extrahiere Problem, Verhalten, Beispiele, Grenzfälle, Einschränkungen, Dateihinweise. Führe dann die Triage durch.
  • Eingefügter Text oder eine einzeilige Idee – wie oben.
  • "continue" / "próximo" / "ok" / "aprovado" / "pode seguir" – wenn das aktuelle Dokument auf Genehmigung wartet, ist dies die Genehmigung: setze seinen status und wechsle in derselben Antwort zum nächsten Schritt. Ansonsten führe einfach den aktuellen Schritt aus.
  • Eine Korrektur oder Antwort – wende sie auf das aktuelle Dokument an, aktualisiere alle dadurch aufgelösten Q, prüfe erneut auf Lücken, fahre fort.
  • Eine Frage zum Ablauf – beantworte kurz, fahre dann mit dem Guide-Block fort.

Triage (neue Arbeit)

Entscheide die Größe und sag in einer Zeile, was du entschieden hast:

  • Klein – offensichtlich, umkehrbar, ~1–3 Dateien, keine Designentscheidung (Tippfehler, kleiner Bug, Konfigurationsänderung). Erstelle nur tasks.md (in docs/specs/NNN-name/), fülle es aus und gehe direkt zu Implementieren. Überspringe Spezifikation/Design/Review, es sei denn, der Benutzer wünscht sie.
  • Feature – alles mit zu definierendem Verhalten oder einer Designentscheidung. Führe den vollständigen Ablauf aus.
  • Forschungsbedürftig – eine Schlüsselentscheidung ist wirklich unbekannt (Bibliothek, Ansatz, Anbieter). Vollständiger Ablauf plus research.md vor dem Design.

Wenn du zwischen klein und Feature unsicher bist, wähle Feature und sag, dass der Benutzer um eine Abkürzung bitten kann.

Erstelle dann den Ordner:

  1. Nächste Nummer = höchste NNN- in docs/specs/ + 1 (beginne bei 001). Name = kurzer Kebab-Case aus der Eingabe; frage nicht danach.
  2. Kopiere Vorlagen:
D=docs/specs/NNN-feature-name; mkdir -p "$D"
cp $T/specs/spec.md $T/specs/design.md $T/specs/tasks.md $T/specs/review.md "$D"/
# nur wenn Forschung nötig ist:
cp $T/specs/research.md "$D"/
  1. Setze alle aus der Eingabe gewonnenen Informationen sofort in die richtigen Dokumente ein: Problem/Abnahmekriterien/Einschränkungen/Ausgeschlossen → spec.md; Implementierungshinweise und Dateipfade → als Notizen für design.md/tasks.md behalten (nicht verlieren; unter dem entsprechenden Abschnitt hinzufügen, sobald du ihn erreichst).
  2. Aktualisiere docs/MEMORY.md → Aktueller Zustand → In Bearbeitung mit der Feature-ID und dem Schritt.
  3. Fahre in derselben Antwort direkt mit dem Spezifikations-Schritt fort.

Schritte

Setup

mkdir -p docs/decisions docs/specs
for f in PRODUCT PRINCIPLES ARCHITECTURE GLOSSARY MEMORY; do [ -f docs/$f.md ] || cp $T/$f.md docs/$f.md; done
[ -f docs/decisions/0000-template.md ] || cp $T/decisions/0000-template.md docs/decisions/
[ -f CLAUDE.md ] || cp $T/CLAUDE.md CLAUDE.md

Überschreibe niemals vorhandene Dateien. Dann befülle vorab aus dem Repository, bevor du etwas fragst: lies package.json / pyproject.toml / go.mod / Cargo.toml / Makefile / CI-Dateien / README, um Stack, Befehle, Verzeichniszuordnung und Komponenten auszufüllen. Frage den Benutzer nur nach dem, was der Code nicht sagen kann: was das Produkt ist und für wen, Ziele, Nicht-Ziele, Geschäftsregeln, Teamregeln. Wenn der Benutzer mit einem Feature kam, halte das Setup kurz (PRODUCT + PRINCIPLES Wesentliches) und fahre mit dem Feature fort; ARCHITECTURE und GLOSSARY können später schrittweise ausgefüllt werden.

Spezifikation

Fülle spec.md aus der Eingabe. Jedes Abnahmekriterium (AC) muss Gegeben/Wenn/Dann und eigenständig testbar sein – formuliere vage Anforderungen selbst in ACs um und zeige sie an. Jedes Unbekannte, das das Design blockiert, wird zu einem Q [blocking]; kleinere Unbekannte werden zu Q [non-blocking] mit deinem Lösungsvorschlag. Präsentiere eine kurze Zusammenfassung (Problem, ACs, Ausgeschlossen, offene Qs) und bitte um Genehmigung. Tor: Das Design beginnt erst, wenn keine blocking Q offen ist und der Benutzer genehmigt hat (oder gesagt hat, ohne zu fragen fortzufahren) → setze status: approved.

Design

Lies docs/PRINCIPLES.md und docs/ARCHITECTURE.md und untersuche die beteiligten Codepfade. Verfasse das vollständige design.md selbst; decke jedes AC ab (sage, welcher Teil welches abdeckt). Triff die lokalen Entscheidungen selbst als D-Einträge mit Begründung; bringe dem Benutzer nur Entscheidungen vor, die teuer rückgängig zu machen oder Geschmackssache sind, jede mit deiner Empfehlung. Eine Entscheidung, die das gesamte Projekt betrifft → schlage einen ADR in docs/decisions/ vor. Zeige eine kurze Zusammenfassung und bitte um Genehmigung. Tor: Wie Spezifikation.

Aufgaben

Fülle tasks.md aus Spezifikation + Design: kleine Ts in Abhängigkeitsreihenfolge, jede mit Covers, Files und einem echten Verify-Befehl aus PRINCIPLES.md → Commands. Jedes AC wird von mindestens einer T abgedeckt; jeder Grenzfall E hat einen Test. Kein Genehmigungstor, es sei denn, der Benutzer hat eines verlangt – zeige die Aufgabenliste und wechsle zu Implementieren.

Implementieren

Eine T nach der anderen: setze in-progress, implementiere, führe ihr Verify aus, setze done (oder blocked mit Grund). Nach jeder T berichte in 2–3 Zeilen und fahre mit der nächsten fort, es sei denn, etwas ist fehlgeschlagen, eine T widerspricht PRINCIPLES.md oder die Fertigstellung benötigt etwas aus Out of Scope – dann halte an und frage. Halte docs/MEMORY.md → In Bearbeitung auf die aktuelle T ausgerichtet.

Review

Fülle review.md: Implementierungsbericht, jedes AC mit Ergebnis und Nachweis, führe die vollständigen Test/Lint/Build-Befehle aus, wende die PRINCIPLES-Review-Checkliste an, liste Befunde auf. Prüfe die Feature-Dokumente gegen Schreibstil. Notiere jeden Verstoß als minor-Befund. Gib das Urteil ab. Behebe blocker/major-Befunde, wenn der Benutzer zustimmt, und wiederhole dann das Review.

Abschluss

Verschiebe dauerhafte Lektionen in docs/MEMORY.md, aktualisiere Aktueller Zustand (Erledigt += dieses Feature, In Bearbeitung gelöscht), füge die Fähigkeit zu PRODUCT.md → Capabilities hinzu, erstelle alle ADRs aus Nachverfolgungen. Biete dann das nächste Element an (aus Next, aus Review-Nachverfolgungen oder „sende mir die nächste Aufgabe").

Fragen stellen

  • Stelle maximal 3–5 Fragen pro Durchgang, die wichtigsten zuerst. Nummeriert, kurz.
  • Jede Frage enthält deinen Lösungsvorschlag, sodass der Benutzer mit „ok" / „1 ok, 2 nein" antworten kann, anstatt zu schreiben: 1. Sollen abgelaufene Links eine Fehlerseite anzeigen? → Vorschlag: ja, mit einem „erneut senden"-Button.
  • Wenn das AskUserQuestion-Werkzeug verfügbar ist und die Antwort eine Auswahl aus wenigen Optionen ist, verwende es, mit der empfohlenen Option zuerst.
  • Frage niemals, was der Code, die Dokumente oder die Eingabe bereits beantworten. Frage niemals den Benutzer, welchen SDD-Schritt er als Nächstes machen soll – das ist deine Aufgabe.
  • Wenn der Benutzer „entscheide du" / „tanto faz" / „pode seguir" sagt, übernimm deine Vorschläge, dokumentiere sie (als Q → Antwort oder D) und fahre fort.

Guide-Block

Beende jede Antwort mit diesem Block (in der Sprache des Benutzers), damit der Benutzer nie darüber nachdenken muss, was zu tun ist:

---
📍 Feature: NNN-feature-name · Schritt: Spezifikation (2/6)   [Setup · Spezifikation · Design · Aufgaben · Implementieren · Review]
✅ Erledigt jetzt: <eine Zeile>
❓ Benötigt von dir: <nummerierte Fragen oder „nichts">
➡️ Nächstes: <genau das, was nach der Antwort des Benutzers passiert – z.B. „Antworte ‚ok' um die Spezifikation zu genehmigen, und ich schreibe das Design">

Wenn nichts vom Benutzer benötigt wird, sag das und sag, was du als Nächstes bei „continue" tun wirst.

Der Guide-Block und Chat-Nachrichten müssen nicht die vollständige Schreibstil-Selbstprüfung durchlaufen. Halte sie kurz und direkt.

Dokumentenregeln

  • Ersetze jeden [placeholder], NNN und YYYY-MM-DD. Ein leerer Abschnitt wird zu None. – lösche niemals die Überschrift.
  • Verwende IDs (AC, Q, D, T, E, F), um zwischen Dokumenten zu verweisen, anstatt Text zu kopieren.
  • Lese docs/PRINCIPLES.md vor design.md und vor der Implementierung einer Aufgabe.
  • Wenn eine Anforderung unklar ist, füge ein Q hinzu und frage, anstatt zu raten. Wenn eine Aufgabe mit PRINCIPLES.md kollidiert, halte an und frage.
  • Jede Tatsache lebt in einem Dokument; andere verweisen darauf.

Schreibstil (jedes Dokument)

Das nächste Modell liest diese Dokumente und handelt danach. Schreibe so, dass jeder Satz nur eine Bedeutung hat. Diese Regeln gelten in jeder Sprache. Portugiesische Äquivalente sind in Klammern angegeben.

Klarheit & Präzision (inspiriert von ASD-STE100)

  1. Eine Idee pro Satz. Verwende maximal 20 Wörter in einer Anweisung. Verwende maximal 25 Wörter in einer Beschreibung.
  2. Eine Anweisung pro Satz. Verwende den Imperativ für Aktionen. Schreibe „Gib 404 zurück." Schreibe nicht „Das System sollte wahrscheinlich 404 zurückgeben."
  3. Aktiv, Präsens. Nenne den Akteur: den Benutzer, das System oder eine Komponente mit ihrem Namen.
  4. Ein Begriff = eine Bedeutung. Verwende den genauen Begriff aus docs/GLOSSARY.md. Verwende keine Synonyme für dasselbe Konzept. Wenn du einen neuen Fachbegriff verwendest, füge ihn in GLOSSARY.md hinzu.
  5. Anforderungsschlüsselwörter: verwende nur muss / darf nicht / kann (deve / não deve / pode). Verwende nicht „sollte", „idealerweise", „versuche", „wenn möglich" („deveria", „idealmente", „tentar", „se possível").
  6. Quantifiziere. Ersetze jedes vage Wort durch eine Zahl, eine Einheit oder ein beobachtbares Ergebnis. Verwende diese Wörter nicht ohne Zahl: schnell, langsam, viele, wenige, groß, klein, robust, einfach, benutzerfreundlich, einige, „usw.", „und so weiter" (rápido, lento, muitos, poucos, grande, robusto, fácil, adequado, alguns, „etc.").
    • Falsch: „Die Seite lädt schnell." Richtig: „Die Seite lädt in weniger als 2 s (p95)."
  7. Keine Redewendungen, Metaphern, Witze, Füllwörter oder Marketing-Ton.
  8. Keine unklaren Pronomen. Wenn „es", „dies" oder „das" („ele", „isso", „este") sich auf zwei Substantive beziehen kann, wiederhole das Substantiv.
  9. Struktur statt Prosa. Bevorzuge Listen und Tabellen. Ein Absatz hat maximal 3 Sätze.
  10. Exakte Namen in code. Schreibe Bezeichner, Pfade, Befehle, Felder und Werte in Backticks. Paraphrasiere sie nicht.

Grundprinzipien

  1. Beginne mit Tatsachen. Gewohnheit und Analogie sind keine Gründe. „Andere Projekte machen X" ist kein Grund.
  2. Kennzeichne jede relevante Behauptung:
    • Tatsache – verifiziert. Gib die Quelle an: Dateipfad, Befehlsausgabe, Daten oder Dokument.
    • Annahme – nicht verifiziert. Schreibe, wie sie zu verifizieren ist.
    • Entscheidung – eine Wahl. Gib den Grund an, abgeleitet aus Tatsachen oder Einschränkungen.
  3. Führe jede Entscheidung auf ein Problem, ein AC oder eine Einschränkung zurück. Wenn eine Entscheidung keine Rückverfolgung hat, entferne sie.
  4. Bedarf vor Lösung. Schreibe in dieser Reihenfolge: Problem → Einschränkungen → die einfachste Lösung, die diese erfüllt.
  5. Einfachste Option zuerst. Wähle die einfachste Option, die alle ACs erfüllt. Jede hinzugefügte Komponente, Abhängigkeit oder Schritt benötigt einen genannten Grund.

Selbstprüfung (vor dem Anzeigen eines Dokuments ausführen)

  • Kein [placeholder], NNN oder YYYY-MM-DD ist mehr vorhanden.
  • Kein verbotenes Wort aus Regel 5 und 6 ist mehr vorhanden.
  • Jeder Satz liegt innerhalb der Wortgrenze von Regel 1.
  • Jeder Fachbegriff ist in docs/GLOSSARY.md.
  • Jedes D und jede Entscheidung hat einen Grund.
  • Jede nicht verifizierte Behauptung ist als Annahme gekennzeichnet und hat eine Verifikationsmethode.

Referenz

Vorlagen in $T = ${CLAUDE_PLUGIN_ROOT}/skills/slate-sdd/templates/:

  • PRODUCT.md, PRINCIPLES.md, ARCHITECTURE.md, GLOSSARY.md, MEMORY.md, CLAUDE.md – auf Projektebene, einmal erstellt.
  • decisions/0000-template.md – ein ADR pro projektweiter Entscheidung.
  • specs/spec.md, design.md, tasks.md, review.md, research.md – ein Satz pro Feature.

Verwandte Skills