@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
@@ -0,0 +1,477 @@
1
+ /**
2
+ * Skill Repository - ~/.claude/vibe/skills/ 저장소 관리
3
+ *
4
+ * 기본 스킬 세트를 전역 위치에 설치하고 관리
5
+ */
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ import os from 'os';
9
+ import { fileURLToPath } from 'url';
10
+ import { parseSkillFrontmatter } from './SkillFrontmatter.js';
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = path.dirname(__filename);
13
+ /**
14
+ * 기본 전역 스킬 디렉토리 경로
15
+ */
16
+ export function getGlobalSkillsDir() {
17
+ return path.join(os.homedir(), '.claude', 'vibe', 'skills');
18
+ }
19
+ /**
20
+ * 번들된 기본 스킬 디렉토리 (패키지 내부)
21
+ */
22
+ export function getBundledSkillsDir() {
23
+ // dist/lib/SkillRepository.js 기준 -> ../../skills
24
+ const distPath = path.resolve(__dirname, '..', '..', 'skills');
25
+ if (fs.existsSync(distPath)) {
26
+ return distPath;
27
+ }
28
+ // 개발 환경: src/lib -> ../../skills
29
+ return path.resolve(__dirname, '..', '..', 'skills');
30
+ }
31
+ /**
32
+ * Skill Repository 클래스
33
+ */
34
+ export class SkillRepository {
35
+ userSkillsDir;
36
+ bundledSkillsDir;
37
+ constructor(config = {}) {
38
+ this.userSkillsDir = config.userSkillsDir || getGlobalSkillsDir();
39
+ this.bundledSkillsDir = config.bundledSkillsDir || getBundledSkillsDir();
40
+ }
41
+ /**
42
+ * 스킬 디렉토리 초기화
43
+ */
44
+ ensureSkillsDir() {
45
+ if (!fs.existsSync(this.userSkillsDir)) {
46
+ fs.mkdirSync(this.userSkillsDir, { recursive: true });
47
+ }
48
+ }
49
+ /**
50
+ * 기본 스킬 세트 시딩 (없는 것만 복사)
51
+ */
52
+ seedDefaultSkills() {
53
+ this.ensureSkillsDir();
54
+ const seeded = [];
55
+ const skipped = [];
56
+ const errors = [];
57
+ if (!fs.existsSync(this.bundledSkillsDir)) {
58
+ errors.push(`Bundled skills directory not found: ${this.bundledSkillsDir}`);
59
+ return { seeded, skipped, errors };
60
+ }
61
+ const entries = fs.readdirSync(this.bundledSkillsDir, { withFileTypes: true });
62
+ for (const entry of entries) {
63
+ if (!entry.isFile())
64
+ continue;
65
+ if (!entry.name.endsWith('.md') && !entry.name.endsWith('.yaml') && !entry.name.endsWith('.yml')) {
66
+ continue;
67
+ }
68
+ const srcPath = path.join(this.bundledSkillsDir, entry.name);
69
+ const destPath = path.join(this.userSkillsDir, entry.name);
70
+ try {
71
+ if (fs.existsSync(destPath)) {
72
+ skipped.push(entry.name);
73
+ continue;
74
+ }
75
+ // Atomic write: temp file -> rename
76
+ const tmpPath = destPath + '.tmp';
77
+ const content = fs.readFileSync(srcPath, 'utf8');
78
+ fs.writeFileSync(tmpPath, content, { flag: 'wx' });
79
+ fs.renameSync(tmpPath, destPath);
80
+ seeded.push(entry.name);
81
+ }
82
+ catch (err) {
83
+ if (err.code === 'EEXIST') {
84
+ skipped.push(entry.name);
85
+ }
86
+ else {
87
+ errors.push(`${entry.name}: ${err.message}`);
88
+ }
89
+ }
90
+ }
91
+ return { seeded, skipped, errors };
92
+ }
93
+ /**
94
+ * 모든 스킬 목록 조회 (user + bundled fallback)
95
+ */
96
+ listSkills() {
97
+ const skills = new Map();
98
+ // 1. 번들 스킬 먼저 로드 (낮은 우선순위)
99
+ if (fs.existsSync(this.bundledSkillsDir)) {
100
+ this.loadSkillsFromDir(this.bundledSkillsDir, 'default', skills);
101
+ }
102
+ // 2. 유저 스킬 로드 (높은 우선순위, 덮어쓰기)
103
+ if (fs.existsSync(this.userSkillsDir)) {
104
+ this.loadSkillsFromDir(this.userSkillsDir, 'user', skills);
105
+ }
106
+ return Array.from(skills.values());
107
+ }
108
+ /**
109
+ * 디렉토리에서 스킬 로드
110
+ */
111
+ loadSkillsFromDir(dir, source, skills) {
112
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
113
+ for (const entry of entries) {
114
+ if (!entry.isFile())
115
+ continue;
116
+ if (!entry.name.endsWith('.md') && !entry.name.endsWith('.yaml') && !entry.name.endsWith('.yml')) {
117
+ continue;
118
+ }
119
+ const filePath = path.join(dir, entry.name);
120
+ const id = entry.name.replace(/\.(md|yaml|yml)$/, '');
121
+ try {
122
+ const content = fs.readFileSync(filePath, 'utf8');
123
+ const parsed = parseSkillFrontmatter(content);
124
+ const info = {
125
+ id,
126
+ name: parsed?.metadata?.name || id,
127
+ description: parsed?.metadata?.description || this.extractDescription(content),
128
+ path: filePath,
129
+ source,
130
+ metadata: parsed?.metadata,
131
+ };
132
+ skills.set(id, info);
133
+ }
134
+ catch {
135
+ // 파싱 실패한 스킬은 건너뜀
136
+ }
137
+ }
138
+ }
139
+ /**
140
+ * 콘텐츠에서 설명 추출 (frontmatter 없는 경우)
141
+ */
142
+ extractDescription(content) {
143
+ // description: 라인 찾기
144
+ const match = content.match(/^description:\s*(.+)$/m);
145
+ if (match) {
146
+ return match[1].replace(/^["']|["']$/g, '');
147
+ }
148
+ // 첫 번째 문단 사용
149
+ const lines = content.split('\n').filter(l => l.trim() && !l.startsWith('#') && !l.startsWith('---'));
150
+ return lines[0]?.slice(0, 200) || 'No description';
151
+ }
152
+ /**
153
+ * ID로 스킬 조회
154
+ */
155
+ getSkill(id) {
156
+ // 유저 스킬 우선
157
+ const userPath = this.findSkillFile(this.userSkillsDir, id);
158
+ if (userPath) {
159
+ return this.loadSkillInfo(userPath, id, 'user');
160
+ }
161
+ // 번들 스킬 fallback
162
+ const bundledPath = this.findSkillFile(this.bundledSkillsDir, id);
163
+ if (bundledPath) {
164
+ return this.loadSkillInfo(bundledPath, id, 'default');
165
+ }
166
+ return null;
167
+ }
168
+ /**
169
+ * 스킬 파일 찾기
170
+ */
171
+ findSkillFile(dir, id) {
172
+ if (!fs.existsSync(dir))
173
+ return null;
174
+ const extensions = ['.md', '.yaml', '.yml'];
175
+ for (const ext of extensions) {
176
+ const filePath = path.join(dir, id + ext);
177
+ if (fs.existsSync(filePath)) {
178
+ return filePath;
179
+ }
180
+ }
181
+ return null;
182
+ }
183
+ /**
184
+ * 스킬 정보 로드
185
+ */
186
+ loadSkillInfo(filePath, id, source) {
187
+ try {
188
+ const content = fs.readFileSync(filePath, 'utf8');
189
+ const parsed = parseSkillFrontmatter(content);
190
+ return {
191
+ id,
192
+ name: parsed?.metadata?.name || id,
193
+ description: parsed?.metadata?.description || this.extractDescription(content),
194
+ path: filePath,
195
+ source,
196
+ metadata: parsed?.metadata,
197
+ };
198
+ }
199
+ catch {
200
+ return null;
201
+ }
202
+ }
203
+ /**
204
+ * 스킬 콘텐츠 읽기
205
+ */
206
+ getSkillContent(id) {
207
+ const skill = this.getSkill(id);
208
+ if (!skill)
209
+ return null;
210
+ try {
211
+ return fs.readFileSync(skill.path, 'utf8');
212
+ }
213
+ catch {
214
+ return null;
215
+ }
216
+ }
217
+ /**
218
+ * 유저 스킬 저장
219
+ */
220
+ saveSkill(id, content) {
221
+ this.ensureSkillsDir();
222
+ const filePath = path.join(this.userSkillsDir, `${id}.md`);
223
+ // Atomic write
224
+ const tmpPath = filePath + '.tmp';
225
+ fs.writeFileSync(tmpPath, content);
226
+ fs.renameSync(tmpPath, filePath);
227
+ }
228
+ /**
229
+ * 유저 스킬 삭제
230
+ */
231
+ deleteSkill(id) {
232
+ const userPath = this.findSkillFile(this.userSkillsDir, id);
233
+ if (userPath) {
234
+ fs.unlinkSync(userPath);
235
+ return true;
236
+ }
237
+ return false;
238
+ }
239
+ /**
240
+ * 트리거 기반 스킬 검색
241
+ */
242
+ findSkillsByTrigger(input) {
243
+ const skills = this.listSkills();
244
+ const lowerInput = input.toLowerCase();
245
+ return skills.filter(skill => {
246
+ if (!skill.metadata?.triggers)
247
+ return false;
248
+ return skill.metadata.triggers.some(trigger => lowerInput.includes(trigger.toLowerCase()));
249
+ });
250
+ }
251
+ /**
252
+ * 저장소 경로 정보
253
+ */
254
+ getPaths() {
255
+ return {
256
+ userDir: this.userSkillsDir,
257
+ bundledDir: this.bundledSkillsDir,
258
+ };
259
+ }
260
+ }
261
+ /**
262
+ * 기본 스킬 세트 정의 (인라인)
263
+ * postinstall에서 skills/ 폴더가 없을 때 사용
264
+ */
265
+ export const DEFAULT_SKILLS = [
266
+ {
267
+ id: 'multi-llm-orchestration',
268
+ content: `---
269
+ name: multi-llm-orchestration
270
+ description: "Multi-LLM research using GPT and Gemini for comprehensive analysis"
271
+ triggers: [gpt, gemini, multi-llm, research, parallel research]
272
+ priority: 80
273
+ ---
274
+ # Multi-LLM Orchestration
275
+
276
+ Use multiple LLMs for comprehensive research and validation.
277
+
278
+ ## Usage
279
+
280
+ \`\`\`bash
281
+ # Via Bash hook (automatic in /vibe.spec)
282
+ node hooks/scripts/llm-orchestrate.js gpt "your prompt"
283
+ node hooks/scripts/llm-orchestrate.js gemini "your prompt"
284
+ \`\`\`
285
+
286
+ ## Setup
287
+
288
+ \`\`\`bash
289
+ vibe gpt auth # Configure GPT API key
290
+ vibe gemini auth # Configure Gemini OAuth/API key
291
+ vibe status # Check current configuration
292
+ \`\`\`
293
+
294
+ ## Best Practices
295
+
296
+ 1. Use GPT for best practices and code review
297
+ 2. Use Gemini for documentation and security analysis
298
+ 3. Combine results for comprehensive coverage
299
+ `,
300
+ },
301
+ {
302
+ id: 'error-recovery',
303
+ content: `---
304
+ name: error-recovery
305
+ description: "Error recovery patterns and retry strategies"
306
+ triggers: [error, fail, retry, recover, fix]
307
+ priority: 70
308
+ ---
309
+ # Error Recovery Patterns
310
+
311
+ ## Common Error Types
312
+
313
+ ### Build Errors
314
+ - Check TypeScript compilation errors
315
+ - Verify dependency versions
316
+ - Run \`npm ci\` to clean install
317
+
318
+ ### Test Failures
319
+ - Run failed tests in isolation
320
+ - Check test fixtures/mocks
321
+ - Verify async timing issues
322
+
323
+ ### Runtime Errors
324
+ - Check stack trace carefully
325
+ - Verify environment variables
326
+ - Check external service connectivity
327
+
328
+ ## Retry Strategy
329
+
330
+ 1. First retry: Same action
331
+ 2. Second retry: Clean state (cache clear)
332
+ 3. Third retry: Alternative approach
333
+ 4. Max retries exceeded: Escalate to user
334
+
335
+ ## Auto-Recovery Commands
336
+
337
+ \`\`\`bash
338
+ # Clean build
339
+ rm -rf node_modules dist && npm ci && npm run build
340
+
341
+ # Reset git state (careful!)
342
+ git stash && git checkout .
343
+
344
+ # Clear caches
345
+ npm cache clean --force
346
+ \`\`\`
347
+ `,
348
+ },
349
+ {
350
+ id: 'code-quality-check',
351
+ content: `---
352
+ name: code-quality-check
353
+ description: "Code quality validation using vibe tools"
354
+ triggers: [quality, lint, complexity, review]
355
+ priority: 60
356
+ ---
357
+ # Code Quality Check
358
+
359
+ ## Using Vibe Tools
360
+
361
+ \`\`\`bash
362
+ # Analyze complexity
363
+ node -e "import('@su-record/vibe/tools').then(t =>
364
+ t.analyzeComplexity({targetPath: 'src/', projectPath: process.cwd()})
365
+ .then(r => console.log(r.content[0].text))
366
+ )"
367
+
368
+ # Validate quality
369
+ node -e "import('@su-record/vibe/tools').then(t =>
370
+ t.validateCodeQuality({targetPath: 'src/', projectPath: process.cwd()})
371
+ .then(r => console.log(r.content[0].text))
372
+ )"
373
+ \`\`\`
374
+
375
+ ## Quality Metrics
376
+
377
+ | Metric | Good | Warning | Critical |
378
+ |--------|------|---------|----------|
379
+ | Cyclomatic Complexity | ≤10 | 11-15 | >15 |
380
+ | Function Length | ≤30 | 31-50 | >50 |
381
+ | Nesting Depth | ≤3 | 4 | >4 |
382
+
383
+ ## Common Issues
384
+
385
+ 1. **High Complexity**: Extract helper functions
386
+ 2. **Long Functions**: Split by responsibility
387
+ 3. **Deep Nesting**: Use early returns
388
+ 4. **Tight Coupling**: Apply dependency injection
389
+ `,
390
+ },
391
+ {
392
+ id: 'session-management',
393
+ content: `---
394
+ name: session-management
395
+ description: "Context and session management across conversations"
396
+ triggers: [session, context, memory, save, restore, continue]
397
+ priority: 75
398
+ ---
399
+ # Session Management
400
+
401
+ ## Starting a Session
402
+
403
+ \`\`\`bash
404
+ # Auto-restore previous context
405
+ node -e "import('@su-record/vibe/tools').then(t =>
406
+ t.startSession({projectPath: process.cwd()})
407
+ .then(r => console.log(r.content[0].text))
408
+ )"
409
+ \`\`\`
410
+
411
+ ## Saving Context
412
+
413
+ \`\`\`bash
414
+ # Save important decisions
415
+ node -e "import('@su-record/vibe/tools').then(t =>
416
+ t.saveMemory({
417
+ key: 'decision-auth-method',
418
+ value: 'Using JWT with refresh tokens for auth',
419
+ category: 'architecture',
420
+ projectPath: process.cwd()
421
+ }).then(r => console.log(r.content[0].text))
422
+ )"
423
+ \`\`\`
424
+
425
+ ## Context Management
426
+
427
+ At 70%+ context usage:
428
+ 1. Use \`saveMemory\` for important decisions
429
+ 2. Start new session with \`/new\`
430
+ 3. Previous context auto-restores
431
+
432
+ ## Slash Command
433
+
434
+ \`\`\`
435
+ /vibe.utils --continue
436
+ \`\`\`
437
+
438
+ Restores previous session context automatically.
439
+ `,
440
+ },
441
+ ];
442
+ /**
443
+ * 인라인 기본 스킬 시딩 (번들 폴더가 없을 때)
444
+ */
445
+ export function seedInlineDefaultSkills(targetDir) {
446
+ const seeded = [];
447
+ const errors = [];
448
+ if (!fs.existsSync(targetDir)) {
449
+ fs.mkdirSync(targetDir, { recursive: true });
450
+ }
451
+ for (const skill of DEFAULT_SKILLS) {
452
+ const destPath = path.join(targetDir, `${skill.id}.md`);
453
+ if (fs.existsSync(destPath)) {
454
+ continue; // 이미 존재하면 건너뜀
455
+ }
456
+ try {
457
+ const tmpPath = destPath + '.tmp';
458
+ fs.writeFileSync(tmpPath, skill.content, { flag: 'wx' });
459
+ fs.renameSync(tmpPath, destPath);
460
+ seeded.push(skill.id);
461
+ }
462
+ catch (err) {
463
+ if (err.code !== 'EEXIST') {
464
+ errors.push(`${skill.id}: ${err.message}`);
465
+ }
466
+ }
467
+ }
468
+ return { seeded, errors };
469
+ }
470
+ /**
471
+ * 편의 함수: 기본 스킬 세트 설치
472
+ */
473
+ export function ensureDefaultSkills() {
474
+ const repo = new SkillRepository();
475
+ return repo.seedDefaultSkills();
476
+ }
477
+ //# sourceMappingURL=SkillRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillRepository.js","sourceRoot":"","sources":["../../src/lib/SkillRepository.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  /**
2
2
  * UltraQA - 5-Cycle Autonomous QA Loop
3
3
  * Test/Build/Lint → Fail → Architect Diagnosis → Executor Fix → Repeat
4
- *
5
- * Inspired by oh-my-claudecode's ultraqa skill (123 lines)
6
4
  */
7
5
  export type QAGoal = 'tests' | 'build' | 'lint' | 'typecheck' | 'custom' | 'all';
8
6
  export interface QAConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"UltraQA.d.ts","sourceRoot":"","sources":["../../src/lib/UltraQA.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEjF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,CAAC;IACrE,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAYD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,OAAO,CAAC,QAAQ,CAAM,GAAG,SAAS,CAezE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GACnC,SAAS,CA6BX;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAgB1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA8BrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAsBlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CA6BzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAapD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA+BhD"}
1
+ {"version":3,"file":"UltraQA.d.ts","sourceRoot":"","sources":["../../src/lib/UltraQA.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEjF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,CAAC;IACrE,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAYD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,OAAO,CAAC,QAAQ,CAAM,GAAG,SAAS,CAezE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GACnC,SAAS,CA6BX;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAgB1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA8BrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAsBlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CA6BzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAapD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA+BhD"}