@su-record/vibe 2.6.26 → 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 (287) hide show
  1. package/CLAUDE.md +202 -153
  2. package/LICENSE +21 -21
  3. package/README.md +267 -236
  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/MemoryManager.d.ts +30 -0
  72. package/dist/lib/MemoryManager.d.ts.map +1 -1
  73. package/dist/lib/MemoryManager.js +74 -0
  74. package/dist/lib/MemoryManager.js.map +1 -1
  75. package/dist/lib/PythonParser.js +108 -108
  76. package/dist/lib/ReviewRace.js +96 -96
  77. package/dist/lib/SkillFrontmatter.js +28 -28
  78. package/dist/lib/SkillQualityGate.js +9 -9
  79. package/dist/lib/SkillRepository.js +159 -159
  80. package/dist/lib/UltraQA.js +77 -77
  81. package/dist/lib/gemini-api.js +5 -5
  82. package/dist/lib/gemini-mcp.d.ts +10 -0
  83. package/dist/lib/gemini-mcp.d.ts.map +1 -0
  84. package/dist/lib/gemini-mcp.js +353 -0
  85. package/dist/lib/gemini-mcp.js.map +1 -0
  86. package/dist/lib/gpt-api.js +4 -4
  87. package/dist/lib/gpt-mcp.d.ts +10 -0
  88. package/dist/lib/gpt-mcp.d.ts.map +1 -0
  89. package/dist/lib/gpt-mcp.js +352 -0
  90. package/dist/lib/gpt-mcp.js.map +1 -0
  91. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  92. package/dist/lib/memory/MemorySearch.js +43 -43
  93. package/dist/lib/memory/MemoryStorage.js +130 -130
  94. package/dist/lib/memory/ObservationStore.js +28 -28
  95. package/dist/lib/memory/SessionRAGRetriever.d.ts +66 -0
  96. package/dist/lib/memory/SessionRAGRetriever.d.ts.map +1 -0
  97. package/dist/lib/memory/SessionRAGRetriever.js +196 -0
  98. package/dist/lib/memory/SessionRAGRetriever.js.map +1 -0
  99. package/dist/lib/memory/SessionRAGRetriever.test.d.ts +2 -0
  100. package/dist/lib/memory/SessionRAGRetriever.test.d.ts.map +1 -0
  101. package/dist/lib/memory/SessionRAGRetriever.test.js +180 -0
  102. package/dist/lib/memory/SessionRAGRetriever.test.js.map +1 -0
  103. package/dist/lib/memory/SessionRAGStore.d.ts +153 -0
  104. package/dist/lib/memory/SessionRAGStore.d.ts.map +1 -0
  105. package/dist/lib/memory/SessionRAGStore.js +673 -0
  106. package/dist/lib/memory/SessionRAGStore.js.map +1 -0
  107. package/dist/lib/memory/SessionRAGStore.test.d.ts +2 -0
  108. package/dist/lib/memory/SessionRAGStore.test.d.ts.map +1 -0
  109. package/dist/lib/memory/SessionRAGStore.test.js +326 -0
  110. package/dist/lib/memory/SessionRAGStore.test.js.map +1 -0
  111. package/dist/lib/memory/SessionSummarizer.js +9 -9
  112. package/dist/orchestrator/AgentManager.js +12 -12
  113. package/dist/orchestrator/MultiLlmResearch.js +8 -8
  114. package/dist/orchestrator/SmartRouter.js +11 -11
  115. package/dist/orchestrator/SwarmOrchestrator.test.js +16 -16
  116. package/dist/orchestrator/parallelResearch.js +24 -24
  117. package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
  118. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
  119. package/dist/tools/analytics/getUsageAnalytics.js +246 -0
  120. package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
  121. package/dist/tools/analytics/index.d.ts +5 -0
  122. package/dist/tools/analytics/index.d.ts.map +1 -0
  123. package/dist/tools/analytics/index.js +5 -0
  124. package/dist/tools/analytics/index.js.map +1 -0
  125. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  126. package/dist/tools/convention/getCodingGuide.d.ts +7 -0
  127. package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
  128. package/dist/tools/convention/getCodingGuide.js +69 -0
  129. package/dist/tools/convention/getCodingGuide.js.map +1 -0
  130. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  131. package/dist/tools/index.d.ts +5 -0
  132. package/dist/tools/index.d.ts.map +1 -1
  133. package/dist/tools/index.js +4 -0
  134. package/dist/tools/index.js.map +1 -1
  135. package/dist/tools/memory/index.d.ts +3 -0
  136. package/dist/tools/memory/index.d.ts.map +1 -1
  137. package/dist/tools/memory/index.js +4 -0
  138. package/dist/tools/memory/index.js.map +1 -1
  139. package/dist/tools/memory/manageGoals.d.ts +11 -0
  140. package/dist/tools/memory/manageGoals.d.ts.map +1 -0
  141. package/dist/tools/memory/manageGoals.js +152 -0
  142. package/dist/tools/memory/manageGoals.js.map +1 -0
  143. package/dist/tools/memory/retrieveSessionContext.d.ts +9 -0
  144. package/dist/tools/memory/retrieveSessionContext.d.ts.map +1 -0
  145. package/dist/tools/memory/retrieveSessionContext.js +140 -0
  146. package/dist/tools/memory/retrieveSessionContext.js.map +1 -0
  147. package/dist/tools/memory/saveSessionItem.d.ts +26 -0
  148. package/dist/tools/memory/saveSessionItem.d.ts.map +1 -0
  149. package/dist/tools/memory/saveSessionItem.js +218 -0
  150. package/dist/tools/memory/saveSessionItem.js.map +1 -0
  151. package/dist/tools/memory/startSession.d.ts.map +1 -1
  152. package/dist/tools/memory/startSession.js +29 -0
  153. package/dist/tools/memory/startSession.js.map +1 -1
  154. package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
  155. package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
  156. package/dist/tools/planning/analyzeRequirements.js +171 -0
  157. package/dist/tools/planning/analyzeRequirements.js.map +1 -0
  158. package/dist/tools/planning/createUserStories.d.ts +9 -0
  159. package/dist/tools/planning/createUserStories.d.ts.map +1 -0
  160. package/dist/tools/planning/createUserStories.js +124 -0
  161. package/dist/tools/planning/createUserStories.js.map +1 -0
  162. package/dist/tools/planning/featureRoadmap.d.ts +10 -0
  163. package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
  164. package/dist/tools/planning/featureRoadmap.js +207 -0
  165. package/dist/tools/planning/featureRoadmap.js.map +1 -0
  166. package/dist/tools/planning/generatePrd.d.ts +11 -0
  167. package/dist/tools/planning/generatePrd.d.ts.map +1 -0
  168. package/dist/tools/planning/generatePrd.js +161 -0
  169. package/dist/tools/planning/generatePrd.js.map +1 -0
  170. package/dist/tools/planning/index.d.ts +8 -0
  171. package/dist/tools/planning/index.d.ts.map +1 -0
  172. package/dist/tools/planning/index.js +8 -0
  173. package/dist/tools/planning/index.js.map +1 -0
  174. package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
  175. package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
  176. package/dist/tools/prompt/analyzePrompt.js +150 -0
  177. package/dist/tools/prompt/analyzePrompt.js.map +1 -0
  178. package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
  179. package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
  180. package/dist/tools/prompt/enhancePrompt.js +110 -0
  181. package/dist/tools/prompt/enhancePrompt.js.map +1 -0
  182. package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
  183. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
  184. package/dist/tools/prompt/enhancePromptGemini.js +332 -0
  185. package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
  186. package/dist/tools/prompt/index.d.ts +7 -0
  187. package/dist/tools/prompt/index.d.ts.map +1 -0
  188. package/dist/tools/prompt/index.js +7 -0
  189. package/dist/tools/prompt/index.js.map +1 -0
  190. package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
  191. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
  192. package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
  193. package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
  194. package/dist/tools/reasoning/index.d.ts +5 -0
  195. package/dist/tools/reasoning/index.d.ts.map +1 -0
  196. package/dist/tools/reasoning/index.js +5 -0
  197. package/dist/tools/reasoning/index.js.map +1 -0
  198. package/dist/tools/spec/prdParser.test.js +171 -171
  199. package/dist/tools/spec/specGenerator.js +169 -169
  200. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  201. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  202. package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
  203. package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
  204. package/dist/tools/thinking/analyzeProblem.js +55 -0
  205. package/dist/tools/thinking/analyzeProblem.js.map +1 -0
  206. package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
  207. package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
  208. package/dist/tools/thinking/breakDownProblem.js +145 -0
  209. package/dist/tools/thinking/breakDownProblem.js.map +1 -0
  210. package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
  211. package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
  212. package/dist/tools/thinking/createThinkingChain.js +44 -0
  213. package/dist/tools/thinking/createThinkingChain.js.map +1 -0
  214. package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
  215. package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
  216. package/dist/tools/thinking/formatAsPlan.js +78 -0
  217. package/dist/tools/thinking/formatAsPlan.js.map +1 -0
  218. package/dist/tools/thinking/index.d.ts +10 -0
  219. package/dist/tools/thinking/index.d.ts.map +1 -0
  220. package/dist/tools/thinking/index.js +10 -0
  221. package/dist/tools/thinking/index.js.map +1 -0
  222. package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
  223. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
  224. package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
  225. package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
  226. package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
  227. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
  228. package/dist/tools/thinking/thinkAloudProcess.js +80 -0
  229. package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
  230. package/hooks/hooks.json +115 -115
  231. package/hooks/scripts/code-check.js +70 -70
  232. package/hooks/scripts/code-review.js +22 -22
  233. package/hooks/scripts/complexity.js +22 -22
  234. package/hooks/scripts/compound.js +23 -23
  235. package/hooks/scripts/context-save.js +53 -53
  236. package/hooks/scripts/gemini-ui-gen.js +281 -281
  237. package/hooks/scripts/generate-brand-assets.js +474 -474
  238. package/hooks/scripts/hud-multiline.js +262 -262
  239. package/hooks/scripts/hud-status.js +291 -291
  240. package/hooks/scripts/keyword-detector.js +214 -214
  241. package/hooks/scripts/llm-orchestrate.js +171 -171
  242. package/hooks/scripts/post-edit.js +97 -97
  243. package/hooks/scripts/post-tool-verify.js +210 -210
  244. package/hooks/scripts/pre-tool-guard.js +125 -125
  245. package/hooks/scripts/prompt-dispatcher.js +161 -161
  246. package/hooks/scripts/recall.js +22 -22
  247. package/hooks/scripts/session-start.js +30 -30
  248. package/hooks/scripts/skill-injector.js +191 -191
  249. package/hooks/scripts/utils.js +97 -97
  250. package/languages/csharp-unity.md +515 -515
  251. package/languages/gdscript-godot.md +470 -470
  252. package/languages/ruby-rails.md +489 -489
  253. package/languages/typescript-angular.md +433 -433
  254. package/languages/typescript-astro.md +416 -416
  255. package/languages/typescript-electron.md +406 -406
  256. package/languages/typescript-nestjs.md +524 -524
  257. package/languages/typescript-svelte.md +407 -407
  258. package/languages/typescript-tauri.md +365 -365
  259. package/package.json +84 -84
  260. package/skills/brand-assets.md +141 -141
  261. package/skills/commerce-patterns.md +361 -361
  262. package/skills/context7-usage.md +102 -102
  263. package/skills/e2e-commerce.md +304 -304
  264. package/skills/frontend-design.md +92 -92
  265. package/skills/git-worktree.md +181 -181
  266. package/skills/parallel-research.md +77 -77
  267. package/skills/priority-todos.md +239 -239
  268. package/skills/seo-checklist.md +244 -244
  269. package/skills/tool-fallback.md +190 -190
  270. package/skills/vibe-capabilities.md +161 -161
  271. package/vibe/constitution.md +227 -227
  272. package/vibe/rules/core/communication-guide.md +98 -98
  273. package/vibe/rules/core/development-philosophy.md +52 -52
  274. package/vibe/rules/core/quick-start.md +102 -102
  275. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  276. package/vibe/rules/quality/checklist.md +276 -276
  277. package/vibe/rules/quality/testing-strategy.md +440 -440
  278. package/vibe/rules/standards/anti-patterns.md +541 -541
  279. package/vibe/rules/standards/code-structure.md +291 -291
  280. package/vibe/rules/standards/complexity-metrics.md +313 -313
  281. package/vibe/rules/standards/naming-conventions.md +198 -198
  282. package/vibe/setup.sh +31 -31
  283. package/vibe/templates/constitution-template.md +252 -252
  284. package/vibe/templates/contract-backend-template.md +526 -526
  285. package/vibe/templates/contract-frontend-template.md +599 -599
  286. package/vibe/templates/feature-template.md +96 -96
  287. 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
+ ```