| name | ci-failure-watcher |
| description | 원격 CI를 일정 간격(기본 5분)마다 폴링해서, 체크가 빨개지면(red) 실패를 조사하고, green이 될 때까지 수정을 push 하는 인터벌 루프입니다. 사용자가 "CI 빨간불 뜨면 자동으로 고쳐줘", "CI 5분마다 감시하다 깨지면 수정", "CI 초록 될 때까지 지켜봐", "gh run 폴링해서 실패 추적·수정", "watch CI", "CI failure watcher", "poll CI until green", "investigate CI failures and push fixes"처럼 원격 CI 상태를 주기적으로 감시하다가 실패를 자동으로 추적·수정하고 싶을 때 사용하세요. (구분: 사람이 직접 한 번 돌리는 CI 수정은 looping:fix-ci-until-green, 여러 PR을 주기적으로 돌보는 건 looping:pr-babysitter, 배포 후 헬스·스모크 엔드포인트 감시는 looping:deploy-verification-loop, 로컬 프로덕션 빌드 통과는 looping:build-until-green) |
CI 실패 감시자 (CI Failure Watcher)
일정 간격마다 CI를 폴링하고, 체크가 빨개지면 실패를 조사해 green이 될 때까지 수정을 push 합니다.
| 항목 | 값 |
|---|
| 카테고리 | CI |
| 트리거 | 인터벌(interval) — 기본 5분마다 |
| 종료 조건(Exit) | 최신 CI 실행의 결론(conclusion)이 success일 때 |
| 반복 한도(Max iterations) | 12 |
| 매 반복 체크 명령 | gh run list --branch $(git branch --show-current) --limit 1 |
| 설치 파일 | 있음 — 훅 번들 zip(선택, 미사용 가능) |
| 가드레일 | 강화됨(Hardened) |
| 지원 에이전트 | Claude Code · Cursor |
이 루프는 언제 쓰나
push 해놓고 CI 결과를 손으로 새로고침하며 기다리는 게 번거로울 때 씁니다. 정해진 간격마다 에이전트가 현재 브랜치의 최신 CI 실행을 폴링하다가, 체크가 빨개지는 순간 로그 읽기 → 근본 원인 수정 → 로컬 검증 → 재push를 스스로 반복하며 green에 수렴시킵니다. 핵심은 원격 CI가 진짜로 통과할 때까지 지켜보는 것 — 로컬에서만 통과하고 CI에서 깨지는 케이스(환경 차이, 캐시, 누락된 의존성)를 놓치지 않습니다.
루프 흐름
〔5분마다〕→ CI 상태 확인 → 실패 조사 → 로컬 검증 →〔피드백 게이트〕
최신 실행 결론이 success? → 아니오: 수정 후 다음 틱에 반복 / 예: 종료
매 반복(pass)마다 하는 일
- CI 상태 확인 — gh CLI로 현재 브랜치의 최신 CI 실행을 확인합니다.
gh run list --branch $(git branch --show-current) --limit 1
- 실패 조사 — CI가 실패했으면 로그를 읽고 근본 원인을 찾아 가장 작은 수정을 적용합니다.
- 로컬 검증 — 다시 push 하기 전에, 실패한 CI 단계를 로컬에서 똑같이 실행해 확인합니다.
가드레일 (점수 조작 방지 규칙)
종료 조건을 "가짜로" 통과시키지 못하게 막는 규칙입니다. 반드시 지키세요.
- 체크 명령이나 종료 기준을 고쳐서 억지로 성공시키지 않는다.
- 체크를 건너뛰거나 비활성화·우회해서 종료 조건을 통과시키지 않는다.
- 여러 번 반복해도 막히면, 지표를 조작하지 말고 멈추고 블로커를 보고한다.
Claude Code에서 실행하기
이 루프는 시간 기반(인터벌) 입니다. Claude Code에서 인터벌 루프를 돌리는 방법은 두 가지입니다.
방법 1 — /loop 5m (이번 세션 동안 주기 실행)
/loop 5m "CI 실패 감시자(CI Failure Watcher)" 루프를 시작합니다.
목표: 이 브랜치의 최신 CI 실행이 green이다.
최대 반복: 12.
매 반복 사이 실행: gh run list --branch $(git branch --show-current) --limit 1
종료 조건: 최신 실행의 결론(conclusion)이 success일 때.
1단계: CI 상태를 확인한다. 실패면 로그를 읽고 근본 원인을 고친 뒤, 로컬에서 검증하고 필요하면 push 한다.
방법 2 — /schedule (세션을 닫아도 도는 cron형 클라우드 에이전트)
세션을 꺼도 계속 감시하게 하려면 /schedule로 위 프롬프트를 cron(예: */5 * * * *)에 등록하세요. push 후 자리를 비워도 CI가 빨개지면 알아서 추적·수정합니다.
전제: gh CLI가 인증되어 있어야 하고(gh auth status), 현재 브랜치에 GitHub Actions 같은 CI 워크플로가 연결돼 있어야 합니다.
참고: 이 루프에는 선택용 훅 번들 zip(.cursor/·.claude/ 아래의 watch.sh 등)도 제공되지만, Claude Code에서는 위의 /loop·/schedule만으로 충분합니다. 훅을 쓰려면 zip을 받아 레포 루트에 풀고 세션을 재시작하세요.
팁 / 변형
- 정확한 결론만 뽑기: 폴링 출력을 더 깔끔히 보려면 체크 명령을
gh run list --branch $(git branch --show-current) --limit 1 --json conclusion -q '.[0].conclusion'로 바꿔 success/failure 문자열만 받으세요.
- 다른 생태계로 교체: GitHub 대신 GitLab이면
gh를 glab ci status로, 자체 CI면 상태 API를 curl -fsS <status-url>로 바꾸면 됩니다. 종료 조건은 "최신 실행이 success"로 그대로 두세요.
- 막힐 때: 같은 실패가 2회 반복되면 가드레일대로 멈추고, 원인 가설과 함께 사람에게 에스컬레이션하게 하세요.
- 연관 루프: 사람이 직접 한 번 돌리는 CI 수정은
looping:fix-ci-until-green, 여러 PR을 주기적으로 돌보는 건 looping:pr-babysitter, 배포 후 헬스·스모크 감시는 looping:deploy-verification-loop.
원본 영어 kickoff (loops.elorm.xyz 원문)
/loop 5m Start the "CI Failure Watcher" loop.
Goal: latest CI run on this branch is green.
Max iterations: 12.
Between iterations run: gh run list --branch $(git branch --show-current) --limit 1
Exit when: latest run conclusion is success.
Step 1: Check CI status. If failed, read logs, fix root cause, verify locally, and push if needed.
출처: https://loops.elorm.xyz/loops/ci-failure-watcher