@su-record/vibe 2.6.27 → 2.6.28

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 (246) hide show
  1. package/CLAUDE.md +202 -202
  2. package/LICENSE +21 -21
  3. package/README.md +267 -267
  4. package/agents/architect-low.md +41 -41
  5. package/agents/architect-medium.md +59 -59
  6. package/agents/architect.md +80 -80
  7. package/agents/build-error-resolver.md +115 -115
  8. package/agents/compounder.md +261 -261
  9. package/agents/diagrammer.md +178 -178
  10. package/agents/docs/api-documenter.md +99 -99
  11. package/agents/docs/changelog-writer.md +93 -93
  12. package/agents/e2e-tester.md +266 -266
  13. package/agents/explorer-low.md +42 -42
  14. package/agents/explorer-medium.md +59 -59
  15. package/agents/explorer.md +48 -48
  16. package/agents/implementer-low.md +43 -43
  17. package/agents/implementer-medium.md +52 -52
  18. package/agents/implementer.md +54 -54
  19. package/agents/planning/requirements-analyst.md +84 -84
  20. package/agents/planning/ux-advisor.md +83 -83
  21. package/agents/qa/acceptance-tester.md +86 -86
  22. package/agents/qa/edge-case-finder.md +93 -93
  23. package/agents/refactor-cleaner.md +143 -143
  24. package/agents/research/best-practices-agent.md +199 -199
  25. package/agents/research/codebase-patterns-agent.md +157 -157
  26. package/agents/research/framework-docs-agent.md +188 -188
  27. package/agents/research/security-advisory-agent.md +213 -213
  28. package/agents/review/architecture-reviewer.md +107 -107
  29. package/agents/review/complexity-reviewer.md +116 -116
  30. package/agents/review/data-integrity-reviewer.md +88 -88
  31. package/agents/review/git-history-reviewer.md +103 -103
  32. package/agents/review/performance-reviewer.md +86 -86
  33. package/agents/review/python-reviewer.md +150 -150
  34. package/agents/review/rails-reviewer.md +139 -139
  35. package/agents/review/react-reviewer.md +144 -144
  36. package/agents/review/security-reviewer.md +80 -80
  37. package/agents/review/simplicity-reviewer.md +140 -140
  38. package/agents/review/test-coverage-reviewer.md +116 -116
  39. package/agents/review/typescript-reviewer.md +127 -127
  40. package/agents/searcher.md +54 -54
  41. package/agents/simplifier.md +120 -120
  42. package/agents/tester.md +49 -49
  43. package/agents/ui-previewer.md +268 -268
  44. package/commands/vibe.analyze.md +356 -356
  45. package/commands/vibe.reason.md +329 -329
  46. package/commands/vibe.review.md +423 -423
  47. package/commands/vibe.run.md +1313 -1313
  48. package/commands/vibe.spec.md +1054 -1054
  49. package/commands/vibe.spec.review.md +412 -412
  50. package/commands/vibe.trace.md +161 -161
  51. package/commands/vibe.utils.md +376 -376
  52. package/commands/vibe.verify.md +375 -375
  53. package/dist/cli/collaborator.js +52 -52
  54. package/dist/cli/detect.js +32 -32
  55. package/dist/cli/hud.js +20 -20
  56. package/dist/cli/index.js +112 -112
  57. package/dist/cli/llm.js +144 -144
  58. package/dist/cli/mcp.d.ts +49 -0
  59. package/dist/cli/mcp.d.ts.map +1 -0
  60. package/dist/cli/mcp.js +169 -0
  61. package/dist/cli/mcp.js.map +1 -0
  62. package/dist/cli/postinstall.d.ts.map +1 -1
  63. package/dist/cli/postinstall.js +886 -858
  64. package/dist/cli/postinstall.js.map +1 -1
  65. package/dist/cli/setup/GlobalInstaller.d.ts +6 -0
  66. package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
  67. package/dist/cli/setup/GlobalInstaller.js +26 -0
  68. package/dist/cli/setup/GlobalInstaller.js.map +1 -1
  69. package/dist/lib/DeepInit.js +24 -24
  70. package/dist/lib/IterationTracker.js +11 -11
  71. package/dist/lib/PythonParser.js +108 -108
  72. package/dist/lib/ReviewRace.js +96 -96
  73. package/dist/lib/SkillFrontmatter.js +28 -28
  74. package/dist/lib/SkillQualityGate.js +9 -9
  75. package/dist/lib/SkillRepository.js +159 -159
  76. package/dist/lib/UltraQA.js +77 -77
  77. package/dist/lib/gemini-api.js +5 -5
  78. package/dist/lib/gemini-mcp.d.ts +10 -0
  79. package/dist/lib/gemini-mcp.d.ts.map +1 -0
  80. package/dist/lib/gemini-mcp.js +353 -0
  81. package/dist/lib/gemini-mcp.js.map +1 -0
  82. package/dist/lib/gpt-api.js +4 -4
  83. package/dist/lib/gpt-mcp.d.ts +10 -0
  84. package/dist/lib/gpt-mcp.d.ts.map +1 -0
  85. package/dist/lib/gpt-mcp.js +352 -0
  86. package/dist/lib/gpt-mcp.js.map +1 -0
  87. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  88. package/dist/lib/memory/MemorySearch.js +43 -43
  89. package/dist/lib/memory/MemoryStorage.js +130 -130
  90. package/dist/lib/memory/ObservationStore.js +28 -28
  91. package/dist/lib/memory/SessionRAGRetriever.js +7 -7
  92. package/dist/lib/memory/SessionRAGStore.js +216 -216
  93. package/dist/lib/memory/SessionSummarizer.js +9 -9
  94. package/dist/orchestrator/AgentManager.js +12 -12
  95. package/dist/orchestrator/MultiLlmResearch.js +8 -8
  96. package/dist/orchestrator/SmartRouter.js +11 -11
  97. package/dist/orchestrator/SwarmOrchestrator.test.js +16 -16
  98. package/dist/orchestrator/parallelResearch.js +24 -24
  99. package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
  100. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
  101. package/dist/tools/analytics/getUsageAnalytics.js +246 -0
  102. package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
  103. package/dist/tools/analytics/index.d.ts +5 -0
  104. package/dist/tools/analytics/index.d.ts.map +1 -0
  105. package/dist/tools/analytics/index.js +5 -0
  106. package/dist/tools/analytics/index.js.map +1 -0
  107. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  108. package/dist/tools/convention/getCodingGuide.d.ts +7 -0
  109. package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
  110. package/dist/tools/convention/getCodingGuide.js +69 -0
  111. package/dist/tools/convention/getCodingGuide.js.map +1 -0
  112. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  113. package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
  114. package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
  115. package/dist/tools/planning/analyzeRequirements.js +171 -0
  116. package/dist/tools/planning/analyzeRequirements.js.map +1 -0
  117. package/dist/tools/planning/createUserStories.d.ts +9 -0
  118. package/dist/tools/planning/createUserStories.d.ts.map +1 -0
  119. package/dist/tools/planning/createUserStories.js +124 -0
  120. package/dist/tools/planning/createUserStories.js.map +1 -0
  121. package/dist/tools/planning/featureRoadmap.d.ts +10 -0
  122. package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
  123. package/dist/tools/planning/featureRoadmap.js +207 -0
  124. package/dist/tools/planning/featureRoadmap.js.map +1 -0
  125. package/dist/tools/planning/generatePrd.d.ts +11 -0
  126. package/dist/tools/planning/generatePrd.d.ts.map +1 -0
  127. package/dist/tools/planning/generatePrd.js +161 -0
  128. package/dist/tools/planning/generatePrd.js.map +1 -0
  129. package/dist/tools/planning/index.d.ts +8 -0
  130. package/dist/tools/planning/index.d.ts.map +1 -0
  131. package/dist/tools/planning/index.js +8 -0
  132. package/dist/tools/planning/index.js.map +1 -0
  133. package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
  134. package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
  135. package/dist/tools/prompt/analyzePrompt.js +150 -0
  136. package/dist/tools/prompt/analyzePrompt.js.map +1 -0
  137. package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
  138. package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
  139. package/dist/tools/prompt/enhancePrompt.js +110 -0
  140. package/dist/tools/prompt/enhancePrompt.js.map +1 -0
  141. package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
  142. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
  143. package/dist/tools/prompt/enhancePromptGemini.js +332 -0
  144. package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
  145. package/dist/tools/prompt/index.d.ts +7 -0
  146. package/dist/tools/prompt/index.d.ts.map +1 -0
  147. package/dist/tools/prompt/index.js +7 -0
  148. package/dist/tools/prompt/index.js.map +1 -0
  149. package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
  150. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
  151. package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
  152. package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
  153. package/dist/tools/reasoning/index.d.ts +5 -0
  154. package/dist/tools/reasoning/index.d.ts.map +1 -0
  155. package/dist/tools/reasoning/index.js +5 -0
  156. package/dist/tools/reasoning/index.js.map +1 -0
  157. package/dist/tools/spec/prdParser.test.js +171 -171
  158. package/dist/tools/spec/specGenerator.js +169 -169
  159. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  160. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  161. package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
  162. package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
  163. package/dist/tools/thinking/analyzeProblem.js +55 -0
  164. package/dist/tools/thinking/analyzeProblem.js.map +1 -0
  165. package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
  166. package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
  167. package/dist/tools/thinking/breakDownProblem.js +145 -0
  168. package/dist/tools/thinking/breakDownProblem.js.map +1 -0
  169. package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
  170. package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
  171. package/dist/tools/thinking/createThinkingChain.js +44 -0
  172. package/dist/tools/thinking/createThinkingChain.js.map +1 -0
  173. package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
  174. package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
  175. package/dist/tools/thinking/formatAsPlan.js +78 -0
  176. package/dist/tools/thinking/formatAsPlan.js.map +1 -0
  177. package/dist/tools/thinking/index.d.ts +10 -0
  178. package/dist/tools/thinking/index.d.ts.map +1 -0
  179. package/dist/tools/thinking/index.js +10 -0
  180. package/dist/tools/thinking/index.js.map +1 -0
  181. package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
  182. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
  183. package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
  184. package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
  185. package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
  186. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
  187. package/dist/tools/thinking/thinkAloudProcess.js +80 -0
  188. package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
  189. package/hooks/hooks.json +115 -115
  190. package/hooks/scripts/code-check.js +70 -70
  191. package/hooks/scripts/code-review.js +22 -22
  192. package/hooks/scripts/complexity.js +22 -22
  193. package/hooks/scripts/compound.js +23 -23
  194. package/hooks/scripts/context-save.js +53 -53
  195. package/hooks/scripts/gemini-ui-gen.js +281 -281
  196. package/hooks/scripts/generate-brand-assets.js +474 -474
  197. package/hooks/scripts/hud-multiline.js +262 -262
  198. package/hooks/scripts/hud-status.js +291 -291
  199. package/hooks/scripts/keyword-detector.js +214 -214
  200. package/hooks/scripts/llm-orchestrate.js +171 -171
  201. package/hooks/scripts/post-edit.js +97 -97
  202. package/hooks/scripts/post-tool-verify.js +210 -210
  203. package/hooks/scripts/pre-tool-guard.js +125 -125
  204. package/hooks/scripts/prompt-dispatcher.js +161 -161
  205. package/hooks/scripts/recall.js +22 -22
  206. package/hooks/scripts/session-start.js +30 -30
  207. package/hooks/scripts/skill-injector.js +191 -191
  208. package/hooks/scripts/utils.js +97 -97
  209. package/languages/csharp-unity.md +515 -515
  210. package/languages/gdscript-godot.md +470 -470
  211. package/languages/ruby-rails.md +489 -489
  212. package/languages/typescript-angular.md +433 -433
  213. package/languages/typescript-astro.md +416 -416
  214. package/languages/typescript-electron.md +406 -406
  215. package/languages/typescript-nestjs.md +524 -524
  216. package/languages/typescript-svelte.md +407 -407
  217. package/languages/typescript-tauri.md +365 -365
  218. package/package.json +84 -84
  219. package/skills/brand-assets.md +141 -141
  220. package/skills/commerce-patterns.md +361 -361
  221. package/skills/context7-usage.md +102 -102
  222. package/skills/e2e-commerce.md +304 -304
  223. package/skills/frontend-design.md +92 -92
  224. package/skills/git-worktree.md +181 -181
  225. package/skills/parallel-research.md +77 -77
  226. package/skills/priority-todos.md +239 -239
  227. package/skills/seo-checklist.md +244 -244
  228. package/skills/tool-fallback.md +190 -190
  229. package/skills/vibe-capabilities.md +161 -161
  230. package/vibe/constitution.md +227 -227
  231. package/vibe/rules/core/communication-guide.md +98 -98
  232. package/vibe/rules/core/development-philosophy.md +52 -52
  233. package/vibe/rules/core/quick-start.md +102 -102
  234. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  235. package/vibe/rules/quality/checklist.md +276 -276
  236. package/vibe/rules/quality/testing-strategy.md +440 -440
  237. package/vibe/rules/standards/anti-patterns.md +541 -541
  238. package/vibe/rules/standards/code-structure.md +291 -291
  239. package/vibe/rules/standards/complexity-metrics.md +313 -313
  240. package/vibe/rules/standards/naming-conventions.md +198 -198
  241. package/vibe/setup.sh +31 -31
  242. package/vibe/templates/constitution-template.md +252 -252
  243. package/vibe/templates/contract-backend-template.md +526 -526
  244. package/vibe/templates/contract-frontend-template.md +599 -599
  245. package/vibe/templates/feature-template.md +96 -96
  246. package/vibe/templates/spec-template.md +221 -221
@@ -1,412 +1,412 @@
1
- # /vibe.spec.review - SPEC Quality Review
2
-
3
- Review and enhance SPEC with GPT/Gemini cross-validation.
4
-
5
- **Purpose:** Run this command in a NEW session after `/vibe.spec` to ensure accurate review execution.
6
-
7
- ---
8
-
9
- ## Usage
10
-
11
- ```bash
12
- /vibe.spec.review "feature-name"
13
- ```
14
-
15
- **Prerequisites:**
16
- - SPEC file exists: `.claude/vibe/specs/{feature-name}.md` (single) or `.claude/vibe/specs/{feature-name}/_index.md` (split)
17
- - Feature file exists: `.claude/vibe/features/{feature-name}.feature` (single) or `.claude/vibe/features/{feature-name}/_index.feature` (split)
18
-
19
- ---
20
-
21
- ## Workflow
22
-
23
- ```
24
- /vibe.spec "feature" → SPEC 생성 완료
25
-
26
- /new (새 세션)
27
-
28
- /vibe.spec.review "feature" → 품질 검증 + GPT/Gemini 리뷰
29
-
30
- /vibe.run "feature"
31
- ```
32
-
33
- ---
34
-
35
- ## Step 1: Load SPEC Files
36
-
37
- Detect SPEC structure (single file or split folder) and read files:
38
-
39
- **Single file structure:**
40
- ```
41
- .claude/vibe/specs/{feature-name}.md
42
- .claude/vibe/features/{feature-name}.feature
43
- ```
44
-
45
- **Split folder structure:**
46
- ```
47
- .claude/vibe/specs/{feature-name}/_index.md (+ phase files)
48
- .claude/vibe/features/{feature-name}/_index.feature (+ phase files)
49
- ```
50
-
51
- **Detection logic:**
52
- 1. Check if `.claude/vibe/specs/{feature-name}/` directory exists → Split mode
53
- 2. Otherwise check `.claude/vibe/specs/{feature-name}.md` → Single mode
54
- 3. If neither exists → Error
55
-
56
- **Output:**
57
- ```
58
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
59
- 📋 SPEC REVIEW: {feature-name}
60
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
-
62
- Loading files...
63
- Mode: {single|split}
64
- ✅ SPEC: .claude/vibe/specs/{feature-name}.md (or _index.md + N phase files)
65
- ✅ Feature: .claude/vibe/features/{feature-name}.feature (or _index.feature + N phase files)
66
-
67
- Extracted info:
68
- - Feature: {feature description}
69
- - Stack: {tech stack}
70
- - Phases: {number of phases}
71
- - Scenarios: {number of scenarios}
72
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
73
- ```
74
-
75
- ---
76
-
77
- ## Step 2: Quality Validation (95-Point Gate)
78
-
79
- **🚨 MANDATORY: Score must be ≥ 95 to proceed**
80
-
81
- ### 2.1 Quality Checklist
82
-
83
- | Category | Check Item | Weight |
84
- |----------|------------|--------|
85
- | **Completeness** | All user flows included in Task | 15% |
86
- | **Completeness** | All ACs converted to Feature scenarios | 10% |
87
- | **Completeness** | Error handling scenarios defined | 10% |
88
- | **Specificity** | All numbers specified (timeout, limits, etc.) | 15% |
89
- | **Specificity** | No ambiguous terms ("appropriate", "proper", etc.) | 10% |
90
- | **Testability** | Each AC is verifiable | 10% |
91
- | **Testability** | Feature scenarios have concrete Given/When/Then | 10% |
92
- | **Security** | Auth/permission requirements specified | 10% |
93
- | **Performance** | Response time/load requirements specified | 10% |
94
-
95
- ### 2.2 Quality Gate Loop
96
-
97
- ```python
98
- max_iterations = 3
99
- iteration = 0
100
-
101
- while iteration < max_iterations:
102
- iteration += 1
103
- score = calculate_quality_score(spec, feature)
104
-
105
- print(f"━━━ Quality Check [{iteration}/{max_iterations}] ━━━")
106
- print(f"Score: {score}/100")
107
-
108
- if score >= 95:
109
- print("✅ Quality Gate PASSED")
110
- break
111
-
112
- # Auto-fix missing items
113
- missing_items = identify_missing_items(spec)
114
- for item in missing_items:
115
- auto_fix(item)
116
- update_spec()
117
- update_feature()
118
-
119
- print(f"✅ Applied {len(missing_items)} fixes - Re-evaluating...")
120
-
121
- if score < 95:
122
- print(f"❌ BLOCKED: Score {score} < 95 after {max_iterations} iterations")
123
- print("Manual intervention required.")
124
- ```
125
-
126
- **Output format:**
127
- ```
128
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
129
- 📊 QUALITY GATE [1/3]
130
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
131
- Score: 87/100 ⚠️ BELOW THRESHOLD (95)
132
-
133
- Missing items:
134
- ❌ Error handling scenarios (10%)
135
- ❌ Performance targets (5%)
136
-
137
- Auto-fixing...
138
- ✅ Added network error handling scenario
139
- ✅ Added response time targets (<500ms)
140
-
141
- Re-evaluating...
142
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
143
-
144
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
145
- 📊 QUALITY GATE [2/3]
146
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
147
- Score: 96/100 ✅ PASSED
148
-
149
- ✅ Quality Gate PASSED - proceeding to GPT/Gemini review
150
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
151
- ```
152
-
153
- ### 2.3 Auto-Fix Rules
154
-
155
- | Missing Item | Auto-Fix Method |
156
- |--------------|-----------------|
157
- | Missing AC | Auto-generate AC based on Task |
158
- | Numbers not specified | Apply project defaults (timeout 30s, etc.) |
159
- | Missing error handling | Add common error scenarios |
160
- | Missing performance targets | Apply industry standard criteria |
161
- | Missing security | Add auth/data protection requirements |
162
- | Ambiguous terms | Replace with specific values |
163
-
164
- ---
165
-
166
- ## Step 3: Race Review (GPT + Gemini Cross-Validation) - 3 Rounds (v2.6.9)
167
-
168
- **🚨🚨🚨 CRITICAL: YOU MUST EXECUTE ALL 3 ROUNDS. DO NOT SKIP THIS STEP. 🚨🚨🚨**
169
-
170
- **🚨 ABSOLUTE RULES FOR RACE REVIEW:**
171
-
172
- 1. **YOU MUST** use the Bash tool to call `llm-orchestrate.js` directly
173
- 2. **DO NOT** skip GPT/Gemini calls
174
- 3. **DO NOT** simulate or fake review results
175
- 4. **YOU MUST** run all 3 rounds sequentially (each round uses updated SPEC)
176
-
177
- > Race Mode reviews SPEC with both GPT and Gemini in parallel, then cross-validates findings for higher confidence.
178
-
179
- ### 3.1 Review Loop (3 Rounds)
180
-
181
- **For EACH round (1, 2, 3), run GPT + Gemini in PARALLEL via Bash tool.**
182
-
183
- **🚨 IMPORTANT: SPEC content is too large for CLI arguments. Use stdin pipe method.**
184
-
185
- **Procedure for each round:**
186
-
187
- **Step A: Save SPEC content to scratchpad temp file (using Write tool):**
188
- - Write the SPEC content to `[SCRATCHPAD]/spec-content.txt`
189
-
190
- **Step B: Run GPT + Gemini in PARALLEL (two separate Bash tool calls at once):**
191
-
192
- ```bash
193
- # GPT review (Bash tool call 1)
194
- node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this SPEC for completeness, specificity, testability, security, and performance. Round [N]/3. Find issues and improvements. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: '+fs.readFileSync('[SCRATCHPAD]/spec-content.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json
195
- ```
196
-
197
- ```bash
198
- # Gemini review (Bash tool call 2 - run in parallel with GPT)
199
- node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this SPEC for completeness, specificity, testability, security, and performance. Round [N]/3. Find issues and improvements. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: '+fs.readFileSync('[SCRATCHPAD]/spec-content.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json
200
- ```
201
-
202
- **🚨 MANDATORY: Replace `[SCRATCHPAD]` with the actual scratchpad directory path.**
203
- **🚨 Replace `[N]` with the current round number (1, 2, or 3).**
204
- **🚨 Run GPT and Gemini calls in PARALLEL (two separate Bash tool calls at once).**
205
-
206
- - Round 1: Write SPEC → Run GPT + Gemini in parallel → Cross-validate → Apply fixes → Update SPEC file
207
- - Round 2: Write updated SPEC → Run → Cross-validate → Apply fixes → Update SPEC file
208
- - Round 3: Write final SPEC → Run → Cross-validate → Confirm no issues remain
209
-
210
- ### 3.2 Cross-Validation Rules
211
-
212
- | Agreement | Priority | Action |
213
- |-----------|----------|--------|
214
- | Both GPT + Gemini agree (100%) | P1 | Auto-apply immediately |
215
- | One model only (50%) | P2 | Auto-apply with note |
216
-
217
- **After each round:**
218
-
219
- 1. Cross-validate findings (issues found by both → P1, single model → P2)
220
- 2. Merge feedback with confidence scores
221
- 3. Auto-apply P1/P2 improvements to SPEC and Feature files (use Edit tool)
222
- 4. Continue to next round with updated SPEC content
223
-
224
- **Output format:**
225
- ```
226
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
227
- 🏁 SPEC RACE REVIEW - Round 1/3
228
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
229
-
230
- Model Results:
231
- | Model | Issues | Duration |
232
- |--------|--------|----------|
233
- | GPT | 2 | 1823ms |
234
- | Gemini | 2 | 2156ms |
235
-
236
- Cross-Validated Issues:
237
- | Issue | GPT | Gemini | Confidence |
238
- |--------------------------|-----|--------|------------|
239
- | Missing retry logic | ✅ | ✅ | 100% → P1 |
240
- | Missing rate limiting | ✅ | ✅ | 100% → P1 |
241
- | Token refresh unclear | ✅ | ❌ | 50% → P2 |
242
-
243
- Auto-applying...
244
- ✅ [P1] Added retry logic (3 attempts, exponential backoff)
245
- ✅ [P1] Added rate limiting (100 req/min)
246
- ✅ [P2] Added token refresh flow
247
-
248
- ✅ Round 1 complete - 3 improvements (2 P1, 1 P2)
249
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
250
-
251
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
252
- 🏁 SPEC RACE REVIEW - Round 2/3
253
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
254
-
255
- Cross-Validated Issues:
256
- | Issue | GPT | Gemini | Confidence |
257
- |-----------------------------|-----|--------|------------|
258
- | Concurrent session unclear | ✅ | ❌ | 50% → P2 |
259
-
260
- Auto-applying...
261
- ✅ [P2] Added concurrent session policy
262
-
263
- ✅ Round 2 complete - 1 improvement
264
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
265
-
266
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
267
- 🏁 SPEC RACE REVIEW - Round 3/3
268
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
269
-
270
- Cross-Validated Issues: None
271
-
272
- ✅ No changes needed - SPEC is complete
273
- ✅ Consensus Rate: 100%
274
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
275
- ```
276
-
277
- ---
278
-
279
- ## Step 4: Final Summary
280
-
281
- ```
282
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
283
- ✅ SPEC REVIEW COMPLETE: {feature-name}
284
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
285
-
286
- Quality Score: 96/100 ✅
287
- Review Rounds: 3/3 ✅
288
- Total Improvements: 4
289
-
290
- Updated files:
291
- 📋 .claude/vibe/specs/{feature-name}.md (or split folder)
292
- 📋 .claude/vibe/features/{feature-name}.feature (or split folder)
293
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
294
- ```
295
-
296
- ---
297
-
298
- ## Step 5: SPEC Summary for User Review
299
-
300
- **🚨 MANDATORY: Always output this summary before proceeding to `/vibe.run`.**
301
-
302
- After all review rounds, present the finalized SPEC to the user in a readable format:
303
-
304
- ```
305
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
306
- 📋 SPEC SUMMARY: {feature-name}
307
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
308
-
309
- ## 기능 개요
310
- {SPEC의 <role>과 <context>에서 추출한 기능 목적 1-2줄 요약}
311
-
312
- ## 기술 스택
313
- {<context>에서 추출한 기술 스택 목록}
314
-
315
- ## 구현 단계
316
- | Phase | 이름 | 주요 작업 |
317
- |-------|------|----------|
318
- | 1 | {phase name} | {핵심 작업 1줄 요약} |
319
- | 2 | {phase name} | {핵심 작업 1줄 요약} |
320
- | ... | ... | ... |
321
-
322
- ## 핵심 시나리오 ({N}개)
323
- {Feature 파일에서 Scenario 이름 목록}
324
- - Scenario: {name1}
325
- - Scenario: {name2}
326
- - ...
327
-
328
- ## 주요 제약사항
329
- {<constraints>에서 핵심 항목 3-5개}
330
-
331
- ## 검증 기준
332
- {<acceptance>에서 핵심 항목 요약}
333
-
334
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
335
- ⚠️ 위 내용에 잘못된 부분이 있으면 수정을 요청하세요.
336
- 문제가 없으면 /vibe.run "{feature-name}" 으로 진행합니다.
337
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
338
- ```
339
-
340
- **Important:**
341
-
342
- - SPEC의 모든 Phase, Scenario, Constraint를 빠짐없이 나열
343
- - 사용자가 빠르게 검수할 수 있도록 핵심만 간결하게
344
- - 검토 후 사용자 확인 대기 (ultrawork 모드가 아닌 경우)
345
- - ultrawork 모드인 경우: 요약 출력 후 자동으로 `/vibe.run` 진행
346
-
347
- ---
348
-
349
- ## Next Step
350
-
351
- ```
352
- /vibe.run "{feature-name}"
353
- ```
354
-
355
- ---
356
-
357
- ## Error Handling
358
-
359
- ### SPEC Not Found
360
- ```
361
- ❌ ERROR: SPEC file not found
362
-
363
- Expected (single): .claude/vibe/specs/{feature-name}.md
364
- Expected (split): .claude/vibe/specs/{feature-name}/_index.md
365
-
366
- Please run /vibe.spec "{feature-name}" first to create the SPEC.
367
- ```
368
-
369
- ### Feature Not Found
370
- ```
371
- ❌ ERROR: Feature file not found
372
-
373
- Expected (single): .claude/vibe/features/{feature-name}.feature
374
- Expected (split): .claude/vibe/features/{feature-name}/_index.feature
375
-
376
- Please run /vibe.spec "{feature-name}" first to create the Feature file.
377
- ```
378
-
379
- ### GPT/Gemini Call Failed
380
- ```
381
- ⚠️ WARNING: {GPT|Gemini} call failed
382
-
383
- Error: {error message}
384
-
385
- Continuing with {other model} results only...
386
- ```
387
-
388
- ---
389
-
390
- ## Quick Mode
391
-
392
- For faster iteration (1 round only):
393
-
394
- ```bash
395
- /vibe.spec.review "feature-name" --quick
396
- ```
397
-
398
- ---
399
-
400
- ARGUMENTS: $ARGUMENTS
401
-
402
- **File Detection (execute before Step 1):**
403
-
404
- ```
405
- Feature name: $ARGUMENTS
406
-
407
- 1. Check split folder: .claude/vibe/specs/$ARGUMENTS/_index.md
408
- - If exists → Split mode (read all files in folder)
409
- 2. Check single file: .claude/vibe/specs/$ARGUMENTS.md
410
- - If exists → Single mode
411
- 3. Neither exists → Show error with both expected paths
412
- ```
1
+ # /vibe.spec.review - SPEC Quality Review
2
+
3
+ Review and enhance SPEC with GPT/Gemini cross-validation.
4
+
5
+ **Purpose:** Run this command in a NEW session after `/vibe.spec` to ensure accurate review execution.
6
+
7
+ ---
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ /vibe.spec.review "feature-name"
13
+ ```
14
+
15
+ **Prerequisites:**
16
+ - SPEC file exists: `.claude/vibe/specs/{feature-name}.md` (single) or `.claude/vibe/specs/{feature-name}/_index.md` (split)
17
+ - Feature file exists: `.claude/vibe/features/{feature-name}.feature` (single) or `.claude/vibe/features/{feature-name}/_index.feature` (split)
18
+
19
+ ---
20
+
21
+ ## Workflow
22
+
23
+ ```
24
+ /vibe.spec "feature" → SPEC 생성 완료
25
+
26
+ /new (새 세션)
27
+
28
+ /vibe.spec.review "feature" → 품질 검증 + GPT/Gemini 리뷰
29
+
30
+ /vibe.run "feature"
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Step 1: Load SPEC Files
36
+
37
+ Detect SPEC structure (single file or split folder) and read files:
38
+
39
+ **Single file structure:**
40
+ ```
41
+ .claude/vibe/specs/{feature-name}.md
42
+ .claude/vibe/features/{feature-name}.feature
43
+ ```
44
+
45
+ **Split folder structure:**
46
+ ```
47
+ .claude/vibe/specs/{feature-name}/_index.md (+ phase files)
48
+ .claude/vibe/features/{feature-name}/_index.feature (+ phase files)
49
+ ```
50
+
51
+ **Detection logic:**
52
+ 1. Check if `.claude/vibe/specs/{feature-name}/` directory exists → Split mode
53
+ 2. Otherwise check `.claude/vibe/specs/{feature-name}.md` → Single mode
54
+ 3. If neither exists → Error
55
+
56
+ **Output:**
57
+ ```
58
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
59
+ 📋 SPEC REVIEW: {feature-name}
60
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
+
62
+ Loading files...
63
+ Mode: {single|split}
64
+ ✅ SPEC: .claude/vibe/specs/{feature-name}.md (or _index.md + N phase files)
65
+ ✅ Feature: .claude/vibe/features/{feature-name}.feature (or _index.feature + N phase files)
66
+
67
+ Extracted info:
68
+ - Feature: {feature description}
69
+ - Stack: {tech stack}
70
+ - Phases: {number of phases}
71
+ - Scenarios: {number of scenarios}
72
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Step 2: Quality Validation (95-Point Gate)
78
+
79
+ **🚨 MANDATORY: Score must be ≥ 95 to proceed**
80
+
81
+ ### 2.1 Quality Checklist
82
+
83
+ | Category | Check Item | Weight |
84
+ |----------|------------|--------|
85
+ | **Completeness** | All user flows included in Task | 15% |
86
+ | **Completeness** | All ACs converted to Feature scenarios | 10% |
87
+ | **Completeness** | Error handling scenarios defined | 10% |
88
+ | **Specificity** | All numbers specified (timeout, limits, etc.) | 15% |
89
+ | **Specificity** | No ambiguous terms ("appropriate", "proper", etc.) | 10% |
90
+ | **Testability** | Each AC is verifiable | 10% |
91
+ | **Testability** | Feature scenarios have concrete Given/When/Then | 10% |
92
+ | **Security** | Auth/permission requirements specified | 10% |
93
+ | **Performance** | Response time/load requirements specified | 10% |
94
+
95
+ ### 2.2 Quality Gate Loop
96
+
97
+ ```python
98
+ max_iterations = 3
99
+ iteration = 0
100
+
101
+ while iteration < max_iterations:
102
+ iteration += 1
103
+ score = calculate_quality_score(spec, feature)
104
+
105
+ print(f"━━━ Quality Check [{iteration}/{max_iterations}] ━━━")
106
+ print(f"Score: {score}/100")
107
+
108
+ if score >= 95:
109
+ print("✅ Quality Gate PASSED")
110
+ break
111
+
112
+ # Auto-fix missing items
113
+ missing_items = identify_missing_items(spec)
114
+ for item in missing_items:
115
+ auto_fix(item)
116
+ update_spec()
117
+ update_feature()
118
+
119
+ print(f"✅ Applied {len(missing_items)} fixes - Re-evaluating...")
120
+
121
+ if score < 95:
122
+ print(f"❌ BLOCKED: Score {score} < 95 after {max_iterations} iterations")
123
+ print("Manual intervention required.")
124
+ ```
125
+
126
+ **Output format:**
127
+ ```
128
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
129
+ 📊 QUALITY GATE [1/3]
130
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
131
+ Score: 87/100 ⚠️ BELOW THRESHOLD (95)
132
+
133
+ Missing items:
134
+ ❌ Error handling scenarios (10%)
135
+ ❌ Performance targets (5%)
136
+
137
+ Auto-fixing...
138
+ ✅ Added network error handling scenario
139
+ ✅ Added response time targets (<500ms)
140
+
141
+ Re-evaluating...
142
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
143
+
144
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
145
+ 📊 QUALITY GATE [2/3]
146
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
147
+ Score: 96/100 ✅ PASSED
148
+
149
+ ✅ Quality Gate PASSED - proceeding to GPT/Gemini review
150
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
151
+ ```
152
+
153
+ ### 2.3 Auto-Fix Rules
154
+
155
+ | Missing Item | Auto-Fix Method |
156
+ |--------------|-----------------|
157
+ | Missing AC | Auto-generate AC based on Task |
158
+ | Numbers not specified | Apply project defaults (timeout 30s, etc.) |
159
+ | Missing error handling | Add common error scenarios |
160
+ | Missing performance targets | Apply industry standard criteria |
161
+ | Missing security | Add auth/data protection requirements |
162
+ | Ambiguous terms | Replace with specific values |
163
+
164
+ ---
165
+
166
+ ## Step 3: Race Review (GPT + Gemini Cross-Validation) - 3 Rounds (v2.6.9)
167
+
168
+ **🚨🚨🚨 CRITICAL: YOU MUST EXECUTE ALL 3 ROUNDS. DO NOT SKIP THIS STEP. 🚨🚨🚨**
169
+
170
+ **🚨 ABSOLUTE RULES FOR RACE REVIEW:**
171
+
172
+ 1. **YOU MUST** use the Bash tool to call `llm-orchestrate.js` directly
173
+ 2. **DO NOT** skip GPT/Gemini calls
174
+ 3. **DO NOT** simulate or fake review results
175
+ 4. **YOU MUST** run all 3 rounds sequentially (each round uses updated SPEC)
176
+
177
+ > Race Mode reviews SPEC with both GPT and Gemini in parallel, then cross-validates findings for higher confidence.
178
+
179
+ ### 3.1 Review Loop (3 Rounds)
180
+
181
+ **For EACH round (1, 2, 3), run GPT + Gemini in PARALLEL via Bash tool.**
182
+
183
+ **🚨 IMPORTANT: SPEC content is too large for CLI arguments. Use stdin pipe method.**
184
+
185
+ **Procedure for each round:**
186
+
187
+ **Step A: Save SPEC content to scratchpad temp file (using Write tool):**
188
+ - Write the SPEC content to `[SCRATCHPAD]/spec-content.txt`
189
+
190
+ **Step B: Run GPT + Gemini in PARALLEL (two separate Bash tool calls at once):**
191
+
192
+ ```bash
193
+ # GPT review (Bash tool call 1)
194
+ node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this SPEC for completeness, specificity, testability, security, and performance. Round [N]/3. Find issues and improvements. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: '+fs.readFileSync('[SCRATCHPAD]/spec-content.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json
195
+ ```
196
+
197
+ ```bash
198
+ # Gemini review (Bash tool call 2 - run in parallel with GPT)
199
+ node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this SPEC for completeness, specificity, testability, security, and performance. Round [N]/3. Find issues and improvements. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: '+fs.readFileSync('[SCRATCHPAD]/spec-content.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json
200
+ ```
201
+
202
+ **🚨 MANDATORY: Replace `[SCRATCHPAD]` with the actual scratchpad directory path.**
203
+ **🚨 Replace `[N]` with the current round number (1, 2, or 3).**
204
+ **🚨 Run GPT and Gemini calls in PARALLEL (two separate Bash tool calls at once).**
205
+
206
+ - Round 1: Write SPEC → Run GPT + Gemini in parallel → Cross-validate → Apply fixes → Update SPEC file
207
+ - Round 2: Write updated SPEC → Run → Cross-validate → Apply fixes → Update SPEC file
208
+ - Round 3: Write final SPEC → Run → Cross-validate → Confirm no issues remain
209
+
210
+ ### 3.2 Cross-Validation Rules
211
+
212
+ | Agreement | Priority | Action |
213
+ |-----------|----------|--------|
214
+ | Both GPT + Gemini agree (100%) | P1 | Auto-apply immediately |
215
+ | One model only (50%) | P2 | Auto-apply with note |
216
+
217
+ **After each round:**
218
+
219
+ 1. Cross-validate findings (issues found by both → P1, single model → P2)
220
+ 2. Merge feedback with confidence scores
221
+ 3. Auto-apply P1/P2 improvements to SPEC and Feature files (use Edit tool)
222
+ 4. Continue to next round with updated SPEC content
223
+
224
+ **Output format:**
225
+ ```
226
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
227
+ 🏁 SPEC RACE REVIEW - Round 1/3
228
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
229
+
230
+ Model Results:
231
+ | Model | Issues | Duration |
232
+ |--------|--------|----------|
233
+ | GPT | 2 | 1823ms |
234
+ | Gemini | 2 | 2156ms |
235
+
236
+ Cross-Validated Issues:
237
+ | Issue | GPT | Gemini | Confidence |
238
+ |--------------------------|-----|--------|------------|
239
+ | Missing retry logic | ✅ | ✅ | 100% → P1 |
240
+ | Missing rate limiting | ✅ | ✅ | 100% → P1 |
241
+ | Token refresh unclear | ✅ | ❌ | 50% → P2 |
242
+
243
+ Auto-applying...
244
+ ✅ [P1] Added retry logic (3 attempts, exponential backoff)
245
+ ✅ [P1] Added rate limiting (100 req/min)
246
+ ✅ [P2] Added token refresh flow
247
+
248
+ ✅ Round 1 complete - 3 improvements (2 P1, 1 P2)
249
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
250
+
251
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
252
+ 🏁 SPEC RACE REVIEW - Round 2/3
253
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
254
+
255
+ Cross-Validated Issues:
256
+ | Issue | GPT | Gemini | Confidence |
257
+ |-----------------------------|-----|--------|------------|
258
+ | Concurrent session unclear | ✅ | ❌ | 50% → P2 |
259
+
260
+ Auto-applying...
261
+ ✅ [P2] Added concurrent session policy
262
+
263
+ ✅ Round 2 complete - 1 improvement
264
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
265
+
266
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
267
+ 🏁 SPEC RACE REVIEW - Round 3/3
268
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
269
+
270
+ Cross-Validated Issues: None
271
+
272
+ ✅ No changes needed - SPEC is complete
273
+ ✅ Consensus Rate: 100%
274
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
275
+ ```
276
+
277
+ ---
278
+
279
+ ## Step 4: Final Summary
280
+
281
+ ```
282
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
283
+ ✅ SPEC REVIEW COMPLETE: {feature-name}
284
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
285
+
286
+ Quality Score: 96/100 ✅
287
+ Review Rounds: 3/3 ✅
288
+ Total Improvements: 4
289
+
290
+ Updated files:
291
+ 📋 .claude/vibe/specs/{feature-name}.md (or split folder)
292
+ 📋 .claude/vibe/features/{feature-name}.feature (or split folder)
293
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
294
+ ```
295
+
296
+ ---
297
+
298
+ ## Step 5: SPEC Summary for User Review
299
+
300
+ **🚨 MANDATORY: Always output this summary before proceeding to `/vibe.run`.**
301
+
302
+ After all review rounds, present the finalized SPEC to the user in a readable format:
303
+
304
+ ```
305
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
306
+ 📋 SPEC SUMMARY: {feature-name}
307
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
308
+
309
+ ## 기능 개요
310
+ {SPEC의 <role>과 <context>에서 추출한 기능 목적 1-2줄 요약}
311
+
312
+ ## 기술 스택
313
+ {<context>에서 추출한 기술 스택 목록}
314
+
315
+ ## 구현 단계
316
+ | Phase | 이름 | 주요 작업 |
317
+ |-------|------|----------|
318
+ | 1 | {phase name} | {핵심 작업 1줄 요약} |
319
+ | 2 | {phase name} | {핵심 작업 1줄 요약} |
320
+ | ... | ... | ... |
321
+
322
+ ## 핵심 시나리오 ({N}개)
323
+ {Feature 파일에서 Scenario 이름 목록}
324
+ - Scenario: {name1}
325
+ - Scenario: {name2}
326
+ - ...
327
+
328
+ ## 주요 제약사항
329
+ {<constraints>에서 핵심 항목 3-5개}
330
+
331
+ ## 검증 기준
332
+ {<acceptance>에서 핵심 항목 요약}
333
+
334
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
335
+ ⚠️ 위 내용에 잘못된 부분이 있으면 수정을 요청하세요.
336
+ 문제가 없으면 /vibe.run "{feature-name}" 으로 진행합니다.
337
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
338
+ ```
339
+
340
+ **Important:**
341
+
342
+ - SPEC의 모든 Phase, Scenario, Constraint를 빠짐없이 나열
343
+ - 사용자가 빠르게 검수할 수 있도록 핵심만 간결하게
344
+ - 검토 후 사용자 확인 대기 (ultrawork 모드가 아닌 경우)
345
+ - ultrawork 모드인 경우: 요약 출력 후 자동으로 `/vibe.run` 진행
346
+
347
+ ---
348
+
349
+ ## Next Step
350
+
351
+ ```
352
+ /vibe.run "{feature-name}"
353
+ ```
354
+
355
+ ---
356
+
357
+ ## Error Handling
358
+
359
+ ### SPEC Not Found
360
+ ```
361
+ ❌ ERROR: SPEC file not found
362
+
363
+ Expected (single): .claude/vibe/specs/{feature-name}.md
364
+ Expected (split): .claude/vibe/specs/{feature-name}/_index.md
365
+
366
+ Please run /vibe.spec "{feature-name}" first to create the SPEC.
367
+ ```
368
+
369
+ ### Feature Not Found
370
+ ```
371
+ ❌ ERROR: Feature file not found
372
+
373
+ Expected (single): .claude/vibe/features/{feature-name}.feature
374
+ Expected (split): .claude/vibe/features/{feature-name}/_index.feature
375
+
376
+ Please run /vibe.spec "{feature-name}" first to create the Feature file.
377
+ ```
378
+
379
+ ### GPT/Gemini Call Failed
380
+ ```
381
+ ⚠️ WARNING: {GPT|Gemini} call failed
382
+
383
+ Error: {error message}
384
+
385
+ Continuing with {other model} results only...
386
+ ```
387
+
388
+ ---
389
+
390
+ ## Quick Mode
391
+
392
+ For faster iteration (1 round only):
393
+
394
+ ```bash
395
+ /vibe.spec.review "feature-name" --quick
396
+ ```
397
+
398
+ ---
399
+
400
+ ARGUMENTS: $ARGUMENTS
401
+
402
+ **File Detection (execute before Step 1):**
403
+
404
+ ```
405
+ Feature name: $ARGUMENTS
406
+
407
+ 1. Check split folder: .claude/vibe/specs/$ARGUMENTS/_index.md
408
+ - If exists → Split mode (read all files in folder)
409
+ 2. Check single file: .claude/vibe/specs/$ARGUMENTS.md
410
+ - If exists → Single mode
411
+ 3. Neither exists → Show error with both expected paths
412
+ ```