| name | pr-watch-loop |
| description | codex-watch 라벨이 붙은 열린 PR들을 15분마다 폴링해서 — CI 상태·리뷰 진행·마지막 활동을 요약하고, 회귀(regression)나 멈춘 스레드(stale thread)를 표시하고, watch 대상 PR마다 한 줄 상태 리포트를 남기는 인터벌 감시 루프입니다. 사용자가 "열린 PR들 15분마다 감시해줘", "PR 활동 폴링해서 회귀/멈춘 스레드 표시해줘", "watch 라벨 PR 상태 리포트 돌려줘", "PR 워치 루프", "PR watch loop", "poll watched PRs", "flag stale PR threads", "watch open PRs for regressions"처럼 여러 PR의 상태 변화를 주기적으로 지켜보고 리포트하고 싶을 때 사용하세요. (구분: 리뷰어 넛지·CI 수정·rebase까지 적극적으로 돌보는 건 looping:pr-babysitter, 원격 CI 한 건을 green까지 감시·수정하는 건 looping:ci-failure-watcher, 단일 PR을 머지 가능 상태까지 끌고 가는 건 looping:ship-pr-until-green, 내 diff를 시니어처럼 셀프 리뷰하는 건 looping:pr-self-review) |
PR 워치 루프 (PR Watch Loop)
codex-watch 라벨이 붙은 열린 PR을 15분마다 폴링해 활동을 살피고, 회귀나 멈춘 스레드를 표시합니다.
| 항목 | 값 |
|---|
| 카테고리 | CI |
| 트리거 | 인터벌(interval) — 기본 15분마다 |
| 종료 조건(Exit) | watch 대상(codex-watch) PR 전부에 대해 상태 리포트가 전달될 때 |
| 매 반복 체크 명령 | gh pr list --label codex-watch --json number,title,state,statusCheckRollup |
| 가드레일 | 강화됨(Hardened) |
| 지원 에이전트 | Cursor · Codex |
이 루프는 언제 쓰나
여러 PR이 동시에 떠 있고, 각각 CI가 빨개지거나 리뷰가 멈추거나 스레드가 방치되는 상황을 사람이 일일이 새로고침하며 챙기기 번거로울 때 씁니다. 정해진 간격마다 에이전트가 codex-watch 라벨이 붙은 열린 PR만 폴링해서, CI 상태·리뷰 진행·마지막 활동을 요약하고, 회귀나 멈춘 스레드(stale thread)를 짚어 한 줄 상태 리포트로 남깁니다.
형제 루프인 looping:pr-babysitter가 리뷰어를 넛지하고 CI를 고치고 rebase까지 적극적으로 손보는 반면, 이 루프의 핵심은 감시 + 리포트입니다. 사소한 CI 실패만 한 번 고치거나 작성자에게 핑을 보낼 뿐, 제품 판단이 필요한 일은 사람에게 넘깁니다.
루프 흐름
〔15분마다〕→ watch PR 목록 → CI·리뷰 점검 → 상태 보고 / 사소한 블로커 처리 →〔피드백 게이트〕
watch 대상 PR 전부 리포트됨? → 아니오: 다음 틱에 반복 / 예: 종료
매 반복(pass)마다 하는 일
- watch PR 목록 — codex-watch 라벨이 붙은 열린 PR을 나열합니다. CI 상태, 리뷰 상태, 마지막 활동을 요약합니다.
gh pr list --label codex-watch --json number,title,state,statusCheckRollup
- CI·리뷰 점검 — watch 대상 PR마다 실패한 체크, 해결되지 않은 리뷰 코멘트, 머지 충돌을 확인합니다.
- 상태 보고 / 처리 — 짧은 상태 업데이트를 남깁니다. 사소한 CI 실패는 고치고, 블로커는 작성자에게 핑을 보냅니다.
가드레일 (점수 조작 방지 규칙)
종료 조건을 "가짜로" 통과시키지 못하게 막는 규칙입니다. 반드시 지키세요.
- 체크 명령이나 종료 기준을 고쳐서 억지로 성공시키지 않는다.
- 체크를 건너뛰거나 비활성화·우회해서 종료 조건을 통과시키지 않는다.
- 여러 번 반복해도 막히면, 지표를 조작하지 말고 멈추고 블로커를 보고한다.
Claude Code에서 실행하기
이 루프는 시간 기반(인터벌) 입니다. Claude Code에서 인터벌 루프를 돌리는 방법은 두 가지입니다.
방법 1 — /loop 15m (이번 세션 동안 주기 실행)
/loop 15m "PR 워치 루프(PR Watch Loop)" 루프를 시작합니다.
목표: codex-watch PR들을 건강하고 막힘 없이 유지한다.
매 반복 사이 실행: gh pr list --label codex-watch --json number,title,state,statusCheckRollup
종료 조건: watch 대상 PR 전부에 대해 상태 리포트가 전달될 때.
1단계: codex-watch PR을 나열하고, CI와 리뷰를 점검하고, 상태를 보고하거나 사소한 블로커를 고친다.
방법 2 — /schedule (세션을 닫아도 도는 cron형 클라우드 에이전트)
세션을 꺼도 계속 돌게 하려면 /schedule로 위 프롬프트를 cron(예: */15 * * * *)에 등록하세요. 장시간 무인 감시에 적합합니다.
전제: gh CLI가 인증되어 있어야 하고, 감시할 PR에 codex-watch(원하는 이름으로 변경 가능) 라벨을 붙여 두어야 합니다.
팁 / 변형
- 라벨 변경:
codex-watch를 팀 컨벤션(needs-review, watch 등)에 맞게 바꾸세요. 체크 명령의 --label 값만 바꾸면 됩니다.
- 간격 조정: 활동이 뜸하면
/loop 30m처럼 늘리고, 출시 직전에는 5m으로 좁히세요.
- 다른 생태계로: GitHub 대신 GitLab이면
glab mr list, Gerrit이면 해당 CLI로 같은 "목록 → 점검 → 리포트" 흐름을 옮기세요.
- 막힐 때: 같은 PR이 두 틱 연속 같은 실패로 빨갛다면 직접 고치려 들지 말고, 가드레일대로 멈추고 작성자에게 블로커를 명확히 보고하게 하세요.
- 연관 루프: 적극적으로 CI 고치고 rebase까지 하는 건
looping:pr-babysitter, 원격 CI 한 건만 green까지 감시는 looping:ci-failure-watcher, 단일 PR 완주는 looping:ship-pr-until-green.
원본 영어 kickoff (loops.elorm.xyz 원문)
/loop 15m Start the "PR Watch Loop".
Goal: keep codex-watch PRs healthy and unblocked.
Between iterations run: gh pr list --label codex-watch --json number,title,state,statusCheckRollup
Exit when: status report is delivered for every watched PR.
Step 1: List codex-watch PRs, check CI and reviews, and report or fix trivial blockers.
출처: https://loops.elorm.xyz/loops/pr-watch-loop