ガイド

Hooks

REAP hooksを使用すると、主要なライフサイクルイベントで自動化を実行できます。Hooksは.reap/hooks/に個別のファイルとして保存され、AIエージェントが適切なタイミングで実行します。

Hookタイプ

各hookファイルは拡張子に基づいて2つのタイプのいずれかをサポートします:

command (.sh)

シェルスクリプト。AIエージェントによってプロジェクトルートディレクトリで実行されます。スクリプト、CLIツール、ビルドコマンドに使用します。

prompt (.md)

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を作成した後
onLifeLearnedlearningステージ完了後
onLifePlannedplanningステージ完了後
onLifeImplementedimplementationステージ完了後
onLifeValidatedvalidationステージ完了後
onLifeCompletedcompletion + アーカイブ後(gitコミット後に実行)
onLifeTransited任意のステージ遷移後(汎用)
onMergeStartedmerge generationが作成された後
onMergeDetecteddetectステージ完了後
onMergeMatedmateステージ完了後(genomeが解決)
onMergeMergedmergeステージ完了後(ソースがmerge済み)
onMergeReconciledreconcileステージ完了後(genome-ソースの整合性が検証済み)
onMergeValidatedmerge validation完了後
onMergeCompletedmerge completion + アーカイブ後
onMergeTransited任意のmergeステージ遷移後(汎用)

ファイルベース設定

Hooksはファイルベースです — config.ymlではなく.reap/hooks/に保存されます。各hookは{event}.{name}.{md|sh}という名前のファイルです。

text
.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によるファイル変更はコミットされません。