@su-record/vibe 2.6.17 → 2.6.18

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 (238) hide show
  1. package/CLAUDE.md +681 -681
  2. package/LICENSE +21 -21
  3. package/README.md +235 -239
  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/e2e-tester.md +266 -266
  11. package/agents/explorer-low.md +42 -42
  12. package/agents/explorer-medium.md +59 -59
  13. package/agents/explorer.md +48 -48
  14. package/agents/implementer-low.md +43 -43
  15. package/agents/implementer-medium.md +52 -52
  16. package/agents/implementer.md +54 -54
  17. package/agents/refactor-cleaner.md +143 -143
  18. package/agents/research/best-practices-agent.md +199 -199
  19. package/agents/research/codebase-patterns-agent.md +157 -157
  20. package/agents/research/framework-docs-agent.md +188 -188
  21. package/agents/research/security-advisory-agent.md +213 -213
  22. package/agents/review/architecture-reviewer.md +107 -107
  23. package/agents/review/complexity-reviewer.md +116 -116
  24. package/agents/review/data-integrity-reviewer.md +88 -88
  25. package/agents/review/git-history-reviewer.md +103 -103
  26. package/agents/review/performance-reviewer.md +86 -86
  27. package/agents/review/python-reviewer.md +150 -150
  28. package/agents/review/rails-reviewer.md +139 -139
  29. package/agents/review/react-reviewer.md +144 -144
  30. package/agents/review/security-reviewer.md +80 -80
  31. package/agents/review/simplicity-reviewer.md +140 -140
  32. package/agents/review/test-coverage-reviewer.md +116 -116
  33. package/agents/review/typescript-reviewer.md +127 -127
  34. package/agents/searcher.md +54 -54
  35. package/agents/simplifier.md +120 -120
  36. package/agents/tester.md +49 -49
  37. package/agents/ui-previewer.md +268 -268
  38. package/commands/vibe.analyze.md +356 -356
  39. package/commands/vibe.reason.md +329 -329
  40. package/commands/vibe.review.md +412 -412
  41. package/commands/vibe.run.md +1266 -1266
  42. package/commands/vibe.spec.md +1054 -1054
  43. package/commands/vibe.spec.review.md +319 -319
  44. package/commands/vibe.trace.md +161 -161
  45. package/commands/vibe.utils.md +376 -376
  46. package/commands/vibe.verify.md +375 -375
  47. package/dist/cli/collaborator.js +52 -52
  48. package/dist/cli/detect.js +32 -32
  49. package/dist/cli/hud.js +20 -20
  50. package/dist/cli/index.d.ts.map +1 -1
  51. package/dist/cli/index.js +120 -118
  52. package/dist/cli/index.js.map +1 -1
  53. package/dist/cli/llm.js +144 -144
  54. package/dist/cli/postinstall.d.ts +1 -0
  55. package/dist/cli/postinstall.d.ts.map +1 -1
  56. package/dist/cli/postinstall.js +859 -859
  57. package/dist/cli/postinstall.js.map +1 -1
  58. package/dist/cli/setup/ProjectSetup.d.ts +2 -2
  59. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  60. package/dist/cli/setup/ProjectSetup.js +51 -17
  61. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  62. package/dist/lib/DeepInit.js +24 -24
  63. package/dist/lib/IterationTracker.js +11 -11
  64. package/dist/lib/PythonParser.js +108 -108
  65. package/dist/lib/ReviewRace.js +96 -96
  66. package/dist/lib/SkillFrontmatter.js +28 -28
  67. package/dist/lib/SkillQualityGate.js +9 -9
  68. package/dist/lib/SkillRepository.js +159 -159
  69. package/dist/lib/UltraQA.js +77 -77
  70. package/dist/lib/gemini-api.js +5 -5
  71. package/dist/lib/gpt-api.js +4 -4
  72. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  73. package/dist/lib/memory/MemorySearch.js +20 -20
  74. package/dist/lib/memory/MemoryStorage.js +64 -64
  75. package/dist/orchestrator/AgentManager.js +12 -12
  76. package/dist/orchestrator/MultiLlmResearch.js +8 -8
  77. package/dist/orchestrator/SmartRouter.js +11 -11
  78. package/dist/orchestrator/SwarmOrchestrator.test.js +16 -16
  79. package/dist/orchestrator/parallelResearch.js +24 -24
  80. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  81. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  82. package/dist/tools/spec/prdParser.test.js +171 -171
  83. package/dist/tools/spec/specGenerator.js +169 -169
  84. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  85. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  86. package/hooks/hooks.json +222 -222
  87. package/hooks/scripts/code-check.js +22 -22
  88. package/hooks/scripts/code-review.js +22 -22
  89. package/hooks/scripts/complexity.js +22 -22
  90. package/hooks/scripts/compound.js +23 -23
  91. package/hooks/scripts/context-save.js +33 -33
  92. package/hooks/scripts/gemini-ui-gen.js +281 -281
  93. package/hooks/scripts/generate-brand-assets.js +474 -474
  94. package/hooks/scripts/hud-multiline.js +262 -262
  95. package/hooks/scripts/hud-status.js +291 -291
  96. package/hooks/scripts/keyword-detector.js +214 -214
  97. package/hooks/scripts/llm-orchestrate.js +171 -171
  98. package/hooks/scripts/post-edit.js +97 -97
  99. package/hooks/scripts/post-tool-verify.js +210 -210
  100. package/hooks/scripts/pre-tool-guard.js +125 -125
  101. package/hooks/scripts/recall.js +22 -22
  102. package/hooks/scripts/session-start.js +30 -30
  103. package/hooks/scripts/skill-injector.js +191 -191
  104. package/hooks/scripts/utils.js +97 -97
  105. package/languages/csharp-unity.md +515 -515
  106. package/languages/gdscript-godot.md +470 -470
  107. package/languages/ruby-rails.md +489 -489
  108. package/languages/typescript-angular.md +433 -433
  109. package/languages/typescript-astro.md +416 -416
  110. package/languages/typescript-electron.md +406 -406
  111. package/languages/typescript-nestjs.md +524 -524
  112. package/languages/typescript-svelte.md +407 -407
  113. package/languages/typescript-tauri.md +365 -365
  114. package/package.json +84 -84
  115. package/skills/brand-assets.md +141 -141
  116. package/skills/commerce-patterns.md +361 -361
  117. package/skills/context7-usage.md +102 -102
  118. package/skills/e2e-commerce.md +304 -304
  119. package/skills/frontend-design.md +92 -92
  120. package/skills/git-worktree.md +181 -181
  121. package/skills/parallel-research.md +77 -77
  122. package/skills/priority-todos.md +239 -239
  123. package/skills/seo-checklist.md +244 -244
  124. package/skills/tool-fallback.md +190 -190
  125. package/skills/vibe-capabilities.md +161 -161
  126. package/vibe/constitution.md +227 -227
  127. package/vibe/rules/core/communication-guide.md +98 -98
  128. package/vibe/rules/core/development-philosophy.md +52 -52
  129. package/vibe/rules/core/quick-start.md +102 -102
  130. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  131. package/vibe/rules/quality/checklist.md +276 -276
  132. package/vibe/rules/quality/testing-strategy.md +440 -440
  133. package/vibe/rules/standards/anti-patterns.md +541 -541
  134. package/vibe/rules/standards/code-structure.md +291 -291
  135. package/vibe/rules/standards/complexity-metrics.md +313 -313
  136. package/vibe/rules/standards/naming-conventions.md +198 -198
  137. package/vibe/setup.sh +31 -31
  138. package/vibe/templates/constitution-template.md +252 -252
  139. package/vibe/templates/contract-backend-template.md +526 -526
  140. package/vibe/templates/contract-frontend-template.md +599 -599
  141. package/vibe/templates/feature-template.md +96 -96
  142. package/vibe/templates/spec-template.md +221 -221
  143. package/dist/cli/mcp.d.ts +0 -49
  144. package/dist/cli/mcp.d.ts.map +0 -1
  145. package/dist/cli/mcp.js +0 -169
  146. package/dist/cli/mcp.js.map +0 -1
  147. package/dist/lib/gemini-mcp.d.ts +0 -10
  148. package/dist/lib/gemini-mcp.d.ts.map +0 -1
  149. package/dist/lib/gemini-mcp.js +0 -353
  150. package/dist/lib/gemini-mcp.js.map +0 -1
  151. package/dist/lib/gpt-mcp.d.ts +0 -10
  152. package/dist/lib/gpt-mcp.d.ts.map +0 -1
  153. package/dist/lib/gpt-mcp.js +0 -352
  154. package/dist/lib/gpt-mcp.js.map +0 -1
  155. package/dist/tools/analytics/getUsageAnalytics.d.ts +0 -10
  156. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +0 -1
  157. package/dist/tools/analytics/getUsageAnalytics.js +0 -246
  158. package/dist/tools/analytics/getUsageAnalytics.js.map +0 -1
  159. package/dist/tools/analytics/index.d.ts +0 -5
  160. package/dist/tools/analytics/index.d.ts.map +0 -1
  161. package/dist/tools/analytics/index.js +0 -5
  162. package/dist/tools/analytics/index.js.map +0 -1
  163. package/dist/tools/convention/getCodingGuide.d.ts +0 -7
  164. package/dist/tools/convention/getCodingGuide.d.ts.map +0 -1
  165. package/dist/tools/convention/getCodingGuide.js +0 -69
  166. package/dist/tools/convention/getCodingGuide.js.map +0 -1
  167. package/dist/tools/planning/analyzeRequirements.d.ts +0 -9
  168. package/dist/tools/planning/analyzeRequirements.d.ts.map +0 -1
  169. package/dist/tools/planning/analyzeRequirements.js +0 -171
  170. package/dist/tools/planning/analyzeRequirements.js.map +0 -1
  171. package/dist/tools/planning/createUserStories.d.ts +0 -9
  172. package/dist/tools/planning/createUserStories.d.ts.map +0 -1
  173. package/dist/tools/planning/createUserStories.js +0 -124
  174. package/dist/tools/planning/createUserStories.js.map +0 -1
  175. package/dist/tools/planning/featureRoadmap.d.ts +0 -10
  176. package/dist/tools/planning/featureRoadmap.d.ts.map +0 -1
  177. package/dist/tools/planning/featureRoadmap.js +0 -207
  178. package/dist/tools/planning/featureRoadmap.js.map +0 -1
  179. package/dist/tools/planning/generatePrd.d.ts +0 -11
  180. package/dist/tools/planning/generatePrd.d.ts.map +0 -1
  181. package/dist/tools/planning/generatePrd.js +0 -161
  182. package/dist/tools/planning/generatePrd.js.map +0 -1
  183. package/dist/tools/planning/index.d.ts +0 -8
  184. package/dist/tools/planning/index.d.ts.map +0 -1
  185. package/dist/tools/planning/index.js +0 -8
  186. package/dist/tools/planning/index.js.map +0 -1
  187. package/dist/tools/prompt/analyzePrompt.d.ts +0 -7
  188. package/dist/tools/prompt/analyzePrompt.d.ts.map +0 -1
  189. package/dist/tools/prompt/analyzePrompt.js +0 -150
  190. package/dist/tools/prompt/analyzePrompt.js.map +0 -1
  191. package/dist/tools/prompt/enhancePrompt.d.ts +0 -8
  192. package/dist/tools/prompt/enhancePrompt.d.ts.map +0 -1
  193. package/dist/tools/prompt/enhancePrompt.js +0 -110
  194. package/dist/tools/prompt/enhancePrompt.js.map +0 -1
  195. package/dist/tools/prompt/enhancePromptGemini.d.ts +0 -8
  196. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +0 -1
  197. package/dist/tools/prompt/enhancePromptGemini.js +0 -332
  198. package/dist/tools/prompt/enhancePromptGemini.js.map +0 -1
  199. package/dist/tools/prompt/index.d.ts +0 -7
  200. package/dist/tools/prompt/index.d.ts.map +0 -1
  201. package/dist/tools/prompt/index.js +0 -7
  202. package/dist/tools/prompt/index.js.map +0 -1
  203. package/dist/tools/reasoning/applyReasoningFramework.d.ts +0 -8
  204. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +0 -1
  205. package/dist/tools/reasoning/applyReasoningFramework.js +0 -266
  206. package/dist/tools/reasoning/applyReasoningFramework.js.map +0 -1
  207. package/dist/tools/reasoning/index.d.ts +0 -5
  208. package/dist/tools/reasoning/index.d.ts.map +0 -1
  209. package/dist/tools/reasoning/index.js +0 -5
  210. package/dist/tools/reasoning/index.js.map +0 -1
  211. package/dist/tools/thinking/analyzeProblem.d.ts +0 -7
  212. package/dist/tools/thinking/analyzeProblem.d.ts.map +0 -1
  213. package/dist/tools/thinking/analyzeProblem.js +0 -55
  214. package/dist/tools/thinking/analyzeProblem.js.map +0 -1
  215. package/dist/tools/thinking/breakDownProblem.d.ts +0 -8
  216. package/dist/tools/thinking/breakDownProblem.d.ts.map +0 -1
  217. package/dist/tools/thinking/breakDownProblem.js +0 -145
  218. package/dist/tools/thinking/breakDownProblem.js.map +0 -1
  219. package/dist/tools/thinking/createThinkingChain.d.ts +0 -7
  220. package/dist/tools/thinking/createThinkingChain.d.ts.map +0 -1
  221. package/dist/tools/thinking/createThinkingChain.js +0 -44
  222. package/dist/tools/thinking/createThinkingChain.js.map +0 -1
  223. package/dist/tools/thinking/formatAsPlan.d.ts +0 -9
  224. package/dist/tools/thinking/formatAsPlan.d.ts.map +0 -1
  225. package/dist/tools/thinking/formatAsPlan.js +0 -78
  226. package/dist/tools/thinking/formatAsPlan.js.map +0 -1
  227. package/dist/tools/thinking/index.d.ts +0 -10
  228. package/dist/tools/thinking/index.d.ts.map +0 -1
  229. package/dist/tools/thinking/index.js +0 -10
  230. package/dist/tools/thinking/index.js.map +0 -1
  231. package/dist/tools/thinking/stepByStepAnalysis.d.ts +0 -8
  232. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +0 -1
  233. package/dist/tools/thinking/stepByStepAnalysis.js +0 -63
  234. package/dist/tools/thinking/stepByStepAnalysis.js.map +0 -1
  235. package/dist/tools/thinking/thinkAloudProcess.d.ts +0 -8
  236. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +0 -1
  237. package/dist/tools/thinking/thinkAloudProcess.js +0 -80
  238. package/dist/tools/thinking/thinkAloudProcess.js.map +0 -1
@@ -1,319 +1,319 @@
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}.spec.md`
17
- - Feature file exists: `.claude/vibe/features/{feature-name}.feature`
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
- Read the existing SPEC and Feature files:
38
-
39
- ```
40
- .claude/vibe/specs/{feature-name}.spec.md
41
- .claude/vibe/features/{feature-name}.feature
42
- ```
43
-
44
- **Output:**
45
- ```
46
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
47
- 📋 SPEC REVIEW: {feature-name}
48
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
49
-
50
- Loading files...
51
- ✅ SPEC: .claude/vibe/specs/{feature-name}.spec.md
52
- ✅ Feature: .claude/vibe/features/{feature-name}.feature
53
-
54
- Extracted info:
55
- - Feature: {feature description}
56
- - Stack: {tech stack}
57
- - Phases: {number of phases}
58
- - Scenarios: {number of scenarios}
59
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
60
- ```
61
-
62
- ---
63
-
64
- ## Step 2: Quality Validation (95-Point Gate)
65
-
66
- **🚨 MANDATORY: Score must be ≥ 95 to proceed**
67
-
68
- ### 2.1 Quality Checklist
69
-
70
- | Category | Check Item | Weight |
71
- |----------|------------|--------|
72
- | **Completeness** | All user flows included in Task | 15% |
73
- | **Completeness** | All ACs converted to Feature scenarios | 10% |
74
- | **Completeness** | Error handling scenarios defined | 10% |
75
- | **Specificity** | All numbers specified (timeout, limits, etc.) | 15% |
76
- | **Specificity** | No ambiguous terms ("appropriate", "proper", etc.) | 10% |
77
- | **Testability** | Each AC is verifiable | 10% |
78
- | **Testability** | Feature scenarios have concrete Given/When/Then | 10% |
79
- | **Security** | Auth/permission requirements specified | 10% |
80
- | **Performance** | Response time/load requirements specified | 10% |
81
-
82
- ### 2.2 Quality Gate Loop
83
-
84
- ```python
85
- max_iterations = 3
86
- iteration = 0
87
-
88
- while iteration < max_iterations:
89
- iteration += 1
90
- score = calculate_quality_score(spec, feature)
91
-
92
- print(f"━━━ Quality Check [{iteration}/{max_iterations}] ━━━")
93
- print(f"Score: {score}/100")
94
-
95
- if score >= 95:
96
- print("✅ Quality Gate PASSED")
97
- break
98
-
99
- # Auto-fix missing items
100
- missing_items = identify_missing_items(spec)
101
- for item in missing_items:
102
- auto_fix(item)
103
- update_spec()
104
- update_feature()
105
-
106
- print(f"✅ Applied {len(missing_items)} fixes - Re-evaluating...")
107
-
108
- if score < 95:
109
- print(f"❌ BLOCKED: Score {score} < 95 after {max_iterations} iterations")
110
- print("Manual intervention required.")
111
- ```
112
-
113
- **Output format:**
114
- ```
115
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
116
- 📊 QUALITY GATE [1/3]
117
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
118
- Score: 87/100 ⚠️ BELOW THRESHOLD (95)
119
-
120
- Missing items:
121
- ❌ Error handling scenarios (10%)
122
- ❌ Performance targets (5%)
123
-
124
- Auto-fixing...
125
- ✅ Added network error handling scenario
126
- ✅ Added response time targets (<500ms)
127
-
128
- Re-evaluating...
129
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
130
-
131
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
132
- 📊 QUALITY GATE [2/3]
133
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
134
- Score: 96/100 ✅ PASSED
135
-
136
- ✅ Quality Gate PASSED - proceeding to GPT/Gemini review
137
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
138
- ```
139
-
140
- ### 2.3 Auto-Fix Rules
141
-
142
- | Missing Item | Auto-Fix Method |
143
- |--------------|-----------------|
144
- | Missing AC | Auto-generate AC based on Task |
145
- | Numbers not specified | Apply project defaults (timeout 30s, etc.) |
146
- | Missing error handling | Add common error scenarios |
147
- | Missing performance targets | Apply industry standard criteria |
148
- | Missing security | Add auth/data protection requirements |
149
- | Ambiguous terms | Replace with specific values |
150
-
151
- ---
152
-
153
- ## Step 3: Race Review (GPT + Gemini Cross-Validation) - 3 Rounds (v2.6.9)
154
-
155
- **🚨 CRITICAL: Execute ALL 3 rounds with cross-validation. DO NOT skip.**
156
-
157
- > Race Mode reviews SPEC with both GPT and Gemini in parallel, then cross-validates findings for higher confidence.
158
-
159
- ### 3.1 Race Review Invocation
160
-
161
- ```bash
162
- # Via vibe tools (recommended)
163
- node -e "import('@su-record/vibe/tools').then(t => t.raceReview({reviewType: 'general', code: '[SPEC content]', context: 'SPEC review round N/3'}).then(r => console.log(t.formatRaceResult(r))))"
164
- ```
165
-
166
- ### 3.2 Review Loop (3 Rounds with Cross-Validation)
167
-
168
- For each round (1 to 3):
169
-
170
- **Run GPT and Gemini in PARALLEL with cross-validation:**
171
-
172
- ```javascript
173
- // Race review - both models run simultaneously
174
- import('@su-record/vibe/tools').then(async t => {
175
- const result = await t.raceReview({
176
- reviewType: 'general',
177
- code: specContent,
178
- context: `SPEC review for ${featureName}. Stack: ${stack}. Round ${N}/3.`
179
- });
180
- console.log(t.formatRaceResult(result));
181
- });
182
- ```
183
-
184
- **Cross-validation rules:**
185
-
186
- | Agreement | Priority | Action |
187
- |-----------|----------|--------|
188
- | Both agree (100%) | P1 | Auto-apply immediately |
189
- | One model (50%) | P2 | Auto-apply with note |
190
-
191
- **After each round:**
192
-
193
- 1. Cross-validate findings (issues found by both → P1, single model → P2)
194
- 2. Merge feedback with confidence scores
195
- 3. Auto-apply P1/P2 improvements to SPEC and Feature files
196
- 4. Continue to next round
197
-
198
- **Output format:**
199
- ```
200
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
201
- 🏁 SPEC RACE REVIEW - Round 1/3
202
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
203
-
204
- Model Results:
205
- | Model | Issues | Duration |
206
- |--------|--------|----------|
207
- | GPT | 2 | 1823ms |
208
- | Gemini | 2 | 2156ms |
209
-
210
- Cross-Validated Issues:
211
- | Issue | GPT | Gemini | Confidence |
212
- |--------------------------|-----|--------|------------|
213
- | Missing retry logic | ✅ | ✅ | 100% → P1 |
214
- | Missing rate limiting | ✅ | ✅ | 100% → P1 |
215
- | Token refresh unclear | ✅ | ❌ | 50% → P2 |
216
-
217
- Auto-applying...
218
- ✅ [P1] Added retry logic (3 attempts, exponential backoff)
219
- ✅ [P1] Added rate limiting (100 req/min)
220
- ✅ [P2] Added token refresh flow
221
-
222
- ✅ Round 1 complete - 3 improvements (2 P1, 1 P2)
223
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
224
-
225
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
226
- 🏁 SPEC RACE REVIEW - Round 2/3
227
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
228
-
229
- Cross-Validated Issues:
230
- | Issue | GPT | Gemini | Confidence |
231
- |-----------------------------|-----|--------|------------|
232
- | Concurrent session unclear | ✅ | ❌ | 50% → P2 |
233
-
234
- Auto-applying...
235
- ✅ [P2] Added concurrent session policy
236
-
237
- ✅ Round 2 complete - 1 improvement
238
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
239
-
240
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
241
- 🏁 SPEC RACE REVIEW - Round 3/3
242
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
243
-
244
- Cross-Validated Issues: None
245
-
246
- ✅ No changes needed - SPEC is complete
247
- ✅ Consensus Rate: 100%
248
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
249
- ```
250
-
251
- ---
252
-
253
- ## Step 4: Final Summary
254
-
255
- ```
256
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
257
- ✅ SPEC REVIEW COMPLETE: {feature-name}
258
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
259
-
260
- Quality Score: 96/100 ✅
261
- Review Rounds: 3/3 ✅
262
- Total Improvements: 4
263
-
264
- Updated files:
265
- 📋 .claude/vibe/specs/{feature-name}.spec.md
266
- 📋 .claude/vibe/features/{feature-name}.feature
267
-
268
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
269
-
270
- ## Next Step
271
-
272
- /vibe.run "{feature-name}"
273
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
274
- ```
275
-
276
- ---
277
-
278
- ## Error Handling
279
-
280
- ### SPEC Not Found
281
- ```
282
- ❌ ERROR: SPEC file not found
283
-
284
- Expected: .claude/vibe/specs/{feature-name}.spec.md
285
-
286
- Please run /vibe.spec "{feature-name}" first to create the SPEC.
287
- ```
288
-
289
- ### Feature Not Found
290
- ```
291
- ❌ ERROR: Feature file not found
292
-
293
- Expected: .claude/vibe/features/{feature-name}.feature
294
-
295
- Please run /vibe.spec "{feature-name}" first to create the Feature file.
296
- ```
297
-
298
- ### GPT/Gemini Call Failed
299
- ```
300
- ⚠️ WARNING: {GPT|Gemini} call failed
301
-
302
- Error: {error message}
303
-
304
- Continuing with {other model} results only...
305
- ```
306
-
307
- ---
308
-
309
- ## Quick Mode
310
-
311
- For faster iteration (1 round only):
312
-
313
- ```bash
314
- /vibe.spec.review "feature-name" --quick
315
- ```
316
-
317
- ---
318
-
319
- ARGUMENTS: $ARGUMENTS
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}.spec.md`
17
+ - Feature file exists: `.claude/vibe/features/{feature-name}.feature`
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
+ Read the existing SPEC and Feature files:
38
+
39
+ ```
40
+ .claude/vibe/specs/{feature-name}.spec.md
41
+ .claude/vibe/features/{feature-name}.feature
42
+ ```
43
+
44
+ **Output:**
45
+ ```
46
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
47
+ 📋 SPEC REVIEW: {feature-name}
48
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
49
+
50
+ Loading files...
51
+ ✅ SPEC: .claude/vibe/specs/{feature-name}.spec.md
52
+ ✅ Feature: .claude/vibe/features/{feature-name}.feature
53
+
54
+ Extracted info:
55
+ - Feature: {feature description}
56
+ - Stack: {tech stack}
57
+ - Phases: {number of phases}
58
+ - Scenarios: {number of scenarios}
59
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
60
+ ```
61
+
62
+ ---
63
+
64
+ ## Step 2: Quality Validation (95-Point Gate)
65
+
66
+ **🚨 MANDATORY: Score must be ≥ 95 to proceed**
67
+
68
+ ### 2.1 Quality Checklist
69
+
70
+ | Category | Check Item | Weight |
71
+ |----------|------------|--------|
72
+ | **Completeness** | All user flows included in Task | 15% |
73
+ | **Completeness** | All ACs converted to Feature scenarios | 10% |
74
+ | **Completeness** | Error handling scenarios defined | 10% |
75
+ | **Specificity** | All numbers specified (timeout, limits, etc.) | 15% |
76
+ | **Specificity** | No ambiguous terms ("appropriate", "proper", etc.) | 10% |
77
+ | **Testability** | Each AC is verifiable | 10% |
78
+ | **Testability** | Feature scenarios have concrete Given/When/Then | 10% |
79
+ | **Security** | Auth/permission requirements specified | 10% |
80
+ | **Performance** | Response time/load requirements specified | 10% |
81
+
82
+ ### 2.2 Quality Gate Loop
83
+
84
+ ```python
85
+ max_iterations = 3
86
+ iteration = 0
87
+
88
+ while iteration < max_iterations:
89
+ iteration += 1
90
+ score = calculate_quality_score(spec, feature)
91
+
92
+ print(f"━━━ Quality Check [{iteration}/{max_iterations}] ━━━")
93
+ print(f"Score: {score}/100")
94
+
95
+ if score >= 95:
96
+ print("✅ Quality Gate PASSED")
97
+ break
98
+
99
+ # Auto-fix missing items
100
+ missing_items = identify_missing_items(spec)
101
+ for item in missing_items:
102
+ auto_fix(item)
103
+ update_spec()
104
+ update_feature()
105
+
106
+ print(f"✅ Applied {len(missing_items)} fixes - Re-evaluating...")
107
+
108
+ if score < 95:
109
+ print(f"❌ BLOCKED: Score {score} < 95 after {max_iterations} iterations")
110
+ print("Manual intervention required.")
111
+ ```
112
+
113
+ **Output format:**
114
+ ```
115
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
116
+ 📊 QUALITY GATE [1/3]
117
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
118
+ Score: 87/100 ⚠️ BELOW THRESHOLD (95)
119
+
120
+ Missing items:
121
+ ❌ Error handling scenarios (10%)
122
+ ❌ Performance targets (5%)
123
+
124
+ Auto-fixing...
125
+ ✅ Added network error handling scenario
126
+ ✅ Added response time targets (<500ms)
127
+
128
+ Re-evaluating...
129
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
130
+
131
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
132
+ 📊 QUALITY GATE [2/3]
133
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
134
+ Score: 96/100 ✅ PASSED
135
+
136
+ ✅ Quality Gate PASSED - proceeding to GPT/Gemini review
137
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
138
+ ```
139
+
140
+ ### 2.3 Auto-Fix Rules
141
+
142
+ | Missing Item | Auto-Fix Method |
143
+ |--------------|-----------------|
144
+ | Missing AC | Auto-generate AC based on Task |
145
+ | Numbers not specified | Apply project defaults (timeout 30s, etc.) |
146
+ | Missing error handling | Add common error scenarios |
147
+ | Missing performance targets | Apply industry standard criteria |
148
+ | Missing security | Add auth/data protection requirements |
149
+ | Ambiguous terms | Replace with specific values |
150
+
151
+ ---
152
+
153
+ ## Step 3: Race Review (GPT + Gemini Cross-Validation) - 3 Rounds (v2.6.9)
154
+
155
+ **🚨 CRITICAL: Execute ALL 3 rounds with cross-validation. DO NOT skip.**
156
+
157
+ > Race Mode reviews SPEC with both GPT and Gemini in parallel, then cross-validates findings for higher confidence.
158
+
159
+ ### 3.1 Race Review Invocation
160
+
161
+ ```bash
162
+ # Via vibe tools (recommended)
163
+ node -e "import('@su-record/vibe/tools').then(t => t.raceReview({reviewType: 'general', code: '[SPEC content]', context: 'SPEC review round N/3'}).then(r => console.log(t.formatRaceResult(r))))"
164
+ ```
165
+
166
+ ### 3.2 Review Loop (3 Rounds with Cross-Validation)
167
+
168
+ For each round (1 to 3):
169
+
170
+ **Run GPT and Gemini in PARALLEL with cross-validation:**
171
+
172
+ ```javascript
173
+ // Race review - both models run simultaneously
174
+ import('@su-record/vibe/tools').then(async t => {
175
+ const result = await t.raceReview({
176
+ reviewType: 'general',
177
+ code: specContent,
178
+ context: `SPEC review for ${featureName}. Stack: ${stack}. Round ${N}/3.`
179
+ });
180
+ console.log(t.formatRaceResult(result));
181
+ });
182
+ ```
183
+
184
+ **Cross-validation rules:**
185
+
186
+ | Agreement | Priority | Action |
187
+ |-----------|----------|--------|
188
+ | Both agree (100%) | P1 | Auto-apply immediately |
189
+ | One model (50%) | P2 | Auto-apply with note |
190
+
191
+ **After each round:**
192
+
193
+ 1. Cross-validate findings (issues found by both → P1, single model → P2)
194
+ 2. Merge feedback with confidence scores
195
+ 3. Auto-apply P1/P2 improvements to SPEC and Feature files
196
+ 4. Continue to next round
197
+
198
+ **Output format:**
199
+ ```
200
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
201
+ 🏁 SPEC RACE REVIEW - Round 1/3
202
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
203
+
204
+ Model Results:
205
+ | Model | Issues | Duration |
206
+ |--------|--------|----------|
207
+ | GPT | 2 | 1823ms |
208
+ | Gemini | 2 | 2156ms |
209
+
210
+ Cross-Validated Issues:
211
+ | Issue | GPT | Gemini | Confidence |
212
+ |--------------------------|-----|--------|------------|
213
+ | Missing retry logic | ✅ | ✅ | 100% → P1 |
214
+ | Missing rate limiting | ✅ | ✅ | 100% → P1 |
215
+ | Token refresh unclear | ✅ | ❌ | 50% → P2 |
216
+
217
+ Auto-applying...
218
+ ✅ [P1] Added retry logic (3 attempts, exponential backoff)
219
+ ✅ [P1] Added rate limiting (100 req/min)
220
+ ✅ [P2] Added token refresh flow
221
+
222
+ ✅ Round 1 complete - 3 improvements (2 P1, 1 P2)
223
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
224
+
225
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
226
+ 🏁 SPEC RACE REVIEW - Round 2/3
227
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
228
+
229
+ Cross-Validated Issues:
230
+ | Issue | GPT | Gemini | Confidence |
231
+ |-----------------------------|-----|--------|------------|
232
+ | Concurrent session unclear | ✅ | ❌ | 50% → P2 |
233
+
234
+ Auto-applying...
235
+ ✅ [P2] Added concurrent session policy
236
+
237
+ ✅ Round 2 complete - 1 improvement
238
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
239
+
240
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
241
+ 🏁 SPEC RACE REVIEW - Round 3/3
242
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
243
+
244
+ Cross-Validated Issues: None
245
+
246
+ ✅ No changes needed - SPEC is complete
247
+ ✅ Consensus Rate: 100%
248
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
249
+ ```
250
+
251
+ ---
252
+
253
+ ## Step 4: Final Summary
254
+
255
+ ```
256
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
257
+ ✅ SPEC REVIEW COMPLETE: {feature-name}
258
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
259
+
260
+ Quality Score: 96/100 ✅
261
+ Review Rounds: 3/3 ✅
262
+ Total Improvements: 4
263
+
264
+ Updated files:
265
+ 📋 .claude/vibe/specs/{feature-name}.spec.md
266
+ 📋 .claude/vibe/features/{feature-name}.feature
267
+
268
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
269
+
270
+ ## Next Step
271
+
272
+ /vibe.run "{feature-name}"
273
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Error Handling
279
+
280
+ ### SPEC Not Found
281
+ ```
282
+ ❌ ERROR: SPEC file not found
283
+
284
+ Expected: .claude/vibe/specs/{feature-name}.spec.md
285
+
286
+ Please run /vibe.spec "{feature-name}" first to create the SPEC.
287
+ ```
288
+
289
+ ### Feature Not Found
290
+ ```
291
+ ❌ ERROR: Feature file not found
292
+
293
+ Expected: .claude/vibe/features/{feature-name}.feature
294
+
295
+ Please run /vibe.spec "{feature-name}" first to create the Feature file.
296
+ ```
297
+
298
+ ### GPT/Gemini Call Failed
299
+ ```
300
+ ⚠️ WARNING: {GPT|Gemini} call failed
301
+
302
+ Error: {error message}
303
+
304
+ Continuing with {other model} results only...
305
+ ```
306
+
307
+ ---
308
+
309
+ ## Quick Mode
310
+
311
+ For faster iteration (1 round only):
312
+
313
+ ```bash
314
+ /vibe.spec.review "feature-name" --quick
315
+ ```
316
+
317
+ ---
318
+
319
+ ARGUMENTS: $ARGUMENTS