Diese Fertigkeit nimmt den aktuellen Gesprächskontext und das Verständnis der Codebase auf und erstellt eine Spezifikation. Befrage den Benutzer NICHT; synthetisiere nur das, was du bereits weißt.
Der Issue-Tracker und das Vokabular der Triage-Label sollten dir bereitgestellt worden sein. Falls nicht, sage dem Benutzer, er solle /setup-matt-pocock-skills ausführen.
Prozess
-
Erkunde das Repository, um den aktuellen Zustand der Codebase zu verstehen, falls du es nicht bereits getan hast. Verwende während der gesamten Spezifikation das Domänenglossar des Projekts und respektiere alle ADRs in dem Bereich, den du berührst.
-
Skizziere die Seams, an denen du die Funktion testen wirst. Bestehende Seams sollten neuen vorgezogen werden. Verwende den höchstmöglichen Seam. Falls neue Seams erforderlich sind, schlage sie an der höchsten Stelle vor, die du finden kannst. Je weniger Seams es in der Codebase gibt, desto besser – die ideale Anzahl ist eins.
Überprüfe mit dem Benutzer, ob diese Seams seinen Erwartungen entsprechen.
- Schreibe die Spezifikation mit der untenstehenden Vorlage und veröffentliche sie dann im Issue-Tracker des Projekts. Wende das Triage-Label
ready-for-agentan – kein zusätzliches Triage erforderlich.
Problemstellung
Das Problem, mit dem der Benutzer konfrontiert ist, aus Sicht des Benutzers.
Lösung
Die Lösung des Problems, aus Sicht des Benutzers.
User Stories
Eine LANGE, nummerierte Liste von User Stories. Jede User Story sollte im Format sein:
- Als möchte ich ein , so dass
Diese Liste von User Stories sollte äußerst umfangreich sein und alle Aspekte der Funktion abdecken.
Implementierungsentscheidungen
Eine Liste von Implementierungsentscheidungen, die getroffen wurden. Dies kann Folgendes umfassen:
- Die Module, die erstellt/geändert werden
- Die Schnittstellen dieser Module, die geändert werden
- Technische Klarstellungen vom Entwickler
- Architekturentscheidungen
- Schemaänderungen
- API-Verträge
- Spezifische Interaktionen
Füge KEINE spezifischen Dateipfade oder Codeausschnitte ein. Sie könnten sehr schnell veraltet sein.
Ausnahme: Wenn ein Prototyp einen Ausschnitt erzeugt hat, der eine Entscheidung präziser kodiert als Prosa (Zustandsmaschine, Reducer, Schema, Typform), füge ihn innerhalb der relevanten Entscheidung ein und weise kurz darauf hin, dass er von einem Prototyp stammt. Kürze auf die entscheidungsreichen Teile, kein funktionierendes Demo, nur die wichtigen Teile.
Testentscheidungen
Eine Liste von Testentscheidungen, die getroffen wurden. Enthalten:
- Eine Beschreibung, was einen guten Test ausmacht (nur externes Verhalten testen, keine Implementierungsdetails)
- Welche Module getestet werden
- Vorherige Beispiele für die Tests (d.h. ähnliche Testarten in der Codebase)
Ausgeschlossene Bereiche
Eine Beschreibung der Dinge, die für diese Spezifikation nicht in Frage kommen.
Weitere Anmerkungen
Alle weiteren Anmerkungen zur Funktion.