@su-record/vibe 2.9.22 → 2.9.23

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 (466) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +105 -105
  3. package/LICENSE +21 -21
  4. package/agents/architect-low.md +41 -41
  5. package/agents/architect-medium.md +59 -59
  6. package/agents/architect.md +80 -80
  7. package/agents/build-error-resolver.md +115 -115
  8. package/agents/compounder.md +261 -261
  9. package/agents/diagrammer.md +178 -178
  10. package/agents/docs/api-documenter.md +99 -99
  11. package/agents/docs/changelog-writer.md +93 -93
  12. package/agents/e2e-tester.md +294 -294
  13. package/agents/event/event-comms.md +78 -78
  14. package/agents/event/event-content.md +68 -68
  15. package/agents/event/event-image.md +95 -95
  16. package/agents/event/event-ops.md +84 -84
  17. package/agents/event/event-scheduler.md +69 -69
  18. package/agents/event/event-speaker.md +86 -86
  19. package/agents/explorer-low.md +42 -42
  20. package/agents/explorer-medium.md +59 -59
  21. package/agents/explorer.md +48 -48
  22. package/agents/implementer-low.md +43 -43
  23. package/agents/implementer-medium.md +52 -52
  24. package/agents/implementer.md +54 -54
  25. package/agents/junior-mentor.md +141 -141
  26. package/agents/planning/requirements-analyst.md +84 -84
  27. package/agents/planning/ux-advisor.md +83 -83
  28. package/agents/qa/acceptance-tester.md +86 -86
  29. package/agents/qa/edge-case-finder.md +93 -93
  30. package/agents/qa/qa-coordinator.md +131 -131
  31. package/agents/refactor-cleaner.md +143 -143
  32. package/agents/research/best-practices-agent.md +199 -199
  33. package/agents/research/codebase-patterns-agent.md +157 -157
  34. package/agents/research/framework-docs-agent.md +188 -188
  35. package/agents/research/security-advisory-agent.md +213 -213
  36. package/agents/review/architecture-reviewer.md +107 -107
  37. package/agents/review/complexity-reviewer.md +116 -116
  38. package/agents/review/data-integrity-reviewer.md +88 -88
  39. package/agents/review/git-history-reviewer.md +103 -103
  40. package/agents/review/performance-reviewer.md +86 -86
  41. package/agents/review/python-reviewer.md +150 -150
  42. package/agents/review/rails-reviewer.md +139 -139
  43. package/agents/review/react-reviewer.md +144 -144
  44. package/agents/review/security-reviewer.md +80 -80
  45. package/agents/review/simplicity-reviewer.md +140 -140
  46. package/agents/review/test-coverage-reviewer.md +116 -116
  47. package/agents/review/typescript-reviewer.md +127 -127
  48. package/agents/searcher.md +54 -54
  49. package/agents/simplifier.md +120 -120
  50. package/agents/teams/debug-team.md +70 -70
  51. package/agents/teams/dev-team.md +88 -88
  52. package/agents/teams/docs-team.md +80 -80
  53. package/agents/teams/figma/figma-analyst.md +52 -52
  54. package/agents/teams/figma/figma-architect.md +112 -112
  55. package/agents/teams/figma/figma-auditor.md +82 -82
  56. package/agents/teams/figma/figma-builder.md +100 -100
  57. package/agents/teams/figma-team.md +85 -85
  58. package/agents/teams/fullstack-team.md +83 -83
  59. package/agents/teams/lite-team.md +69 -69
  60. package/agents/teams/migration-team.md +78 -78
  61. package/agents/teams/refactor-team.md +94 -94
  62. package/agents/teams/research-team.md +86 -86
  63. package/agents/teams/review-debate-team.md +125 -125
  64. package/agents/teams/security-team.md +81 -81
  65. package/agents/tester.md +49 -49
  66. package/agents/ui/ui-a11y-auditor.md +93 -93
  67. package/agents/ui/ui-antipattern-detector.md +102 -102
  68. package/agents/ui/ui-dataviz-advisor.md +69 -69
  69. package/agents/ui/ui-design-system-gen.md +57 -57
  70. package/agents/ui/ui-industry-analyzer.md +49 -49
  71. package/agents/ui/ui-layout-architect.md +65 -65
  72. package/agents/ui/ui-stack-implementer.md +68 -68
  73. package/agents/ui/ux-compliance-reviewer.md +81 -81
  74. package/agents/ui-previewer.md +258 -258
  75. package/commands/vibe.analyze.md +533 -533
  76. package/commands/vibe.contract.md +105 -105
  77. package/commands/vibe.docs.md +33 -33
  78. package/commands/vibe.event.md +163 -163
  79. package/commands/vibe.figma.md +584 -584
  80. package/commands/vibe.harness.md +177 -177
  81. package/commands/vibe.regress.md +73 -73
  82. package/commands/vibe.review.md +624 -624
  83. package/commands/vibe.run.md +1940 -1940
  84. package/commands/vibe.scaffold.md +195 -195
  85. package/commands/vibe.spec.md +577 -577
  86. package/commands/vibe.test.md +96 -96
  87. package/commands/vibe.trace.md +276 -276
  88. package/commands/vibe.utils.md +413 -413
  89. package/commands/vibe.verify.md +550 -550
  90. package/dist/cli/collaborator.js +52 -52
  91. package/dist/cli/commands/codex-proxy.js +15 -15
  92. package/dist/cli/commands/config.js +9 -9
  93. package/dist/cli/commands/evolution.js +12 -12
  94. package/dist/cli/commands/figma.js +20 -20
  95. package/dist/cli/commands/info.js +52 -52
  96. package/dist/cli/commands/init.d.ts.map +1 -1
  97. package/dist/cli/commands/init.js +16 -5
  98. package/dist/cli/commands/init.js.map +1 -1
  99. package/dist/cli/commands/remove.js +14 -14
  100. package/dist/cli/commands/sentinel.js +27 -27
  101. package/dist/cli/commands/skills.js +5 -5
  102. package/dist/cli/commands/slack.js +10 -10
  103. package/dist/cli/commands/stats.js +6 -6
  104. package/dist/cli/commands/telegram.js +12 -12
  105. package/dist/cli/commands/update.d.ts.map +1 -1
  106. package/dist/cli/commands/update.js +16 -0
  107. package/dist/cli/commands/update.js.map +1 -1
  108. package/dist/cli/detect.js +32 -32
  109. package/dist/cli/index.js +33 -33
  110. package/dist/cli/llm/claude-commands.js +16 -16
  111. package/dist/cli/llm/config.js +18 -18
  112. package/dist/cli/llm/gemini-commands.js +16 -16
  113. package/dist/cli/llm/gpt-commands.js +19 -19
  114. package/dist/cli/llm/help.js +21 -21
  115. package/dist/cli/postinstall/cursor-agents.js +32 -32
  116. package/dist/cli/postinstall/cursor-rules.js +83 -83
  117. package/dist/cli/postinstall/cursor-skills.js +743 -743
  118. package/dist/cli/setup/Provisioner.js +42 -42
  119. package/dist/infra/lib/DeepInit.js +24 -24
  120. package/dist/infra/lib/IterationTracker.js +11 -11
  121. package/dist/infra/lib/PythonParser.js +108 -108
  122. package/dist/infra/lib/ReviewRace.js +96 -96
  123. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  124. package/dist/infra/lib/SkillQualityGate.js +9 -9
  125. package/dist/infra/lib/SkillRepository.js +159 -159
  126. package/dist/infra/lib/UltraQA.js +99 -99
  127. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  128. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  129. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  130. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  131. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  132. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  133. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  134. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  135. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  136. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  137. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  138. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  139. package/dist/infra/lib/evolution/ParityTester.js +57 -57
  140. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  141. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  142. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  143. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  144. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  145. package/dist/infra/lib/gemini/orchestration.js +5 -5
  146. package/dist/infra/lib/gpt/orchestration.js +4 -4
  147. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  148. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  149. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  150. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  151. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  152. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  153. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  154. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  155. package/dist/infra/orchestrator/AgentManager.js +12 -12
  156. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  157. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  158. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  159. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  160. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  161. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  162. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  163. package/dist/tools/memory/getMemoryGraph.js +12 -12
  164. package/dist/tools/memory/getSessionContext.js +9 -9
  165. package/dist/tools/memory/linkMemories.js +14 -14
  166. package/dist/tools/memory/listMemories.js +4 -4
  167. package/dist/tools/memory/recallMemory.js +4 -4
  168. package/dist/tools/memory/saveMemory.js +4 -4
  169. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  170. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  171. package/dist/tools/semantic/astGrep.test.js +6 -6
  172. package/dist/tools/spec/prdParser.test.js +171 -171
  173. package/dist/tools/spec/specGenerator.js +169 -169
  174. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  175. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  176. package/hooks/gemini-hooks.json +73 -73
  177. package/hooks/hooks.json +126 -126
  178. package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
  179. package/hooks/scripts/__tests__/pre-tool-guard.test.js +368 -368
  180. package/hooks/scripts/__tests__/sentinel-guard.test.js +208 -208
  181. package/hooks/scripts/auto-commit.js +97 -97
  182. package/hooks/scripts/auto-format.js +64 -64
  183. package/hooks/scripts/auto-test.js +81 -81
  184. package/hooks/scripts/code-check.js +268 -268
  185. package/hooks/scripts/codex-detect.js +46 -46
  186. package/hooks/scripts/codex-review-gate.js +80 -80
  187. package/hooks/scripts/command-log.js +32 -32
  188. package/hooks/scripts/context-save.js +353 -353
  189. package/hooks/scripts/evolution-engine.js +91 -91
  190. package/hooks/scripts/figma-extract.js +635 -635
  191. package/hooks/scripts/figma-guard.js +219 -219
  192. package/hooks/scripts/figma-refine.js +315 -315
  193. package/hooks/scripts/figma-to-scss.js +394 -394
  194. package/hooks/scripts/figma-validate.js +353 -353
  195. package/hooks/scripts/hud-status.js +321 -321
  196. package/hooks/scripts/keyword-detector.js +214 -214
  197. package/hooks/scripts/lib/scope-from-spec.js +261 -0
  198. package/hooks/scripts/llm-orchestrate.js +645 -645
  199. package/hooks/scripts/post-edit.js +32 -32
  200. package/hooks/scripts/pr-test-gate.js +52 -52
  201. package/hooks/scripts/pre-tool-dispatcher.js +5 -0
  202. package/hooks/scripts/pre-tool-guard.js +254 -254
  203. package/hooks/scripts/prompt-dispatcher.js +190 -190
  204. package/hooks/scripts/scope-guard.js +145 -0
  205. package/hooks/scripts/sentinel-guard.js +130 -130
  206. package/hooks/scripts/session-start.js +186 -177
  207. package/hooks/scripts/skill-injector.js +83 -83
  208. package/hooks/scripts/stop-notify.js +209 -209
  209. package/hooks/scripts/utils.js +257 -257
  210. package/languages/csharp-unity.md +515 -515
  211. package/languages/gdscript-godot.md +470 -470
  212. package/languages/ruby-rails.md +489 -489
  213. package/languages/typescript-angular.md +433 -433
  214. package/languages/typescript-astro.md +416 -416
  215. package/languages/typescript-electron.md +406 -406
  216. package/languages/typescript-nestjs.md +524 -524
  217. package/languages/typescript-svelte.md +407 -407
  218. package/languages/typescript-tauri.md +365 -365
  219. package/package.json +10 -5
  220. package/skills/agents-md/SKILL.md +121 -121
  221. package/skills/agents-md/rubrics/what-to-keep.md +49 -49
  222. package/skills/agents-md/templates/agents-md.md +36 -36
  223. package/skills/arch-guard/SKILL.md +181 -181
  224. package/skills/arch-guard/agents/detector.md +48 -48
  225. package/skills/arch-guard/agents/reporter.md +48 -48
  226. package/skills/arch-guard/agents/rule-generator.md +49 -49
  227. package/skills/arch-guard/agents/violation-checker.md +51 -51
  228. package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
  229. package/skills/arch-guard/frameworks/solid.md +102 -102
  230. package/skills/arch-guard/scripts/check-boundaries.js +90 -90
  231. package/skills/arch-guard/templates/arch-rules.json +47 -47
  232. package/skills/arch-guard/templates/violation-report.md +53 -53
  233. package/skills/brand-assets/SKILL.md +147 -147
  234. package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
  235. package/skills/brand-assets/templates/brand-guide.md +161 -161
  236. package/skills/capability-loop/SKILL.md +272 -272
  237. package/skills/capability-loop/agents/capability-designer.md +61 -61
  238. package/skills/capability-loop/agents/failure-analyst.md +55 -55
  239. package/skills/capability-loop/agents/implementer.md +50 -50
  240. package/skills/capability-loop/agents/tester.md +53 -53
  241. package/skills/capability-loop/templates/capability-spec.md +118 -118
  242. package/skills/capability-loop/templates/failure-analysis.md +118 -118
  243. package/skills/characterization-test/SKILL.md +207 -207
  244. package/skills/characterization-test/agents/behavior-capturer.md +50 -50
  245. package/skills/characterization-test/agents/coverage-checker.md +54 -54
  246. package/skills/characterization-test/agents/reporter.md +50 -50
  247. package/skills/characterization-test/agents/test-writer.md +49 -49
  248. package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
  249. package/skills/characterization-test/templates/test-template.ts +101 -101
  250. package/skills/chub-usage/SKILL.md +139 -139
  251. package/skills/claude-md-guide/SKILL.md +351 -351
  252. package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
  253. package/skills/claude-md-guide/templates/claude-md.md +54 -54
  254. package/skills/commerce-patterns/SKILL.md +64 -64
  255. package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
  256. package/skills/commerce-patterns/templates/product-schema.md +85 -85
  257. package/skills/commit-push-pr/SKILL.md +77 -77
  258. package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
  259. package/skills/commit-push-pr/agents/message-writer.md +50 -50
  260. package/skills/commit-push-pr/agents/pr-writer.md +58 -58
  261. package/skills/commit-push-pr/agents/reviewer.md +52 -52
  262. package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
  263. package/skills/commit-push-pr/templates/pr-body.md +63 -63
  264. package/skills/context7-usage/SKILL.md +106 -106
  265. package/skills/context7-usage/rubrics/when-to-use.md +50 -50
  266. package/skills/create-prd/SKILL.md +90 -90
  267. package/skills/create-prd/agents/edge-case-finder.md +48 -48
  268. package/skills/create-prd/agents/prioritizer.md +60 -60
  269. package/skills/create-prd/agents/requirements-writer.md +48 -48
  270. package/skills/create-prd/agents/researcher.md +55 -55
  271. package/skills/create-prd/agents/reviewer.md +54 -54
  272. package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
  273. package/skills/create-prd/frameworks/rice-scoring.md +97 -97
  274. package/skills/create-prd/orchestrator.md +70 -70
  275. package/skills/create-prd/rubrics/completeness.md +58 -58
  276. package/skills/create-prd/templates/prd.md +139 -139
  277. package/skills/design-audit/SKILL.md +152 -152
  278. package/skills/design-audit/agents/a11y-auditor.md +43 -43
  279. package/skills/design-audit/agents/performance-auditor.md +46 -46
  280. package/skills/design-audit/agents/responsive-auditor.md +46 -46
  281. package/skills/design-audit/agents/scorer.md +47 -47
  282. package/skills/design-audit/agents/slop-detector.md +47 -47
  283. package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
  284. package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
  285. package/skills/design-audit/orchestrator.md +64 -64
  286. package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
  287. package/skills/design-audit/rubrics/scoring.md +63 -63
  288. package/skills/design-audit/templates/report.md +88 -88
  289. package/skills/design-critique/SKILL.md +139 -139
  290. package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
  291. package/skills/design-critique/templates/critique-report.md +86 -86
  292. package/skills/design-distill/SKILL.md +130 -130
  293. package/skills/design-distill/templates/design-system.md +132 -132
  294. package/skills/design-normalize/SKILL.md +133 -133
  295. package/skills/design-normalize/rubrics/token-naming.md +117 -117
  296. package/skills/design-normalize/templates/token-audit.md +89 -89
  297. package/skills/design-polish/SKILL.md +131 -131
  298. package/skills/design-polish/rubrics/polish-checklist.md +68 -68
  299. package/skills/design-polish/templates/polish-report.md +64 -64
  300. package/skills/design-teach/SKILL.md +182 -182
  301. package/skills/design-teach/rubrics/brand-personality.md +73 -73
  302. package/skills/design-teach/templates/design-context.json +36 -36
  303. package/skills/devlog/SKILL.md +143 -143
  304. package/skills/e2e-commerce/SKILL.md +62 -62
  305. package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
  306. package/skills/event-comms/SKILL.md +172 -172
  307. package/skills/event-comms/templates/email-invite.md +99 -99
  308. package/skills/event-comms/templates/sns-post.md +133 -133
  309. package/skills/event-ops/SKILL.md +207 -207
  310. package/skills/event-ops/rubrics/contingency.md +85 -85
  311. package/skills/event-ops/templates/d-day-checklist.md +65 -65
  312. package/skills/event-planning/SKILL.md +144 -144
  313. package/skills/event-planning/rubrics/timeline.md +70 -70
  314. package/skills/event-planning/templates/event-plan.md +91 -91
  315. package/skills/exec-plan/SKILL.md +149 -149
  316. package/skills/exec-plan/agents/decomposer.md +47 -47
  317. package/skills/exec-plan/agents/dependency-mapper.md +44 -44
  318. package/skills/exec-plan/agents/estimator.md +43 -43
  319. package/skills/exec-plan/agents/validator.md +55 -55
  320. package/skills/exec-plan/orchestrator.md +70 -70
  321. package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
  322. package/skills/exec-plan/templates/plan.md +147 -147
  323. package/skills/git-worktree/SKILL.md +73 -73
  324. package/skills/git-worktree/rubrics/when-to-use.md +55 -55
  325. package/skills/handoff/SKILL.md +110 -110
  326. package/skills/handoff/agents/context-summarizer.md +51 -51
  327. package/skills/handoff/agents/document-writer.md +63 -63
  328. package/skills/handoff/agents/state-collector.md +53 -53
  329. package/skills/handoff/agents/verifier.md +48 -48
  330. package/skills/handoff/rubrics/completeness.md +62 -62
  331. package/skills/handoff/templates/handoff.md +107 -107
  332. package/skills/parallel-research/SKILL.md +104 -104
  333. package/skills/parallel-research/agents/best-practices.md +43 -43
  334. package/skills/parallel-research/agents/codebase-patterns.md +46 -46
  335. package/skills/parallel-research/agents/framework-docs.md +45 -45
  336. package/skills/parallel-research/agents/security-advisory.md +46 -46
  337. package/skills/parallel-research/agents/synthesizer.md +57 -57
  338. package/skills/parallel-research/experts/best-practices.md +50 -50
  339. package/skills/parallel-research/experts/codebase-patterns.md +70 -70
  340. package/skills/parallel-research/experts/framework-docs.md +65 -65
  341. package/skills/parallel-research/experts/security-advisory.md +69 -69
  342. package/skills/parallel-research/orchestrator.md +79 -79
  343. package/skills/parallel-research/templates/awesome-list.md +32 -32
  344. package/skills/parallel-research/templates/paper.md +88 -88
  345. package/skills/parallel-research/templates/synthesis.md +101 -101
  346. package/skills/prioritization-frameworks/SKILL.md +87 -87
  347. package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
  348. package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
  349. package/skills/priority-todos/SKILL.md +64 -64
  350. package/skills/priority-todos/rubrics/prioritization.md +70 -70
  351. package/skills/priority-todos/templates/todo-board.md +59 -59
  352. package/skills/seo-checklist/SKILL.md +58 -58
  353. package/skills/seo-checklist/frameworks/structured-data.md +153 -153
  354. package/skills/seo-checklist/rubrics/content-seo.md +42 -42
  355. package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
  356. package/skills/techdebt/SKILL.md +124 -124
  357. package/skills/techdebt/agents/analyzer.md +50 -50
  358. package/skills/techdebt/agents/fixer.md +41 -41
  359. package/skills/techdebt/agents/reviewer.md +47 -47
  360. package/skills/techdebt/agents/scanner.md +44 -44
  361. package/skills/techdebt/orchestrator.md +70 -70
  362. package/skills/techdebt/rubrics/severity.md +51 -51
  363. package/skills/techdebt/scripts/scan.js +90 -90
  364. package/skills/techdebt/templates/report.md +86 -86
  365. package/skills/tool-fallback/SKILL.md +104 -104
  366. package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
  367. package/skills/typescript-advanced-types/SKILL.md +67 -67
  368. package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
  369. package/skills/ui-ux-pro-max/SKILL.md +236 -236
  370. package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
  371. package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
  372. package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
  373. package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
  374. package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
  375. package/skills/ui-ux-pro-max/reference/typography.md +455 -455
  376. package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
  377. package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
  378. package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
  379. package/skills/user-personas/SKILL.md +75 -75
  380. package/skills/user-personas/rubrics/research-methods.md +56 -56
  381. package/skills/user-personas/templates/persona.md +89 -89
  382. package/skills/vercel-react-best-practices/SKILL.md +60 -60
  383. package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
  384. package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
  385. package/skills/vibe-contract/SKILL.md +166 -166
  386. package/skills/vibe-docs/templates/architecture.md +80 -80
  387. package/skills/vibe-docs/templates/readme.md +84 -84
  388. package/skills/vibe-docs/templates/release-notes.md +74 -74
  389. package/skills/vibe-figma/SKILL.md +363 -363
  390. package/skills/vibe-figma/rubrics/extraction-checklist.md +51 -51
  391. package/skills/vibe-figma/templates/component-index.md +126 -126
  392. package/skills/vibe-figma/templates/component-spec.md +168 -168
  393. package/skills/vibe-figma/templates/figma-handoff.md +100 -100
  394. package/skills/vibe-figma/templates/remapped-tree.md +277 -277
  395. package/skills/vibe-figma-convert/SKILL.md +235 -235
  396. package/skills/vibe-figma-convert/rubrics/conversion-rules.md +141 -141
  397. package/skills/vibe-figma-convert/templates/component.md +140 -140
  398. package/skills/vibe-figma-extract/SKILL.md +219 -219
  399. package/skills/vibe-figma-extract/rubrics/image-rules.md +157 -157
  400. package/skills/vibe-interview/SKILL.md +358 -358
  401. package/skills/vibe-interview/checklists/api.md +101 -101
  402. package/skills/vibe-interview/checklists/feature.md +88 -88
  403. package/skills/vibe-interview/checklists/library.md +95 -95
  404. package/skills/vibe-interview/checklists/mobile.md +89 -89
  405. package/skills/vibe-interview/checklists/webapp.md +97 -97
  406. package/skills/vibe-interview/checklists/website.md +99 -99
  407. package/skills/vibe-plan/SKILL.md +254 -254
  408. package/skills/vibe-regress/SKILL.md +174 -174
  409. package/skills/vibe-regress/templates/bug.md +44 -44
  410. package/skills/vibe-regress/templates/test-jest.md +29 -29
  411. package/skills/vibe-regress/templates/test-vitest.md +30 -30
  412. package/skills/vibe-spec/SKILL.md +1195 -1195
  413. package/skills/vibe-spec-review/SKILL.md +726 -726
  414. package/skills/vibe-test/SKILL.md +247 -247
  415. package/skills/video-production/SKILL.md +52 -52
  416. package/skills/video-production/rubrics/quality-checklist.md +58 -58
  417. package/skills/video-production/templates/production-plan.md +104 -104
  418. package/vibe/config.json +29 -29
  419. package/vibe/constitution.md +227 -227
  420. package/vibe/rules/principles/communication-guide.md +98 -98
  421. package/vibe/rules/principles/development-philosophy.md +52 -52
  422. package/vibe/rules/principles/quick-start.md +102 -102
  423. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  424. package/vibe/rules/quality/checklist.md +276 -276
  425. package/vibe/rules/quality/performance.md +236 -236
  426. package/vibe/rules/quality/testing-strategy.md +440 -440
  427. package/vibe/rules/standards/anti-patterns.md +541 -541
  428. package/vibe/rules/standards/code-structure.md +291 -291
  429. package/vibe/rules/standards/complexity-metrics.md +313 -313
  430. package/vibe/rules/standards/git-workflow.md +237 -237
  431. package/vibe/rules/standards/naming-conventions.md +198 -198
  432. package/vibe/rules/standards/security.md +305 -305
  433. package/vibe/rules/writing/document-style.md +74 -74
  434. package/vibe/setup.sh +31 -31
  435. package/vibe/templates/claudemd-template.md +74 -74
  436. package/vibe/templates/constitution-template.md +267 -267
  437. package/vibe/templates/contract-backend-template.md +526 -526
  438. package/vibe/templates/contract-frontend-template.md +599 -599
  439. package/vibe/templates/feature-template.md +96 -96
  440. package/vibe/templates/plan-template.md +194 -194
  441. package/vibe/templates/spec-template.md +221 -221
  442. package/vibe/ui-ux-data/charts.csv +26 -26
  443. package/vibe/ui-ux-data/colors.csv +97 -97
  444. package/vibe/ui-ux-data/icons.csv +101 -101
  445. package/vibe/ui-ux-data/landing.csv +31 -31
  446. package/vibe/ui-ux-data/products.csv +96 -96
  447. package/vibe/ui-ux-data/react-performance.csv +45 -45
  448. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  449. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  450. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  451. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  452. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  453. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  454. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  455. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  456. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  457. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  458. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  459. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  460. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  461. package/vibe/ui-ux-data/styles.csv +68 -68
  462. package/vibe/ui-ux-data/typography.csv +57 -57
  463. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  464. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  465. package/vibe/ui-ux-data/version.json +31 -31
  466. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -1,1195 +1,1195 @@
1
- ---
2
- name: vibe-spec
3
- tier: core
4
- description: "Create an AI-executable PTCF-structured SPEC document through conversational requirements gathering, parallel research (GPT/Gemini/Claude agents), PTCF writing, ambiguity scan, and 100-point quality gate (loops until perfect or stuck). Produces .claude/vibe/specs/{feature}.md + matching .claude/vibe/features/{feature}.feature (BDD). Must use this skill when the user says 'write spec', 'create spec', '/vibe.spec', or when a plan document exists and is ready for code specification."
5
- triggers: [spec, SPEC, 명세, "코드 명세", "구현 명세", "write spec", "create spec", PTCF]
6
- priority: 85
7
- chain-next: [vibe-spec-review]
8
- ---
9
-
10
- # vibe.spec — Specification Agent
11
-
12
- Create a SPEC document (Specification Agent).
13
-
14
- ## Usage
15
-
16
- ```
17
- /vibe.spec "feature-name" # Conversation mode (requirements gathering)
18
- /vibe.spec "feature-name" ultrawork # Auto: SPEC → Review → Implementation
19
- /vibe.spec "docs/login-prd.md" # File path input (auto-detected)
20
- /vibe.spec + 📎 file attachment # Use attached file
21
- ```
22
-
23
- ### ultrawork Mode
24
-
25
- When `ultrawork` (or `ulw`) is included, automatically chains:
26
-
27
- ```
28
- /vibe.spec "feature" ultrawork
29
-
30
- [1] SPEC Creation (this command)
31
-
32
- [2] Auto: Load skill `vibe-spec-review` (chain-next from this skill)
33
-
34
- [3] Auto: /vibe.run "{feature}" ultrawork
35
- ```
36
-
37
- **No manual intervention between steps.**
38
-
39
- > **⏱️ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
40
-
41
- ## Input Mode Detection (Auto-detect)
42
-
43
- **Input priority:**
44
-
45
- ```
46
- 1. Attachment exists? → Use attached file
47
- 2. Argument is file path? (existence check) → Read file
48
- 3. Otherwise → Conversation mode (start with feature name)
49
- ```
50
-
51
- | Input | Result |
52
- |-------|--------|
53
- | 📎 Attached file | → Analyze attached file |
54
- | File path (exists) | → Read file (Read tool) |
55
- | Feature name | → Start conversation mode |
56
-
57
- **All supported files:**
58
- - Text: `.md`, `.txt`, `.rst`, `.html`, `.json`, `.yaml`, etc.
59
- - Documents: `.pdf` (page-by-page analysis)
60
- - Images: `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`, etc.
61
- - Notebooks: `.ipynb` (Jupyter)
62
- - **All formats Claude can read**
63
-
64
- **File input mode flow:**
65
-
66
- ```
67
- /vibe.spec "docs/login-prd.md"
68
-
69
- 📄 File loaded: docs/login-prd.md (2.3KB)
70
-
71
- 📋 Parsed requirements:
72
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
73
- Feature: Login
74
- - Email/password login
75
- - Social login (Google, Apple)
76
- - Password recovery
77
- - Auto login persistence
78
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
79
-
80
- ❓ Additional confirmation needed:
81
- 1. Session expiration time? (default: 24 hours)
82
- 2. Allow concurrent login?
83
- 3. Confirm tech stack? (current: React + Supabase)
84
-
85
- User: 1 hour, disallow, confirm
86
-
87
- ✅ Requirements confirmed → Run research → Generate SPEC → Review
88
- ```
89
-
90
- **Supported file formats:**
91
-
92
- | Format | Extension | Purpose |
93
- |--------|-----------|---------|
94
- | Markdown | `.md` | PRD, planning docs, README |
95
- | Text | `.txt` | Requirements list |
96
- | PDF | `.pdf` | Planning docs, design documents |
97
- | Image | `.png`, `.jpg`, `.jpeg`, `.webp` | Wireframes, UI design, screenshots |
98
-
99
- **Image input analysis:**
100
-
101
- When image files (`.png`, `.jpg`, `.jpeg`, `.webp`) are provided as input, analyze them using the best available method:
102
-
103
- - **Gemini Enabled**: `llm-orchestrate.js gemini analyze-image` (Gemini Flash - best image recognition)
104
- - **Gemini Disabled**: Claude Opus Read tool (built-in multimodal, existing behavior)
105
-
106
- **Gemini enabled - analyze via llm-orchestrate.js:**
107
-
108
- ```bash
109
- # [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
110
- node "[LLM_SCRIPT]" gemini analyze-image "./designs/login-wireframe.png" "Analyze this UI design image. Identify all UI elements, layout structure, colors, typography, and component hierarchy. Output a structured breakdown."
111
- ```
112
-
113
- Parse the JSON result: `{ success: true, analysis: "..." }` → use `analysis` field content.
114
-
115
- If `success: false`, fall back to Claude Read tool.
116
-
117
- **Gemini disabled - analyze via Claude Read tool:**
118
-
119
- Use the Read tool directly on the image file. Claude can read images natively.
120
-
121
- **Image input example:**
122
- ```
123
- /vibe.spec "designs/login-wireframe.png"
124
-
125
- 🖼️ Image analysis: designs/login-wireframe.png
126
- (via Gemini Flash / Claude Opus)
127
-
128
- 📋 Detected UI elements:
129
- - Email input field
130
- - Password input field
131
- - "Login" button
132
- - "Forgot password" link
133
- - Social login buttons (Google, Apple)
134
-
135
- ❓ Confirmation needed:
136
- 1. Feature name? (e.g., "login")
137
- 2. Additional requirements?
138
-
139
- → Generate SPEC
140
- ```
141
-
142
- ## Rules Reference
143
-
144
- **Must follow `~/.claude/vibe/rules/` (global):**
145
- - `core/development-philosophy.md` - Surgical precision, simplicity
146
- - `core/quick-start.md` - Korean first, DRY, SRP
147
- - `core/communication-guide.md` - Communication principles
148
-
149
- ## Description
150
-
151
- Collect requirements through conversation with the user and create an **AI-executable PTCF structured SPEC document**.
152
-
153
- > **PTCF**: Persona, Task, Context, Format - Google Gemini prompt optimization framework
154
-
155
- ## External LLM Integration (GPT/Gemini)
156
-
157
- When GPT/Gemini are enabled, they are automatically utilized during SPEC creation:
158
-
159
- ```
160
- /vibe.spec "feature"
161
-
162
- [Claude] Draft SPEC
163
-
164
- [Parallel Research] GPT + Gemini + Claude agents (8 parallel)
165
-
166
- [SPEC Review] GPT + Gemini parallel review
167
-
168
- [Claude] Finalize SPEC
169
- ```
170
-
171
- **Setup:**
172
- ```bash
173
- vibe gpt key <key> # Enable GPT
174
- vibe gemini key <key> # Enable Gemini
175
- vibe status # Check current settings
176
- ```
177
-
178
- ## Process
179
-
180
- ### 0. Git Branch Setup (MANDATORY - Execute First!)
181
-
182
- > ⚠️ **CRITICAL: You MUST execute this step FIRST before anything else!**
183
- > This is NOT optional documentation - you must RUN these git commands.
184
-
185
- **Step 0 is BLOCKING - do not proceed to Step 1 until branch is ready.**
186
-
187
- **Execute these commands using Bash tool:**
188
-
189
- ```bash
190
- # 1. Check current branch
191
- git branch --show-current
192
- ```
193
-
194
- **Then based on result:**
195
-
196
- | Current Branch | Action |
197
- |----------------|--------|
198
- | `main` or `master` | **MUST** create feature branch: `git checkout -b feature/{feature-name}` |
199
- | `feature/*` | Ask user: "Continue on this branch or create new?" |
200
- | Other | Ask user to confirm |
201
-
202
- **Example execution:**
203
-
204
- ```
205
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
206
- 🌿 GIT BRANCH SETUP
207
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
208
-
209
- Current branch: main
210
-
211
- Creating feature branch...
212
- $ git checkout -b feature/login-page
213
-
214
- ✅ Switched to new branch: feature/login-page
215
-
216
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
217
- ```
218
-
219
- **Branch naming rules:**
220
- - Convert to lowercase: `Login Page` → `login-page`
221
- - Replace spaces with hyphens
222
- - Prefix with `feature/`
223
- - Example: `feature/passkey-auth`, `feature/dark-mode`
224
-
225
- **`.last-feature` pointer update** (immediately after Git branch setup):
226
-
227
- ```
228
- Write ".claude/vibe/.last-feature" ← feature-name (single line)
229
- Execute at the point when the feature name is finalized.
230
- No-op if the value is already the same.
231
- ```
232
-
233
- ### 1. Project Analysis
234
-
235
- **Existing project** (`vibe init`):
236
- - Reference `CLAUDE.md` file (tech stack)
237
- - **Delegate codebase analysis to explorer agent** — do NOT read project files in main session:
238
-
239
- ```text
240
- Task(subagent_type="explorer-low",
241
- prompt="Analyze project structure: package.json, pyproject.toml, pubspec.yaml, go.mod.
242
- Find existing implementations related to [FEATURE]. Return: tech stack, relevant files, patterns used.
243
- Keep summary under 200 tokens.")
244
- ```
245
-
246
- **New project** (`vibe init <project-name>`):
247
- - Suggest tech stack (2-3 options)
248
-
249
- ### 2. Collect Requirements via Conversation
250
-
251
- **Principles:**
252
- - Ask **one question at a time**
253
- - Present options **with numbers** + "Feel free to describe in your own words"
254
- - **Natural conversation** without fixed order
255
-
256
- **Required confirmations:**
257
- - Purpose (Why): Why is it needed?
258
- - User (Who): Who will use it?
259
- - Feature scope (What): What features are needed?
260
- - Tech stack: Confirm existing stack or suggest new
261
- - Design reference: UI/UX to reference
262
-
263
- ### 2.1 Critical Requirements Confirmation (askUser) - v2.6.1
264
-
265
- **🚨 IMPORTANT: Use `askUser` tool for CRITICAL requirements that must not be missed**
266
-
267
- After initial conversation, use the structured `askUser` tool for:
268
- - 🔐 Authentication: method, MFA, password policy
269
- - 🛡️ Security: rate limiting, session management
270
- - ⏱️ Session: duration, concurrent login policy
271
- - 📊 Data Model: required fields, relationships
272
-
273
- **When to use askUser vs conversation:**
274
-
275
- | Scenario | Method |
276
- |----------|--------|
277
- | Exploratory (feature scope, style) | Natural conversation |
278
- | **Critical** (auth, security, session) | `askUser` tool |
279
- | Optional (performance, integration) | Natural conversation |
280
-
281
- **Usage:**
282
-
283
- ```typescript
284
- import { askUser, askUserQuick } from '@su-record/vibe/tools';
285
-
286
- // Quick helper for common scenarios
287
- const result = await askUserQuick.login('my-login-feature');
288
- console.log(result.content[0].text);
289
-
290
- // Custom categories
291
- const result = await askUser({
292
- featureName: 'user-dashboard',
293
- categories: ['authentication', 'security', 'session', 'data_model'],
294
- context: 'Building a user dashboard with role-based access',
295
- });
296
- ```
297
-
298
- **Available categories:**
299
- - `authentication`: Auth methods, MFA
300
- - `security`: Password policy, rate limiting
301
- - `session`: Session expiry, concurrent login
302
- - `data_model`: User profile fields
303
- - `performance`: Response time targets
304
- - `integration`: External service integration
305
-
306
- **Example output:**
307
-
308
- ```
309
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
310
- 📋 Requirements Confirmation
311
- Feature: login
312
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
313
-
314
- ## 🔐 Authentication
315
-
316
- ### 🔐 Q-AUTHENTICATION-001
317
-
318
- **Which authentication methods should be supported?**
319
- (Multiple selection allowed)
320
-
321
- 1. **Email/Password** ✓
322
- 2. **Google Social Login**
323
- 3. **Apple Social Login**
324
- ...
325
-
326
- **Required**
327
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
328
- Total 6 questions (Required: 4)
329
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
330
- ```
331
-
332
- **Response parsing:**
333
-
334
- ```typescript
335
- import { parseUserResponse } from '@su-record/vibe/tools';
336
-
337
- // User responds: "1, 2, 4" (selected option numbers)
338
- const response = parseUserResponse(question, "1, 2, 4");
339
- // { questionId: "Q-AUTH-001", value: ["email_password", "social_google", "passkey"], timestamp: "..." }
340
- ```
341
-
342
- **ultrawork mode:**
343
- - askUser is **skipped** in ultrawork mode
344
- - Uses default values from templates automatically
345
-
346
- ### 2.5. Reference Documents via config.json (MANDATORY after tech stack confirmed)
347
-
348
- **🚨 CRITICAL: Read config.json references IMMEDIATELY after tech stack is confirmed**
349
-
350
- Reference documents are automatically generated in `config.json` based on the stack detected during `vibe init`:
351
-
352
- ```json
353
- // .claude/vibe/config.json
354
- {
355
- "language": "ko",
356
- "stacks": [
357
- { "type": "typescript-react", "path": "package.json" }
358
- ],
359
- "references": {
360
- "rules": [
361
- "~/.claude/vibe/rules/code-quality.md",
362
- "~/.claude/vibe/rules/error-handling.md",
363
- "~/.claude/vibe/rules/security.md"
364
- ],
365
- "languages": [
366
- "~/.claude/vibe/languages/typescript-react.md"
367
- ],
368
- "templates": [
369
- "~/.claude/vibe/templates/spec-template.md",
370
- "~/.claude/vibe/templates/feature-template.md",
371
- "~/.claude/vibe/templates/constitution-template.md"
372
- ]
373
- }
374
- }
375
- ```
376
-
377
- **Workflow:**
378
-
379
- 1. Read `.claude/vibe/config.json`
380
- 2. Extract `references.languages[]` paths
381
- 3. Read each language document for stack-specific guidelines
382
-
383
- **Example:**
384
- ```bash
385
- # 1. Check references in config.json
386
- Read .claude/vibe/config.json
387
-
388
- # 2. Reference documents specified in references.languages
389
- Read ~/.claude/vibe/languages/typescript-react.md
390
- ```
391
-
392
- **Important:**
393
-
394
- - No manual mapping needed - config.json contains all reference paths
395
- - `config.json.references` is automatically referenced when running `/vibe.run`
396
- - Not copied to project (referenced from global package)
397
-
398
- ### 2.9 Research Cache Check (BEFORE step 3)
399
-
400
- Before spawning any research agents, check for a prior persisted dataset:
401
-
402
- ```bash
403
- # Slug = kebab-case of the feature/topic, max 50 chars
404
- ls .claude/vibe/research/<slug>/paper.md 2>/dev/null
405
- ```
406
-
407
- **If `paper.md` exists:**
408
- 1. Read `.claude/vibe/research/<slug>/paper.md`
409
- 2. Read `.claude/vibe/research/<slug>/awesome-list.md` (if present)
410
- 3. Inject the **Findings**, **Recommendation**, and **Security considerations** sections verbatim into SPEC Context, prefixed with `> Source: .claude/vibe/research/<slug>/paper.md (cached {{FILE_MTIME}})`
411
- 4. **Skip step 3** (parallel research) entirely — do not re-run GPT/Gemini/Claude agents
412
- 5. Print: `✅ Research cache hit: <slug> (saved ~30s of LLM calls)`
413
-
414
- **Cache invalidation:**
415
- - User passes `--refresh-research` → delete dir, rerun step 3 from scratch
416
- - `paper.md` mtime older than 30 days → warn the user, ask to refresh or reuse
417
- - `stack` in `paper.md` frontmatter differs from current stack → auto-refresh
418
-
419
- **If `paper.md` does NOT exist:**
420
- Proceed to step 3. After step 3 completes, the synthesizer **must** write the 3 artifacts (see `parallel-research/orchestrator.md` Phase 5) so the next `/vibe.spec` run on this topic hits the cache.
421
-
422
- ### 3. Parallel Research (v2.5.0) - MANDATORY AFTER requirements confirmed
423
-
424
- **🚨🚨🚨 ABSOLUTE RULES FOR RESEARCH PHASE 🚨🚨🚨**
425
-
426
- **STOP! Before doing ANY research, read this carefully:**
427
-
428
- 1. **DO NOT** use Task tool to spawn research agents
429
- 2. **DO NOT** use context7 MCP directly for research
430
- 3. **DO NOT** use WebSearch tool directly for research
431
- 4. **YOU MUST** use Bash tool to call llm-orchestrate.js directly
432
-
433
- **🚨🚨🚨 CRITICAL: NO FILE CREATION DURING RESEARCH 🚨🚨🚨**
434
-
435
- 5. **DO NOT** create any files in project root during research
436
- 6. **DO NOT** create SECURITY_*.md, RESEARCH_*.md, SUMMARY_*.md files
437
- 7. **DO NOT** use Write tool during research phase
438
- 8. **ALL research results** must be returned as text output only
439
- 9. **Files are ONLY created** in Step 4 (SPEC) and Step 5 (Feature) in `.claude/vibe/` directory
440
-
441
- **When to trigger:**
442
- 1. ✅ Feature type decided (e.g., "passkey authentication")
443
- 2. ✅ Tech stack confirmed (e.g., "React + Supabase")
444
- 3. ✅ Language guide copied (step 2.5)
445
- 4. ✅ Core requirements collected
446
-
447
- **→ IMMEDIATELY run these 6 Bash commands IN PARALLEL (all at once):**
448
-
449
- **Step 0: Script path:**
450
- - `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
451
-
452
- **Run all 4 in PARALLEL (each as separate Bash tool call):**
453
- ```bash
454
- # 1. GPT: Best practices (codex — code review & analysis)
455
- node "[LLM_SCRIPT]" gpt-codex orchestrate-json "Best practices for [FEATURE] with [STACK]. Focus: architecture patterns, code conventions. Return JSON: {patterns: [], antiPatterns: [], libraries: []}"
456
-
457
- # 2. GPT: Security (codex — code review & analysis)
458
- node "[LLM_SCRIPT]" gpt-codex orchestrate-json "Security vulnerabilities for [FEATURE] with [STACK]. Focus: CVE database, known exploits. Return JSON: {vulnerabilities: [], mitigations: [], checklist: []}"
459
-
460
- # 3. Gemini: Best practices
461
- node "[LLM_SCRIPT]" gemini orchestrate-json "Best practices for [FEATURE] with [STACK]. Focus: latest trends, framework updates. Return JSON: {patterns: [], antiPatterns: [], libraries: []}"
462
-
463
- # 4. Gemini: Security
464
- node "[LLM_SCRIPT]" gemini orchestrate-json "Security advisories for [FEATURE] with [STACK]. Focus: latest patches, recent incidents. Return JSON: {advisories: [], patches: [], incidents: []}"
465
- ```
466
-
467
- **Concrete example - run all 4 in parallel:**
468
- ```bash
469
- # GPT best practices (codex — code review & analysis)
470
- node "[LLM_SCRIPT]" gpt-codex orchestrate-json "Best practices for passkey authentication with React, Supabase. Focus: architecture patterns, code conventions. Return JSON: {patterns: [], antiPatterns: [], libraries: []}"
471
-
472
- # GPT security (codex — code review & analysis)
473
- node "[LLM_SCRIPT]" gpt-codex orchestrate-json "Security vulnerabilities for passkey authentication with React, Supabase. Focus: CVE database, known exploits. Return JSON: {vulnerabilities: [], mitigations: [], checklist: []}"
474
-
475
- # Gemini best practices
476
- node "[LLM_SCRIPT]" gemini orchestrate-json "Best practices for passkey authentication with React, Supabase. Focus: latest trends, framework updates. Return JSON: {patterns: [], antiPatterns: [], libraries: []}"
477
-
478
- # Gemini security
479
- node "[LLM_SCRIPT]" gemini orchestrate-json "Security advisories for passkey authentication with React, Supabase. Focus: latest patches, recent incidents. Return JSON: {advisories: [], patches: [], incidents: []}"
480
- ```
481
-
482
- **ALSO run Claude research agents in parallel using Task tool:**
483
-
484
- | Claude Agent | Role | Source |
485
- |--------------|------|--------|
486
- | `best-practices-agent` | Best practices for [feature] + [stack] | WebSearch |
487
- | `framework-docs-agent` | Latest docs via context7 | context7 MCP |
488
- | `codebase-patterns-agent` | Similar patterns in existing codebase | Glob, Grep |
489
- | `security-advisory-agent` | Security advisories for [feature] | WebSearch |
490
-
491
- **Total: 4 GPT/Gemini calls (Bash) + 4 Claude agents (Task) = 8 parallel research tasks**
492
-
493
- **🚨 GPT/Gemini MUST be called via Bash with llm-orchestrate.js! 🚨**
494
-
495
- #### 3.0.1 Agent Teams — Research Collaboration
496
-
497
- > **Team definition**: See `agents/teams/research-team.md`
498
- > Settings: `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` + `teammateMode: in-process` (`~/.claude/settings.json` global — auto-configured by postinstall)
499
-
500
- **Discussion results are reflected in the SPEC's Context section.**
501
-
502
- #### 3.1 Result Merge Rules
503
-
504
- | Area | Merge Strategy |
505
- |------|----------------|
506
- | Best Practices | Deduplicate, keep most detailed |
507
- | Security | ALL included (no dedup for safety) |
508
- | Libraries | Consensus recommendations |
509
-
510
- **IMPORTANT:**
511
- - ❌ DO NOT skip research step
512
- - ❌ DO NOT ask user "should I run research?"
513
- - ✅ ALWAYS run after requirements confirmed
514
- - ✅ Show "Running parallel research (Claude + GPT + Gemini)..." message
515
- - ✅ Include all agent + LLM results in SPEC Context
516
- - ✅ Run all 4 Bash LLM calls in parallel + 4 Task agents in parallel
517
-
518
- **Research results are reflected in SPEC's Context section.**
519
-
520
- ### 3.2 UI/UX Design Intelligence (Auto-triggered)
521
-
522
- > **Condition**: Auto-executes when UI/UX keywords are present in the SPEC context (website, landing, dashboard, app, e-commerce, portfolio, SaaS, mobile app, web app, UI, UX, frontend, design)
523
- > **Disable**: Set `"uiUxAnalysis": false` in `.claude/vibe/config.json`
524
-
525
- **When UI/UX keywords are detected, run 3 agents sequentially in parallel with research:**
526
-
527
- ```
528
- [Parallel Research] GPT + Gemini + Claude agents
529
- ↓ (concurrent execution)
530
- [UI/UX Intelligence]
531
- ① ui-industry-analyzer (Haiku) → industry analysis + design strategy
532
-
533
- ②③ parallel execution:
534
- ② ui-design-system-gen (Sonnet) → generate MASTER.md
535
- ③ ui-layout-architect (Haiku) → layout design
536
- ```
537
-
538
- **How to execute:**
539
-
540
- 1. **① ui-industry-analyzer** — Run as Task(haiku) agent:
541
- ```text
542
- Task(subagent_type="ui-industry-analyzer",
543
- prompt="Analyze product: [USER_DESCRIPTION]. Use core_ui_search to detect category, style priority, color mood, typography mood. Save result to .claude/vibe/design-system/{project}/analysis-result.json")
544
- ```
545
-
546
- 2. **②③ parallel execution** — Using ①'s result as input:
547
- ```text
548
- # ② Generate design system (Sonnet)
549
- Task(subagent_type="ui-design-system-gen",
550
- prompt="Generate design system from analysis-result.json for project '{project}'. Use core_ui_search for style/color/typography, then core_ui_generate_design_system and core_ui_persist_design_system.")
551
-
552
- # ③ Layout design (Haiku) — parallel execution
553
- Task(subagent_type="ui-layout-architect",
554
- prompt="Design layout from analysis-result.json for project '{project}'. Use core_ui_search for landing patterns and dashboard layout.")
555
- ```
556
-
557
- 3. **Inject results into SPEC Context:**
558
- ```markdown
559
- ### Design System (Auto-generated)
560
- - Category: {① category}
561
- - Style: {① style_priority}
562
- - MASTER.md: .claude/vibe/design-system/{project}/MASTER.md
563
- - Layout: {③ pattern + sections}
564
- ```
565
-
566
- ### 3.9 Persist Research Cache (AFTER research completes, BEFORE SPEC write)
567
-
568
- > The "no Write during research" rule from step 3 does **not** apply here — research is done; artifacts are safe to persist.
569
-
570
- After parallel research + UI/UX intelligence complete, before writing the SPEC, save the merged research to `.claude/vibe/research/<slug>/`:
571
-
572
- 1. Compute slug: kebab-case of feature name, max 50 chars
573
- 2. Write **three files** using templates from `parallel-research/templates/`:
574
- - `.claude/vibe/research/<slug>/synthesis.md` — raw merged findings (all agent outputs)
575
- - `.claude/vibe/research/<slug>/awesome-list.md` — curated links/repos/patterns (every entry needs a one-line "why"; drop entries without one)
576
- - `.claude/vibe/research/<slug>/paper.md` — structured survey (Abstract → Background → Method → Findings → Recommendation → Security → References)
577
- 3. Include a frontmatter header in `paper.md` with a `stack:` field so step 2.9 can detect stack drift
578
- 4. If the directory already exists (user passed `--refresh-research`), overwrite
579
-
580
- This makes the next `/vibe.spec` (or future `/vibe.research`) invocation on the same topic hit the cache at step 2.9.
581
-
582
- ### 4. Write SPEC Document (PTCF Structure)
583
-
584
- #### 4.0 Large Scope Detection & Auto-Split (MANDATORY)
585
-
586
- **🚨 CRITICAL: Automatically split SPEC when scope is large**
587
-
588
- **❌ DO NOT ask user for confirmation - auto-split silently**
589
-
590
- **Detection criteria (ANY triggers split):**
591
-
592
- | Criteria | Threshold |
593
- |----------|-----------|
594
- | Phases | 5+ phases |
595
- | Files to create | 15+ files |
596
- | Platforms | 2+ platforms |
597
- | Major features | 4+ distinct features |
598
-
599
- **Auto-split output (SPEC + Feature files must match):**
600
-
601
- ```
602
- .claude/vibe/specs/{feature-name}/
603
- ├── _index.md # Master SPEC
604
- ├── phase-1-setup.md
605
- ├── phase-2-core.md
606
- └── ...
607
-
608
- .claude/vibe/features/{feature-name}/
609
- ├── _index.feature # Master Feature
610
- ├── phase-1-setup.feature
611
- ├── phase-2-core.feature
612
- └── ...
613
- ```
614
-
615
- **🚨 CRITICAL: Each SPEC phase file MUST have a matching Feature file**
616
-
617
- **Master SPEC (`_index.md`):**
618
-
619
- ```markdown
620
- # SPEC: {feature-name} (Master)
621
-
622
- ## Overview
623
- - Total phases: N
624
- - Dependencies: [list]
625
-
626
- ## Sub-SPECs
627
-
628
- | Order | SPEC File | Feature File | Status |
629
- |-------|-----------|--------------|--------|
630
- | 1 | phase-1-setup.md | phase-1-setup.feature | ⬜ |
631
- | 2 | phase-2-core.md | phase-2-core.feature | ⬜ |
632
-
633
- ## Shared Context
634
- - Tech Stack: [all phases]
635
- - Constraints: [all phases]
636
- ```
637
-
638
- **Master Feature (`_index.feature`):**
639
-
640
- ```markdown
641
- # Feature: {feature-name} (Master)
642
-
643
- **Master SPEC**: `.claude/vibe/specs/{feature-name}/_index.md`
644
-
645
- ## Sub-Features
646
-
647
- | Order | Feature File | SPEC File | Status |
648
- |-------|--------------|-----------|--------|
649
- | 1 | phase-1-setup.feature | phase-1-setup.md | ⬜ |
650
- | 2 | phase-2-core.feature | phase-2-core.md | ⬜ |
651
-
652
- ## Overall User Story
653
- **As a** {user}
654
- **I want** {complete feature}
655
- **So that** {value}
656
- ```
657
-
658
- **Small scope (default):**
659
-
660
- Create `.claude/vibe/specs/{feature-name}.md`:
661
-
662
- ```markdown
663
- ---
664
- status: pending
665
- currentPhase: 0
666
- totalPhases: 3
667
- createdAt: {ISO-timestamp}
668
- lastUpdated: {ISO-timestamp}
669
- ---
670
-
671
- # SPEC: {feature-name}
672
-
673
- ## Persona
674
- <role>
675
- Define AI role and expertise for implementation
676
- - Senior developer on the project
677
- - Follow existing code patterns
678
- - Write testable code
679
- </role>
680
-
681
- ## Context
682
- <context>
683
- ### Background
684
- - Why this feature is needed
685
- - Who will use it
686
-
687
- ### Tech Stack
688
- - Backend: {technology}
689
- - Frontend: {technology}
690
- - Database: {technology}
691
-
692
- ### Related Code
693
- - `src/xxx/`: Existing implementation to reference
694
- - `src/yyy/`: Files to modify
695
-
696
- ### Design Reference
697
- - {Reference app/service}
698
- </context>
699
-
700
- ## Task
701
- <task>
702
- ### Phase 1: {phase-name}
703
- 1. [ ] {specific task}
704
- - File: `path/to/file`
705
- - Verify: `command`
706
- 2. [ ] {specific task}
707
-
708
- ### Phase 2: {phase-name}
709
- 1. [ ] {specific task}
710
- 2. [ ] {specific task}
711
-
712
- ### Phase 3: Testing and Verification
713
- 1. [ ] Unit Tests
714
- 2. [ ] Integration Tests
715
- </task>
716
-
717
- ## Constraints
718
- <constraints>
719
- - Follow existing code patterns
720
- - Localize error messages
721
- - Separate configuration via environment variables
722
- - {other constraints}
723
- </constraints>
724
-
725
- ## Output Format
726
- <output_format>
727
- ### Files to Create
728
- - `path/to/new/file.ts`
729
- - `path/to/new/file.test.ts`
730
-
731
- ### Files to Modify
732
- - `path/to/existing/file.ts`
733
-
734
- ### Verification Commands
735
- - `npm test`
736
- - `npm run build`
737
- </output_format>
738
-
739
- ## Acceptance Criteria
740
- <acceptance>
741
- - [ ] {verifiable criterion 1}
742
- - [ ] {verifiable criterion 2}
743
- - [ ] All tests pass
744
- - [ ] Build succeeds
745
- </acceptance>
746
- ```
747
-
748
- ### 5. Create Feature File (BDD) - Required
749
-
750
- **🚨 CRITICAL: Feature files MUST match SPEC file structure**
751
-
752
- | SPEC Structure | Feature Structure |
753
- |----------------|-------------------|
754
- | Single file (`{feature}.md`) | Single file (`{feature}.feature`) |
755
- | Split (`{feature}/_index.md` + phases) | Split (`{feature}/_index.feature` + phases) |
756
-
757
- #### 5.1 Single File (Small Scope)
758
-
759
- Create `.claude/vibe/features/{feature-name}.feature`:
760
-
761
- **Creation rules:**
762
- 1. Convert each SPEC Acceptance Criteria → one Scenario
763
- 2. Include Happy Path (normal case) + Edge Case (exception case)
764
- 3. Follow Given-When-Then format
765
-
766
- ```markdown
767
- # Feature: {feature-name}
768
-
769
- **SPEC**: `.claude/vibe/specs/{feature-name}.md`
770
-
771
- ## User Story
772
- **As a** {user}
773
- **I want** {feature}
774
- **So that** {value}
775
-
776
- ## Scenarios
777
-
778
- ### Scenario 1: {Happy Path}
779
- \`\`\`gherkin
780
- Scenario: {title}
781
- Given {precondition}
782
- When {action}
783
- Then {result}
784
- \`\`\`
785
- **Verification**: SPEC AC #1
786
-
787
- ### Scenario 2: {Edge Case}
788
- ...
789
-
790
- ## Coverage
791
- | Scenario | SPEC AC | Status |
792
- |----------|---------|--------|
793
- | 1 | AC-1 | ⬜ |
794
- ```
795
-
796
- #### 5.2 Split Files (Large Scope)
797
-
798
- When SPEC is split into phases, Feature files MUST also be split:
799
-
800
- ```
801
- .claude/vibe/features/{feature-name}/
802
- ├── _index.feature # Master: links to all phase features
803
- ├── phase-1-setup.feature # Scenarios for phase-1-setup.md
804
- ├── phase-2-core.feature # Scenarios for phase-2-core.md
805
- └── ...
806
- ```
807
-
808
- **Phase Feature file structure:**
809
-
810
- ```markdown
811
- # Feature: {feature-name} - Phase {N}: {phase-name}
812
-
813
- **SPEC**: `.claude/vibe/specs/{feature-name}/phase-{N}-{name}.md`
814
- **Master Feature**: `.claude/vibe/features/{feature-name}/_index.feature`
815
-
816
- ## User Story (Phase Scope)
817
- **As a** {user}
818
- **I want** {phase-specific feature}
819
- **So that** {phase-specific value}
820
-
821
- ## Scenarios
822
-
823
- ### Scenario 1: {Phase Happy Path}
824
- ...
825
-
826
- ## Coverage
827
- | Scenario | SPEC AC | Status |
828
- |----------|---------|--------|
829
- | 1 | Phase {N} AC-1 | ⬜ |
830
- ```
831
-
832
- ### 6. Ambiguity Scan - Required
833
-
834
- After creating SPEC draft, **must perform systematic ambiguity check**.
835
-
836
- #### 6.1 Mandatory Check Categories
837
-
838
- | Category | Check Items | Red Flags |
839
- |----------|-------------|-----------|
840
- | **Functional Scope** | Missing features, unclear behavior | "etc.", "other", "if needed" |
841
- | **Data Model** | Undefined entities, relationships | Undefined types, missing fields |
842
- | **Non-Functional** | Performance, security requirements | Performance requirements without numbers |
843
- | **Edge Cases** | Boundary conditions, errors | 0 failure scenarios |
844
- | **Integration Points** | External APIs, contracts | API version/endpoint undefined |
845
- | **User Input** | Validation rules, limits | Input limits not specified |
846
- | **State Management** | State transitions, persistence | Missing state diagram |
847
-
848
- #### 6.2 Forbidden Ambiguous Terms
849
-
850
- If the following terms exist in SPEC, **clarification is mandatory**:
851
-
852
- | Forbidden Term | Replacement Method |
853
- |----------------|-------------------|
854
- | "appropriately", "properly" | Provide specific criteria (e.g., "within 3 seconds") |
855
- | "quickly", "rapidly" | Specify with numbers (e.g., "under 100ms") |
856
- | "various", "multiple" | List specific items |
857
- | "etc.", "other" | Specify complete list or limit scope |
858
- | "if needed", "depending on situation" | Specify conditions (e.g., "when credits < 10") |
859
- | "later", "in the future" | Explicitly exclude from current scope |
860
-
861
- #### 6.3 Check Process
862
-
863
- ```
864
- 1. Write SPEC draft
865
-
866
- 2. Auto-scan for forbidden terms
867
-
868
- 3. Review checklist by category
869
-
870
- 4. List discovered ambiguities
871
-
872
- 5. Auto-fixable items → Fix immediately
873
- Needs user confirmation → Ask question
874
-
875
- 6. Re-verify (max 2 rounds — remaining ambiguities → user confirmation or TODO)
876
- ```
877
-
878
- #### 6.4 Auto-Fix for Common Ambiguities
879
-
880
- | Ambiguity Type | Auto-Fix Method |
881
- |----------------|-----------------|
882
- | Timeout undefined | Apply default 30 seconds |
883
- | Retry count undefined | Apply default 3 retries |
884
- | Pagination undefined | Apply default 20 items/page |
885
- | Input length undefined | Text 500 chars, password 8-64 chars |
886
- | File size undefined | Image 5MB, video 100MB |
887
-
888
- #### 6.5 Ambiguity Output Format
889
-
890
- ```markdown
891
- ## 🔍 Ambiguity Scan Results
892
-
893
- ### Found Issues: 3
894
-
895
- #### 1. Functional Scope
896
- - ⚠️ "Login failure behavior" not defined
897
- → **Auto-fix**: Apply 5-minute lockout after 3 failures
898
- - ⚠️ "Session expiration handling" unclear
899
- → **Question**: Session expiration time? (30min/1hour/24hours)
900
-
901
- #### 2. Edge Cases
902
- - ⚠️ Concurrent login permission undefined
903
- → **Question**: Allow concurrent login? (Y/N)
904
-
905
- ### Auto-fixed: 1
906
- ### Needs clarification: 2
907
- ```
908
-
909
- ### 7. Quality Validation (Self-Check)
910
-
911
- **Must perform self-quality check after SPEC completion**
912
-
913
- #### 7.1 Quality Checklist (Required Items)
914
-
915
- | Category | Check Item | Weight |
916
- |----------|------------|--------|
917
- | **Completeness** | All user flows included in Task | 15% |
918
- | **Completeness** | All ACs converted to Feature scenarios | 10% |
919
- | **Clarity** | No ambiguous terms (e.g., "appropriately", "quickly") | 10% |
920
- | **Clarity** | All numbers/limits specified (e.g., "max 500 chars") | 10% |
921
- | **Testability** | All ACs are auto-testable | 10% |
922
- | **Security** | Authentication/authorization requirements defined | 10% |
923
- | **Security** | Sensitive data handling method specified | 5% |
924
- | **Error Handling** | Major failure scenarios defined | 10% |
925
- | **Error Handling** | User error messages specified | 5% |
926
- | **Performance** | Response time/throughput targets specified | 5% |
927
- | **Edge Cases** | Boundary condition handling defined | 5% |
928
- | **Dependencies** | External systems/APIs specified | 5% |
929
-
930
- #### 7.2 Quality Score Calculation
931
-
932
- ```
933
- Score = Σ(Check item met × Weight) / 100
934
-
935
- Grades:
936
- - 95-100: ✅ EXCELLENT - Ready to start implementation
937
- - 90-94: ⚠️ GOOD - Minor improvements required before implementation
938
- - 80-89: ⚠️ FAIR - Significant improvements required
939
- - 0-79: ❌ POOR - Rewrite required
940
- ```
941
-
942
- #### 7.3 Quality Gate (Auto-verification)
943
-
944
- **100 points required to complete SPEC draft. Loop until perfect — ask user if auto-fixer hits a wall.**
945
-
946
- ```
947
- SPEC writing complete
948
-
949
- [Calculate Quality Score]
950
-
951
- Score < 100? → Show missing items → Auto-fix → Re-evaluate
952
-
953
- Stuck? (score == prev_score)
954
- ├─ Interactive: ask user → fill values OR "proceed" OR "abort"
955
- └─ ultrawork: record gaps as TODO → proceed
956
-
957
- Score == 100 (or user-approved) → SPEC Draft Complete → Handoff to vibe-spec-review skill
958
- ```
959
-
960
- #### 7.4 Auto-Fix for Low Score
961
-
962
- If score is below 100, attempt automatic fixes:
963
-
964
- | Missing Item | Auto-Fix Method |
965
- |--------------|-----------------|
966
- | Missing AC | Auto-generate AC based on Task |
967
- | Numbers not specified | Apply project defaults (e.g., timeout 30s) |
968
- | Missing error handling | Add common error scenarios |
969
- | Missing performance targets | Apply industry standard criteria |
970
-
971
- ### 8. SPEC Draft Complete - Handoff to Review
972
-
973
- **🚨 IMPORTANT: GPT/Gemini review is now a SEPARATE command**
974
-
975
- After SPEC draft is complete (score ≥ 95):
976
-
977
- **If `ultrawork` mode:**
978
- - ❌ DO NOT show handoff message
979
- - ❌ DO NOT ask for confirmation
980
- - ✅ Immediately load skill `vibe-spec-review` with feature `{feature-name}` (chain-next)
981
- - ✅ After review passes, immediately proceed to `/vibe.run "{feature-name}" ultrawork`
982
-
983
- **If normal mode:**
984
- Output the handoff message:
985
-
986
- ```
987
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
988
- ✅ SPEC DRAFT COMPLETE: {feature-name}
989
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
990
-
991
- 📋 SPEC: .claude/vibe/specs/{feature-name}.md
992
- 📋 Feature: .claude/vibe/features/{feature-name}.feature
993
- 📊 Quality Score: {score}/100
994
- ⏱️ Started: {start_time}
995
- ⏱️ Completed: {getCurrentTime result}
996
-
997
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
998
- ⚠️ NEXT STEP: Run SPEC review (vibe-spec-review skill)
999
-
1000
- Option 1 (same session):
1001
- Load skill `vibe-spec-review` with feature `{feature-name}`
1002
- (or natural language: "spec review")
1003
-
1004
- Option 2 (recommended for large context):
1005
- /new → /vibe.spec "{feature-name}"
1006
- (Smart Resume will start from Phase 4)
1007
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1008
- ```
1009
-
1010
- **Tip:** New session recommended when context > 50% to ensure review accuracy
1011
-
1012
- ## Output (MANDATORY File Creation)
1013
-
1014
- **🚨 CRITICAL: Files MUST be created in these EXACT paths. NO exceptions.**
1015
-
1016
- ### Small Scope (Single File)
1017
-
1018
- | File | Path | When |
1019
- |------|------|------|
1020
- | SPEC | `.claude/vibe/specs/{feature-name}.md` | After quality validation (Step 7) |
1021
- | Feature | `.claude/vibe/features/{feature-name}.feature` | Immediately after SPEC |
1022
-
1023
- ### Large Scope (Split Files)
1024
-
1025
- | File | Path | When |
1026
- |------|------|------|
1027
- | Master SPEC | `.claude/vibe/specs/{feature-name}/_index.md` | After quality validation |
1028
- | Phase SPEC | `.claude/vibe/specs/{feature-name}/phase-{N}-{name}.md` | Per phase |
1029
- | Master Feature | `.claude/vibe/features/{feature-name}/_index.feature` | After Master SPEC |
1030
- | Phase Feature | `.claude/vibe/features/{feature-name}/phase-{N}-{name}.feature` | Per phase SPEC |
1031
-
1032
- **❌ FORBIDDEN:**
1033
-
1034
- - Creating files in project root (e.g., `feature-name.md`)
1035
- - Creating files outside `.claude/vibe/` directory
1036
- - Skipping file creation
1037
- - Using different file names than feature-name
1038
- - Creating split SPEC without matching split Feature files
1039
-
1040
- **✅ REQUIRED:**
1041
-
1042
- - Use Write tool to create files
1043
- - Verify directories exist (create if needed)
1044
- - Confirm file creation in response
1045
- - **Each SPEC file must have a matching Feature file**
1046
-
1047
- ### File Creation Template
1048
-
1049
- **Single file:**
1050
- ```
1051
- 1. Write .claude/vibe/specs/{feature-name}.md
1052
- 2. Write .claude/vibe/features/{feature-name}.feature
1053
- 3. Confirm: "✅ Created: specs/{feature-name}.md + features/{feature-name}.feature"
1054
- ```
1055
-
1056
- **Split files:**
1057
- ```
1058
- 1. Write .claude/vibe/specs/{feature-name}/_index.md
1059
- 2. Write .claude/vibe/specs/{feature-name}/phase-1-setup.md
1060
- 3. Write .claude/vibe/specs/{feature-name}/phase-2-core.md
1061
- 4. Write .claude/vibe/features/{feature-name}/_index.feature
1062
- 5. Write .claude/vibe/features/{feature-name}/phase-1-setup.feature
1063
- 6. Write .claude/vibe/features/{feature-name}/phase-2-core.feature
1064
- 7. Confirm: "✅ Created: {N} SPEC files + {N} Feature files"
1065
- ```
1066
-
1067
- ## Example
1068
-
1069
- ```
1070
- User: /vibe.spec "brick-game"
1071
-
1072
- Claude:
1073
- You're making a brick game! What style are you thinking of?
1074
-
1075
- 1. Classic Breakout style
1076
- 2. Arkanoid (with power-up items)
1077
- 3. Custom style with special gameplay
1078
-
1079
- Feel free to describe in your own words.
1080
-
1081
- User: 1
1082
-
1083
- Claude: What platform will it run on?
1084
-
1085
- 1. Web (browser)
1086
- 2. Mobile (iOS/Android)
1087
- 3. Desktop
1088
-
1089
- User: 1
1090
-
1091
- Claude:
1092
- Here are tech stack suggestions for web game development:
1093
-
1094
- 1. **Phaser.js** (Recommended) - Game framework with built-in physics engine
1095
- 2. **Canvas + JavaScript** - Lightweight with fine control
1096
- 3. **PixiJS + Matter.js** - High-performance rendering
1097
-
1098
- User: 1
1099
-
1100
- Claude: What design style?
1101
-
1102
- 1. Retro pixel (Atari Breakout)
1103
- 2. Neon graphics (Arkanoid)
1104
- 3. Modern 3D effects
1105
-
1106
- User: 2
1107
-
1108
- [Conversation continues...]
1109
-
1110
- Claude: SPEC draft created. Running ambiguity scan.
1111
-
1112
- ## 🔍 Ambiguity Scan Results
1113
-
1114
- ### Functional Scope
1115
- - ⚠️ Game over condition not defined (ball drop vs lives system)
1116
- - ⚠️ Stage clear condition unclear
1117
-
1118
- ### Edge Cases
1119
- - ⚠️ Ball reflection angle when hitting paddle edge
1120
- - ⚠️ Multiple brick collision handling
1121
-
1122
- Please clarify the above items.
1123
-
1124
- User: 3 lives, clear when all bricks destroyed, edge reflects at 45 degrees
1125
-
1126
- Claude: Thank you. SPEC has been refined.
1127
-
1128
- 🔍 Re-check result: 0 ambiguities
1129
- 📊 Quality score: 92/100 (A)
1130
-
1131
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1132
- 🔍 SPEC REVIEW (Gemini)
1133
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1134
-
1135
- 📤 Sending SPEC...
1136
- 📝 Gemini feedback:
1137
- 1. [Edge] Ball speed increase logic undefined
1138
- 2. [Security] Need score manipulation prevention
1139
-
1140
- ✅ 2 improvements auto-applied
1141
- 🔍 Re-verifying... ✅ Passed
1142
-
1143
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1144
- ✅ SPEC Complete!
1145
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1146
-
1147
- 📄 .claude/vibe/specs/brick-game.md (PTCF structure)
1148
- 📄 .claude/vibe/features/brick-game.feature
1149
- 📊 Quality score: 100/100 ← Loop converged (no remaining gaps)
1150
- ```
1151
-
1152
- ## Core Tools (Semantic Analysis & Memory)
1153
-
1154
- ### Tool Invocation
1155
- All tools are called via:
1156
- ```bash
1157
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
1158
- ```
1159
-
1160
- ### Recommended Tools for SPEC Creation
1161
-
1162
- | Tool | Purpose | When to Use |
1163
- |------|---------|-------------|
1164
- | `findSymbol` | Find symbol definitions | Locate existing implementations to reference |
1165
- | `findReferences` | Find all references | Understand how existing code is used |
1166
- | `analyzeComplexity` | Code complexity analysis | Evaluate complexity of code to modify |
1167
- | `saveMemory` | Save important decisions | Store confirmed requirements, design decisions |
1168
- | `recallMemory` | Recall saved memory | Retrieve previous project decisions |
1169
-
1170
- ### Example Tool Usage in SPEC Creation
1171
-
1172
- **1. Find existing auth implementation:**
1173
- ```bash
1174
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'login', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
1175
- ```
1176
-
1177
- **2. Save confirmed requirements:**
1178
- ```bash
1179
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'brick-game-requirements', value: 'Platform: Web, Stack: Phaser.js, Style: Neon', category: 'spec', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
1180
- ```
1181
-
1182
- **3. Recall previous decisions:**
1183
- ```bash
1184
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.recallMemory({key: 'brick-game-requirements', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
1185
- ```
1186
-
1187
- ## Next Step
1188
-
1189
- ```
1190
- /vibe.run "brick-game"
1191
- ```
1192
-
1193
- ---
1194
-
1195
- ARGUMENTS: $ARGUMENTS
1
+ ---
2
+ name: vibe-spec
3
+ tier: core
4
+ description: "Create an AI-executable PTCF-structured SPEC document through conversational requirements gathering, parallel research (GPT/Gemini/Claude agents), PTCF writing, ambiguity scan, and 100-point quality gate (loops until perfect or stuck). Produces .claude/vibe/specs/{feature}.md + matching .claude/vibe/features/{feature}.feature (BDD). Must use this skill when the user says 'write spec', 'create spec', '/vibe.spec', or when a plan document exists and is ready for code specification."
5
+ triggers: [spec, SPEC, 명세, "코드 명세", "구현 명세", "write spec", "create spec", PTCF]
6
+ priority: 85
7
+ chain-next: [vibe-spec-review]
8
+ ---
9
+
10
+ # vibe.spec — Specification Agent
11
+
12
+ Create a SPEC document (Specification Agent).
13
+
14
+ ## Usage
15
+
16
+ ```
17
+ /vibe.spec "feature-name" # Conversation mode (requirements gathering)
18
+ /vibe.spec "feature-name" ultrawork # Auto: SPEC → Review → Implementation
19
+ /vibe.spec "docs/login-prd.md" # File path input (auto-detected)
20
+ /vibe.spec + 📎 file attachment # Use attached file
21
+ ```
22
+
23
+ ### ultrawork Mode
24
+
25
+ When `ultrawork` (or `ulw`) is included, automatically chains:
26
+
27
+ ```
28
+ /vibe.spec "feature" ultrawork
29
+
30
+ [1] SPEC Creation (this command)
31
+
32
+ [2] Auto: Load skill `vibe-spec-review` (chain-next from this skill)
33
+
34
+ [3] Auto: /vibe.run "{feature}" ultrawork
35
+ ```
36
+
37
+ **No manual intervention between steps.**
38
+
39
+ > **⏱️ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
40
+
41
+ ## Input Mode Detection (Auto-detect)
42
+
43
+ **Input priority:**
44
+
45
+ ```
46
+ 1. Attachment exists? → Use attached file
47
+ 2. Argument is file path? (existence check) → Read file
48
+ 3. Otherwise → Conversation mode (start with feature name)
49
+ ```
50
+
51
+ | Input | Result |
52
+ |-------|--------|
53
+ | 📎 Attached file | → Analyze attached file |
54
+ | File path (exists) | → Read file (Read tool) |
55
+ | Feature name | → Start conversation mode |
56
+
57
+ **All supported files:**
58
+ - Text: `.md`, `.txt`, `.rst`, `.html`, `.json`, `.yaml`, etc.
59
+ - Documents: `.pdf` (page-by-page analysis)
60
+ - Images: `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`, etc.
61
+ - Notebooks: `.ipynb` (Jupyter)
62
+ - **All formats Claude can read**
63
+
64
+ **File input mode flow:**
65
+
66
+ ```
67
+ /vibe.spec "docs/login-prd.md"
68
+
69
+ 📄 File loaded: docs/login-prd.md (2.3KB)
70
+
71
+ 📋 Parsed requirements:
72
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
73
+ Feature: Login
74
+ - Email/password login
75
+ - Social login (Google, Apple)
76
+ - Password recovery
77
+ - Auto login persistence
78
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
79
+
80
+ ❓ Additional confirmation needed:
81
+ 1. Session expiration time? (default: 24 hours)
82
+ 2. Allow concurrent login?
83
+ 3. Confirm tech stack? (current: React + Supabase)
84
+
85
+ User: 1 hour, disallow, confirm
86
+
87
+ ✅ Requirements confirmed → Run research → Generate SPEC → Review
88
+ ```
89
+
90
+ **Supported file formats:**
91
+
92
+ | Format | Extension | Purpose |
93
+ |--------|-----------|---------|
94
+ | Markdown | `.md` | PRD, planning docs, README |
95
+ | Text | `.txt` | Requirements list |
96
+ | PDF | `.pdf` | Planning docs, design documents |
97
+ | Image | `.png`, `.jpg`, `.jpeg`, `.webp` | Wireframes, UI design, screenshots |
98
+
99
+ **Image input analysis:**
100
+
101
+ When image files (`.png`, `.jpg`, `.jpeg`, `.webp`) are provided as input, analyze them using the best available method:
102
+
103
+ - **Gemini Enabled**: `llm-orchestrate.js gemini analyze-image` (Gemini Flash - best image recognition)
104
+ - **Gemini Disabled**: Claude Opus Read tool (built-in multimodal, existing behavior)
105
+
106
+ **Gemini enabled - analyze via llm-orchestrate.js:**
107
+
108
+ ```bash
109
+ # [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
110
+ node "[LLM_SCRIPT]" gemini analyze-image "./designs/login-wireframe.png" "Analyze this UI design image. Identify all UI elements, layout structure, colors, typography, and component hierarchy. Output a structured breakdown."
111
+ ```
112
+
113
+ Parse the JSON result: `{ success: true, analysis: "..." }` → use `analysis` field content.
114
+
115
+ If `success: false`, fall back to Claude Read tool.
116
+
117
+ **Gemini disabled - analyze via Claude Read tool:**
118
+
119
+ Use the Read tool directly on the image file. Claude can read images natively.
120
+
121
+ **Image input example:**
122
+ ```
123
+ /vibe.spec "designs/login-wireframe.png"
124
+
125
+ 🖼️ Image analysis: designs/login-wireframe.png
126
+ (via Gemini Flash / Claude Opus)
127
+
128
+ 📋 Detected UI elements:
129
+ - Email input field
130
+ - Password input field
131
+ - "Login" button
132
+ - "Forgot password" link
133
+ - Social login buttons (Google, Apple)
134
+
135
+ ❓ Confirmation needed:
136
+ 1. Feature name? (e.g., "login")
137
+ 2. Additional requirements?
138
+
139
+ → Generate SPEC
140
+ ```
141
+
142
+ ## Rules Reference
143
+
144
+ **Must follow `~/.claude/vibe/rules/` (global):**
145
+ - `core/development-philosophy.md` - Surgical precision, simplicity
146
+ - `core/quick-start.md` - Korean first, DRY, SRP
147
+ - `core/communication-guide.md` - Communication principles
148
+
149
+ ## Description
150
+
151
+ Collect requirements through conversation with the user and create an **AI-executable PTCF structured SPEC document**.
152
+
153
+ > **PTCF**: Persona, Task, Context, Format - Google Gemini prompt optimization framework
154
+
155
+ ## External LLM Integration (GPT/Gemini)
156
+
157
+ When GPT/Gemini are enabled, they are automatically utilized during SPEC creation:
158
+
159
+ ```
160
+ /vibe.spec "feature"
161
+
162
+ [Claude] Draft SPEC
163
+
164
+ [Parallel Research] GPT + Gemini + Claude agents (8 parallel)
165
+
166
+ [SPEC Review] GPT + Gemini parallel review
167
+
168
+ [Claude] Finalize SPEC
169
+ ```
170
+
171
+ **Setup:**
172
+ ```bash
173
+ vibe gpt key <key> # Enable GPT
174
+ vibe gemini key <key> # Enable Gemini
175
+ vibe status # Check current settings
176
+ ```
177
+
178
+ ## Process
179
+
180
+ ### 0. Git Branch Setup (MANDATORY - Execute First!)
181
+
182
+ > ⚠️ **CRITICAL: You MUST execute this step FIRST before anything else!**
183
+ > This is NOT optional documentation - you must RUN these git commands.
184
+
185
+ **Step 0 is BLOCKING - do not proceed to Step 1 until branch is ready.**
186
+
187
+ **Execute these commands using Bash tool:**
188
+
189
+ ```bash
190
+ # 1. Check current branch
191
+ git branch --show-current
192
+ ```
193
+
194
+ **Then based on result:**
195
+
196
+ | Current Branch | Action |
197
+ |----------------|--------|
198
+ | `main` or `master` | **MUST** create feature branch: `git checkout -b feature/{feature-name}` |
199
+ | `feature/*` | Ask user: "Continue on this branch or create new?" |
200
+ | Other | Ask user to confirm |
201
+
202
+ **Example execution:**
203
+
204
+ ```
205
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
206
+ 🌿 GIT BRANCH SETUP
207
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
208
+
209
+ Current branch: main
210
+
211
+ Creating feature branch...
212
+ $ git checkout -b feature/login-page
213
+
214
+ ✅ Switched to new branch: feature/login-page
215
+
216
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
217
+ ```
218
+
219
+ **Branch naming rules:**
220
+ - Convert to lowercase: `Login Page` → `login-page`
221
+ - Replace spaces with hyphens
222
+ - Prefix with `feature/`
223
+ - Example: `feature/passkey-auth`, `feature/dark-mode`
224
+
225
+ **`.last-feature` pointer update** (immediately after Git branch setup):
226
+
227
+ ```
228
+ Write ".claude/vibe/.last-feature" ← feature-name (single line)
229
+ Execute at the point when the feature name is finalized.
230
+ No-op if the value is already the same.
231
+ ```
232
+
233
+ ### 1. Project Analysis
234
+
235
+ **Existing project** (`vibe init`):
236
+ - Reference `CLAUDE.md` file (tech stack)
237
+ - **Delegate codebase analysis to explorer agent** — do NOT read project files in main session:
238
+
239
+ ```text
240
+ Task(subagent_type="explorer-low",
241
+ prompt="Analyze project structure: package.json, pyproject.toml, pubspec.yaml, go.mod.
242
+ Find existing implementations related to [FEATURE]. Return: tech stack, relevant files, patterns used.
243
+ Keep summary under 200 tokens.")
244
+ ```
245
+
246
+ **New project** (`vibe init <project-name>`):
247
+ - Suggest tech stack (2-3 options)
248
+
249
+ ### 2. Collect Requirements via Conversation
250
+
251
+ **Principles:**
252
+ - Ask **one question at a time**
253
+ - Present options **with numbers** + "Feel free to describe in your own words"
254
+ - **Natural conversation** without fixed order
255
+
256
+ **Required confirmations:**
257
+ - Purpose (Why): Why is it needed?
258
+ - User (Who): Who will use it?
259
+ - Feature scope (What): What features are needed?
260
+ - Tech stack: Confirm existing stack or suggest new
261
+ - Design reference: UI/UX to reference
262
+
263
+ ### 2.1 Critical Requirements Confirmation (askUser) - v2.6.1
264
+
265
+ **🚨 IMPORTANT: Use `askUser` tool for CRITICAL requirements that must not be missed**
266
+
267
+ After initial conversation, use the structured `askUser` tool for:
268
+ - 🔐 Authentication: method, MFA, password policy
269
+ - 🛡️ Security: rate limiting, session management
270
+ - ⏱️ Session: duration, concurrent login policy
271
+ - 📊 Data Model: required fields, relationships
272
+
273
+ **When to use askUser vs conversation:**
274
+
275
+ | Scenario | Method |
276
+ |----------|--------|
277
+ | Exploratory (feature scope, style) | Natural conversation |
278
+ | **Critical** (auth, security, session) | `askUser` tool |
279
+ | Optional (performance, integration) | Natural conversation |
280
+
281
+ **Usage:**
282
+
283
+ ```typescript
284
+ import { askUser, askUserQuick } from '@su-record/vibe/tools';
285
+
286
+ // Quick helper for common scenarios
287
+ const result = await askUserQuick.login('my-login-feature');
288
+ console.log(result.content[0].text);
289
+
290
+ // Custom categories
291
+ const result = await askUser({
292
+ featureName: 'user-dashboard',
293
+ categories: ['authentication', 'security', 'session', 'data_model'],
294
+ context: 'Building a user dashboard with role-based access',
295
+ });
296
+ ```
297
+
298
+ **Available categories:**
299
+ - `authentication`: Auth methods, MFA
300
+ - `security`: Password policy, rate limiting
301
+ - `session`: Session expiry, concurrent login
302
+ - `data_model`: User profile fields
303
+ - `performance`: Response time targets
304
+ - `integration`: External service integration
305
+
306
+ **Example output:**
307
+
308
+ ```
309
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
310
+ 📋 Requirements Confirmation
311
+ Feature: login
312
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
313
+
314
+ ## 🔐 Authentication
315
+
316
+ ### 🔐 Q-AUTHENTICATION-001
317
+
318
+ **Which authentication methods should be supported?**
319
+ (Multiple selection allowed)
320
+
321
+ 1. **Email/Password** ✓
322
+ 2. **Google Social Login**
323
+ 3. **Apple Social Login**
324
+ ...
325
+
326
+ **Required**
327
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
328
+ Total 6 questions (Required: 4)
329
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
330
+ ```
331
+
332
+ **Response parsing:**
333
+
334
+ ```typescript
335
+ import { parseUserResponse } from '@su-record/vibe/tools';
336
+
337
+ // User responds: "1, 2, 4" (selected option numbers)
338
+ const response = parseUserResponse(question, "1, 2, 4");
339
+ // { questionId: "Q-AUTH-001", value: ["email_password", "social_google", "passkey"], timestamp: "..." }
340
+ ```
341
+
342
+ **ultrawork mode:**
343
+ - askUser is **skipped** in ultrawork mode
344
+ - Uses default values from templates automatically
345
+
346
+ ### 2.5. Reference Documents via config.json (MANDATORY after tech stack confirmed)
347
+
348
+ **🚨 CRITICAL: Read config.json references IMMEDIATELY after tech stack is confirmed**
349
+
350
+ Reference documents are automatically generated in `config.json` based on the stack detected during `vibe init`:
351
+
352
+ ```json
353
+ // .claude/vibe/config.json
354
+ {
355
+ "language": "ko",
356
+ "stacks": [
357
+ { "type": "typescript-react", "path": "package.json" }
358
+ ],
359
+ "references": {
360
+ "rules": [
361
+ "~/.claude/vibe/rules/code-quality.md",
362
+ "~/.claude/vibe/rules/error-handling.md",
363
+ "~/.claude/vibe/rules/security.md"
364
+ ],
365
+ "languages": [
366
+ "~/.claude/vibe/languages/typescript-react.md"
367
+ ],
368
+ "templates": [
369
+ "~/.claude/vibe/templates/spec-template.md",
370
+ "~/.claude/vibe/templates/feature-template.md",
371
+ "~/.claude/vibe/templates/constitution-template.md"
372
+ ]
373
+ }
374
+ }
375
+ ```
376
+
377
+ **Workflow:**
378
+
379
+ 1. Read `.claude/vibe/config.json`
380
+ 2. Extract `references.languages[]` paths
381
+ 3. Read each language document for stack-specific guidelines
382
+
383
+ **Example:**
384
+ ```bash
385
+ # 1. Check references in config.json
386
+ Read .claude/vibe/config.json
387
+
388
+ # 2. Reference documents specified in references.languages
389
+ Read ~/.claude/vibe/languages/typescript-react.md
390
+ ```
391
+
392
+ **Important:**
393
+
394
+ - No manual mapping needed - config.json contains all reference paths
395
+ - `config.json.references` is automatically referenced when running `/vibe.run`
396
+ - Not copied to project (referenced from global package)
397
+
398
+ ### 2.9 Research Cache Check (BEFORE step 3)
399
+
400
+ Before spawning any research agents, check for a prior persisted dataset:
401
+
402
+ ```bash
403
+ # Slug = kebab-case of the feature/topic, max 50 chars
404
+ ls .claude/vibe/research/<slug>/paper.md 2>/dev/null
405
+ ```
406
+
407
+ **If `paper.md` exists:**
408
+ 1. Read `.claude/vibe/research/<slug>/paper.md`
409
+ 2. Read `.claude/vibe/research/<slug>/awesome-list.md` (if present)
410
+ 3. Inject the **Findings**, **Recommendation**, and **Security considerations** sections verbatim into SPEC Context, prefixed with `> Source: .claude/vibe/research/<slug>/paper.md (cached {{FILE_MTIME}})`
411
+ 4. **Skip step 3** (parallel research) entirely — do not re-run GPT/Gemini/Claude agents
412
+ 5. Print: `✅ Research cache hit: <slug> (saved ~30s of LLM calls)`
413
+
414
+ **Cache invalidation:**
415
+ - User passes `--refresh-research` → delete dir, rerun step 3 from scratch
416
+ - `paper.md` mtime older than 30 days → warn the user, ask to refresh or reuse
417
+ - `stack` in `paper.md` frontmatter differs from current stack → auto-refresh
418
+
419
+ **If `paper.md` does NOT exist:**
420
+ Proceed to step 3. After step 3 completes, the synthesizer **must** write the 3 artifacts (see `parallel-research/orchestrator.md` Phase 5) so the next `/vibe.spec` run on this topic hits the cache.
421
+
422
+ ### 3. Parallel Research (v2.5.0) - MANDATORY AFTER requirements confirmed
423
+
424
+ **🚨🚨🚨 ABSOLUTE RULES FOR RESEARCH PHASE 🚨🚨🚨**
425
+
426
+ **STOP! Before doing ANY research, read this carefully:**
427
+
428
+ 1. **DO NOT** use Task tool to spawn research agents
429
+ 2. **DO NOT** use context7 MCP directly for research
430
+ 3. **DO NOT** use WebSearch tool directly for research
431
+ 4. **YOU MUST** use Bash tool to call llm-orchestrate.js directly
432
+
433
+ **🚨🚨🚨 CRITICAL: NO FILE CREATION DURING RESEARCH 🚨🚨🚨**
434
+
435
+ 5. **DO NOT** create any files in project root during research
436
+ 6. **DO NOT** create SECURITY_*.md, RESEARCH_*.md, SUMMARY_*.md files
437
+ 7. **DO NOT** use Write tool during research phase
438
+ 8. **ALL research results** must be returned as text output only
439
+ 9. **Files are ONLY created** in Step 4 (SPEC) and Step 5 (Feature) in `.claude/vibe/` directory
440
+
441
+ **When to trigger:**
442
+ 1. ✅ Feature type decided (e.g., "passkey authentication")
443
+ 2. ✅ Tech stack confirmed (e.g., "React + Supabase")
444
+ 3. ✅ Language guide copied (step 2.5)
445
+ 4. ✅ Core requirements collected
446
+
447
+ **→ IMMEDIATELY run these 6 Bash commands IN PARALLEL (all at once):**
448
+
449
+ **Step 0: Script path:**
450
+ - `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
451
+
452
+ **Run all 4 in PARALLEL (each as separate Bash tool call):**
453
+ ```bash
454
+ # 1. GPT: Best practices (codex — code review & analysis)
455
+ node "[LLM_SCRIPT]" gpt-codex orchestrate-json "Best practices for [FEATURE] with [STACK]. Focus: architecture patterns, code conventions. Return JSON: {patterns: [], antiPatterns: [], libraries: []}"
456
+
457
+ # 2. GPT: Security (codex — code review & analysis)
458
+ node "[LLM_SCRIPT]" gpt-codex orchestrate-json "Security vulnerabilities for [FEATURE] with [STACK]. Focus: CVE database, known exploits. Return JSON: {vulnerabilities: [], mitigations: [], checklist: []}"
459
+
460
+ # 3. Gemini: Best practices
461
+ node "[LLM_SCRIPT]" gemini orchestrate-json "Best practices for [FEATURE] with [STACK]. Focus: latest trends, framework updates. Return JSON: {patterns: [], antiPatterns: [], libraries: []}"
462
+
463
+ # 4. Gemini: Security
464
+ node "[LLM_SCRIPT]" gemini orchestrate-json "Security advisories for [FEATURE] with [STACK]. Focus: latest patches, recent incidents. Return JSON: {advisories: [], patches: [], incidents: []}"
465
+ ```
466
+
467
+ **Concrete example - run all 4 in parallel:**
468
+ ```bash
469
+ # GPT best practices (codex — code review & analysis)
470
+ node "[LLM_SCRIPT]" gpt-codex orchestrate-json "Best practices for passkey authentication with React, Supabase. Focus: architecture patterns, code conventions. Return JSON: {patterns: [], antiPatterns: [], libraries: []}"
471
+
472
+ # GPT security (codex — code review & analysis)
473
+ node "[LLM_SCRIPT]" gpt-codex orchestrate-json "Security vulnerabilities for passkey authentication with React, Supabase. Focus: CVE database, known exploits. Return JSON: {vulnerabilities: [], mitigations: [], checklist: []}"
474
+
475
+ # Gemini best practices
476
+ node "[LLM_SCRIPT]" gemini orchestrate-json "Best practices for passkey authentication with React, Supabase. Focus: latest trends, framework updates. Return JSON: {patterns: [], antiPatterns: [], libraries: []}"
477
+
478
+ # Gemini security
479
+ node "[LLM_SCRIPT]" gemini orchestrate-json "Security advisories for passkey authentication with React, Supabase. Focus: latest patches, recent incidents. Return JSON: {advisories: [], patches: [], incidents: []}"
480
+ ```
481
+
482
+ **ALSO run Claude research agents in parallel using Task tool:**
483
+
484
+ | Claude Agent | Role | Source |
485
+ |--------------|------|--------|
486
+ | `best-practices-agent` | Best practices for [feature] + [stack] | WebSearch |
487
+ | `framework-docs-agent` | Latest docs via context7 | context7 MCP |
488
+ | `codebase-patterns-agent` | Similar patterns in existing codebase | Glob, Grep |
489
+ | `security-advisory-agent` | Security advisories for [feature] | WebSearch |
490
+
491
+ **Total: 4 GPT/Gemini calls (Bash) + 4 Claude agents (Task) = 8 parallel research tasks**
492
+
493
+ **🚨 GPT/Gemini MUST be called via Bash with llm-orchestrate.js! 🚨**
494
+
495
+ #### 3.0.1 Agent Teams — Research Collaboration
496
+
497
+ > **Team definition**: See `agents/teams/research-team.md`
498
+ > Settings: `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` + `teammateMode: in-process` (`~/.claude/settings.json` global — auto-configured by postinstall)
499
+
500
+ **Discussion results are reflected in the SPEC's Context section.**
501
+
502
+ #### 3.1 Result Merge Rules
503
+
504
+ | Area | Merge Strategy |
505
+ |------|----------------|
506
+ | Best Practices | Deduplicate, keep most detailed |
507
+ | Security | ALL included (no dedup for safety) |
508
+ | Libraries | Consensus recommendations |
509
+
510
+ **IMPORTANT:**
511
+ - ❌ DO NOT skip research step
512
+ - ❌ DO NOT ask user "should I run research?"
513
+ - ✅ ALWAYS run after requirements confirmed
514
+ - ✅ Show "Running parallel research (Claude + GPT + Gemini)..." message
515
+ - ✅ Include all agent + LLM results in SPEC Context
516
+ - ✅ Run all 4 Bash LLM calls in parallel + 4 Task agents in parallel
517
+
518
+ **Research results are reflected in SPEC's Context section.**
519
+
520
+ ### 3.2 UI/UX Design Intelligence (Auto-triggered)
521
+
522
+ > **Condition**: Auto-executes when UI/UX keywords are present in the SPEC context (website, landing, dashboard, app, e-commerce, portfolio, SaaS, mobile app, web app, UI, UX, frontend, design)
523
+ > **Disable**: Set `"uiUxAnalysis": false` in `.claude/vibe/config.json`
524
+
525
+ **When UI/UX keywords are detected, run 3 agents sequentially in parallel with research:**
526
+
527
+ ```
528
+ [Parallel Research] GPT + Gemini + Claude agents
529
+ ↓ (concurrent execution)
530
+ [UI/UX Intelligence]
531
+ ① ui-industry-analyzer (Haiku) → industry analysis + design strategy
532
+
533
+ ②③ parallel execution:
534
+ ② ui-design-system-gen (Sonnet) → generate MASTER.md
535
+ ③ ui-layout-architect (Haiku) → layout design
536
+ ```
537
+
538
+ **How to execute:**
539
+
540
+ 1. **① ui-industry-analyzer** — Run as Task(haiku) agent:
541
+ ```text
542
+ Task(subagent_type="ui-industry-analyzer",
543
+ prompt="Analyze product: [USER_DESCRIPTION]. Use core_ui_search to detect category, style priority, color mood, typography mood. Save result to .claude/vibe/design-system/{project}/analysis-result.json")
544
+ ```
545
+
546
+ 2. **②③ parallel execution** — Using ①'s result as input:
547
+ ```text
548
+ # ② Generate design system (Sonnet)
549
+ Task(subagent_type="ui-design-system-gen",
550
+ prompt="Generate design system from analysis-result.json for project '{project}'. Use core_ui_search for style/color/typography, then core_ui_generate_design_system and core_ui_persist_design_system.")
551
+
552
+ # ③ Layout design (Haiku) — parallel execution
553
+ Task(subagent_type="ui-layout-architect",
554
+ prompt="Design layout from analysis-result.json for project '{project}'. Use core_ui_search for landing patterns and dashboard layout.")
555
+ ```
556
+
557
+ 3. **Inject results into SPEC Context:**
558
+ ```markdown
559
+ ### Design System (Auto-generated)
560
+ - Category: {① category}
561
+ - Style: {① style_priority}
562
+ - MASTER.md: .claude/vibe/design-system/{project}/MASTER.md
563
+ - Layout: {③ pattern + sections}
564
+ ```
565
+
566
+ ### 3.9 Persist Research Cache (AFTER research completes, BEFORE SPEC write)
567
+
568
+ > The "no Write during research" rule from step 3 does **not** apply here — research is done; artifacts are safe to persist.
569
+
570
+ After parallel research + UI/UX intelligence complete, before writing the SPEC, save the merged research to `.claude/vibe/research/<slug>/`:
571
+
572
+ 1. Compute slug: kebab-case of feature name, max 50 chars
573
+ 2. Write **three files** using templates from `parallel-research/templates/`:
574
+ - `.claude/vibe/research/<slug>/synthesis.md` — raw merged findings (all agent outputs)
575
+ - `.claude/vibe/research/<slug>/awesome-list.md` — curated links/repos/patterns (every entry needs a one-line "why"; drop entries without one)
576
+ - `.claude/vibe/research/<slug>/paper.md` — structured survey (Abstract → Background → Method → Findings → Recommendation → Security → References)
577
+ 3. Include a frontmatter header in `paper.md` with a `stack:` field so step 2.9 can detect stack drift
578
+ 4. If the directory already exists (user passed `--refresh-research`), overwrite
579
+
580
+ This makes the next `/vibe.spec` (or future `/vibe.research`) invocation on the same topic hit the cache at step 2.9.
581
+
582
+ ### 4. Write SPEC Document (PTCF Structure)
583
+
584
+ #### 4.0 Large Scope Detection & Auto-Split (MANDATORY)
585
+
586
+ **🚨 CRITICAL: Automatically split SPEC when scope is large**
587
+
588
+ **❌ DO NOT ask user for confirmation - auto-split silently**
589
+
590
+ **Detection criteria (ANY triggers split):**
591
+
592
+ | Criteria | Threshold |
593
+ |----------|-----------|
594
+ | Phases | 5+ phases |
595
+ | Files to create | 15+ files |
596
+ | Platforms | 2+ platforms |
597
+ | Major features | 4+ distinct features |
598
+
599
+ **Auto-split output (SPEC + Feature files must match):**
600
+
601
+ ```
602
+ .claude/vibe/specs/{feature-name}/
603
+ ├── _index.md # Master SPEC
604
+ ├── phase-1-setup.md
605
+ ├── phase-2-core.md
606
+ └── ...
607
+
608
+ .claude/vibe/features/{feature-name}/
609
+ ├── _index.feature # Master Feature
610
+ ├── phase-1-setup.feature
611
+ ├── phase-2-core.feature
612
+ └── ...
613
+ ```
614
+
615
+ **🚨 CRITICAL: Each SPEC phase file MUST have a matching Feature file**
616
+
617
+ **Master SPEC (`_index.md`):**
618
+
619
+ ```markdown
620
+ # SPEC: {feature-name} (Master)
621
+
622
+ ## Overview
623
+ - Total phases: N
624
+ - Dependencies: [list]
625
+
626
+ ## Sub-SPECs
627
+
628
+ | Order | SPEC File | Feature File | Status |
629
+ |-------|-----------|--------------|--------|
630
+ | 1 | phase-1-setup.md | phase-1-setup.feature | ⬜ |
631
+ | 2 | phase-2-core.md | phase-2-core.feature | ⬜ |
632
+
633
+ ## Shared Context
634
+ - Tech Stack: [all phases]
635
+ - Constraints: [all phases]
636
+ ```
637
+
638
+ **Master Feature (`_index.feature`):**
639
+
640
+ ```markdown
641
+ # Feature: {feature-name} (Master)
642
+
643
+ **Master SPEC**: `.claude/vibe/specs/{feature-name}/_index.md`
644
+
645
+ ## Sub-Features
646
+
647
+ | Order | Feature File | SPEC File | Status |
648
+ |-------|--------------|-----------|--------|
649
+ | 1 | phase-1-setup.feature | phase-1-setup.md | ⬜ |
650
+ | 2 | phase-2-core.feature | phase-2-core.md | ⬜ |
651
+
652
+ ## Overall User Story
653
+ **As a** {user}
654
+ **I want** {complete feature}
655
+ **So that** {value}
656
+ ```
657
+
658
+ **Small scope (default):**
659
+
660
+ Create `.claude/vibe/specs/{feature-name}.md`:
661
+
662
+ ```markdown
663
+ ---
664
+ status: pending
665
+ currentPhase: 0
666
+ totalPhases: 3
667
+ createdAt: {ISO-timestamp}
668
+ lastUpdated: {ISO-timestamp}
669
+ ---
670
+
671
+ # SPEC: {feature-name}
672
+
673
+ ## Persona
674
+ <role>
675
+ Define AI role and expertise for implementation
676
+ - Senior developer on the project
677
+ - Follow existing code patterns
678
+ - Write testable code
679
+ </role>
680
+
681
+ ## Context
682
+ <context>
683
+ ### Background
684
+ - Why this feature is needed
685
+ - Who will use it
686
+
687
+ ### Tech Stack
688
+ - Backend: {technology}
689
+ - Frontend: {technology}
690
+ - Database: {technology}
691
+
692
+ ### Related Code
693
+ - `src/xxx/`: Existing implementation to reference
694
+ - `src/yyy/`: Files to modify
695
+
696
+ ### Design Reference
697
+ - {Reference app/service}
698
+ </context>
699
+
700
+ ## Task
701
+ <task>
702
+ ### Phase 1: {phase-name}
703
+ 1. [ ] {specific task}
704
+ - File: `path/to/file`
705
+ - Verify: `command`
706
+ 2. [ ] {specific task}
707
+
708
+ ### Phase 2: {phase-name}
709
+ 1. [ ] {specific task}
710
+ 2. [ ] {specific task}
711
+
712
+ ### Phase 3: Testing and Verification
713
+ 1. [ ] Unit Tests
714
+ 2. [ ] Integration Tests
715
+ </task>
716
+
717
+ ## Constraints
718
+ <constraints>
719
+ - Follow existing code patterns
720
+ - Localize error messages
721
+ - Separate configuration via environment variables
722
+ - {other constraints}
723
+ </constraints>
724
+
725
+ ## Output Format
726
+ <output_format>
727
+ ### Files to Create
728
+ - `path/to/new/file.ts`
729
+ - `path/to/new/file.test.ts`
730
+
731
+ ### Files to Modify
732
+ - `path/to/existing/file.ts`
733
+
734
+ ### Verification Commands
735
+ - `npm test`
736
+ - `npm run build`
737
+ </output_format>
738
+
739
+ ## Acceptance Criteria
740
+ <acceptance>
741
+ - [ ] {verifiable criterion 1}
742
+ - [ ] {verifiable criterion 2}
743
+ - [ ] All tests pass
744
+ - [ ] Build succeeds
745
+ </acceptance>
746
+ ```
747
+
748
+ ### 5. Create Feature File (BDD) - Required
749
+
750
+ **🚨 CRITICAL: Feature files MUST match SPEC file structure**
751
+
752
+ | SPEC Structure | Feature Structure |
753
+ |----------------|-------------------|
754
+ | Single file (`{feature}.md`) | Single file (`{feature}.feature`) |
755
+ | Split (`{feature}/_index.md` + phases) | Split (`{feature}/_index.feature` + phases) |
756
+
757
+ #### 5.1 Single File (Small Scope)
758
+
759
+ Create `.claude/vibe/features/{feature-name}.feature`:
760
+
761
+ **Creation rules:**
762
+ 1. Convert each SPEC Acceptance Criteria → one Scenario
763
+ 2. Include Happy Path (normal case) + Edge Case (exception case)
764
+ 3. Follow Given-When-Then format
765
+
766
+ ```markdown
767
+ # Feature: {feature-name}
768
+
769
+ **SPEC**: `.claude/vibe/specs/{feature-name}.md`
770
+
771
+ ## User Story
772
+ **As a** {user}
773
+ **I want** {feature}
774
+ **So that** {value}
775
+
776
+ ## Scenarios
777
+
778
+ ### Scenario 1: {Happy Path}
779
+ \`\`\`gherkin
780
+ Scenario: {title}
781
+ Given {precondition}
782
+ When {action}
783
+ Then {result}
784
+ \`\`\`
785
+ **Verification**: SPEC AC #1
786
+
787
+ ### Scenario 2: {Edge Case}
788
+ ...
789
+
790
+ ## Coverage
791
+ | Scenario | SPEC AC | Status |
792
+ |----------|---------|--------|
793
+ | 1 | AC-1 | ⬜ |
794
+ ```
795
+
796
+ #### 5.2 Split Files (Large Scope)
797
+
798
+ When SPEC is split into phases, Feature files MUST also be split:
799
+
800
+ ```
801
+ .claude/vibe/features/{feature-name}/
802
+ ├── _index.feature # Master: links to all phase features
803
+ ├── phase-1-setup.feature # Scenarios for phase-1-setup.md
804
+ ├── phase-2-core.feature # Scenarios for phase-2-core.md
805
+ └── ...
806
+ ```
807
+
808
+ **Phase Feature file structure:**
809
+
810
+ ```markdown
811
+ # Feature: {feature-name} - Phase {N}: {phase-name}
812
+
813
+ **SPEC**: `.claude/vibe/specs/{feature-name}/phase-{N}-{name}.md`
814
+ **Master Feature**: `.claude/vibe/features/{feature-name}/_index.feature`
815
+
816
+ ## User Story (Phase Scope)
817
+ **As a** {user}
818
+ **I want** {phase-specific feature}
819
+ **So that** {phase-specific value}
820
+
821
+ ## Scenarios
822
+
823
+ ### Scenario 1: {Phase Happy Path}
824
+ ...
825
+
826
+ ## Coverage
827
+ | Scenario | SPEC AC | Status |
828
+ |----------|---------|--------|
829
+ | 1 | Phase {N} AC-1 | ⬜ |
830
+ ```
831
+
832
+ ### 6. Ambiguity Scan - Required
833
+
834
+ After creating SPEC draft, **must perform systematic ambiguity check**.
835
+
836
+ #### 6.1 Mandatory Check Categories
837
+
838
+ | Category | Check Items | Red Flags |
839
+ |----------|-------------|-----------|
840
+ | **Functional Scope** | Missing features, unclear behavior | "etc.", "other", "if needed" |
841
+ | **Data Model** | Undefined entities, relationships | Undefined types, missing fields |
842
+ | **Non-Functional** | Performance, security requirements | Performance requirements without numbers |
843
+ | **Edge Cases** | Boundary conditions, errors | 0 failure scenarios |
844
+ | **Integration Points** | External APIs, contracts | API version/endpoint undefined |
845
+ | **User Input** | Validation rules, limits | Input limits not specified |
846
+ | **State Management** | State transitions, persistence | Missing state diagram |
847
+
848
+ #### 6.2 Forbidden Ambiguous Terms
849
+
850
+ If the following terms exist in SPEC, **clarification is mandatory**:
851
+
852
+ | Forbidden Term | Replacement Method |
853
+ |----------------|-------------------|
854
+ | "appropriately", "properly" | Provide specific criteria (e.g., "within 3 seconds") |
855
+ | "quickly", "rapidly" | Specify with numbers (e.g., "under 100ms") |
856
+ | "various", "multiple" | List specific items |
857
+ | "etc.", "other" | Specify complete list or limit scope |
858
+ | "if needed", "depending on situation" | Specify conditions (e.g., "when credits < 10") |
859
+ | "later", "in the future" | Explicitly exclude from current scope |
860
+
861
+ #### 6.3 Check Process
862
+
863
+ ```
864
+ 1. Write SPEC draft
865
+
866
+ 2. Auto-scan for forbidden terms
867
+
868
+ 3. Review checklist by category
869
+
870
+ 4. List discovered ambiguities
871
+
872
+ 5. Auto-fixable items → Fix immediately
873
+ Needs user confirmation → Ask question
874
+
875
+ 6. Re-verify (max 2 rounds — remaining ambiguities → user confirmation or TODO)
876
+ ```
877
+
878
+ #### 6.4 Auto-Fix for Common Ambiguities
879
+
880
+ | Ambiguity Type | Auto-Fix Method |
881
+ |----------------|-----------------|
882
+ | Timeout undefined | Apply default 30 seconds |
883
+ | Retry count undefined | Apply default 3 retries |
884
+ | Pagination undefined | Apply default 20 items/page |
885
+ | Input length undefined | Text 500 chars, password 8-64 chars |
886
+ | File size undefined | Image 5MB, video 100MB |
887
+
888
+ #### 6.5 Ambiguity Output Format
889
+
890
+ ```markdown
891
+ ## 🔍 Ambiguity Scan Results
892
+
893
+ ### Found Issues: 3
894
+
895
+ #### 1. Functional Scope
896
+ - ⚠️ "Login failure behavior" not defined
897
+ → **Auto-fix**: Apply 5-minute lockout after 3 failures
898
+ - ⚠️ "Session expiration handling" unclear
899
+ → **Question**: Session expiration time? (30min/1hour/24hours)
900
+
901
+ #### 2. Edge Cases
902
+ - ⚠️ Concurrent login permission undefined
903
+ → **Question**: Allow concurrent login? (Y/N)
904
+
905
+ ### Auto-fixed: 1
906
+ ### Needs clarification: 2
907
+ ```
908
+
909
+ ### 7. Quality Validation (Self-Check)
910
+
911
+ **Must perform self-quality check after SPEC completion**
912
+
913
+ #### 7.1 Quality Checklist (Required Items)
914
+
915
+ | Category | Check Item | Weight |
916
+ |----------|------------|--------|
917
+ | **Completeness** | All user flows included in Task | 15% |
918
+ | **Completeness** | All ACs converted to Feature scenarios | 10% |
919
+ | **Clarity** | No ambiguous terms (e.g., "appropriately", "quickly") | 10% |
920
+ | **Clarity** | All numbers/limits specified (e.g., "max 500 chars") | 10% |
921
+ | **Testability** | All ACs are auto-testable | 10% |
922
+ | **Security** | Authentication/authorization requirements defined | 10% |
923
+ | **Security** | Sensitive data handling method specified | 5% |
924
+ | **Error Handling** | Major failure scenarios defined | 10% |
925
+ | **Error Handling** | User error messages specified | 5% |
926
+ | **Performance** | Response time/throughput targets specified | 5% |
927
+ | **Edge Cases** | Boundary condition handling defined | 5% |
928
+ | **Dependencies** | External systems/APIs specified | 5% |
929
+
930
+ #### 7.2 Quality Score Calculation
931
+
932
+ ```
933
+ Score = Σ(Check item met × Weight) / 100
934
+
935
+ Grades:
936
+ - 95-100: ✅ EXCELLENT - Ready to start implementation
937
+ - 90-94: ⚠️ GOOD - Minor improvements required before implementation
938
+ - 80-89: ⚠️ FAIR - Significant improvements required
939
+ - 0-79: ❌ POOR - Rewrite required
940
+ ```
941
+
942
+ #### 7.3 Quality Gate (Auto-verification)
943
+
944
+ **100 points required to complete SPEC draft. Loop until perfect — ask user if auto-fixer hits a wall.**
945
+
946
+ ```
947
+ SPEC writing complete
948
+
949
+ [Calculate Quality Score]
950
+
951
+ Score < 100? → Show missing items → Auto-fix → Re-evaluate
952
+
953
+ Stuck? (score == prev_score)
954
+ ├─ Interactive: ask user → fill values OR "proceed" OR "abort"
955
+ └─ ultrawork: record gaps as TODO → proceed
956
+
957
+ Score == 100 (or user-approved) → SPEC Draft Complete → Handoff to vibe-spec-review skill
958
+ ```
959
+
960
+ #### 7.4 Auto-Fix for Low Score
961
+
962
+ If score is below 100, attempt automatic fixes:
963
+
964
+ | Missing Item | Auto-Fix Method |
965
+ |--------------|-----------------|
966
+ | Missing AC | Auto-generate AC based on Task |
967
+ | Numbers not specified | Apply project defaults (e.g., timeout 30s) |
968
+ | Missing error handling | Add common error scenarios |
969
+ | Missing performance targets | Apply industry standard criteria |
970
+
971
+ ### 8. SPEC Draft Complete - Handoff to Review
972
+
973
+ **🚨 IMPORTANT: GPT/Gemini review is now a SEPARATE command**
974
+
975
+ After SPEC draft is complete (score ≥ 95):
976
+
977
+ **If `ultrawork` mode:**
978
+ - ❌ DO NOT show handoff message
979
+ - ❌ DO NOT ask for confirmation
980
+ - ✅ Immediately load skill `vibe-spec-review` with feature `{feature-name}` (chain-next)
981
+ - ✅ After review passes, immediately proceed to `/vibe.run "{feature-name}" ultrawork`
982
+
983
+ **If normal mode:**
984
+ Output the handoff message:
985
+
986
+ ```
987
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
988
+ ✅ SPEC DRAFT COMPLETE: {feature-name}
989
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
990
+
991
+ 📋 SPEC: .claude/vibe/specs/{feature-name}.md
992
+ 📋 Feature: .claude/vibe/features/{feature-name}.feature
993
+ 📊 Quality Score: {score}/100
994
+ ⏱️ Started: {start_time}
995
+ ⏱️ Completed: {getCurrentTime result}
996
+
997
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
998
+ ⚠️ NEXT STEP: Run SPEC review (vibe-spec-review skill)
999
+
1000
+ Option 1 (same session):
1001
+ Load skill `vibe-spec-review` with feature `{feature-name}`
1002
+ (or natural language: "spec review")
1003
+
1004
+ Option 2 (recommended for large context):
1005
+ /new → /vibe.spec "{feature-name}"
1006
+ (Smart Resume will start from Phase 4)
1007
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1008
+ ```
1009
+
1010
+ **Tip:** New session recommended when context > 50% to ensure review accuracy
1011
+
1012
+ ## Output (MANDATORY File Creation)
1013
+
1014
+ **🚨 CRITICAL: Files MUST be created in these EXACT paths. NO exceptions.**
1015
+
1016
+ ### Small Scope (Single File)
1017
+
1018
+ | File | Path | When |
1019
+ |------|------|------|
1020
+ | SPEC | `.claude/vibe/specs/{feature-name}.md` | After quality validation (Step 7) |
1021
+ | Feature | `.claude/vibe/features/{feature-name}.feature` | Immediately after SPEC |
1022
+
1023
+ ### Large Scope (Split Files)
1024
+
1025
+ | File | Path | When |
1026
+ |------|------|------|
1027
+ | Master SPEC | `.claude/vibe/specs/{feature-name}/_index.md` | After quality validation |
1028
+ | Phase SPEC | `.claude/vibe/specs/{feature-name}/phase-{N}-{name}.md` | Per phase |
1029
+ | Master Feature | `.claude/vibe/features/{feature-name}/_index.feature` | After Master SPEC |
1030
+ | Phase Feature | `.claude/vibe/features/{feature-name}/phase-{N}-{name}.feature` | Per phase SPEC |
1031
+
1032
+ **❌ FORBIDDEN:**
1033
+
1034
+ - Creating files in project root (e.g., `feature-name.md`)
1035
+ - Creating files outside `.claude/vibe/` directory
1036
+ - Skipping file creation
1037
+ - Using different file names than feature-name
1038
+ - Creating split SPEC without matching split Feature files
1039
+
1040
+ **✅ REQUIRED:**
1041
+
1042
+ - Use Write tool to create files
1043
+ - Verify directories exist (create if needed)
1044
+ - Confirm file creation in response
1045
+ - **Each SPEC file must have a matching Feature file**
1046
+
1047
+ ### File Creation Template
1048
+
1049
+ **Single file:**
1050
+ ```
1051
+ 1. Write .claude/vibe/specs/{feature-name}.md
1052
+ 2. Write .claude/vibe/features/{feature-name}.feature
1053
+ 3. Confirm: "✅ Created: specs/{feature-name}.md + features/{feature-name}.feature"
1054
+ ```
1055
+
1056
+ **Split files:**
1057
+ ```
1058
+ 1. Write .claude/vibe/specs/{feature-name}/_index.md
1059
+ 2. Write .claude/vibe/specs/{feature-name}/phase-1-setup.md
1060
+ 3. Write .claude/vibe/specs/{feature-name}/phase-2-core.md
1061
+ 4. Write .claude/vibe/features/{feature-name}/_index.feature
1062
+ 5. Write .claude/vibe/features/{feature-name}/phase-1-setup.feature
1063
+ 6. Write .claude/vibe/features/{feature-name}/phase-2-core.feature
1064
+ 7. Confirm: "✅ Created: {N} SPEC files + {N} Feature files"
1065
+ ```
1066
+
1067
+ ## Example
1068
+
1069
+ ```
1070
+ User: /vibe.spec "brick-game"
1071
+
1072
+ Claude:
1073
+ You're making a brick game! What style are you thinking of?
1074
+
1075
+ 1. Classic Breakout style
1076
+ 2. Arkanoid (with power-up items)
1077
+ 3. Custom style with special gameplay
1078
+
1079
+ Feel free to describe in your own words.
1080
+
1081
+ User: 1
1082
+
1083
+ Claude: What platform will it run on?
1084
+
1085
+ 1. Web (browser)
1086
+ 2. Mobile (iOS/Android)
1087
+ 3. Desktop
1088
+
1089
+ User: 1
1090
+
1091
+ Claude:
1092
+ Here are tech stack suggestions for web game development:
1093
+
1094
+ 1. **Phaser.js** (Recommended) - Game framework with built-in physics engine
1095
+ 2. **Canvas + JavaScript** - Lightweight with fine control
1096
+ 3. **PixiJS + Matter.js** - High-performance rendering
1097
+
1098
+ User: 1
1099
+
1100
+ Claude: What design style?
1101
+
1102
+ 1. Retro pixel (Atari Breakout)
1103
+ 2. Neon graphics (Arkanoid)
1104
+ 3. Modern 3D effects
1105
+
1106
+ User: 2
1107
+
1108
+ [Conversation continues...]
1109
+
1110
+ Claude: SPEC draft created. Running ambiguity scan.
1111
+
1112
+ ## 🔍 Ambiguity Scan Results
1113
+
1114
+ ### Functional Scope
1115
+ - ⚠️ Game over condition not defined (ball drop vs lives system)
1116
+ - ⚠️ Stage clear condition unclear
1117
+
1118
+ ### Edge Cases
1119
+ - ⚠️ Ball reflection angle when hitting paddle edge
1120
+ - ⚠️ Multiple brick collision handling
1121
+
1122
+ Please clarify the above items.
1123
+
1124
+ User: 3 lives, clear when all bricks destroyed, edge reflects at 45 degrees
1125
+
1126
+ Claude: Thank you. SPEC has been refined.
1127
+
1128
+ 🔍 Re-check result: 0 ambiguities
1129
+ 📊 Quality score: 92/100 (A)
1130
+
1131
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1132
+ 🔍 SPEC REVIEW (Gemini)
1133
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1134
+
1135
+ 📤 Sending SPEC...
1136
+ 📝 Gemini feedback:
1137
+ 1. [Edge] Ball speed increase logic undefined
1138
+ 2. [Security] Need score manipulation prevention
1139
+
1140
+ ✅ 2 improvements auto-applied
1141
+ 🔍 Re-verifying... ✅ Passed
1142
+
1143
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1144
+ ✅ SPEC Complete!
1145
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1146
+
1147
+ 📄 .claude/vibe/specs/brick-game.md (PTCF structure)
1148
+ 📄 .claude/vibe/features/brick-game.feature
1149
+ 📊 Quality score: 100/100 ← Loop converged (no remaining gaps)
1150
+ ```
1151
+
1152
+ ## Core Tools (Semantic Analysis & Memory)
1153
+
1154
+ ### Tool Invocation
1155
+ All tools are called via:
1156
+ ```bash
1157
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
1158
+ ```
1159
+
1160
+ ### Recommended Tools for SPEC Creation
1161
+
1162
+ | Tool | Purpose | When to Use |
1163
+ |------|---------|-------------|
1164
+ | `findSymbol` | Find symbol definitions | Locate existing implementations to reference |
1165
+ | `findReferences` | Find all references | Understand how existing code is used |
1166
+ | `analyzeComplexity` | Code complexity analysis | Evaluate complexity of code to modify |
1167
+ | `saveMemory` | Save important decisions | Store confirmed requirements, design decisions |
1168
+ | `recallMemory` | Recall saved memory | Retrieve previous project decisions |
1169
+
1170
+ ### Example Tool Usage in SPEC Creation
1171
+
1172
+ **1. Find existing auth implementation:**
1173
+ ```bash
1174
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'login', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
1175
+ ```
1176
+
1177
+ **2. Save confirmed requirements:**
1178
+ ```bash
1179
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'brick-game-requirements', value: 'Platform: Web, Stack: Phaser.js, Style: Neon', category: 'spec', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
1180
+ ```
1181
+
1182
+ **3. Recall previous decisions:**
1183
+ ```bash
1184
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.recallMemory({key: 'brick-game-requirements', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
1185
+ ```
1186
+
1187
+ ## Next Step
1188
+
1189
+ ```
1190
+ /vibe.run "brick-game"
1191
+ ```
1192
+
1193
+ ---
1194
+
1195
+ ARGUMENTS: $ARGUMENTS