| name | fix |
| description | 버그를 재현 테스트 → 수정 → 통과 사이클로 해결한다. 수정 완료 후 /commit을 호출한다. |
| argument-hint | [버그 설명] [--skip-repro: 재현 테스트 없이 바로 수정] |
| allowed-tools | Read, Glob, Grep, Write, Edit, Bash, Agent, Skill |
fix
버그를 재현 가능한 테스트로 먼저 증명한 뒤 수정한다.
--skip-repro 플래그가 있으면 재현 테스트 작성 없이 Step 2부터 시작한다.
Step 1: 버그 재현 테스트 작성
$ARGUMENTS에서 버그 설명을 파악한다. 모호하면 사용자에게 재현 조건을 질문한다.
- Grep으로 관련 클래스·메서드 위치를 조회한다
- 기존 테스트 파일을 확인해 테스트 패턴을 파악한다
- 실패하는 테스트를 먼저 작성한다 (Green이 아닌 Red 상태).
/write-tests 컨벤션을 따른다 — 특히 모듈 로컬 베이스 클래스 상속(빠뜨리면 컨테이너가 안 떠 테스트가 엉뚱한 이유로 실패한다)
/run-tests coffeeshout.해당패키지.해당테스트클래스 --sync 를 호출한다.
- 실패(Red)가 버그의 단언 실패인지 확인한다. 컴파일·컨텍스트·Docker 오류로 인한 실패는 재현이 아니라 인프라 문제이므로 그것부터 해결한 뒤 다시 시도한다
- 버그로 인한 Red이면 "재현 완료 (Red)" 메시지를 출력하고 Step 2로 넘어간다
- 결과가 성공(Green)이면 재현 조건을 다시 확인하고 사용자에게 알린다
Step 2: 근본 원인 파악
- 스택 트레이스와 실패 메시지를 분석한다
- Grep으로 관련 코드 위치를 확인한다
- 원인을 한 줄로 요약해 사용자에게 설명한다
Step 3: 최소 범위 수정
- 버그를 유발하는 코드만 수정한다. 주변 코드를 함께 정리하지 않는다
- 수정 범위가 예상보다 크면 사용자에게 알리고 확인을 받은 뒤 진행한다
Step 4: 테스트 통과 확인
/run-tests coffeeshout.해당패키지.* --sync 를 호출한다.
- 재현 테스트가 Green이 되어야 한다
- 같은 패키지의 기존 테스트가 모두 통과해야 한다
Step 5: 커밋
/commit을 호출한다. 커밋 메시지 형식: fix(scope): 버그 설명