@su-record/vibe 2.7.13 → 2.7.15

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 (232) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +134 -126
  3. package/LICENSE +21 -21
  4. package/README.md +449 -449
  5. package/agents/architect-low.md +41 -41
  6. package/agents/architect-medium.md +59 -59
  7. package/agents/architect.md +80 -80
  8. package/agents/build-error-resolver.md +115 -115
  9. package/agents/compounder.md +261 -261
  10. package/agents/diagrammer.md +178 -178
  11. package/agents/docs/api-documenter.md +99 -99
  12. package/agents/docs/changelog-writer.md +93 -93
  13. package/agents/e2e-tester.md +294 -294
  14. package/agents/explorer-low.md +42 -42
  15. package/agents/explorer-medium.md +59 -59
  16. package/agents/explorer.md +48 -48
  17. package/agents/implementer-low.md +43 -43
  18. package/agents/implementer-medium.md +52 -52
  19. package/agents/implementer.md +54 -54
  20. package/agents/junior-mentor.md +141 -141
  21. package/agents/planning/requirements-analyst.md +84 -84
  22. package/agents/planning/ux-advisor.md +83 -83
  23. package/agents/qa/acceptance-tester.md +86 -86
  24. package/agents/qa/edge-case-finder.md +93 -93
  25. package/agents/refactor-cleaner.md +143 -143
  26. package/agents/research/best-practices-agent.md +199 -199
  27. package/agents/research/codebase-patterns-agent.md +157 -157
  28. package/agents/research/framework-docs-agent.md +188 -188
  29. package/agents/research/security-advisory-agent.md +213 -213
  30. package/agents/review/architecture-reviewer.md +107 -107
  31. package/agents/review/complexity-reviewer.md +116 -116
  32. package/agents/review/data-integrity-reviewer.md +88 -88
  33. package/agents/review/git-history-reviewer.md +103 -103
  34. package/agents/review/performance-reviewer.md +86 -86
  35. package/agents/review/python-reviewer.md +150 -150
  36. package/agents/review/rails-reviewer.md +139 -139
  37. package/agents/review/react-reviewer.md +144 -144
  38. package/agents/review/security-reviewer.md +80 -80
  39. package/agents/review/simplicity-reviewer.md +140 -140
  40. package/agents/review/test-coverage-reviewer.md +116 -116
  41. package/agents/review/typescript-reviewer.md +127 -127
  42. package/agents/searcher.md +54 -54
  43. package/agents/simplifier.md +120 -120
  44. package/agents/tester.md +49 -49
  45. package/agents/ui/ui-a11y-auditor.md +93 -93
  46. package/agents/ui/ui-antipattern-detector.md +94 -94
  47. package/agents/ui/ui-dataviz-advisor.md +69 -69
  48. package/agents/ui/ui-design-system-gen.md +57 -57
  49. package/agents/ui/ui-industry-analyzer.md +49 -49
  50. package/agents/ui/ui-layout-architect.md +65 -65
  51. package/agents/ui/ui-stack-implementer.md +68 -68
  52. package/agents/ui/ux-compliance-reviewer.md +81 -81
  53. package/agents/ui-previewer.md +258 -260
  54. package/commands/vibe.analyze.md +11 -13
  55. package/commands/vibe.review.md +43 -1
  56. package/commands/vibe.run.md +2124 -2078
  57. package/commands/vibe.spec.md +9 -4
  58. package/commands/vibe.spec.review.md +569 -565
  59. package/commands/vibe.utils.md +413 -413
  60. package/commands/vibe.verify.md +33 -8
  61. package/dist/cli/collaborator.js +52 -52
  62. package/dist/cli/commands/evolution.js +12 -12
  63. package/dist/cli/commands/info.js +54 -54
  64. package/dist/cli/commands/init.js +5 -5
  65. package/dist/cli/commands/remove.js +14 -14
  66. package/dist/cli/commands/sentinel.js +27 -27
  67. package/dist/cli/commands/skills.js +5 -5
  68. package/dist/cli/commands/slack.js +10 -10
  69. package/dist/cli/commands/telegram.js +12 -12
  70. package/dist/cli/detect.js +32 -32
  71. package/dist/cli/index.js +51 -51
  72. package/dist/cli/llm/claude-commands.js +16 -16
  73. package/dist/cli/llm/config.js +19 -19
  74. package/dist/cli/llm/config.js.map +1 -1
  75. package/dist/cli/llm/gemini-commands.js +16 -16
  76. package/dist/cli/llm/gpt-commands.js +19 -19
  77. package/dist/cli/llm/help.js +21 -21
  78. package/dist/cli/postinstall/cursor-agents.js +32 -32
  79. package/dist/cli/postinstall/cursor-rules.js +83 -83
  80. package/dist/cli/postinstall/cursor-skills.js +743 -743
  81. package/dist/cli/setup/Provisioner.js +42 -42
  82. package/dist/cli/types.d.ts +0 -2
  83. package/dist/cli/types.d.ts.map +1 -1
  84. package/dist/infra/lib/DeepInit.js +24 -24
  85. package/dist/infra/lib/IterationTracker.js +11 -11
  86. package/dist/infra/lib/PythonParser.js +108 -108
  87. package/dist/infra/lib/ReviewRace.js +96 -96
  88. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  89. package/dist/infra/lib/SkillQualityGate.js +9 -9
  90. package/dist/infra/lib/SkillRepository.js +159 -159
  91. package/dist/infra/lib/UltraQA.js +99 -99
  92. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  93. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  94. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  95. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  96. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  97. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  98. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  99. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  100. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  101. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  102. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  103. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  104. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  105. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  106. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  107. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  108. package/dist/infra/lib/gemini/orchestration.js +5 -5
  109. package/dist/infra/lib/gpt/orchestration.js +4 -4
  110. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  111. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  112. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  113. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  114. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  115. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  116. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  117. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  118. package/dist/infra/orchestrator/AgentManager.js +12 -12
  119. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  120. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  121. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  122. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  123. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  124. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  125. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  126. package/dist/tools/memory/getMemoryGraph.js +12 -12
  127. package/dist/tools/memory/getSessionContext.js +9 -9
  128. package/dist/tools/memory/linkMemories.js +14 -14
  129. package/dist/tools/memory/listMemories.js +4 -4
  130. package/dist/tools/memory/recallMemory.js +4 -4
  131. package/dist/tools/memory/saveMemory.js +4 -4
  132. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  133. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  134. package/dist/tools/semantic/astGrep.test.js +6 -6
  135. package/dist/tools/spec/prdParser.test.js +171 -171
  136. package/dist/tools/spec/specGenerator.js +169 -169
  137. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  138. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  139. package/hooks/gemini-hooks.json +73 -73
  140. package/hooks/hooks.json +137 -137
  141. package/hooks/scripts/code-check.js +77 -70
  142. package/hooks/scripts/context-save.js +212 -212
  143. package/hooks/scripts/hud-status.js +291 -291
  144. package/hooks/scripts/keyword-detector.js +214 -214
  145. package/hooks/scripts/llm-orchestrate.js +475 -475
  146. package/hooks/scripts/post-edit.js +32 -32
  147. package/hooks/scripts/pre-tool-guard.js +125 -125
  148. package/hooks/scripts/prompt-dispatcher.js +185 -185
  149. package/hooks/scripts/sentinel-guard.js +104 -104
  150. package/hooks/scripts/session-start.js +106 -106
  151. package/hooks/scripts/stop-notify.js +209 -209
  152. package/hooks/scripts/utils.js +100 -100
  153. package/languages/csharp-unity.md +515 -515
  154. package/languages/gdscript-godot.md +470 -470
  155. package/languages/ruby-rails.md +489 -489
  156. package/languages/typescript-angular.md +433 -433
  157. package/languages/typescript-astro.md +416 -416
  158. package/languages/typescript-electron.md +406 -406
  159. package/languages/typescript-nestjs.md +524 -524
  160. package/languages/typescript-svelte.md +407 -407
  161. package/languages/typescript-tauri.md +365 -365
  162. package/package.json +121 -121
  163. package/skills/agents-md/SKILL.md +120 -120
  164. package/skills/arch-guard/SKILL.md +180 -180
  165. package/skills/brand-assets/SKILL.md +146 -146
  166. package/skills/capability-loop/SKILL.md +167 -167
  167. package/skills/characterization-test/SKILL.md +206 -206
  168. package/skills/commerce-patterns/SKILL.md +59 -59
  169. package/skills/commit-push-pr/SKILL.md +75 -75
  170. package/skills/context7-usage/SKILL.md +105 -105
  171. package/skills/core-capabilities/SKILL.md +48 -48
  172. package/skills/e2e-commerce/SKILL.md +57 -57
  173. package/skills/exec-plan/SKILL.md +147 -147
  174. package/skills/frontend-design/SKILL.md +73 -73
  175. package/skills/git-worktree/SKILL.md +72 -72
  176. package/skills/handoff/SKILL.md +109 -109
  177. package/skills/parallel-research/SKILL.md +87 -87
  178. package/skills/priority-todos/SKILL.md +63 -63
  179. package/skills/seo-checklist/SKILL.md +57 -57
  180. package/skills/techdebt/SKILL.md +122 -122
  181. package/skills/tool-fallback/SKILL.md +103 -103
  182. package/skills/typescript-advanced-types/SKILL.md +66 -65
  183. package/skills/ui-ux-pro-max/SKILL.md +206 -206
  184. package/skills/vercel-react-best-practices/SKILL.md +59 -59
  185. package/skills/video-production/SKILL.md +51 -51
  186. package/vibe/config.json +29 -29
  187. package/vibe/constitution.md +227 -227
  188. package/vibe/rules/principles/communication-guide.md +98 -98
  189. package/vibe/rules/principles/development-philosophy.md +52 -52
  190. package/vibe/rules/principles/quick-start.md +102 -102
  191. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  192. package/vibe/rules/quality/checklist.md +276 -276
  193. package/vibe/rules/quality/performance.md +236 -236
  194. package/vibe/rules/quality/testing-strategy.md +440 -440
  195. package/vibe/rules/standards/anti-patterns.md +541 -541
  196. package/vibe/rules/standards/code-structure.md +291 -291
  197. package/vibe/rules/standards/complexity-metrics.md +313 -313
  198. package/vibe/rules/standards/git-workflow.md +237 -237
  199. package/vibe/rules/standards/naming-conventions.md +198 -198
  200. package/vibe/rules/standards/security.md +305 -305
  201. package/vibe/rules/writing/document-style.md +74 -74
  202. package/vibe/setup.sh +31 -31
  203. package/vibe/templates/constitution-template.md +252 -252
  204. package/vibe/templates/contract-backend-template.md +526 -526
  205. package/vibe/templates/contract-frontend-template.md +599 -599
  206. package/vibe/templates/feature-template.md +96 -96
  207. package/vibe/templates/spec-template.md +221 -221
  208. package/vibe/ui-ux-data/charts.csv +26 -26
  209. package/vibe/ui-ux-data/colors.csv +97 -97
  210. package/vibe/ui-ux-data/icons.csv +101 -101
  211. package/vibe/ui-ux-data/landing.csv +31 -31
  212. package/vibe/ui-ux-data/products.csv +96 -96
  213. package/vibe/ui-ux-data/react-performance.csv +45 -45
  214. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  215. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  216. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  217. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  218. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  219. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  220. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  221. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  222. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  223. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  224. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  225. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  226. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  227. package/vibe/ui-ux-data/styles.csv +68 -68
  228. package/vibe/ui-ux-data/typography.csv +57 -57
  229. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  230. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  231. package/vibe/ui-ux-data/version.json +31 -31
  232. package/vibe/ui-ux-data/web-interface.csv +31 -31
package/dist/cli/index.js CHANGED
@@ -95,13 +95,13 @@ switch (command) {
95
95
  claudeStatus();
96
96
  break;
97
97
  default:
98
- console.log(`
99
- Claude Commands:
100
- vibe claude key <key> Set Anthropic API key
101
- vibe claude status Check status
102
- vibe claude logout Remove key
103
-
104
- Get key: https://console.anthropic.com/settings/keys
98
+ console.log(`
99
+ Claude Commands:
100
+ vibe claude key <key> Set Anthropic API key
101
+ vibe claude status Check status
102
+ vibe claude logout Remove key
103
+
104
+ Get key: https://console.anthropic.com/settings/keys
105
105
  `);
106
106
  }
107
107
  break;
@@ -128,15 +128,15 @@ Get key: https://console.anthropic.com/settings/keys
128
128
  gptStatus();
129
129
  break;
130
130
  default:
131
- console.log(`
132
- GPT Commands:
133
- vibe gpt key <key> Set OpenAI API key (for embeddings)
134
- vibe gpt status Check status (Codex CLI + API key)
135
- vibe gpt logout Remove API key
136
-
137
- Text generation: codex exec (via Codex CLI)
138
- Embeddings: OpenAI API (requires API key)
139
- Codex auth: codex auth
131
+ console.log(`
132
+ GPT Commands:
133
+ vibe gpt key <key> Set OpenAI API key (for embeddings)
134
+ vibe gpt status Check status (Codex CLI + API key)
135
+ vibe gpt logout Remove API key
136
+
137
+ Text generation: codex exec (via Codex CLI)
138
+ Embeddings: OpenAI API (requires API key)
139
+ Codex auth: codex auth
140
140
  `);
141
141
  }
142
142
  break;
@@ -168,16 +168,16 @@ Codex auth: codex auth
168
168
  geminiStatus();
169
169
  break;
170
170
  default:
171
- console.log(`
172
- Gemini Commands:
173
- vibe gemini auth Detect Gemini CLI credentials
174
- vibe gemini key <key> Set API key
175
- vibe gemini status Check status
176
- vibe gemini logout Clear config
177
- vibe gemini remove Remove config
178
-
179
- Auth order: gemini-cli → apikey
180
- Requires: npm i -g @google/gemini-cli && gemini
171
+ console.log(`
172
+ Gemini Commands:
173
+ vibe gemini auth Detect Gemini CLI credentials
174
+ vibe gemini key <key> Set API key
175
+ vibe gemini status Check status
176
+ vibe gemini logout Clear config
177
+ vibe gemini remove Remove config
178
+
179
+ Auth order: gemini-cli → apikey
180
+ Requires: npm i -g @google/gemini-cli && gemini
181
181
  `);
182
182
  }
183
183
  break;
@@ -190,11 +190,11 @@ Requires: npm i -g @google/gemini-cli && gemini
190
190
  skillsAdd(positionalArgs[2]);
191
191
  break;
192
192
  default:
193
- console.log(`
194
- Skills Commands:
195
- vibe skills add <owner/repo> Install skill from skills.sh
196
-
197
- Example: vibe skills add vercel-labs/skills
193
+ console.log(`
194
+ Skills Commands:
195
+ vibe skills add <owner/repo> Install skill from skills.sh
196
+
197
+ Example: vibe skills add vercel-labs/skills
198
198
  `);
199
199
  }
200
200
  break;
@@ -316,10 +316,10 @@ Example: vibe skills add vercel-labs/skills
316
316
  console.log('');
317
317
  }
318
318
  else {
319
- console.log(`
320
- Env Commands:
321
- vibe env import [path] .env 파일을 ~/.vibe/config.json으로 가져오기
322
- path 생략 시 현재 디렉토리의 .env 사용
319
+ console.log(`
320
+ Env Commands:
321
+ vibe env import [path] .env 파일을 ~/.vibe/config.json으로 가져오기
322
+ path 생략 시 현재 디렉토리의 .env 사용
323
323
  `);
324
324
  }
325
325
  break;
@@ -336,22 +336,22 @@ Env Commands:
336
336
  showHelp();
337
337
  break;
338
338
  default:
339
- console.log(`
340
- ❌ Unknown command: ${command}
341
-
342
- Available commands:
343
- vibe setup 셋업 위자드
344
- vibe upgrade 최신 버전으로 업그레이드
345
- vibe update 프로젝트 설정 업데이트
346
- vibe status 전체 상태 확인
347
- vibe claude <cmd> Claude (key, status, logout)
348
- vibe gpt <cmd> GPT (auth, key, status, logout)
349
- vibe gemini <cmd> Gemini (auth, key, status, logout)
350
-
351
- vibe telegram <cmd> Telegram (setup, status) - notification only
352
- vibe slack <cmd> Slack (setup, status) - notification only
353
-
354
- Usage: vibe help
339
+ console.log(`
340
+ ❌ Unknown command: ${command}
341
+
342
+ Available commands:
343
+ vibe setup 셋업 위자드
344
+ vibe upgrade 최신 버전으로 업그레이드
345
+ vibe update 프로젝트 설정 업데이트
346
+ vibe status 전체 상태 확인
347
+ vibe claude <cmd> Claude (key, status, logout)
348
+ vibe gpt <cmd> GPT (auth, key, status, logout)
349
+ vibe gemini <cmd> Gemini (auth, key, status, logout)
350
+
351
+ vibe telegram <cmd> Telegram (setup, status) - notification only
352
+ vibe slack <cmd> Slack (setup, status) - notification only
353
+
354
+ Usage: vibe help
355
355
  `);
356
356
  process.exit(1);
357
357
  }
@@ -25,14 +25,14 @@ export function claudeStatus() {
25
25
  catch { /* ignore */ }
26
26
  const hasEnvKey = !!process.env.ANTHROPIC_API_KEY;
27
27
  if (!hasFileKey && !hasEnvKey) {
28
- console.log(`
29
- Claude API: ✗ Not configured
30
-
31
- Setup:
32
- vibe claude key <ANTHROPIC_API_KEY>
33
- vibe setup
34
-
35
- Get key: https://console.anthropic.com/settings/keys
28
+ console.log(`
29
+ Claude API: ✗ Not configured
30
+
31
+ Setup:
32
+ vibe claude key <ANTHROPIC_API_KEY>
33
+ vibe setup
34
+
35
+ Get key: https://console.anthropic.com/settings/keys
36
36
  `);
37
37
  return;
38
38
  }
@@ -41,14 +41,14 @@ Get key: https://console.anthropic.com/settings/keys
41
41
  methods.push(`✓ API Key (${maskedKey})`);
42
42
  if (hasEnvKey)
43
43
  methods.push('✓ ANTHROPIC_API_KEY env');
44
- console.log(`
45
- Claude API: ${methods.join(', ')}
46
-
47
- Models: Claude Opus 4.5, Sonnet 4.5, Haiku 4.5
48
- Role: Fallback / Direct API
49
-
50
- Manage:
51
- vibe claude logout Remove key
44
+ console.log(`
45
+ Claude API: ${methods.join(', ')}
46
+
47
+ Models: Claude Opus 4.5, Sonnet 4.5, Haiku 4.5
48
+ Role: Fallback / Direct API
49
+
50
+ Manage:
51
+ vibe claude logout Remove key
52
52
  `);
53
53
  }
54
54
  /**
@@ -28,7 +28,7 @@ export const EXTERNAL_LLMS = {
28
28
  gemini: {
29
29
  name: 'core-gemini',
30
30
  role: 'ui-ux',
31
- description: 'UI/UX Design (Gemini 3)',
31
+ description: 'UI/UX Design (Gemini)',
32
32
  package: '@anthropics/gemini-mcp',
33
33
  envKey: 'GOOGLE_API_KEY'
34
34
  },
@@ -38,13 +38,13 @@ export const EXTERNAL_LLMS = {
38
38
  */
39
39
  export function setupExternalLLM(llmType, apiKey) {
40
40
  if (!apiKey) {
41
- console.log(`
42
- API key required.
43
-
44
- Usage:
45
- vibe ${llmType} key <api-key>
46
-
47
- ${llmType === 'gpt' ? 'OpenAI API key: https://platform.openai.com/api-keys' : 'Google API key: https://aistudio.google.com/apikey'}
41
+ console.log(`
42
+ API key required.
43
+
44
+ Usage:
45
+ vibe ${llmType} key <api-key>
46
+
47
+ ${llmType === 'gpt' ? 'OpenAI API key: https://platform.openai.com/api-keys' : 'Google API key: https://aistudio.google.com/apikey'}
48
48
  `);
49
49
  return;
50
50
  }
@@ -79,17 +79,17 @@ ${llmType === 'gpt' ? 'OpenAI API key: https://platform.openai.com/api-keys' : '
79
79
  catch { /* ignore: optional operation */ }
80
80
  }
81
81
  const configJsonPath = path.join(getVibeDir(), 'config.json');
82
- console.log(`
83
- ${llmType.toUpperCase()} API key configured!
84
-
85
- Role: ${llmConfig.description}
86
- Stored: ${configJsonPath}
87
-
88
- ${llmType.toUpperCase()} is called directly via Hooks:
89
- - Auto-called with "${llmType}. query" prefix
90
- - Direct use: import('@su-record/vibe/lib/${llmType}')
91
-
92
- Disable: vibe ${llmType} remove
82
+ console.log(`
83
+ ${llmType.toUpperCase()} API key configured!
84
+
85
+ Role: ${llmConfig.description}
86
+ Stored: ${configJsonPath}
87
+
88
+ ${llmType.toUpperCase()} is called directly via Hooks:
89
+ - Auto-called with "${llmType}. query" prefix
90
+ - Direct use: import('@su-record/vibe/lib/${llmType}')
91
+
92
+ Disable: vibe ${llmType} remove
93
93
  `);
94
94
  }
95
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/llm/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAEnI,oBAAoB;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAsC;IAC9D,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,mBAAmB;KAC5B;IACD,GAAG,EAAE;QACH,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,gBAAgB;KACzB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,gBAAgB;KACzB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAc;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC;;;;SAIP,OAAO;;EAEd,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,oDAAoD;KAC9H,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3D,iBAAiB,CAAC;QAChB,WAAW,EAAE;YACX,CAAC,aAAa,CAAC,EAAE;gBACf,MAAM;gBACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEzC,+BAA+B;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAErD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAe,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,OAA2B,CAAC,GAAG;gBAC3C,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,WAAW,EAAE,SAAS,CAAC,WAAW;aACnC,CAAC;YACF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC;EACZ,OAAO,CAAC,WAAW,EAAE;;QAEf,SAAS,CAAC,WAAW;UACnB,cAAc;;EAEtB,OAAO,CAAC,WAAW,EAAE;wBACC,OAAO;8CACe,OAAO;;gBAErC,OAAO;GACpB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,aAAa,GAAG,OAA2B,CAAC;IAClD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACzC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,8BAA8B;IAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAErD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAe,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAChF,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,OAA2B,CAAC,EAAE,CAAC;gBACrD,UAAU,CAAC,MAAM,CAAC,OAA2B,CAAE,CAAC,OAAO,GAAG,KAAK,CAAC;gBAChE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/llm/config.ts"],"names":[],"mappings":"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"}
@@ -27,14 +27,14 @@ export function geminiAuthCore() {
27
27
  * Gemini 인증 (CLI 명령어용)
28
28
  */
29
29
  export async function geminiAuth() {
30
- console.log(`
31
- Gemini Authentication
32
-
33
- API Key (Google AI Studio):
34
- vibe gemini key <your-api-key>
35
-
36
- Get your API key from:
37
- https://aistudio.google.com/apikey
30
+ console.log(`
31
+ Gemini Authentication
32
+
33
+ API Key (Google AI Studio):
34
+ vibe gemini key <your-api-key>
35
+
36
+ Get your API key from:
37
+ https://aistudio.google.com/apikey
38
38
  `);
39
39
  const config = readGlobalConfig();
40
40
  const apiKey = config.credentials?.gemini?.apiKey;
@@ -69,14 +69,14 @@ export function geminiStatus() {
69
69
  console.log(lines.join('\n'));
70
70
  return;
71
71
  }
72
- console.log(`
73
- Gemini Status
74
-
75
- No credentials found.
76
-
77
- Set up:
78
- vibe gemini key <your-api-key>
79
- or set GEMINI_API_KEY env var
72
+ console.log(`
73
+ Gemini Status
74
+
75
+ No credentials found.
76
+
77
+ Set up:
78
+ vibe gemini key <your-api-key>
79
+ or set GEMINI_API_KEY env var
80
80
  `);
81
81
  }
82
82
  catch (error) {
@@ -36,25 +36,25 @@ export function gptStatus() {
36
36
  }
37
37
  const modelGpt = config.models?.gpt || 'gpt-5.4 (default)';
38
38
  const modelCodex = config.models?.gptCodex || 'gpt-5.3-codex (default)';
39
- console.log(`
40
- GPT Status
41
-
42
- Codex CLI: ${codexVersion}
43
- Codex Auth: ${codexAuthStatus}
44
- API Key: ${hasApiKey ? 'configured (for embeddings)' : 'not set'}
45
-
46
- Models:
47
- gpt (review): ${modelGpt}
48
- gpt-codex (code review & analysis): ${modelCodex}
49
-
50
- Auth priority: codex-cli (~/.codex/auth.json) > apikey
51
- Stored: ~/.vibe/config.json
52
-
53
- Commands:
54
- vibe gpt key <key> Set OpenAI API key (for embeddings)
55
- vibe gpt status This status
56
- vibe gpt logout Remove API key
57
- codex auth Codex CLI authentication
39
+ console.log(`
40
+ GPT Status
41
+
42
+ Codex CLI: ${codexVersion}
43
+ Codex Auth: ${codexAuthStatus}
44
+ API Key: ${hasApiKey ? 'configured (for embeddings)' : 'not set'}
45
+
46
+ Models:
47
+ gpt (review): ${modelGpt}
48
+ gpt-codex (code review & analysis): ${modelCodex}
49
+
50
+ Auth priority: codex-cli (~/.codex/auth.json) > apikey
51
+ Stored: ~/.vibe/config.json
52
+
53
+ Commands:
54
+ vibe gpt key <key> Set OpenAI API key (for embeddings)
55
+ vibe gpt status This status
56
+ vibe gpt logout Remove API key
57
+ codex auth Codex CLI authentication
58
58
  `);
59
59
  }
60
60
  /**
@@ -5,33 +5,33 @@
5
5
  * Auth help (legacy - now shows new format)
6
6
  */
7
7
  export function showAuthHelp() {
8
- console.log(`
9
- 🔐 LLM Authentication
10
-
11
- GPT Commands:
12
- vibe gpt key <KEY> API key
13
- vibe gpt status Check status
14
- codex auth Codex CLI authentication
15
-
16
- Gemini Commands:
17
- vibe gemini key <KEY> API key
18
- vibe gemini status Check status
19
-
20
- Examples:
21
- codex auth Codex CLI login
22
- vibe gpt key sk-xxx API key setup
8
+ console.log(`
9
+ 🔐 LLM Authentication
10
+
11
+ GPT Commands:
12
+ vibe gpt key <KEY> API key
13
+ vibe gpt status Check status
14
+ codex auth Codex CLI authentication
15
+
16
+ Gemini Commands:
17
+ vibe gemini key <KEY> API key
18
+ vibe gemini status Check status
19
+
20
+ Examples:
21
+ codex auth Codex CLI login
22
+ vibe gpt key sk-xxx API key setup
23
23
  `);
24
24
  }
25
25
  /**
26
26
  * Logout help (legacy - now shows new format)
27
27
  */
28
28
  export function showLogoutHelp() {
29
- console.log(`
30
- 🚪 LLM Logout
31
-
32
- Usage:
33
- vibe gpt logout GPT logout
34
- vibe gemini logout Gemini logout
29
+ console.log(`
30
+ 🚪 LLM Logout
31
+
32
+ Usage:
33
+ vibe gpt logout GPT logout
34
+ vibe gemini logout Gemini logout
35
35
  `);
36
36
  }
37
37
  //# sourceMappingURL=help.js.map
@@ -67,38 +67,38 @@ function convertAgentToCursor(content, filename) {
67
67
  const nextStepsSection = nextAgents
68
68
  .map((a) => `- For ${a.replace('-reviewer', '')} review: "Use ${a}"`)
69
69
  .join('\n');
70
- return `---
71
- name: ${name}
72
- model: ${model}
73
- description: ${description}
74
- ---
75
-
76
- # ${title}
77
-
78
- ## When Invoked
79
-
80
- 1. Run \`git diff\` to see recent changes
81
- 2. Focus on modified files relevant to this review type
82
- 3. Begin review immediately without asking questions
83
-
84
- ## Role
85
-
86
- ${roleLines.map((r) => `- ${r}`).join('\n')}
87
-
88
- ## Checklist
89
-
90
- ${checklist}
91
-
92
- ## Output Format
93
-
94
- ${outputFormat}
95
-
96
- ## Next Steps
97
-
98
- Review complete. Consider these follow-up actions:
99
-
100
- ${nextStepsSection}
101
- - All reviews done: Ready to commit
70
+ return `---
71
+ name: ${name}
72
+ model: ${model}
73
+ description: ${description}
74
+ ---
75
+
76
+ # ${title}
77
+
78
+ ## When Invoked
79
+
80
+ 1. Run \`git diff\` to see recent changes
81
+ 2. Focus on modified files relevant to this review type
82
+ 3. Begin review immediately without asking questions
83
+
84
+ ## Role
85
+
86
+ ${roleLines.map((r) => `- ${r}`).join('\n')}
87
+
88
+ ## Checklist
89
+
90
+ ${checklist}
91
+
92
+ ## Output Format
93
+
94
+ ${outputFormat}
95
+
96
+ ## Next Steps
97
+
98
+ Review complete. Consider these follow-up actions:
99
+
100
+ ${nextStepsSection}
101
+ - All reviews done: Ready to commit
102
102
  `;
103
103
  }
104
104
  /**
@@ -21,13 +21,13 @@ function convertLanguageRuleToCursor(content, filename) {
21
21
  // glob 패턴 가져오기
22
22
  const globs = LANGUAGE_GLOBS[filename] || '**/*';
23
23
  // .mdc frontmatter + 본문
24
- return `---
25
- description: ${description} - complexity limits, type safety, error handling
26
- globs: "${globs}"
27
- alwaysApply: false
28
- ---
29
-
30
- ${normalizedContent}
24
+ return `---
25
+ description: ${description} - complexity limits, type safety, error handling
26
+ globs: "${globs}"
27
+ alwaysApply: false
28
+ ---
29
+
30
+ ${normalizedContent}
31
31
  `;
32
32
  }
33
33
  /**
@@ -104,86 +104,86 @@ export function generateCursorRules(cursorRulesDir, detectedStacks = [], languag
104
104
  const commonRules = [
105
105
  {
106
106
  filename: 'code-quality.mdc',
107
- content: `---
108
- description: General code quality rules for all files
109
- alwaysApply: true
110
- ---
111
-
112
- # Code Quality Rules
113
-
114
- ## Core Principles
115
- - **Modify only requested scope** - Don't touch unrelated code
116
- - **Preserve existing style** - Follow project conventions
117
- - **Keep working code** - No unnecessary refactoring
118
-
119
- ## Forbidden Patterns
120
- - No \`console.log\` in production code (remove after debugging)
121
- - No hardcoded strings/numbers → Extract to constants
122
- - No commented-out code in commits
123
- - No incomplete code without TODO marker
124
-
125
- ## Naming Conventions
126
- - Variables/functions: camelCase
127
- - Classes/types: PascalCase
128
- - Constants: UPPER_SNAKE_CASE
129
- - Files: kebab-case or PascalCase (match project style)
130
-
131
- ## Function Design
132
- - Single responsibility per function
133
- - Max 5 parameters (use object for more)
134
- - Descriptive names (verb + noun)
135
- - Document non-obvious behavior
136
-
137
- ## Complexity Limits
138
- | Metric | Limit |
139
- |--------|-------|
140
- | Function length | ≤30 lines (recommended), ≤50 lines (max) |
141
- | Nesting depth | ≤3 levels |
142
- | Parameters | ≤5 |
143
- | Cyclomatic complexity | ≤10 |
144
-
145
- ## Dependency Management
146
- - Avoid circular dependencies
147
- - Keep loose coupling (depend on interfaces)
148
- - High cohesion (group related functions)
107
+ content: `---
108
+ description: General code quality rules for all files
109
+ alwaysApply: true
110
+ ---
111
+
112
+ # Code Quality Rules
113
+
114
+ ## Core Principles
115
+ - **Modify only requested scope** - Don't touch unrelated code
116
+ - **Preserve existing style** - Follow project conventions
117
+ - **Keep working code** - No unnecessary refactoring
118
+
119
+ ## Forbidden Patterns
120
+ - No \`console.log\` in production code (remove after debugging)
121
+ - No hardcoded strings/numbers → Extract to constants
122
+ - No commented-out code in commits
123
+ - No incomplete code without TODO marker
124
+
125
+ ## Naming Conventions
126
+ - Variables/functions: camelCase
127
+ - Classes/types: PascalCase
128
+ - Constants: UPPER_SNAKE_CASE
129
+ - Files: kebab-case or PascalCase (match project style)
130
+
131
+ ## Function Design
132
+ - Single responsibility per function
133
+ - Max 5 parameters (use object for more)
134
+ - Descriptive names (verb + noun)
135
+ - Document non-obvious behavior
136
+
137
+ ## Complexity Limits
138
+ | Metric | Limit |
139
+ |--------|-------|
140
+ | Function length | ≤30 lines (recommended), ≤50 lines (max) |
141
+ | Nesting depth | ≤3 levels |
142
+ | Parameters | ≤5 |
143
+ | Cyclomatic complexity | ≤10 |
144
+
145
+ ## Dependency Management
146
+ - Avoid circular dependencies
147
+ - Keep loose coupling (depend on interfaces)
148
+ - High cohesion (group related functions)
149
149
  `,
150
150
  },
151
151
  {
152
152
  filename: 'security-checklist.mdc',
153
- content: `---
154
- description: Security checklist for code changes
155
- globs: "**/*.ts,**/*.tsx,**/*.js,**/*.jsx,**/*.py,**/*.go,**/*.rs,**/*.java,**/*.kt,**/*.swift"
156
- alwaysApply: false
157
- ---
158
-
159
- # Security Checklist
160
-
161
- ## Input Validation
162
- - [ ] Validate all user inputs
163
- - [ ] Sanitize data before database queries
164
- - [ ] Use parameterized queries (prevent SQL injection)
165
-
166
- ## Authentication
167
- - [ ] Secure password handling (never store plain text)
168
- - [ ] Session management is secure
169
- - [ ] Tokens have appropriate expiry
170
-
171
- ## Data Protection
172
- - [ ] Sensitive data is encrypted
173
- - [ ] API keys not committed to code
174
- - [ ] Error messages don't leak sensitive info
175
-
176
- ## OWASP Top 10 Awareness
177
- - Injection (SQL, XSS, Command)
178
- - Broken authentication
179
- - Sensitive data exposure
180
- - XML external entities (XXE)
181
- - Broken access control
182
- - Security misconfiguration
183
- - Cross-site scripting (XSS)
184
- - Insecure deserialization
185
- - Using components with known vulnerabilities
186
- - Insufficient logging & monitoring
153
+ content: `---
154
+ description: Security checklist for code changes
155
+ globs: "**/*.ts,**/*.tsx,**/*.js,**/*.jsx,**/*.py,**/*.go,**/*.rs,**/*.java,**/*.kt,**/*.swift"
156
+ alwaysApply: false
157
+ ---
158
+
159
+ # Security Checklist
160
+
161
+ ## Input Validation
162
+ - [ ] Validate all user inputs
163
+ - [ ] Sanitize data before database queries
164
+ - [ ] Use parameterized queries (prevent SQL injection)
165
+
166
+ ## Authentication
167
+ - [ ] Secure password handling (never store plain text)
168
+ - [ ] Session management is secure
169
+ - [ ] Tokens have appropriate expiry
170
+
171
+ ## Data Protection
172
+ - [ ] Sensitive data is encrypted
173
+ - [ ] API keys not committed to code
174
+ - [ ] Error messages don't leak sensitive info
175
+
176
+ ## OWASP Top 10 Awareness
177
+ - Injection (SQL, XSS, Command)
178
+ - Broken authentication
179
+ - Sensitive data exposure
180
+ - XML external entities (XXE)
181
+ - Broken access control
182
+ - Security misconfiguration
183
+ - Cross-site scripting (XSS)
184
+ - Insecure deserialization
185
+ - Using components with known vulnerabilities
186
+ - Insufficient logging & monitoring
187
187
  `,
188
188
  },
189
189
  ];