← ClaudeAtlas

commitgate-diagnosing-bugslisted

버그·회귀·성능 문제를 피드백 루프부터 만들어 좁혀 간다. 뭔가 깨졌다/던진다/느리다는 보고를 받았을 때, 또는 phase 구현 중 원인 불명 실패를 만났을 때 쓴다. 재현→최소화→가설→계측→수정→회귀 테스트 순서이며, 끝나면 req:next 로 돌아간다.
sol5288/commitgate · ★ 0 · Code & Development · score 72
Install: claude install-skill sol5288/commitgate
# CommitGate — 버그 진단 어려운 버그를 위한 규율. **정당한 이유 없이 단계를 건너뛰지 않는다.** ## 전제 버그·회귀·성능 문제일 때만 쓴다. 일반 기능 구현이면 `commitgate-tdd`다. REQ 안에서 쓴다면 `req:next`가 `AGENT`일 때다. **끝나면 반드시 `req:next`로 돌아간다.** 진단 결과가 요구·설계를 바꾼다면 `00-requirement.md`/`01-design.md`/`02-plan.md`에 반영해야 하고, 설계가 바뀌면 **재승인**이 필요하다. ## 방법 ### Phase 1 — 피드백 루프를 만든다 **이게 이 스킬의 전부다.** 나머지는 기계적이다. *이 버그*에 빨간불이 켜지는 **팽팽한** pass/fail 신호가 있으면 원인은 찾아진다. 없으면 코드를 아무리 노려봐도 소용없다. **여기에 불균형하게 많이 투자한다.** 만드는 법 — 대략 이 순서로 시도한다: 1. **실패하는 테스트** — 버그에 닿는 seam이면 unit·integration·e2e 아무거나. 2. **CLI 호출** — 픽스처 입력으로 돌리고 stdout을 known-good과 diff. 3. **스크립트 재현** — 실제 입력/이벤트를 디스크에 저장해 해당 코드 경로에 격리 재생. 4. **일회용 하네스** — 최소 부분만 띄워 함수 하나로 버그 경로를 때린다. 5. **속성/퍼즈 루프** — "가끔 틀림"이면 랜덤 입력 1000개를 돌려 실패 양상을 찾는다. 6. **차등 루프** — 같은 입력을 구/신 버전에 넣고 출력을 diff. 🔴 **활성 REQ worktree에서 HEAD를 움직이지 마라** — 이분 탐색(bisect)·`reset`·`checkout`으로 과거 상태를 오가는 조사는 이 워크트리에서 **금지**한다. REQ 상태와 staged 승인 바인딩이 깨지고, 승인된 tree가 사라지면 커밋이 막힌다. 🔴 **진단·조사를 위한 커밋은 금지**다 — 진단은 커밋 사유가 **아니다**. 미승인 변경을 커밋하면 리뷰 게이트를 우회하는 것이라, 사람이 승인해도 허용되지 않는다. **그래서 이분해야 하면 이렇게 한다 — 대개 물어볼 필요가 없다:** - **이미 커밋되어 있고 깨끗한 승인 baseline**이 있으면, 그것을 활성 worktree **밖의** 버릴 clone/사본으로 복제해 거기서 bisect한다. **사람 승인 없이 진행한다** — 이건 Phase 1 사다리의 일회용 하네스와 같은 급의 **진단 기법**이지 범위 변경이 아니다. - 활성 worktree의 HEAD·인덱스·작업물은 건드리지 않는다. **결과(원인 커밋·증상 경계)만** 가져오고 clone은 버린다. - 복제할 **깨끗한 승인 baseline이 없다면** 멈추고 사람에게 보고한다 — 미승인 변경을 커밋해서 baseline을 만드는 것은 위 금지에 걸린다. - 진단 결과가 **설계·계획·비목표를 바꿔야** 하면 보고해 재승인을 받는다 — 이미 계약의 보고 사유다. > 멈추는 기준