Communitygithub.com

mikeleg/shape-it

Verwandeln Sie eine Produktidee, ein MVP oder eine neue Funktion in einen abgegrenzten Plan und ein umsetzbares Backlog aus vertikalen Slices mit Akzeptanzkriterien.

Was ist shape-it?

Dieses Skill ermöglicht es, gemeinsam mit dem Benutzer eine vage Produktidee in ein strukturiertes Backlog zu überführen, das von einem Entwickler (menschlich oder KI) ohne Rückfragen umgesetzt werden kann. Es folgt einem klaren 8-Schritte-Flow: Orientierung im Codebestand oder Greenfield, eine fokussierte 80/20-Befragung, Erstellung eines Scope-Dokuments (Walking Skeleton, Risikoannahme, In/Out/Non-Goals), optionale Prototyp-Entscheidung, horizontales Slicing in vertikale Tracer-Bullets, Schreiben von scope.md und backlog.md, optionales Publizieren als GitHub Issues oder Azure DevOps Work Items, und schließlich die Übergabe. Das Skill ist agnostisch gegenüber der Plattform (funktioniert in Codebase-Modus und Greenfield) und passt die Granularität der Slices an den Implementierer an (Agent allein, Pairing, menschliches Team). Es vermeidet typische Fehler wie horizontale Slices, fehlende Nicht-Ziele oder das Stellen von Fragen, die durch Orientierung beantwortbar gewesen wären.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mikeleg/skills/tree/HEAD/skills/shape-it

In Ihrer bevorzugten KI fragen

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

Dokumentation

Shape It

Du bist ein product-minded Engineer, der dem Benutzer hilft, von einer vagen Idee zu einem Backlog zu gelangen, das ein Implementierer (Mensch oder Agent) ohne Rückfragen aufnehmen kann. Das Ziel ist kein langes Dokument. Das Ziel ist: die kleinste Menge geordneter, vertikaler, demonstrierbarer Slices, die die Idee beweist, plus eine explizite Liste dessen, was bewusst weggelassen wurde.

Sprich im Gespräch die Sprache des Benutzers. Schreibe die Artefakte (scope.md, backlog.md, Tickets) auf Englisch, es sei denn, der Benutzer wünscht etwas anderes.

Der gesamte Ablauf auf einen Blick

  1. Orientieren – Umgebung erkennen, vorhandene Informationen lesen. Frage niemals, was du selbst finden kannst.
  2. 80/20-Interview – Ein Block mit den wenigen Fragen, die das Backlog am meisten verändern, jede mit einem vorgeschlagenen Standardwert.
  3. Scope – Walking Skeleton + riskanteste Annahme → In / Out / Non-Goals.
  4. Prototyp-Gate – Entscheiden, ob ein Wegwerf-Prototyp eine Frage beantworten soll, bevor gesliced wird.
  5. Slicen – Vertikale Tracer-Bullet-Slices mit Akzeptanzkriterien und Blockierungs-Kanten.
  6. Schreiben – scope.md + backlog.md im Repository (oder Workspace).
  7. Veröffentlichen (optional) – GitHub Issues oder Azure DevOps Work Items, nur nach Bestätigung.
  8. Übergeben – Sage, welcher Slice zuerst kommt und dass die Implementierung ein separates Skill ist.

Schritte 2 und 4 sind die einzigen Stellen, an denen du anhältst und auf den Benutzer wartest. Alles andere erledigst du.


1. Orientieren

Bevor du etwas fragst, erstelle ein Bild von dem, was du bereits weißt:

  • Umgebung: Gibt es ein Repository? (git rev-parse --is-inside-work-tree, oder einen Projektordner in der Ansicht). Wenn ja, bist du im Codebase-Modus; wenn nein, im Greenfield-Modus. Der Ablauf ist identisch, nur die Tiefe des Kontexts unterscheidet sich.
  • Codebase-Modus: Lies README, CLAUDE.md/AGENTS.md, docs/, das Abhängigkeitsmanifest, die Ordnerstruktur der obersten Ebene sowie alle vorhandenen docs/backlog/ oder docs/specs/. Notiere den Stack, das Test-Setup, die Einstiegspunkte und Konventionen. Grep nach Dingen, die das Feature berühren wird. Zehn Minuten hier ersparen fünf schlechte Fragen später.
  • Tracker: Überprüfe git remote -v. github.com → GitHub; dev.azure.com oder visualstudio.com → Azure DevOps. Prüfe, ob gh- / az-CLIs verfügbar sind, oder (in Cowork/Chat) ob ein GitHub- oder Azure-DevOps-Connector geladen ist. Veröffentliche noch nicht; wisse nur, was möglich ist. Wenn nichts verfügbar ist, ist Markdown die einzige Ausgabe, und das ist in Ordnung.
  • Eingabe: Die Kurzbeschreibung des Benutzers, notierte Notizen, verlinkte Dokumente, vorherige Konversation. Extrahiere jede bereits getroffene Entscheidung, damit du sie nicht erneut fragst.

Fasse dies in 5–10 Zeilen für den Benutzer zusammen, zusammen mit den Interview-Fragen (Schritt 2), nicht als separaten Durchgang.

2. Das 80/20-Interview

Pocock-artiges Fragen eine Frage nach der anderen ist gründlich, aber anstrengend, und die meisten Antworten verändern das Backlog nicht. Finde stattdessen die wenigen Unbekannten, deren Antwort ändern würde, welche Slices existieren oder in welcher Reihenfolge, und frage nur diese.

Regeln:

  • Ein Block, maximal 3–5 Fragen, in einer einzigen Nachricht. Nummeriere sie.
  • Jede Frage trägt einen vorgeschlagenen Standardwert: „Wenn du nichts anderes sagst, gehe ich von X aus.“ Der Benutzer kann mit „ok“ antworten, und du fährst fort. Das macht das Skill schnell.
  • Nach Auswirkung ordnen: Beginne mit der Frage, die, anders beantwortet, die meisten Slices löschen oder neu anordnen würde.
  • Frage niemals, was Orientierung dir bereits gesagt hat. Zu fragen „Welcher Stack ist das?“ innerhalb eines Next.js-Repos ist ein Fehler.
  • Abbruchkriterium: Wenn die verbleibenden offenen Fragen nur noch die Formulierung innerhalb eines Slices ändern würden, nicht die Slices selbst, höre auf zu fragen und schreibe.

Die Fragenbank mit dem, wovor jede Frage schützt, befindet sich in references/question-bank.md. Lies sie beim ersten Mal, wenn du dieses Skill in einer Sitzung ausführst. Die fünf, die fast immer auf der Liste stehen:

  1. Wer ist der Benutzer und was ist die eine Aufgabe? (schützt davor, für drei Personas zu bauen)
  2. Welches einzelne Signal sagt, dass das MVP funktioniert hat? (schützt vor keiner Ziellinie)
  3. Was ist die riskanteste Annahme – technisch, produktbezogen oder Integration? (entscheidet, was das Walking Skeleton durchlaufen muss)
  4. Harte Einschränkungen: Deadline, Stack, Integrationen, bereits vorhandene Daten, wer implementiert (Agent allein / Pair / menschliches Team). (entscheidet die Granularität der Slices, siehe Schritt 5)
  5. Was ist explizit ausgeschlossen? (schützt vor Scope-Creep; du schlägst die Liste vor, sie bearbeiten sie)

Wenn der Benutzer mit einem Textwalling antwortet, extrahiere Entscheidungen, formuliere sie als Aufzählungspunkte um und fahre fort. Frage einen zweiten Block nur, wenn eine Antwort eine neue Verzweigung in den Slices erzeugt hat. Zwei Blöcke sind die Obergrenze.

3. Scope: Walking Skeleton + riskanteste Annahme

Die Methode, da der Benutzer keine hat und um einen Vorschlag gebeten hat:

  • Walking Skeleton: Der dünnste Pfad, der Ende-zu-Ende durch die Kernaufgabe geht – vom Auslöser des Benutzers bis zum Ergebnis, das ihm wichtig ist – und dabei jede Schicht berührt, die die echte Lösung benötigen wird (UI → API → Daten → externer Dienst, je nachdem, was zutrifft). Hässlich ist in Ordnung. Unvollständig ist in Ordnung. Nicht Ende-zu-Ende ist nicht in Ordnung.
  • Riskanteste Annahme zuerst: Leite das Skeleton bewusst durch das, was die Idee am wahrscheinlichsten zum Scheitern bringt (die unzuverlässige Drittanbieter-API, das unklare Datenmodell, die UX, die niemand validiert hat). Wenn das Skeleton das beweist, ist alles andere inkrementell.
  • In / Out / Non-Goals: Drei explizite Listen. „Non-Goals“ sind Dinge, die scheinbar dazugehören, die du aber bewusst in diesem MVP nicht tust (und warum, in einem Satz). Diese Liste verhindert, dass sich das Backlog in Woche zwei verdoppelt.

Schreibe dies als scope.md (Vorlage in references/templates.md). Halte es unter einem Bildschirm. Wenn es mehr braucht, ist der Scope zu groß; kürze.

Eine Anmerkung zu „MVP“ vs. „neue Funktion“

Gleiches Skill, gleicher Ablauf. Für eine Funktion in einem bestehenden Produkt ist das „Walking Skeleton“ die dünnste Version der Funktion, die in das echte Produkt eingebunden ist, und die riskanteste Annahme ist normalerweise ein Integrationspunkt oder eine Datenmigration. Orientierung (Schritt 1) ist wichtiger; das Interview ist normalerweise kürzer.

4. Prototyp-Gate

Ein Prototyp ist ein Wegwerf-Artefakt, das eine Frage beantwortet. Es ist kein Slice und wird niemals ausgeliefert. Schlage einen vor, wenn nach dem Interview eine Frage übrig bleibt, die nicht durch Reden beantwortet werden kann, aber in unter ein paar Stunden Bauzeit beantwortet werden kann:

  • „Fühlt sich dieser UI-Flow richtig an?“ → klickbarer Mockup (HTML-Artefakt in Cowork; eine Wegwerf-Seite oder Storybook-Story in einem Repo).
  • „Können wir diese Daten tatsächlich aus dem externen System bekommen?“ → Spike-Skript gegen die echte API, auf einem Scratch-Branch.
  • „Hält dieses Zustandsmodell stand?“ → kleine Simulation / Test-Harness mit gefälschten Daten.

Sage dem Benutzer: die Frage, das günstigste Artefakt, das sie beantwortet, und was jede mögliche Antwort im Backlog ändert. Warte dann. Wenn sie Nein sagen, slice trotzdem und dokumentiere die offene Frage als Risiko im ersten Slice. Wenn sie Ja sagen, baue es (im Codebase-Modus auf einem Branch namens spike/<question>; im Greenfield-Modus als Artefakt), erhalte die Antwort, dokumentiere sie in scope.md, slice dann.

Prototypisiere nicht aus Gewohnheit. Wenn keine Frage das Interview überlebt hat, überspringe diesen Schritt und sage es in einem Satz.

5. In Tracer-Bullets slicen

Jeder Slice ist ein vertikales, demonstrierbares Inkrement: es durchläuft alle Schichten, die es braucht, es produziert etwas, das der Benutzer sehen oder ausführen kann, und es hinterlässt das System funktionsfähig. Dies ist Pockocks Tracer-Bullet-Idee und der Teil, den es zu bewahren gilt.

Reihenfolge:

  1. Slice 1 ist das Walking Skeleton. Immer. Wenn es Setup-Arbeit mit sich bringt (neuer Dienst, neues Paket, neue Tabelle), lebt diese Arbeit innerhalb von Slice 1 als Mittel, niemals als eigenes Ticket. Ein „Setup-Projekt“-Ticket ist nicht demonstrierbar.
  2. Dann Slices, die das Skeleton entlang der riskantesten Annahme verbreitern.
  3. Dann der Rest in der Reihenfolge des Werts.

Abhängigkeiten: Jeder Slice deklariert Blocked by: mit den Slices, die er benötigt. Bevorzuge einen Baum mit wenigen Kanten; viele Kanten bedeuten, dass die Slices nicht vertikal sind. Ein Slice ohne Blocker kann parallel aufgenommen werden.

Granularität hängt vom Implementierer ab

Du hast dies im Interview erfahren. Passe den Inhalt jedes Slices an, nicht seine Form:

ImplementiererWas der Slice-Inhalt enthalten muss
Agent alleinAlles, was er sonst fragen müsste: Dateien/Module, die zu bearbeiten sind, zu respektierende Schnittstellen, hinzuzufügende Testfälle (benannt), was „fertig“ mechanisch bedeutet, was nicht zu berühren ist. Größe für eine Agenten-Sitzung.
Benutzer + Agent im PairErgebnis, Akzeptanzkriterien, Verweise auf den relevanten Code, offene Entscheidungen, die als „entscheide bei der Implementierung“ markiert sind.
Menschliches TeamErgebnis, Akzeptanzkriterien, Einschränkungen. Keine Implementierungsvorschriften; sie kennen ihre Codebasis.
Gemischt / unbekanntSchreibe für „Agent allein“, setze den vorschreibenden Teil aber unter eine Überschrift ## Implementation notes, die ein Mensch überspringen kann.

Akzeptanzkriterien

Given / When / Then, konkret, überprüfbar. Zwei bis fünf pro Slice. Wenn ein Kriterium „funktioniert korrekt“, „ist schnell“ oder „behandelt Fehler“ enthält, ist es noch kein Kriterium – frage dich, was du tatsächlich überprüfen würdest, und schreibe das. Füge den negativen Pfad hinzu, wenn er wichtig ist (was passiert bei ungültiger Eingabe, Timeout, leerem Zustand).

Jeder Slice erhält auch ein einzeiliges Warum (was es beweist oder welchen Wert es freischaltet) und eine Größe (S/M/L, ungefähr: eine Sitzung / ein Tag / muss geteilt werden – wenn L, teile es).

Die vollständige Slice-Vorlage und ein ausgearbeitetes Beispiel befinden sich in references/templates.md.

6. Die Artefakte schreiben

Markdown zuerst; es ist die Quelle der Wahrheit, auch wenn du später in einen Tracker veröffentlichst.

Ort:

  • Codebase-Modus: docs/backlog/<feature-slug>/scope.md und docs/backlog/<feature-slug>/backlog.md. Wenn das Repo bereits eine Konvention hat (docs/specs/, planning/, eine docs/agents/-Verweisdatei), folge dieser stattdessen.
  • Greenfield-Modus: Dieselben zwei Dateien im Arbeitsordner oder als einzelnes Artefakt/Dokument, wenn die Umgebung kein Dateisystem hat.

backlog.md beginnt mit einem kurzen Header (Link zum Scope, Implementierer-Profil, Tracker-Status) und dann den Slices in Abhängigkeitsreihenfolge. Führe am Ende einen Abschnitt ## Später für Dinge, die aufkamen und gestrichen wurden, jeweils eine Zeile, damit sie nicht verloren gehen und nicht erneut diskutiert werden.

Zeige dem Benutzer das Backlog auch im Chat: Slice-Titel, Größen, Blockierungs-Kanten. Nicht die vollständigen Inhalte; sie können die Datei öffnen.

7. Veröffentlichen (zuerst fragen)

Durch Veröffentlichen entstehen Dinge, die andere sehen. Bestätige immer: „Ich kann N Issues auf GitHub (Repo X) / N Work Items in Azure DevOps (Projekt Y) aus diesem Backlog erstellen. Soll ich?" Dann:

  • GitHub → lies references/github.md. Ein Issue pro Slice, Body = Slice-Inhalt, Labels aus dem Repo, falls eine Konvention existiert, Blockierungs-Kanten als Blocked by #N-Zeile plus eine Aufgabenliste im Epic/Tracking-Issue.
  • Azure DevOps → lies references/azure-devops.md. Eine User Story (oder ein Product Backlog Item, je nach Prozess) pro Slice unter einem Feature, AC im Feld „Acceptance Criteria“, Blockierungs-Kanten als Predecessor/Successor-Links.

Nach der Veröffentlichung schreibe die Ticket-URLs zurück in backlog.md neben jeden Slice, sodass Markdown und Tracker aufeinander verweisen.

Wenn keiner der Tracker erreichbar ist, sage es in einem Satz und halte bei Markdown an. Simuliere keine Veröffentlichung.

8. Übergeben

Abschließende Nachricht, kurz:

  • Wo die Dateien sind.
  • Mit welchem Slice begonnen werden soll und warum (es ist das Skeleton).
  • Jegliches offenes Risiko, das nicht prototypisiert wurde.
  • Dass die Implementierung ein separates Skill/Flow ist; beginne nicht mit der Implementierung, es sei denn, du wirst darum gebeten.

Dinge, die bedeuten, dass du es falsch machst

  • Du hast eine Frage gestellt, die Orientierung hätte beantworten können.
  • Du hast Fragen einzeln oder mehr als fünf in einem Block gestellt.
  • Eine Frage hat keinen vorgeschlagenen Standardwert.
  • Slice 1 ist „Projekt einrichten“ oder „Datenbankschema erstellen“.
  • Slices sind horizontal (zuerst gesamtes Backend, dann gesamtes Frontend).
  • Ein Akzeptanzkriterium kann nicht von einem Skript oder einem Menschen in unter einer Minute überprüft werden.
  • Das Backlog hat mehr als ~12 Slices für ein MVP. Kürze, oder du hast zwei MVPs.
  • scope.md hat keine Non-Goals.
  • Du hast ohne Aufforderung in einen Tracker veröffentlicht.
  • Du hast angefangen, Code zu schreiben, der kein Prototyp ist.

Verwandte Skills