@su-record/vibe 2.4.5 → 2.4.7

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 (171) hide show
  1. package/.claude/settings.json +48 -48
  2. package/.claude/settings.local.json +3 -1
  3. package/.claude/vibe/constitution.md +184 -184
  4. package/.claude/vibe/rules/core/communication-guide.md +104 -104
  5. package/.claude/vibe/rules/core/development-philosophy.md +52 -52
  6. package/.claude/vibe/rules/core/quick-start.md +120 -120
  7. package/.claude/vibe/rules/languages/dart-flutter.md +509 -509
  8. package/.claude/vibe/rules/languages/go.md +396 -396
  9. package/.claude/vibe/rules/languages/java-spring.md +586 -586
  10. package/.claude/vibe/rules/languages/kotlin-android.md +491 -491
  11. package/.claude/vibe/rules/languages/python-django.md +371 -371
  12. package/.claude/vibe/rules/languages/python-fastapi.md +386 -386
  13. package/.claude/vibe/rules/languages/rust.md +425 -425
  14. package/.claude/vibe/rules/languages/swift-ios.md +516 -516
  15. package/.claude/vibe/rules/languages/typescript-nextjs.md +441 -441
  16. package/.claude/vibe/rules/languages/typescript-node.md +375 -375
  17. package/.claude/vibe/rules/languages/typescript-nuxt.md +521 -521
  18. package/.claude/vibe/rules/languages/typescript-react-native.md +446 -446
  19. package/.claude/vibe/rules/languages/typescript-react.md +525 -525
  20. package/.claude/vibe/rules/languages/typescript-vue.md +353 -353
  21. package/.claude/vibe/rules/quality/bdd-contract-testing.md +388 -388
  22. package/.claude/vibe/rules/quality/checklist.md +276 -276
  23. package/.claude/vibe/rules/quality/testing-strategy.md +437 -437
  24. package/.claude/vibe/rules/standards/anti-patterns.md +369 -369
  25. package/.claude/vibe/rules/standards/code-structure.md +291 -291
  26. package/.claude/vibe/rules/standards/complexity-metrics.md +312 -312
  27. package/.claude/vibe/rules/standards/naming-conventions.md +198 -198
  28. package/.claude/vibe/setup.sh +31 -31
  29. package/.claude/vibe/templates/constitution-template.md +184 -184
  30. package/.claude/vibe/templates/contract-backend-template.md +517 -517
  31. package/.claude/vibe/templates/contract-frontend-template.md +594 -594
  32. package/.claude/vibe/templates/feature-template.md +96 -96
  33. package/.claude/vibe/templates/spec-template.md +199 -199
  34. package/CLAUDE.md +345 -345
  35. package/LICENSE +21 -21
  36. package/README.md +181 -164
  37. package/agents/compounder.md +261 -261
  38. package/agents/diagrammer.md +178 -178
  39. package/agents/e2e-tester.md +266 -266
  40. package/agents/explorer.md +48 -48
  41. package/agents/implementer.md +53 -53
  42. package/agents/research/best-practices-agent.md +139 -139
  43. package/agents/research/codebase-patterns-agent.md +147 -147
  44. package/agents/research/framework-docs-agent.md +181 -181
  45. package/agents/research/security-advisory-agent.md +167 -167
  46. package/agents/review/architecture-reviewer.md +107 -107
  47. package/agents/review/complexity-reviewer.md +116 -116
  48. package/agents/review/data-integrity-reviewer.md +88 -88
  49. package/agents/review/git-history-reviewer.md +103 -103
  50. package/agents/review/performance-reviewer.md +86 -86
  51. package/agents/review/python-reviewer.md +152 -152
  52. package/agents/review/rails-reviewer.md +139 -139
  53. package/agents/review/react-reviewer.md +144 -144
  54. package/agents/review/security-reviewer.md +80 -80
  55. package/agents/review/simplicity-reviewer.md +140 -140
  56. package/agents/review/test-coverage-reviewer.md +116 -116
  57. package/agents/review/typescript-reviewer.md +127 -127
  58. package/agents/searcher.md +54 -54
  59. package/agents/simplifier.md +119 -119
  60. package/agents/tester.md +49 -49
  61. package/agents/ui-previewer.md +137 -137
  62. package/commands/vibe.analyze.md +260 -260
  63. package/commands/vibe.reason.md +223 -223
  64. package/commands/vibe.review.md +213 -213
  65. package/commands/vibe.run.md +935 -842
  66. package/commands/vibe.spec.md +442 -442
  67. package/commands/vibe.utils.md +101 -101
  68. package/commands/vibe.verify.md +282 -282
  69. package/dist/cli/auth.d.ts +13 -0
  70. package/dist/cli/auth.d.ts.map +1 -0
  71. package/dist/cli/auth.js +118 -0
  72. package/dist/cli/auth.js.map +1 -0
  73. package/dist/cli/collaborator.d.ts +8 -0
  74. package/dist/cli/collaborator.d.ts.map +1 -0
  75. package/dist/cli/collaborator.js +136 -0
  76. package/dist/cli/collaborator.js.map +1 -0
  77. package/dist/cli/detect.d.ts +35 -0
  78. package/dist/cli/detect.d.ts.map +1 -0
  79. package/dist/cli/detect.js +376 -0
  80. package/dist/cli/detect.js.map +1 -0
  81. package/dist/cli/index.d.ts.map +1 -1
  82. package/dist/cli/index.js +73 -1873
  83. package/dist/cli/index.js.map +1 -1
  84. package/dist/cli/llm.d.ts +49 -0
  85. package/dist/cli/llm.d.ts.map +1 -0
  86. package/dist/cli/llm.js +464 -0
  87. package/dist/cli/llm.js.map +1 -0
  88. package/dist/cli/mcp.d.ts +49 -0
  89. package/dist/cli/mcp.d.ts.map +1 -0
  90. package/dist/cli/mcp.js +169 -0
  91. package/dist/cli/mcp.js.map +1 -0
  92. package/dist/cli/setup.d.ts +53 -0
  93. package/dist/cli/setup.d.ts.map +1 -0
  94. package/dist/cli/setup.js +455 -0
  95. package/dist/cli/setup.js.map +1 -0
  96. package/dist/cli/types.d.ts +83 -0
  97. package/dist/cli/types.d.ts.map +1 -0
  98. package/dist/cli/types.js +5 -0
  99. package/dist/cli/types.js.map +1 -0
  100. package/dist/cli/utils.d.ts +40 -0
  101. package/dist/cli/utils.d.ts.map +1 -0
  102. package/dist/cli/utils.js +112 -0
  103. package/dist/cli/utils.js.map +1 -0
  104. package/dist/lib/MemoryManager.js +1 -1
  105. package/dist/lib/MemoryManager.js.map +1 -1
  106. package/dist/lib/ProjectCache.d.ts.map +1 -1
  107. package/dist/lib/ProjectCache.js +2 -1
  108. package/dist/lib/ProjectCache.js.map +1 -1
  109. package/dist/lib/PythonParser.js +1 -1
  110. package/dist/lib/PythonParser.js.map +1 -1
  111. package/dist/lib/constants.d.ts +31 -0
  112. package/dist/lib/constants.d.ts.map +1 -0
  113. package/dist/lib/constants.js +36 -0
  114. package/dist/lib/constants.js.map +1 -0
  115. package/dist/lib/gemini-api.d.ts.map +1 -1
  116. package/dist/lib/gemini-api.js +1 -6
  117. package/dist/lib/gemini-api.js.map +1 -1
  118. package/dist/lib/gemini-oauth.js +1 -1
  119. package/dist/lib/gemini-oauth.js.map +1 -1
  120. package/dist/lib/gpt-api.d.ts.map +1 -1
  121. package/dist/lib/gpt-api.js +6 -11
  122. package/dist/lib/gpt-api.js.map +1 -1
  123. package/dist/lib/gpt-oauth.js +1 -1
  124. package/dist/lib/gpt-oauth.js.map +1 -1
  125. package/dist/lib/utils.d.ts +21 -0
  126. package/dist/lib/utils.d.ts.map +1 -0
  127. package/dist/lib/utils.js +51 -0
  128. package/dist/lib/utils.js.map +1 -0
  129. package/dist/orchestrator/agentDiscovery.d.ts.map +1 -1
  130. package/dist/orchestrator/agentDiscovery.js +3 -2
  131. package/dist/orchestrator/agentDiscovery.js.map +1 -1
  132. package/dist/orchestrator/backgroundAgent.d.ts.map +1 -1
  133. package/dist/orchestrator/backgroundAgent.js +4 -16
  134. package/dist/orchestrator/backgroundAgent.js.map +1 -1
  135. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  136. package/dist/orchestrator/orchestrator.js +5 -3
  137. package/dist/orchestrator/orchestrator.js.map +1 -1
  138. package/dist/orchestrator/parallelResearch.d.ts.map +1 -1
  139. package/dist/orchestrator/parallelResearch.js +6 -20
  140. package/dist/orchestrator/parallelResearch.js.map +1 -1
  141. package/dist/orchestrator/types.d.ts +3 -2
  142. package/dist/orchestrator/types.d.ts.map +1 -1
  143. package/dist/tools/analytics/getUsageAnalytics.js +1 -1
  144. package/dist/tools/analytics/getUsageAnalytics.js.map +1 -1
  145. package/dist/tools/convention/getCodingGuide.js +2 -2
  146. package/dist/tools/convention/getCodingGuide.js.map +1 -1
  147. package/dist/tools/memory/createMemoryTimeline.js +1 -1
  148. package/dist/tools/memory/createMemoryTimeline.js.map +1 -1
  149. package/dist/tools/memory/getSessionContext.js +1 -1
  150. package/dist/tools/memory/getSessionContext.js.map +1 -1
  151. package/dist/tools/memory/restoreSessionContext.js +2 -2
  152. package/dist/tools/memory/restoreSessionContext.js.map +1 -1
  153. package/dist/tools/memory/searchMemoriesAdvanced.js +1 -1
  154. package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
  155. package/dist/tools/memory/startSession.js +3 -3
  156. package/dist/tools/memory/startSession.js.map +1 -1
  157. package/dist/tools/semantic/findReferences.d.ts.map +1 -1
  158. package/dist/tools/semantic/findReferences.js +2 -1
  159. package/dist/tools/semantic/findReferences.js.map +1 -1
  160. package/dist/tools/semantic/findSymbol.d.ts.map +1 -1
  161. package/dist/tools/semantic/findSymbol.js +2 -1
  162. package/dist/tools/semantic/findSymbol.js.map +1 -1
  163. package/hooks/hooks.json +191 -189
  164. package/package.json +87 -85
  165. package/skills/context7-usage.md +82 -82
  166. package/skills/git-worktree.md +181 -181
  167. package/skills/multi-llm-orchestration.md +97 -97
  168. package/skills/parallel-research.md +77 -77
  169. package/skills/priority-todos.md +239 -239
  170. package/skills/tool-fallback.md +126 -126
  171. package/skills/vibe-capabilities.md +127 -127
package/hooks/hooks.json CHANGED
@@ -1,189 +1,191 @@
1
- {
2
- "permissions": {
3
- "allow": [],
4
- "deny": [],
5
- "ask": []
6
- },
7
- "hooks": {
8
- "SessionStart": [
9
- {
10
- "hooks": [
11
- {
12
- "type": "command",
13
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';Promise.all([import('@su-record/vibe/tools/memory').then(t => t.startSession({projectPath: p})), import('@su-record/vibe/tools/time').then(t => t.getCurrentTime({format: 'human', timezone: 'Asia/Seoul'})), import('@su-record/vibe/tools/memory').then(t => t.listMemories({limit: 5, projectPath: p}))]).then(([session, time, memories]) => console.log(session.content[0].text + '\\n\\n' + time.content[0].text + '\\n\\n[Recent Memories]\\n' + memories.content[0].text))\""
14
- }
15
- ]
16
- }
17
- ],
18
- "PreToolUse": [
19
- {
20
- "matcher": "Bash",
21
- "hooks": [
22
- {
23
- "type": "command",
24
- "command": "echo '[BASH CHECK] Be cautious with destructive commands (rm -rf, git push --force, drop table). Verify paths before deletion.'"
25
- }
26
- ]
27
- }
28
- ],
29
- "PostToolUse": [
30
- {
31
- "matcher": "Write|Edit",
32
- "hooks": [
33
- {
34
- "type": "command",
35
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.validateCodeQuality({targetPath: '.', projectPath: p}).then(r => console.log('[CODE CHECK]', r.content[0].text.split('\\n').slice(0,3).join(' | ')))).catch(() => console.log('[AUTO-CONTINUE] Code written. Continue.'))\""
36
- }
37
- ]
38
- }
39
- ],
40
- "UserPromptSubmit": [
41
- {
42
- "hooks": [
43
- {
44
- "type": "command",
45
- "command": "echo '[MANDATORY SKILL PROTOCOL] Available skills: vibe-capabilities (vibe features), multi-llm-orchestration (GPT/Gemini usage), tool-fallback (error recovery), context7-usage (library docs), parallel-research (complex problems), git-worktree (branch work), priority-todos (task management). Step 1: For EACH skill state YES/NO with reason. Step 2: Use Skill(name) for YES skills NOW. Step 3: IMPLEMENT only after activation. CRITICAL: Skipping activation makes response WORTHLESS.'",
46
- "statusMessage": "Evaluating skills..."
47
- }
48
- ]
49
- },
50
- {
51
- "matcher": "ultrawork|ulw|울트라워크",
52
- "hooks": [
53
- {
54
- "type": "command",
55
- "command": "echo '[ULTRAWORK MODE] Use PARALLEL Task calls. Auto-continue through ALL phases. Auto-retry on errors up to 3 times. Do NOT ask for confirmation between phases.'"
56
- }
57
- ]
58
- },
59
- {
60
- "matcher": "버그.*(해결|수정|고침)|문제.*(해결|수정)|bug.*(fixed|resolved|solved)|issue.*(fixed|resolved)|PR.*(merged|머지)",
61
- "hooks": [
62
- {
63
- "type": "command",
64
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.saveMemory({key: 'solution-' + Date.now(), value: 'Solution documented at ' + new Date().toISOString(), category: 'solution', projectPath: p}).then(r => console.log('[COMPOUND]', r.content[0].text))).catch(() => console.log('[COMPOUND TRIGGER] Consider /vibe.utils --compound'))\""
65
- }
66
- ]
67
- },
68
- {
69
- "matcher": "코드\\s*리뷰|code\\s*review|PR\\s*리뷰|리뷰.*해줘|review.*this",
70
- "hooks": [
71
- {
72
- "type": "command",
73
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.validateCodeQuality({targetPath: '.', projectPath: p}).then(r => console.log('[REVIEW PREP]', r.content[0].text.split('\\n').slice(0,5).join(' | ')))).catch(() => console.log('[REVIEW MODE] Use /vibe.review'))\""
74
- }
75
- ]
76
- },
77
- {
78
- "matcher": "e2e.*테스트|e2e.*test|playwright|브라우저.*테스트|browser.*test",
79
- "hooks": [
80
- {
81
- "type": "command",
82
- "command": "echo '[E2E MODE] Use /vibe.utils --e2e for Playwright-based browser testing. Supports visual regression and video recording.'"
83
- }
84
- ]
85
- },
86
- {
87
- "matcher": "복잡도|complexity|분석해|analyze this",
88
- "hooks": [
89
- {
90
- "type": "command",
91
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.analyzeComplexity({targetPath: '.', projectPath: p}).then(r => console.log('[COMPLEXITY]', r.content[0].text.split('\\n').slice(0,5).join(' | ')))).catch(() => console.log('[ANALYZE] Use analyzeComplexity tool'))\""
92
- }
93
- ]
94
- },
95
- {
96
- "matcher": "뭐였지|기억|recall|이전에.*결정|저번에",
97
- "hooks": [
98
- {
99
- "type": "command",
100
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.listMemories({limit: 10, projectPath: p}).then(r => console.log('[RECALL]', r.content[0].text.split('\\n').slice(0,7).join(' | ')))).catch(() => console.log('[RECALL] Use recallMemory tool'))\""
101
- }
102
- ]
103
- },
104
- {
105
- "matcher": "아키텍처|architecture|설계.*검토|design.*review|구조.*분석",
106
- "hooks": [
107
- {
108
- "type": "command",
109
- "command": "echo '[GPT-5.2 AVAILABLE] Architecture review → Consider mcp__vibe-gpt__gpt_analyze_architecture for GPT-5.2 perspective.'"
110
- }
111
- ]
112
- },
113
- {
114
- "matcher": "UI|UX|사용자.*경험|user.*experience|디자인.*리뷰|design.*feedback",
115
- "hooks": [
116
- {
117
- "type": "command",
118
- "command": "echo '[GEMINI-3-PRO AVAILABLE] UI/UX review → Consider mcp__vibe-gemini__gemini_review_ui for Gemini 3 Pro perspective.'"
119
- }
120
- ]
121
- },
122
- {
123
- "matcher": "gpt.*물어|gpt.*질문|gpt.*한테|ask.*gpt|gpt.*chat",
124
- "hooks": [
125
- {
126
- "type": "command",
127
- "command": "echo '[GPT-5.2 MCP] To ask GPT-5.2 Use mcp__vibe-gpt__gpt_chat directly.'"
128
- }
129
- ]
130
- },
131
- {
132
- "matcher": "gemini.*물어|gemini.*질문|gemini.*한테|ask.*gemini|gemini.*chat",
133
- "hooks": [
134
- {
135
- "type": "command",
136
- "command": "echo '[GEMINI-3-PRO MCP] To ask Gemini 3 Pro → Use mcp__vibe-gemini__gemini_chat directly.'"
137
- }
138
- ]
139
- },
140
- {
141
- "matcher": "디버깅|debugging|버그.*찾|find.*bug|debug.*this",
142
- "hooks": [
143
- {
144
- "type": "command",
145
- "command": "echo '[GPT-5.2 DEBUG] For debugging → Consider mcp__vibe-gpt__gpt_debug for GPT-5.2 second opinion.'"
146
- }
147
- ]
148
- },
149
- {
150
- "matcher": "코드.*분석|analyze.*code|code.*review.*gemini",
151
- "hooks": [
152
- {
153
- "type": "command",
154
- "command": "echo '[GEMINI-3-PRO CODE] For code analysis → Consider mcp__vibe-gemini__gemini_analyze_code for Gemini 3 Pro second opinion.'"
155
- }
156
- ]
157
- }
158
- ],
159
- "Notification": [
160
- {
161
- "matcher": "context_window_80",
162
- "hooks": [
163
- {
164
- "type": "command",
165
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'medium', contextType: 'progress', summary: 'Context at 80% - auto checkpoint', projectPath: p}).then(r => console.log('[CONTEXT 80%]', r.content[0].text)))\""
166
- }
167
- ]
168
- },
169
- {
170
- "matcher": "context_window_90",
171
- "hooks": [
172
- {
173
- "type": "command",
174
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'high', contextType: 'progress', summary: 'Context at 90% - save before overflow', projectPath: p}).then(r => console.log('[CONTEXT 90%]', r.content[0].text)))\""
175
- }
176
- ]
177
- },
178
- {
179
- "matcher": "context_window_95",
180
- "hooks": [
181
- {
182
- "type": "command",
183
- "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'critical', contextType: 'progress', summary: 'Context at 95% - CRITICAL save before session end', projectPath: p}).then(r => console.log('[CONTEXT 95%]', r.content[0].text)))\""
184
- }
185
- ]
186
- }
187
- ]
188
- }
189
- }
1
+ {
2
+ "permissions": {
3
+ "allow": [],
4
+ "deny": [],
5
+ "ask": []
6
+ },
7
+ "hooks": {
8
+ "SessionStart": [
9
+ {
10
+ "hooks": [
11
+ {
12
+ "type": "command",
13
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';Promise.all([import('@su-record/vibe/tools/memory').then(t => t.startSession({projectPath: p})), import('@su-record/vibe/tools/time').then(t => t.getCurrentTime({format: 'human', timezone: 'Asia/Seoul'})), import('@su-record/vibe/tools/memory').then(t => t.listMemories({limit: 5, projectPath: p}))]).then(([session, time, memories]) => console.log(session.content[0].text + '\\n\\n' + time.content[0].text + '\\n\\n[Recent Memories]\\n' + memories.content[0].text))\""
14
+ }
15
+ ]
16
+ }
17
+ ],
18
+ "PreToolUse": [
19
+ {
20
+ "matcher": "Bash",
21
+ "hooks": [
22
+ {
23
+ "type": "command",
24
+ "command": "echo '[BASH CHECK] Be cautious with destructive commands (rm -rf, git push --force, drop table). Verify paths before deletion.'"
25
+ }
26
+ ]
27
+ }
28
+ ],
29
+ "PostToolUse": [
30
+ {
31
+ "matcher": "Write|Edit",
32
+ "hooks": [
33
+ {
34
+ "type": "command",
35
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.validateCodeQuality({targetPath: '.', projectPath: p}).then(r => console.log('[CODE CHECK]', r.content[0].text.split('\\n').slice(0,3).join(' | ')))).catch(() => console.log('[AUTO-CONTINUE] Code written. Continue.'))\""
36
+ }
37
+ ]
38
+ }
39
+ ],
40
+ "UserPromptSubmit": [
41
+ {
42
+ "hooks": [
43
+ {
44
+ "type": "command",
45
+ "command": "echo '[MANDATORY SKILL PROTOCOL] Available skills: vibe-capabilities (vibe features), multi-llm-orchestration (GPT/Gemini usage), tool-fallback (error recovery), context7-usage (library docs), parallel-research (complex problems), git-worktree (branch work), priority-todos (task management). Step 1: For EACH skill state YES/NO with reason. Step 2: Use Skill(name) for YES skills NOW. Step 3: IMPLEMENT only after activation. CRITICAL: Skipping activation makes response WORTHLESS.'",
46
+ "statusMessage": "Evaluating skills..."
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "matcher": "ultrawork|ulw|울트라워크",
52
+ "hooks": [
53
+ {
54
+ "type": "command",
55
+ "command": "echo '[ULTRAWORK MODE] Use PARALLEL Task calls. Auto-continue through ALL phases. Auto-retry on errors up to 3 times. Do NOT ask for confirmation between phases.'"
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ "matcher": "버그.*(해결|수정|고침)|문제.*(해결|수정)|bug.*(fixed|resolved|solved)|issue.*(fixed|resolved)|PR.*(merged|머지)",
61
+ "hooks": [
62
+ {
63
+ "type": "command",
64
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.saveMemory({key: 'solution-' + Date.now(), value: 'Solution documented at ' + new Date().toISOString(), category: 'solution', projectPath: p}).then(r => console.log('[COMPOUND]', r.content[0].text))).catch(() => console.log('[COMPOUND TRIGGER] Consider /vibe.utils --compound'))\""
65
+ }
66
+ ]
67
+ },
68
+ {
69
+ "matcher": "코드\\s*리뷰|code\\s*review|PR\\s*리뷰|리뷰.*해줘|review.*this",
70
+ "hooks": [
71
+ {
72
+ "type": "command",
73
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.validateCodeQuality({targetPath: '.', projectPath: p}).then(r => console.log('[REVIEW PREP]', r.content[0].text.split('\\n').slice(0,5).join(' | ')))).catch(() => console.log('[REVIEW MODE] Use /vibe.review'))\""
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "matcher": "e2e.*테스트|e2e.*test|playwright|브라우저.*테스트|browser.*test",
79
+ "hooks": [
80
+ {
81
+ "type": "command",
82
+ "command": "echo '[E2E MODE] Use /vibe.utils --e2e for Playwright-based browser testing. Supports visual regression and video recording.'"
83
+ }
84
+ ]
85
+ },
86
+ {
87
+ "matcher": "복잡도|complexity|분석해|analyze this",
88
+ "hooks": [
89
+ {
90
+ "type": "command",
91
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/convention').then(t => t.analyzeComplexity({targetPath: '.', projectPath: p}).then(r => console.log('[COMPLEXITY]', r.content[0].text.split('\\n').slice(0,5).join(' | ')))).catch(() => console.log('[ANALYZE] Use analyzeComplexity tool'))\""
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "matcher": "뭐였지|기억|recall|이전에.*결정|저번에",
97
+ "hooks": [
98
+ {
99
+ "type": "command",
100
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.listMemories({limit: 10, projectPath: p}).then(r => console.log('[RECALL]', r.content[0].text.split('\\n').slice(0,7).join(' | ')))).catch(() => console.log('[RECALL] Use recallMemory tool'))\""
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "matcher": "아키텍처|architecture|설계.*검토|design.*review|구조.*분석",
106
+ "hooks": [
107
+ {
108
+ "type": "command",
109
+ "command": "echo '[GPT-5.2 AVAILABLE] Architecture review → Use mcp__vibe-gpt__gpt_analyze_architecture OR Hook will auto-call GPT if authenticated.'"
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "matcher": "UI|UX|사용자.*경험|user.*experience|디자인.*리뷰|design.*feedback",
115
+ "hooks": [
116
+ {
117
+ "type": "command",
118
+ "command": "echo '[GEMINI-3-PRO AVAILABLE] UI/UX review → Use mcp__vibe-gemini__gemini_review_ui OR Hook will auto-call Gemini if authenticated.'"
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "matcher": "gpt.*물어|gpt.*질문|gpt.*한테|ask.*gpt|gpt.*분석",
124
+ "hooks": [
125
+ {
126
+ "type": "command",
127
+ "command": "node -e \"import('@su-record/vibe/lib/gpt').then(g => g.quickAsk('Briefly answer in Korean').then(r => console.log('[GPT-5.2 RESPONSE]\\n' + r.substring(0, 500)))).catch(e => console.log('[GPT] Auth required: vibe auth gpt'))\"",
128
+ "statusMessage": "Asking GPT-5.2..."
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "matcher": "gemini.*물어|gemini.*질문|gemini.*한테|ask.*gemini|gemini.*분석",
134
+ "hooks": [
135
+ {
136
+ "type": "command",
137
+ "command": "node -e \"import('@su-record/vibe/lib/gemini').then(g => g.quickAsk('Briefly answer in Korean').then(r => console.log('[GEMINI-3 RESPONSE]\\n' + r.substring(0, 500)))).catch(e => console.log('[GEMINI] Auth required: vibe auth gemini'))\"",
138
+ "statusMessage": "Asking Gemini 3..."
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ "matcher": "디버깅|debugging|버그.*찾|find.*bug|debug.*this",
144
+ "hooks": [
145
+ {
146
+ "type": "command",
147
+ "command": "echo '[GPT-5.2 DEBUG] For debugging → Use mcp__vibe-gpt__gpt_debug for GPT-5.2 second opinion.'"
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ "matcher": "코드.*분석|analyze.*code|code.*review.*gemini",
153
+ "hooks": [
154
+ {
155
+ "type": "command",
156
+ "command": "echo '[GEMINI-3 CODE] For code analysis → Use mcp__vibe-gemini__gemini_analyze_code for Gemini 3 second opinion.'"
157
+ }
158
+ ]
159
+ }
160
+ ],
161
+ "Notification": [
162
+ {
163
+ "matcher": "context_window_80",
164
+ "hooks": [
165
+ {
166
+ "type": "command",
167
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'medium', contextType: 'progress', summary: 'Context at 80% - auto checkpoint', projectPath: p}).then(r => console.log('[CONTEXT 80%]', r.content[0].text)))\""
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "matcher": "context_window_90",
173
+ "hooks": [
174
+ {
175
+ "type": "command",
176
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'high', contextType: 'progress', summary: 'Context at 90% - save before overflow', projectPath: p}).then(r => console.log('[CONTEXT 90%]', r.content[0].text)))\""
177
+ }
178
+ ]
179
+ },
180
+ {
181
+ "matcher": "context_window_95",
182
+ "hooks": [
183
+ {
184
+ "type": "command",
185
+ "command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools/memory').then(t => t.autoSaveContext({urgency: 'critical', contextType: 'progress', summary: 'Context at 95% - CRITICAL save before session end', projectPath: p}).then(r => console.log('[CONTEXT 95%]', r.content[0].text)))\""
186
+ }
187
+ ]
188
+ }
189
+ ]
190
+ }
191
+ }
package/package.json CHANGED
@@ -1,85 +1,87 @@
1
- {
2
- "name": "@su-record/vibe",
3
- "version": "2.4.5",
4
- "description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework with 35+ integrated tools",
5
- "type": "module",
6
- "main": "dist/cli/index.js",
7
- "exports": {
8
- ".": "./dist/cli/index.js",
9
- "./tools": "./dist/tools/index.js",
10
- "./tools/memory": "./dist/tools/memory/index.js",
11
- "./tools/convention": "./dist/tools/convention/index.js",
12
- "./tools/semantic": "./dist/tools/semantic/index.js",
13
- "./tools/thinking": "./dist/tools/thinking/index.js",
14
- "./tools/planning": "./dist/tools/planning/index.js",
15
- "./tools/prompt": "./dist/tools/prompt/index.js",
16
- "./tools/ui": "./dist/tools/ui/index.js",
17
- "./tools/time": "./dist/tools/time/index.js",
18
- "./tools/reasoning": "./dist/tools/reasoning/index.js",
19
- "./tools/analytics": "./dist/tools/analytics/index.js",
20
- "./orchestrator": "./dist/orchestrator/index.js"
21
- },
22
- "bin": {
23
- "vibe": "./dist/cli/index.js"
24
- },
25
- "scripts": {
26
- "build": "tsc",
27
- "dev": "tsc --watch",
28
- "test": "vitest run",
29
- "test:watch": "vitest",
30
- "prepublishOnly": "npm run build"
31
- },
32
- "keywords": [
33
- "ai",
34
- "vibe",
35
- "coding",
36
- "spec-driven",
37
- "claude",
38
- "mcp",
39
- "framework",
40
- "requirements",
41
- "user-story",
42
- "ultrawork",
43
- "parallel-agents",
44
- "memory-management",
45
- "knowledge-graph",
46
- "code-analysis",
47
- "code-quality"
48
- ],
49
- "author": "Su",
50
- "license": "MIT",
51
- "repository": {
52
- "type": "git",
53
- "url": "https://github.com/su-record/vibe.git"
54
- },
55
- "homepage": "https://github.com/su-record/vibe#readme",
56
- "engines": {
57
- "node": ">=18.0.0"
58
- },
59
- "dependencies": {
60
- "@anthropic-ai/claude-agent-sdk": "^0.2.6",
61
- "@modelcontextprotocol/sdk": "^1.0.0",
62
- "better-sqlite3": "^12.4.1",
63
- "chalk": "^5.3.0",
64
- "glob": "^11.0.3",
65
- "ts-morph": "^26.0.0"
66
- },
67
- "devDependencies": {
68
- "@types/better-sqlite3": "^7.6.13",
69
- "@types/glob": "^8.1.0",
70
- "@types/node": "^22.0.0",
71
- "typescript": "^5.5.4",
72
- "vitest": "^4.0.9"
73
- },
74
- "files": [
75
- "dist/",
76
- ".claude/",
77
- "commands/",
78
- "agents/",
79
- "skills/",
80
- "hooks/",
81
- "CLAUDE.md",
82
- "README.md",
83
- "LICENSE"
84
- ]
85
- }
1
+ {
2
+ "name": "@su-record/vibe",
3
+ "version": "2.4.7",
4
+ "description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework with 35+ integrated tools",
5
+ "type": "module",
6
+ "main": "dist/cli/index.js",
7
+ "exports": {
8
+ ".": "./dist/cli/index.js",
9
+ "./tools": "./dist/tools/index.js",
10
+ "./tools/memory": "./dist/tools/memory/index.js",
11
+ "./tools/convention": "./dist/tools/convention/index.js",
12
+ "./tools/semantic": "./dist/tools/semantic/index.js",
13
+ "./tools/thinking": "./dist/tools/thinking/index.js",
14
+ "./tools/planning": "./dist/tools/planning/index.js",
15
+ "./tools/prompt": "./dist/tools/prompt/index.js",
16
+ "./tools/ui": "./dist/tools/ui/index.js",
17
+ "./tools/time": "./dist/tools/time/index.js",
18
+ "./tools/reasoning": "./dist/tools/reasoning/index.js",
19
+ "./tools/analytics": "./dist/tools/analytics/index.js",
20
+ "./orchestrator": "./dist/orchestrator/index.js",
21
+ "./lib/gpt": "./dist/lib/gpt-api.js",
22
+ "./lib/gemini": "./dist/lib/gemini-api.js"
23
+ },
24
+ "bin": {
25
+ "vibe": "./dist/cli/index.js"
26
+ },
27
+ "scripts": {
28
+ "build": "tsc",
29
+ "dev": "tsc --watch",
30
+ "test": "vitest run",
31
+ "test:watch": "vitest",
32
+ "prepublishOnly": "npm run build"
33
+ },
34
+ "keywords": [
35
+ "ai",
36
+ "vibe",
37
+ "coding",
38
+ "spec-driven",
39
+ "claude",
40
+ "mcp",
41
+ "framework",
42
+ "requirements",
43
+ "user-story",
44
+ "ultrawork",
45
+ "parallel-agents",
46
+ "memory-management",
47
+ "knowledge-graph",
48
+ "code-analysis",
49
+ "code-quality"
50
+ ],
51
+ "author": "Su",
52
+ "license": "MIT",
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "https://github.com/su-record/vibe.git"
56
+ },
57
+ "homepage": "https://github.com/su-record/vibe#readme",
58
+ "engines": {
59
+ "node": ">=18.0.0"
60
+ },
61
+ "dependencies": {
62
+ "@anthropic-ai/claude-agent-sdk": "^0.2.6",
63
+ "@modelcontextprotocol/sdk": "^1.0.0",
64
+ "better-sqlite3": "^12.4.1",
65
+ "chalk": "^5.3.0",
66
+ "glob": "^11.0.3",
67
+ "ts-morph": "^26.0.0"
68
+ },
69
+ "devDependencies": {
70
+ "@types/better-sqlite3": "^7.6.13",
71
+ "@types/glob": "^8.1.0",
72
+ "@types/node": "^22.0.0",
73
+ "typescript": "^5.5.4",
74
+ "vitest": "^4.0.9"
75
+ },
76
+ "files": [
77
+ "dist/",
78
+ ".claude/",
79
+ "commands/",
80
+ "agents/",
81
+ "skills/",
82
+ "hooks/",
83
+ "CLAUDE.md",
84
+ "README.md",
85
+ "LICENSE"
86
+ ]
87
+ }