지금까지 배운 개념을 실제로 쓸 수 있는 루프로 만들어 봅시다. 이번 레슨에서는 'PR(Pull Request)마다 자동으로 코드 리뷰를 실행하고, 문제가 있으면 수정하고, 검증을 통과하면 리뷰를 요청하는' 작은 루프를 직접 설계합니다.
설계할 루프: 자동 PR 리뷰-수정-검증
이 루프는 개발자가 브랜치에 코드를 푸시하면 시작됩니다. 코드를 리뷰하고, 간단한 문제를 수정하고, 검증을 실행하고, 사람이 리뷰할 준비가 된 상태를 만들어 줍니다. 매번 수동으로 하던 작업을 자동화합니다.
루프 설계 6단계
루프를 만드는 순서
- 목표 정의: '코드 스타일 오류·타입 오류·간단한 버그를 자동 수정하고, 수정 후 모든 테스트가 통과하는 상태 만들기'
- 범위 정의: '이번 PR에서 변경된 파일만 수정 대상. 마이그레이션 파일(migrations/)은 읽기 전용. 비즈니스 로직 리팩터링은 제외.'
- 지표 정의: 'ESLint 경고 0개, TypeScript 오류 0개, 기존 테스트 통과율 100% 유지'
- 예산 설정: '최대 5번 반복. 3번 연속 변화 없으면 사람에게 에스컬레이션.'
- 정지조건 설정: '성공 = 모든 지표 달성. 실패 = 예산 소진 또는 같은 오류 5번 이상.'
- 메모리 파일 준비: 'tasks/pr-loop-state.md 생성. 각 반복마다 에이전트가 직접 업데이트.'
루프 시작 프롬프트 작성
PR 리뷰-수정 루프 시작 프롬프트 (복붙 가능)
# PR 자동 리뷰-수정 루프
## 네 임무
아래 파일들을 리뷰하고 문제를 수정한 후, 검증을 통과시켜 줘.
## 범위 (수정 가능한 파일만)
{여기에 PR 변경 파일 목록을 붙여넣기}
## 수정 금지 파일
- supabase/migrations/ (읽기만 가능)
- package.json, package-lock.json
- 테스트 파일 (*.test.ts, *.spec.ts)
## 각 반복에서 해야 할 일
1. 현재 오류 확인: npx tsc --noEmit && npx eslint {files}
2. 가장 우선순위 높은 오류부터 수정
3. 수정 후 다시 검증 실행 (결과를 그대로 출력)
4. tasks/pr-loop-state.md 업데이트 (반복 번호, 수정 내용, 남은 오류 수)
5. 오류 0개가 되면 완료를 알리고 멈춰줘
## 에스컬레이션 조건
- 같은 오류가 3번 이상 반복되면: 이유와 함께 알려줘
- 비즈니스 로직 변경이 필요하면: 수정하지 말고 설명만 해줘
## 시작 전 확인
tasks/pr-loop-state.md가 있으면 읽고 이전 상태에서 이어서 시작해.
없으면 새로 만들고 반복 1부터 시작해.
상태 파일 템플릿
tasks/pr-loop-state.md 시작 템플릿
# PR 리뷰-수정 루프 상태
생성: {날짜}
PR: {PR 번호 또는 브랜치명}
## 현재 상태
- 총 반복 횟수: 0
- TypeScript 오류: {초기값}
- ESLint 경고: {초기값}
- 테스트 통과율: {초기값}
## 반복 기록
### 반복 1
- 날짜/시간:
- 수정한 파일:
- 수정 내용:
- 검증 결과: tsc={} lint={} test={}
- 남은 오류:
## 실패한 접근법
(아직 없음)
## 다음 단계
반복 1 시작
첫 실행 전 체크리스트
- 목표가 기계적으로 측정 가능한가? (숫자로 표현되어 있는가)
- 수정 가능한 파일과 금지된 파일이 명확히 구분되어 있는가
- 검증 명령이 한 줄로 실행 가능한가 (스크립트 준비)
- 상태 파일(pr-loop-state.md)이 생성되어 있는가
- 에스컬레이션 조건이 정의되어 있는가
- 최대 반복 횟수와 비용 한도가 설정되어 있는가
루프 완료 후 개선하기
첫 실행에서 100% 완벽하게 동작하는 루프는 없습니다. 에이전트가 검증을 제대로 실행했는지, 범위를 지켰는지, 상태 파일을 업데이트했는지를 확인하고, 발견한 문제점을 프롬프트나 템플릿에 반영하세요. 루프 자체도 반복적으로 개선됩니다.
루프를 처음 설계할 때는 먼저 손으로 한 번 해보세요. 자동화하기 전에 직접 해보면 어떤 단계에서 애매한 판단이 필요한지, 어떤 오류가 자주 나는지를 파악할 수 있습니다. 그 경험이 좋은 루프 설계의 기반이 됩니다.
루프를 완전히 자동화해서 무인으로 돌리기 전에, 반드시 5~10번은 사람이 각 단계를 승인하는 모드로 먼저 실행해 보세요. 루프가 예상치 못한 방향으로 실행될 때 피해를 최소화하는 것이 초기에 가장 중요합니다.