@su-record/vibe 2.9.25 → 2.9.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +109 -106
  3. package/LICENSE +21 -21
  4. package/README.en.md +220 -220
  5. package/README.md +171 -171
  6. package/agents/architect-low.md +41 -41
  7. package/agents/architect-medium.md +59 -59
  8. package/agents/architect.md +80 -80
  9. package/agents/build-error-resolver.md +115 -115
  10. package/agents/compounder.md +261 -261
  11. package/agents/diagrammer.md +178 -178
  12. package/agents/docs/api-documenter.md +99 -99
  13. package/agents/docs/changelog-writer.md +93 -93
  14. package/agents/e2e-tester.md +294 -294
  15. package/agents/event/event-comms.md +78 -78
  16. package/agents/event/event-content.md +68 -68
  17. package/agents/event/event-image.md +95 -95
  18. package/agents/event/event-ops.md +84 -84
  19. package/agents/event/event-scheduler.md +69 -69
  20. package/agents/event/event-speaker.md +86 -86
  21. package/agents/explorer-low.md +42 -42
  22. package/agents/explorer-medium.md +59 -59
  23. package/agents/explorer.md +48 -48
  24. package/agents/implementer-low.md +43 -43
  25. package/agents/implementer-medium.md +52 -52
  26. package/agents/implementer.md +54 -54
  27. package/agents/junior-mentor.md +141 -141
  28. package/agents/planning/requirements-analyst.md +84 -84
  29. package/agents/planning/ux-advisor.md +83 -83
  30. package/agents/qa/acceptance-tester.md +86 -86
  31. package/agents/qa/edge-case-finder.md +93 -93
  32. package/agents/qa/qa-coordinator.md +131 -131
  33. package/agents/refactor-cleaner.md +143 -143
  34. package/agents/research/best-practices-agent.md +199 -199
  35. package/agents/research/codebase-patterns-agent.md +157 -157
  36. package/agents/research/framework-docs-agent.md +188 -188
  37. package/agents/research/security-advisory-agent.md +213 -213
  38. package/agents/review/architecture-reviewer.md +107 -107
  39. package/agents/review/complexity-reviewer.md +116 -116
  40. package/agents/review/data-integrity-reviewer.md +88 -88
  41. package/agents/review/git-history-reviewer.md +103 -103
  42. package/agents/review/performance-reviewer.md +86 -86
  43. package/agents/review/python-reviewer.md +150 -150
  44. package/agents/review/rails-reviewer.md +139 -139
  45. package/agents/review/react-reviewer.md +144 -144
  46. package/agents/review/security-reviewer.md +80 -80
  47. package/agents/review/simplicity-reviewer.md +140 -140
  48. package/agents/review/test-coverage-reviewer.md +116 -116
  49. package/agents/review/typescript-reviewer.md +127 -127
  50. package/agents/searcher.md +54 -54
  51. package/agents/simplifier.md +120 -120
  52. package/agents/teams/debug-team.md +70 -70
  53. package/agents/teams/dev-team.md +88 -88
  54. package/agents/teams/docs-team.md +80 -80
  55. package/agents/teams/figma/figma-analyst.md +52 -52
  56. package/agents/teams/figma/figma-architect.md +112 -112
  57. package/agents/teams/figma/figma-auditor.md +82 -82
  58. package/agents/teams/figma/figma-builder.md +100 -100
  59. package/agents/teams/figma-team.md +85 -85
  60. package/agents/teams/fullstack-team.md +83 -83
  61. package/agents/teams/lite-team.md +69 -69
  62. package/agents/teams/migration-team.md +78 -78
  63. package/agents/teams/refactor-team.md +94 -94
  64. package/agents/teams/research-team.md +86 -86
  65. package/agents/teams/review-debate-team.md +125 -125
  66. package/agents/teams/security-team.md +81 -81
  67. package/agents/tester.md +49 -49
  68. package/agents/ui/ui-a11y-auditor.md +93 -93
  69. package/agents/ui/ui-antipattern-detector.md +102 -102
  70. package/agents/ui/ui-dataviz-advisor.md +69 -69
  71. package/agents/ui/ui-design-system-gen.md +57 -57
  72. package/agents/ui/ui-industry-analyzer.md +49 -49
  73. package/agents/ui/ui-layout-architect.md +65 -65
  74. package/agents/ui/ui-stack-implementer.md +68 -68
  75. package/agents/ui/ux-compliance-reviewer.md +81 -81
  76. package/agents/ui-previewer.md +258 -258
  77. package/commands/vibe.analyze.md +533 -533
  78. package/commands/vibe.contract.md +105 -105
  79. package/commands/vibe.docs.md +33 -33
  80. package/commands/vibe.event.md +163 -163
  81. package/commands/vibe.figma.md +600 -584
  82. package/commands/vibe.harness.md +177 -177
  83. package/commands/vibe.regress.md +73 -73
  84. package/commands/vibe.review.md +624 -624
  85. package/commands/vibe.run.md +1946 -1940
  86. package/commands/vibe.scaffold.md +195 -195
  87. package/commands/vibe.spec.md +577 -577
  88. package/commands/vibe.test.md +49 -49
  89. package/commands/vibe.trace.md +276 -276
  90. package/commands/vibe.utils.md +413 -413
  91. package/commands/vibe.verify.md +572 -550
  92. package/dist/cli/auth.d.ts +7 -1
  93. package/dist/cli/auth.d.ts.map +1 -1
  94. package/dist/cli/auth.js +51 -11
  95. package/dist/cli/auth.js.map +1 -1
  96. package/dist/cli/collaborator.d.ts +5 -1
  97. package/dist/cli/collaborator.d.ts.map +1 -1
  98. package/dist/cli/collaborator.js +60 -55
  99. package/dist/cli/collaborator.js.map +1 -1
  100. package/dist/cli/commands/codex-proxy.js +15 -15
  101. package/dist/cli/commands/config.js +9 -9
  102. package/dist/cli/commands/evolution.js +12 -12
  103. package/dist/cli/commands/figma.js +20 -20
  104. package/dist/cli/commands/info.d.ts.map +1 -1
  105. package/dist/cli/commands/info.js +47 -63
  106. package/dist/cli/commands/info.js.map +1 -1
  107. package/dist/cli/commands/init.d.ts +13 -5
  108. package/dist/cli/commands/init.d.ts.map +1 -1
  109. package/dist/cli/commands/init.js +71 -35
  110. package/dist/cli/commands/init.js.map +1 -1
  111. package/dist/cli/commands/remove.d.ts.map +1 -1
  112. package/dist/cli/commands/remove.js +35 -22
  113. package/dist/cli/commands/remove.js.map +1 -1
  114. package/dist/cli/commands/sentinel.js +27 -27
  115. package/dist/cli/commands/skills.js +5 -5
  116. package/dist/cli/commands/slack.js +10 -10
  117. package/dist/cli/commands/stats.js +6 -6
  118. package/dist/cli/commands/telegram.js +12 -12
  119. package/dist/cli/commands/update.d.ts.map +1 -1
  120. package/dist/cli/commands/update.js +10 -6
  121. package/dist/cli/commands/update.js.map +1 -1
  122. package/dist/cli/detect.js +32 -32
  123. package/dist/cli/index.js +37 -35
  124. package/dist/cli/index.js.map +1 -1
  125. package/dist/cli/llm/claude-commands.js +16 -16
  126. package/dist/cli/llm/config.js +18 -18
  127. package/dist/cli/llm/gemini-commands.js +16 -16
  128. package/dist/cli/llm/gpt-commands.js +19 -19
  129. package/dist/cli/llm/help.js +21 -21
  130. package/dist/cli/postinstall/cursor-agents.js +32 -32
  131. package/dist/cli/postinstall/cursor-rules.js +83 -83
  132. package/dist/cli/postinstall/cursor-skills.js +743 -743
  133. package/dist/cli/postinstall/global-config.d.ts.map +1 -1
  134. package/dist/cli/postinstall/global-config.js +8 -4
  135. package/dist/cli/postinstall/global-config.js.map +1 -1
  136. package/dist/cli/setup/LegacyMigration.d.ts +14 -0
  137. package/dist/cli/setup/LegacyMigration.d.ts.map +1 -1
  138. package/dist/cli/setup/LegacyMigration.js +61 -0
  139. package/dist/cli/setup/LegacyMigration.js.map +1 -1
  140. package/dist/cli/setup/ProjectSetup.d.ts +9 -3
  141. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  142. package/dist/cli/setup/ProjectSetup.js +60 -36
  143. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  144. package/dist/cli/setup/Provisioner.js +44 -44
  145. package/dist/cli/setup/Provisioner.js.map +1 -1
  146. package/dist/cli/setup.d.ts +1 -1
  147. package/dist/cli/setup.d.ts.map +1 -1
  148. package/dist/cli/setup.js +1 -1
  149. package/dist/cli/setup.js.map +1 -1
  150. package/dist/cli/utils/cli-detector.d.ts +9 -6
  151. package/dist/cli/utils/cli-detector.d.ts.map +1 -1
  152. package/dist/cli/utils/cli-detector.js +127 -8
  153. package/dist/cli/utils/cli-detector.js.map +1 -1
  154. package/dist/infra/lib/DeepInit.js +24 -24
  155. package/dist/infra/lib/IterationTracker.js +11 -11
  156. package/dist/infra/lib/PythonParser.js +108 -108
  157. package/dist/infra/lib/ReviewRace.js +96 -96
  158. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  159. package/dist/infra/lib/SkillQualityGate.js +9 -9
  160. package/dist/infra/lib/SkillRepository.js +159 -159
  161. package/dist/infra/lib/UltraQA.js +99 -99
  162. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  163. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  164. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  165. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  166. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  167. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  168. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  169. package/dist/infra/lib/browser/compare.d.ts +27 -0
  170. package/dist/infra/lib/browser/compare.d.ts.map +1 -1
  171. package/dist/infra/lib/browser/compare.js +55 -0
  172. package/dist/infra/lib/browser/compare.js.map +1 -1
  173. package/dist/infra/lib/browser/index.d.ts +2 -1
  174. package/dist/infra/lib/browser/index.d.ts.map +1 -1
  175. package/dist/infra/lib/browser/index.js +1 -1
  176. package/dist/infra/lib/browser/index.js.map +1 -1
  177. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  178. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  179. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  180. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  181. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  182. package/dist/infra/lib/evolution/ParityTester.js +57 -57
  183. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  184. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  185. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  186. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  187. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  188. package/dist/infra/lib/figma/audit.d.ts +37 -0
  189. package/dist/infra/lib/figma/audit.d.ts.map +1 -0
  190. package/dist/infra/lib/figma/audit.js +130 -0
  191. package/dist/infra/lib/figma/audit.js.map +1 -0
  192. package/dist/infra/lib/figma/extract.d.ts +21 -1
  193. package/dist/infra/lib/figma/extract.d.ts.map +1 -1
  194. package/dist/infra/lib/figma/extract.js +84 -12
  195. package/dist/infra/lib/figma/extract.js.map +1 -1
  196. package/dist/infra/lib/figma/index.d.ts +4 -2
  197. package/dist/infra/lib/figma/index.d.ts.map +1 -1
  198. package/dist/infra/lib/figma/index.js +2 -1
  199. package/dist/infra/lib/figma/index.js.map +1 -1
  200. package/dist/infra/lib/figma/types.d.ts +31 -0
  201. package/dist/infra/lib/figma/types.d.ts.map +1 -1
  202. package/dist/infra/lib/gemini/orchestration.js +5 -5
  203. package/dist/infra/lib/gpt/orchestration.js +4 -4
  204. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  205. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  206. package/dist/infra/lib/memory/MemoryStorage.d.ts +5 -0
  207. package/dist/infra/lib/memory/MemoryStorage.d.ts.map +1 -1
  208. package/dist/infra/lib/memory/MemoryStorage.js +202 -183
  209. package/dist/infra/lib/memory/MemoryStorage.js.map +1 -1
  210. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  211. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  212. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  213. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  214. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  215. package/dist/infra/orchestrator/AgentManager.js +12 -12
  216. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  217. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  218. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  219. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  220. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  221. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  222. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  223. package/dist/tools/memory/getMemoryGraph.js +12 -12
  224. package/dist/tools/memory/getSessionContext.js +9 -9
  225. package/dist/tools/memory/linkMemories.js +14 -14
  226. package/dist/tools/memory/listMemories.js +4 -4
  227. package/dist/tools/memory/recallMemory.js +4 -4
  228. package/dist/tools/memory/saveMemory.js +4 -4
  229. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  230. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  231. package/dist/tools/semantic/astGrep.test.js +6 -6
  232. package/dist/tools/spec/prdParser.test.js +171 -171
  233. package/dist/tools/spec/specGenerator.js +169 -169
  234. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  235. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  236. package/hooks/gemini-hooks.json +73 -73
  237. package/hooks/hooks.json +134 -126
  238. package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
  239. package/hooks/scripts/__tests__/pre-tool-guard.test.js +409 -409
  240. package/hooks/scripts/__tests__/sentinel-guard.test.js +208 -208
  241. package/hooks/scripts/auto-commit.js +97 -97
  242. package/hooks/scripts/auto-format.js +64 -64
  243. package/hooks/scripts/auto-test.js +81 -81
  244. package/hooks/scripts/code-check.js +271 -271
  245. package/hooks/scripts/codex-detect.js +46 -46
  246. package/hooks/scripts/codex-review-gate.js +80 -80
  247. package/hooks/scripts/command-log.js +32 -32
  248. package/hooks/scripts/context-save.js +353 -353
  249. package/hooks/scripts/evolution-engine.js +91 -91
  250. package/hooks/scripts/figma-extract.js +768 -635
  251. package/hooks/scripts/figma-guard.js +219 -219
  252. package/hooks/scripts/figma-refine.js +315 -315
  253. package/hooks/scripts/figma-to-scss.js +394 -394
  254. package/hooks/scripts/figma-validate.js +353 -353
  255. package/hooks/scripts/hud-status.js +321 -321
  256. package/hooks/scripts/keyword-detector.js +214 -214
  257. package/hooks/scripts/lib/dispatcher.js +87 -83
  258. package/hooks/scripts/lib/scope-from-spec.js +276 -261
  259. package/hooks/scripts/llm-orchestrate.js +645 -645
  260. package/hooks/scripts/post-edit.js +35 -35
  261. package/hooks/scripts/pr-test-gate.js +52 -52
  262. package/hooks/scripts/pre-tool-guard.js +259 -259
  263. package/hooks/scripts/prompt-dispatcher.js +192 -190
  264. package/hooks/scripts/scope-guard.js +145 -145
  265. package/hooks/scripts/sentinel-guard.js +130 -130
  266. package/hooks/scripts/session-start.js +186 -186
  267. package/hooks/scripts/skill-injector.js +83 -83
  268. package/hooks/scripts/step-counter.js +45 -0
  269. package/hooks/scripts/stop-notify.js +209 -209
  270. package/hooks/scripts/utils.js +315 -257
  271. package/languages/csharp-unity.md +515 -515
  272. package/languages/gdscript-godot.md +470 -470
  273. package/languages/ruby-rails.md +489 -489
  274. package/languages/typescript-angular.md +433 -433
  275. package/languages/typescript-astro.md +416 -416
  276. package/languages/typescript-electron.md +406 -406
  277. package/languages/typescript-nestjs.md +524 -524
  278. package/languages/typescript-svelte.md +407 -407
  279. package/languages/typescript-tauri.md +365 -365
  280. package/package.json +106 -106
  281. package/skills/agents-md/SKILL.md +121 -121
  282. package/skills/agents-md/rubrics/what-to-keep.md +49 -49
  283. package/skills/agents-md/templates/agents-md.md +36 -36
  284. package/skills/arch-guard/SKILL.md +181 -181
  285. package/skills/arch-guard/agents/detector.md +48 -48
  286. package/skills/arch-guard/agents/reporter.md +48 -48
  287. package/skills/arch-guard/agents/rule-generator.md +49 -49
  288. package/skills/arch-guard/agents/violation-checker.md +51 -51
  289. package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
  290. package/skills/arch-guard/frameworks/solid.md +102 -102
  291. package/skills/arch-guard/scripts/check-boundaries.js +90 -90
  292. package/skills/arch-guard/templates/arch-rules.json +47 -47
  293. package/skills/arch-guard/templates/violation-report.md +53 -53
  294. package/skills/brand-assets/SKILL.md +147 -147
  295. package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
  296. package/skills/brand-assets/templates/brand-guide.md +161 -161
  297. package/skills/capability-loop/SKILL.md +272 -272
  298. package/skills/capability-loop/agents/capability-designer.md +61 -61
  299. package/skills/capability-loop/agents/failure-analyst.md +55 -55
  300. package/skills/capability-loop/agents/implementer.md +50 -50
  301. package/skills/capability-loop/agents/tester.md +53 -53
  302. package/skills/capability-loop/templates/capability-spec.md +118 -118
  303. package/skills/capability-loop/templates/failure-analysis.md +118 -118
  304. package/skills/characterization-test/SKILL.md +207 -207
  305. package/skills/characterization-test/agents/behavior-capturer.md +50 -50
  306. package/skills/characterization-test/agents/coverage-checker.md +54 -54
  307. package/skills/characterization-test/agents/reporter.md +50 -50
  308. package/skills/characterization-test/agents/test-writer.md +49 -49
  309. package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
  310. package/skills/characterization-test/templates/test-template.ts +101 -101
  311. package/skills/chub-usage/SKILL.md +139 -139
  312. package/skills/claude-md-guide/SKILL.md +351 -351
  313. package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
  314. package/skills/claude-md-guide/templates/claude-md.md +54 -54
  315. package/skills/commerce-patterns/SKILL.md +64 -64
  316. package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
  317. package/skills/commerce-patterns/templates/product-schema.md +85 -85
  318. package/skills/commit-push-pr/SKILL.md +77 -77
  319. package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
  320. package/skills/commit-push-pr/agents/message-writer.md +50 -50
  321. package/skills/commit-push-pr/agents/pr-writer.md +58 -58
  322. package/skills/commit-push-pr/agents/reviewer.md +52 -52
  323. package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
  324. package/skills/commit-push-pr/templates/pr-body.md +63 -63
  325. package/skills/context7-usage/SKILL.md +106 -106
  326. package/skills/context7-usage/rubrics/when-to-use.md +50 -50
  327. package/skills/create-prd/SKILL.md +90 -90
  328. package/skills/create-prd/agents/edge-case-finder.md +48 -48
  329. package/skills/create-prd/agents/prioritizer.md +60 -60
  330. package/skills/create-prd/agents/requirements-writer.md +48 -48
  331. package/skills/create-prd/agents/researcher.md +55 -55
  332. package/skills/create-prd/agents/reviewer.md +54 -54
  333. package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
  334. package/skills/create-prd/frameworks/rice-scoring.md +97 -97
  335. package/skills/create-prd/orchestrator.md +70 -70
  336. package/skills/create-prd/rubrics/completeness.md +58 -58
  337. package/skills/create-prd/templates/prd.md +139 -139
  338. package/skills/design-audit/SKILL.md +152 -152
  339. package/skills/design-audit/agents/a11y-auditor.md +43 -43
  340. package/skills/design-audit/agents/performance-auditor.md +46 -46
  341. package/skills/design-audit/agents/responsive-auditor.md +46 -46
  342. package/skills/design-audit/agents/scorer.md +47 -47
  343. package/skills/design-audit/agents/slop-detector.md +47 -47
  344. package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
  345. package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
  346. package/skills/design-audit/orchestrator.md +64 -64
  347. package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
  348. package/skills/design-audit/rubrics/scoring.md +63 -63
  349. package/skills/design-audit/templates/report.md +88 -88
  350. package/skills/design-critique/SKILL.md +139 -139
  351. package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
  352. package/skills/design-critique/templates/critique-report.md +86 -86
  353. package/skills/design-distill/SKILL.md +130 -130
  354. package/skills/design-distill/templates/design-system.md +132 -132
  355. package/skills/design-normalize/SKILL.md +133 -133
  356. package/skills/design-normalize/rubrics/token-naming.md +117 -117
  357. package/skills/design-normalize/templates/token-audit.md +89 -89
  358. package/skills/design-polish/SKILL.md +131 -131
  359. package/skills/design-polish/rubrics/polish-checklist.md +68 -68
  360. package/skills/design-polish/templates/polish-report.md +64 -64
  361. package/skills/design-teach/SKILL.md +182 -182
  362. package/skills/design-teach/rubrics/brand-personality.md +73 -73
  363. package/skills/design-teach/templates/design-context.json +36 -36
  364. package/skills/devlog/SKILL.md +143 -143
  365. package/skills/e2e-commerce/SKILL.md +62 -62
  366. package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
  367. package/skills/event-comms/SKILL.md +172 -172
  368. package/skills/event-comms/templates/email-invite.md +99 -99
  369. package/skills/event-comms/templates/sns-post.md +133 -133
  370. package/skills/event-ops/SKILL.md +207 -207
  371. package/skills/event-ops/rubrics/contingency.md +85 -85
  372. package/skills/event-ops/templates/d-day-checklist.md +65 -65
  373. package/skills/event-planning/SKILL.md +144 -144
  374. package/skills/event-planning/rubrics/timeline.md +70 -70
  375. package/skills/event-planning/templates/event-plan.md +91 -91
  376. package/skills/exec-plan/SKILL.md +149 -149
  377. package/skills/exec-plan/agents/decomposer.md +47 -47
  378. package/skills/exec-plan/agents/dependency-mapper.md +44 -44
  379. package/skills/exec-plan/agents/estimator.md +43 -43
  380. package/skills/exec-plan/agents/validator.md +55 -55
  381. package/skills/exec-plan/orchestrator.md +70 -70
  382. package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
  383. package/skills/exec-plan/templates/plan.md +147 -147
  384. package/skills/git-worktree/SKILL.md +73 -73
  385. package/skills/git-worktree/rubrics/when-to-use.md +55 -55
  386. package/skills/handoff/SKILL.md +110 -110
  387. package/skills/handoff/agents/context-summarizer.md +51 -51
  388. package/skills/handoff/agents/document-writer.md +63 -63
  389. package/skills/handoff/agents/state-collector.md +53 -53
  390. package/skills/handoff/agents/verifier.md +48 -48
  391. package/skills/handoff/rubrics/completeness.md +62 -62
  392. package/skills/handoff/templates/handoff.md +107 -107
  393. package/skills/parallel-research/SKILL.md +104 -104
  394. package/skills/parallel-research/agents/best-practices.md +43 -43
  395. package/skills/parallel-research/agents/codebase-patterns.md +46 -46
  396. package/skills/parallel-research/agents/framework-docs.md +45 -45
  397. package/skills/parallel-research/agents/security-advisory.md +46 -46
  398. package/skills/parallel-research/agents/synthesizer.md +57 -57
  399. package/skills/parallel-research/experts/best-practices.md +50 -50
  400. package/skills/parallel-research/experts/codebase-patterns.md +70 -70
  401. package/skills/parallel-research/experts/framework-docs.md +65 -65
  402. package/skills/parallel-research/experts/security-advisory.md +69 -69
  403. package/skills/parallel-research/orchestrator.md +79 -79
  404. package/skills/parallel-research/templates/awesome-list.md +32 -32
  405. package/skills/parallel-research/templates/paper.md +88 -88
  406. package/skills/parallel-research/templates/synthesis.md +101 -101
  407. package/skills/prioritization-frameworks/SKILL.md +87 -87
  408. package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
  409. package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
  410. package/skills/priority-todos/SKILL.md +64 -64
  411. package/skills/priority-todos/rubrics/prioritization.md +70 -70
  412. package/skills/priority-todos/templates/todo-board.md +59 -59
  413. package/skills/seo-checklist/SKILL.md +58 -58
  414. package/skills/seo-checklist/frameworks/structured-data.md +153 -153
  415. package/skills/seo-checklist/rubrics/content-seo.md +42 -42
  416. package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
  417. package/skills/techdebt/SKILL.md +124 -124
  418. package/skills/techdebt/agents/analyzer.md +50 -50
  419. package/skills/techdebt/agents/fixer.md +41 -41
  420. package/skills/techdebt/agents/reviewer.md +47 -47
  421. package/skills/techdebt/agents/scanner.md +44 -44
  422. package/skills/techdebt/orchestrator.md +70 -70
  423. package/skills/techdebt/rubrics/severity.md +51 -51
  424. package/skills/techdebt/scripts/scan.js +90 -90
  425. package/skills/techdebt/templates/report.md +86 -86
  426. package/skills/tool-fallback/SKILL.md +104 -104
  427. package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
  428. package/skills/typescript-advanced-types/SKILL.md +67 -67
  429. package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
  430. package/skills/ui-ux-pro-max/SKILL.md +236 -236
  431. package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
  432. package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
  433. package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
  434. package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
  435. package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
  436. package/skills/ui-ux-pro-max/reference/typography.md +455 -455
  437. package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
  438. package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
  439. package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
  440. package/skills/user-personas/SKILL.md +75 -75
  441. package/skills/user-personas/rubrics/research-methods.md +56 -56
  442. package/skills/user-personas/templates/persona.md +89 -89
  443. package/skills/vercel-react-best-practices/SKILL.md +60 -60
  444. package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
  445. package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
  446. package/skills/vibe-contract/SKILL.md +166 -166
  447. package/skills/vibe-docs/templates/architecture.md +80 -80
  448. package/skills/vibe-docs/templates/readme.md +84 -84
  449. package/skills/vibe-docs/templates/release-notes.md +74 -74
  450. package/skills/vibe-figma/SKILL.md +363 -363
  451. package/skills/vibe-figma/rubrics/extraction-checklist.md +51 -51
  452. package/skills/vibe-figma/templates/component-index.md +126 -126
  453. package/skills/vibe-figma/templates/component-spec.md +168 -168
  454. package/skills/vibe-figma/templates/figma-handoff.md +100 -100
  455. package/skills/vibe-figma/templates/remapped-tree.md +277 -277
  456. package/skills/vibe-figma-convert/SKILL.md +235 -235
  457. package/skills/vibe-figma-convert/rubrics/conversion-rules.md +141 -141
  458. package/skills/vibe-figma-convert/templates/component.md +140 -140
  459. package/skills/vibe-figma-extract/SKILL.md +241 -219
  460. package/skills/vibe-figma-extract/rubrics/image-rules.md +157 -157
  461. package/skills/vibe-interview/SKILL.md +358 -358
  462. package/skills/vibe-interview/checklists/api.md +101 -101
  463. package/skills/vibe-interview/checklists/feature.md +88 -88
  464. package/skills/vibe-interview/checklists/library.md +95 -95
  465. package/skills/vibe-interview/checklists/mobile.md +89 -89
  466. package/skills/vibe-interview/checklists/webapp.md +97 -97
  467. package/skills/vibe-interview/checklists/website.md +99 -99
  468. package/skills/vibe-plan/SKILL.md +254 -254
  469. package/skills/vibe-regress/SKILL.md +174 -174
  470. package/skills/vibe-regress/templates/bug.md +44 -44
  471. package/skills/vibe-regress/templates/test-jest.md +29 -29
  472. package/skills/vibe-regress/templates/test-vitest.md +30 -30
  473. package/skills/vibe-spec/SKILL.md +1195 -1195
  474. package/skills/vibe-spec-review/SKILL.md +726 -726
  475. package/skills/vibe-test/SKILL.md +140 -140
  476. package/skills/video-production/SKILL.md +52 -52
  477. package/skills/video-production/rubrics/quality-checklist.md +58 -58
  478. package/skills/video-production/templates/production-plan.md +104 -104
  479. package/vibe/config.json +29 -29
  480. package/vibe/constitution.md +227 -227
  481. package/vibe/rules/principles/communication-guide.md +98 -98
  482. package/vibe/rules/principles/development-philosophy.md +52 -52
  483. package/vibe/rules/principles/quick-start.md +102 -102
  484. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  485. package/vibe/rules/quality/checklist.md +276 -276
  486. package/vibe/rules/quality/performance.md +236 -236
  487. package/vibe/rules/quality/testing-strategy.md +440 -440
  488. package/vibe/rules/standards/anti-patterns.md +541 -541
  489. package/vibe/rules/standards/code-structure.md +291 -291
  490. package/vibe/rules/standards/complexity-metrics.md +313 -313
  491. package/vibe/rules/standards/git-workflow.md +237 -237
  492. package/vibe/rules/standards/naming-conventions.md +198 -198
  493. package/vibe/rules/standards/security.md +305 -305
  494. package/vibe/rules/writing/document-style.md +74 -74
  495. package/vibe/setup.sh +31 -31
  496. package/vibe/templates/claudemd-template.md +74 -74
  497. package/vibe/templates/constitution-template.md +267 -267
  498. package/vibe/templates/contract-backend-template.md +526 -526
  499. package/vibe/templates/contract-frontend-template.md +599 -599
  500. package/vibe/templates/feature-template.md +96 -96
  501. package/vibe/templates/plan-template.md +194 -194
  502. package/vibe/templates/spec-template.md +221 -221
  503. package/vibe/ui-ux-data/charts.csv +26 -26
  504. package/vibe/ui-ux-data/colors.csv +97 -97
  505. package/vibe/ui-ux-data/icons.csv +101 -101
  506. package/vibe/ui-ux-data/landing.csv +31 -31
  507. package/vibe/ui-ux-data/products.csv +96 -96
  508. package/vibe/ui-ux-data/react-performance.csv +45 -45
  509. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  510. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  511. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  512. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  513. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  514. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  515. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  516. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  517. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  518. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  519. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  520. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  521. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  522. package/vibe/ui-ux-data/styles.csv +68 -68
  523. package/vibe/ui-ux-data/typography.csv +57 -57
  524. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  525. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  526. package/vibe/ui-ux-data/version.json +31 -31
  527. 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