가이드

Hooks

REAP hooks는 주요 라이프사이클 이벤트에서 자동화를 실행할 수 있게 합니다. Hooks는 .reap/hooks/에 개별 파일로 저장되며 AI 에이전트가 적절한 시점에 실행합니다.

Hook 유형

각 hook 파일은 확장자에 따라 두 가지 유형 중 하나를 지원합니다:

command (.sh)

셸 스크립트입니다. AI 에이전트가 프로젝트 루트 디렉토리에서 실행합니다. 스크립트, CLI 도구, 빌드 명령어에 사용합니다.

prompt (.md)

마크다운으로 된 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을 생성한 후
onLifeLearnedlearning 단계 완료 후
onLifePlannedplanning 단계 완료 후
onLifeImplementedimplementation 단계 완료 후
onLifeValidatedvalidation 단계 완료 후
onLifeCompletedcompletion + 아카이브 후 (git commit 후 실행)
onLifeTransited모든 단계 전환 후 (범용)

Merge 라이프사이클 이벤트

이벤트발생 시점
onMergeStartedmerge generation 생성 후
onMergeDetecteddetect 단계 완료 후
onMergeMatedmate 단계 완료 후 (genome 해결됨)
onMergeMergedmerge 단계 완료 후 (소스 병합됨)
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가 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에서의 파일 변경은 커밋되지 않은 상태가 됩니다.