Hooks
REAP-Hooks ermöglichen die Ausführung von Automatisierung bei wichtigen Lebenszyklus-Events. Hooks werden als einzelne Dateien in .reap/hooks/ gespeichert und der KI-Agent führt sie zum richtigen Zeitpunkt aus.
Hook-Typen
Jede Hook-Datei unterstützt einen von zwei Typen basierend auf ihrer Erweiterung:
Ein Shell-Skript. Wird im Projektstammverzeichnis vom KI-Agenten ausgeführt. Verwenden für Skripte, CLI-Tools, Build-Befehle.
Eine KI-Agenten-Anweisung in Markdown. Der Agent liest die Eingabeaufforderung und führt die beschriebene Aufgabe aus — Codeanalyse, Dateiänderungen, Dokumentationsaktualisierungen usw. Verwenden für Aufgaben, die Urteilsvermögen erfordern.
Jeder Hook ist eine einzelne Datei. Mehrere Hooks pro Event werden in der durch Frontmatter festgelegten Reihenfolge ausgeführt.
Dateibenennung
Hook-Dateien folgen dem Muster: .reap/hooks/{event}.{name}.{md|sh}
Jede Hook-Datei unterstützt optionales YAML-Frontmatter:
| Feld | Beschreibung |
|---|---|
| condition | Name eines Bedingungsskripts in .reap/hooks/conditions/ (z.B. always, has-code-changes, version-bumped) |
| order | Numerische Ausführungsreihenfolge wenn mehrere Hooks für dasselbe Event existieren (Standard: 50, niedrigere laufen zuerst) |
Normale Lebenszyklus-Events
| Event | Wann es ausgelöst wird |
|---|---|
| onLifeStarted | Nachdem /reap.start eine neue Generation erstellt hat |
| onLifeLearned | Nachdem die Learning-Phase abgeschlossen ist |
| onLifePlanned | Nachdem die Planning-Phase abgeschlossen ist |
| onLifeImplemented | Nachdem die Implementation-Phase abgeschlossen ist |
| onLifeValidated | Nachdem die Validation-Phase abgeschlossen ist |
| onLifeCompleted | Nach Completion + Archivierung (läuft nach dem Git-Commit) |
| onLifeTransited | Nach jedem Phasenübergang (generisch) |
Merge-Lebenszyklus-Events
| Event | Wann es ausgelöst wird |
|---|---|
| onMergeStarted | Nachdem eine Merge-Generation erstellt wurde |
| onMergeDetected | Nachdem die Detect-Phase abgeschlossen ist |
| onMergeMated | Nachdem die Mate-Phase abgeschlossen ist (Genome aufgelöst) |
| onMergeMerged | Nachdem die Merge-Phase abgeschlossen ist (Quellcode zusammengeführt) |
| onMergeReconciled | Nachdem die Reconcile-Phase abgeschlossen ist (Genome-Quellcode-Konsistenz verifiziert) |
| onMergeValidated | Nachdem die Merge-Validation abgeschlossen ist |
| onMergeCompleted | Nach Merge-Completion + Archivierung |
| onMergeTransited | Nach jedem Merge-Phasenübergang (generisch) |
Dateibasierte Konfiguration
Hooks sind dateibasiert — gespeichert in .reap/hooks/, nicht in config.yml. Jeder Hook ist eine Datei mit dem Namen {event}.{name}.{md|sh}.
.reap/hooks/
├── onLifeCompleted.reap-update.sh
├── onLifeCompleted.docs-update.md
├── onLifeImplemented.lint-check.sh
└── onMergeMated.notify.md
# Beispiel: .md Hook (KI-Eingabeaufforderung)
# ---
# condition: has-code-changes
# order: 30
# ---
# Änderungen prüfen und Dokumentation bei Bedarf aktualisieren.
# Beispiel: .sh Hook (Shell-Skript)
# #!/bin/bash
# # condition: always
# # order: 20
# reap updateAutomatische Hook-Vorschläge
Während der Completion-Phase (Phase 5: Hook-Vorschlag) erkennt REAP wiederkehrende Muster über Generationen hinweg — wie wiederkehrende manuelle Schritte, wiederholte Befehle oder konsistente Post-Phase-Aktionen. Wenn ein Muster erkannt wird, schlägt REAP vor, einen Hook zur Automatisierung zu erstellen. Die Hook-Erstellung erfordert immer eine Benutzerbestätigung, bevor sie angewendet wird.
Ausführungshinweise
- Hooks werden vom KI-Agenten ausgeführt, nicht von der CLI. Der Agent durchsucht .reap/hooks/ nach passenden Dateien.
- .sh-Dateien werden als Shell-Skripte im Projektstammverzeichnis ausgeführt.
- .md-Dateien werden als KI-Eingabeaufforderungen gelesen und vom Agenten befolgt.
- Hooks innerhalb desselben Events laufen in Reihenfolge (Frontmatter 'order'-Feld, niedrigere laufen zuerst).
- Bedingungen werden über .reap/hooks/conditions/{name}.sh ausgewertet (Exit 0 = ausführen, nicht-null = überspringen).
- onLifeCompleted/onMergeCompleted Hooks laufen nach dem Git-Commit — alle Dateiänderungen durch Hooks werden nicht committet.
