with one click
discussion
// This skill should be used when the user asks to "discuss", "discussion", "토론", "토론하자", "let's discuss", "brainstorm", "논의", "의견 나누기", or wants a structured iterative discussion with research support.
// This skill should be used when the user asks to "discuss", "discussion", "토론", "토론하자", "let's discuss", "brainstorm", "논의", "의견 나누기", or wants a structured iterative discussion with research support.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | discussion |
| description | This skill should be used when the user asks to "discuss", "discussion", "토론", "토론하자", "let's discuss", "brainstorm", "논의", "의견 나누기", or wants a structured iterative discussion with research support. |
| version | 1.4.4 |
| Workflow | Position | When |
|---|---|---|
| Any | Standalone | 기술적 주제에 대한 구조화된 토론 |
| Any | Pre-feature-draft | 방향/요구사항 불명확 시 논의 후 feature-draft 연계 |
구조화된 반복 토론을 진행한다. 프로빙 질문으로 주제를 심층 탐구하고, sub-agent를 활용해 코드베이스 탐색 및 웹 리서치를 수행하며, 토론 종료 시 구조화된 요약을 텍스트로 출력한다. 마지막 Step 4에서 토론 요약 파일만 생성할 수 있으며, 그 외 단계에서는 파일 생성/수정을 하지 않는다.
프로세스 완료 후 아래 기준을 자체 검증한다. 미충족 항목은 해당 단계로 돌아가 수정한다.
_sdd/discussion/<YYYY-MM-DD>_discussion_<slug>.md에 저장되었다Edit, Bash(mutation 명령) 사용을 금지한다. 읽기 전용 도구만 사용한다.Write로 요약 파일을 저장할 수 있다. mkdir -p _sdd/discussion/ 디렉토리 생성은 허용한다.Read, Glob, Grep, AskUserQuestion, Agent(sub-agent)만 사용 가능하다. Step 4에서는 Write 추가 허용.AskUserQuestion 도구를 사용한다.out-of-scope나 deferred-deliberately가 아닌 미결(이하 "in-scope open_questions")이 남은 상태로는 Gate 3→4 외 어떤 경로(수렴 신호, stagnation fallback 등)로도 토론을 종료하지 않는다.Process의 모든 단계에서 횡단 적용되는 원칙. Hard Rules가 강제 금지라면, Key Principles는 판단 지침이다.
Tools: AskUserQuestion
사용자에게 토론 주제를 확인한다.
사용자 입력에서 토픽이 이미 명시된 경우:
토픽이 불명확한 경우:
AskUserQuestion: "어떤 주제에 대해 토론하고 싶으신가요?"
옵션:
1. "코드베이스 관련 (구조, 패턴, 리팩토링 등)"
2. "아키텍처 설계 (시스템 설계, 컴포넌트 구조 등)"
3. "기술 선택 (라이브러리, 프레임워크, 도구 비교)"
4. "Other (직접 입력)"
선택된 토픽에 대해 구체적인 범위를 확인 (자유 형식 응답 수용)
Scope atomicity 점검: 토픽이 독립적 서브시스템 여러 개의 묶음인지 감지한다.
Decision Gate 1→2: topic_defined AND scope_clear AND scope_is_atomic → Step 2 진행. ELSE → AskUserQuestion으로 보완 (최대 2라운드). 다중 서브시스템이면 분해 후 단일 서브프로젝트로 좁힌 뒤 게이트 재평가.
Tools: Agent (Explore, general-purpose), Read, Glob, Grep
토픽에 따라 자동으로 관련 자료를 수집한다.
| 토픽 유형 | 자동 액션 | Sub-agent 유형 |
|---|---|---|
| 코드베이스 관련 | 코드베이스 구조/패턴/관련 파일 탐색 | Explore |
| 아키텍처 설계 | 현재 아키텍처 파악 + 관련 패턴 리서치 | Explore + general-purpose (병렬) |
| 기술 선택 | 후보 기술 비교 자료 수집 | general-purpose |
| Other | 사용자 입력 기반 판단 | 필요시 Explore 또는 general-purpose |
수집된 정보를 사용자에게 간략히 보고:
## 수집된 맥락
| 항목 | 내용 |
|------|------|
| 관련 파일 | N개 식별 |
| 주요 패턴 | ... |
| 외부 참고 | ... (있는 경우) |
Step 2에서 수집한 맥락은 사용자에게 보여주는 일회성 요약으로 끝내지 않고, 최종 요약에 재사용할 수 있도록 initial_context 내부 상태에 보존한다.
initial_context에는 아래를 간결하게 기록한다:
이 항목은 결정이나 논점과 중복되더라도 삭제하지 않는다. 목적은 "무엇을 결정했는가"가 아니라 "왜 이 토론이 열렸는가"를 후속 독자가 복원할 수 있게 하는 것이다.
Decision Gate 2→3: context_available AND topic_still_valid → Step 3 진행. 맥락 없으면 사용자에게 확인. 토픽 무효화 시 Step 1 복귀.
Tools: AskUserQuestion, Agent (Explore, general-purpose), Read, Glob, Grep
핵심 토론 루프. 사용자와 반복적으로 심층 질문-답변을 수행한다.
내부 상태 추적:
key_points, decisions, open_questions, action_items, conversation_log, initial_context
round = 0
coverage:
exploration:
motivation, current_state, constraints, ideal_outcome
analysis:
alternatives, tradeoffs, priorities, critical_review
convergence:
conclusion, risks, action_items
LOOP:
round += 1
1. 질문 선택 (아래 3.2 전략)
2. AskUserQuestion으로 질문 제시 (옵션 2-3개 + "토론 종료")
3. 사용자 응답 분석 → 내부 상태 + coverage 업데이트
4. 필요 시 mid-discussion sub-agent 리서치 수행
5. 수렴 신호 감지 시 → 종료 권유 (아래 3.5)
IF 사용자가 "토론 종료" 선택 OR "정리해줘" 입력 → Gate 3→4
라운드 번호가 아닌 커버리지 달성도가 페이즈를 결정한다.
매 라운드 질문 선택 로직:
1. 직전 답변에서 "깊이 신호" 감지?
→ YES: 페이즈를 무시하고 후속 질문 (깊이 우선)
→ NO: 2단계로
2. 커버리지 맵에서 현재 페이즈 판정:
- exploration 미확인 항목 있음 → 탐색 질문
- exploration 완료, analysis 미확인 있음 → 분석 질문
- 둘 다 완료 → 수렴 질문
깊이 신호 (페이즈 무시하고 파고드는 트리거):
| 신호 | 예시 |
|---|---|
| 모순 발견 | "빠르게 만들고 싶은데 확장성도 중요해요" |
| 불확실성 표현 | "잘 모르겠는데...", "아마..." |
| 새 제약조건 등장 | "아, 근데 레거시 API랑 호환돼야 해요" |
| 강한 의견 | "이건 절대 안 돼요" → 이유를 파고들기 |
수렴 전 안전장치: 수렴 페이즈 진입 전 exploration/analysis에 미확인 항목이 있으면 사용자에게 "아직 [항목]을 다루지 않았는데, 넘어가도 괜찮을까요?" 확인.
Analysis 페이즈 진입 직후 첫 라운드에, AI는 다음을 반드시 수행한다:
AskUserQuestion의 옵션으로 각 접근을 제시하거나, 텍스트로 제시한 뒤 후속 AskUserQuestion으로 선택을 유도.단, 사용자가 이미 명시적으로 특정 방향을 고정했다면 이 단계를 건너뛰고 바로 비판적 개입(3.2.2)으로 진행한다.
커버리지 체크: alternatives 항목은 이 능동 제시가 수행되고 사용자 응답이 있은 뒤에만 완료로 표시한다.
분석 페이즈에서는 최소 1회 비판적 질문으로 약점이나 숨은 가정을 검증한다. 3.2.1의 Alternatives Initiation이 완료된 뒤 수행한다.
critical_review를 충족한다.비판적 개입 유형:
| 유형 | 언제 | 예시 |
|---|---|---|
| 약점 지적 | 방향이 정해졌을 때 | "이 방식이면 X 상황에서 문제가 될 수 있는데, 어떻게 생각하세요?" |
| 반례 제시 | 장점만 언급될 때 | "비슷한 접근을 한 Y 사례에서는 Z 문제가 있었어요" |
| 숨은 가정 질문 | 전제가 검증 안 됐을 때 | "이건 A라는 가정 위에 서 있는데, 그게 깨지면요?" |
| 대안 제안 | 탐색 범위가 좁을 때 | "다른 관점에서 보면 이런 접근도 가능한데, 고려해 보셨나요?" |
| 스케일 도전 | 현재 규모만 고려할 때 | "지금은 괜찮지만 10배 커지면 이 구조가 버틸까요?" |
| YAGNI / 범위 축소 | 요구사항이 부풀 때 | "이 기능이 지금 꼭 필요한가요? 없으면 무엇이 깨지나요?" |
강도 조절 규칙:
커버리지 체크: critical_review는 분석 페이즈에서 최소 1회 비판적 개입이 이루어지고 사용자가 응답했을 때 완료로 표시한다. 선호가 없는 비교형 토론도 fallback 비판 질문으로 완료 가능해야 한다. 비판적 검토 없이 수렴으로 넘어가는 것을 방지한다.
사용자가 토론 중 묵시적 deferral 신호(예: "나중에 보죠", "그건 구현하면서", "지금은 모르겠는데", "일단 넘어가요")를 보이면, AI는 메타-분류 질문을 사용자에게 노출하지 않고 내부적으로 다음 분류를 수행한다.
| 분류 | 조건 | AI 처리 |
|---|---|---|
| (a) 지금 답 가능 | 한 가지 구체 질문으로 좁히면 사용자가 토론 내에서 답할 수 있다 | 좁힌 1회 재질문(1라운드 한정, 3.2.2 비판 카운트에서 제외). 그래도 답 못 하면 (b)로 강등 |
| (b) 토론 외부 deferred | 다른 작업/외부 데이터 대기/명확한 분리가 정당함 | open_questions에 카테고리 deferred-deliberately 또는 needs-data로 조용히 기록 |
| (c) 다른 미결 의존 | 동일 토론 내 다른 미결 질문이 풀려야 답 가능 | blocked-by:Q<n> 라벨로 기록하고, 의존하는 Q를 다음 라운드 우선 주제로 채택 |
규칙:
open_questions에 in-scope로 적재하는 행위는 금지. 반드시 위 분류를 거친다.토론 중 근거가 필요하면 sub-agent를 즉시 디스패치:
| 트리거 | Sub-agent |
|---|---|
| "추가 리서치 필요" 선택 | general-purpose |
| 코드베이스 확인 필요 | Explore |
| 사실 확인 필요한 주장 | general-purpose |
독립적인 리서치 2건 이상이면 병렬 디스패치.
매 3라운드마다 (또는 사용자 요청 시) 핵심 논점·결정 사항·미결 질문·실행 항목 카운트를 중간 요약 테이블로 제시.
라운드 수 제한 없이, 아래 수렴 신호가 충분히 감지되면 종료를 권유한다.
수렴 신호:
| 신호 | 감지 기준 |
|---|---|
| 반복 합의 | 사용자가 연속 2라운드 이상 동의/확인 응답 |
| 새 정보 없음 | 직전 라운드에서 key_points/decisions에 추가된 항목 없음 |
| 명시적 만족 | "좋아요", "그걸로 하죠", "충분해요" 등 |
| 커버리지 충족 | exploration + analysis 항목 모두 완료 |
2개 이상 신호 동시 감지 시:
"지금까지 [N]개 논점을 다루고 [M]개 결정을 내렸습니다.
정리해도 좋을 것 같은데, 더 논의할 내용이 있으신가요?"
1) "정리해줘"
2) "[추가 논의 주제 제안]"
사용자가 추가 논의를 선택하면 계속 진행한다. 종료를 강제하지 않는다.
가드: in-scope open_questions이 1건 이상이면 위 수렴 신호가 충족돼도 종료 권유 메시지를 발화하지 않는다. 대신 해당 미결을 다음 라운드 주제로 자동 채택한다 (blocked-by:Q<n> 의존이 있으면 의존하는 Q를 우선).
토론이 길어지더라도 단순 라운드 수로 종료하지 않는다. 대신 아래 정체(stagnation) 신호를 본다.
stagnation 신호:
| 신호 | 감지 기준 |
|---|---|
| 새 정보 없음 | 연속 라운드에서 key_points나 decisions가 늘지 않음 |
| 미결 질문 정체 | 같은 open question이 재진술되지만 진전이 없음 |
| 반복 유보 | 사용자가 연속적으로 모호한 답변, 유보, "더 봐야 할 것 같아요" 류 응답을 함 |
stagnation 대응 규칙:
stagnation 신호가 2회 연속 감지되면 질문 범위를 강제로 좁힌다.
이때 노출할 옵션은 in-scope open_questions 유무에 따라 다르다. 중요: "남은 미결 1개만 더 논의" 옵션을 제시할 때는 generic 문구만 단독으로 쓰지 않고, 반드시 대상 미결 질문의 짧은 요약을 옵션 라벨이나 질문 본문에 함께 노출한다.
| 상태 | 노출 옵션 |
|---|---|
in-scope open_questions 0건 | "지금까지 정리" / "남은 미결 1개만 더 논의: [질문 요약]" |
in-scope open_questions 1건+ | "남은 미결 1개만 더 논의: [질문 요약]" 만 |
여기서 [질문 요약]은 사용자가 눌러보기 전에도 무엇을 더 논의하는지 알 수 있을 정도로 구체적이어야 한다. 미결이 여러 개면 다음 우선순위로 1개를 고른다: blocked-by로 다른 질문들을 막고 있는 선행 질문 > 가장 최근 라운드에서 반복 정체된 질문 > 범위를 가장 많이 줄일 수 있는 질문.
"남은 미결 1개만 더 논의: [질문 요약]"를 선택했는데 다음 라운드도 stagnation이면, 남은 쟁점을 open question으로 기록하고 Gate 3→4로 이동한다 (Step 4 직행 금지 — 카테고리 라벨링이 필요하다).
이 fallback은 토론을 강제로 닫기 위한 것이 아니라, 진전 없는 반복을 요약 가능한 상태로 전환하기 위한 것이다.
Gate 3→4: open_questions를 확인한다.
AskUserQuestion: "미결 질문이 N건 남아 있습니다. 어떤 질문을 더 논의할지 확인하시겠습니까?"
"이 질문 더 논의: [질문 요약]" → Step 3 루프 복귀 (해당 미결 질문 중심으로 probing)카테고리 라벨링 강제 절차 ("그대로 정리" 선택 시):
AskUserQuestion (multiSelect 가능, 질문당 옵션 1세트)로 카테고리를 일괄 부여한다. 카테고리는 다음 4종 고정:
out-of-scope — 이 토론 범위 밖이며 별도 토론으로 분리 예정needs-data — 외부 데이터/벤치마크/실측이 있어야 답 가능deferred-deliberately — 의도적 보류 (후속 작업/이해관계자 대기 등)blocked-by:Q<n> — 동일 토론 내 다른 미결 질문 번호 의존(auto-labeled, please review) 노트를 붙인다.open_questions이 여전히 있으면 사용자에게 한 번 더 "in-scope 미결이 N건 남아 있습니다. 정말 그대로 종료하시겠어요?"를 확인하고, 사용자가 명시적으로 동의해야 종료한다 (Gate 3→4의 user-confirm 단계).Tools: Write
토론 종료 시 구조화된 요약을 생성하고, _sdd/discussion/<YYYY-MM-DD>_discussion_<slug>.md로 자동 저장한다.
<YYYY-MM-DD>_discussion_<slug>.md 패턴. slug는 소문자 영문, 특수문자는 _로 대체, 최대 50자 (예: "인증 시스템 설계" → 2026-04-10_discussion_auth_system_design.md)# 토론 요약: [토픽]
**날짜**: YYYY-MM-DD
**라운드 수**: N
**참여 방식**: 구조화된 토론 (discussion skill)
## 토론 배경 및 초기 콘텍스트 (Background / Initial Context)
- **사용자 문제 제기**: [사용자가 처음 제기한 필요, 불편, 질문]
- **토론을 시작한 배경**: [왜 지금 이 토론이 필요한지 / 어떤 후속 작업과 연결되는지]
- **현재 상태**: [토론 전에 확인한 코드베이스, 문서, 운영 상황 등]
- **범위와 제외 범위**: [이번 토론에서 다룬 범위와 의도적으로 미룬 범위]
- **수집한 근거**: [토론 전제에 영향을 준 로컬 파일, 문서, 외부 자료]
## 핵심 논점 (Key Discussion Points)
1. [논점 1]: [요약]
2. [논점 2]: [요약]
## 결정 사항 (Decisions Made)
| # | 결정 | 근거 | 관련 논점 |
|---|------|------|----------|
| 1 | ... | ... | ... |
## 미결 질문 (Open Questions)
| # | 질문 | 카테고리 | 맥락 / 의존 |
|---|------|----------|-------------|
| 1 | [질문 1] | needs-data | [맥락] |
| 2 | [질문 2] | blocked-by:Q1 | Q1이 풀려야 답 가능 |
> 카테고리: `out-of-scope` / `needs-data` / `deferred-deliberately` / `blocked-by:Q<n>` 중 하나. AI가 자동 부여한 항목은 `(auto-labeled, please review)` 표기.
## 실행 항목 (Action Items)
| # | 항목 | 우선순위 | 담당 |
|---|------|---------|------|
| 1 | ... | High/Medium/Low | ... |
## 리서치 결과 요약 (Research Findings)
- [수집 항목 1]: [핵심 발견]
## 토론 흐름 (Discussion Flow)
Round 1: [주제] → [결론/방향]
...
## 부록: 대화 로그 (Conversation Log)
### Round 1
**Q**: [질문 내용]
**Options**: 1) ... 2) ... 3) ... 4) 토론 종료
**A**: [사용자 응답 요약]
**Follow-up**: [AI 분석/코멘트 요약]
...
완료 시 요약 테이블을 제시한 후 전체 요약을 출력하고 파일로 저장한다 (사용자 확인을 기다리지 않는다).
| 상황 | 대응 |
|---|---|
| 사용자가 토픽을 정하지 못함 | 카테고리별 예시 제시, 최대 2라운드 질문 후 자유 주제로 진행 |
| Sub-agent 실패 | 실패 사실 보고, 토론은 수집된 맥락으로 계속 진행 |
| 사용자 응답 없음/중단 | 현재까지의 토론 내용으로 부분 요약 생성 |
| 토론이 범위를 벗어남 | 원래 토픽 리마인드, 범위 재조정 질문 |
| 토론이 지나치게 길어짐 | stagnation 신호를 확인하고 "지금 정리 / 미결 1개만 더 논의"로 범위를 축소 |
| 코드베이스 접근 불가 | Explore agent 스킵, 외부 리서치만으로 진행 |
토론 결과를 후속 스킬(spec-create, feature-draft, implementation-plan)에 활용하려면 사용자가 요약 파일을 참조하여 별도 실행한다.
references/discussion-question-guide.md - 토론 질문 템플릿 및 전략 가이드examples/sample-discussion-session.md - 구조화된 토론 세션 예시Acceptance Criteria가 모두 만족되었나 검증한다. 미충족 항목이 있으면 해당 단계로 돌아가 수정한다.