@su-record/vibe 2.9.24 → 2.9.32

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 (530) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +109 -105
  3. package/LICENSE +21 -21
  4. package/README.en.md +220 -220
  5. package/README.md +171 -171
  6. package/agents/architect-low.md +41 -41
  7. package/agents/architect-medium.md +59 -59
  8. package/agents/architect.md +80 -80
  9. package/agents/build-error-resolver.md +115 -115
  10. package/agents/compounder.md +261 -261
  11. package/agents/diagrammer.md +178 -178
  12. package/agents/docs/api-documenter.md +99 -99
  13. package/agents/docs/changelog-writer.md +93 -93
  14. package/agents/e2e-tester.md +294 -294
  15. package/agents/event/event-comms.md +78 -78
  16. package/agents/event/event-content.md +68 -68
  17. package/agents/event/event-image.md +95 -95
  18. package/agents/event/event-ops.md +84 -84
  19. package/agents/event/event-scheduler.md +69 -69
  20. package/agents/event/event-speaker.md +86 -86
  21. package/agents/explorer-low.md +42 -42
  22. package/agents/explorer-medium.md +59 -59
  23. package/agents/explorer.md +48 -48
  24. package/agents/implementer-low.md +43 -43
  25. package/agents/implementer-medium.md +52 -52
  26. package/agents/implementer.md +54 -54
  27. package/agents/junior-mentor.md +141 -141
  28. package/agents/planning/requirements-analyst.md +84 -84
  29. package/agents/planning/ux-advisor.md +83 -83
  30. package/agents/qa/acceptance-tester.md +86 -86
  31. package/agents/qa/edge-case-finder.md +93 -93
  32. package/agents/qa/qa-coordinator.md +131 -131
  33. package/agents/refactor-cleaner.md +143 -143
  34. package/agents/research/best-practices-agent.md +199 -199
  35. package/agents/research/codebase-patterns-agent.md +157 -157
  36. package/agents/research/framework-docs-agent.md +188 -188
  37. package/agents/research/security-advisory-agent.md +213 -213
  38. package/agents/review/architecture-reviewer.md +107 -107
  39. package/agents/review/complexity-reviewer.md +116 -116
  40. package/agents/review/data-integrity-reviewer.md +88 -88
  41. package/agents/review/git-history-reviewer.md +103 -103
  42. package/agents/review/performance-reviewer.md +86 -86
  43. package/agents/review/python-reviewer.md +150 -150
  44. package/agents/review/rails-reviewer.md +139 -139
  45. package/agents/review/react-reviewer.md +144 -144
  46. package/agents/review/security-reviewer.md +80 -80
  47. package/agents/review/simplicity-reviewer.md +140 -140
  48. package/agents/review/test-coverage-reviewer.md +116 -116
  49. package/agents/review/typescript-reviewer.md +127 -127
  50. package/agents/searcher.md +54 -54
  51. package/agents/simplifier.md +120 -120
  52. package/agents/teams/debug-team.md +70 -70
  53. package/agents/teams/dev-team.md +88 -88
  54. package/agents/teams/docs-team.md +80 -80
  55. package/agents/teams/figma/figma-analyst.md +52 -52
  56. package/agents/teams/figma/figma-architect.md +112 -112
  57. package/agents/teams/figma/figma-auditor.md +82 -82
  58. package/agents/teams/figma/figma-builder.md +100 -100
  59. package/agents/teams/figma-team.md +85 -85
  60. package/agents/teams/fullstack-team.md +83 -83
  61. package/agents/teams/lite-team.md +69 -69
  62. package/agents/teams/migration-team.md +78 -78
  63. package/agents/teams/refactor-team.md +94 -94
  64. package/agents/teams/research-team.md +86 -86
  65. package/agents/teams/review-debate-team.md +125 -125
  66. package/agents/teams/security-team.md +81 -81
  67. package/agents/tester.md +49 -49
  68. package/agents/ui/ui-a11y-auditor.md +93 -93
  69. package/agents/ui/ui-antipattern-detector.md +102 -102
  70. package/agents/ui/ui-dataviz-advisor.md +69 -69
  71. package/agents/ui/ui-design-system-gen.md +57 -57
  72. package/agents/ui/ui-industry-analyzer.md +49 -49
  73. package/agents/ui/ui-layout-architect.md +65 -65
  74. package/agents/ui/ui-stack-implementer.md +68 -68
  75. package/agents/ui/ux-compliance-reviewer.md +81 -81
  76. package/agents/ui-previewer.md +258 -258
  77. package/commands/vibe.analyze.md +533 -533
  78. package/commands/vibe.contract.md +105 -105
  79. package/commands/vibe.docs.md +33 -33
  80. package/commands/vibe.event.md +163 -163
  81. package/commands/vibe.figma.md +600 -584
  82. package/commands/vibe.harness.md +177 -177
  83. package/commands/vibe.regress.md +73 -73
  84. package/commands/vibe.review.md +624 -624
  85. package/commands/vibe.run.md +1946 -1940
  86. package/commands/vibe.scaffold.md +195 -195
  87. package/commands/vibe.spec.md +577 -577
  88. package/commands/vibe.test.md +49 -96
  89. package/commands/vibe.trace.md +276 -276
  90. package/commands/vibe.utils.md +413 -413
  91. package/commands/vibe.verify.md +572 -550
  92. package/dist/cli/auth.d.ts +7 -1
  93. package/dist/cli/auth.d.ts.map +1 -1
  94. package/dist/cli/auth.js +51 -11
  95. package/dist/cli/auth.js.map +1 -1
  96. package/dist/cli/collaborator.d.ts +5 -1
  97. package/dist/cli/collaborator.d.ts.map +1 -1
  98. package/dist/cli/collaborator.js +60 -55
  99. package/dist/cli/collaborator.js.map +1 -1
  100. package/dist/cli/commands/codex-proxy.js +15 -15
  101. package/dist/cli/commands/config.js +9 -9
  102. package/dist/cli/commands/evolution.js +12 -12
  103. package/dist/cli/commands/figma.js +20 -20
  104. package/dist/cli/commands/info.d.ts.map +1 -1
  105. package/dist/cli/commands/info.js +47 -63
  106. package/dist/cli/commands/info.js.map +1 -1
  107. package/dist/cli/commands/init.d.ts +13 -5
  108. package/dist/cli/commands/init.d.ts.map +1 -1
  109. package/dist/cli/commands/init.js +71 -35
  110. package/dist/cli/commands/init.js.map +1 -1
  111. package/dist/cli/commands/remove.d.ts.map +1 -1
  112. package/dist/cli/commands/remove.js +35 -22
  113. package/dist/cli/commands/remove.js.map +1 -1
  114. package/dist/cli/commands/sentinel.js +27 -27
  115. package/dist/cli/commands/skills.js +5 -5
  116. package/dist/cli/commands/slack.js +10 -10
  117. package/dist/cli/commands/stats.js +6 -6
  118. package/dist/cli/commands/telegram.js +12 -12
  119. package/dist/cli/commands/update.d.ts.map +1 -1
  120. package/dist/cli/commands/update.js +10 -6
  121. package/dist/cli/commands/update.js.map +1 -1
  122. package/dist/cli/detect.js +32 -32
  123. package/dist/cli/index.js +37 -35
  124. package/dist/cli/index.js.map +1 -1
  125. package/dist/cli/llm/claude-commands.js +16 -16
  126. package/dist/cli/llm/config.js +18 -18
  127. package/dist/cli/llm/gemini-commands.js +16 -16
  128. package/dist/cli/llm/gpt-commands.js +19 -19
  129. package/dist/cli/llm/help.js +21 -21
  130. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  131. package/dist/cli/postinstall/constants.js +1 -0
  132. package/dist/cli/postinstall/constants.js.map +1 -1
  133. package/dist/cli/postinstall/cursor-agents.js +32 -32
  134. package/dist/cli/postinstall/cursor-rules.js +83 -83
  135. package/dist/cli/postinstall/cursor-skills.js +743 -743
  136. package/dist/cli/postinstall/global-config.d.ts.map +1 -1
  137. package/dist/cli/postinstall/global-config.js +8 -4
  138. package/dist/cli/postinstall/global-config.js.map +1 -1
  139. package/dist/cli/setup/LegacyMigration.d.ts +14 -0
  140. package/dist/cli/setup/LegacyMigration.d.ts.map +1 -1
  141. package/dist/cli/setup/LegacyMigration.js +61 -0
  142. package/dist/cli/setup/LegacyMigration.js.map +1 -1
  143. package/dist/cli/setup/ProjectSetup.d.ts +9 -3
  144. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  145. package/dist/cli/setup/ProjectSetup.js +60 -36
  146. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  147. package/dist/cli/setup/Provisioner.js +44 -44
  148. package/dist/cli/setup/Provisioner.js.map +1 -1
  149. package/dist/cli/setup.d.ts +1 -1
  150. package/dist/cli/setup.d.ts.map +1 -1
  151. package/dist/cli/setup.js +1 -1
  152. package/dist/cli/setup.js.map +1 -1
  153. package/dist/cli/utils/cli-detector.d.ts +9 -6
  154. package/dist/cli/utils/cli-detector.d.ts.map +1 -1
  155. package/dist/cli/utils/cli-detector.js +127 -8
  156. package/dist/cli/utils/cli-detector.js.map +1 -1
  157. package/dist/infra/lib/DeepInit.js +24 -24
  158. package/dist/infra/lib/IterationTracker.js +11 -11
  159. package/dist/infra/lib/PythonParser.js +108 -108
  160. package/dist/infra/lib/ReviewRace.js +96 -96
  161. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  162. package/dist/infra/lib/SkillQualityGate.js +9 -9
  163. package/dist/infra/lib/SkillRepository.js +159 -159
  164. package/dist/infra/lib/UltraQA.js +99 -99
  165. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  166. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  167. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  168. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  169. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  170. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  171. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  172. package/dist/infra/lib/browser/compare.d.ts +27 -0
  173. package/dist/infra/lib/browser/compare.d.ts.map +1 -1
  174. package/dist/infra/lib/browser/compare.js +55 -0
  175. package/dist/infra/lib/browser/compare.js.map +1 -1
  176. package/dist/infra/lib/browser/index.d.ts +2 -1
  177. package/dist/infra/lib/browser/index.d.ts.map +1 -1
  178. package/dist/infra/lib/browser/index.js +1 -1
  179. package/dist/infra/lib/browser/index.js.map +1 -1
  180. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  181. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  182. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  183. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  184. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  185. package/dist/infra/lib/evolution/ParityTester.js +57 -57
  186. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  187. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  188. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  189. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  190. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  191. package/dist/infra/lib/figma/audit.d.ts +37 -0
  192. package/dist/infra/lib/figma/audit.d.ts.map +1 -0
  193. package/dist/infra/lib/figma/audit.js +130 -0
  194. package/dist/infra/lib/figma/audit.js.map +1 -0
  195. package/dist/infra/lib/figma/extract.d.ts +21 -1
  196. package/dist/infra/lib/figma/extract.d.ts.map +1 -1
  197. package/dist/infra/lib/figma/extract.js +84 -12
  198. package/dist/infra/lib/figma/extract.js.map +1 -1
  199. package/dist/infra/lib/figma/index.d.ts +4 -2
  200. package/dist/infra/lib/figma/index.d.ts.map +1 -1
  201. package/dist/infra/lib/figma/index.js +2 -1
  202. package/dist/infra/lib/figma/index.js.map +1 -1
  203. package/dist/infra/lib/figma/types.d.ts +31 -0
  204. package/dist/infra/lib/figma/types.d.ts.map +1 -1
  205. package/dist/infra/lib/gemini/orchestration.js +5 -5
  206. package/dist/infra/lib/gpt/orchestration.js +4 -4
  207. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  208. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  209. package/dist/infra/lib/memory/MemoryStorage.d.ts +5 -0
  210. package/dist/infra/lib/memory/MemoryStorage.d.ts.map +1 -1
  211. package/dist/infra/lib/memory/MemoryStorage.js +202 -183
  212. package/dist/infra/lib/memory/MemoryStorage.js.map +1 -1
  213. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  214. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  215. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  216. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  217. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  218. package/dist/infra/orchestrator/AgentManager.js +12 -12
  219. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  220. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  221. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  222. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  223. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  224. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  225. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  226. package/dist/tools/memory/getMemoryGraph.js +12 -12
  227. package/dist/tools/memory/getSessionContext.js +9 -9
  228. package/dist/tools/memory/linkMemories.js +14 -14
  229. package/dist/tools/memory/listMemories.js +4 -4
  230. package/dist/tools/memory/recallMemory.js +4 -4
  231. package/dist/tools/memory/saveMemory.js +4 -4
  232. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  233. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  234. package/dist/tools/semantic/astGrep.test.js +6 -6
  235. package/dist/tools/spec/prdParser.test.js +171 -171
  236. package/dist/tools/spec/specGenerator.js +169 -169
  237. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  238. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  239. package/hooks/gemini-hooks.json +73 -73
  240. package/hooks/hooks.json +134 -126
  241. package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
  242. package/hooks/scripts/__tests__/pre-tool-guard.test.js +409 -368
  243. package/hooks/scripts/__tests__/sentinel-guard.test.js +208 -208
  244. package/hooks/scripts/auto-commit.js +97 -97
  245. package/hooks/scripts/auto-format.js +64 -64
  246. package/hooks/scripts/auto-test.js +81 -81
  247. package/hooks/scripts/code-check.js +271 -271
  248. package/hooks/scripts/codex-detect.js +46 -46
  249. package/hooks/scripts/codex-review-gate.js +80 -80
  250. package/hooks/scripts/command-log.js +32 -32
  251. package/hooks/scripts/context-save.js +353 -353
  252. package/hooks/scripts/evolution-engine.js +91 -91
  253. package/hooks/scripts/figma-extract.js +768 -635
  254. package/hooks/scripts/figma-guard.js +219 -219
  255. package/hooks/scripts/figma-refine.js +315 -315
  256. package/hooks/scripts/figma-to-scss.js +394 -394
  257. package/hooks/scripts/figma-validate.js +353 -353
  258. package/hooks/scripts/hud-status.js +321 -321
  259. package/hooks/scripts/keyword-detector.js +214 -214
  260. package/hooks/scripts/lib/dispatcher.js +87 -83
  261. package/hooks/scripts/lib/scope-from-spec.js +276 -261
  262. package/hooks/scripts/llm-orchestrate.js +645 -645
  263. package/hooks/scripts/post-edit.js +35 -35
  264. package/hooks/scripts/pr-test-gate.js +52 -52
  265. package/hooks/scripts/pre-tool-guard.js +259 -254
  266. package/hooks/scripts/prompt-dispatcher.js +192 -190
  267. package/hooks/scripts/scope-guard.js +145 -145
  268. package/hooks/scripts/sentinel-guard.js +130 -130
  269. package/hooks/scripts/session-start.js +186 -186
  270. package/hooks/scripts/skill-injector.js +83 -83
  271. package/hooks/scripts/step-counter.js +45 -0
  272. package/hooks/scripts/stop-notify.js +209 -209
  273. package/hooks/scripts/utils.js +315 -257
  274. package/languages/csharp-unity.md +515 -515
  275. package/languages/gdscript-godot.md +470 -470
  276. package/languages/ruby-rails.md +489 -489
  277. package/languages/typescript-angular.md +433 -433
  278. package/languages/typescript-astro.md +416 -416
  279. package/languages/typescript-electron.md +406 -406
  280. package/languages/typescript-nestjs.md +524 -524
  281. package/languages/typescript-svelte.md +407 -407
  282. package/languages/typescript-tauri.md +365 -365
  283. package/package.json +106 -106
  284. package/skills/agents-md/SKILL.md +121 -121
  285. package/skills/agents-md/rubrics/what-to-keep.md +49 -49
  286. package/skills/agents-md/templates/agents-md.md +36 -36
  287. package/skills/arch-guard/SKILL.md +181 -181
  288. package/skills/arch-guard/agents/detector.md +48 -48
  289. package/skills/arch-guard/agents/reporter.md +48 -48
  290. package/skills/arch-guard/agents/rule-generator.md +49 -49
  291. package/skills/arch-guard/agents/violation-checker.md +51 -51
  292. package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
  293. package/skills/arch-guard/frameworks/solid.md +102 -102
  294. package/skills/arch-guard/scripts/check-boundaries.js +90 -90
  295. package/skills/arch-guard/templates/arch-rules.json +47 -47
  296. package/skills/arch-guard/templates/violation-report.md +53 -53
  297. package/skills/brand-assets/SKILL.md +147 -147
  298. package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
  299. package/skills/brand-assets/templates/brand-guide.md +161 -161
  300. package/skills/capability-loop/SKILL.md +272 -272
  301. package/skills/capability-loop/agents/capability-designer.md +61 -61
  302. package/skills/capability-loop/agents/failure-analyst.md +55 -55
  303. package/skills/capability-loop/agents/implementer.md +50 -50
  304. package/skills/capability-loop/agents/tester.md +53 -53
  305. package/skills/capability-loop/templates/capability-spec.md +118 -118
  306. package/skills/capability-loop/templates/failure-analysis.md +118 -118
  307. package/skills/characterization-test/SKILL.md +207 -207
  308. package/skills/characterization-test/agents/behavior-capturer.md +50 -50
  309. package/skills/characterization-test/agents/coverage-checker.md +54 -54
  310. package/skills/characterization-test/agents/reporter.md +50 -50
  311. package/skills/characterization-test/agents/test-writer.md +49 -49
  312. package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
  313. package/skills/characterization-test/templates/test-template.ts +101 -101
  314. package/skills/chub-usage/SKILL.md +139 -139
  315. package/skills/claude-md-guide/SKILL.md +351 -351
  316. package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
  317. package/skills/claude-md-guide/templates/claude-md.md +54 -54
  318. package/skills/commerce-patterns/SKILL.md +64 -64
  319. package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
  320. package/skills/commerce-patterns/templates/product-schema.md +85 -85
  321. package/skills/commit-push-pr/SKILL.md +77 -77
  322. package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
  323. package/skills/commit-push-pr/agents/message-writer.md +50 -50
  324. package/skills/commit-push-pr/agents/pr-writer.md +58 -58
  325. package/skills/commit-push-pr/agents/reviewer.md +52 -52
  326. package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
  327. package/skills/commit-push-pr/templates/pr-body.md +63 -63
  328. package/skills/context7-usage/SKILL.md +106 -106
  329. package/skills/context7-usage/rubrics/when-to-use.md +50 -50
  330. package/skills/create-prd/SKILL.md +90 -90
  331. package/skills/create-prd/agents/edge-case-finder.md +48 -48
  332. package/skills/create-prd/agents/prioritizer.md +60 -60
  333. package/skills/create-prd/agents/requirements-writer.md +48 -48
  334. package/skills/create-prd/agents/researcher.md +55 -55
  335. package/skills/create-prd/agents/reviewer.md +54 -54
  336. package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
  337. package/skills/create-prd/frameworks/rice-scoring.md +97 -97
  338. package/skills/create-prd/orchestrator.md +70 -70
  339. package/skills/create-prd/rubrics/completeness.md +58 -58
  340. package/skills/create-prd/templates/prd.md +139 -139
  341. package/skills/design-audit/SKILL.md +152 -152
  342. package/skills/design-audit/agents/a11y-auditor.md +43 -43
  343. package/skills/design-audit/agents/performance-auditor.md +46 -46
  344. package/skills/design-audit/agents/responsive-auditor.md +46 -46
  345. package/skills/design-audit/agents/scorer.md +47 -47
  346. package/skills/design-audit/agents/slop-detector.md +47 -47
  347. package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
  348. package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
  349. package/skills/design-audit/orchestrator.md +64 -64
  350. package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
  351. package/skills/design-audit/rubrics/scoring.md +63 -63
  352. package/skills/design-audit/templates/report.md +88 -88
  353. package/skills/design-critique/SKILL.md +139 -139
  354. package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
  355. package/skills/design-critique/templates/critique-report.md +86 -86
  356. package/skills/design-distill/SKILL.md +130 -130
  357. package/skills/design-distill/templates/design-system.md +132 -132
  358. package/skills/design-normalize/SKILL.md +133 -133
  359. package/skills/design-normalize/rubrics/token-naming.md +117 -117
  360. package/skills/design-normalize/templates/token-audit.md +89 -89
  361. package/skills/design-polish/SKILL.md +131 -131
  362. package/skills/design-polish/rubrics/polish-checklist.md +68 -68
  363. package/skills/design-polish/templates/polish-report.md +64 -64
  364. package/skills/design-teach/SKILL.md +182 -182
  365. package/skills/design-teach/rubrics/brand-personality.md +73 -73
  366. package/skills/design-teach/templates/design-context.json +36 -36
  367. package/skills/devlog/SKILL.md +143 -143
  368. package/skills/e2e-commerce/SKILL.md +62 -62
  369. package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
  370. package/skills/event-comms/SKILL.md +172 -172
  371. package/skills/event-comms/templates/email-invite.md +99 -99
  372. package/skills/event-comms/templates/sns-post.md +133 -133
  373. package/skills/event-ops/SKILL.md +207 -207
  374. package/skills/event-ops/rubrics/contingency.md +85 -85
  375. package/skills/event-ops/templates/d-day-checklist.md +65 -65
  376. package/skills/event-planning/SKILL.md +144 -144
  377. package/skills/event-planning/rubrics/timeline.md +70 -70
  378. package/skills/event-planning/templates/event-plan.md +91 -91
  379. package/skills/exec-plan/SKILL.md +149 -149
  380. package/skills/exec-plan/agents/decomposer.md +47 -47
  381. package/skills/exec-plan/agents/dependency-mapper.md +44 -44
  382. package/skills/exec-plan/agents/estimator.md +43 -43
  383. package/skills/exec-plan/agents/validator.md +55 -55
  384. package/skills/exec-plan/orchestrator.md +70 -70
  385. package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
  386. package/skills/exec-plan/templates/plan.md +147 -147
  387. package/skills/git-worktree/SKILL.md +73 -73
  388. package/skills/git-worktree/rubrics/when-to-use.md +55 -55
  389. package/skills/handoff/SKILL.md +110 -110
  390. package/skills/handoff/agents/context-summarizer.md +51 -51
  391. package/skills/handoff/agents/document-writer.md +63 -63
  392. package/skills/handoff/agents/state-collector.md +53 -53
  393. package/skills/handoff/agents/verifier.md +48 -48
  394. package/skills/handoff/rubrics/completeness.md +62 -62
  395. package/skills/handoff/templates/handoff.md +107 -107
  396. package/skills/parallel-research/SKILL.md +104 -104
  397. package/skills/parallel-research/agents/best-practices.md +43 -43
  398. package/skills/parallel-research/agents/codebase-patterns.md +46 -46
  399. package/skills/parallel-research/agents/framework-docs.md +45 -45
  400. package/skills/parallel-research/agents/security-advisory.md +46 -46
  401. package/skills/parallel-research/agents/synthesizer.md +57 -57
  402. package/skills/parallel-research/experts/best-practices.md +50 -50
  403. package/skills/parallel-research/experts/codebase-patterns.md +70 -70
  404. package/skills/parallel-research/experts/framework-docs.md +65 -65
  405. package/skills/parallel-research/experts/security-advisory.md +69 -69
  406. package/skills/parallel-research/orchestrator.md +79 -79
  407. package/skills/parallel-research/templates/awesome-list.md +32 -32
  408. package/skills/parallel-research/templates/paper.md +88 -88
  409. package/skills/parallel-research/templates/synthesis.md +101 -101
  410. package/skills/prioritization-frameworks/SKILL.md +87 -87
  411. package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
  412. package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
  413. package/skills/priority-todos/SKILL.md +64 -64
  414. package/skills/priority-todos/rubrics/prioritization.md +70 -70
  415. package/skills/priority-todos/templates/todo-board.md +59 -59
  416. package/skills/seo-checklist/SKILL.md +58 -58
  417. package/skills/seo-checklist/frameworks/structured-data.md +153 -153
  418. package/skills/seo-checklist/rubrics/content-seo.md +42 -42
  419. package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
  420. package/skills/techdebt/SKILL.md +124 -124
  421. package/skills/techdebt/agents/analyzer.md +50 -50
  422. package/skills/techdebt/agents/fixer.md +41 -41
  423. package/skills/techdebt/agents/reviewer.md +47 -47
  424. package/skills/techdebt/agents/scanner.md +44 -44
  425. package/skills/techdebt/orchestrator.md +70 -70
  426. package/skills/techdebt/rubrics/severity.md +51 -51
  427. package/skills/techdebt/scripts/scan.js +90 -90
  428. package/skills/techdebt/templates/report.md +86 -86
  429. package/skills/tool-fallback/SKILL.md +104 -104
  430. package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
  431. package/skills/typescript-advanced-types/SKILL.md +67 -67
  432. package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
  433. package/skills/ui-ux-pro-max/SKILL.md +236 -236
  434. package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
  435. package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
  436. package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
  437. package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
  438. package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
  439. package/skills/ui-ux-pro-max/reference/typography.md +455 -455
  440. package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
  441. package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
  442. package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
  443. package/skills/user-personas/SKILL.md +75 -75
  444. package/skills/user-personas/rubrics/research-methods.md +56 -56
  445. package/skills/user-personas/templates/persona.md +89 -89
  446. package/skills/vercel-react-best-practices/SKILL.md +60 -60
  447. package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
  448. package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
  449. package/skills/vibe-contract/SKILL.md +166 -166
  450. package/skills/vibe-docs/templates/architecture.md +80 -80
  451. package/skills/vibe-docs/templates/readme.md +84 -84
  452. package/skills/vibe-docs/templates/release-notes.md +74 -74
  453. package/skills/vibe-figma/SKILL.md +363 -363
  454. package/skills/vibe-figma/rubrics/extraction-checklist.md +51 -51
  455. package/skills/vibe-figma/templates/component-index.md +126 -126
  456. package/skills/vibe-figma/templates/component-spec.md +168 -168
  457. package/skills/vibe-figma/templates/figma-handoff.md +100 -100
  458. package/skills/vibe-figma/templates/remapped-tree.md +277 -277
  459. package/skills/vibe-figma-convert/SKILL.md +235 -235
  460. package/skills/vibe-figma-convert/rubrics/conversion-rules.md +141 -141
  461. package/skills/vibe-figma-convert/templates/component.md +140 -140
  462. package/skills/vibe-figma-extract/SKILL.md +241 -219
  463. package/skills/vibe-figma-extract/rubrics/image-rules.md +157 -157
  464. package/skills/vibe-interview/SKILL.md +358 -358
  465. package/skills/vibe-interview/checklists/api.md +101 -101
  466. package/skills/vibe-interview/checklists/feature.md +88 -88
  467. package/skills/vibe-interview/checklists/library.md +95 -95
  468. package/skills/vibe-interview/checklists/mobile.md +89 -89
  469. package/skills/vibe-interview/checklists/webapp.md +97 -97
  470. package/skills/vibe-interview/checklists/website.md +99 -99
  471. package/skills/vibe-plan/SKILL.md +254 -254
  472. package/skills/vibe-regress/SKILL.md +174 -174
  473. package/skills/vibe-regress/templates/bug.md +44 -44
  474. package/skills/vibe-regress/templates/test-jest.md +29 -29
  475. package/skills/vibe-regress/templates/test-vitest.md +30 -30
  476. package/skills/vibe-spec/SKILL.md +1195 -1195
  477. package/skills/vibe-spec-review/SKILL.md +726 -726
  478. package/skills/vibe-test/SKILL.md +140 -247
  479. package/skills/video-production/SKILL.md +52 -52
  480. package/skills/video-production/rubrics/quality-checklist.md +58 -58
  481. package/skills/video-production/templates/production-plan.md +104 -104
  482. package/vibe/config.json +29 -29
  483. package/vibe/constitution.md +227 -227
  484. package/vibe/rules/principles/communication-guide.md +98 -98
  485. package/vibe/rules/principles/development-philosophy.md +52 -52
  486. package/vibe/rules/principles/quick-start.md +102 -102
  487. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  488. package/vibe/rules/quality/checklist.md +276 -276
  489. package/vibe/rules/quality/performance.md +236 -236
  490. package/vibe/rules/quality/testing-strategy.md +440 -440
  491. package/vibe/rules/standards/anti-patterns.md +541 -541
  492. package/vibe/rules/standards/code-structure.md +291 -291
  493. package/vibe/rules/standards/complexity-metrics.md +313 -313
  494. package/vibe/rules/standards/git-workflow.md +237 -237
  495. package/vibe/rules/standards/naming-conventions.md +198 -198
  496. package/vibe/rules/standards/security.md +305 -305
  497. package/vibe/rules/writing/document-style.md +74 -74
  498. package/vibe/setup.sh +31 -31
  499. package/vibe/templates/claudemd-template.md +74 -74
  500. package/vibe/templates/constitution-template.md +267 -267
  501. package/vibe/templates/contract-backend-template.md +526 -526
  502. package/vibe/templates/contract-frontend-template.md +599 -599
  503. package/vibe/templates/feature-template.md +96 -96
  504. package/vibe/templates/plan-template.md +194 -194
  505. package/vibe/templates/spec-template.md +221 -221
  506. package/vibe/ui-ux-data/charts.csv +26 -26
  507. package/vibe/ui-ux-data/colors.csv +97 -97
  508. package/vibe/ui-ux-data/icons.csv +101 -101
  509. package/vibe/ui-ux-data/landing.csv +31 -31
  510. package/vibe/ui-ux-data/products.csv +96 -96
  511. package/vibe/ui-ux-data/react-performance.csv +45 -45
  512. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  513. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  514. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  515. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  516. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  517. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  518. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  519. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  520. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  521. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  522. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  523. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  524. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  525. package/vibe/ui-ux-data/styles.csv +68 -68
  526. package/vibe/ui-ux-data/typography.csv +57 -57
  527. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  528. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  529. package/vibe/ui-ux-data/version.json +31 -31
  530. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -1,726 +1,726 @@
1
- ---
2
- name: vibe-spec-review
3
- tier: core
4
- description: "Review and enhance an existing SPEC with GPT/Gemini cross-validation. Runs 100-point quality gate (loop until perfect or stuck), Race Review with convergence-based termination (no round cap), optional Codex adversarial review, Review Debate Team, and final user checkpoint. Must use this skill after vibe-spec completes, or when the user says 'review spec', '스펙 리뷰'."
5
- triggers: ["spec review", "review spec", "SPEC 리뷰", "명세 리뷰", race review]
6
- priority: 80
7
- chain-next: []
8
- ---
9
-
10
- # vibe-spec-review — SPEC Quality Review
11
-
12
- Review and enhance SPEC with GPT/Gemini cross-validation.
13
-
14
- **Purpose:** Run this skill after `vibe-spec` to ensure accurate review execution. For large contexts, invoke in a new session.
15
-
16
- ---
17
-
18
- ## Usage
19
-
20
- This skill is automatically called in Phase 4 of the `/vibe.spec` orchestrator. If direct invocation is needed:
21
-
22
- ```
23
- Load skill `vibe-spec-review` with feature: "feature-name"
24
- ```
25
-
26
- Or via natural language trigger: "스펙 리뷰", "review spec", "명세 리뷰".
27
-
28
- **Prerequisites:**
29
- - SPEC file exists: `.claude/vibe/specs/{feature-name}.md` (single) or `.claude/vibe/specs/{feature-name}/_index.md` (split)
30
- - Feature file exists: `.claude/vibe/features/{feature-name}.feature` (single) or `.claude/vibe/features/{feature-name}/_index.feature` (split)
31
-
32
- ---
33
-
34
- ## Codex Plugin Integration
35
-
36
- > **Codex plugin detection**: Auto-detected at workflow start with the command below.
37
- >
38
- > ```bash
39
- > CODEX_AVAILABLE=$(node "{{VIBE_PATH}}/hooks/scripts/codex-detect.js" 2>/dev/null || echo "unavailable")
40
- > ```
41
- >
42
- > If `available`, `/codex:adversarial-review` is automatically invoked. If `unavailable`, falls back to the existing GPT+Gemini workflow.
43
-
44
- ---
45
-
46
- > **⏱️ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
47
-
48
- **`.last-feature` pointer update** (immediately after Timer):
49
-
50
- ```
51
- Write ".claude/vibe/.last-feature" ← feature-name (one line)
52
- If the value is already the same, no-op.
53
- ```
54
-
55
- ## Workflow
56
-
57
- ```
58
- /vibe.spec "feature" → SPEC created (Phase 3)
59
-
60
- Phase 4: vibe-spec-review skill (this) → Quality validation + GPT/Gemini review
61
-
62
- /vibe.run "feature"
63
- ```
64
-
65
- **For large contexts**: After `/new`, re-enter `/vibe.spec "feature"` → Smart Resume will start from Phase 4.
66
-
67
- ---
68
-
69
- ## File Reading Policy (Mandatory)
70
-
71
- - **Delegate SPEC reading to sub-agents** — Do NOT read all SPEC/Feature files in main session
72
- - **Split structure (3+ phases)**: Use `Task(subagent_type="explorer-medium")` to read and summarize
73
- - **Single file structure**: Main session may Read directly (small enough)
74
- - **Never use Grep** for content analysis — Grep is for file location only
75
- - **Agent spawn rule**: Include "Read target files FULLY with Read tool" in agent prompts
76
-
77
- ## Step 1: Load SPEC Files
78
-
79
- Detect SPEC structure (single file or split folder) and read files:
80
-
81
- **Single file structure:**
82
- ```
83
- .claude/vibe/specs/{feature-name}.md
84
- .claude/vibe/features/{feature-name}.feature
85
- ```
86
-
87
- **Split folder structure:**
88
- ```
89
- .claude/vibe/specs/{feature-name}/_index.md (+ phase files)
90
- .claude/vibe/specs/{feature-name}/phase-*.md (phase-1-xxx.md, phase-2-xxx.md, ...)
91
- .claude/vibe/features/{feature-name}/_index.feature (+ phase files)
92
- .claude/vibe/features/{feature-name}/phase-*.feature
93
- ```
94
-
95
- **Detection logic:**
96
- 1. Check if `.claude/vibe/specs/{feature-name}/` directory exists → Split mode
97
- 2. Otherwise check `.claude/vibe/specs/{feature-name}.md` → Single mode
98
- 3. If neither exists → Error
99
-
100
- **Split mode file loading:**
101
- 1. Read `_index.md` for master SPEC overview
102
- 2. Glob `phase-*.md` files and read all phase SPECs
103
- 3. Read corresponding `_index.feature` and `phase-*.feature` files
104
-
105
- **Output:**
106
- ```
107
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
108
- 📋 SPEC REVIEW: {feature-name}
109
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110
-
111
- Loading files...
112
- Mode: {single|split}
113
- ✅ SPEC: .claude/vibe/specs/{feature-name}.md (or _index.md + N phase files)
114
- ✅ Feature: .claude/vibe/features/{feature-name}.feature (or _index.feature + N phase files)
115
-
116
- Extracted info:
117
- - Feature: {feature description}
118
- - Stack: {tech stack}
119
- - Phases: {number of phases}
120
- - Scenarios: {number of scenarios}
121
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
122
- ```
123
-
124
- ---
125
-
126
- ## Step 2: Quality Validation (100-Point Gate)
127
-
128
- **🚨 MANDATORY: Score must reach 100 to proceed. Loop until perfect or stuck.**
129
-
130
- ### 2.1 Quality Checklist
131
-
132
- | Category | Check Item | Weight |
133
- |----------|------------|--------|
134
- | **Completeness** | All user flows included in Task | 15% |
135
- | **Completeness** | All ACs converted to Feature scenarios | 10% |
136
- | **Completeness** | Error handling scenarios defined | 10% |
137
- | **Specificity** | All numbers specified (timeout, limits, etc.) | 15% |
138
- | **Specificity** | No ambiguous terms ("appropriate", "proper", etc.) | 10% |
139
- | **Testability** | Each AC is verifiable | 10% |
140
- | **Testability** | Feature scenarios have concrete Given/When/Then | 10% |
141
- | **Security** | Auth/permission requirements specified | 10% |
142
- | **Performance** | Response time/load requirements specified | 10% |
143
-
144
- ### 2.2 Quality Gate Loop (No Round Cap)
145
-
146
- ```python
147
- iteration = 0
148
- prev_score = -1
149
-
150
- while True:
151
- iteration += 1
152
- score = calculate_quality_score(spec, feature)
153
-
154
- print(f"━━━ Quality Check [{iteration}] ━━━")
155
- print(f"Score: {score}/100")
156
-
157
- if score >= 100:
158
- print("✅ Quality Gate PASSED (100/100)")
159
- break
160
-
161
- # Auto-fixer hit a wall → ask the user (prevents runaway AND respects 100 target)
162
- if score == prev_score:
163
- missing_items = identify_missing_items(spec)
164
- print(f"⚠️ Auto-fixer limit reached: stuck at {score}/100")
165
- print(f"Remaining items require human input:")
166
- for item in missing_items:
167
- print(f" ❌ {item}")
168
-
169
- if ultrawork_mode:
170
- # ultrawork: no user intervention, record TODO and proceed
171
- print("ℹ️ ultrawork mode — recording gaps to TODO and proceeding")
172
- record_todo(missing_items)
173
- break
174
-
175
- # Interactive: ask the user to fill in or explicitly approve
176
- user_input = ask_user(
177
- "Please either:\n"
178
- " 1. Provide values for the remaining items (I'll apply them)\n"
179
- " 2. Type 'proceed' to accept current score and continue\n"
180
- " 3. Type 'abort' to stop the workflow"
181
- )
182
-
183
- if user_input == "abort":
184
- raise WorkflowAborted("User aborted at Quality Gate")
185
- if user_input == "proceed":
186
- record_todo(missing_items)
187
- break
188
- # otherwise: apply user-provided values → re-evaluate
189
- apply_user_values(user_input)
190
- continue
191
-
192
- prev_score = score
193
-
194
- # Auto-fix missing items
195
- missing_items = identify_missing_items(spec)
196
- for item in missing_items:
197
- auto_fix(item)
198
- update_spec()
199
- update_feature()
200
-
201
- print(f"✅ Applied {len(missing_items)} fixes - Re-evaluating...")
202
- ```
203
-
204
- **Termination conditions:**
205
- - `score == 100` → pass (primary success)
206
- - `score == prev_score` (auto-fixer stuck) → **ask the user**:
207
- - User provides values → re-evaluate (loop continues, may reach 100)
208
- - User says "proceed" → record gaps as TODO and continue to Step 3
209
- - User says "abort" → stop entire workflow
210
- - `ultrawork` mode → skip prompt, auto-record TODO and continue
211
- - No iteration cap — the only way to exit without 100 is explicit user approval or ultrawork.
212
-
213
- **Output format:**
214
- ```
215
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
216
- 📊 QUALITY GATE [1]
217
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
218
- Score: 87/100 ⚠️ BELOW 100
219
-
220
- Missing items:
221
- ❌ Error handling scenarios (10%)
222
- ❌ Performance targets (5%)
223
-
224
- Auto-fixing...
225
- ✅ Added network error handling scenario
226
- ✅ Added response time targets (<500ms)
227
-
228
- Re-evaluating...
229
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
230
-
231
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
232
- 📊 QUALITY GATE [2]
233
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
234
- Score: 96/100 ⚠️ BELOW 100
235
-
236
- Missing items:
237
- ❌ Concurrent session policy (4%)
238
-
239
- Auto-fixing...
240
- ✅ Added concurrent session policy
241
-
242
- Re-evaluating...
243
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
244
-
245
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
246
- 📊 QUALITY GATE [3]
247
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
248
- Score: 100/100 ✅ PASSED
249
-
250
- ✅ Quality Gate PASSED - proceeding to GPT/Gemini review
251
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
252
- ```
253
-
254
- **Stuck case (auto-fixer limit reached):**
255
- ```
256
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
257
- 📊 QUALITY GATE [4]
258
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
259
- Score: 87/100 ⚠️ STUCK (same as previous iteration)
260
-
261
- Auto-fixer hit a wall. These items need human input:
262
- ❌ Business rule: monthly subscription renewal grace period (days?)
263
- ❌ Target latency for search API (<?ms)
264
- ❌ Data retention policy for audit logs (how many days?)
265
-
266
- How would you like to proceed?
267
- 1. Provide the values directly (e.g., "grace period 7 days, search 500ms, audit logs 90 days")
268
- → Values will be applied and the score re-evaluated (100 may be reachable)
269
- 2. "proceed" — Accept the current score, record remaining items as TODO, then continue to Step 3
270
- 3. "abort" — Stop the workflow
271
-
272
- (In ultrawork mode, this prompt is skipped — TODO is auto-recorded and execution continues)
273
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
274
- ```
275
-
276
- ### 2.3 Auto-Fix Rules
277
-
278
- | Missing Item | Auto-Fix Method |
279
- |--------------|-----------------|
280
- | Missing AC | Auto-generate AC based on Task |
281
- | Numbers not specified | Apply project defaults (timeout 30s, etc.) |
282
- | Missing error handling | Add common error scenarios |
283
- | Missing performance targets | Apply industry standard criteria |
284
- | Missing security | Add auth/data protection requirements |
285
- | Ambiguous terms | Replace with specific values |
286
-
287
- ---
288
-
289
- ## Step 3: Race Review (GPT + Gemini Cross-Validation) - Convergence-Based (No Round Cap)
290
-
291
- **RULES FOR RACE REVIEW:**
292
-
293
- 1. **YOU MUST** use the Bash tool to call `llm-orchestrate.js` directly
294
- 2. **DO NOT** simulate or fake review results
295
- 3. Run rounds sequentially (each round uses updated SPEC)
296
- 4. **No hard round cap** — loop until P1=0 AND no new findings (convergence)
297
-
298
- > Race Mode reviews SPEC with GPT and Gemini in parallel, then cross-validates findings for higher confidence. The loop continues until quality converges naturally.
299
-
300
- ### Termination Rules
301
-
302
- - **P1 = 0 AND no new findings this round** → converged, stop (primary success)
303
- - **Round 1 with P1 = 0 AND no P2/P3** → perfect on first try, stop (early success)
304
- - **Round N findings == Round N-1 findings** → **stuck**: LLMs keep flagging same issues that auto-applier can't resolve → **ask the user** (see 3.2.1)
305
-
306
- ### Stuck Handling (3.2.1)
307
-
308
- When the same findings repeat across rounds, the auto-apply loop has hit a wall. This typically means:
309
- - The fix requires human judgment (architectural trade-off, domain rule, etc.)
310
- - The LLMs are producing a false positive that the auto-applier can't dismiss
311
- - The suggested fix conflicts with an existing constraint
312
-
313
- **Interactive mode** — prompt the user:
314
-
315
- ```
316
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
317
- ⚠️ RACE REVIEW STUCK at Round {N}
318
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
319
-
320
- Same findings repeated from Round {N-1}. Auto-applier cannot resolve:
321
-
322
- | # | Issue | Severity | GPT | Gemini | Reason it's stuck |
323
- |---|-------|----------|-----|--------|-------------------|
324
- | 1 | {issue title} | P1 | ✅ | ✅ | {e.g., "fix requires domain decision"} |
325
- | 2 | {issue title} | P2 | ✅ | ❌ | {e.g., "conflicts with existing constraint"} |
326
-
327
- How would you like to proceed?
328
- 1. Provide a resolution directly (e.g., "issue 1: retry 5 times, issue 2: ignore")
329
- → Changes will be applied and the next round re-run
330
- 2. "proceed" — Record current issues as TODO and continue to Step 4
331
- 3. "abort" — Stop the workflow
332
-
333
- (In ultrawork mode, this prompt is skipped — TODO is auto-recorded and execution continues)
334
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
335
- ```
336
-
337
- **Pseudocode:**
338
-
339
- ```python
340
- if current_findings == prev_findings:
341
- if ultrawork_mode:
342
- print("ℹ️ ultrawork mode — recording stuck issues to TODO and proceeding")
343
- record_todo(current_findings)
344
- break
345
-
346
- user_input = ask_user(
347
- "Race Review stuck. Please either:\n"
348
- " 1. Provide resolution for the listed issues\n"
349
- " 2. Type 'proceed' to record as TODO and continue to Step 4\n"
350
- " 3. Type 'abort' to stop the workflow"
351
- )
352
-
353
- if user_input == "abort":
354
- raise WorkflowAborted("User aborted at Race Review")
355
- if user_input == "proceed":
356
- record_todo(current_findings)
357
- break
358
- # otherwise: apply user-provided resolutions → next round
359
- apply_user_resolutions(user_input)
360
- continue # re-run the round with updated SPEC
361
- ```
362
-
363
- ### Narrowing Scope (Noise Reduction)
364
-
365
- To prevent LLM cosmetic noise from causing infinite loops while still reaching 100% quality:
366
-
367
- | Round | Scope |
368
- |-------|-------|
369
- | 1 | Full scope (P1 + P2 + P3) |
370
- | 2 | P1 + P2 only |
371
- | 3+ | P1 only (until P1=0 or convergence) |
372
-
373
- ### 3.1 Review Loop (No Round Cap)
374
-
375
- **Run GPT + Gemini in PARALLEL via Bash tool for each round. Stop when termination rules trigger.**
376
-
377
- **🚨 IMPORTANT: SPEC content is too large for CLI arguments. Use --input file method (no pipe needed).**
378
-
379
- **Procedure for each round:**
380
-
381
- **Step A: Save SPEC content + prompt as JSON to scratchpad temp file (using Write tool):**
382
- - Write JSON to `[SCRATCHPAD]/spec-review-input.json` with content:
383
- ```json
384
- {"prompt": "Review this SPEC for completeness, specificity, testability, security, and performance. Round [N] (scope: [SCOPE]). Find issues and improvements. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: [SPEC_CONTENT]"}
385
- ```
386
- - Where `[SPEC_CONTENT]` is the full SPEC text (properly JSON-escaped inside the prompt string)
387
- - `[SCOPE]` is `P1+P2+P3` for round 1, `P1+P2` for round 2, `P1` for rounds 3+
388
-
389
- **Step B: Script path:**
390
- - `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
391
-
392
- **Step C: Run GPT + Gemini in PARALLEL (two separate Bash tool calls at once):**
393
-
394
- ```bash
395
- # GPT review (Bash tool call 1)
396
- node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/spec-review-input.json"
397
- ```
398
-
399
- ```bash
400
- # Gemini review (Bash tool call 2 - run in parallel with GPT)
401
- node "[LLM_SCRIPT]" gemini orchestrate-json --input "[SCRATCHPAD]/spec-review-input.json"
402
- ```
403
-
404
- **🚨 MANDATORY: Replace `[SCRATCHPAD]` with the actual scratchpad directory path.**
405
- **🚨 Replace `[N]` with the current round number (1, 2, 3, ...).**
406
- **🚨 Replace `[LLM_SCRIPT]` with the resolved absolute path from Step B.**
407
- **🚨 Run GPT and Gemini calls in PARALLEL (two separate Bash tool calls at once).**
408
-
409
- - Round 1: Write SPEC → Run GPT + Gemini in parallel (full scope) → Cross-validate → Apply fixes → Update SPEC file
410
- - Round 2: Write updated SPEC → Run (P1+P2 scope) → Cross-validate → Apply fixes → Update SPEC file
411
- - Round 3+: Write updated SPEC → Run (P1-only scope) → Cross-validate → Apply fixes → Continue until P1=0 AND no new findings (or convergence detected)
412
-
413
- ### 3.2 Cross-Validation Rules
414
-
415
- | Agreement | Priority | Action |
416
- |-----------|----------|--------|
417
- | Both models agree (100%) | P1 | Auto-apply immediately |
418
- | 1 model only (50%) | P2 | Auto-apply with note |
419
-
420
- **After each round:**
421
-
422
- 1. Cross-validate findings (issues found by 2+ models → P1, single model → P2)
423
- 2. Merge feedback with confidence scores
424
- 3. Auto-apply P1/P2 improvements to SPEC and Feature files (use Edit tool)
425
- 4. Continue to next round with updated SPEC content
426
-
427
- ### 3.3 User Decision Checkpoint (After Convergence)
428
-
429
- **🚨 MANDATORY: Run user judgment checkpoint when the review loop reaches convergence**
430
-
431
- > Type 6 (Iterative-Reasoning) pattern: AI does not decide alone — judges together with the user
432
-
433
- ```
434
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
435
- 🔍 USER CHECKPOINT: Review Results
436
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
437
-
438
- Key changes found across {N} review rounds:
439
-
440
- | # | Change | Source | Confidence |
441
- |---|--------|--------|------------|
442
- | 1 | {change1} | GPT+Gemini | 100% |
443
- | 2 | {change2} | GPT only | 50% |
444
- | ... | ... | ... | ... |
445
-
446
- Questions:
447
- 1. Are there any changes above you'd like to exclude?
448
- 2. Are there any additional requirements that should be specified?
449
- 3. Do you agree with the technical approach?
450
-
451
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
452
- ```
453
-
454
- **Checkpoint action rules:**
455
-
456
- | Situation | Action |
457
- |-----------|--------|
458
- | `ultrawork` mode | Skip checkpoint, auto-proceed |
459
- | Normal mode | Must wait for user response |
460
- | User requests changes | Apply changes, then re-run checkpoint |
461
- | User approves | Proceed to Step 4 |
462
-
463
- **Output format:**
464
- ```
465
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
466
- 🏁 SPEC RACE REVIEW - Round 1 (scope: P1+P2+P3)
467
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
468
-
469
- Model Results:
470
- | Model | Issues | Duration |
471
- |--------|--------|----------|
472
- | GPT | 2 | 1823ms |
473
- | Gemini | 2 | 2156ms |
474
-
475
- Cross-Validated Issues:
476
- | Issue | GPT | Gemini | Codex | Confidence |
477
- |--------------------------|-----|--------|-------|------------|
478
- | Missing retry logic | ✅ | ✅ | ✅ | 100% → P1 |
479
- | Missing rate limiting | ✅ | ✅ | ✅ | 100% → P1 |
480
- | Token refresh unclear | ✅ | ❌ | ❌ | 50% → P2 |
481
-
482
- Auto-applying...
483
- ✅ [P1] Added retry logic (3 attempts, exponential backoff)
484
- ✅ [P1] Added rate limiting (100 req/min)
485
- ✅ [P2] Added token refresh flow
486
-
487
- ✅ Round 1 complete - 3 improvements (2 P1, 1 P2)
488
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
489
-
490
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
491
- 🏁 SPEC RACE REVIEW - Round 2 (scope: P1+P2)
492
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
493
-
494
- Cross-Validated Issues:
495
- | Issue | GPT | Gemini | Codex | Confidence |
496
- |-----------------------------|-----|--------|-------|------------|
497
- | Concurrent session unclear | ✅ | ❌ | ❌ | 50% → P2 |
498
-
499
- Auto-applying...
500
- ✅ [P2] Added concurrent session policy
501
-
502
- ✅ Round 2 complete - 1 improvement
503
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
504
-
505
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
506
- 🏁 SPEC RACE REVIEW - Round 3 (scope: P1)
507
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
508
-
509
- Cross-Validated Issues: None
510
-
511
- ✅ Converged: P1 = 0 AND no new findings
512
- ✅ Consensus Rate: 100%
513
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
514
- ```
515
-
516
- > If new P1s appear at round 3, the loop continues to round 4, 5, ... until convergence.
517
-
518
- ### Step 3.1: Codex Adversarial Review (When Codex Plugin Is Active)
519
-
520
- > **Activation condition**: Automatically runs when Codex plugin is installed. Skipped if not installed.
521
- > Runs **simultaneously** with GPT+Gemini Race Review for triple cross-validation.
522
-
523
- Codex adversarial review **challenges the design decisions** in the SPEC:
524
- - Validates whether an alternative architecture would be better
525
- - Checks for over-engineering or under-engineering
526
- - Identifies missing edge cases and non-functional requirements
527
-
528
- **Execution (parallel with GPT+Gemini Race):**
529
-
530
- ```
531
- /codex:adversarial-review
532
- ```
533
-
534
- **Result integration**: Add Codex column to the Race Review cross-validation table:
535
-
536
- ```markdown
537
- | Issue | GPT | Gemini | Codex | Confidence |
538
- |-------|-----|--------|-------|------------|
539
- | {issue} | ✅/❌ | ✅/❌ | ✅/❌ | {%} |
540
- ```
541
-
542
- - 2 or more of 3 models agree → **High Confidence**
543
- - Issue found only by Codex → **P2** (requires design perspective review)
544
- - All 3 models agree → **P1** (fix immediately)
545
-
546
- ---
547
-
548
- ## Step 3.5: Review Debate Team (Agent Teams)
549
-
550
- > **Team definition**: See `agents/teams/review-debate-team.md` (SPEC Review context)
551
- > **Condition**: Agent Teams enabled + 2 or more P1/P2 issues found after review loop convergence
552
-
553
- **Activation conditions:**
554
-
555
- | Situation | Action |
556
- |-----------|--------|
557
- | 2 or more P1/P2 issues | Auto-activate |
558
- | 1 or fewer P1/P2 issues | Skip → proceed to Step 4 |
559
- | Agent Teams disabled | Skip → proceed to Step 4 |
560
-
561
- **Result integration:**
562
- - Apply team consensus results to SPEC (P1 applied immediately, P2 added as notes)
563
- - Team member shutdown_request → clean up with TeamDelete
564
- - Proceed to Step 4 (Final Summary)
565
-
566
- ---
567
-
568
- ## Step 4: Final Summary
569
-
570
- ```
571
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
572
- ✅ SPEC REVIEW COMPLETE: {feature-name}
573
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
574
-
575
- Quality Score: 100/100 ✅
576
- Review Rounds: {N} (converged: P1=0, no new findings) ✅
577
- Total Improvements: {M}
578
- ⏱️ Started: {start_time}
579
- ⏱️ Completed: {getCurrentTime result}
580
-
581
- Updated files:
582
- 📋 .claude/vibe/specs/{feature-name}.md (or split folder)
583
- 📋 .claude/vibe/features/{feature-name}.feature (or split folder)
584
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
585
- ```
586
-
587
- ---
588
-
589
- ## Step 5: SPEC Summary for User Review
590
-
591
- **🚨 MANDATORY: Always output this summary before proceeding to `/vibe.run`.**
592
-
593
- After all review rounds, present the finalized SPEC to the user in a readable format:
594
-
595
- ```
596
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
597
- 📋 SPEC SUMMARY: {feature-name}
598
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
599
-
600
- ## Feature Overview
601
- {1-2 line summary of feature purpose from SPEC's <role> and <context>}
602
-
603
- ## Tech Stack
604
- {Tech stack list extracted from <context>}
605
-
606
- ## Implementation Phases
607
- | Phase | Name | Key Tasks |
608
- |-------|------|-----------|
609
- | 1 | {phase name} | {1-line summary of core task} |
610
- | 2 | {phase name} | {1-line summary of core task} |
611
- | ... | ... | ... |
612
-
613
- ## Key Scenarios ({N} total)
614
- {Scenario name list from Feature file}
615
- - Scenario: {name1}
616
- - Scenario: {name2}
617
- - ...
618
-
619
- ## Key Constraints
620
- {3-5 key items from <constraints>}
621
-
622
- ## Acceptance Criteria
623
- {Summary of key items from <acceptance>}
624
-
625
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
626
- If anything above is incorrect, please request changes.
627
- If no issues, proceed with /vibe.run "{feature-name}".
628
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
629
- ```
630
-
631
- **Important:**
632
-
633
- - List ALL Phases, Scenarios, and Constraints from SPEC without omission
634
- - Keep it concise for quick user review
635
- - Wait for user confirmation after review (unless ultrawork mode)
636
- - In ultrawork mode: output summary then auto-proceed to `/vibe.run`
637
-
638
- ### 5.1 Final User Checkpoint
639
-
640
- **🚨 MANDATORY: Final user confirmation before proceeding to `/vibe.run`**
641
-
642
- ```
643
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
644
- ✅ SPEC Review Complete - Final Confirmation
645
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
646
-
647
- Please answer the following questions:
648
-
649
- 1. **Requirements accuracy**: Does the SPEC above accurately describe the originally intended feature?
650
- 2. **Scope appropriateness**: Is the implementation scope neither too large nor too small?
651
- 3. **Tech stack**: Do you agree with the chosen tech stack?
652
- 4. **Priority**: Is the Phase order and priority correct?
653
-
654
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
655
- 💡 Type "ok" or "proceed" to approve / share any changes you'd like made
656
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
657
- ```
658
-
659
- **Why This Checkpoint Matters:**
660
-
661
- > More AI doing more is not always better.
662
- > The best results come when the user thinks and judges together with AI.
663
- > This checkpoint induces the Type 6 (Iterative-Reasoning) pattern.
664
-
665
- ---
666
-
667
- ## Next Step
668
-
669
- ```
670
- /vibe.run "{feature-name}"
671
- ```
672
-
673
- ---
674
-
675
- ## Error Handling
676
-
677
- ### SPEC Not Found
678
- ```
679
- ❌ ERROR: SPEC file not found
680
-
681
- Expected (single): .claude/vibe/specs/{feature-name}.md
682
- Expected (split): .claude/vibe/specs/{feature-name}/_index.md
683
-
684
- Please run /vibe.spec "{feature-name}" first to create the SPEC.
685
- ```
686
-
687
- ### Feature Not Found
688
- ```
689
- ❌ ERROR: Feature file not found
690
-
691
- Expected (single): .claude/vibe/features/{feature-name}.feature
692
- Expected (split): .claude/vibe/features/{feature-name}/_index.feature
693
-
694
- Please run /vibe.spec "{feature-name}" first to create the Feature file.
695
- ```
696
-
697
- ### GPT/Gemini Call Failed
698
- ```
699
- ⚠️ WARNING: {GPT|Gemini} call failed
700
-
701
- Error: {error message}
702
-
703
- Continuing with {other model} results only...
704
- ```
705
-
706
- ---
707
-
708
- ## Quick Mode
709
-
710
- For faster iteration (1 round only): pass `--quick` flag when invoking the skill (or via `/vibe.spec "feature-name" --quick` orchestrator).
711
-
712
- ---
713
-
714
- ARGUMENTS: $ARGUMENTS
715
-
716
- **File Detection (execute before Step 1):**
717
-
718
- ```
719
- Feature name: $ARGUMENTS
720
-
721
- 1. Check split folder: .claude/vibe/specs/$ARGUMENTS/_index.md
722
- - If exists → Split mode (read all files in folder)
723
- 2. Check single file: .claude/vibe/specs/$ARGUMENTS.md
724
- - If exists → Single mode
725
- 3. Neither exists → Show error with both expected paths
726
- ```
1
+ ---
2
+ name: vibe-spec-review
3
+ tier: core
4
+ description: "Review and enhance an existing SPEC with GPT/Gemini cross-validation. Runs 100-point quality gate (loop until perfect or stuck), Race Review with convergence-based termination (no round cap), optional Codex adversarial review, Review Debate Team, and final user checkpoint. Must use this skill after vibe-spec completes, or when the user says 'review spec', '스펙 리뷰'."
5
+ triggers: ["spec review", "review spec", "SPEC 리뷰", "명세 리뷰", race review]
6
+ priority: 80
7
+ chain-next: []
8
+ ---
9
+
10
+ # vibe-spec-review — SPEC Quality Review
11
+
12
+ Review and enhance SPEC with GPT/Gemini cross-validation.
13
+
14
+ **Purpose:** Run this skill after `vibe-spec` to ensure accurate review execution. For large contexts, invoke in a new session.
15
+
16
+ ---
17
+
18
+ ## Usage
19
+
20
+ This skill is automatically called in Phase 4 of the `/vibe.spec` orchestrator. If direct invocation is needed:
21
+
22
+ ```
23
+ Load skill `vibe-spec-review` with feature: "feature-name"
24
+ ```
25
+
26
+ Or via natural language trigger: "스펙 리뷰", "review spec", "명세 리뷰".
27
+
28
+ **Prerequisites:**
29
+ - SPEC file exists: `.claude/vibe/specs/{feature-name}.md` (single) or `.claude/vibe/specs/{feature-name}/_index.md` (split)
30
+ - Feature file exists: `.claude/vibe/features/{feature-name}.feature` (single) or `.claude/vibe/features/{feature-name}/_index.feature` (split)
31
+
32
+ ---
33
+
34
+ ## Codex Plugin Integration
35
+
36
+ > **Codex plugin detection**: Auto-detected at workflow start with the command below.
37
+ >
38
+ > ```bash
39
+ > CODEX_AVAILABLE=$(node "{{VIBE_PATH}}/hooks/scripts/codex-detect.js" 2>/dev/null || echo "unavailable")
40
+ > ```
41
+ >
42
+ > If `available`, `/codex:adversarial-review` is automatically invoked. If `unavailable`, falls back to the existing GPT+Gemini workflow.
43
+
44
+ ---
45
+
46
+ > **⏱️ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
47
+
48
+ **`.last-feature` pointer update** (immediately after Timer):
49
+
50
+ ```
51
+ Write ".claude/vibe/.last-feature" ← feature-name (one line)
52
+ If the value is already the same, no-op.
53
+ ```
54
+
55
+ ## Workflow
56
+
57
+ ```
58
+ /vibe.spec "feature" → SPEC created (Phase 3)
59
+
60
+ Phase 4: vibe-spec-review skill (this) → Quality validation + GPT/Gemini review
61
+
62
+ /vibe.run "feature"
63
+ ```
64
+
65
+ **For large contexts**: After `/new`, re-enter `/vibe.spec "feature"` → Smart Resume will start from Phase 4.
66
+
67
+ ---
68
+
69
+ ## File Reading Policy (Mandatory)
70
+
71
+ - **Delegate SPEC reading to sub-agents** — Do NOT read all SPEC/Feature files in main session
72
+ - **Split structure (3+ phases)**: Use `Task(subagent_type="explorer-medium")` to read and summarize
73
+ - **Single file structure**: Main session may Read directly (small enough)
74
+ - **Never use Grep** for content analysis — Grep is for file location only
75
+ - **Agent spawn rule**: Include "Read target files FULLY with Read tool" in agent prompts
76
+
77
+ ## Step 1: Load SPEC Files
78
+
79
+ Detect SPEC structure (single file or split folder) and read files:
80
+
81
+ **Single file structure:**
82
+ ```
83
+ .claude/vibe/specs/{feature-name}.md
84
+ .claude/vibe/features/{feature-name}.feature
85
+ ```
86
+
87
+ **Split folder structure:**
88
+ ```
89
+ .claude/vibe/specs/{feature-name}/_index.md (+ phase files)
90
+ .claude/vibe/specs/{feature-name}/phase-*.md (phase-1-xxx.md, phase-2-xxx.md, ...)
91
+ .claude/vibe/features/{feature-name}/_index.feature (+ phase files)
92
+ .claude/vibe/features/{feature-name}/phase-*.feature
93
+ ```
94
+
95
+ **Detection logic:**
96
+ 1. Check if `.claude/vibe/specs/{feature-name}/` directory exists → Split mode
97
+ 2. Otherwise check `.claude/vibe/specs/{feature-name}.md` → Single mode
98
+ 3. If neither exists → Error
99
+
100
+ **Split mode file loading:**
101
+ 1. Read `_index.md` for master SPEC overview
102
+ 2. Glob `phase-*.md` files and read all phase SPECs
103
+ 3. Read corresponding `_index.feature` and `phase-*.feature` files
104
+
105
+ **Output:**
106
+ ```
107
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
108
+ 📋 SPEC REVIEW: {feature-name}
109
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110
+
111
+ Loading files...
112
+ Mode: {single|split}
113
+ ✅ SPEC: .claude/vibe/specs/{feature-name}.md (or _index.md + N phase files)
114
+ ✅ Feature: .claude/vibe/features/{feature-name}.feature (or _index.feature + N phase files)
115
+
116
+ Extracted info:
117
+ - Feature: {feature description}
118
+ - Stack: {tech stack}
119
+ - Phases: {number of phases}
120
+ - Scenarios: {number of scenarios}
121
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
122
+ ```
123
+
124
+ ---
125
+
126
+ ## Step 2: Quality Validation (100-Point Gate)
127
+
128
+ **🚨 MANDATORY: Score must reach 100 to proceed. Loop until perfect or stuck.**
129
+
130
+ ### 2.1 Quality Checklist
131
+
132
+ | Category | Check Item | Weight |
133
+ |----------|------------|--------|
134
+ | **Completeness** | All user flows included in Task | 15% |
135
+ | **Completeness** | All ACs converted to Feature scenarios | 10% |
136
+ | **Completeness** | Error handling scenarios defined | 10% |
137
+ | **Specificity** | All numbers specified (timeout, limits, etc.) | 15% |
138
+ | **Specificity** | No ambiguous terms ("appropriate", "proper", etc.) | 10% |
139
+ | **Testability** | Each AC is verifiable | 10% |
140
+ | **Testability** | Feature scenarios have concrete Given/When/Then | 10% |
141
+ | **Security** | Auth/permission requirements specified | 10% |
142
+ | **Performance** | Response time/load requirements specified | 10% |
143
+
144
+ ### 2.2 Quality Gate Loop (No Round Cap)
145
+
146
+ ```python
147
+ iteration = 0
148
+ prev_score = -1
149
+
150
+ while True:
151
+ iteration += 1
152
+ score = calculate_quality_score(spec, feature)
153
+
154
+ print(f"━━━ Quality Check [{iteration}] ━━━")
155
+ print(f"Score: {score}/100")
156
+
157
+ if score >= 100:
158
+ print("✅ Quality Gate PASSED (100/100)")
159
+ break
160
+
161
+ # Auto-fixer hit a wall → ask the user (prevents runaway AND respects 100 target)
162
+ if score == prev_score:
163
+ missing_items = identify_missing_items(spec)
164
+ print(f"⚠️ Auto-fixer limit reached: stuck at {score}/100")
165
+ print(f"Remaining items require human input:")
166
+ for item in missing_items:
167
+ print(f" ❌ {item}")
168
+
169
+ if ultrawork_mode:
170
+ # ultrawork: no user intervention, record TODO and proceed
171
+ print("ℹ️ ultrawork mode — recording gaps to TODO and proceeding")
172
+ record_todo(missing_items)
173
+ break
174
+
175
+ # Interactive: ask the user to fill in or explicitly approve
176
+ user_input = ask_user(
177
+ "Please either:\n"
178
+ " 1. Provide values for the remaining items (I'll apply them)\n"
179
+ " 2. Type 'proceed' to accept current score and continue\n"
180
+ " 3. Type 'abort' to stop the workflow"
181
+ )
182
+
183
+ if user_input == "abort":
184
+ raise WorkflowAborted("User aborted at Quality Gate")
185
+ if user_input == "proceed":
186
+ record_todo(missing_items)
187
+ break
188
+ # otherwise: apply user-provided values → re-evaluate
189
+ apply_user_values(user_input)
190
+ continue
191
+
192
+ prev_score = score
193
+
194
+ # Auto-fix missing items
195
+ missing_items = identify_missing_items(spec)
196
+ for item in missing_items:
197
+ auto_fix(item)
198
+ update_spec()
199
+ update_feature()
200
+
201
+ print(f"✅ Applied {len(missing_items)} fixes - Re-evaluating...")
202
+ ```
203
+
204
+ **Termination conditions:**
205
+ - `score == 100` → pass (primary success)
206
+ - `score == prev_score` (auto-fixer stuck) → **ask the user**:
207
+ - User provides values → re-evaluate (loop continues, may reach 100)
208
+ - User says "proceed" → record gaps as TODO and continue to Step 3
209
+ - User says "abort" → stop entire workflow
210
+ - `ultrawork` mode → skip prompt, auto-record TODO and continue
211
+ - No iteration cap — the only way to exit without 100 is explicit user approval or ultrawork.
212
+
213
+ **Output format:**
214
+ ```
215
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
216
+ 📊 QUALITY GATE [1]
217
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
218
+ Score: 87/100 ⚠️ BELOW 100
219
+
220
+ Missing items:
221
+ ❌ Error handling scenarios (10%)
222
+ ❌ Performance targets (5%)
223
+
224
+ Auto-fixing...
225
+ ✅ Added network error handling scenario
226
+ ✅ Added response time targets (<500ms)
227
+
228
+ Re-evaluating...
229
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
230
+
231
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
232
+ 📊 QUALITY GATE [2]
233
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
234
+ Score: 96/100 ⚠️ BELOW 100
235
+
236
+ Missing items:
237
+ ❌ Concurrent session policy (4%)
238
+
239
+ Auto-fixing...
240
+ ✅ Added concurrent session policy
241
+
242
+ Re-evaluating...
243
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
244
+
245
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
246
+ 📊 QUALITY GATE [3]
247
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
248
+ Score: 100/100 ✅ PASSED
249
+
250
+ ✅ Quality Gate PASSED - proceeding to GPT/Gemini review
251
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
252
+ ```
253
+
254
+ **Stuck case (auto-fixer limit reached):**
255
+ ```
256
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
257
+ 📊 QUALITY GATE [4]
258
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
259
+ Score: 87/100 ⚠️ STUCK (same as previous iteration)
260
+
261
+ Auto-fixer hit a wall. These items need human input:
262
+ ❌ Business rule: monthly subscription renewal grace period (days?)
263
+ ❌ Target latency for search API (<?ms)
264
+ ❌ Data retention policy for audit logs (how many days?)
265
+
266
+ How would you like to proceed?
267
+ 1. Provide the values directly (e.g., "grace period 7 days, search 500ms, audit logs 90 days")
268
+ → Values will be applied and the score re-evaluated (100 may be reachable)
269
+ 2. "proceed" — Accept the current score, record remaining items as TODO, then continue to Step 3
270
+ 3. "abort" — Stop the workflow
271
+
272
+ (In ultrawork mode, this prompt is skipped — TODO is auto-recorded and execution continues)
273
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
274
+ ```
275
+
276
+ ### 2.3 Auto-Fix Rules
277
+
278
+ | Missing Item | Auto-Fix Method |
279
+ |--------------|-----------------|
280
+ | Missing AC | Auto-generate AC based on Task |
281
+ | Numbers not specified | Apply project defaults (timeout 30s, etc.) |
282
+ | Missing error handling | Add common error scenarios |
283
+ | Missing performance targets | Apply industry standard criteria |
284
+ | Missing security | Add auth/data protection requirements |
285
+ | Ambiguous terms | Replace with specific values |
286
+
287
+ ---
288
+
289
+ ## Step 3: Race Review (GPT + Gemini Cross-Validation) - Convergence-Based (No Round Cap)
290
+
291
+ **RULES FOR RACE REVIEW:**
292
+
293
+ 1. **YOU MUST** use the Bash tool to call `llm-orchestrate.js` directly
294
+ 2. **DO NOT** simulate or fake review results
295
+ 3. Run rounds sequentially (each round uses updated SPEC)
296
+ 4. **No hard round cap** — loop until P1=0 AND no new findings (convergence)
297
+
298
+ > Race Mode reviews SPEC with GPT and Gemini in parallel, then cross-validates findings for higher confidence. The loop continues until quality converges naturally.
299
+
300
+ ### Termination Rules
301
+
302
+ - **P1 = 0 AND no new findings this round** → converged, stop (primary success)
303
+ - **Round 1 with P1 = 0 AND no P2/P3** → perfect on first try, stop (early success)
304
+ - **Round N findings == Round N-1 findings** → **stuck**: LLMs keep flagging same issues that auto-applier can't resolve → **ask the user** (see 3.2.1)
305
+
306
+ ### Stuck Handling (3.2.1)
307
+
308
+ When the same findings repeat across rounds, the auto-apply loop has hit a wall. This typically means:
309
+ - The fix requires human judgment (architectural trade-off, domain rule, etc.)
310
+ - The LLMs are producing a false positive that the auto-applier can't dismiss
311
+ - The suggested fix conflicts with an existing constraint
312
+
313
+ **Interactive mode** — prompt the user:
314
+
315
+ ```
316
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
317
+ ⚠️ RACE REVIEW STUCK at Round {N}
318
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
319
+
320
+ Same findings repeated from Round {N-1}. Auto-applier cannot resolve:
321
+
322
+ | # | Issue | Severity | GPT | Gemini | Reason it's stuck |
323
+ |---|-------|----------|-----|--------|-------------------|
324
+ | 1 | {issue title} | P1 | ✅ | ✅ | {e.g., "fix requires domain decision"} |
325
+ | 2 | {issue title} | P2 | ✅ | ❌ | {e.g., "conflicts with existing constraint"} |
326
+
327
+ How would you like to proceed?
328
+ 1. Provide a resolution directly (e.g., "issue 1: retry 5 times, issue 2: ignore")
329
+ → Changes will be applied and the next round re-run
330
+ 2. "proceed" — Record current issues as TODO and continue to Step 4
331
+ 3. "abort" — Stop the workflow
332
+
333
+ (In ultrawork mode, this prompt is skipped — TODO is auto-recorded and execution continues)
334
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
335
+ ```
336
+
337
+ **Pseudocode:**
338
+
339
+ ```python
340
+ if current_findings == prev_findings:
341
+ if ultrawork_mode:
342
+ print("ℹ️ ultrawork mode — recording stuck issues to TODO and proceeding")
343
+ record_todo(current_findings)
344
+ break
345
+
346
+ user_input = ask_user(
347
+ "Race Review stuck. Please either:\n"
348
+ " 1. Provide resolution for the listed issues\n"
349
+ " 2. Type 'proceed' to record as TODO and continue to Step 4\n"
350
+ " 3. Type 'abort' to stop the workflow"
351
+ )
352
+
353
+ if user_input == "abort":
354
+ raise WorkflowAborted("User aborted at Race Review")
355
+ if user_input == "proceed":
356
+ record_todo(current_findings)
357
+ break
358
+ # otherwise: apply user-provided resolutions → next round
359
+ apply_user_resolutions(user_input)
360
+ continue # re-run the round with updated SPEC
361
+ ```
362
+
363
+ ### Narrowing Scope (Noise Reduction)
364
+
365
+ To prevent LLM cosmetic noise from causing infinite loops while still reaching 100% quality:
366
+
367
+ | Round | Scope |
368
+ |-------|-------|
369
+ | 1 | Full scope (P1 + P2 + P3) |
370
+ | 2 | P1 + P2 only |
371
+ | 3+ | P1 only (until P1=0 or convergence) |
372
+
373
+ ### 3.1 Review Loop (No Round Cap)
374
+
375
+ **Run GPT + Gemini in PARALLEL via Bash tool for each round. Stop when termination rules trigger.**
376
+
377
+ **🚨 IMPORTANT: SPEC content is too large for CLI arguments. Use --input file method (no pipe needed).**
378
+
379
+ **Procedure for each round:**
380
+
381
+ **Step A: Save SPEC content + prompt as JSON to scratchpad temp file (using Write tool):**
382
+ - Write JSON to `[SCRATCHPAD]/spec-review-input.json` with content:
383
+ ```json
384
+ {"prompt": "Review this SPEC for completeness, specificity, testability, security, and performance. Round [N] (scope: [SCOPE]). Find issues and improvements. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: [SPEC_CONTENT]"}
385
+ ```
386
+ - Where `[SPEC_CONTENT]` is the full SPEC text (properly JSON-escaped inside the prompt string)
387
+ - `[SCOPE]` is `P1+P2+P3` for round 1, `P1+P2` for round 2, `P1` for rounds 3+
388
+
389
+ **Step B: Script path:**
390
+ - `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
391
+
392
+ **Step C: Run GPT + Gemini in PARALLEL (two separate Bash tool calls at once):**
393
+
394
+ ```bash
395
+ # GPT review (Bash tool call 1)
396
+ node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/spec-review-input.json"
397
+ ```
398
+
399
+ ```bash
400
+ # Gemini review (Bash tool call 2 - run in parallel with GPT)
401
+ node "[LLM_SCRIPT]" gemini orchestrate-json --input "[SCRATCHPAD]/spec-review-input.json"
402
+ ```
403
+
404
+ **🚨 MANDATORY: Replace `[SCRATCHPAD]` with the actual scratchpad directory path.**
405
+ **🚨 Replace `[N]` with the current round number (1, 2, 3, ...).**
406
+ **🚨 Replace `[LLM_SCRIPT]` with the resolved absolute path from Step B.**
407
+ **🚨 Run GPT and Gemini calls in PARALLEL (two separate Bash tool calls at once).**
408
+
409
+ - Round 1: Write SPEC → Run GPT + Gemini in parallel (full scope) → Cross-validate → Apply fixes → Update SPEC file
410
+ - Round 2: Write updated SPEC → Run (P1+P2 scope) → Cross-validate → Apply fixes → Update SPEC file
411
+ - Round 3+: Write updated SPEC → Run (P1-only scope) → Cross-validate → Apply fixes → Continue until P1=0 AND no new findings (or convergence detected)
412
+
413
+ ### 3.2 Cross-Validation Rules
414
+
415
+ | Agreement | Priority | Action |
416
+ |-----------|----------|--------|
417
+ | Both models agree (100%) | P1 | Auto-apply immediately |
418
+ | 1 model only (50%) | P2 | Auto-apply with note |
419
+
420
+ **After each round:**
421
+
422
+ 1. Cross-validate findings (issues found by 2+ models → P1, single model → P2)
423
+ 2. Merge feedback with confidence scores
424
+ 3. Auto-apply P1/P2 improvements to SPEC and Feature files (use Edit tool)
425
+ 4. Continue to next round with updated SPEC content
426
+
427
+ ### 3.3 User Decision Checkpoint (After Convergence)
428
+
429
+ **🚨 MANDATORY: Run user judgment checkpoint when the review loop reaches convergence**
430
+
431
+ > Type 6 (Iterative-Reasoning) pattern: AI does not decide alone — judges together with the user
432
+
433
+ ```
434
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
435
+ 🔍 USER CHECKPOINT: Review Results
436
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
437
+
438
+ Key changes found across {N} review rounds:
439
+
440
+ | # | Change | Source | Confidence |
441
+ |---|--------|--------|------------|
442
+ | 1 | {change1} | GPT+Gemini | 100% |
443
+ | 2 | {change2} | GPT only | 50% |
444
+ | ... | ... | ... | ... |
445
+
446
+ Questions:
447
+ 1. Are there any changes above you'd like to exclude?
448
+ 2. Are there any additional requirements that should be specified?
449
+ 3. Do you agree with the technical approach?
450
+
451
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
452
+ ```
453
+
454
+ **Checkpoint action rules:**
455
+
456
+ | Situation | Action |
457
+ |-----------|--------|
458
+ | `ultrawork` mode | Skip checkpoint, auto-proceed |
459
+ | Normal mode | Must wait for user response |
460
+ | User requests changes | Apply changes, then re-run checkpoint |
461
+ | User approves | Proceed to Step 4 |
462
+
463
+ **Output format:**
464
+ ```
465
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
466
+ 🏁 SPEC RACE REVIEW - Round 1 (scope: P1+P2+P3)
467
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
468
+
469
+ Model Results:
470
+ | Model | Issues | Duration |
471
+ |--------|--------|----------|
472
+ | GPT | 2 | 1823ms |
473
+ | Gemini | 2 | 2156ms |
474
+
475
+ Cross-Validated Issues:
476
+ | Issue | GPT | Gemini | Codex | Confidence |
477
+ |--------------------------|-----|--------|-------|------------|
478
+ | Missing retry logic | ✅ | ✅ | ✅ | 100% → P1 |
479
+ | Missing rate limiting | ✅ | ✅ | ✅ | 100% → P1 |
480
+ | Token refresh unclear | ✅ | ❌ | ❌ | 50% → P2 |
481
+
482
+ Auto-applying...
483
+ ✅ [P1] Added retry logic (3 attempts, exponential backoff)
484
+ ✅ [P1] Added rate limiting (100 req/min)
485
+ ✅ [P2] Added token refresh flow
486
+
487
+ ✅ Round 1 complete - 3 improvements (2 P1, 1 P2)
488
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
489
+
490
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
491
+ 🏁 SPEC RACE REVIEW - Round 2 (scope: P1+P2)
492
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
493
+
494
+ Cross-Validated Issues:
495
+ | Issue | GPT | Gemini | Codex | Confidence |
496
+ |-----------------------------|-----|--------|-------|------------|
497
+ | Concurrent session unclear | ✅ | ❌ | ❌ | 50% → P2 |
498
+
499
+ Auto-applying...
500
+ ✅ [P2] Added concurrent session policy
501
+
502
+ ✅ Round 2 complete - 1 improvement
503
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
504
+
505
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
506
+ 🏁 SPEC RACE REVIEW - Round 3 (scope: P1)
507
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
508
+
509
+ Cross-Validated Issues: None
510
+
511
+ ✅ Converged: P1 = 0 AND no new findings
512
+ ✅ Consensus Rate: 100%
513
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
514
+ ```
515
+
516
+ > If new P1s appear at round 3, the loop continues to round 4, 5, ... until convergence.
517
+
518
+ ### Step 3.1: Codex Adversarial Review (When Codex Plugin Is Active)
519
+
520
+ > **Activation condition**: Automatically runs when Codex plugin is installed. Skipped if not installed.
521
+ > Runs **simultaneously** with GPT+Gemini Race Review for triple cross-validation.
522
+
523
+ Codex adversarial review **challenges the design decisions** in the SPEC:
524
+ - Validates whether an alternative architecture would be better
525
+ - Checks for over-engineering or under-engineering
526
+ - Identifies missing edge cases and non-functional requirements
527
+
528
+ **Execution (parallel with GPT+Gemini Race):**
529
+
530
+ ```
531
+ /codex:adversarial-review
532
+ ```
533
+
534
+ **Result integration**: Add Codex column to the Race Review cross-validation table:
535
+
536
+ ```markdown
537
+ | Issue | GPT | Gemini | Codex | Confidence |
538
+ |-------|-----|--------|-------|------------|
539
+ | {issue} | ✅/❌ | ✅/❌ | ✅/❌ | {%} |
540
+ ```
541
+
542
+ - 2 or more of 3 models agree → **High Confidence**
543
+ - Issue found only by Codex → **P2** (requires design perspective review)
544
+ - All 3 models agree → **P1** (fix immediately)
545
+
546
+ ---
547
+
548
+ ## Step 3.5: Review Debate Team (Agent Teams)
549
+
550
+ > **Team definition**: See `agents/teams/review-debate-team.md` (SPEC Review context)
551
+ > **Condition**: Agent Teams enabled + 2 or more P1/P2 issues found after review loop convergence
552
+
553
+ **Activation conditions:**
554
+
555
+ | Situation | Action |
556
+ |-----------|--------|
557
+ | 2 or more P1/P2 issues | Auto-activate |
558
+ | 1 or fewer P1/P2 issues | Skip → proceed to Step 4 |
559
+ | Agent Teams disabled | Skip → proceed to Step 4 |
560
+
561
+ **Result integration:**
562
+ - Apply team consensus results to SPEC (P1 applied immediately, P2 added as notes)
563
+ - Team member shutdown_request → clean up with TeamDelete
564
+ - Proceed to Step 4 (Final Summary)
565
+
566
+ ---
567
+
568
+ ## Step 4: Final Summary
569
+
570
+ ```
571
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
572
+ ✅ SPEC REVIEW COMPLETE: {feature-name}
573
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
574
+
575
+ Quality Score: 100/100 ✅
576
+ Review Rounds: {N} (converged: P1=0, no new findings) ✅
577
+ Total Improvements: {M}
578
+ ⏱️ Started: {start_time}
579
+ ⏱️ Completed: {getCurrentTime result}
580
+
581
+ Updated files:
582
+ 📋 .claude/vibe/specs/{feature-name}.md (or split folder)
583
+ 📋 .claude/vibe/features/{feature-name}.feature (or split folder)
584
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
585
+ ```
586
+
587
+ ---
588
+
589
+ ## Step 5: SPEC Summary for User Review
590
+
591
+ **🚨 MANDATORY: Always output this summary before proceeding to `/vibe.run`.**
592
+
593
+ After all review rounds, present the finalized SPEC to the user in a readable format:
594
+
595
+ ```
596
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
597
+ 📋 SPEC SUMMARY: {feature-name}
598
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
599
+
600
+ ## Feature Overview
601
+ {1-2 line summary of feature purpose from SPEC's <role> and <context>}
602
+
603
+ ## Tech Stack
604
+ {Tech stack list extracted from <context>}
605
+
606
+ ## Implementation Phases
607
+ | Phase | Name | Key Tasks |
608
+ |-------|------|-----------|
609
+ | 1 | {phase name} | {1-line summary of core task} |
610
+ | 2 | {phase name} | {1-line summary of core task} |
611
+ | ... | ... | ... |
612
+
613
+ ## Key Scenarios ({N} total)
614
+ {Scenario name list from Feature file}
615
+ - Scenario: {name1}
616
+ - Scenario: {name2}
617
+ - ...
618
+
619
+ ## Key Constraints
620
+ {3-5 key items from <constraints>}
621
+
622
+ ## Acceptance Criteria
623
+ {Summary of key items from <acceptance>}
624
+
625
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
626
+ If anything above is incorrect, please request changes.
627
+ If no issues, proceed with /vibe.run "{feature-name}".
628
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
629
+ ```
630
+
631
+ **Important:**
632
+
633
+ - List ALL Phases, Scenarios, and Constraints from SPEC without omission
634
+ - Keep it concise for quick user review
635
+ - Wait for user confirmation after review (unless ultrawork mode)
636
+ - In ultrawork mode: output summary then auto-proceed to `/vibe.run`
637
+
638
+ ### 5.1 Final User Checkpoint
639
+
640
+ **🚨 MANDATORY: Final user confirmation before proceeding to `/vibe.run`**
641
+
642
+ ```
643
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
644
+ ✅ SPEC Review Complete - Final Confirmation
645
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
646
+
647
+ Please answer the following questions:
648
+
649
+ 1. **Requirements accuracy**: Does the SPEC above accurately describe the originally intended feature?
650
+ 2. **Scope appropriateness**: Is the implementation scope neither too large nor too small?
651
+ 3. **Tech stack**: Do you agree with the chosen tech stack?
652
+ 4. **Priority**: Is the Phase order and priority correct?
653
+
654
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
655
+ 💡 Type "ok" or "proceed" to approve / share any changes you'd like made
656
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
657
+ ```
658
+
659
+ **Why This Checkpoint Matters:**
660
+
661
+ > More AI doing more is not always better.
662
+ > The best results come when the user thinks and judges together with AI.
663
+ > This checkpoint induces the Type 6 (Iterative-Reasoning) pattern.
664
+
665
+ ---
666
+
667
+ ## Next Step
668
+
669
+ ```
670
+ /vibe.run "{feature-name}"
671
+ ```
672
+
673
+ ---
674
+
675
+ ## Error Handling
676
+
677
+ ### SPEC Not Found
678
+ ```
679
+ ❌ ERROR: SPEC file not found
680
+
681
+ Expected (single): .claude/vibe/specs/{feature-name}.md
682
+ Expected (split): .claude/vibe/specs/{feature-name}/_index.md
683
+
684
+ Please run /vibe.spec "{feature-name}" first to create the SPEC.
685
+ ```
686
+
687
+ ### Feature Not Found
688
+ ```
689
+ ❌ ERROR: Feature file not found
690
+
691
+ Expected (single): .claude/vibe/features/{feature-name}.feature
692
+ Expected (split): .claude/vibe/features/{feature-name}/_index.feature
693
+
694
+ Please run /vibe.spec "{feature-name}" first to create the Feature file.
695
+ ```
696
+
697
+ ### GPT/Gemini Call Failed
698
+ ```
699
+ ⚠️ WARNING: {GPT|Gemini} call failed
700
+
701
+ Error: {error message}
702
+
703
+ Continuing with {other model} results only...
704
+ ```
705
+
706
+ ---
707
+
708
+ ## Quick Mode
709
+
710
+ For faster iteration (1 round only): pass `--quick` flag when invoking the skill (or via `/vibe.spec "feature-name" --quick` orchestrator).
711
+
712
+ ---
713
+
714
+ ARGUMENTS: $ARGUMENTS
715
+
716
+ **File Detection (execute before Step 1):**
717
+
718
+ ```
719
+ Feature name: $ARGUMENTS
720
+
721
+ 1. Check split folder: .claude/vibe/specs/$ARGUMENTS/_index.md
722
+ - If exists → Split mode (read all files in folder)
723
+ 2. Check single file: .claude/vibe/specs/$ARGUMENTS.md
724
+ - If exists → Single mode
725
+ 3. Neither exists → Show error with both expected paths
726
+ ```