@wooojin/forgen 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.ko.md +25 -14
  3. package/README.md +61 -17
  4. package/agents/analyst.md +48 -4
  5. package/agents/architect.md +39 -4
  6. package/agents/code-reviewer.md +107 -77
  7. package/agents/critic.md +47 -4
  8. package/agents/debugger.md +46 -4
  9. package/agents/designer.md +40 -4
  10. package/agents/executor.md +112 -30
  11. package/agents/explore.md +45 -5
  12. package/agents/git-master.md +48 -4
  13. package/agents/planner.md +121 -18
  14. package/agents/test-engineer.md +58 -4
  15. package/agents/verifier.md +92 -77
  16. package/commands/architecture-decision.md +127 -258
  17. package/commands/calibrate.md +225 -0
  18. package/commands/code-review.md +163 -178
  19. package/commands/compound.md +127 -68
  20. package/commands/deep-interview.md +212 -110
  21. package/commands/docker.md +68 -178
  22. package/commands/forge-loop.md +215 -0
  23. package/commands/learn.md +231 -0
  24. package/commands/retro.md +215 -0
  25. package/commands/ship.md +277 -0
  26. package/dist/cli.js +17 -9
  27. package/dist/core/auto-compound-runner.js +14 -0
  28. package/dist/core/config-injector.d.ts +2 -1
  29. package/dist/core/config-injector.js +2 -1
  30. package/dist/core/dashboard.d.ts +17 -0
  31. package/dist/core/dashboard.js +112 -2
  32. package/dist/core/harness.d.ts +6 -1
  33. package/dist/core/harness.js +75 -19
  34. package/dist/core/paths.d.ts +6 -1
  35. package/dist/core/paths.js +18 -2
  36. package/dist/core/spawn.d.ts +3 -2
  37. package/dist/core/spawn.js +27 -8
  38. package/dist/core/types.d.ts +34 -0
  39. package/dist/engine/compound-lifecycle.d.ts +4 -3
  40. package/dist/engine/compound-lifecycle.js +91 -46
  41. package/dist/engine/meta-learning/adaptive-thresholds.d.ts +20 -0
  42. package/dist/engine/meta-learning/adaptive-thresholds.js +126 -0
  43. package/dist/engine/meta-learning/extraction-tuner.d.ts +15 -0
  44. package/dist/engine/meta-learning/extraction-tuner.js +99 -0
  45. package/dist/engine/meta-learning/matcher-weight-tuner.d.ts +21 -0
  46. package/dist/engine/meta-learning/matcher-weight-tuner.js +151 -0
  47. package/dist/engine/meta-learning/runner.d.ts +14 -0
  48. package/dist/engine/meta-learning/runner.js +90 -0
  49. package/dist/engine/meta-learning/scope-promoter.d.ts +21 -0
  50. package/dist/engine/meta-learning/scope-promoter.js +84 -0
  51. package/dist/engine/meta-learning/session-quality-scorer.d.ts +61 -0
  52. package/dist/engine/meta-learning/session-quality-scorer.js +166 -0
  53. package/dist/engine/meta-learning/types.d.ts +114 -0
  54. package/dist/engine/meta-learning/types.js +43 -0
  55. package/dist/engine/solution-format.d.ts +2 -2
  56. package/dist/engine/solution-format.js +249 -34
  57. package/dist/engine/solution-index.d.ts +1 -1
  58. package/dist/engine/solution-matcher.d.ts +7 -1
  59. package/dist/engine/solution-matcher.js +114 -37
  60. package/dist/fgx.js +12 -8
  61. package/dist/hooks/context-guard.d.ts +5 -0
  62. package/dist/hooks/context-guard.js +118 -2
  63. package/dist/hooks/hooks-generator.d.ts +3 -0
  64. package/dist/hooks/hooks-generator.js +23 -6
  65. package/dist/hooks/keyword-detector.js +16 -100
  66. package/dist/hooks/skill-injector.d.ts +4 -3
  67. package/dist/hooks/skill-injector.js +6 -4
  68. package/dist/host/codex-adapter.d.ts +10 -0
  69. package/dist/host/codex-adapter.js +154 -0
  70. package/dist/mcp/solution-reader.d.ts +5 -5
  71. package/dist/mcp/solution-reader.js +34 -24
  72. package/dist/services/session.d.ts +19 -0
  73. package/dist/services/session.js +62 -0
  74. package/hooks/hooks.json +2 -2
  75. package/package.json +2 -1
  76. package/skills/architecture-decision/SKILL.md +113 -257
  77. package/skills/calibrate/SKILL.md +207 -0
  78. package/skills/code-review/SKILL.md +151 -178
  79. package/skills/compound/SKILL.md +126 -68
  80. package/skills/deep-interview/SKILL.md +210 -110
  81. package/skills/docker/SKILL.md +57 -179
  82. package/skills/forge-loop/SKILL.md +198 -0
  83. package/skills/learn/SKILL.md +216 -0
  84. package/skills/retro/SKILL.md +199 -0
  85. package/skills/ship/SKILL.md +259 -0
  86. package/agents/code-simplifier.md +0 -197
  87. package/agents/performance-reviewer.md +0 -172
  88. package/agents/qa-tester.md +0 -158
  89. package/agents/refactoring-expert.md +0 -168
  90. package/agents/scientist.md +0 -144
  91. package/agents/security-reviewer.md +0 -137
  92. package/agents/writer.md +0 -184
  93. package/commands/api-design.md +0 -268
  94. package/commands/ci-cd.md +0 -270
  95. package/commands/database.md +0 -263
  96. package/commands/debug-detective.md +0 -99
  97. package/commands/documentation.md +0 -276
  98. package/commands/ecomode.md +0 -51
  99. package/commands/frontend.md +0 -271
  100. package/commands/git-master.md +0 -90
  101. package/commands/incident-response.md +0 -292
  102. package/commands/migrate.md +0 -101
  103. package/commands/performance.md +0 -288
  104. package/commands/refactor.md +0 -105
  105. package/commands/security-review.md +0 -288
  106. package/commands/specify.md +0 -128
  107. package/commands/tdd.md +0 -183
  108. package/commands/testing-strategy.md +0 -265
  109. package/skills/api-design/SKILL.md +0 -262
  110. package/skills/ci-cd/SKILL.md +0 -264
  111. package/skills/database/SKILL.md +0 -257
  112. package/skills/debug-detective/SKILL.md +0 -95
  113. package/skills/documentation/SKILL.md +0 -270
  114. package/skills/ecomode/SKILL.md +0 -46
  115. package/skills/frontend/SKILL.md +0 -265
  116. package/skills/git-master/SKILL.md +0 -86
  117. package/skills/incident-response/SKILL.md +0 -286
  118. package/skills/migrate/SKILL.md +0 -96
  119. package/skills/performance/SKILL.md +0 -282
  120. package/skills/refactor/SKILL.md +0 -100
  121. package/skills/security-review/SKILL.md +0 -282
  122. package/skills/specify/SKILL.md +0 -122
  123. package/skills/tdd/SKILL.md +0 -178
  124. package/skills/testing-strategy/SKILL.md +0 -260
@@ -1,157 +1,259 @@
1
1
  ---
2
2
  name: deep-interview
3
- description: This skill should be used when the user asks to "deep-interview,딥인터뷰,심층인터뷰,deep interview". Deep requirement interview with Ambiguity Score quantification
3
+ description: This skill should be used when the user asks to "deep-interview,딥인터뷰,심층인터뷰,deep interview". Deep requirement interview with weighted dimension scoring, challenge modes, and ontology tracking
4
+ argument-hint: "[project or feature description]"
4
5
  triggers:
5
6
  - "deep-interview"
6
7
  - "딥인터뷰"
7
8
  - "심층인터뷰"
8
9
  - "deep interview"
10
+ - "요구사항 인터뷰"
9
11
  ---
10
12
 
11
13
  <Purpose>
12
- 프로젝트의 핵심 주제들을 체계적으로 심층 인터뷰하여 모호성을 제거합니다.
13
- 주제에 Ambiguity Score(0-10)를 부여하여 어디가 명확하고 어디가 불분명한지를
14
- 정량적으로 보여줍니다. 반복 질문을 통해 모든 주제의 점수를 3 이하로 낮추는 것이 목표입니다.
14
+ 프로젝트의 요구사항을 체계적으로 심층 인터뷰하여 모호성을 제거합니다.
15
+ 가중 차원 점수(Weighted Dimension Scoring)로 모호성을 정량화하고,
16
+ 번에 하나의 질문만 던져 깊이 있는 답변을 이끌어냅니다.
17
+ 목표: ambiguity <= 0.20 (20% 이하)까지 인터뷰를 진행합니다.
15
18
  </Purpose>
16
19
 
17
- <Steps>
18
- 1. **주제 추출**: 사용자 요청에서 핵심 주제(Topic)를 5-8개 식별합니다
19
- - 기능 범위 (Scope)
20
- - 사용자 시나리오 (User Flow)
21
- - 데이터 모델 (Data)
22
- - 기술 제약 (Tech Constraints)
23
- - 엣지 케이스 (Edge Cases)
24
- - 성능 요구 (Performance)
25
- - 보안 요구 (Security)
26
- - 배포/운영 (Operations)
27
-
28
- 2. **초기 Ambiguity Score 산정**: 각 주제별 0-10 점수를 부여합니다
29
-
30
- 3. **라운드 기반 인터뷰**: 가장 높은 점수의 주제부터 질문합니다
31
- - 라운드에 최대 3개 질문
32
- - 답변 점수를 재산정하고 보드를 갱신
33
- - 점수가 3 이하가 될 때까지 반복
34
-
35
- 4. **최종 보고서**: 인터뷰 결과를 구조화된 명세로 정리합니다
36
- </Steps>
20
+ <Compound_Integration>
21
+ ## 시작 전: compound-search로 이전 인터뷰 검색
22
+
23
+ 인터뷰 시작 전 반드시 compound-search MCP 도구로 유사한 프로젝트의 이전 인터뷰를 검색합니다.
24
+
25
+ ```
26
+ compound-search("[프로젝트명 또는 핵심 도메인 키워드]")
27
+ ```
28
+
29
+ 검색 결과가 있으면 인터뷰 시작 시 표시합니다:
30
+
31
+ ```
32
+ 이전 인터뷰 발견:
33
+ - [프로젝트명]: [핵심 토픽] (최종 ambiguity: 0.XX)
34
+ - 재사용 가능한 결정사항: [패턴/결론]
35
+ - 이전 인터뷰에서 해결된 항목은 이번에 건너뜁니다.
36
+ ```
37
+
38
+ ## 진행 중: 관련 compound 솔루션 로드
37
39
 
38
- ## Ambiguity Score 체계
40
+ 질문 주제와 관련된 compound 솔루션이 있으면 더 정확한 질문을 구성합니다.
39
41
 
40
- | 점수 | 레벨 | 의미 | 구현 가능 여부 |
41
- |------|------|------|---------------|
42
- | **0** | Crystal | 완벽히 명확. 코드로 즉시 변환 가능. | 즉시 가능 |
43
- | **1-2** | Clear | 사소한 세부사항만 미정. 합리적 가정으로 진행 가능. | 가능 |
44
- | **3** | Mostly Clear | 한두 가지 선택지가 남음. 가정을 명시하면 진행 가능. | 조건부 가능 |
45
- | **4-5** | Hazy | 핵심 결정이 1-2개 미정. 가정 위험이 있음. | 위험 감수 시 가능 |
46
- | **6-7** | Foggy | 주요 방향이 불확실. 잘못된 가정 시 재작업 발생. | 비권장 |
47
- | **8-9** | Opaque | 요구사항의 대부분이 미정. 프로토타입 수준만 가능. | 불가 |
48
- | **10** | Black Box | 무엇을 만들어야 하는지조차 불명확. | 불가 |
42
+ ## 종료 후: 인터뷰 결과를 compound로 저장
49
43
 
50
- ### 점수 산정 기준 (5가지 축)
44
+ ```bash
45
+ forgen compound --solution "interview-{project}-spec" "인터뷰 결과 명세서 전문"
46
+ ```
47
+ </Compound_Integration>
48
+
49
+ <Steps>
50
+ ## Phase 0: 프로젝트 유형 감지
51
51
 
52
- 축을 0-2점으로 평가하여 합산합니다:
52
+ 사용자 요청을 분석하여 프로젝트 유형을 자동 판별합니다.
53
53
 
54
- | | 0점 (명확) | 1점 (부분 모호) | 2점 (모호) |
55
- |----|-----------|----------------|-----------|
56
- | **What** (무엇을) | 기능이 구체적으로 정의됨 | 기능의 범위가 애매함 | 무엇을 만드는지 불명확 |
57
- | **Who** (누구를 위해) | 대상 사용자가 특정됨 | 대상 사용자가 넓게 정의됨 | 사용자가 누구인지 모름 |
58
- | **How** (어떻게) | 기술 구현 방식이 결정됨 | 후보 기술이 있으나 미결정 | 구현 방식을 모름 |
59
- | **When** (언제까지) | 기한과 우선순위가 명확함 | 대략적 일정만 있음 | 기한/우선순위 미정 |
60
- | **Why** (왜) | 비즈니스 근거가 명확함 | 근거가 있으나 검증 안 됨 | 왜 필요한지 불분명 |
54
+ ### Greenfield ( 프로젝트)
55
+ - 채점 공식: `ambiguity = 1 - (goal * 0.40 + constraints * 0.30 + criteria * 0.30)`
61
56
 
62
- ## 인터뷰 보드 형식
57
+ ### Brownfield (기존 코드베이스 확장/수정)
58
+ - Glob/Grep/Read로 기존 코드베이스를 탐색하여 기술 컨텍스트를 자동 수집
59
+ - 채점 공식: `ambiguity = 1 - (goal * 0.35 + constraints * 0.25 + criteria * 0.25 + context * 0.15)`
63
60
 
61
+ ### 자동 감지 절차
64
62
  ```
65
- DEEP INTERVIEW BOARD / 심층 인터뷰 보드
66
- ========================================
63
+ 1. 현재 디렉토리에 package.json, tsconfig.json, go.mod 등이 있는가?
64
+ 2. git log가 존재하는가?
65
+ 3. 사용자 요청에 "기존", "현재", "수정", "추가" 등의 키워드가 있는가?
66
+ → 2개 이상 해당하면 Brownfield → 아니면 Greenfield
67
+ ```
68
+
69
+ ## Phase 1: 차원 초기 채점
70
+
71
+ 각 차원을 0.0 ~ 1.0 범위로 채점합니다 (1.0 = 완전히 명확, 0.0 = 전혀 모름).
72
+
73
+ ### Greenfield 차원 (3개)
74
+ | 차원 | 가중치 | 의미 |
75
+ |------|--------|------|
76
+ | **goal** | 0.40 | 무엇을 만드는가? 최종 산출물은? 성공 기준은? |
77
+ | **constraints** | 0.30 | 기술 제약, 시간, 예산, 팀 역량, 비기능 요구사항 |
78
+ | **criteria** | 0.30 | 완료 기준, 수용 기준, 테스트 가능한 조건 |
79
+
80
+ ### Brownfield 추가 차원 (1개)
81
+ | 차원 | 가중치 | 의미 |
82
+ |------|--------|------|
83
+ | **context** | 0.15 | 기존 아키텍처, 의존성, 코드 패턴, 데이터 모델 |
84
+
85
+ ### 채점 기준 상세
86
+
87
+ **goal (가중치 0.40)**
88
+ - 최종 산출물이 명확한가? (0.0~1.0)
89
+ - 핵심 기능이 열거되었는가? (0.0~1.0)
90
+ - 사용자/대상이 특정되었는가? (0.0~1.0)
91
+ - 비즈니스 근거(왜 만드는가)가 있는가? (0.0~1.0)
92
+
93
+ **constraints (가중치 0.30)**
94
+ - 기술 스택이 결정되었는가? (0.0~1.0)
95
+ - 비기능 요구사항이 정의되었는가? (0.0~1.0)
96
+ - 일정/예산 제약이 있는가? (0.0~1.0)
97
+ - 외부 연동/의존성이 파악되었는가? (0.0~1.0)
67
98
 
68
- Project: [프로젝트명]
69
- Round: [N] | Overall Ambiguity: [가중평균 점수] | Status: [진행중/완료]
99
+ **criteria (가중치 0.30)**
100
+ - 수용 기준이 테스트 가능한 형태인가? (0.0~1.0)
101
+ - 엣지 케이스가 고려되었는가? (0.0~1.0)
102
+ - 비정상 시나리오 대응이 정의되었는가? (0.0~1.0)
70
103
 
71
- TOPIC SCORES
72
- ────────────────────────────────────────────────
73
- # Topic Score W H Wh When Why Trend
74
- 1 User Authentication 3/10 0 1 1 0 1 8→5→3 ↓
75
- 2 Payment Flow 7/10 1 2 2 1 1 9→7 ↓
76
- 3 Data Model 2/10 0 0 1 0 1 6→2 ↓↓
77
- 4 Error Handling 5/10 1 1 1 1 1 5 —
78
- 5 Performance 8/10 2 2 2 1 1 8 NEW
79
- ────────────────────────────────────────────────
80
- Avg: 5.0
104
+ **context (가중치 0.15, Brownfield만)**
105
+ - 기존 아키텍처를 파악했는가? (0.0~1.0)
106
+ - 영향받는 모듈/파일을 식별했는가? (0.0~1.0)
107
+ - 기존 테스트 커버리지를 확인했는가? (0.0~1.0)
108
+ - 기존 코드 패턴을 이해했는가? (0.0~1.0)
81
109
 
82
- LEGEND: W=What, H=How, Wh=Who, Trend: ↓=improving ↑=worsening —=no change
110
+ ## Phase 2: 인터뷰 루프 (라운드 기반)
83
111
 
84
- CURRENT ROUND QUESTIONS
85
- ────────────────────────
86
- [Targeting: #5 Performance (8/10), #2 Payment Flow (7/10)]
112
+ ### 질문 프로토콜 -- 반드시 한 번에 하나의 질문만
87
113
 
88
- Q1. [#5-How] 예상 동시 접속자 수와 초당 요청량(RPS)은?
89
- 답변으로 Performance Score -2 예상
114
+ 라운드마다:
115
+ 1. **가장 약한 차원 식별**: 가중 점수가 가장 낮은 차원을 선택
116
+ 2. **질문 하나만 생성**: 해당 차원의 점수를 가장 효과적으로 올릴 수 있는 질문
117
+ 3. **표시 형식**:
118
+ ```
119
+ Round N | ambiguity: 0.XX | 목표 차원: {dimension}
120
+ ─────────────────────────────────────────────────
121
+ Q. [구체적이고 개방형 질문]
122
+ (이 답변으로 {dimension} 점수 +0.X 예상)
123
+ ```
124
+ 4. **답변 수신 후**: 점수 재산정 -> 보드 갱신 -> 다음 라운드
90
125
 
91
- Q2. [#2-What] 결제 수단은 카드만? 계좌이체/간편결제도 포함?
92
- → 이 답변으로 Payment Score -1~2 예상
126
+ ### Push Until Evidence 규칙
93
127
 
94
- Q3. [#2-How] PG사는 결정되었나요? (토스/아임포트/스트라이프 등)
95
- 답변으로 Payment Score -1~2 예상
128
+ 모호한 답변("대충", "아마", "비슷한") 같은 차원에서 후속 질문.
129
+ 가정 기반 답변("아마 ~일 거예요") "확인된 사실인가요, 검증이 필요한 가정인가요?"
130
+ 범위 미정 답변("다 되면 좋겠어요") → "MVP 범위에서 반드시 포함해야 하는 3가지는?"
96
131
 
97
- RESOLVED SO FAR
98
- ───────────────
99
- - [#1] JWT 기반 인증, 만료 15분, 리프레시 토큰 7일
100
- - [#3] PostgreSQL, users/orders/payments 3테이블
101
- - [#1] bcrypt 해싱, salt rounds 12
132
+ ## Phase 3: 챌린지 모드 (라운드 기반 자동 활성화)
102
133
 
103
- [답변을 입력하면 점수를 재산정합니다]
134
+ ### Round 4+: Contrarian (반론 모드)
135
+ "만약 정반대가 사실이라면?" — 사용자의 전제를 뒤집어 검증합니다.
136
+
137
+ ### Round 6+: Simplifier (단순화 모드)
138
+ "가장 단순하면서도 가치있는 버전은?" — 불필요한 복잡성을 제거합니다.
139
+
140
+ ### Round 8+ (ambiguity > 0.30): Ontologist (본질 탐구 모드)
141
+ "이것은 본질적으로 무엇인가요?" — 핵심 엔티티의 정의와 경계를 명확히 합니다.
142
+
143
+ ## Phase 4: 온톨로지 추적
144
+
145
+ 매 라운드마다 핵심 엔티티(명사)를 추적합니다.
146
+ ```
147
+ ONTOLOGY TRACKER
148
+ ──────────────────────────────────────
149
+ Entity | First | Last | Status
150
+ User | R1 | R5 | stable
151
+ Order | R1 | R6 | refined
152
+ ──────────────────────────────────────
153
+ Stability: 3/4 (75%)
104
154
  ```
155
+ - stability_ratio >= 0.90: 도메인 모델 안정 -> 종료 가능
156
+ - stability_ratio < 0.70: 유동적 -> 본질 질문 필요
157
+ </Steps>
105
158
 
106
- ## 종료 조건
159
+ ## 반아첨(Anti-Sycophancy) 규칙
160
+
161
+ | 금지 표현 | 대체 행동 |
162
+ |-----------|-----------|
163
+ | "좋은 접근이네요" | 입장을 취합니다. 근거와 함께 동의 또는 반대. |
164
+ | "그것도 될 수 있어요" | 근거를 바탕으로 된다/안 된다 판단. |
165
+ | "고려해 보시면..." | "이것은 틀렸습니다. 이유는..." 또는 "이것이 맞습니다. 이유는..." |
166
+ | "흥미로운 접근이네요" | "이 접근은 {구체적 이유}로 {성공/실패}할 것입니다." |
167
+
168
+ 사용자가 틀렸으면 틀렸다고 말합니다. 근거를 함께 제시합니다.
107
169
 
108
- 인터뷰는 다음 조건 중 하나를 만족하면 종료합니다:
170
+ ## Ambiguity Score 보드
109
171
 
110
- | 조건 | 설명 |
172
+ ```
173
+ DEEP INTERVIEW BOARD
174
+ ═══════════════════════════════════════════════════
175
+ Project: {name} | Type: {Greenfield/Brownfield}
176
+ Round: {N} | Ambiguity: {0.XX} | Target: <= 0.20
177
+
178
+ DIMENSION SCORES
179
+ ────────────────────────────────────────────────────
180
+ Dimension Weight Score Weighted Trend
181
+ goal 0.40 0.75 0.300 0.2->0.5->0.75 ++
182
+ constraints 0.30 0.50 0.150 0.1->0.50 +
183
+ criteria 0.30 0.30 0.090 0.3 NEW
184
+ ────────────────────────────────────────────────────
185
+ Clarity: 0.540 | Ambiguity: 0.460 | Status: Continue
186
+
187
+ ONTOLOGY ({N} entities, {stability}% stable)
188
+ ACTIVE CHALLENGE: {None / CONTRARIAN / SIMPLIFIER / ONTOLOGIST}
189
+ ═══════════════════════════════════════════════════
190
+ ```
191
+
192
+ ## 종료 조건
193
+
194
+ | 조건 | 기준 |
111
195
  |------|------|
112
- | **All Clear** | 모든 주제가 3점 이하 |
113
- | **Actionable** | 평균 점수 3.5 이하 + 7점 이상 주제 없음 |
114
- | **User Exit** | 사용자가 "충분해", "진행하자" 등으로 종료 요청 |
115
- | **Plateau** | 3라운드 연속 총점 변화 없음 (더 이상 정보 획득 불가) |
196
+ | **Ready** | ambiguity <= 0.20 |
197
+ | **Conditional** | 0.20 < ambiguity <= 0.35 |
198
+ | **User Exit** | 사용자 요청 (경고 표시 종료) |
199
+ | **Plateau** | 3라운드 연속 변화 < 0.05 -> Ontologist 전환 |
200
+ | **Hard Cap** | 20라운드 도달 -> 강제 종료 |
116
201
 
117
- 종료 자동으로 최종 명세서를 생성합니다.
202
+ 라운드 제한: 최소 3, 소프트 캡 10, 하드 캡 20.
118
203
 
119
- ## 최종 보고서 형식
204
+ ## 실행 브릿지
205
+
206
+ ```
207
+ ambiguity <= 0.20 -> "준비 완료. 권장: /forge-loop"
208
+ ambiguity 0.20~0.35 -> "가정 목록 확인 필요. 확인 후 /forge-loop"
209
+ ambiguity > 0.35 -> "인터뷰 계속 필요."
210
+ ```
120
211
 
212
+ ## 최종 명세서 형식
213
+
214
+ ```markdown
215
+ # Deep Interview Spec: {title}
216
+ ## Metadata (rounds, score, type, timestamp)
217
+ ## Clarity Breakdown (dimension scores table)
218
+ ## Goal
219
+ ## Constraints
220
+ ## Non-Goals
221
+ ## Acceptance Criteria (testable)
222
+ ## Assumptions (exposed & resolved)
223
+ ## Technical Context
224
+ ## Key Entities (ontology table)
225
+ ## Ontology Convergence (round-by-round stability)
226
+ ## Next Action: /forge-loop | /ch-architecture-decision | manual
121
227
  ```
122
- DEEP INTERVIEW REPORT / 심층 인터뷰 결과
123
- =========================================
124
228
 
125
- Total Rounds: [N]
126
- Final Ambiguity: [가중평균] (초기: [초기 평균] → 최종: [최종 평균])
127
- Score Reduction: [감소량] ([감소율]%)
229
+ <Failure_Modes>
230
+ ## 피해야 실패 패턴
128
231
 
129
- TOPIC SUMMARY
130
- ─────────────
131
- [각 주제별 최종 점수 + 핵심 결정사항 1-2줄]
232
+ NEVER: **한 번에 여러 질문**: 질문은 반드시 1개. 2개 이상 금지.
132
233
 
133
- REMAINING ASSUMPTIONS
134
- ─────────────────────
135
- [점수 1-3인 항목의 가정 목록 — 검증 필요]
234
+ NEVER: **코드에서 답을 찾을 수 있는 것을 질문**: Brownfield에서 Read/Grep으로 먼저 확인.
136
235
 
137
- IMPLEMENTATION READY
138
- ────────────────────
139
- [점수 0인 항목 → 즉시 구현 가능한 명세]
236
+ NEVER: **보드 갱신 누락**: 매 라운드 종료 후 반드시 보드 표시.
140
237
 
141
- NEXT ACTIONS
142
- ────────────
143
- 1. [가장 시급한 미결 사항]
144
- 2. [두 번째 미결 사항]
145
- ```
238
+ NEVER: **아첨/동의 기본값**: 근거 없는 동의 금지. 모든 판단에 근거 필요.
239
+
240
+ NEVER: **모호한 답변 수용**: Push Until Evidence 규칙 적용.
241
+
242
+ NEVER: **3라운드 전 종료**: 경고 표시 필수.
243
+
244
+ NEVER: **챌린지 모드 건너뛰기**: Round 4+ 이후 반드시 적용.
245
+ </Failure_Modes>
146
246
 
147
247
  <Policy>
148
- - 라운드당 최대 3개 질문만 합니다 (질문 피로도 방지)
149
- - 가장 높은 Ambiguity Score 주제부터 우선 공략합니다
150
- - 답변 후 즉시 점수를 재산정하여 진행 상황을 보여줍니다
151
- - 질문에 예상 점수 감소량을 표시하여 질문의 가치를 투명하게 합니다
152
- - 사용자가 "모르겠다"고 하면 해당 축을 2점으로 유지하고 다음 질문으로 넘어갑니다
153
- - 기술적 판단이 가능한 축(How)은 합리적 가정을 제안하여 점수를 낮춥니다
154
- - 비즈니스 판단이 필요한 축(What, Who, Why)은 반드시 사용자 확인을 구합니다
248
+ - 라운드당 질문은 반드시 1개만 (깊이 > 넓이)
249
+ - 가장 낮은 가중 점수의 차원부터 공략
250
+ - 답변 후 즉시 점수 재산정 + 보드 갱신
251
+ - 사용자가 "모르겠다" -> 해당 요소 0.0 유지, 다음 질문
252
+ - 기술적 판단 가능한 항목 -> 합리적 가정 제안
253
+ - 비즈니스 판단 필요 항목 -> 반드시 사용자 확인
254
+ - Anti-Sycophancy 규칙 준수
255
+ - Brownfield -> 코드 탐색 선행, context 차원 자동 채점
256
+ - 온톨로지 추적 매 라운드 수행
155
257
  </Policy>
156
258
 
157
259
  <Arguments>
@@ -165,7 +267,7 @@ NEXT ACTIONS
165
267
 
166
268
  ### 인자
167
269
  - 인터뷰할 프로젝트 또는 기능의 자연어 설명
168
- - 기존 코드베이스가 있으면 자동으로 기술 제약 주제의 점수를 낮춤
270
+ - 기존 코드베이스가 있으면 Brownfield로 자동 전환
169
271
  </Arguments>
170
272
 
171
273
  $ARGUMENTS