Hooks
REAP hooksを使用すると、主要なライフサイクルイベントで自動化を実行できます。Hooksは.reap/hooks/に個別のファイルとして保存され、AIエージェントが適切なタイミングで実行します。
Hookタイプ
各hookファイルは拡張子に基づいて2つのタイプのいずれかをサポートします:
シェルスクリプト。AIエージェントによってプロジェクトルートディレクトリで実行されます。スクリプト、CLIツール、ビルドコマンドに使用します。
MarkdownのAIエージェント指示。エージェントがプロンプトを読み、記述されたタスクを実行します — コード分析、ファイル変更、ドキュメント更新など。判断が必要なタスクに使用します。
各hookは単一のファイルです。同じイベントの複数のhookはフロントマターで指定された順序で実行されます。
ファイル命名規則
Hookファイルは次のパターンに従います:.reap/hooks/{event}.{name}.{md|sh}
各hookファイルはオプションのYAMLフロントマターをサポートします:
| フィールド | 説明 |
|---|---|
| condition | .reap/hooks/conditions/内の条件スクリプト名(例:always、has-code-changes、version-bumped) |
| order | 同じイベントの複数のhookがある場合の数値実行順序(デフォルト:50、小さい値が先に実行) |
イベント
| イベント | 発火タイミング |
|---|---|
| onLifeStarted | /reap.startが新しいGenerationを作成した後 |
| onLifeLearned | learningステージ完了後 |
| onLifePlanned | planningステージ完了後 |
| onLifeImplemented | implementationステージ完了後 |
| onLifeValidated | validationステージ完了後 |
| onLifeCompleted | completion + アーカイブ後(gitコミット後に実行) |
| onLifeTransited | 任意のステージ遷移後(汎用) |
| onMergeStarted | merge generationが作成された後 |
| onMergeDetected | detectステージ完了後 |
| onMergeMated | mateステージ完了後(genomeが解決) |
| onMergeMerged | mergeステージ完了後(ソースがmerge済み) |
| onMergeReconciled | reconcileステージ完了後(genome-ソースの整合性が検証済み) |
| onMergeValidated | merge validation完了後 |
| onMergeCompleted | merge completion + アーカイブ後 |
| onMergeTransited | 任意のmergeステージ遷移後(汎用) |
ファイルベース設定
Hooksはファイルベースです — config.ymlではなく.reap/hooks/に保存されます。各hookは{event}.{name}.{md|sh}という名前のファイルです。
.reap/hooks/
├── onLifeCompleted.reap-update.sh
├── onLifeCompleted.docs-update.md
├── onLifeImplemented.lint-check.sh
└── onMergeMated.notify.md
# 例:.md hook(AIプロンプト)
# ---
# condition: has-code-changes
# order: 30
# ---
# 変更をレビューし、必要に応じてドキュメントを更新してください。
# 例:.sh hook(シェルスクリプト)
# #!/bin/bash
# # condition: always
# # order: 20
# reap update自動Hook提案
Completionステージ(Phase 5: Hook Suggestion)で、REAPは世代にわたる繰り返しパターンを検出します — 繰り返される手動ステップ、繰り返されるコマンド、一貫したステージ後のアクションなど。パターンが検出されると、REAPはそれを自動化するhookの作成を提案します。Hookの作成には常にユーザーの確認が必要です。
実行に関する注意事項
- HooksはCLIではなくAIエージェントによって実行されます。エージェントが.reap/hooks/をスキャンして一致するファイルを探します。
- .shファイルはプロジェクトルートディレクトリでシェルスクリプトとして実行されます。
- .mdファイルはAIプロンプトとして読み込まれ、エージェントがそれに従います。
- 同じイベント内のhooksは順序通りに実行されます(フロントマターの'order'フィールド、小さい値が先に実行)。
- 条件は.reap/hooks/conditions/{name}.shで評価されます(exit 0 = 実行、非ゼロ = スキップ)。
- onLifeCompleted/onMergeCompleted hooksはgitコミット後に実行されます — hooksによるファイル変更はコミットされません。
