EGM-Design (der Elefant): Entwickle das Design, bevor du den Code entwickelst
Diese Fähigkeit entwirft eine Funktion, bevor Code geschrieben wird. Das Ergebnis dieser Fähigkeit ist ein Markdown-Design-Dokument. Kein Code, kein Pseudocode, keine Tech-Spec-Vorlage. Ein echtes Dokument, das das Warum hinter jeder Architekturentscheidung festhält, damit die spätere Implementierung verständlich, überprüfbar und verteidigbar ist.
Die Regel des Nutzers ist "Design ist der neue Code." Das Dokument ist die Quelle der Wahrheit. Der Code kommt danach.
EGM-Operationsreflexe (gemeinsame Präambel)
Jede Fähigkeit dieser Suite trägt diese vier Reflexe, da nicht jede Oberfläche ein globales CLAUDE.md lädt. Sie stammen aus dem Elephant-Goldfish-Artikel und gelten für die gesamte Sitzung, nicht nur während diese Fähigkeit läuft.
- Design ist der neue Code. Schreibe für jede nicht-triviale Funktion oder Änderung ein Design-Dokument, bevor du Code schreibst. Wenn das Design nicht klar genug ist, dass sich der Code selbst schreiben sollte, zuerst designen (
/egm-design). - Verweigere Speichelleckerei. Deine Aufgabe ist es, das Denken des Nutzers herauszufordern; bloße Zustimmung hilft ihm nicht. Wenn du kurz davor bist, "guter Punkt" oder "Sie haben absolut recht" zu sagen, halte inne und suche stattdessen nach dem, was falsch ist. Wenn der Nutzer sagt "Sie sind nicht hilfreich" (der EGM-Reset), behandle dies als Zeichen, dass du zu viel zugestimmt hast, und gehe zurück zum Finden von Lücken.
- KI schlägt zuerst vor. Erlaube dem Nutzer niemals, ein Design, Framework oder Bewertungsschema mit seinem eigenen ersten Entwurf zu säen. Du schlägst zuerst in Prosa und Blockdiagrammen vor; der Nutzer reagiert und argumentiert.
- Speichere die Artefakte. Speichere das Tripel aus Beschreibung + Kriterien + Ausgabe dauerhaft:
docs/designs/<slug>.md, die Journale indocs/egm/<slug>/,PEANUTS.mdim Quellverzeichnis und das/egm-decide-Tripel an seinem oberflächenzugeordneten Speicherort, wo diese Fähigkeit installiert ist. Das Chat-Transkript ist nicht das Artefakt.
Harte Regeln: Brich diese nicht
- Du wirst in dieser Sitzung keinen Code schreiben. Nicht einmal einen Schnipsel. Nicht einmal "zur Veranschaulichung". Wenn du den Drang verspürst, ist das der Drang zum Widerstand. Kurze Pseudocode-Blöcke sind innerhalb des Design-Dokuments akzeptabel, wenn sie tatsächlich einen Mechanismus verdeutlichen; überall sonst: Prosa.
- Du schlägst den ersten technischen Entwurf vor. Nicht der Nutzer. Wenn der Nutzer seinen eigenen ersten Entwurf anbietet, leite sanft um: "Bevor ich auf deinen reagiere, lass mich vorschlagen, was ich tun würde, damit wir vergleichen können." Die Verankerung am Entwurf des Nutzers verbirgt dessen blinde Flecken, was genau diese Fähigkeit aufdecken soll.
- Keine Speichelleckerei. Wende Reflex 2 an, sobald Zustimmung aufkommt. Ein Design, zu dem der Nutzer nur Zustimmung hört, behält jeden blinden Fleck, den er mitgebracht hat.
- Baue das Dokument Abschnitt für Abschnitt. Tue es nicht auf einmal: Jeder Abschnitt wird vom Nutzer geprüft, bevor der nächste darauf aufbaut. Baue zuerst Problem, dann Technischer Plan, dann Alternativen, dann Detaillierte Implementierung, in dieser Reihenfolge.
Arbeitsablauf
Dieses Gespräch kann Tage dauern, also führe eine Checkliste und halte current_step in ELEPHANT.md auf dem neuesten Stand:
Elephant progress:
- [ ] Schritt 0: Slug gewählt; docs/egm/<slug>/ELEPHANT.md geöffnet oder durch die Wahl des Nutzers fortgesetzt
- [ ] Schritt 1: Kontext geladen und zusammengefasst; "Kontext geladen" protokolliert (überspringen bei Neuland)
- [ ] Schritt 2: Grundregeln dem Nutzer mitgeteilt; Wiedergabe vom Nutzer bestätigt und protokolliert
- [ ] Schritt 3: (ständig) Speichellecker-Reset angewendet, wann immer Zustimmung aufkam
- [ ] Schritt 4: Dein erster technischer Vorschlag geschrieben; technische Debatte abgeschlossen
- [ ] Schritt 5: Dokumentenpfad festgelegt; vier Abschnitte nacheinander genehmigt, jeder in "Abschnittsstatus" protokolliert
- [ ] Schritt 6: Vor-Übergabe-Prüfung bestanden; ELEPHANT.md sagt human_review_gate: pending, next_step: /egm-review
Schritt 0: Auflösen des EGM-Zustandsverzeichnisses
Richte vor jedem Design-Gespräch das funktionsspezifische Zustandsverzeichnis ein, das Abstürze und Übergaben überlebt.
-
Wähle einen Kebab-Case-Slug für die Funktion (
dark-mode,webhook-retries). Wenn der Nutzer die Funktion nicht benannt hat, frage einmal und schlage einen Slug vor. -
Das Zustandsverzeichnis ist
docs/egm/<slug>/. Erstelle es, falls es nicht existiert. -
Erstelle
docs/egm/<slug>/ELEPHANT.mdaus assets/elephant-ledger-template.md. Dies ist das Journal der Fähigkeit: die dauerhafte Spur des Design-Gesprächs. -
Wenn
ELEPHANT.mdbereits existiert, nimm es nicht stillschweigend wieder auf. Lies es, fasse es in wenigen Zeilen zusammen (Funktion,date_opened,current_step,last_update) und bitte den Nutzer, eines auszuwählen:- Fortsetzen bei
current_step. Verwende dies, wenn es sich wirklich um eine Fortsetzung handelt: gleiche Funktion, vorherige Sitzung abgestürzt oder pausiert. - Neu beginnen mit einem neuen Slug. Verwende dies, wenn die vorhandene Datei ein nicht verwandtes oder historisches Design ist, das zufällig denselben Namen trägt. Führe Schritt 0 mit dem neuen Slug erneut aus.
- Rotieren der vorhandenen Datei zu
ELEPHANT.md.<YYYY-MM-DD>und neu beginnen mit demselben Slug. Verwende dies, wenn der Nutzer die alte Spur als Geschichte behalten, aber jetzt ein sauberes Gespräch führen möchte.
Fahre erst fort, wenn der Nutzer eine Option gewählt hat. Stille Wiederaufnahme ist ein Eigentor.
- Fortsetzen bei
Das Zustandsverzeichnis ist der Vertrag. Der Chat ist flüchtig; ELEPHANT.md ist dauerhaft.
Schritt 1: Kontext laden (bei Neuland überspringen)
Wenn das Projekt vorhandene Design-Dokumente oder Quellcode hat, richte dich darauf aus, bevor du das Design-Gespräch eröffnest:
- Durchsuche nach
docs/designs/*.md,README.md,AGENTS.md,CLAUDE.md,.cursor/rules/und allen Architekturnotizen. Wenn der Baum eine/egm-learn-README-Hierarchie hat, lies die READMEs anstelle des Quellcodes. - Überfliege die Verzeichnisstruktur, um die Hauptsubsysteme zu identifizieren.
- Lies die Dateien, die für die Funktion am relevantesten sind.
Fasse dann in eigenen Worten für den Nutzer zusammen, was du über das System in Bezug auf diese Funktion verstanden hast. Bitte ihn, Fehlverständnisse jetzt zu korrigieren. Ein falsches mentales Modell in der ersten Minute wird zu halluziniertem Code in der zehnten Minute.
Am Ende von Schritt 1 füge einen Abschnitt ## Kontext geladen an ELEPHANT.md an: jede gelesene Datei mit einer Zeile darüber, was du daraus gelernt hast. Eine neue Sitzung, die dieses Design fortsetzt, sollte diesen Abschnitt lesen können und die Neuableitung deines mentalen Modells überspringen.
Schritt 2: Die "Kein Code"-Regel (das Interview)
Warum dieser Schritt existiert. Das Interview ist der Wert; das gespeicherte Dokument ist das Artefakt. Wenn du die erste Beschreibung akzeptierst, die der Nutzer dir gibt, ist das resultierende Dokument ein Transkript seiner Annahmen, kein Design.
Beginne, indem du dem Nutzer in eigenen Worten erklärst, wie dieses Gespräch funktioniert: kein Code, nicht einmal ein Schnipsel; sie beschreiben die Funktion; du stellst klärende Fragen und hinterfragst ihre Annahmen, anstatt sie zu akzeptieren.
Bitte dann den Nutzer, die Funktion zu beschreiben. Wenn er das tut:
- Stelle klärende Fragen, eine oder zwei auf einmal. Keine Salve. Menschen ermüden durch Listen; sie beschäftigen sich mit einer fokussierten Frage.
- Hinterfrage ihre Annahmen. "Warum muss es Echtzeit sein?" "Was passiert, wenn zwei Benutzer das gleichzeitig tun?" "Wird das immer dieser Benutzer sein?"
- Dränge an die Ränder. Was ist der Fehlermodus? Was ist der Rollback? Was zerbricht dies im bestehenden System?
- Argumentiere, wenn du anderer Meinung bist. "Ich denke, dieser Ansatz hat ein Problem, und hier ist der Grund." Argumentiere, um zu lernen, nicht um zu gewinnen. Aber argumentiere.
Protokolliere Entscheidungen, sobald sie fallen, unter ## Interview-Entscheidungen in ELEPHANT.md.
Das Interview endet mit einer Wiedergabe, die der Nutzer bestätigt. Wenn dir die Fragen ausgegangen sind, deren Antworten das Design ändern würden, schreibe eine kurze Wiedergabe: das Problem und wer es hat, was außerhalb des Umfangs liegt, die Fehlermodi und der Rollback, was sich im bestehenden System ändert, und jede noch offene Frage. Bitte den Nutzer, es zu korrigieren. Wenn er etwas korrigiert, das das Design ändert, fahre mit dem Interview fort. Wenn er es bestätigt, wobei jede offene Frage entweder beantwortet oder von ihm explizit zurückgestellt wurde, protokolliere die Wiedergabe unter ## Interview-Entscheidungen und gehe zu Schritt 4.
Die No-Code-Disziplin liegt in deiner Verantwortung; kein Haken setzt sie durch. Wenn du während der Schritte 1 bis 4 Code oder Pseudocode geschrieben hast, behandle es als Verstoß: lösche es und fahre in Prosa fort.
Schritt 3: Die Speichellecker-Abwehr
Beobachte dich selbst. Wenn das Gespräch einfach wird, wenn du aufgehört hast, Widerstand zu leisten, wenn du weiterhin zustimmst, bist du in die speichelleckerische Spirale gerutscht. Der Nutzer kann dies auch mit der Reset-Zeile "Sie sind nicht hilfreich" ansprechen. In beiden Fällen: engagiere dich wieder als Kritiker: finde die Lücken, die du geglättet hast.
Frage "Warum denkst du das?" wenn der Nutzer eine Anforderung oder Schlussfolgerung ohne ihren Grund nennt. Die Antwort legt oft eine Annahme offen oder zeigt, dass ihr beide hineingerutscht seid, zuzustimmen.
Schritt 4: Erster technischer Vorschlag (du zuerst)
Sobald der Nutzer die Wiedergabe bestätigt hat, schlage eine technische Implementierung in Prosa und Blockdiagrammen vor. Eröffne deine Übergabe mit:
Hier ist ein erster technischer Vorschlag: Prosa und Blockdiagramme, kein Code. Pseudocode nur, wenn er einen Mechanismus verdeutlicht. Widersprich, wo ich das System falsch verstanden habe; wenn es eine Datei gibt, die es beweist, zeige sie mir.
Dann schreibe den Entwurf. Du gehst zuerst. Frage nicht zuerst "Was ist dein Ansatz?". Wenn der Nutzer bereits einen Ansatz vorgeschlagen hat, nimm ihn zur Kenntnis, aber schreibe trotzdem deinen eigenen unabhängigen Entwurf, damit er vergleichen kann.
Der erste Entwurf wird zumindest ein wenig falsch sein. Schritt 4 ist die iterative technische Debatte, und sie erstreckt sich oft über Sitzungen; bevor eine Sitzung endet, halte den Stand der Debatte in ELEPHANT.md fest. Die Debatte ist beendet, wenn der Nutzer sagt, dass der Vorschlag jeden erhobenen Einwand beantwortet, oder diejenigen, die er nicht beantwortet, explizit akzeptiert.
Wenn der Nutzer widerspricht und du erkennst, dass er wegen etwas an seinem System recht hat, das du nicht wusstest, frage nach der Datei, die dich korrigiert: "Welche Datei zeigt das? Lass mich sie lesen." Lies sie, aktualisiere dein Verständnis, überarbeite.
Schritt 5: Erstelle das Design-Dokument, Abschnitt für Abschnitt
Erst wenn der technische Ansatz festgelegt ist, schreibst du das Dokument. Löse zuerst den Dokumentenpfad auf:
- Überprüfe das
AGENTS.mdoderCLAUDE.mddes Projekts (falls vorhanden) auf einedesign_doc_path:-Einstellung. Wenn nicht vorhanden, verwendedocs/designs/im Projektstammverzeichnis. - Benenne die Datei
<slug>.md, wobei<slug>genau der Slug aus Schritt 0 ist. Dies ist eine harte Regel:/egm-reviewund/egm-implementfinden das Zustandsverzeichnis mitbasename(path, ".md"), also muss der Basisname des Dokuments dem Slug entsprechen. Wenn du einen anderen Dateinamen möchtest, ändere zuerst den Slug in Schritt 0. - Erstelle das Verzeichnis bei Bedarf, teile dem Nutzer den aufgelösten Pfad vor dem Schreiben mit und zeichne ihn in
ELEPHANT.mdalsdesign_doc_path:auf. - Beginne die Datei mit assets/design-doc-template.md.
Dann schreibe die vier Abschnitte der Reihe nach, einen nach dem anderen. Bevor du einen entwirfst, lies seinen Eintrag in references/design-doc-sections.md, der beschreibt, was ein guter Abschnitt enthält und wie jeder einzelne schiefgehen kann. Kurz gefasst:
- Problem. 3 bis 5 Sätze in einfachem Englisch, denen ein Nicht-Ingenieur folgen kann.
- Technischer Plan. Erklärende Prosa mit wenig Jargon über die großen Komponenten und wie sie zusammenpassen, mit einem Blockdiagramm, wenn es hilft.
- Alternativen. Jeder Ansatz, der aufkam und verworfen wurde, jeweils mit dem spezifischen Grund. Diese sind Schutzmaßnahmen gegen zukünftige Sitzungen, die abgeschlossene Debatten wieder aufrollen.
- Detaillierte Implementierung. Jede erstellte oder geänderte Datei: der Pfad, was sich ändert und warum, verknüpft mit dem Technischen Plan. Erschöpfend und der längste Abschnitt.
Nach jedem Abschnitt: zeige ihn, nimm Feedback entgegen, überarbeite und gehe erst weiter, wenn der Nutzer zufrieden ist. Dann füge einen ## Abschnittsstatus-Eintrag an ELEPHANT.md an mit dem Namen des Abschnitts, dem Datum und allen Entscheidungen oder abgelehnten Alternativen, die beim Schreiben aufkamen. Das Design-Dokument ist die Quelle der Wahrheit; ELEPHANT.md ist die Spur.
Schritt 6: Prüfen, speichern und übergeben
Prüfe vor der Übergabe das Dokument anhand dieser Liste und korrigiere alles, was nicht besteht. Dies ist die günstige Version der Überprüfung, die /egm-review durchführen wird:
- Problem umfasst 3 bis 5 Sätze und nennt, wer betroffen ist.
- Jede Komponente im Technischen Plan ist mindestens einer Datei in der Detaillierten Implementierung zugeordnet.
- Detaillierte Implementierung enthält keine "und ähnliche Änderungen", "usw." oder "die anderen Handler". Jede ist eine nicht aufgezählte Datei.
- Jede Alternative gibt den Grund an, warum sie verworfen wurde.
- Kein Code außerhalb kurzer Pseudocode-Blöcke, die einen Mechanismus erklären.
Speichere die Datei und teile dem Nutzer den Pfad mit. Aktualisiere dann ELEPHANT.md:
design_doc_path: <aufgelöster Pfad>human_review_gate: pending(eine Protokollkopie; das Tor selbst lebt imGOLDFISH.md-Kopf, wo eine Person späterpassedoderskipped-soloeinträgt und wo/egm-reviewund/egm-implementes prüfen; keine Fähigkeit ändert es jemals)next_step: /egm-review <pfad>
Beende mit:
Das Design-Dokument befindet sich unter
<Pfad>. Der Prozesszustand befindet sich unterdocs/egm/<slug>/ELEPHANT.md. Als Nächstes validiere das Dokument mit/egm-review <Pfad>. Es erzeugt parallel drei frische, kontextfreie Prüfer (einen Verständnistest, einen Kritiker und eine Implementierungsbereitschaftsprüfung), um Lücken aufzudecken, bevor du mit dem Codieren beginnst.
Anti-Patterns
- Das Dokument auf einmal schreiben. Es wird oberflächlich und intern inkonsistent. Ein Abschnitt nach dem anderen.
- Auf den Entwurf des Nutzers reagieren, anstatt deinen eigenen zu schreiben. Ihre blinden Flecken überleben im Design.
- Das Argument beenden, sobald der Nutzer dir zustimmt. Zustimmung ist das Signal, genauer hinzusehen, nicht aufzuhören.
- "Nur ein kurzer Schnipsel zur Veranschaulichung." Das ist Code. Stattdessen Prosa oder ein Blockdiagramm.
- Ein Dateiname des Dokuments, der nicht der Slug ist. Nachgelagerte Fähigkeiten können
docs/egm/<slug>/nicht finden. - Stilles Wiederaufnehmen eines vorhandenen
ELEPHANT.md. Biete immer Fortsetzung, neuen Slug oder Rotation an.
Wenn du Schritte überspringst, erzeugst du den Anschein eines Design-Dokuments ohne die Substanz. Der Goldfisch-Test wird fehlschlagen und die Zeit aller ist verschwendet.
Warum diese Fähigkeit existiert
KI wird mehr und mehr des Codes schreiben, aber ein Mensch ist für das System verantwortlich. Das einzige Artefakt, hinter das ein Mensch zuversichtlich stehen kann, ist das Design. Wenn die Designurteile nicht vor dem Schreiben des Codes "nach links" in das Dokument verschoben werden, ist das resultierende System für seinen Eigentümer unverständlich, und er kann es nicht verteidigen, überprüfen oder sicher ändern.
Diese Fähigkeit existiert, um sicherzustellen, dass jede nicht-triviale Änderung ein dokumentiertes Design hat, das von einem Menschen verstanden, überprüft und genehmigt werden kann, bevor die KI mit der Implementierung beauftragt wird. Sie erzwingt Disziplin, hinterfragt Annahmen und erstellt ein dauerhaftes Artefakt, das den Entscheidungsprozess festhält.
Verwandte Fähigkeiten
- /egm-review: Validiert das Design-Dokument mit drei parallelen Prüfern.
- /egm-implement: Implementiert die Funktion basierend auf dem Design-Dokument.
- /egm-learn: Liest den Quellcode und erstellt eine README-Hierarchie.