@su-record/vibe 2.9.32 → 2.9.34

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 (487) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +109 -109
  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 -600
  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 -1946
  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 -572
  92. package/dist/cli/collaborator.js +52 -52
  93. package/dist/cli/commands/codex-proxy.js +15 -15
  94. package/dist/cli/commands/config.js +9 -9
  95. package/dist/cli/commands/evolution.js +12 -12
  96. package/dist/cli/commands/figma.js +20 -20
  97. package/dist/cli/commands/info.d.ts.map +1 -1
  98. package/dist/cli/commands/info.js +48 -46
  99. package/dist/cli/commands/info.js.map +1 -1
  100. package/dist/cli/commands/init.d.ts +6 -3
  101. package/dist/cli/commands/init.d.ts.map +1 -1
  102. package/dist/cli/commands/init.js +60 -30
  103. package/dist/cli/commands/init.js.map +1 -1
  104. package/dist/cli/commands/remove.js +14 -14
  105. package/dist/cli/commands/sentinel.js +27 -27
  106. package/dist/cli/commands/skills.js +5 -5
  107. package/dist/cli/commands/slack.js +10 -10
  108. package/dist/cli/commands/stats.js +6 -6
  109. package/dist/cli/commands/telegram.js +12 -12
  110. package/dist/cli/commands/update.d.ts.map +1 -1
  111. package/dist/cli/commands/update.js +29 -11
  112. package/dist/cli/commands/update.js.map +1 -1
  113. package/dist/cli/detect.js +32 -32
  114. package/dist/cli/index.js +40 -34
  115. package/dist/cli/index.js.map +1 -1
  116. package/dist/cli/llm/claude-commands.js +16 -16
  117. package/dist/cli/llm/config.js +18 -18
  118. package/dist/cli/llm/gemini-commands.js +16 -16
  119. package/dist/cli/llm/gpt-commands.js +19 -19
  120. package/dist/cli/llm/help.js +21 -21
  121. package/dist/cli/postinstall/cursor-agents.js +32 -32
  122. package/dist/cli/postinstall/cursor-rules.js +83 -83
  123. package/dist/cli/postinstall/cursor-skills.js +743 -743
  124. package/dist/cli/postinstall/main.d.ts.map +1 -1
  125. package/dist/cli/postinstall/main.js +15 -1
  126. package/dist/cli/postinstall/main.js.map +1 -1
  127. package/dist/cli/setup/ProjectSetup.d.ts +25 -6
  128. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  129. package/dist/cli/setup/ProjectSetup.js +132 -80
  130. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  131. package/dist/cli/setup/Provisioner.js +42 -42
  132. package/dist/cli/setup.d.ts +1 -1
  133. package/dist/cli/setup.d.ts.map +1 -1
  134. package/dist/cli/setup.js +1 -1
  135. package/dist/cli/setup.js.map +1 -1
  136. package/dist/infra/lib/DeepInit.js +24 -24
  137. package/dist/infra/lib/IterationTracker.js +11 -11
  138. package/dist/infra/lib/PythonParser.js +108 -108
  139. package/dist/infra/lib/ReviewRace.js +96 -96
  140. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  141. package/dist/infra/lib/SkillQualityGate.js +9 -9
  142. package/dist/infra/lib/SkillRepository.js +159 -159
  143. package/dist/infra/lib/UltraQA.js +99 -99
  144. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  145. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  146. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  147. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  148. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  149. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  150. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  151. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  152. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  153. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  154. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  155. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  156. package/dist/infra/lib/evolution/ParityTester.js +57 -57
  157. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  158. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  159. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  160. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  161. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  162. package/dist/infra/lib/gemini/orchestration.js +5 -5
  163. package/dist/infra/lib/gpt/orchestration.js +4 -4
  164. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  165. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  166. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  167. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  168. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  169. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  170. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  171. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  172. package/dist/infra/orchestrator/AgentManager.js +12 -12
  173. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  174. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  175. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  176. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  177. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  178. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  179. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  180. package/dist/tools/memory/getMemoryGraph.js +12 -12
  181. package/dist/tools/memory/getSessionContext.js +9 -9
  182. package/dist/tools/memory/linkMemories.js +14 -14
  183. package/dist/tools/memory/listMemories.js +4 -4
  184. package/dist/tools/memory/recallMemory.js +4 -4
  185. package/dist/tools/memory/saveMemory.js +4 -4
  186. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  187. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  188. package/dist/tools/semantic/astGrep.test.js +6 -6
  189. package/dist/tools/spec/prdParser.test.js +171 -171
  190. package/dist/tools/spec/specGenerator.js +169 -169
  191. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  192. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  193. package/hooks/gemini-hooks.json +73 -73
  194. package/hooks/hooks.json +134 -134
  195. package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
  196. package/hooks/scripts/__tests__/pre-tool-guard.test.js +409 -409
  197. package/hooks/scripts/__tests__/sentinel-guard.test.js +208 -208
  198. package/hooks/scripts/auto-commit.js +97 -97
  199. package/hooks/scripts/auto-format.js +64 -64
  200. package/hooks/scripts/auto-test.js +81 -81
  201. package/hooks/scripts/code-check.js +271 -271
  202. package/hooks/scripts/codex-detect.js +46 -46
  203. package/hooks/scripts/codex-review-gate.js +80 -80
  204. package/hooks/scripts/command-log.js +32 -32
  205. package/hooks/scripts/context-save.js +353 -353
  206. package/hooks/scripts/evolution-engine.js +91 -91
  207. package/hooks/scripts/figma-extract.js +768 -768
  208. package/hooks/scripts/figma-guard.js +219 -219
  209. package/hooks/scripts/figma-refine.js +315 -315
  210. package/hooks/scripts/figma-to-scss.js +394 -394
  211. package/hooks/scripts/figma-validate.js +353 -353
  212. package/hooks/scripts/hud-status.js +321 -321
  213. package/hooks/scripts/keyword-detector.js +214 -214
  214. package/hooks/scripts/lib/dispatcher.js +95 -87
  215. package/hooks/scripts/lib/scope-from-spec.js +276 -276
  216. package/hooks/scripts/llm-orchestrate.js +645 -645
  217. package/hooks/scripts/post-edit-dispatcher.js +9 -6
  218. package/hooks/scripts/post-edit.js +35 -35
  219. package/hooks/scripts/pr-test-gate.js +52 -52
  220. package/hooks/scripts/pre-tool-dispatcher.js +9 -1
  221. package/hooks/scripts/pre-tool-guard.js +259 -259
  222. package/hooks/scripts/prompt-dispatcher.js +200 -192
  223. package/hooks/scripts/scope-guard.js +145 -145
  224. package/hooks/scripts/sentinel-guard.js +130 -130
  225. package/hooks/scripts/session-start.js +186 -186
  226. package/hooks/scripts/skill-injector.js +83 -83
  227. package/hooks/scripts/step-counter.js +45 -45
  228. package/hooks/scripts/stop-dispatcher.js +9 -6
  229. package/hooks/scripts/stop-notify.js +209 -209
  230. package/hooks/scripts/utils.js +315 -315
  231. package/languages/csharp-unity.md +515 -515
  232. package/languages/gdscript-godot.md +470 -470
  233. package/languages/ruby-rails.md +489 -489
  234. package/languages/typescript-angular.md +433 -433
  235. package/languages/typescript-astro.md +416 -416
  236. package/languages/typescript-electron.md +406 -406
  237. package/languages/typescript-nestjs.md +524 -524
  238. package/languages/typescript-svelte.md +407 -407
  239. package/languages/typescript-tauri.md +365 -365
  240. package/package.json +106 -106
  241. package/skills/agents-md/SKILL.md +121 -121
  242. package/skills/agents-md/rubrics/what-to-keep.md +49 -49
  243. package/skills/agents-md/templates/agents-md.md +36 -36
  244. package/skills/arch-guard/SKILL.md +181 -181
  245. package/skills/arch-guard/agents/detector.md +48 -48
  246. package/skills/arch-guard/agents/reporter.md +48 -48
  247. package/skills/arch-guard/agents/rule-generator.md +49 -49
  248. package/skills/arch-guard/agents/violation-checker.md +51 -51
  249. package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
  250. package/skills/arch-guard/frameworks/solid.md +102 -102
  251. package/skills/arch-guard/scripts/check-boundaries.js +90 -90
  252. package/skills/arch-guard/templates/arch-rules.json +47 -47
  253. package/skills/arch-guard/templates/violation-report.md +53 -53
  254. package/skills/brand-assets/SKILL.md +147 -147
  255. package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
  256. package/skills/brand-assets/templates/brand-guide.md +161 -161
  257. package/skills/capability-loop/SKILL.md +272 -272
  258. package/skills/capability-loop/agents/capability-designer.md +61 -61
  259. package/skills/capability-loop/agents/failure-analyst.md +55 -55
  260. package/skills/capability-loop/agents/implementer.md +50 -50
  261. package/skills/capability-loop/agents/tester.md +53 -53
  262. package/skills/capability-loop/templates/capability-spec.md +118 -118
  263. package/skills/capability-loop/templates/failure-analysis.md +118 -118
  264. package/skills/characterization-test/SKILL.md +207 -207
  265. package/skills/characterization-test/agents/behavior-capturer.md +50 -50
  266. package/skills/characterization-test/agents/coverage-checker.md +54 -54
  267. package/skills/characterization-test/agents/reporter.md +50 -50
  268. package/skills/characterization-test/agents/test-writer.md +49 -49
  269. package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
  270. package/skills/characterization-test/templates/test-template.ts +101 -101
  271. package/skills/chub-usage/SKILL.md +139 -139
  272. package/skills/claude-md-guide/SKILL.md +351 -351
  273. package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
  274. package/skills/claude-md-guide/templates/claude-md.md +54 -54
  275. package/skills/commerce-patterns/SKILL.md +64 -64
  276. package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
  277. package/skills/commerce-patterns/templates/product-schema.md +85 -85
  278. package/skills/commit-push-pr/SKILL.md +77 -77
  279. package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
  280. package/skills/commit-push-pr/agents/message-writer.md +50 -50
  281. package/skills/commit-push-pr/agents/pr-writer.md +58 -58
  282. package/skills/commit-push-pr/agents/reviewer.md +52 -52
  283. package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
  284. package/skills/commit-push-pr/templates/pr-body.md +63 -63
  285. package/skills/context7-usage/SKILL.md +106 -106
  286. package/skills/context7-usage/rubrics/when-to-use.md +50 -50
  287. package/skills/create-prd/SKILL.md +90 -90
  288. package/skills/create-prd/agents/edge-case-finder.md +48 -48
  289. package/skills/create-prd/agents/prioritizer.md +60 -60
  290. package/skills/create-prd/agents/requirements-writer.md +48 -48
  291. package/skills/create-prd/agents/researcher.md +55 -55
  292. package/skills/create-prd/agents/reviewer.md +54 -54
  293. package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
  294. package/skills/create-prd/frameworks/rice-scoring.md +97 -97
  295. package/skills/create-prd/orchestrator.md +70 -70
  296. package/skills/create-prd/rubrics/completeness.md +58 -58
  297. package/skills/create-prd/templates/prd.md +139 -139
  298. package/skills/design-audit/SKILL.md +152 -152
  299. package/skills/design-audit/agents/a11y-auditor.md +43 -43
  300. package/skills/design-audit/agents/performance-auditor.md +46 -46
  301. package/skills/design-audit/agents/responsive-auditor.md +46 -46
  302. package/skills/design-audit/agents/scorer.md +47 -47
  303. package/skills/design-audit/agents/slop-detector.md +47 -47
  304. package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
  305. package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
  306. package/skills/design-audit/orchestrator.md +64 -64
  307. package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
  308. package/skills/design-audit/rubrics/scoring.md +63 -63
  309. package/skills/design-audit/templates/report.md +88 -88
  310. package/skills/design-critique/SKILL.md +139 -139
  311. package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
  312. package/skills/design-critique/templates/critique-report.md +86 -86
  313. package/skills/design-distill/SKILL.md +130 -130
  314. package/skills/design-distill/templates/design-system.md +132 -132
  315. package/skills/design-normalize/SKILL.md +133 -133
  316. package/skills/design-normalize/rubrics/token-naming.md +117 -117
  317. package/skills/design-normalize/templates/token-audit.md +89 -89
  318. package/skills/design-polish/SKILL.md +131 -131
  319. package/skills/design-polish/rubrics/polish-checklist.md +68 -68
  320. package/skills/design-polish/templates/polish-report.md +64 -64
  321. package/skills/design-teach/SKILL.md +182 -182
  322. package/skills/design-teach/rubrics/brand-personality.md +73 -73
  323. package/skills/design-teach/templates/design-context.json +36 -36
  324. package/skills/devlog/SKILL.md +143 -143
  325. package/skills/e2e-commerce/SKILL.md +62 -62
  326. package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
  327. package/skills/event-comms/SKILL.md +172 -172
  328. package/skills/event-comms/templates/email-invite.md +99 -99
  329. package/skills/event-comms/templates/sns-post.md +133 -133
  330. package/skills/event-ops/SKILL.md +207 -207
  331. package/skills/event-ops/rubrics/contingency.md +85 -85
  332. package/skills/event-ops/templates/d-day-checklist.md +65 -65
  333. package/skills/event-planning/SKILL.md +144 -144
  334. package/skills/event-planning/rubrics/timeline.md +70 -70
  335. package/skills/event-planning/templates/event-plan.md +91 -91
  336. package/skills/exec-plan/SKILL.md +149 -149
  337. package/skills/exec-plan/agents/decomposer.md +47 -47
  338. package/skills/exec-plan/agents/dependency-mapper.md +44 -44
  339. package/skills/exec-plan/agents/estimator.md +43 -43
  340. package/skills/exec-plan/agents/validator.md +55 -55
  341. package/skills/exec-plan/orchestrator.md +70 -70
  342. package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
  343. package/skills/exec-plan/templates/plan.md +147 -147
  344. package/skills/git-worktree/SKILL.md +73 -73
  345. package/skills/git-worktree/rubrics/when-to-use.md +55 -55
  346. package/skills/handoff/SKILL.md +110 -110
  347. package/skills/handoff/agents/context-summarizer.md +51 -51
  348. package/skills/handoff/agents/document-writer.md +63 -63
  349. package/skills/handoff/agents/state-collector.md +53 -53
  350. package/skills/handoff/agents/verifier.md +48 -48
  351. package/skills/handoff/rubrics/completeness.md +62 -62
  352. package/skills/handoff/templates/handoff.md +107 -107
  353. package/skills/parallel-research/SKILL.md +104 -104
  354. package/skills/parallel-research/agents/best-practices.md +43 -43
  355. package/skills/parallel-research/agents/codebase-patterns.md +46 -46
  356. package/skills/parallel-research/agents/framework-docs.md +45 -45
  357. package/skills/parallel-research/agents/security-advisory.md +46 -46
  358. package/skills/parallel-research/agents/synthesizer.md +57 -57
  359. package/skills/parallel-research/experts/best-practices.md +50 -50
  360. package/skills/parallel-research/experts/codebase-patterns.md +70 -70
  361. package/skills/parallel-research/experts/framework-docs.md +65 -65
  362. package/skills/parallel-research/experts/security-advisory.md +69 -69
  363. package/skills/parallel-research/orchestrator.md +79 -79
  364. package/skills/parallel-research/templates/awesome-list.md +32 -32
  365. package/skills/parallel-research/templates/paper.md +88 -88
  366. package/skills/parallel-research/templates/synthesis.md +101 -101
  367. package/skills/prioritization-frameworks/SKILL.md +87 -87
  368. package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
  369. package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
  370. package/skills/priority-todos/SKILL.md +64 -64
  371. package/skills/priority-todos/rubrics/prioritization.md +70 -70
  372. package/skills/priority-todos/templates/todo-board.md +59 -59
  373. package/skills/seo-checklist/SKILL.md +58 -58
  374. package/skills/seo-checklist/frameworks/structured-data.md +153 -153
  375. package/skills/seo-checklist/rubrics/content-seo.md +42 -42
  376. package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
  377. package/skills/techdebt/SKILL.md +124 -124
  378. package/skills/techdebt/agents/analyzer.md +50 -50
  379. package/skills/techdebt/agents/fixer.md +41 -41
  380. package/skills/techdebt/agents/reviewer.md +47 -47
  381. package/skills/techdebt/agents/scanner.md +44 -44
  382. package/skills/techdebt/orchestrator.md +70 -70
  383. package/skills/techdebt/rubrics/severity.md +51 -51
  384. package/skills/techdebt/scripts/scan.js +90 -90
  385. package/skills/techdebt/templates/report.md +86 -86
  386. package/skills/tool-fallback/SKILL.md +104 -104
  387. package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
  388. package/skills/typescript-advanced-types/SKILL.md +67 -67
  389. package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
  390. package/skills/ui-ux-pro-max/SKILL.md +236 -236
  391. package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
  392. package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
  393. package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
  394. package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
  395. package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
  396. package/skills/ui-ux-pro-max/reference/typography.md +455 -455
  397. package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
  398. package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
  399. package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
  400. package/skills/user-personas/SKILL.md +75 -75
  401. package/skills/user-personas/rubrics/research-methods.md +56 -56
  402. package/skills/user-personas/templates/persona.md +89 -89
  403. package/skills/vercel-react-best-practices/SKILL.md +60 -60
  404. package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
  405. package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
  406. package/skills/vibe-contract/SKILL.md +166 -166
  407. package/skills/vibe-docs/templates/architecture.md +80 -80
  408. package/skills/vibe-docs/templates/readme.md +84 -84
  409. package/skills/vibe-docs/templates/release-notes.md +74 -74
  410. package/skills/vibe-figma/SKILL.md +363 -363
  411. package/skills/vibe-figma/rubrics/extraction-checklist.md +51 -51
  412. package/skills/vibe-figma/templates/component-index.md +126 -126
  413. package/skills/vibe-figma/templates/component-spec.md +168 -168
  414. package/skills/vibe-figma/templates/figma-handoff.md +100 -100
  415. package/skills/vibe-figma/templates/remapped-tree.md +277 -277
  416. package/skills/vibe-figma-convert/SKILL.md +235 -235
  417. package/skills/vibe-figma-convert/rubrics/conversion-rules.md +141 -141
  418. package/skills/vibe-figma-convert/templates/component.md +140 -140
  419. package/skills/vibe-figma-extract/SKILL.md +241 -241
  420. package/skills/vibe-figma-extract/rubrics/image-rules.md +157 -157
  421. package/skills/vibe-interview/SKILL.md +358 -358
  422. package/skills/vibe-interview/checklists/api.md +101 -101
  423. package/skills/vibe-interview/checklists/feature.md +88 -88
  424. package/skills/vibe-interview/checklists/library.md +95 -95
  425. package/skills/vibe-interview/checklists/mobile.md +89 -89
  426. package/skills/vibe-interview/checklists/webapp.md +97 -97
  427. package/skills/vibe-interview/checklists/website.md +99 -99
  428. package/skills/vibe-plan/SKILL.md +254 -254
  429. package/skills/vibe-regress/SKILL.md +174 -174
  430. package/skills/vibe-regress/templates/bug.md +44 -44
  431. package/skills/vibe-regress/templates/test-jest.md +29 -29
  432. package/skills/vibe-regress/templates/test-vitest.md +30 -30
  433. package/skills/vibe-spec/SKILL.md +1195 -1195
  434. package/skills/vibe-spec-review/SKILL.md +726 -726
  435. package/skills/vibe-test/SKILL.md +140 -140
  436. package/skills/video-production/SKILL.md +52 -52
  437. package/skills/video-production/rubrics/quality-checklist.md +58 -58
  438. package/skills/video-production/templates/production-plan.md +104 -104
  439. package/vibe/config.json +29 -29
  440. package/vibe/constitution.md +227 -227
  441. package/vibe/rules/principles/communication-guide.md +98 -98
  442. package/vibe/rules/principles/development-philosophy.md +52 -52
  443. package/vibe/rules/principles/quick-start.md +102 -102
  444. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  445. package/vibe/rules/quality/checklist.md +276 -276
  446. package/vibe/rules/quality/performance.md +236 -236
  447. package/vibe/rules/quality/testing-strategy.md +440 -440
  448. package/vibe/rules/standards/anti-patterns.md +541 -541
  449. package/vibe/rules/standards/code-structure.md +291 -291
  450. package/vibe/rules/standards/complexity-metrics.md +313 -313
  451. package/vibe/rules/standards/git-workflow.md +237 -237
  452. package/vibe/rules/standards/naming-conventions.md +198 -198
  453. package/vibe/rules/standards/security.md +305 -305
  454. package/vibe/rules/writing/document-style.md +74 -74
  455. package/vibe/setup.sh +31 -31
  456. package/vibe/templates/claudemd-template.md +74 -74
  457. package/vibe/templates/constitution-template.md +267 -267
  458. package/vibe/templates/contract-backend-template.md +526 -526
  459. package/vibe/templates/contract-frontend-template.md +599 -599
  460. package/vibe/templates/feature-template.md +96 -96
  461. package/vibe/templates/plan-template.md +194 -194
  462. package/vibe/templates/spec-template.md +221 -221
  463. package/vibe/ui-ux-data/charts.csv +26 -26
  464. package/vibe/ui-ux-data/colors.csv +97 -97
  465. package/vibe/ui-ux-data/icons.csv +101 -101
  466. package/vibe/ui-ux-data/landing.csv +31 -31
  467. package/vibe/ui-ux-data/products.csv +96 -96
  468. package/vibe/ui-ux-data/react-performance.csv +45 -45
  469. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  470. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  471. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  472. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  473. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  474. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  475. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  476. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  477. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  478. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  479. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  480. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  481. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  482. package/vibe/ui-ux-data/styles.csv +68 -68
  483. package/vibe/ui-ux-data/typography.csv +57 -57
  484. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  485. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  486. package/vibe/ui-ux-data/version.json +31 -31
  487. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -1,572 +1,572 @@
1
- ---
2
- description: Verify implementation against SPEC requirements
3
- argument-hint: "feature name"
4
- ---
5
-
6
- # /vibe.verify
7
-
8
- **Automated Quality Verification** - Making quality trustworthy even for non-developers.
9
-
10
- > All scenarios passed = Quality assured
11
-
12
- ## Usage
13
-
14
- ```
15
- /vibe.verify "feature-name" # SPEC-based verification
16
- /vibe.verify --e2e "feature-name" # E2E browser test (agents/e2e-tester.md)
17
- /vibe.verify --e2e --visual # Visual regression test
18
- /vibe.verify --e2e --record # Video recording
19
- ```
20
-
21
- > **⏱️ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
22
-
23
- ## Codex Plugin Integration
24
-
25
- > **Codex 플러그인 감지**: 워크플로우 시작 시 아래 명령으로 자동 감지.
26
- >
27
- > ```bash
28
- > CODEX_AVAILABLE=$(node "{{VIBE_PATH}}/hooks/scripts/codex-detect.js" 2>/dev/null || echo "unavailable")
29
- > ```
30
- >
31
- > `available`이면 `/codex:review` (최종 리뷰 게이트) 자동 호출. `unavailable`이면 스킵.
32
-
33
- ## File Reading Policy (Mandatory)
34
-
35
- - **SPEC/Feature 파일**: 반드시 `Read` 도구로 전체 파일을 읽을 것 (Grep 금지)
36
- - **소스코드 파일**: 검증 대상 파일은 반드시 `Read` 도구로 전체 읽은 후 검증할 것
37
- - **Grep 사용 제한**: 파일 위치 탐색(어떤 파일에 있는지 찾기)에만 사용. 파일 내용 파악에는 반드시 Read 사용
38
- - **시나리오 검증 시**: Given/When/Then 각 단계의 구현 코드를 Read로 전체 읽어 확인할 것. Grep 매칭만으로 "구현됨"이라 판단 금지
39
- - **부분 읽기 금지**: Grep 결과의 주변 몇 줄만 보고 판단하지 말 것. 전체 맥락을 파악해야 정확한 검증 가능
40
-
41
- ## Core Principles
42
-
43
- ```
44
- ┌─────────────────────────────────────────────────────────────────┐
45
- │ What non-developers need to know │
46
- │ │
47
- │ ✅ Scenarios: 4/4 passed │
48
- │ 📈 Quality Score: 94/100 │
49
- │ │
50
- │ Just look at this. The system handles the rest. │
51
- └─────────────────────────────────────────────────────────────────┘
52
- ```
53
-
54
- ## Process
55
-
56
- ### 1. Load Feature File
57
-
58
- **Search order (check BOTH file AND folder):**
59
-
60
- ```
61
- Step 1: Check if SPLIT structure exists (folder)
62
- 📁 .claude/vibe/features/{feature-name}/ → Folder with _index.feature + phase files
63
- 📁 .claude/vibe/specs/{feature-name}/ → Folder with _index.md + phase files
64
-
65
- Step 2: If no folder, check single file
66
- 📄 .claude/vibe/features/{feature-name}.feature → Single Feature file
67
- 📄 .claude/vibe/specs/{feature-name}.md → Single SPEC file
68
-
69
- Step 3: If neither exists → Error
70
- ```
71
-
72
- **Split structure (folder) detected:**
73
- ```
74
- 📁 .claude/vibe/features/{feature-name}/
75
- ├── _index.feature → Master Feature (read first for scenario overview)
76
- ├── phase-1-{name}.feature → Phase 1 scenarios
77
- ├── phase-2-{name}.feature → Phase 2 scenarios
78
- └── ...
79
-
80
- 📁 .claude/vibe/specs/{feature-name}/
81
- ├── _index.md → Master SPEC (read first for overview)
82
- ├── phase-1-{name}.md → Phase 1 SPEC
83
- └── ...
84
-
85
- → Load _index files first, then verify phase by phase
86
- ```
87
-
88
- **Single file detected:**
89
- ```
90
- 📄 .claude/vibe/features/{feature-name}.feature → Scenario list
91
- 📄 .claude/vibe/specs/{feature-name}.md → Verification criteria (reference)
92
- ```
93
-
94
- **Error if NEITHER file NOR folder found:**
95
- ```
96
- ❌ Feature file not found. Searched:
97
- - .claude/vibe/features/{feature-name}/ (folder)
98
- - .claude/vibe/features/{feature-name}.feature (file)
99
-
100
- Run /vibe.spec "{feature-name}" first.
101
- ```
102
-
103
- ### 2. Scenario-by-Scenario Verification
104
-
105
- Automatic verification for each scenario:
106
-
107
- ```
108
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
109
- 🔍 Scenario 1/4: Valid login success
110
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
111
-
112
- Given: User is registered
113
- → Verify: User creation API exists? ✅
114
- → Verify: Test user data available? ✅
115
-
116
- When: Login with valid email and password
117
- → Verify: POST /login endpoint exists? ✅
118
- → Verify: Request handling logic exists? ✅
119
-
120
- Then: Login success + JWT token returned
121
- → Verify: Success response code 200? ✅
122
- → Verify: JWT token included? ✅
123
-
124
- ✅ Scenario 1 passed!
125
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
126
- ```
127
-
128
- ### 3. Verification Methods (PARALLEL — run all applicable at once)
129
-
130
- > **Run these as parallel sub-agents, not sequentially in main session.**
131
- > Each method returns pass/fail summary (~200 tokens) instead of bloating main context.
132
-
133
- | Method | Agent | Condition |
134
- |--------|-------|-----------|
135
- | **Test Execution** | `Task(Bash, "npm test")` | When test files exist |
136
- | **Build Verification** | `Task(Bash, "npm run build")` | When build script exists |
137
- | **Type Check** | `Task(subagent_type="typescript-reviewer")` | TypeScript projects |
138
- | **Code Analysis** | `Task(subagent_type="explorer-low")` | Always (verify logic against SPEC) |
139
- | **E2E Closed Loop** | `Task(subagent_type="e2e-tester")` | `--e2e` flag or UI scenarios |
140
-
141
- ```text
142
- # Launch ALL applicable methods in ONE message (parallel)
143
- Task(Bash, command="npm run build && echo BUILD_OK || echo BUILD_FAIL")
144
- Task(Bash, command="npm test -- --reporter=verbose 2>&1 | tail -20")
145
- Task(subagent_type="explorer-low", prompt="Verify [scenario] Given/When/Then against code...")
146
- ```
147
-
148
- ### 3.1. E2E Closed Loop Verification (`--e2e`)
149
-
150
- **AI가 직접 브라우저를 조작하여 시나리오를 검증하고, 실패 시 자동 수정 후 재검증한다.**
151
-
152
- ```
153
- 구현 → E2E 검증 → 실패 → 수정 → 재검증 → ... → 통과
154
- ↑_____________________________________↓
155
- Closed Loop: 사람 개입 없이 AI가 완주
156
- ```
157
-
158
- **Browser Tool Priority (토큰 효율 순):**
159
-
160
- | Priority | Tool | 토큰/액션 | 사용 조건 |
161
- |----------|------|----------|----------|
162
- | 1st | Agent Browser (접근성 트리) | ~6-20 chars | MCP 사용 가능 시 |
163
- | 2nd | Playwright Test Runner | pass/fail만 | 테스트 코드 실행 |
164
- | 3rd | Playwright MCP (DOM) | ~12,000+ chars | 최후 수단 |
165
-
166
- **Closed Loop 실행 흐름:**
167
-
168
- ```
169
- For each UI scenario in Feature file:
170
- 1. [Browser] Navigate → Find elements → Interact → Assert
171
- 2. PASS → Next scenario
172
- 3. FAIL → Collect evidence (screenshot, console errors)
173
- → Root cause analysis
174
- → Fix code (Read full file first, then edit)
175
- → Re-run ONLY failed scenario (loop until pass or stuck)
176
- 4. STUCK (same failure as previous iteration) → Ask user
177
- (ultrawork 모드: 프롬프트 없이 TODO 기록 후 다음 scenario)
178
- ```
179
-
180
- **핵심 원칙: 검증이 가벼워야 루프가 충분히 돈다.**
181
- - 접근성 트리 기반: `button "Sign In"` = 15 chars
182
- - DOM 기반: `div class="nav-wrapper mx-4 flex..."` = 200+ chars
183
- - 전자를 사용해야 시나리오 50개도 한 세션에서 검증 가능
184
-
185
- ### 3.5 Step Count (MANDATORY before Quality Report)
186
-
187
- Read `.claude/vibe/metrics/current-run.json` to obtain the tool-call count from the preceding `/vibe.run` (and any follow-up work in this session). Then append a record to `.claude/vibe/metrics/history.jsonl` and include the count in the Quality Report below.
188
-
189
- ```bash
190
- # Read step count (ok if file missing — treat as 0)
191
- STEPS=$(node -e "try{const d=JSON.parse(require('fs').readFileSync('.claude/vibe/metrics/current-run.json','utf-8'));console.log(d.steps||0)}catch{console.log(0)}")
192
-
193
- # Append history record
194
- node -e "
195
- const fs=require('fs'),path=require('path');
196
- const dir='.claude/vibe/metrics';
197
- try{
198
- const cur=JSON.parse(fs.readFileSync(path.join(dir,'current-run.json'),'utf-8'));
199
- const rec={verifiedAt:new Date().toISOString(),feature:cur.feature,startedAt:cur.startedAt,steps:cur.steps||0};
200
- fs.appendFileSync(path.join(dir,'history.jsonl'),JSON.stringify(rec)+'\n');
201
- }catch{}"
202
- ```
203
-
204
- Record the value as `{step_count}` and include it in the report below.
205
-
206
- ### 4. Quality Report (Auto-generated)
207
-
208
- ```
209
- ┌─────────────────────────────────────────────────────────────────┐
210
- │ 📊 VERIFICATION REPORT: login │
211
- ├─────────────────────────────────────────────────────────────────┤
212
- │ │
213
- │ ✅ Scenarios: 4/4 passed (100%) │
214
- │ │
215
- │ ┌───────────────────────────────────────────────────────────┐ │
216
- │ │ # │ Scenario │ Given │ When │ Then │ Status │ │
217
- │ │───│───────────────────────│───────│──────│──────│────────│ │
218
- │ │ 1 │ Valid login success │ ✅ │ ✅ │ ✅ │ ✅ │ │
219
- │ │ 2 │ Invalid password error│ ✅ │ ✅ │ ✅ │ ✅ │ │
220
- │ │ 3 │ Email format validation│ ✅ │ ✅ │ ✅ │ ✅ │ │
221
- │ │ 4 │ Forgot password link │ ✅ │ ✅ │ ✅ │ ✅ │ │
222
- │ └───────────────────────────────────────────────────────────┘ │
223
- │ │
224
- │ 📈 Quality Score: 94/100 │
225
- │ │
226
- │ ┌─────────────────────────────────────────────────────────┐ │
227
- │ │ Item │ Result│ Details │ │
228
- │ │───────────────────│───────│─────────────────────────────│ │
229
- │ │ Build │ ✅ │ Success │ │
230
- │ │ Tests │ ✅ │ 12/12 passed │ │
231
- │ │ Type Check │ ✅ │ 0 errors │ │
232
- │ │ Complexity │ ✅ │ All functions ≤30 lines │ │
233
- │ │ Code Coverage │ ⚠️ │ 78% (target: 80%) │ │
234
- │ └─────────────────────────────────────────────────────────┘ │
235
- │ │
236
- │ 📋 Recommendations: │
237
- │ - Need 2% more code coverage (auth.service.ts line 45-52) │
238
- │ │
239
- │ ⏱️ Started: {start_time} │
240
- │ ⏱️ Completed: {getCurrentTime 결과} │
241
- │ 🧮 Tool calls: {step_count} │
242
- │ │
243
- └─────────────────────────────────────────────────────────────────┘
244
- ```
245
-
246
- ### Failure Auto-Register (MANDATORY on any scenario failure)
247
-
248
- Before printing the failure report, **auto-register each failed scenario as a regression bug** so the same failure cannot silently slip through next time:
249
-
250
- ```
251
- For each failed scenario:
252
- Load skill `vibe-regress` with:
253
- subcommand: register --from-verify
254
- feature: {feature-name}
255
- scenario: {scenario-name}
256
- error: {error-summary}
257
- location: {file:line}
258
- ```
259
-
260
- - `--from-verify` mode skips user confirmation (the user is already attentive in a verify-failure context; minimize friction)
261
- - The registered bug's slug appears as a link in the Failure Report's "Fix" section
262
- - Follow up with `/vibe.regress generate <slug>` to produce a preventive test
263
-
264
- ### Failure Report
265
-
266
- ```
267
- ┌─────────────────────────────────────────────────────────────────┐
268
- │ 📊 VERIFICATION REPORT: login │
269
- ├─────────────────────────────────────────────────────────────────┤
270
- │ │
271
- │ ❌ Scenarios: 3/4 passed (75%) │
272
- │ │
273
- │ ┌───────────────────────────────────────────────────────────┐ │
274
- │ │ # │ Scenario │ Given │ When │ Then │ Status │ │
275
- │ │───│───────────────────────│───────│──────│──────│────────│ │
276
- │ │ 1 │ Valid login success │ ✅ │ ✅ │ ✅ │ ✅ │ │
277
- │ │ 2 │ Invalid password error│ ✅ │ ✅ │ ✅ │ ✅ │ │
278
- │ │ 3 │ Email format validation│ ✅ │ ✅ │ ✅ │ ✅ │ │
279
- │ │ 4 │ Forgot password link │ ✅ │ ❌ │ - │ ❌ │ │
280
- │ └───────────────────────────────────────────────────────────┘ │
281
- │ │
282
- │ ❌ Failure Details: │
283
- │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
284
- │ Scenario 4: Forgot password link │
285
- │ │
286
- │ When: Click "Forgot password" │
287
- │ ❌ Issue: Link not implemented │
288
- │ 📍 Location: LoginForm.tsx line 42 │
289
- │ 💡 Fix: Need to add "Forgot password" link │
290
- │ │
291
- │ 🔧 Auto-fix command: /vibe.run "login" --fix │
292
- │ │
293
- └─────────────────────────────────────────────────────────────────┘
294
- ```
295
-
296
- ## Input
297
-
298
- - `.claude/vibe/features/{feature-name}.feature` or `.claude/vibe/features/{feature-name}/` - BDD scenarios
299
- - `.claude/vibe/specs/{feature-name}.md` or `.claude/vibe/specs/{feature-name}/` - SPEC document (reference)
300
- - Implemented source code
301
-
302
- ## Output
303
-
304
- - Verification result report (terminal output)
305
- - Passed/failed scenario list
306
- - Items needing fixes
307
-
308
- ## Example
309
-
310
- ```
311
- User: /vibe.verify "login"
312
-
313
- Claude:
314
- 📄 Loading Feature: .claude/vibe/features/login.feature
315
- 🔍 Starting verification...
316
-
317
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
318
- 🔍 Scenario 1/4: Valid login success
319
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
320
- ✅ Given: User registered - OK
321
- ✅ When: Login attempt - OK
322
- ✅ Then: JWT token returned - OK
323
- ✅ Passed!
324
-
325
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
326
- 🔍 Scenario 2/4: Invalid password error
327
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
328
- ✅ Given: OK
329
- ✅ When: OK
330
- ✅ Then: OK
331
- ✅ Passed!
332
-
333
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
334
- 🔍 Scenario 3/4: Email format validation
335
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
336
- ✅ Given: OK
337
- ✅ When: OK
338
- ✅ Then: OK
339
- ✅ Passed!
340
-
341
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
342
- 🔍 Scenario 4/4: Forgot password link
343
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
344
- ✅ Given: OK
345
- ❌ When: "Forgot password" link - missing
346
- - Then: (skipped)
347
- ❌ Failed!
348
-
349
- ┌─────────────────────────────────────────────────────────────────┐
350
- │ 📊 VERIFICATION REPORT: login │
351
- ├─────────────────────────────────────────────────────────────────┤
352
- │ │
353
- │ ❌ Scenarios: 3/4 passed (75%) │
354
- │ │
355
- │ | # | Scenario | Status | │
356
- │ |---|───────────────────────|────────| │
357
- │ | 1 | Valid login success | ✅ | │
358
- │ | 2 | Invalid password error| ✅ | │
359
- │ | 3 | Email format validation| ✅ | │
360
- │ | 4 | Forgot password link | ❌ | │
361
- │ │
362
- │ 📈 Quality Score: 75/100 │
363
- │ │
364
- │ ❌ Fixes needed: │
365
- │ - Scenario 4: Add "Forgot password" link in LoginForm.tsx │
366
- │ │
367
- │ 🔧 Auto-fix: /vibe.run "login" --fix │
368
- │ │
369
- └─────────────────────────────────────────────────────────────────┘
370
- ```
371
-
372
- ## Core Tools (Code Analysis & Quality)
373
-
374
- ### Tool Invocation
375
-
376
- All tools are called via:
377
-
378
- ```bash
379
- 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)))"
380
- ```
381
-
382
- ### Recommended Tools for Verification
383
-
384
- | Tool | Purpose | When to Use |
385
- |------|---------|-------------|
386
- | `validateCodeQuality` | Code quality validation | Check complexity, style violations |
387
- | `analyzeComplexity` | Complexity analysis | Verify function length, nesting depth |
388
- | `findSymbol` | Find implementations | Verify feature implementation exists |
389
- | `findReferences` | Find usages | Check if all references are correct |
390
-
391
- ### Example Tool Usage in Verification
392
-
393
- **1. Validate code quality:**
394
-
395
- ```bash
396
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.validateCodeQuality({targetPath: 'src/auth/', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
397
- ```
398
-
399
- **2. Analyze complexity of implementation:**
400
-
401
- ```bash
402
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.analyzeComplexity({targetPath: 'src/auth/login.ts', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
403
- ```
404
-
405
- **3. Find implemented feature:**
406
-
407
- ```bash
408
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'handleLogin', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
409
- ```
410
-
411
- ### Final Codex Review Gate (Codex 플러그인 활성화 시)
412
-
413
- > 모든 시나리오 검증 통과 후, 최종 안전망으로 Codex review 실행.
414
-
415
- ```
416
- /codex:review
417
- ```
418
-
419
- **Codex P1 발견 시:**
420
- 1. 즉시 수정
421
- 2. 해당 시나리오 재검증
422
- 3. 재검증 통과 시 최종 완료
423
-
424
- **Codex P2 발견 시:**
425
- - TODO 파일에 기록 후 완료 처리
426
-
427
- ## Post-Verify Contract Check (auto, only when a contract file exists)
428
-
429
- After all scenarios pass, auto-invoke:
430
-
431
- ```
432
- Load skill `vibe-contract` with: check "{feature-name}"
433
- ```
434
-
435
- - Skip if `.claude/vibe/contracts/{feature-name}.md` does not exist
436
- - No drift → verify still passes
437
- - **P1 drift** → demote verify to fail; auto-call `/vibe.regress register --from-contract`
438
- - P2 / P3 drift → warning only; verify still passes
439
-
440
- ## Next Step
441
-
442
- On verification pass:
443
-
444
- ```
445
- Complete! Proceed to next feature.
446
- ```
447
-
448
- On verification fail:
449
-
450
- ```
451
- /vibe.run "feature-name" --fix # Fix failed scenarios
452
- ```
453
-
454
- ---
455
-
456
- ## Quality Gate (Mandatory)
457
-
458
- ### Verification Quality Checklist
459
-
460
- Before marking verification complete, ALL items must pass:
461
-
462
- | Category | Check Item | Weight |
463
- |----------|------------|--------|
464
- | **Scenario Coverage** | All scenarios from feature file tested | 25% |
465
- | **Given Verification** | All preconditions validated | 15% |
466
- | **When Verification** | All actions executable | 15% |
467
- | **Then Verification** | All expected outcomes confirmed | 20% |
468
- | **Build Status** | Project builds without errors | 10% |
469
- | **Test Status** | All existing tests pass | 10% |
470
- | **Type Check** | No TypeScript/type errors | 5% |
471
-
472
- ### Verification Score Calculation
473
-
474
- ```
475
- Score = (passed_scenarios / total_scenarios) × 100
476
-
477
- Grades:
478
- - 100%: ✅ PERFECT - All scenarios pass
479
- - 90-99%: ⚠️ ALMOST - Minor gaps, review needed
480
- - 70-89%: ❌ INCOMPLETE - Significant gaps
481
- - 0-69%: ❌ FAILED - Major implementation missing
482
- ```
483
-
484
- ### Pass/Fail Criteria
485
-
486
- | Metric | Pass Threshold | Action on Fail |
487
- |--------|----------------|----------------|
488
- | Scenario pass rate | 100% | Run `/vibe.run --fix` |
489
- | Build status | Success | Fix build errors first |
490
- | Test pass rate | 100% | Fix failing tests |
491
- | Type check | 0 errors | Fix type errors |
492
-
493
- ### Verification Methods Matrix
494
-
495
- | Method | Trigger Condition | What It Checks |
496
- |--------|-------------------|----------------|
497
- | **Code Analysis** | Always | Implementation exists |
498
- | **Test Execution** | Test files exist | Logic correctness |
499
- | **Build Verification** | Build script exists | Compilation success |
500
- | **Type Check** | tsconfig.json exists | Type safety |
501
- | **Lint Check** | ESLint config exists | Code style |
502
-
503
- ### Scenario Verification Depth
504
-
505
- For each scenario, verify at THREE levels:
506
-
507
- | Level | Verification | Example |
508
- |-------|--------------|---------|
509
- | **L1: Existence** | Code/function exists | `login()` function defined |
510
- | **L2: Logic** | Implementation is correct | Validates email format |
511
- | **L3: Integration** | Works with other components | Returns valid JWT |
512
-
513
- ### Auto-Fix Triggers
514
-
515
- | Verification Failure | Auto-Fix Action |
516
- |----------------------|-----------------|
517
- | Missing implementation | Generate skeleton from scenario |
518
- | Test failure | Analyze and suggest fix |
519
- | Build error | Show error location |
520
- | Type error | Suggest type annotations |
521
-
522
- ### Failure Escalation (convergence-based, no retry cap)
523
-
524
- ```
525
- Auto-fix attempt 1 → Re-verify
526
- ❌ Still failing?
527
- Auto-fix attempt 2 → Re-verify
528
- ❌ Still failing? ← same error as prev? STUCK
529
- ✓ different error? Continue (progress made)
530
- ...
531
- Stuck detected (same error as previous attempt):
532
- → Interactive mode: Ask user
533
- 1. Provide a fix hint (e.g., "check LoginForm.tsx line 42")
534
- → Apply → Re-verify → Continue loop
535
- 2. Type "proceed" → Record failure in
536
- .claude/vibe/todos/verify-failure-{scenario}.md,
537
- continue to next scenario
538
- 3. Type "abort" → Stop entire verification
539
- → ultrawork mode: auto-record TODO + continue to next scenario
540
-
541
- No retry cap — loop continues as long as the auto-fixer makes progress.
542
- Only "same error twice" (stuck) triggers escalation.
543
- ```
544
-
545
- ### Verification Report Requirements
546
-
547
- Every verification MUST produce:
548
-
549
- 1. **Scenario Summary Table**
550
- - Scenario name
551
- - Given/When/Then status (✅/❌)
552
- - Overall status
553
-
554
- 2. **Quality Metrics**
555
- - Build status
556
- - Test pass count
557
- - Type error count
558
- - Code coverage percentage
559
-
560
- 3. **Failure Details** (if any)
561
- - Exact failure point (Given/When/Then)
562
- - Expected vs actual
563
- - File path and line number
564
- - Suggested fix command
565
-
566
- 4. **Recommendations**
567
- - Specific files to modify
568
- - Auto-fix command if available
569
-
570
- ---
571
-
572
- ARGUMENTS: $ARGUMENTS
1
+ ---
2
+ description: Verify implementation against SPEC requirements
3
+ argument-hint: "feature name"
4
+ ---
5
+
6
+ # /vibe.verify
7
+
8
+ **Automated Quality Verification** - Making quality trustworthy even for non-developers.
9
+
10
+ > All scenarios passed = Quality assured
11
+
12
+ ## Usage
13
+
14
+ ```
15
+ /vibe.verify "feature-name" # SPEC-based verification
16
+ /vibe.verify --e2e "feature-name" # E2E browser test (agents/e2e-tester.md)
17
+ /vibe.verify --e2e --visual # Visual regression test
18
+ /vibe.verify --e2e --record # Video recording
19
+ ```
20
+
21
+ > **⏱️ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
22
+
23
+ ## Codex Plugin Integration
24
+
25
+ > **Codex 플러그인 감지**: 워크플로우 시작 시 아래 명령으로 자동 감지.
26
+ >
27
+ > ```bash
28
+ > CODEX_AVAILABLE=$(node "{{VIBE_PATH}}/hooks/scripts/codex-detect.js" 2>/dev/null || echo "unavailable")
29
+ > ```
30
+ >
31
+ > `available`이면 `/codex:review` (최종 리뷰 게이트) 자동 호출. `unavailable`이면 스킵.
32
+
33
+ ## File Reading Policy (Mandatory)
34
+
35
+ - **SPEC/Feature 파일**: 반드시 `Read` 도구로 전체 파일을 읽을 것 (Grep 금지)
36
+ - **소스코드 파일**: 검증 대상 파일은 반드시 `Read` 도구로 전체 읽은 후 검증할 것
37
+ - **Grep 사용 제한**: 파일 위치 탐색(어떤 파일에 있는지 찾기)에만 사용. 파일 내용 파악에는 반드시 Read 사용
38
+ - **시나리오 검증 시**: Given/When/Then 각 단계의 구현 코드를 Read로 전체 읽어 확인할 것. Grep 매칭만으로 "구현됨"이라 판단 금지
39
+ - **부분 읽기 금지**: Grep 결과의 주변 몇 줄만 보고 판단하지 말 것. 전체 맥락을 파악해야 정확한 검증 가능
40
+
41
+ ## Core Principles
42
+
43
+ ```
44
+ ┌─────────────────────────────────────────────────────────────────┐
45
+ │ What non-developers need to know │
46
+ │ │
47
+ │ ✅ Scenarios: 4/4 passed │
48
+ │ 📈 Quality Score: 94/100 │
49
+ │ │
50
+ │ Just look at this. The system handles the rest. │
51
+ └─────────────────────────────────────────────────────────────────┘
52
+ ```
53
+
54
+ ## Process
55
+
56
+ ### 1. Load Feature File
57
+
58
+ **Search order (check BOTH file AND folder):**
59
+
60
+ ```
61
+ Step 1: Check if SPLIT structure exists (folder)
62
+ 📁 .claude/vibe/features/{feature-name}/ → Folder with _index.feature + phase files
63
+ 📁 .claude/vibe/specs/{feature-name}/ → Folder with _index.md + phase files
64
+
65
+ Step 2: If no folder, check single file
66
+ 📄 .claude/vibe/features/{feature-name}.feature → Single Feature file
67
+ 📄 .claude/vibe/specs/{feature-name}.md → Single SPEC file
68
+
69
+ Step 3: If neither exists → Error
70
+ ```
71
+
72
+ **Split structure (folder) detected:**
73
+ ```
74
+ 📁 .claude/vibe/features/{feature-name}/
75
+ ├── _index.feature → Master Feature (read first for scenario overview)
76
+ ├── phase-1-{name}.feature → Phase 1 scenarios
77
+ ├── phase-2-{name}.feature → Phase 2 scenarios
78
+ └── ...
79
+
80
+ 📁 .claude/vibe/specs/{feature-name}/
81
+ ├── _index.md → Master SPEC (read first for overview)
82
+ ├── phase-1-{name}.md → Phase 1 SPEC
83
+ └── ...
84
+
85
+ → Load _index files first, then verify phase by phase
86
+ ```
87
+
88
+ **Single file detected:**
89
+ ```
90
+ 📄 .claude/vibe/features/{feature-name}.feature → Scenario list
91
+ 📄 .claude/vibe/specs/{feature-name}.md → Verification criteria (reference)
92
+ ```
93
+
94
+ **Error if NEITHER file NOR folder found:**
95
+ ```
96
+ ❌ Feature file not found. Searched:
97
+ - .claude/vibe/features/{feature-name}/ (folder)
98
+ - .claude/vibe/features/{feature-name}.feature (file)
99
+
100
+ Run /vibe.spec "{feature-name}" first.
101
+ ```
102
+
103
+ ### 2. Scenario-by-Scenario Verification
104
+
105
+ Automatic verification for each scenario:
106
+
107
+ ```
108
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
109
+ 🔍 Scenario 1/4: Valid login success
110
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
111
+
112
+ Given: User is registered
113
+ → Verify: User creation API exists? ✅
114
+ → Verify: Test user data available? ✅
115
+
116
+ When: Login with valid email and password
117
+ → Verify: POST /login endpoint exists? ✅
118
+ → Verify: Request handling logic exists? ✅
119
+
120
+ Then: Login success + JWT token returned
121
+ → Verify: Success response code 200? ✅
122
+ → Verify: JWT token included? ✅
123
+
124
+ ✅ Scenario 1 passed!
125
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
126
+ ```
127
+
128
+ ### 3. Verification Methods (PARALLEL — run all applicable at once)
129
+
130
+ > **Run these as parallel sub-agents, not sequentially in main session.**
131
+ > Each method returns pass/fail summary (~200 tokens) instead of bloating main context.
132
+
133
+ | Method | Agent | Condition |
134
+ |--------|-------|-----------|
135
+ | **Test Execution** | `Task(Bash, "npm test")` | When test files exist |
136
+ | **Build Verification** | `Task(Bash, "npm run build")` | When build script exists |
137
+ | **Type Check** | `Task(subagent_type="typescript-reviewer")` | TypeScript projects |
138
+ | **Code Analysis** | `Task(subagent_type="explorer-low")` | Always (verify logic against SPEC) |
139
+ | **E2E Closed Loop** | `Task(subagent_type="e2e-tester")` | `--e2e` flag or UI scenarios |
140
+
141
+ ```text
142
+ # Launch ALL applicable methods in ONE message (parallel)
143
+ Task(Bash, command="npm run build && echo BUILD_OK || echo BUILD_FAIL")
144
+ Task(Bash, command="npm test -- --reporter=verbose 2>&1 | tail -20")
145
+ Task(subagent_type="explorer-low", prompt="Verify [scenario] Given/When/Then against code...")
146
+ ```
147
+
148
+ ### 3.1. E2E Closed Loop Verification (`--e2e`)
149
+
150
+ **AI가 직접 브라우저를 조작하여 시나리오를 검증하고, 실패 시 자동 수정 후 재검증한다.**
151
+
152
+ ```
153
+ 구현 → E2E 검증 → 실패 → 수정 → 재검증 → ... → 통과
154
+ ↑_____________________________________↓
155
+ Closed Loop: 사람 개입 없이 AI가 완주
156
+ ```
157
+
158
+ **Browser Tool Priority (토큰 효율 순):**
159
+
160
+ | Priority | Tool | 토큰/액션 | 사용 조건 |
161
+ |----------|------|----------|----------|
162
+ | 1st | Agent Browser (접근성 트리) | ~6-20 chars | MCP 사용 가능 시 |
163
+ | 2nd | Playwright Test Runner | pass/fail만 | 테스트 코드 실행 |
164
+ | 3rd | Playwright MCP (DOM) | ~12,000+ chars | 최후 수단 |
165
+
166
+ **Closed Loop 실행 흐름:**
167
+
168
+ ```
169
+ For each UI scenario in Feature file:
170
+ 1. [Browser] Navigate → Find elements → Interact → Assert
171
+ 2. PASS → Next scenario
172
+ 3. FAIL → Collect evidence (screenshot, console errors)
173
+ → Root cause analysis
174
+ → Fix code (Read full file first, then edit)
175
+ → Re-run ONLY failed scenario (loop until pass or stuck)
176
+ 4. STUCK (same failure as previous iteration) → Ask user
177
+ (ultrawork 모드: 프롬프트 없이 TODO 기록 후 다음 scenario)
178
+ ```
179
+
180
+ **핵심 원칙: 검증이 가벼워야 루프가 충분히 돈다.**
181
+ - 접근성 트리 기반: `button "Sign In"` = 15 chars
182
+ - DOM 기반: `div class="nav-wrapper mx-4 flex..."` = 200+ chars
183
+ - 전자를 사용해야 시나리오 50개도 한 세션에서 검증 가능
184
+
185
+ ### 3.5 Step Count (MANDATORY before Quality Report)
186
+
187
+ Read `.claude/vibe/metrics/current-run.json` to obtain the tool-call count from the preceding `/vibe.run` (and any follow-up work in this session). Then append a record to `.claude/vibe/metrics/history.jsonl` and include the count in the Quality Report below.
188
+
189
+ ```bash
190
+ # Read step count (ok if file missing — treat as 0)
191
+ STEPS=$(node -e "try{const d=JSON.parse(require('fs').readFileSync('.claude/vibe/metrics/current-run.json','utf-8'));console.log(d.steps||0)}catch{console.log(0)}")
192
+
193
+ # Append history record
194
+ node -e "
195
+ const fs=require('fs'),path=require('path');
196
+ const dir='.claude/vibe/metrics';
197
+ try{
198
+ const cur=JSON.parse(fs.readFileSync(path.join(dir,'current-run.json'),'utf-8'));
199
+ const rec={verifiedAt:new Date().toISOString(),feature:cur.feature,startedAt:cur.startedAt,steps:cur.steps||0};
200
+ fs.appendFileSync(path.join(dir,'history.jsonl'),JSON.stringify(rec)+'\n');
201
+ }catch{}"
202
+ ```
203
+
204
+ Record the value as `{step_count}` and include it in the report below.
205
+
206
+ ### 4. Quality Report (Auto-generated)
207
+
208
+ ```
209
+ ┌─────────────────────────────────────────────────────────────────┐
210
+ │ 📊 VERIFICATION REPORT: login │
211
+ ├─────────────────────────────────────────────────────────────────┤
212
+ │ │
213
+ │ ✅ Scenarios: 4/4 passed (100%) │
214
+ │ │
215
+ │ ┌───────────────────────────────────────────────────────────┐ │
216
+ │ │ # │ Scenario │ Given │ When │ Then │ Status │ │
217
+ │ │───│───────────────────────│───────│──────│──────│────────│ │
218
+ │ │ 1 │ Valid login success │ ✅ │ ✅ │ ✅ │ ✅ │ │
219
+ │ │ 2 │ Invalid password error│ ✅ │ ✅ │ ✅ │ ✅ │ │
220
+ │ │ 3 │ Email format validation│ ✅ │ ✅ │ ✅ │ ✅ │ │
221
+ │ │ 4 │ Forgot password link │ ✅ │ ✅ │ ✅ │ ✅ │ │
222
+ │ └───────────────────────────────────────────────────────────┘ │
223
+ │ │
224
+ │ 📈 Quality Score: 94/100 │
225
+ │ │
226
+ │ ┌─────────────────────────────────────────────────────────┐ │
227
+ │ │ Item │ Result│ Details │ │
228
+ │ │───────────────────│───────│─────────────────────────────│ │
229
+ │ │ Build │ ✅ │ Success │ │
230
+ │ │ Tests │ ✅ │ 12/12 passed │ │
231
+ │ │ Type Check │ ✅ │ 0 errors │ │
232
+ │ │ Complexity │ ✅ │ All functions ≤30 lines │ │
233
+ │ │ Code Coverage │ ⚠️ │ 78% (target: 80%) │ │
234
+ │ └─────────────────────────────────────────────────────────┘ │
235
+ │ │
236
+ │ 📋 Recommendations: │
237
+ │ - Need 2% more code coverage (auth.service.ts line 45-52) │
238
+ │ │
239
+ │ ⏱️ Started: {start_time} │
240
+ │ ⏱️ Completed: {getCurrentTime 결과} │
241
+ │ 🧮 Tool calls: {step_count} │
242
+ │ │
243
+ └─────────────────────────────────────────────────────────────────┘
244
+ ```
245
+
246
+ ### Failure Auto-Register (MANDATORY on any scenario failure)
247
+
248
+ Before printing the failure report, **auto-register each failed scenario as a regression bug** so the same failure cannot silently slip through next time:
249
+
250
+ ```
251
+ For each failed scenario:
252
+ Load skill `vibe-regress` with:
253
+ subcommand: register --from-verify
254
+ feature: {feature-name}
255
+ scenario: {scenario-name}
256
+ error: {error-summary}
257
+ location: {file:line}
258
+ ```
259
+
260
+ - `--from-verify` mode skips user confirmation (the user is already attentive in a verify-failure context; minimize friction)
261
+ - The registered bug's slug appears as a link in the Failure Report's "Fix" section
262
+ - Follow up with `/vibe.regress generate <slug>` to produce a preventive test
263
+
264
+ ### Failure Report
265
+
266
+ ```
267
+ ┌─────────────────────────────────────────────────────────────────┐
268
+ │ 📊 VERIFICATION REPORT: login │
269
+ ├─────────────────────────────────────────────────────────────────┤
270
+ │ │
271
+ │ ❌ Scenarios: 3/4 passed (75%) │
272
+ │ │
273
+ │ ┌───────────────────────────────────────────────────────────┐ │
274
+ │ │ # │ Scenario │ Given │ When │ Then │ Status │ │
275
+ │ │───│───────────────────────│───────│──────│──────│────────│ │
276
+ │ │ 1 │ Valid login success │ ✅ │ ✅ │ ✅ │ ✅ │ │
277
+ │ │ 2 │ Invalid password error│ ✅ │ ✅ │ ✅ │ ✅ │ │
278
+ │ │ 3 │ Email format validation│ ✅ │ ✅ │ ✅ │ ✅ │ │
279
+ │ │ 4 │ Forgot password link │ ✅ │ ❌ │ - │ ❌ │ │
280
+ │ └───────────────────────────────────────────────────────────┘ │
281
+ │ │
282
+ │ ❌ Failure Details: │
283
+ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
284
+ │ Scenario 4: Forgot password link │
285
+ │ │
286
+ │ When: Click "Forgot password" │
287
+ │ ❌ Issue: Link not implemented │
288
+ │ 📍 Location: LoginForm.tsx line 42 │
289
+ │ 💡 Fix: Need to add "Forgot password" link │
290
+ │ │
291
+ │ 🔧 Auto-fix command: /vibe.run "login" --fix │
292
+ │ │
293
+ └─────────────────────────────────────────────────────────────────┘
294
+ ```
295
+
296
+ ## Input
297
+
298
+ - `.claude/vibe/features/{feature-name}.feature` or `.claude/vibe/features/{feature-name}/` - BDD scenarios
299
+ - `.claude/vibe/specs/{feature-name}.md` or `.claude/vibe/specs/{feature-name}/` - SPEC document (reference)
300
+ - Implemented source code
301
+
302
+ ## Output
303
+
304
+ - Verification result report (terminal output)
305
+ - Passed/failed scenario list
306
+ - Items needing fixes
307
+
308
+ ## Example
309
+
310
+ ```
311
+ User: /vibe.verify "login"
312
+
313
+ Claude:
314
+ 📄 Loading Feature: .claude/vibe/features/login.feature
315
+ 🔍 Starting verification...
316
+
317
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
318
+ 🔍 Scenario 1/4: Valid login success
319
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
320
+ ✅ Given: User registered - OK
321
+ ✅ When: Login attempt - OK
322
+ ✅ Then: JWT token returned - OK
323
+ ✅ Passed!
324
+
325
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
326
+ 🔍 Scenario 2/4: Invalid password error
327
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
328
+ ✅ Given: OK
329
+ ✅ When: OK
330
+ ✅ Then: OK
331
+ ✅ Passed!
332
+
333
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
334
+ 🔍 Scenario 3/4: Email format validation
335
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
336
+ ✅ Given: OK
337
+ ✅ When: OK
338
+ ✅ Then: OK
339
+ ✅ Passed!
340
+
341
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
342
+ 🔍 Scenario 4/4: Forgot password link
343
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
344
+ ✅ Given: OK
345
+ ❌ When: "Forgot password" link - missing
346
+ - Then: (skipped)
347
+ ❌ Failed!
348
+
349
+ ┌─────────────────────────────────────────────────────────────────┐
350
+ │ 📊 VERIFICATION REPORT: login │
351
+ ├─────────────────────────────────────────────────────────────────┤
352
+ │ │
353
+ │ ❌ Scenarios: 3/4 passed (75%) │
354
+ │ │
355
+ │ | # | Scenario | Status | │
356
+ │ |---|───────────────────────|────────| │
357
+ │ | 1 | Valid login success | ✅ | │
358
+ │ | 2 | Invalid password error| ✅ | │
359
+ │ | 3 | Email format validation| ✅ | │
360
+ │ | 4 | Forgot password link | ❌ | │
361
+ │ │
362
+ │ 📈 Quality Score: 75/100 │
363
+ │ │
364
+ │ ❌ Fixes needed: │
365
+ │ - Scenario 4: Add "Forgot password" link in LoginForm.tsx │
366
+ │ │
367
+ │ 🔧 Auto-fix: /vibe.run "login" --fix │
368
+ │ │
369
+ └─────────────────────────────────────────────────────────────────┘
370
+ ```
371
+
372
+ ## Core Tools (Code Analysis & Quality)
373
+
374
+ ### Tool Invocation
375
+
376
+ All tools are called via:
377
+
378
+ ```bash
379
+ 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)))"
380
+ ```
381
+
382
+ ### Recommended Tools for Verification
383
+
384
+ | Tool | Purpose | When to Use |
385
+ |------|---------|-------------|
386
+ | `validateCodeQuality` | Code quality validation | Check complexity, style violations |
387
+ | `analyzeComplexity` | Complexity analysis | Verify function length, nesting depth |
388
+ | `findSymbol` | Find implementations | Verify feature implementation exists |
389
+ | `findReferences` | Find usages | Check if all references are correct |
390
+
391
+ ### Example Tool Usage in Verification
392
+
393
+ **1. Validate code quality:**
394
+
395
+ ```bash
396
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.validateCodeQuality({targetPath: 'src/auth/', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
397
+ ```
398
+
399
+ **2. Analyze complexity of implementation:**
400
+
401
+ ```bash
402
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.analyzeComplexity({targetPath: 'src/auth/login.ts', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
403
+ ```
404
+
405
+ **3. Find implemented feature:**
406
+
407
+ ```bash
408
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'handleLogin', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
409
+ ```
410
+
411
+ ### Final Codex Review Gate (Codex 플러그인 활성화 시)
412
+
413
+ > 모든 시나리오 검증 통과 후, 최종 안전망으로 Codex review 실행.
414
+
415
+ ```
416
+ /codex:review
417
+ ```
418
+
419
+ **Codex P1 발견 시:**
420
+ 1. 즉시 수정
421
+ 2. 해당 시나리오 재검증
422
+ 3. 재검증 통과 시 최종 완료
423
+
424
+ **Codex P2 발견 시:**
425
+ - TODO 파일에 기록 후 완료 처리
426
+
427
+ ## Post-Verify Contract Check (auto, only when a contract file exists)
428
+
429
+ After all scenarios pass, auto-invoke:
430
+
431
+ ```
432
+ Load skill `vibe-contract` with: check "{feature-name}"
433
+ ```
434
+
435
+ - Skip if `.claude/vibe/contracts/{feature-name}.md` does not exist
436
+ - No drift → verify still passes
437
+ - **P1 drift** → demote verify to fail; auto-call `/vibe.regress register --from-contract`
438
+ - P2 / P3 drift → warning only; verify still passes
439
+
440
+ ## Next Step
441
+
442
+ On verification pass:
443
+
444
+ ```
445
+ Complete! Proceed to next feature.
446
+ ```
447
+
448
+ On verification fail:
449
+
450
+ ```
451
+ /vibe.run "feature-name" --fix # Fix failed scenarios
452
+ ```
453
+
454
+ ---
455
+
456
+ ## Quality Gate (Mandatory)
457
+
458
+ ### Verification Quality Checklist
459
+
460
+ Before marking verification complete, ALL items must pass:
461
+
462
+ | Category | Check Item | Weight |
463
+ |----------|------------|--------|
464
+ | **Scenario Coverage** | All scenarios from feature file tested | 25% |
465
+ | **Given Verification** | All preconditions validated | 15% |
466
+ | **When Verification** | All actions executable | 15% |
467
+ | **Then Verification** | All expected outcomes confirmed | 20% |
468
+ | **Build Status** | Project builds without errors | 10% |
469
+ | **Test Status** | All existing tests pass | 10% |
470
+ | **Type Check** | No TypeScript/type errors | 5% |
471
+
472
+ ### Verification Score Calculation
473
+
474
+ ```
475
+ Score = (passed_scenarios / total_scenarios) × 100
476
+
477
+ Grades:
478
+ - 100%: ✅ PERFECT - All scenarios pass
479
+ - 90-99%: ⚠️ ALMOST - Minor gaps, review needed
480
+ - 70-89%: ❌ INCOMPLETE - Significant gaps
481
+ - 0-69%: ❌ FAILED - Major implementation missing
482
+ ```
483
+
484
+ ### Pass/Fail Criteria
485
+
486
+ | Metric | Pass Threshold | Action on Fail |
487
+ |--------|----------------|----------------|
488
+ | Scenario pass rate | 100% | Run `/vibe.run --fix` |
489
+ | Build status | Success | Fix build errors first |
490
+ | Test pass rate | 100% | Fix failing tests |
491
+ | Type check | 0 errors | Fix type errors |
492
+
493
+ ### Verification Methods Matrix
494
+
495
+ | Method | Trigger Condition | What It Checks |
496
+ |--------|-------------------|----------------|
497
+ | **Code Analysis** | Always | Implementation exists |
498
+ | **Test Execution** | Test files exist | Logic correctness |
499
+ | **Build Verification** | Build script exists | Compilation success |
500
+ | **Type Check** | tsconfig.json exists | Type safety |
501
+ | **Lint Check** | ESLint config exists | Code style |
502
+
503
+ ### Scenario Verification Depth
504
+
505
+ For each scenario, verify at THREE levels:
506
+
507
+ | Level | Verification | Example |
508
+ |-------|--------------|---------|
509
+ | **L1: Existence** | Code/function exists | `login()` function defined |
510
+ | **L2: Logic** | Implementation is correct | Validates email format |
511
+ | **L3: Integration** | Works with other components | Returns valid JWT |
512
+
513
+ ### Auto-Fix Triggers
514
+
515
+ | Verification Failure | Auto-Fix Action |
516
+ |----------------------|-----------------|
517
+ | Missing implementation | Generate skeleton from scenario |
518
+ | Test failure | Analyze and suggest fix |
519
+ | Build error | Show error location |
520
+ | Type error | Suggest type annotations |
521
+
522
+ ### Failure Escalation (convergence-based, no retry cap)
523
+
524
+ ```
525
+ Auto-fix attempt 1 → Re-verify
526
+ ❌ Still failing?
527
+ Auto-fix attempt 2 → Re-verify
528
+ ❌ Still failing? ← same error as prev? STUCK
529
+ ✓ different error? Continue (progress made)
530
+ ...
531
+ Stuck detected (same error as previous attempt):
532
+ → Interactive mode: Ask user
533
+ 1. Provide a fix hint (e.g., "check LoginForm.tsx line 42")
534
+ → Apply → Re-verify → Continue loop
535
+ 2. Type "proceed" → Record failure in
536
+ .claude/vibe/todos/verify-failure-{scenario}.md,
537
+ continue to next scenario
538
+ 3. Type "abort" → Stop entire verification
539
+ → ultrawork mode: auto-record TODO + continue to next scenario
540
+
541
+ No retry cap — loop continues as long as the auto-fixer makes progress.
542
+ Only "same error twice" (stuck) triggers escalation.
543
+ ```
544
+
545
+ ### Verification Report Requirements
546
+
547
+ Every verification MUST produce:
548
+
549
+ 1. **Scenario Summary Table**
550
+ - Scenario name
551
+ - Given/When/Then status (✅/❌)
552
+ - Overall status
553
+
554
+ 2. **Quality Metrics**
555
+ - Build status
556
+ - Test pass count
557
+ - Type error count
558
+ - Code coverage percentage
559
+
560
+ 3. **Failure Details** (if any)
561
+ - Exact failure point (Given/When/Then)
562
+ - Expected vs actual
563
+ - File path and line number
564
+ - Suggested fix command
565
+
566
+ 4. **Recommendations**
567
+ - Specific files to modify
568
+ - Auto-fix command if available
569
+
570
+ ---
571
+
572
+ ARGUMENTS: $ARGUMENTS