반복을 사람 손에서 떼어낸다
지금까지는 내가 시켜야 돌았습니다. 자동화는 정해둔 조건에서 스스로 돌게 만드는 단계입니다.
무엇을 언제 쓰나
| 방식 | 언제 | 어디서 도나 |
|---|---|---|
| GitHub Actions | PR마다 자동 리뷰·검사 | CI 러너 |
| 예약 실행 | 매일·매주 정해진 시간 | 클라우드 또는 내 PC |
| 헤드리스 (-p) | 스크립트·배치에서 한 번 | 내 PC · CI |
| 훅 | 파일 편집·커밋 시점 | 세션 내부 |
끝날 때까지 계속 돌리기
위의 네 가지는 이벤트가 오면 한 번 실행합니다. 그런데 "테스트가 다 통과할 때까지"처럼 여러 턴을 이어서 돌려야 하는 일도 있습니다. 지금 세션을 계속 돌게 하는 방법이 세 가지입니다.
| 다음 턴이 시작되는 때 | 멈추는 때 | 범위 | |
|---|---|---|---|
| /goal | 이전 턴이 끝나면 | 모델이 조건 충족을 확인 | 현재 세션만 |
| /loop | 시간 간격이 지나면 | 내가 멈추거나 Claude가 끝났다고 판단 | 현재 세션만 |
| Stop 훅 | 이전 턴이 끝나면 | 내가 정한 스크립트·프롬프트가 판단 | 설정 범위 전체 세션 |
/goal — 조건이 충족될 때까지
완료 조건을 걸어두면, 매 턴마다 작은 빠른 모델이 조건 충족을 판정합니다. 아니면 그 이유를 다음 턴의 지침으로 삼아 계속 일하고, 충족되면 목표가 자동 해제됩니다. 설정하는 순간 첫 턴이 바로 시작됩니다.
/goal test/auth의 모든 테스트가 통과하고 lint가 깨끗하다 /goal ← 상태 보기 (조건 · 경과 · 턴 수 · 토큰 · 최근 판정 이유) /goal clear ← 조기 해제 (stop · off · reset · none · cancel 도 동일)
조건을 잘 쓰는 것이 전부입니다. 판정 모델은 대화에 이미 드러난 내용만 봅니다 — 직접 명령을 실행하거나 파일을 열지 않습니다. 그래서 Claude의 출력으로 증명될 수 있는 조건이어야 합니다.
| 조건에 넣을 것 | 예 |
|---|---|
| 측정 가능한 종료 상태 | 테스트 결과 · 빌드 종료 코드 · 파일 수 · 빈 큐 |
| 증명 방법 | npm test가 0으로 종료 · git status가 깨끗 |
| 지켜야 할 제약 | 다른 테스트 파일은 수정하지 않는다 |
| 한도 | 또는 20턴 후 중단 — 무한정 도는 것을 막습니다 |
/loop — 간격을 두고 반복
배포 상태 확인처럼 기다려야 하는 일에 씁니다. 무엇을 주느냐에 따라 동작이 달라집니다.
| 입력 | 동작 |
|---|---|
| /loop 5m 배포 끝났는지 확인해줘 | 정해진 간격으로 반복 (s · m · h · d) |
| /loop 배포 끝났는지 확인해줘 | Claude가 간격을 스스로 정함 — 바쁘면 짧게, 조용하면 길게 |
| /loop | 내장 정비 프롬프트 — 미완 작업 이어서, PR 코멘트·CI 처리 |
Stop 훅 — 매 턴 내 기준으로 검사
사실 /goal은 세션 범위의 Stop 훅을 감싼 것입니다. 같은 검사를 모든 세션에 걸고 싶으면 설정 파일에 직접 씁니다. "type": "prompt"는 모델이 판단하는 방식입니다.
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "요청한 작업이 모두 끝났는지 확인해라. 아니면 {\"ok\": false, \"reason\": \"남은 일\"} 로 답해라."
}
]
}
]
}
}ok: false면 reason이 Claude에게 전달되어 계속 일합니다. 판정에 파일을 읽거나 명령을 실행해야 하면 "type": "command"로 스크립트를 붙입니다 (B-7).
단계적으로 자동화하기
수동으로 3회 검증
먼저 같은 작업을 손으로 세 번 시켜 결과가 안정적인지 확인합니다.
절차서로 만든다
지시문과 완료 기준을 문서로 고정합니다.
헤드리스로 돌린다
대화 없이 한 번 실행해 같은 결과가 나오는지 봅니다.
예약·CI에 건다
여기까지 통과하면 자동 실행으로 옮깁니다.
claude -p "logs 폴더를 집계해서 output/일일리포트.md 를 만들어줘" \ --tools "Read,Write,Bash" --allowedTools "Read,Write"
GitHub Actions — PR 자동 리뷰
/install-github-app
설치 후 PR 코멘트에 @claude를 멘션하면 자동 실행됩니다.
- 자동화 전에 수동 3회 검증을 했다
- 헤드리스로 같은 결과가 재현되는지 확인했다
- --tools와 --allowedTools의 차이를 안다
- /goal로 조건을 걸어 돌려봤다
- /goal · /loop · 훅을 언제 쓸지 구분할 수 있다