@su-record/vibe 2.5.11 → 2.5.13

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 (341) hide show
  1. package/CLAUDE.md +243 -0
  2. package/LICENSE +21 -21
  3. package/README.md +262 -262
  4. package/agents/architect-low.md +41 -41
  5. package/agents/architect-medium.md +59 -59
  6. package/agents/architect.md +80 -80
  7. package/agents/build-error-resolver.md +115 -115
  8. package/agents/compounder.md +261 -261
  9. package/agents/diagrammer.md +178 -178
  10. package/agents/e2e-tester.md +266 -266
  11. package/agents/explorer-low.md +42 -42
  12. package/agents/explorer-medium.md +59 -59
  13. package/agents/explorer.md +48 -48
  14. package/agents/implementer-low.md +43 -43
  15. package/agents/implementer-medium.md +52 -52
  16. package/agents/implementer.md +54 -54
  17. package/agents/refactor-cleaner.md +143 -143
  18. package/agents/research/best-practices-agent.md +189 -189
  19. package/agents/research/codebase-patterns-agent.md +147 -147
  20. package/agents/research/framework-docs-agent.md +178 -178
  21. package/agents/research/security-advisory-agent.md +203 -203
  22. package/agents/review/architecture-reviewer.md +107 -107
  23. package/agents/review/complexity-reviewer.md +116 -116
  24. package/agents/review/data-integrity-reviewer.md +88 -88
  25. package/agents/review/git-history-reviewer.md +103 -103
  26. package/agents/review/performance-reviewer.md +86 -86
  27. package/agents/review/python-reviewer.md +150 -150
  28. package/agents/review/rails-reviewer.md +139 -139
  29. package/agents/review/react-reviewer.md +144 -144
  30. package/agents/review/security-reviewer.md +80 -80
  31. package/agents/review/simplicity-reviewer.md +140 -140
  32. package/agents/review/test-coverage-reviewer.md +116 -116
  33. package/agents/review/typescript-reviewer.md +127 -127
  34. package/agents/searcher.md +54 -54
  35. package/agents/simplifier.md +120 -120
  36. package/agents/tester.md +49 -49
  37. package/agents/ui-previewer.md +129 -129
  38. package/commands/vibe.analyze.md +356 -356
  39. package/commands/vibe.reason.md +329 -329
  40. package/commands/vibe.review.md +326 -326
  41. package/commands/vibe.run.md +1117 -1051
  42. package/commands/vibe.spec.md +1058 -1058
  43. package/commands/vibe.utils.md +353 -296
  44. package/commands/vibe.verify.md +375 -375
  45. package/dist/cli/collaborator.js +52 -52
  46. package/dist/cli/detect.js +32 -32
  47. package/dist/cli/index.js +102 -102
  48. package/dist/cli/llm.js +144 -144
  49. package/dist/cli/mcp.d.ts +49 -0
  50. package/dist/cli/mcp.d.ts.map +1 -0
  51. package/dist/cli/mcp.js +169 -0
  52. package/dist/cli/mcp.js.map +1 -0
  53. package/dist/cli/postinstall.js +180 -2
  54. package/dist/cli/postinstall.js.map +1 -1
  55. package/dist/cli/setup/GlobalInstaller.d.ts +24 -0
  56. package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -0
  57. package/dist/cli/setup/GlobalInstaller.js +130 -0
  58. package/dist/cli/setup/GlobalInstaller.js.map +1 -0
  59. package/dist/cli/setup/LanguageDetector.d.ts +16 -0
  60. package/dist/cli/setup/LanguageDetector.d.ts.map +1 -0
  61. package/dist/cli/setup/LanguageDetector.js +49 -0
  62. package/dist/cli/setup/LanguageDetector.js.map +1 -0
  63. package/dist/cli/setup/LegacyMigration.d.ts +25 -0
  64. package/dist/cli/setup/LegacyMigration.d.ts.map +1 -0
  65. package/dist/cli/setup/LegacyMigration.js +162 -0
  66. package/dist/cli/setup/LegacyMigration.js.map +1 -0
  67. package/dist/cli/setup/ProjectSetup.d.ts +30 -0
  68. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -0
  69. package/dist/cli/setup/ProjectSetup.js +238 -0
  70. package/dist/cli/setup/ProjectSetup.js.map +1 -0
  71. package/dist/cli/setup/index.d.ts +14 -0
  72. package/dist/cli/setup/index.d.ts.map +1 -0
  73. package/dist/cli/setup/index.js +18 -0
  74. package/dist/cli/setup/index.js.map +1 -0
  75. package/dist/cli/setup.d.ts +10 -77
  76. package/dist/cli/setup.d.ts.map +1 -1
  77. package/dist/cli/setup.js +15 -592
  78. package/dist/cli/setup.js.map +1 -1
  79. package/dist/lib/DeepInit.d.ts +0 -2
  80. package/dist/lib/DeepInit.d.ts.map +1 -1
  81. package/dist/lib/DeepInit.js +24 -26
  82. package/dist/lib/DeepInit.js.map +1 -1
  83. package/dist/lib/IterationTracker.d.ts +0 -2
  84. package/dist/lib/IterationTracker.d.ts.map +1 -1
  85. package/dist/lib/IterationTracker.js +11 -13
  86. package/dist/lib/IterationTracker.js.map +1 -1
  87. package/dist/lib/ModelRouter.d.ts +0 -2
  88. package/dist/lib/ModelRouter.d.ts.map +1 -1
  89. package/dist/lib/ModelRouter.js +0 -2
  90. package/dist/lib/ModelRouter.js.map +1 -1
  91. package/dist/lib/OrchestrateWorkflow.d.ts +1 -3
  92. package/dist/lib/OrchestrateWorkflow.d.ts.map +1 -1
  93. package/dist/lib/OrchestrateWorkflow.js +1 -3
  94. package/dist/lib/OrchestrateWorkflow.js.map +1 -1
  95. package/dist/lib/PythonParser.js +108 -108
  96. package/dist/lib/SkillFrontmatter.d.ts +0 -2
  97. package/dist/lib/SkillFrontmatter.d.ts.map +1 -1
  98. package/dist/lib/SkillFrontmatter.js +28 -30
  99. package/dist/lib/SkillFrontmatter.js.map +1 -1
  100. package/dist/lib/SkillQualityGate.d.ts +0 -2
  101. package/dist/lib/SkillQualityGate.d.ts.map +1 -1
  102. package/dist/lib/SkillQualityGate.js +9 -11
  103. package/dist/lib/SkillQualityGate.js.map +1 -1
  104. package/dist/lib/SkillRepository.d.ts +117 -0
  105. package/dist/lib/SkillRepository.d.ts.map +1 -0
  106. package/dist/lib/SkillRepository.js +477 -0
  107. package/dist/lib/SkillRepository.js.map +1 -0
  108. package/dist/lib/UltraQA.d.ts +0 -2
  109. package/dist/lib/UltraQA.d.ts.map +1 -1
  110. package/dist/lib/UltraQA.js +77 -79
  111. package/dist/lib/UltraQA.js.map +1 -1
  112. package/dist/lib/gemini-mcp.d.ts +10 -0
  113. package/dist/lib/gemini-mcp.d.ts.map +1 -0
  114. package/dist/lib/gemini-mcp.js +353 -0
  115. package/dist/lib/gemini-mcp.js.map +1 -0
  116. package/dist/lib/gpt-api.js +4 -4
  117. package/dist/lib/gpt-mcp.d.ts +10 -0
  118. package/dist/lib/gpt-mcp.d.ts.map +1 -0
  119. package/dist/lib/gpt-mcp.js +352 -0
  120. package/dist/lib/gpt-mcp.js.map +1 -0
  121. package/dist/lib/llm/auth/ApiKeyManager.d.ts +21 -0
  122. package/dist/lib/llm/auth/ApiKeyManager.d.ts.map +1 -0
  123. package/dist/lib/llm/auth/ApiKeyManager.js +43 -0
  124. package/dist/lib/llm/auth/ApiKeyManager.js.map +1 -0
  125. package/dist/lib/llm/auth/ConfigManager.d.ts +29 -0
  126. package/dist/lib/llm/auth/ConfigManager.d.ts.map +1 -0
  127. package/dist/lib/llm/auth/ConfigManager.js +67 -0
  128. package/dist/lib/llm/auth/ConfigManager.js.map +1 -0
  129. package/dist/lib/llm/auth/index.d.ts +25 -0
  130. package/dist/lib/llm/auth/index.d.ts.map +1 -0
  131. package/dist/lib/llm/auth/index.js +83 -0
  132. package/dist/lib/llm/auth/index.js.map +1 -0
  133. package/dist/lib/llm/index.d.ts +10 -0
  134. package/dist/lib/llm/index.d.ts.map +1 -0
  135. package/dist/lib/llm/index.js +12 -0
  136. package/dist/lib/llm/index.js.map +1 -0
  137. package/dist/lib/llm/types.d.ts +96 -0
  138. package/dist/lib/llm/types.d.ts.map +1 -0
  139. package/dist/lib/llm/types.js +17 -0
  140. package/dist/lib/llm/types.js.map +1 -0
  141. package/dist/lib/llm/utils/index.d.ts +6 -0
  142. package/dist/lib/llm/utils/index.d.ts.map +1 -0
  143. package/dist/lib/llm/utils/index.js +6 -0
  144. package/dist/lib/llm/utils/index.js.map +1 -0
  145. package/dist/lib/llm/utils/retry.d.ts +25 -0
  146. package/dist/lib/llm/utils/retry.d.ts.map +1 -0
  147. package/dist/lib/llm/utils/retry.js +72 -0
  148. package/dist/lib/llm/utils/retry.js.map +1 -0
  149. package/dist/lib/llm/utils/stream.d.ts +13 -0
  150. package/dist/lib/llm/utils/stream.d.ts.map +1 -0
  151. package/dist/lib/llm/utils/stream.js +110 -0
  152. package/dist/lib/llm/utils/stream.js.map +1 -0
  153. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  154. package/dist/lib/memory/MemorySearch.js +20 -20
  155. package/dist/lib/memory/MemoryStorage.js +64 -64
  156. package/dist/orchestrator/AgentExecutor.d.ts +23 -0
  157. package/dist/orchestrator/AgentExecutor.d.ts.map +1 -0
  158. package/dist/orchestrator/AgentExecutor.js +231 -0
  159. package/dist/orchestrator/AgentExecutor.js.map +1 -0
  160. package/dist/orchestrator/AgentManager.d.ts +73 -0
  161. package/dist/orchestrator/AgentManager.d.ts.map +1 -0
  162. package/dist/orchestrator/AgentManager.js +184 -0
  163. package/dist/orchestrator/AgentManager.js.map +1 -0
  164. package/dist/orchestrator/LLMCluster.d.ts +70 -0
  165. package/dist/orchestrator/LLMCluster.d.ts.map +1 -0
  166. package/dist/orchestrator/LLMCluster.js +91 -0
  167. package/dist/orchestrator/LLMCluster.js.map +1 -0
  168. package/dist/orchestrator/MultiLlmResearch.d.ts +27 -0
  169. package/dist/orchestrator/MultiLlmResearch.d.ts.map +1 -0
  170. package/dist/orchestrator/MultiLlmResearch.js +145 -0
  171. package/dist/orchestrator/MultiLlmResearch.js.map +1 -0
  172. package/dist/orchestrator/SessionStore.d.ts +41 -0
  173. package/dist/orchestrator/SessionStore.d.ts.map +1 -0
  174. package/dist/orchestrator/SessionStore.js +117 -0
  175. package/dist/orchestrator/SessionStore.js.map +1 -0
  176. package/dist/orchestrator/SmartRouter.d.ts +68 -0
  177. package/dist/orchestrator/SmartRouter.d.ts.map +1 -0
  178. package/dist/orchestrator/SmartRouter.js +256 -0
  179. package/dist/orchestrator/SmartRouter.js.map +1 -0
  180. package/dist/orchestrator/backgroundAgent.d.ts +10 -28
  181. package/dist/orchestrator/backgroundAgent.d.ts.map +1 -1
  182. package/dist/orchestrator/backgroundAgent.js +11 -346
  183. package/dist/orchestrator/backgroundAgent.js.map +1 -1
  184. package/dist/orchestrator/index.d.ts +3 -0
  185. package/dist/orchestrator/index.d.ts.map +1 -1
  186. package/dist/orchestrator/index.js +4 -0
  187. package/dist/orchestrator/index.js.map +1 -1
  188. package/dist/orchestrator/orchestrator.d.ts +19 -154
  189. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  190. package/dist/orchestrator/orchestrator.js +90 -514
  191. package/dist/orchestrator/orchestrator.js.map +1 -1
  192. package/dist/orchestrator/parallelResearch.d.ts +5 -12
  193. package/dist/orchestrator/parallelResearch.d.ts.map +1 -1
  194. package/dist/orchestrator/parallelResearch.js +10 -193
  195. package/dist/orchestrator/parallelResearch.js.map +1 -1
  196. package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
  197. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
  198. package/dist/tools/analytics/getUsageAnalytics.js +246 -0
  199. package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
  200. package/dist/tools/analytics/index.d.ts +5 -0
  201. package/dist/tools/analytics/index.d.ts.map +1 -0
  202. package/dist/tools/analytics/index.js +5 -0
  203. package/dist/tools/analytics/index.js.map +1 -0
  204. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  205. package/dist/tools/convention/getCodingGuide.d.ts +7 -0
  206. package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
  207. package/dist/tools/convention/getCodingGuide.js +69 -0
  208. package/dist/tools/convention/getCodingGuide.js.map +1 -0
  209. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  210. package/dist/tools/index.d.ts +2 -0
  211. package/dist/tools/index.d.ts.map +1 -1
  212. package/dist/tools/index.js +2 -0
  213. package/dist/tools/index.js.map +1 -1
  214. package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
  215. package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
  216. package/dist/tools/planning/analyzeRequirements.js +171 -0
  217. package/dist/tools/planning/analyzeRequirements.js.map +1 -0
  218. package/dist/tools/planning/createUserStories.d.ts +9 -0
  219. package/dist/tools/planning/createUserStories.d.ts.map +1 -0
  220. package/dist/tools/planning/createUserStories.js +124 -0
  221. package/dist/tools/planning/createUserStories.js.map +1 -0
  222. package/dist/tools/planning/featureRoadmap.d.ts +10 -0
  223. package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
  224. package/dist/tools/planning/featureRoadmap.js +207 -0
  225. package/dist/tools/planning/featureRoadmap.js.map +1 -0
  226. package/dist/tools/planning/generatePrd.d.ts +11 -0
  227. package/dist/tools/planning/generatePrd.d.ts.map +1 -0
  228. package/dist/tools/planning/generatePrd.js +161 -0
  229. package/dist/tools/planning/generatePrd.js.map +1 -0
  230. package/dist/tools/planning/index.d.ts +8 -0
  231. package/dist/tools/planning/index.d.ts.map +1 -0
  232. package/dist/tools/planning/index.js +8 -0
  233. package/dist/tools/planning/index.js.map +1 -0
  234. package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
  235. package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
  236. package/dist/tools/prompt/analyzePrompt.js +150 -0
  237. package/dist/tools/prompt/analyzePrompt.js.map +1 -0
  238. package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
  239. package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
  240. package/dist/tools/prompt/enhancePrompt.js +110 -0
  241. package/dist/tools/prompt/enhancePrompt.js.map +1 -0
  242. package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
  243. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
  244. package/dist/tools/prompt/enhancePromptGemini.js +332 -0
  245. package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
  246. package/dist/tools/prompt/index.d.ts +7 -0
  247. package/dist/tools/prompt/index.d.ts.map +1 -0
  248. package/dist/tools/prompt/index.js +7 -0
  249. package/dist/tools/prompt/index.js.map +1 -0
  250. package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
  251. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
  252. package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
  253. package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
  254. package/dist/tools/reasoning/index.d.ts +5 -0
  255. package/dist/tools/reasoning/index.d.ts.map +1 -0
  256. package/dist/tools/reasoning/index.js +5 -0
  257. package/dist/tools/reasoning/index.js.map +1 -0
  258. package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
  259. package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
  260. package/dist/tools/thinking/analyzeProblem.js +55 -0
  261. package/dist/tools/thinking/analyzeProblem.js.map +1 -0
  262. package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
  263. package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
  264. package/dist/tools/thinking/breakDownProblem.js +145 -0
  265. package/dist/tools/thinking/breakDownProblem.js.map +1 -0
  266. package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
  267. package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
  268. package/dist/tools/thinking/createThinkingChain.js +44 -0
  269. package/dist/tools/thinking/createThinkingChain.js.map +1 -0
  270. package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
  271. package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
  272. package/dist/tools/thinking/formatAsPlan.js +78 -0
  273. package/dist/tools/thinking/formatAsPlan.js.map +1 -0
  274. package/dist/tools/thinking/index.d.ts +10 -0
  275. package/dist/tools/thinking/index.d.ts.map +1 -0
  276. package/dist/tools/thinking/index.js +10 -0
  277. package/dist/tools/thinking/index.js.map +1 -0
  278. package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
  279. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
  280. package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
  281. package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
  282. package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
  283. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
  284. package/dist/tools/thinking/thinkAloudProcess.js +80 -0
  285. package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
  286. package/hooks/hooks.json +222 -222
  287. package/hooks/scripts/code-check.js +22 -22
  288. package/hooks/scripts/code-review.js +22 -22
  289. package/hooks/scripts/complexity.js +22 -22
  290. package/hooks/scripts/compound.js +23 -23
  291. package/hooks/scripts/context-save.js +33 -33
  292. package/hooks/scripts/generate-brand-assets.js +472 -0
  293. package/hooks/scripts/hud-multiline.js +262 -264
  294. package/hooks/scripts/hud-status.js +291 -293
  295. package/hooks/scripts/keyword-detector.js +214 -216
  296. package/hooks/scripts/llm-orchestrate.js +171 -171
  297. package/hooks/scripts/post-edit.js +97 -97
  298. package/hooks/scripts/post-tool-verify.js +210 -212
  299. package/hooks/scripts/pre-tool-guard.js +125 -127
  300. package/hooks/scripts/recall.js +22 -22
  301. package/hooks/scripts/session-start.js +30 -30
  302. package/hooks/scripts/skill-injector.js +191 -193
  303. package/hooks/scripts/utils.js +97 -97
  304. package/languages/csharp-unity.md +515 -515
  305. package/languages/gdscript-godot.md +470 -470
  306. package/languages/ruby-rails.md +489 -489
  307. package/languages/typescript-angular.md +433 -433
  308. package/languages/typescript-astro.md +416 -416
  309. package/languages/typescript-electron.md +406 -406
  310. package/languages/typescript-nestjs.md +524 -524
  311. package/languages/typescript-svelte.md +407 -407
  312. package/languages/typescript-tauri.md +365 -365
  313. package/package.json +83 -83
  314. package/skills/brand-assets.md +141 -0
  315. package/skills/commerce-patterns.md +361 -0
  316. package/skills/context7-usage.md +102 -102
  317. package/skills/e2e-commerce.md +304 -0
  318. package/skills/frontend-design.md +92 -0
  319. package/skills/git-worktree.md +181 -181
  320. package/skills/parallel-research.md +77 -77
  321. package/skills/priority-todos.md +239 -239
  322. package/skills/seo-checklist.md +244 -0
  323. package/skills/tool-fallback.md +190 -190
  324. package/skills/vibe-capabilities.md +161 -161
  325. package/vibe/constitution.md +227 -227
  326. package/vibe/rules/core/communication-guide.md +98 -98
  327. package/vibe/rules/core/development-philosophy.md +52 -52
  328. package/vibe/rules/core/quick-start.md +102 -102
  329. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  330. package/vibe/rules/quality/checklist.md +276 -276
  331. package/vibe/rules/quality/testing-strategy.md +440 -440
  332. package/vibe/rules/standards/anti-patterns.md +541 -541
  333. package/vibe/rules/standards/code-structure.md +291 -291
  334. package/vibe/rules/standards/complexity-metrics.md +313 -313
  335. package/vibe/rules/standards/naming-conventions.md +198 -198
  336. package/vibe/setup.sh +31 -31
  337. package/vibe/templates/constitution-template.md +252 -252
  338. package/vibe/templates/contract-backend-template.md +526 -526
  339. package/vibe/templates/contract-frontend-template.md +599 -599
  340. package/vibe/templates/feature-template.md +96 -96
  341. package/vibe/templates/spec-template.md +221 -221
@@ -1,102 +1,102 @@
1
- ---
2
- description: Context7 plugin for latest library documentation. Auto-activates when docs, documentation, latest version, official docs, API reference, or library help is needed.
3
- ---
4
-
5
- # Context7 Usage
6
-
7
- Guide for searching latest library/framework documentation using Context7 plugin with subagent isolation.
8
-
9
- ## Why Subagent Approach?
10
-
11
- | Approach | Problem |
12
- |----------|---------|
13
- | Direct plugin call | Docs content fills main context, causing bloat |
14
- | Subagent isolation | Docs queried in separate context, only results returned |
15
-
16
- **Benefits:**
17
-
18
- - Prevents context bloat during long coding sessions
19
- - Solves knowledge cutoff problem with latest docs
20
- - Main context stays focused on implementation
21
-
22
- ## When to Use
23
-
24
- | Situation | Example |
25
- |-----------|---------|
26
- | Latest API check | "React 19 use() hook usage" |
27
- | Version differences | "Next.js 15 changes" |
28
- | Official docs needed | "Prisma schema syntax" |
29
- | Migration guide | "Vue 2 → Vue 3 migration" |
30
-
31
- ## How It Works
32
-
33
- ```
34
- User asks library question
35
-
36
- Skill detects docs need
37
-
38
- Spawn docs-researcher subagent (haiku)
39
-
40
- Subagent calls context7 in isolated context
41
-
42
- Returns only relevant info to main context
43
- ```
44
-
45
- ## Usage
46
-
47
- ### Automatic (Recommended)
48
-
49
- Just ask library/API questions naturally:
50
-
51
- ```
52
- "How do I use React 19 use() hook?"
53
- "What's new in Next.js 15?"
54
- "Prisma many-to-many relation syntax"
55
- ```
56
-
57
- The skill auto-detects and spawns a docs-researcher subagent.
58
-
59
- ### Manual Command
60
-
61
- ```
62
- /context7:docs <library> [query]
63
- ```
64
-
65
- Examples:
66
-
67
- ```
68
- /context7:docs react hooks
69
- /context7:docs next.js app router
70
- /context7:docs prisma relations
71
- ```
72
-
73
- ## Implementation Pattern
74
-
75
- When you detect a library/API documentation need, spawn a subagent:
76
-
77
- ```
78
- Task tool call:
79
- - subagent_type: Explore
80
- - model: haiku
81
- - prompt: "Use context7 to find [library] documentation about [topic]. Return only the relevant API usage examples and key points."
82
- ```
83
-
84
- The subagent handles the context7 calls and returns a summary, keeping main context clean.
85
-
86
- ## Fallback Chain
87
-
88
- ```
89
- context7 plugin not installed
90
-
91
- Prompt user: /plugin install context7
92
-
93
- If still unavailable: Web Search for official docs
94
- ```
95
-
96
- ## Installation
97
-
98
- If context7 is not installed, guide user:
99
-
100
- ```bash
101
- /plugin install context7
102
- ```
1
+ ---
2
+ description: Context7 plugin for latest library documentation. Auto-activates when docs, documentation, latest version, official docs, API reference, or library help is needed.
3
+ ---
4
+
5
+ # Context7 Usage
6
+
7
+ Guide for searching latest library/framework documentation using Context7 plugin with subagent isolation.
8
+
9
+ ## Why Subagent Approach?
10
+
11
+ | Approach | Problem |
12
+ |----------|---------|
13
+ | Direct plugin call | Docs content fills main context, causing bloat |
14
+ | Subagent isolation | Docs queried in separate context, only results returned |
15
+
16
+ **Benefits:**
17
+
18
+ - Prevents context bloat during long coding sessions
19
+ - Solves knowledge cutoff problem with latest docs
20
+ - Main context stays focused on implementation
21
+
22
+ ## When to Use
23
+
24
+ | Situation | Example |
25
+ |-----------|---------|
26
+ | Latest API check | "React 19 use() hook usage" |
27
+ | Version differences | "Next.js 15 changes" |
28
+ | Official docs needed | "Prisma schema syntax" |
29
+ | Migration guide | "Vue 2 → Vue 3 migration" |
30
+
31
+ ## How It Works
32
+
33
+ ```
34
+ User asks library question
35
+
36
+ Skill detects docs need
37
+
38
+ Spawn docs-researcher subagent (haiku)
39
+
40
+ Subagent calls context7 in isolated context
41
+
42
+ Returns only relevant info to main context
43
+ ```
44
+
45
+ ## Usage
46
+
47
+ ### Automatic (Recommended)
48
+
49
+ Just ask library/API questions naturally:
50
+
51
+ ```
52
+ "How do I use React 19 use() hook?"
53
+ "What's new in Next.js 15?"
54
+ "Prisma many-to-many relation syntax"
55
+ ```
56
+
57
+ The skill auto-detects and spawns a docs-researcher subagent.
58
+
59
+ ### Manual Command
60
+
61
+ ```
62
+ /context7:docs <library> [query]
63
+ ```
64
+
65
+ Examples:
66
+
67
+ ```
68
+ /context7:docs react hooks
69
+ /context7:docs next.js app router
70
+ /context7:docs prisma relations
71
+ ```
72
+
73
+ ## Implementation Pattern
74
+
75
+ When you detect a library/API documentation need, spawn a subagent:
76
+
77
+ ```
78
+ Task tool call:
79
+ - subagent_type: Explore
80
+ - model: haiku
81
+ - prompt: "Use context7 to find [library] documentation about [topic]. Return only the relevant API usage examples and key points."
82
+ ```
83
+
84
+ The subagent handles the context7 calls and returns a summary, keeping main context clean.
85
+
86
+ ## Fallback Chain
87
+
88
+ ```
89
+ context7 plugin not installed
90
+
91
+ Prompt user: /plugin install context7
92
+
93
+ If still unavailable: Web Search for official docs
94
+ ```
95
+
96
+ ## Installation
97
+
98
+ If context7 is not installed, guide user:
99
+
100
+ ```bash
101
+ /plugin install context7
102
+ ```
@@ -0,0 +1,304 @@
1
+ ---
2
+ name: e2e-commerce
3
+ description: "E2E test scenarios for commerce checkout and payment flows"
4
+ triggers: [e2e commerce, checkout test, payment test, order flow test]
5
+ priority: 65
6
+ ---
7
+ # E2E Commerce Test Scenarios
8
+
9
+ Playwright-based E2E testing for commerce checkout flows.
10
+
11
+ ## When to Use
12
+
13
+ - After implementing checkout/payment features
14
+ - Before production deployment
15
+ - CI/CD pipeline quality gate
16
+ - Regression testing after changes
17
+
18
+ ## Test Scenarios
19
+
20
+ ### 1. Happy Path - Complete Checkout
21
+
22
+ ```typescript
23
+ // tests/e2e/checkout.spec.ts
24
+ import { test, expect } from '@playwright/test';
25
+
26
+ test.describe('Checkout Flow', () => {
27
+ test('complete purchase - happy path', async ({ page }) => {
28
+ // 1. Add to cart
29
+ await page.goto('/products/test-product');
30
+ await page.click('[data-testid="add-to-cart"]');
31
+ await expect(page.locator('[data-testid="cart-count"]')).toHaveText('1');
32
+
33
+ // 2. Go to cart
34
+ await page.click('[data-testid="cart-icon"]');
35
+ await expect(page).toHaveURL('/cart');
36
+
37
+ // 3. Proceed to checkout
38
+ await page.click('[data-testid="checkout-button"]');
39
+ await expect(page).toHaveURL('/checkout');
40
+
41
+ // 4. Fill shipping info
42
+ await page.fill('[name="name"]', 'Test User');
43
+ await page.fill('[name="phone"]', '010-1234-5678');
44
+ await page.fill('[name="address"]', 'Test Address 123');
45
+
46
+ // 5. Select payment method
47
+ await page.click('[data-testid="payment-card"]');
48
+
49
+ // 6. Complete payment (sandbox/mock)
50
+ await page.click('[data-testid="pay-button"]');
51
+
52
+ // 7. Verify order complete
53
+ await expect(page).toHaveURL(/\/orders\/\w+/);
54
+ await expect(page.locator('[data-testid="order-status"]')).toHaveText('결제 완료');
55
+ });
56
+ });
57
+ ```
58
+
59
+ ### 2. Stock Validation
60
+
61
+ ```typescript
62
+ test('prevent checkout when out of stock', async ({ page }) => {
63
+ // Setup: Product with stock = 1, another user reserves it
64
+ await page.goto('/products/low-stock-product');
65
+ await page.click('[data-testid="add-to-cart"]');
66
+ await page.goto('/checkout');
67
+
68
+ // Simulate stock depletion during checkout
69
+ await page.evaluate(async () => {
70
+ await fetch('/api/test/deplete-stock', { method: 'POST' });
71
+ });
72
+
73
+ // Attempt payment
74
+ await page.click('[data-testid="pay-button"]');
75
+
76
+ // Should show out of stock error
77
+ await expect(page.locator('[data-testid="error-message"]'))
78
+ .toContainText('재고가 부족합니다');
79
+ });
80
+ ```
81
+
82
+ ### 3. Payment Failure Handling
83
+
84
+ ```typescript
85
+ test('handle payment failure gracefully', async ({ page }) => {
86
+ await page.goto('/products/test-product');
87
+ await page.click('[data-testid="add-to-cart"]');
88
+ await page.goto('/checkout');
89
+
90
+ // Fill form
91
+ await page.fill('[name="name"]', 'Test User');
92
+ await page.fill('[name="address"]', 'Test Address');
93
+
94
+ // Use test card that triggers failure
95
+ await page.fill('[name="card-number"]', '4000000000000002'); // Decline card
96
+ await page.click('[data-testid="pay-button"]');
97
+
98
+ // Verify error handling
99
+ await expect(page.locator('[data-testid="payment-error"]'))
100
+ .toContainText('결제가 거절되었습니다');
101
+
102
+ // Stock should be released
103
+ await page.goto('/products/test-product');
104
+ await expect(page.locator('[data-testid="stock-status"]'))
105
+ .not.toContainText('품절');
106
+ });
107
+ ```
108
+
109
+ ### 4. Duplicate Payment Prevention
110
+
111
+ ```typescript
112
+ test('prevent duplicate payment on double click', async ({ page }) => {
113
+ await page.goto('/checkout');
114
+ // Fill checkout form...
115
+
116
+ // Double click pay button rapidly
117
+ const payButton = page.locator('[data-testid="pay-button"]');
118
+ await Promise.all([
119
+ payButton.click(),
120
+ payButton.click(),
121
+ ]);
122
+
123
+ // Wait for completion
124
+ await page.waitForURL(/\/orders\/\w+/);
125
+
126
+ // Verify only one order created
127
+ const orderId = page.url().split('/').pop();
128
+ const response = await page.request.get(`/api/orders?userId=test`);
129
+ const orders = await response.json();
130
+
131
+ expect(orders.filter(o => o.id === orderId)).toHaveLength(1);
132
+ });
133
+ ```
134
+
135
+ ### 5. Coupon Application
136
+
137
+ ```typescript
138
+ test('apply coupon and verify discount', async ({ page }) => {
139
+ await page.goto('/products/test-product'); // Price: 10,000
140
+ await page.click('[data-testid="add-to-cart"]');
141
+ await page.goto('/checkout');
142
+
143
+ // Original price
144
+ await expect(page.locator('[data-testid="total-price"]'))
145
+ .toHaveText('10,000원');
146
+
147
+ // Apply 10% coupon
148
+ await page.fill('[name="coupon"]', 'DISCOUNT10');
149
+ await page.click('[data-testid="apply-coupon"]');
150
+
151
+ // Verify discount applied
152
+ await expect(page.locator('[data-testid="discount-amount"]'))
153
+ .toHaveText('-1,000원');
154
+ await expect(page.locator('[data-testid="total-price"]'))
155
+ .toHaveText('9,000원');
156
+ });
157
+ ```
158
+
159
+ ### 6. Webhook Resilience
160
+
161
+ ```typescript
162
+ test('order completes even with webhook delay', async ({ page, request }) => {
163
+ // Configure webhook delay in test environment
164
+ await request.post('/api/test/configure-webhook', {
165
+ data: { delay: 5000 } // 5 second delay
166
+ });
167
+
168
+ // Complete checkout
169
+ await page.goto('/checkout');
170
+ // ... fill form
171
+ await page.click('[data-testid="pay-button"]');
172
+
173
+ // Should show processing state
174
+ await expect(page.locator('[data-testid="order-status"]'))
175
+ .toHaveText('처리 중');
176
+
177
+ // Wait for webhook
178
+ await page.waitForSelector('[data-testid="order-status"]:has-text("결제 완료")', {
179
+ timeout: 10000
180
+ });
181
+ });
182
+ ```
183
+
184
+ ## CLI Usage
185
+
186
+ ```bash
187
+ # Run all commerce e2e tests
188
+ /vibe.utils --e2e commerce
189
+
190
+ # Run specific scenario
191
+ /vibe.utils --e2e checkout-flow
192
+
193
+ # Run with visual recording
194
+ /vibe.utils --e2e commerce --record
195
+
196
+ # Run against staging
197
+ /vibe.utils --e2e commerce --env staging
198
+ ```
199
+
200
+ ## Test Environment Setup
201
+
202
+ ### Mock PG Server
203
+ ```typescript
204
+ // tests/mocks/pg-server.ts
205
+ import { setupServer } from 'msw/node';
206
+ import { http, HttpResponse } from 'msw';
207
+
208
+ export const pgMockServer = setupServer(
209
+ // Success response
210
+ http.post('/payments/authorize', () => {
211
+ return HttpResponse.json({
212
+ success: true,
213
+ transactionId: `txn_${Date.now()}`,
214
+ status: 'AUTHORIZED',
215
+ });
216
+ }),
217
+
218
+ // Failure simulation
219
+ http.post('/payments/authorize', ({ request }) => {
220
+ const body = request.json();
221
+ if (body.cardNumber === '4000000000000002') {
222
+ return HttpResponse.json({
223
+ success: false,
224
+ error: 'CARD_DECLINED',
225
+ }, { status: 400 });
226
+ }
227
+ }),
228
+ );
229
+ ```
230
+
231
+ ### Database Seeding
232
+ ```typescript
233
+ // tests/fixtures/commerce.ts
234
+ export async function seedCommerceData(db: Database) {
235
+ // Create test products
236
+ await db.products.createMany([
237
+ { id: 'test-product', name: 'Test Product', price: 10000, stock: 100 },
238
+ { id: 'low-stock', name: 'Low Stock', price: 5000, stock: 1 },
239
+ ]);
240
+
241
+ // Create test coupons
242
+ await db.coupons.create({
243
+ code: 'DISCOUNT10',
244
+ discountPercent: 10,
245
+ expiresAt: addDays(new Date(), 30),
246
+ });
247
+ }
248
+ ```
249
+
250
+ ## CI/CD Integration
251
+
252
+ ```yaml
253
+ # .github/workflows/e2e.yml
254
+ name: E2E Commerce Tests
255
+
256
+ on:
257
+ pull_request:
258
+ paths:
259
+ - 'src/checkout/**'
260
+ - 'src/payment/**'
261
+ - 'src/cart/**'
262
+
263
+ jobs:
264
+ e2e:
265
+ runs-on: ubuntu-latest
266
+ steps:
267
+ - uses: actions/checkout@v4
268
+
269
+ - name: Install dependencies
270
+ run: npm ci
271
+
272
+ - name: Start test server
273
+ run: npm run start:test &
274
+
275
+ - name: Run E2E tests
276
+ run: npx playwright test tests/e2e/commerce/
277
+
278
+ - name: Upload test results
279
+ if: failure()
280
+ uses: actions/upload-artifact@v4
281
+ with:
282
+ name: playwright-report
283
+ path: playwright-report/
284
+ ```
285
+
286
+ ## Quality Checklist
287
+
288
+ ### Must Pass (P0)
289
+ - [ ] Happy path checkout completes
290
+ - [ ] Payment failure releases stock
291
+ - [ ] Duplicate payment prevented
292
+ - [ ] Out of stock blocks checkout
293
+
294
+ ### Should Pass (P1)
295
+ - [ ] Coupon calculation correct
296
+ - [ ] Webhook retry handled
297
+ - [ ] Cart merge on login works
298
+ - [ ] Partial refund processed
299
+
300
+ ### Nice to Have (P2)
301
+ - [ ] Multiple payment methods
302
+ - [ ] Guest checkout flow
303
+ - [ ] Order cancellation
304
+ - [ ] Subscription renewal
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: frontend-design
3
+ description: "Production-grade frontend with bold aesthetic direction for UI-focused projects"
4
+ triggers: [frontend, ui design, aesthetic, beautiful ui, design system, ui quality, visual design]
5
+ priority: 70
6
+ ---
7
+ # Frontend Design Skill
8
+
9
+ Create production-grade frontend with bold aesthetic direction.
10
+
11
+ ## When to Use
12
+
13
+ - UI-focused projects requiring high visual quality
14
+ - Design system implementation
15
+ - User-facing features where aesthetics matter
16
+
17
+ ## Core Principles
18
+
19
+ ### 1. Typography
20
+ - Choose distinctive typefaces that set the tone
21
+ - Establish clear hierarchy through size, weight, and spacing
22
+ - Consider custom fonts that reflect brand personality
23
+
24
+ ### 2. Color & Theme
25
+ - Develop unique color palettes beyond defaults
26
+ - Consider dark/light mode with intentional contrast
27
+ - Use color purposefully for hierarchy and emphasis
28
+
29
+ ### 3. Motion & Animation
30
+ - Add meaningful micro-interactions
31
+ - Use motion to guide user attention
32
+ - Implement smooth transitions between states
33
+
34
+ ### 4. Composition & Layout
35
+ - Create visual rhythm through spacing
36
+ - Use asymmetry and unconventional layouts when appropriate
37
+ - Balance density with breathing room
38
+
39
+ ### 5. Visual Details
40
+ - Custom icons and illustrations
41
+ - Thoughtful shadows and depth
42
+ - Refined borders, corners, and surfaces
43
+
44
+ ## Anti-Patterns to Avoid
45
+
46
+ - Generic Bootstrap/Tailwind defaults without customization
47
+ - Overused fonts (Inter, Roboto without styling)
48
+ - Predictable card-based layouts everywhere
49
+ - Stock photography without curation
50
+ - Safe, corporate color palettes
51
+
52
+ ## Implementation Guidelines
53
+
54
+ ```typescript
55
+ // Design token structure
56
+ const tokens = {
57
+ colors: {
58
+ primary: { /* custom palette */ },
59
+ semantic: { /* success, error, warning */ },
60
+ },
61
+ typography: {
62
+ fontFamily: { /* display, body, mono */ },
63
+ scale: { /* modular scale */ },
64
+ },
65
+ spacing: { /* consistent rhythm */ },
66
+ motion: { /* duration, easing */ },
67
+ };
68
+ ```
69
+
70
+ ## Quality Checklist
71
+
72
+ - [ ] Typography creates clear hierarchy
73
+ - [ ] Color palette is distinctive and accessible
74
+ - [ ] Animations are smooth (60fps)
75
+ - [ ] Layout works across breakpoints
76
+ - [ ] Empty/loading/error states are designed
77
+ - [ ] Dark mode (if applicable) is intentional
78
+ - [ ] Micro-interactions provide feedback
79
+
80
+ ## Integration with Vibe
81
+
82
+ Use with `/vibe.utils --ui` for preview:
83
+
84
+ ```bash
85
+ /vibe.utils --ui "login form with bold typography and custom color scheme"
86
+ ```
87
+
88
+ ## Resources
89
+
90
+ - [Refactoring UI](https://www.refactoringui.com/) - Design principles
91
+ - [Motion Design](https://motion.dev/) - Animation library
92
+ - [Radix Primitives](https://www.radix-ui.com/) - Accessible components