You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**모호하고 일반적인 표현을 허용하지 않는다.** 답변이 "효율화", "개선" 같은 추상어로만 구성되면 구체화를 요청한다.
41
42
-**누락된 데이터를 가정하지 않는다.** 사용자가 모르는 항목은 ❓로 남기되, 빈칸이 있다는 것을 명시한다.
42
43
-**정량화를 요구한다.** "많이", "자주" 대신 숫자를 묻는다. 정확하지 않아도 추정치라도 기록한다.
43
-
-**충분한 정보가 모일 때까지 산출물로 넘어가지 않는다.** 필수 질문 답변이 모두 모호하면 1라운드 더 진행한다.
44
+
-**충분한 정보가 모일 때까지 산출물로 넘어가지 않는다.** 모호한 답변에는 그 자리에서 파고들기 질문으로 구체화를 요청하고, 충분한 정보가 모인 후에만 다음 단계로 진행한다.
45
+
-**모든 질문에 권장 답변을 제시한다.** 사용자가 결정 부담을 덜 수 있도록, 현재 맥락에서 가장 가능성 높은 답 또는 합리적 추정을 options 첫 번째에 `(Recommended)` 라벨로 반드시 제시한다.
44
46
45
47
## 모드 자동 판단
46
48
@@ -164,45 +166,77 @@ Q&A 기반으로 새 도메인을 생성한다.
164
166
- 인자가 없으면 도메인명과 한 줄 설명을 묻는다.
165
167
-`context/{도메인}/`이 이미 존재하면 갱신 모드(D)로 전환할지 묻는다.
166
168
167
-
### B-2. 검증 질문 (1라운드)
168
-
169
-
AskUserQuestion으로 아래 5개를 한 번에 묻는다:
170
-
171
-
1.**문제**: 이 도메인에서 풀려는 문제가 뭔가?
172
-
2.**현재 프로세스**: 지금은 어떻게 하고 있는가?
173
-
3.**안 하면**: 이걸 안 하면 어떻게 되는가?
174
-
4.**사용자/규모**: 예상 사용자와 규모는?
175
-
5.**담당**: 이 도메인의 담당 PM/PO와 주요 개발자는?
176
-
177
-
### B-3. 답변 품질 판단
178
-
179
-
답변을 받은 뒤 아래를 확인한다:
180
-
181
-
- 5개 중 3개 이상 구체적 → **B-4단계로 진행**
182
-
- 모호한 답변이 3개 이상 → **심화 질문 1라운드 추가** (B-3-1단계)
183
-
184
-
모호함 판단 기준:
169
+
### B-2. 순차 검증 질문
170
+
171
+
아래 5개 질문을 프레임으로 삼아 **1개씩 순차적으로** 질문한다. 각 답변에 따라 다음 행동이 결정된다.
172
+
173
+
**질문 프레임 (순서대로)**:
174
+
1. 이 도메인에서 풀려는 문제가 뭔가요?
175
+
2. 지금은 어떻게 하고 있나요?
176
+
3. 이걸 안 하면 어떻게 되나요?
177
+
4. 예상 사용자와 규모는?
178
+
5. 이 도메인의 담당 PM/PO와 주요 개발자는?
179
+
180
+
**순차 질문 루프** (모든 프레임이 완전히 해소될 때까지):
181
+
182
+
1. 현재 프레임의 질문을 `AskUserQuestion(questions: [질문 1개])`으로 제시한다. **권장 답변(코드베이스/git blame/맥락에서 추정한 답)을 options 첫 번째에 `(Recommended)` 라벨로 제시**한다. 단, Q1(문제)·Q3(안 하면) 같은 주관 영역으로 추정이 어색한 경우, 발상 기준점을 주기 위해 예시 후보 1개를 `{ label: "예: ..." }` 형식으로 대체 제시한다.
-**모호하거나 불완전**: 파고들기 질문을 생성하여 현재 위치에 이어서 진행 (파고들기 질문에도 동일 규칙((Recommended) 또는 예시 후보 + Other)이 적용된다). **파고들기는 같은 프레임에서 최대 2회까지만 반복**한다. 2회 초과 시 ❓로 기록하고 강제로 다음 프레임으로 이동한다.
193
+
-**결정 의존성 발견**: 이 답변이 후속 프레임의 전제 또는 형태를 바꾸면, 영향받는 프레임을 재구성하거나 종속 질문을 추가한다.
194
+
-**코드베이스로 답 가능**: 직접 탐색(Glob/Grep/Read) 후 확인하고 다음 프레임으로 이동
195
+
-**"모르겠음" 선택**: ❓로 기록하고 다음 프레임으로 이동
196
+
197
+
3. 모든 프레임이 해소되면 **공유 이해 확인(align)** 단계를 거친다. 수렴된 답변을 "프레임 → 답변" 형식으로 요약하여 다음과 같이 확인한다:
198
+
```
199
+
AskUserQuestion(
200
+
questions: [{
201
+
question: "정리된 답변을 context 작성에 사용하기 전에 확인해주세요.\n\nQ1: 문제 → ...\nQ2: 현재 프로세스 → ...\nQ3: 안 하면 → ...\nQ4: 사용자/규모 → ...\nQ5: 담당 → ...",
"맞습니다"면 B-4로 진행. "수정 필요"면 사용자가 Other에 입력한 `Q번호: 새 답변` 패턴을 파싱하여 해당 프레임을 재질문 큐에 추가한 뒤 루프 재진입한다. 입력이 패턴과 일치하지 않거나 번호를 식별할 수 없으면, 어떤 프레임을 수정할지 선택형 질문으로 다시 묻는다. **Align 라운드는 최대 3회**로 제한한다. 3회 초과 시 마지막 답변으로 강제 확정하고 미해결 프레임을 ❓로 기록한 뒤 B-4로 진행한다.
212
+
213
+
**모호함 판단 기준**:
185
214
- 정량 수치 없이 "많다", "자주", "크다"만 있는 경우
186
215
- 대상이 불명확한 경우 ("사용자들", "팀원들")
187
216
- "효율화", "개선", "자동화" 등 추상어만 있는 경우
188
217
189
-
### B-3-1. 심화 질문 (선택적, 최대 1라운드)
190
-
191
-
모호했던 항목에 대해서만 구체화를 요청한다:
192
-
193
-
- 현재 프로세스 비용을 정량화할 수 있는가? (주당 시간, 빈도, 인력)
194
-
- 성공 기준을 숫자로 말할 수 있는가?
195
-
- 더 단순한 대안은 검토했는가?
196
-
- 실패 시 영향 범위는?
197
-
198
-
여전히 모르는 항목은 ❓로 남기고 진행한다. 2라운드 이상 반복하지 않는다.
218
+
**파고들기 예시**:
219
+
- 수치가 없으면: "주당 몇 시간, 혹은 월 몇 건 규모인가요?"
220
+
- 대상이 모호하면: "구체적으로 어떤 팀/역할의 사용자인가요?"
221
+
- 추상어만 있으면: "'효율화'가 달성되면 현재 대비 무엇이 어떻게 달라지나요?"
199
222
200
223
### B-4. 관련 프로젝트 확인
201
224
202
-
AskUserQuestion으로 묻는다:
203
-
-**관련 레포**: 이 도메인과 관련된 GHE 레포가 있는가? (예: `xx/factory-api`, `yy/factory-admin`)
225
+
```
226
+
AskUserQuestion(
227
+
questions: [{
228
+
header: "관련 레포",
229
+
question: "이 도메인과 관련된 GHE 레포가 있습니까? (예: xx/factory-api, yy/factory-admin)",
230
+
multiSelect: false,
231
+
options: [
232
+
{ label: "Other로 입력", description: "Other로 이동해서 관련 레포 목록을 자연어로 입력해주세요" },
233
+
{ label: "없음", description: "빈 테이블로 생성합니다" }
234
+
]
235
+
}]
236
+
)
237
+
```
204
238
205
-
레포가 있으면 각 레포의 역할도 함께 기록한다. 아직 없으면 빈 테이블로 생성한다.
239
+
Other로 입력받은 레포 목록을 파싱하여 각 레포의 역할도 함께 기록한다. "없음"이면 빈 테이블로 생성한다.
206
240
207
241
### B-5. 디렉토리 및 문서 생성
208
242
@@ -372,10 +406,7 @@ PM이 정리한 텍스트 파일을 읽어서 context를 생성하거나 갱신
372
406
373
407
#### C-3-3. 답변 품질 판단
374
408
375
-
모드 B-3과 동일한 기준을 적용한다:
376
-
- 5개 중 3개 이상 구체적 → C-4로 진행
377
-
- 모호한 답변이 3개 이상 → 심화 질문 1라운드 추가 (B-3-1 절차와 동일)
378
-
- 여전히 모르는 항목은 ❓로 남기고 진행한다. 2라운드 이상 반복하지 않는다.
409
+
모드 B-2의 "순차 질문 루프 → 2. 답변을 평가한다" 분기 기준을 동일하게 적용한다 (명확/모호/의존성/코드베이스/모르겠음). 모호한 답변에는 파고들기 질문으로 그 자리에서 구체화를 요청하고, 여전히 모르는 항목은 ❓로 남기고 진행한다.
-**"직접 입력"** 선택지는 항상 마지막에 배치한다. 사용자가 이 옵션을 선택하면 후속 AskUserQuestion(자유입력)으로 직접 값을 받는다.
490
-
- 질문이 **2개 이상**이면 순서대로 하나씩 AskUserQuestion을 호출한다. 이전 답변이 다음 질문의 맥락에 영향을 주는 경우 반영한다.
497
+
- 질문이 **2개 이상**이면 **반드시 1개씩** 순서대로 AskUserQuestion을 호출한다 (배치 발사 금지). 이전 답변이 다음 질문의 맥락에 영향을 주는 경우 반영한다.
498
+
-**코드베이스로 답할 수 있는 질문은 사용자에게 묻지 않고 직접 탐색한다** (Glob/Grep/Read).
499
+
-**결정 의존성**: 한 답변이 후속 질문의 전제를 바꾸면 후속 질문을 재구성하거나 종속 질문을 추가한다.
491
500
- 에이전트가 기술 용어를 사용한 경우, 사용자에게 표시할 때 **비기술적 표현으로 의역**한다. 예: "JWT vs 세션" → "로그인 유지 방식".
492
501
- multiSelect가 필요한 경우(에이전트가 "복수 선택 가능"으로 표시): `multiSelect: true`를 추가한다.
493
502
503
+
#### Align 단계 (순차 변환 종결)
504
+
505
+
순차 변환으로 모든 질문이 해소되면, 수렴된 답변을 `Q번호: 답변` 형식으로 요약하여 `맞습니다 (Recommended) / 수정 필요` 확인을 받는다.
506
+
507
+
```
508
+
AskUserQuestion(
509
+
questions: [{
510
+
header: "정리 확인",
511
+
question: "정리된 답변을 산출물 작성에 사용하기 전에 확인해주세요.\n\nQ1: ... → ...\nQ2: ... → ...\n...",
512
+
multiSelect: false,
513
+
options: [
514
+
{ label: "맞습니다 (Recommended)", description: "이대로 다음 단계로 진행" },
515
+
{ label: "수정 필요", description: "Other로 이동해서 'Q번호: 새 답변' 형식으로 입력해주세요" }
516
+
]
517
+
}]
518
+
)
519
+
```
520
+
521
+
"수정 필요" 시 사용자가 Other에 입력한 `Q번호: 새 답변` 패턴을 파싱하여 해당 질문만 재발사한다. 패턴 불일치 시 어떤 질문을 수정할지 선택형으로 재질의한다. **Align 라운드는 최대 3회**로 제한한다. 3회 초과 시 마지막 답변으로 강제 확정하고 미해결 항목을 ❓로 기록한 뒤 다음 단계로 진행한다.
522
+
523
+
> **AskUserQuestion 스키마 주의**: 도구는 `options.items.required = ["label", "description"]`만 허용하고 `value` 필드를 받지 않는다 (`additionalProperties: false`). 모든 옵션은 `label`만으로 식별하며, 사용자가 선택한 라벨이 `answers` 객체에 그대로 반환된다.
524
+
494
525
#### 승인/수정 공통 패턴
495
526
496
527
산출물(PRD, 설계서, 구현 계획) 확인 시 공통으로 사용하는 AskUserQuestion 패턴:
Copy file name to clipboardExpand all lines: .claude/skills/dev/phases/phase-design.md
+12-6Lines changed: 12 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,18 +47,24 @@ design-critic 결과 처리:
47
47
48
48
**질문이 있으면** ("추가 확인 사항 없음"이 포함되지 않은 경우):
49
49
- 설계 초안을 사용자에게 출력한다.
50
-
- Agent 출력의 "확인이 필요한 사항"을 **에이전트 질문 → AskUserQuestion 변환 규칙** (SKILL.md 공유 규칙)에 따라 변환하여 사용자에게 순서대로 제시한다.
50
+
- Agent 출력의 "확인이 필요한 사항"을 **에이전트 질문 → AskUserQuestion 변환 규칙** (SKILL.md 공유 규칙)에 따라 변환하되, **반드시 1개씩 순차 발사**하고 각 질문에 `(Recommended)` 권장 답변을 제시한다. 코드베이스로 답할 수 있는 질문은 사용자에게 묻지 않고 직접 탐색한다.
51
+
- design-critic의 도전 사항(있으면)도 동일 규칙으로 1개씩 순차 발사한다. 단, MUST-ADDRESS 항목 표시는 Step 3의 기존 규칙대로 1개 메시지로 묶어 보여주고, 사용자 선택이 필요한 항목만 순차 발사한다.
52
+
- 모든 질문이 해소되면 SKILL.md "Align 단계" 규칙에 따라 `Q번호: 답변` 요약 후 `맞습니다 / 수정 필요` 확인을 받는다.
51
53
- 사용자 답변을 수렴하여 다음 반복으로 전달.
52
54
53
55
**질문이 없으면** ("추가 확인 사항 없음. 설계가 완료되었습니다."):
54
56
-**승인/수정 공통 패턴** (SKILL.md 공유 규칙)에 따라 AskUserQuestion을 사용한다:
0 commit comments