Hooks
REAP hooks는 주요 라이프사이클 이벤트에서 자동화를 실행할 수 있게 합니다. Hooks는 .reap/hooks/에 개별 파일로 저장되며 AI 에이전트가 적절한 시점에 실행합니다.
Hook 유형
각 hook 파일은 확장자에 따라 두 가지 유형 중 하나를 지원합니다:
셸 스크립트입니다. AI 에이전트가 프로젝트 루트 디렉토리에서 실행합니다. 스크립트, CLI 도구, 빌드 명령어에 사용합니다.
마크다운으로 된 AI 에이전트 지시입니다. 에이전트가 프롬프트를 읽고 설명된 작업을 수행합니다 — 코드 분석, 파일 수정, 문서 업데이트 등. 판단이 필요한 작업에 사용합니다.
각 hook은 단일 파일입니다. 동일 이벤트의 여러 hook은 frontmatter에 지정된 순서로 실행됩니다.
파일 명명
Hook 파일은 다음 패턴을 따릅니다: .reap/hooks/{event}.{name}.{md|sh}
각 hook 파일은 선택적 YAML frontmatter를 지원합니다:
| 필드 | 설명 |
|---|---|
| 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 commit 후 실행) |
| onLifeTransited | 모든 단계 전환 후 (범용) |
Merge 라이프사이클 이벤트
| 이벤트 | 발생 시점 |
|---|---|
| onMergeStarted | merge generation 생성 후 |
| onMergeDetected | detect 단계 완료 후 |
| onMergeMated | mate 단계 완료 후 (genome 해결됨) |
| onMergeMerged | 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가 Generation 간 반복되는 패턴을 감지합니다 — 반복되는 수동 단계, 반복되는 명령어, 일관된 단계 후 작업 등. 패턴이 감지되면 REAP가 자동화를 위한 hook 생성을 제안합니다. Hook 생성은 적용 전에 항상 사용자 확인이 필요합니다.
실행 참고 사항
- Hooks는 CLI가 아닌 AI 에이전트가 실행합니다. 에이전트가 .reap/hooks/에서 일치하는 파일을 검색합니다.
- .sh 파일은 프로젝트 루트 디렉토리에서 셸 스크립트로 실행됩니다.
- .md 파일은 AI 프롬프트로 읽혀지며 에이전트가 따릅니다.
- 동일 이벤트 내 hooks는 순서대로 실행됩니다 (frontmatter 'order' 필드, 낮을수록 먼저 실행).
- 조건은 .reap/hooks/conditions/{name}.sh를 통해 평가됩니다 (exit 0 = 실행, non-zero = 건너뜀).
- onLifeCompleted/onMergeCompleted hooks는 git commit 후 실행됩니다 — hooks에서의 파일 변경은 커밋되지 않은 상태가 됩니다.
