@su-record/vibe 2.7.17 → 2.7.18

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 (245) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +153 -134
  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 -258
  54. package/commands/vibe.analyze.md +379 -379
  55. package/commands/vibe.review.md +607 -607
  56. package/commands/vibe.run.md +2124 -2124
  57. package/commands/vibe.spec.md +1195 -1195
  58. package/commands/vibe.spec.review.md +569 -569
  59. package/commands/vibe.utils.md +413 -413
  60. package/commands/vibe.verify.md +484 -484
  61. package/dist/cli/collaborator.js +52 -52
  62. package/dist/cli/commands/evolution.js +12 -12
  63. package/dist/cli/commands/info.js +51 -51
  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 +18 -18
  74. package/dist/cli/llm/gemini-commands.js +16 -16
  75. package/dist/cli/llm/gpt-commands.js +19 -19
  76. package/dist/cli/llm/help.js +21 -21
  77. package/dist/cli/postinstall/cursor-agents.js +32 -32
  78. package/dist/cli/postinstall/cursor-rules.js +83 -83
  79. package/dist/cli/postinstall/cursor-skills.js +743 -743
  80. package/dist/cli/setup/Provisioner.js +42 -42
  81. package/dist/infra/lib/DeepInit.js +24 -24
  82. package/dist/infra/lib/IterationTracker.js +11 -11
  83. package/dist/infra/lib/PythonParser.js +108 -108
  84. package/dist/infra/lib/ReviewRace.js +96 -96
  85. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  86. package/dist/infra/lib/SkillQualityGate.js +9 -9
  87. package/dist/infra/lib/SkillRepository.js +159 -159
  88. package/dist/infra/lib/UltraQA.js +99 -99
  89. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  90. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  91. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  92. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  93. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  94. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  95. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  96. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  97. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  98. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  99. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  100. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  101. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  102. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  103. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  104. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  105. package/dist/infra/lib/gemini/orchestration.js +5 -5
  106. package/dist/infra/lib/gpt/orchestration.js +4 -4
  107. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  108. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  109. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  110. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  111. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  112. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  113. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  114. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  115. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts +52 -0
  116. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +1 -0
  117. package/dist/infra/lib/telemetry/SkillTelemetry.js +117 -0
  118. package/dist/infra/lib/telemetry/SkillTelemetry.js.map +1 -0
  119. package/dist/infra/lib/telemetry/SkillTelemetry.test.d.ts +2 -0
  120. package/dist/infra/lib/telemetry/SkillTelemetry.test.d.ts.map +1 -0
  121. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +91 -0
  122. package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -0
  123. package/dist/infra/orchestrator/AgentManager.js +12 -12
  124. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  125. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  126. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  127. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  128. package/dist/test-helpers/index.d.ts +36 -0
  129. package/dist/test-helpers/index.d.ts.map +1 -0
  130. package/dist/test-helpers/index.js +85 -0
  131. package/dist/test-helpers/index.js.map +1 -0
  132. package/dist/test-helpers/index.test.d.ts +2 -0
  133. package/dist/test-helpers/index.test.d.ts.map +1 -0
  134. package/dist/test-helpers/index.test.js +92 -0
  135. package/dist/test-helpers/index.test.js.map +1 -0
  136. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  137. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  138. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  139. package/dist/tools/memory/getMemoryGraph.js +12 -12
  140. package/dist/tools/memory/getSessionContext.js +9 -9
  141. package/dist/tools/memory/linkMemories.js +14 -14
  142. package/dist/tools/memory/listMemories.js +4 -4
  143. package/dist/tools/memory/recallMemory.js +4 -4
  144. package/dist/tools/memory/saveMemory.js +4 -4
  145. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  146. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  147. package/dist/tools/semantic/astGrep.test.js +6 -6
  148. package/dist/tools/spec/prdParser.test.js +171 -171
  149. package/dist/tools/spec/specGenerator.js +169 -169
  150. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  151. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  152. package/hooks/gemini-hooks.json +73 -73
  153. package/hooks/hooks.json +137 -137
  154. package/hooks/scripts/code-check.js +77 -77
  155. package/hooks/scripts/context-save.js +212 -212
  156. package/hooks/scripts/hud-status.js +291 -291
  157. package/hooks/scripts/keyword-detector.js +214 -214
  158. package/hooks/scripts/llm-orchestrate.js +475 -475
  159. package/hooks/scripts/post-edit.js +32 -32
  160. package/hooks/scripts/pre-tool-guard.js +125 -125
  161. package/hooks/scripts/prompt-dispatcher.js +185 -185
  162. package/hooks/scripts/sentinel-guard.js +104 -104
  163. package/hooks/scripts/session-start.js +106 -106
  164. package/hooks/scripts/stop-notify.js +209 -209
  165. package/hooks/scripts/utils.js +100 -100
  166. package/languages/csharp-unity.md +515 -515
  167. package/languages/gdscript-godot.md +470 -470
  168. package/languages/ruby-rails.md +489 -489
  169. package/languages/typescript-angular.md +433 -433
  170. package/languages/typescript-astro.md +416 -416
  171. package/languages/typescript-electron.md +406 -406
  172. package/languages/typescript-nestjs.md +524 -524
  173. package/languages/typescript-svelte.md +407 -407
  174. package/languages/typescript-tauri.md +365 -365
  175. package/package.json +123 -121
  176. package/skills/agents-md/SKILL.md +120 -120
  177. package/skills/arch-guard/SKILL.md +180 -180
  178. package/skills/brand-assets/SKILL.md +146 -146
  179. package/skills/capability-loop/SKILL.md +167 -167
  180. package/skills/characterization-test/SKILL.md +206 -206
  181. package/skills/commerce-patterns/SKILL.md +63 -63
  182. package/skills/commit-push-pr/SKILL.md +75 -75
  183. package/skills/context7-usage/SKILL.md +105 -105
  184. package/skills/core-capabilities/SKILL.md +13 -13
  185. package/skills/e2e-commerce/SKILL.md +61 -61
  186. package/skills/exec-plan/SKILL.md +147 -147
  187. package/skills/frontend-design/SKILL.md +12 -12
  188. package/skills/git-worktree/SKILL.md +72 -72
  189. package/skills/handoff/SKILL.md +109 -109
  190. package/skills/parallel-research/SKILL.md +87 -87
  191. package/skills/priority-todos/SKILL.md +63 -63
  192. package/skills/seo-checklist/SKILL.md +57 -57
  193. package/skills/techdebt/SKILL.md +122 -122
  194. package/skills/tool-fallback/SKILL.md +103 -103
  195. package/skills/typescript-advanced-types/SKILL.md +66 -66
  196. package/skills/ui-ux-pro-max/SKILL.md +221 -221
  197. package/skills/vercel-react-best-practices/SKILL.md +59 -59
  198. package/skills/video-production/SKILL.md +51 -51
  199. package/vibe/config.json +29 -29
  200. package/vibe/constitution.md +227 -227
  201. package/vibe/rules/principles/communication-guide.md +98 -98
  202. package/vibe/rules/principles/development-philosophy.md +52 -52
  203. package/vibe/rules/principles/quick-start.md +102 -102
  204. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  205. package/vibe/rules/quality/checklist.md +276 -276
  206. package/vibe/rules/quality/performance.md +236 -236
  207. package/vibe/rules/quality/testing-strategy.md +440 -440
  208. package/vibe/rules/standards/anti-patterns.md +541 -541
  209. package/vibe/rules/standards/code-structure.md +291 -291
  210. package/vibe/rules/standards/complexity-metrics.md +313 -313
  211. package/vibe/rules/standards/git-workflow.md +237 -237
  212. package/vibe/rules/standards/naming-conventions.md +198 -198
  213. package/vibe/rules/standards/security.md +305 -305
  214. package/vibe/rules/writing/document-style.md +74 -74
  215. package/vibe/setup.sh +31 -31
  216. package/vibe/templates/constitution-template.md +252 -252
  217. package/vibe/templates/contract-backend-template.md +526 -526
  218. package/vibe/templates/contract-frontend-template.md +599 -599
  219. package/vibe/templates/feature-template.md +96 -96
  220. package/vibe/templates/spec-template.md +221 -221
  221. package/vibe/ui-ux-data/charts.csv +26 -26
  222. package/vibe/ui-ux-data/colors.csv +97 -97
  223. package/vibe/ui-ux-data/icons.csv +101 -101
  224. package/vibe/ui-ux-data/landing.csv +31 -31
  225. package/vibe/ui-ux-data/products.csv +96 -96
  226. package/vibe/ui-ux-data/react-performance.csv +45 -45
  227. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  228. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  229. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  230. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  231. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  232. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  233. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  234. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  235. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  236. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  237. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  238. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  239. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  240. package/vibe/ui-ux-data/styles.csv +68 -68
  241. package/vibe/ui-ux-data/typography.csv +57 -57
  242. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  243. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  244. package/vibe/ui-ux-data/version.json +31 -31
  245. 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
  /**
@@ -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
  /**
@@ -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
  ];