CommunitySchreiben & Editierengithub.com

brenoacker/agent-skills

End-to-End Multi-Agent Software-Factory (DISCOVER -> PLAN -> CHECKS -> BUILD -> VERIFY) mit Thin-Orchestrator-Subagenten-Pro-Phase-Architektur für Antigravity, Claude Code und Codex. Friert Verpflichtungen mit EARS-Kriterien und beweisgestützten Prüfungen ein, delegiert jede schwere Phase an frische isolierte Subagenten, um den Hauptkontext zu schützen, und steuert den Abschluss mit einem unabhängigen Verifier.

Was ist agent-skills?

Die Software-Factory ist ein strukturierter Multi-Agenten-Workflow, der speziell für KI-gestützte Coding-Agenten wie Antigravity, Claude Code und Codex entwickelt wurde. Er führt Entwickler durch einen strengen fünfphasigen Prozess: DISCOVER (Aufdecken von Unklarheiten durch einen Scout-Agenten), PLAN (Erstellen eines detaillierten Planungsdokuments mit einem Planer-Agenten), CHECKS (Ableiten von überprüfbaren Behauptungen und Tests durch einen Spezifizierer-Agenten), BUILD (Implementieren von Code und Tests durch einen Builder-Agenten) und VERIFY (Unabhängige Überprüfung durch einen Verifizierer-Agenten, der niemals der Autor ist). Das Kernprinzip ist der „Thin Orchestrator“, der den Haupt-Chat unter ~15.000 Token hält, indem er jede schwere Phase an frische, isolierte Subagenten delegiert, die nur über Dateien auf der Festplatte und Git-Commits kommunizieren. Dies verhindert Kontextfenster-Überblähung und Selbstprüfungs-Betriebsblindheit. Alle Anforderungen werden explizit durch den Benutzer bestätigt („Confirmed? y“), und der Abschluss wird durch ein Skript (`validate_verification.py`) erzwungen, das mit Exit-Code 0 enden muss. Dieser Ansatz ist ideal für komplexe Funktionen, bei denen Klarheit, Rückverfolgbarkeit und Überprüfbarkeit entscheidend sind.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/brenoacker/agent-skills/tree/HEAD/skills/software-factory

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Software-Factory

Beseitigen Sie zunächst alle Unklarheiten zum Umfang. Frieren Sie die Verpflichtungen ein. Delegieren Sie jede schwere Phase an einen neuen Subagenten. Weisen Sie die Fertigstellung mit einem unabhängigen Prüfer nach, der den Code nicht geschrieben hat.

┌──────────┐   ┌──────┐   ┌────────┐   ┌───────┐   ┌────────┐
│ ENTDECKEN │ → │ PLANEN │ → │ CHECKS │ → │ BAUEN │ → │ PRÜFEN │
└──────────┘   └──────┘   └────────┘   └───────┘   └────────┘
 0 Zweifel       bestätigen  Verpfl.    Batches    Autor != Prüfer

Fünf Schritte, drei beständige Artefakte unter .specs/features/<feature>/ und ein schlanker Orchestrator im Hauptchat, der seinen Kontextfenster nie aufbläht.

  1. ENTDECKEN: Ein schreibgeschützter scout-Subagent scannt die Codebasis und gibt eine kompakte (~30-zeilige) Zusammenfassung der Unklarheiten zurück. Der Hauptchat befragt den Nutzer mit konkreten Optionen und empfohlenen Standardeinstellungen, bis keine unbestätigten Annahmen mehr vorhanden sind (Bestätigt? j für jede Zeile). Siehe discovery.md.
  2. PLANEN: Ein planner-Subagent schreibt .specs/features/<feature>/plan.md (Problem, Ablauf, Auswirkung, Beziehungen, Oberfläche, Landung, Kriterien, Nicht im Umfang, Annahmen, Beobachtbar, Quellen) und führt validate_plan.py aus. Der Nutzer gibt eine kurze Freigabe für plan.md. Siehe plan.md.
  3. CHECKS: Nach der Freigabe von plan.md beginnt die automatisierte Post-Plan-Schleife. Ein specifier-Subagent leitet .specs/features/<feature>/checks.md ab (Behauptungen + Beweise, Coverage-Join, Testrichtlinie, Abgedeckt, Übergabearithmetik) und führt validate_checks.py aus. Siehe checks.md.
  4. BAUEN: Ein builder-Subagent pro Slice/Batch schreibt Tests streng nach den Checks, implementiert den Code, führt Beweise aus, aktualisiert checks.md und committed mit check_commit.py. Siehe build.md.
  5. PRÜFEN (und KORREKTUR-Schleife): Ein unabhängiger verifier-Subagent (niemals der Builder) prüft <feature-Basis>..HEAD gegen jeden Check, schreibt .specs/features/<feature>/verification.md und führt validate_verification.py aus. Wenn ein Check fehlschlägt, behebt ein fixer-Subagent die priorisierten Lücken und ein neuer verifier überprüft erneut (bis zu 3 Runden). Siehe verify.md und orchestration.md.

Warum diese Form

Codierungsagenten scheitern an komplexen Funktionen aus zwei vorhersehbaren Gründen:

  1. Kontextfenster-Aufblähung: Wenn eine einzelne Chat-Sitzung das Repository durchsucht, den Benutzer befragt, den Plan schreibt, die Checks ableitet, Tests und Code schreibt und ihre eigene Arbeit verifiziert, füllt sich das Kontextfenster und löst verlustbehaftete Komprimierung aus.
  2. Unbestätigte Anforderungen & blinde Flecken bei der Selbstprüfung: Stillschweigendes Raten des Produktverhaltens (Bestätigt? n) oder das Selbstzertifizieren der Fertigstellung durch den Autor führt dazu, dass die eigenen blinden Flecken des Autors ausgeliefert werden.

software-factory löst beides:

  • Schlanker Orchestrator (<15k Token im Hauptchat): Der Hauptchat fungiert strikt als Koordinator und Benutzer-Interviewer. Das gesamte Lesen der Codebasis, das Erstellen von Artefakten, das Coden, Testen und Verifizieren laufen in isolierten, ephemeren Subagenten (scout, planner, specifier, builder, verifier, fixer), die ausschließlich über .specs/features/<feature>/-Dateien auf der Festplatte und Git-Commits kommunizieren. Vollständiges Dispatch-Protokoll: orchestration.md.
  • Kleiner, eingefrorener Verpflichtungssatz + unabhängiger Prüfer: Es gibt keine granulare Aufgabencheckliste oder Komponentenkatalog (Zweck/Ort/Schnittstellen pro Klasse), die veralten könnte. Einweg-Türen erhalten eine wörtliche Form in Landung; umkehrbare Platzierung wird im Diff entschieden.

Kritische Regeln

Der festgelegte Satz. Diese gelten für jedes Profil:

  1. Keine unbestätigten Annahmen (Bestätigt? j). Niemals Produkt- oder Umfangsverhalten stillschweigend erraten. Jeder Graubereich, der während ENTDECKEN auftaucht, muss mit konkreten Optionen und einer empfohlenen Standardeinstellung gefragt oder explizit vom Benutzer delegiert werden (Bestätigt? j). validate_plan.py lehnt jede Zeile ab, in der Bestätigt? n oder leer ist.
  2. Schlanker Orchestrator & strenge 1-Subagent-pro-Phase-Grenze (scout != planner != specifier != builder != verifier). Halten Sie den Hauptchat unter ~15k Token. Verschmelzen Sie niemals zwei Phasen in einem einzigen Subagentenaufruf:
    • scout ERKUNDET NUR und gibt die ~30-zeilige Zusammenfassung der Unklarheiten zurück.
    • planner SCHREIBT NUR plan.md + führt validate_plan.py aus, dann stoppt und beendet.
    • specifier SCHREIBT NUR checks.md + führt validate_checks.py aus, dann stoppt und beendet (es DARF NIEMALS Testdateien oder Implementierungscode schreiben oder mit BAUEN fortfahren).
    • builder LÄUFT NUR, nachdem specifier zurückgekehrt ist. Für Funktionen mit mehreren Slices (S1, S2, ...) senden Sie einen separaten builder-Subagenten nacheinander pro Slice, sodass jeder Slice in einem frischen Kontextfenster ausgeführt wird und dem Benutzer den Fortschritt meldet.
    • verifier LÄUFT NUR in einem neuen Subagenten, nachdem der letzte builder committed hat.
  3. Jeder Check ist eine beobachtbare Behauptung mit einem konkreten Wert plus dem Beweis – der genaue Test-Selektor oder Befehl, dessen Exit-Code ihn entscheidet. Kein Beweis, kein Check.
  4. Tests behaupten, was die Checks sagen, niemals, was der Code zufällig tut. Schreiben Sie niemals einen Test, indem Sie die Implementierung lesen.
  5. Schwächen Sie niemals eine Behauptung ab, löschen Sie einen Test oder überspringen Sie einen, um eine Suite zum Bestehen zu bringen. Ein wirklich falscher Check ist ein Stopp-und-Fragen, keine Bearbeitung.
  6. Checks und Testrichtlinie-Zeilen sind nach der Genehmigung fixiert. In plan.md sind Landung, Beziehungen und Oberfläche additiv – eine beim Bauen entdeckte Tür erhält eine Zeile, bevor der Code sie schließt, und eine vom Benutzer genehmigte Zeile wird nie neu geschrieben. Ablauf und Auswirkung werden in dem Commit, der den Pfad ändert, wahrheitsgemäß gehalten.
  7. Der Prüfer ist ein neuer Subagent, niemals der Autor, niemals optional, niemals wartend, bis er gefragt wird. Der Orchestrator sendet ihn sofort, nachdem der letzte Commit der Funktion über <feature-Basis>..HEAD mit jedem Check gelandet ist.
  8. Das Profil ist eine Mindestanforderung und wird von validate_verification.py durchgesetzt.
  9. Das Fertigstellungs-Gate ist ein Skript, kein Gefühl: validate_verification.py muss mit Exit-Code 0 beenden.
  10. Schlagkreis: Ein genehmigtes Pflichtenheft autorisiert lokale Änderungen und lokale Commits. git push, Deployment und Produktionsdatenänderungen benötigen eine explizite Genehmigung für diese Aktion.

Profil

Das Projekt deklariert, wie viel läuft, in AGENTS.md oder einem Äquivalent. Fehlt eine Deklaration: light.

## software-factory

profile: light
budget: 150k
ProfilFügt hinzuKann nicht abfangen
light (Standard)Beweise werden bei HEAD ausgeführt, wobei jeder benannte Test als existent und ausgeführt gezeigt wird, eine lokalisierte Behauptung pro Check, Level- und Stichprobenlücken, Bestehende überprüftein Mengenelement ohne Beweis; ein Test, der unter einer falschen Implementierung bestehen würde
standardder Coverage-Join neu berechnet, Testrichtlinie-Zeilen mit einem Urteil, ein Fehler pro Behauptungsoberflächeein Check, der einer bindenden Quelle widerspricht; ein Bildschirm, den niemand gebaut hat
uibindende Quellen werden geöffnet und verglichen, pro Bildschirm Aufzählung von Kopie und Anordnungnur Abstand, Farbe und Schriftstärke, pro Bildschirm aufgezählt

validate_verification.py lehnt einen Bericht ab, dessen Profil sich von dem unterscheidet, unter dem checks.md genehmigt wurde, lehnt einen standard-Bericht ohne Fehlerzeilen oder neu berechnete Abdeckung ab und lehnt einen ui-Bericht ohne Abschnitt zu bindenden Quellen ab.

Artefakte

.specs/
├── STATE.md                    # Entscheidungsprotokoll (AD-NNN) + Übergabe-Snapshot
├── LESSONS.md                  # gerendert von scripts/lessons.py - niemals von Hand bearbeiten
├── lessons.json                # maschineneigen
└── features/<feature>/
    ├── plan.md                 # Problem, Ablauf, Auswirkung, Beziehungen, Oberfläche, Landung, Kriterien, Annahmen (alle j), beobachtbar
    ├── checks.md               # Behauptungen + Beweise, Coverage-Join, Testrichtlinie, Abgedeckt, Übergabe-Batches
    └── verification.md         # Der Bericht des unabhängigen Prüfers

Erstellen Sie jede Datei, wenn ihre Phase Inhalt produziert. Für eine Änderung unter ungefähr drei Dateien ohne Einweg-Tür und keinerlei Umfangsunklarheit schreiben Sie nur checks.md mit einem ## Absicht-Absatz und überspringen Sie plan.md.

Fünf begrenzte Entwurfsabschnitte in plan.md

AbschnittÜberprüftAusgeschlossen
Ablaufder Pfad, eine Zeile pro Sprungjedes Modul, das weder existiert noch durch eine Tür erstellt wird – das ist Platzierung
Auswirkungwas sich darunter ändert: Begriffe und vorhandene DatenRisikoregister
BeziehungenEntitäten, Kardinalität, Einweg-EinschränkungenSpalten und Typen
OberflächeRoute, rein, raus, StatusSpezifikation des Anfragekörpers und Check-IDs – diese existieren noch nicht
Landungdie Einweg-Türen, mit der wörtlichen Form und der abgelehnten Alternativealles, was ein Refactoring rückgängig macht

Ablauf

  • Entdecken — Senden Sie den schreibgeschützten scout-Subagenten, um das Repo, .specs/STATE.md und .specs/LESSONS.md zu inspizieren und eine ~30-zeilige Zusammenfassung der Unklarheiten zurückzugeben. Führen Sie den Benutzer durch echte Produkt- und Umfangsgrauzonen (höchstens 2 Fragen pro Zug, konkrete Optionen mit empfohlener Standardeinstellung) über Beobachtbare Oberflächen und die 9 impliziten Dimensionen, bis 0 Zweifel bestehen: discovery.md.
  • Planen — Senden Sie den planner-Subagenten mit den bestätigten Entdeckungsentscheidungen, um .specs/features/<feature>/plan.md zu schreiben und validate_plan.py zu bestehen. Präsentieren Sie plan.md dem Benutzer zur kurzen Freigabe: plan.md.
  • Checks — Sobald plan.md genehmigt ist, läuft es automatisiert ab. Senden Sie einen dedizierten specifier-Subagenten, um .specs/features/<feature>/checks.md abzuleiten (Behauptungen + Beweise, Coverage-Join, Abgedeckt und ## Übergabe-Batch-Größenbestimmung) und validate_checks.py zu bestehen, dann beenden Sie diesen Subagenten, bevor Code oder Tests geschrieben werden: checks.md.
  • Bauen — Nachdem specifier fertig ist, senden Sie einen frischen builder-Subagenten pro Slice (S1, S2, ...) nacheinander. Jeder Builder schreibt Tests aus den Checks für seinen zugewiesenen Slice, implementiert, führt Beweise aus, zeichnet Grenze in checks.md auf, committed mit check_commit.py und beendet: build.md.
  • Prüfen & Korrigieren — Senden Sie einen frischen verifier-Subagenten über <feature-Basis>..HEAD, um verification.md zu schreiben und validate_verification.py auszuführen. Bei FEHLER senden Sie einen fixer-Subagenten und prüfen erneut (bis zu 3 Runden): verify.md.
  • Orchestrierung & Subagenten-Dispatch — Schlanke Orchestrator-Regeln, Kontextfenster-Budgets und Multi-Agenten-Zuordnungen (antigravity, claude, codex): orchestration.md.
  • Dauerhafter Speicher — Projektentscheidungen (STATE.md), Sitzungsübergabe und verifikationsgestützte Lektionen (lessons.py): memory.md.

Skripte

Lösen Sie <skill-dir> als das Verzeichnis auf, das diese SKILL.md enthält, und rufen Sie python3 <skill-dir>/scripts/<name>.py auf. Übergeben Sie --root, wenn sich das aktuelle Arbeitsverzeichnis vom Projektstammverzeichnis unterscheidet. Ein Exit-Code ungleich Null bedeutet STOPPEN und beheben.

WannBefehl
Pipeline-Phase und nächste Subagenten-Rolle inspizierenorchestrate.py status <feature> --root <dir>
Isolierten Subagenten-Prompt generieren`orchestrate.py prompt --role <scout
Phasen-Gate über Orchestrator ausführen`orchestrate.py gate --phase <plan
Subagenten über CLI senden (oder --dry-run)`orchestrate.py dispatch --role --agent <antigravity
Vor dem Präsentieren von plan.mdvalidate_plan.py <feature>
Vor dem Start von BAUENvalidate_checks.py <feature>
Vor jedem Commitcheck_commit.py --message "<msg>"
Vor dem Fertigmeldenvalidate_verification.py <feature>
Bei der Destillationlessons.py add ...
Nach dem Bearbeiten eines Validators, Skripts oder Templatesselftest.py

Subagenten und Übergabe

Jede Phase ist streng isoliert in ihrem eigenen Subagentenaufruf (scout -> planner -> specifier -> builder [S1] -> builder [S2] -> ... -> verifier -> fixer). Kombinieren Sie niemals specifier (CHECKS) und builder (BAUEN) im selben Subagenten. Während BAUEN, wenn eine Funktion mehrere Slices hat (S1, S2, ...), senden Sie einen separaten builder-Subagenten nacheinander pro Slice, sodass jeder Builder mit einem sauberen Kontextfenster beginnt, schnell fertig wird, seinen Slice auf Grün committed und einen Fortschrittsbericht an den schlanken Orchestrator zurückgibt.

Wenn der letzte Builder-Slice auf Grün zurückkommt, sendet der Orchestrator sofort den unabhängigen verifier-Subagenten im selben Zug, ohne den Benutzer zu fragen.

Wissenskette

In strenger Reihenfolge: vorhandener Code und Konventionen, Projektdokumentation, Bibliotheksdokumentation (Context7, falls verfügbar), Websuche, dann als unsicher markieren. Erfinden Sie niemals eine API, ein Flag, einen Befehl oder ein Verhalten.

Ausgabeverhalten

Produzieren Sie das Artefakt; erzählen Sie nicht die Phase. Beginnen Sie mit dem Urteil. Geben Sie Entscheidungen definitiv an. Entfernen Sie Füllwörter und mechanische Absicherungen. Behalten Sie Abschnittsüberschriften auf Englisch bei (sie sind ein Schema, das von den Gates überprüft wird).

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills