commitgate-discoverylisted
Install: claude install-skill sol5288/commitgate
# CommitGate — 요구 정리(Discovery)
`req:new` **전에** 쓴다. 산출물은 **REQ Brief 텍스트 하나뿐**이다.
## 전제
- 이 스킬은 **티켓 생성 전** 단계다. 이미 REQ가 있고 `req:next`가 `AGENT`를 반환했다면 이 스킬이 아니다 — 그 작업을 하라.
- **파일·브랜치·커밋·`state.json`을 만들거나 바꾸지 않는다.** Brief는 대화 안에 머문다.
## 방법
### 사실과 결정을 가른다
**사실**은 찾고, **결정**은 묻는다.
- 코드베이스를 뒤져 알 수 있는 것(현재 구조·기존 관례·의존성·무엇이 이미 있는지)은 **묻지 말고 직접 찾는다.**
- 트레이드오프가 있는 선택�� **사��자의 것**이다. 하나씩 내놓고 답을 기다린다.
### 한 번에 하��씩 묻는다
질문을 몰아서 던지면 사용자는 압도된다. **하나 묻고, 답을 받고, 다음으로 간다.**
설계 트리의 가지를 ��나씩 내려가며 결정 간 의존을 먼저 푼다.
**각 질문에는 네가 추천하는 답을 함께 낸다.** "어떻게 할까요?"보다 "A를 추천합니다. 이유는 X. 어떻게 할까요?"가 훨씬 빠르다.
### Brief가 채워졌는지 본다
다음이 다 차면 충분하다. 빈 칸이 있으면 그게 다음 질문이다.
- **무엇을 / 왜** — 해결하려는 문제. 기능 목록이 아니라 문제.
- **제약** — 지켜야 하는 것(호환성·보안·성능·기한).
- **완료 기준** — 무엇이 참이면 끝인가. 검증 가능한 문장으로.
- **비목표** — 이번에 **하지 않을** 것. 명시된 경계는 결함이 아니다.
- **대표 예시** — 정상 경로 하나를 구체적으로.
- **예외·실패** — 무엇이 잘못될 수 있고 그때 어떻게 되나.
- **용어** — 프로젝트 용어·새로 만드는 용어·기존 용어와 충돌하는 것.
- **미결 질문** — 아직 답이 없는 것. 비워 두지 말고 **명시**한다.
### 용어를 벼린다
- 사용자가 흐릿한 낱말("처리한다", "관리한다", "제대로")을 쓰면 **그 자리에서 되묻는다.**
- 같은 것을 두 이름으로 부르고 있으면 드러낸다. 새 용어를 만들면 기존 용어와 충돌하는지 확인한다.
- 구체적인 시나리오로 압박한다 — "그럼 X가 비어 있으면요?"
## 경계
- **합의 전에 실행하지 않는다.** 사용자가 "이해가 맞다"고 확인하기 전에 Brief를 코드나 티켓으로 옮기지 않는다.
- Brief가 충분해지면 기존 CommitGate 흐름으로 넘긴다. **진입 명령은 harness마다 다르다:**
- **Claude Code**: `/req` 로 시작한 뒤 `req:new` → `req:next` 반복.
- **그 외(Codex CLI·Cursor 등)**: `/req` 같은 command가 **없다.** 저장소 루트 `AGENTS.md`의 워크플로 명령 표를 보고
`req:new` → `req:next` 반복으로 들어간다.
어느 쪽이든 티켓 생성 후의 정본