@su-record/vibe 2.5.15 → 2.5.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/CLAUDE.md +519 -683
  2. package/LICENSE +21 -21
  3. package/README.md +262 -262
  4. package/agents/architect-low.md +41 -41
  5. package/agents/architect-medium.md +59 -59
  6. package/agents/architect.md +80 -80
  7. package/agents/build-error-resolver.md +115 -115
  8. package/agents/compounder.md +261 -261
  9. package/agents/diagrammer.md +178 -178
  10. package/agents/e2e-tester.md +266 -266
  11. package/agents/explorer-low.md +42 -42
  12. package/agents/explorer-medium.md +59 -59
  13. package/agents/explorer.md +48 -48
  14. package/agents/implementer-low.md +43 -43
  15. package/agents/implementer-medium.md +52 -52
  16. package/agents/implementer.md +54 -54
  17. package/agents/refactor-cleaner.md +143 -143
  18. package/agents/research/best-practices-agent.md +199 -189
  19. package/agents/research/codebase-patterns-agent.md +157 -147
  20. package/agents/research/framework-docs-agent.md +188 -178
  21. package/agents/research/security-advisory-agent.md +213 -203
  22. package/agents/review/architecture-reviewer.md +107 -107
  23. package/agents/review/complexity-reviewer.md +116 -116
  24. package/agents/review/data-integrity-reviewer.md +88 -88
  25. package/agents/review/git-history-reviewer.md +103 -103
  26. package/agents/review/performance-reviewer.md +86 -86
  27. package/agents/review/python-reviewer.md +150 -150
  28. package/agents/review/rails-reviewer.md +139 -139
  29. package/agents/review/react-reviewer.md +144 -144
  30. package/agents/review/security-reviewer.md +80 -80
  31. package/agents/review/simplicity-reviewer.md +140 -140
  32. package/agents/review/test-coverage-reviewer.md +116 -116
  33. package/agents/review/typescript-reviewer.md +127 -127
  34. package/agents/searcher.md +54 -54
  35. package/agents/simplifier.md +120 -120
  36. package/agents/tester.md +49 -49
  37. package/agents/ui-previewer.md +129 -129
  38. package/commands/vibe.analyze.md +356 -356
  39. package/commands/vibe.reason.md +329 -329
  40. package/commands/vibe.review.md +326 -326
  41. package/commands/vibe.run.md +1247 -1117
  42. package/commands/vibe.spec.md +1074 -1058
  43. package/commands/vibe.utils.md +353 -353
  44. package/commands/vibe.verify.md +375 -375
  45. package/dist/cli/collaborator.js +52 -52
  46. package/dist/cli/detect.js +32 -32
  47. package/dist/cli/hud.d.ts +33 -0
  48. package/dist/cli/hud.d.ts.map +1 -0
  49. package/dist/cli/hud.js +247 -0
  50. package/dist/cli/hud.js.map +1 -0
  51. package/dist/cli/index.d.ts +1 -0
  52. package/dist/cli/index.d.ts.map +1 -1
  53. package/dist/cli/index.js +173 -108
  54. package/dist/cli/index.js.map +1 -1
  55. package/dist/cli/llm.js +144 -144
  56. package/dist/cli/setup/ProjectSetup.js +1 -1
  57. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  58. package/dist/lib/DeepInit.js +24 -24
  59. package/dist/lib/FrameworkDetector.d.ts +56 -0
  60. package/dist/lib/FrameworkDetector.d.ts.map +1 -0
  61. package/dist/lib/FrameworkDetector.js +287 -0
  62. package/dist/lib/FrameworkDetector.js.map +1 -0
  63. package/dist/lib/IterationTracker.js +11 -11
  64. package/dist/lib/ProgressTracker.d.ts +68 -0
  65. package/dist/lib/ProgressTracker.d.ts.map +1 -0
  66. package/dist/lib/ProgressTracker.js +211 -0
  67. package/dist/lib/ProgressTracker.js.map +1 -0
  68. package/dist/lib/PythonParser.js +108 -108
  69. package/dist/lib/RuleBuildSystem.d.ts +117 -0
  70. package/dist/lib/RuleBuildSystem.d.ts.map +1 -0
  71. package/dist/lib/RuleBuildSystem.js +402 -0
  72. package/dist/lib/RuleBuildSystem.js.map +1 -0
  73. package/dist/lib/SkillFrontmatter.js +28 -28
  74. package/dist/lib/SkillQualityGate.js +9 -9
  75. package/dist/lib/SkillRepository.js +159 -159
  76. package/dist/lib/UltraQA.js +77 -77
  77. package/dist/lib/gpt-api.js +4 -4
  78. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  79. package/dist/lib/memory/MemorySearch.js +20 -20
  80. package/dist/lib/memory/MemoryStorage.js +64 -64
  81. package/dist/orchestrator/AgentManager.js +12 -12
  82. package/dist/orchestrator/MultiLlmResearch.js +8 -8
  83. package/dist/orchestrator/SmartRouter.js +11 -11
  84. package/dist/orchestrator/parallelResearch.js +24 -24
  85. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  86. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  87. package/dist/tools/index.d.ts +4 -0
  88. package/dist/tools/index.d.ts.map +1 -1
  89. package/dist/tools/index.js +4 -0
  90. package/dist/tools/index.js.map +1 -1
  91. package/dist/tools/memory/startSession.d.ts.map +1 -1
  92. package/dist/tools/memory/startSession.js +104 -0
  93. package/dist/tools/memory/startSession.js.map +1 -1
  94. package/hooks/hooks.json +222 -222
  95. package/hooks/scripts/code-check.js +22 -22
  96. package/hooks/scripts/code-review.js +22 -22
  97. package/hooks/scripts/complexity.js +22 -22
  98. package/hooks/scripts/compound.js +23 -23
  99. package/hooks/scripts/context-save.js +33 -33
  100. package/hooks/scripts/generate-brand-assets.js +472 -472
  101. package/hooks/scripts/hud-multiline.js +262 -262
  102. package/hooks/scripts/hud-status.js +291 -291
  103. package/hooks/scripts/keyword-detector.js +214 -214
  104. package/hooks/scripts/llm-orchestrate.js +171 -171
  105. package/hooks/scripts/post-edit.js +97 -97
  106. package/hooks/scripts/post-tool-verify.js +210 -210
  107. package/hooks/scripts/pre-tool-guard.js +125 -125
  108. package/hooks/scripts/recall.js +22 -22
  109. package/hooks/scripts/session-start.js +30 -30
  110. package/hooks/scripts/skill-injector.js +191 -191
  111. package/hooks/scripts/utils.js +97 -97
  112. package/languages/csharp-unity.md +515 -515
  113. package/languages/gdscript-godot.md +470 -470
  114. package/languages/ruby-rails.md +489 -489
  115. package/languages/typescript-angular.md +433 -433
  116. package/languages/typescript-astro.md +416 -416
  117. package/languages/typescript-electron.md +406 -406
  118. package/languages/typescript-nestjs.md +524 -524
  119. package/languages/typescript-svelte.md +407 -407
  120. package/languages/typescript-tauri.md +365 -365
  121. package/package.json +83 -83
  122. package/skills/brand-assets.md +141 -141
  123. package/skills/commerce-patterns.md +361 -361
  124. package/skills/context7-usage.md +102 -102
  125. package/skills/e2e-commerce.md +304 -304
  126. package/skills/frontend-design.md +92 -92
  127. package/skills/git-worktree.md +181 -181
  128. package/skills/parallel-research.md +77 -77
  129. package/skills/priority-todos.md +239 -239
  130. package/skills/seo-checklist.md +244 -244
  131. package/skills/tool-fallback.md +190 -190
  132. package/skills/vibe-capabilities.md +161 -161
  133. package/vibe/constitution.md +227 -227
  134. package/vibe/rules/core/communication-guide.md +98 -98
  135. package/vibe/rules/core/development-philosophy.md +52 -52
  136. package/vibe/rules/core/quick-start.md +102 -102
  137. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  138. package/vibe/rules/quality/checklist.md +276 -276
  139. package/vibe/rules/quality/testing-strategy.md +440 -440
  140. package/vibe/rules/standards/anti-patterns.md +541 -541
  141. package/vibe/rules/standards/code-structure.md +291 -291
  142. package/vibe/rules/standards/complexity-metrics.md +313 -313
  143. package/vibe/rules/standards/naming-conventions.md +198 -198
  144. package/vibe/setup.sh +31 -31
  145. package/vibe/templates/constitution-template.md +252 -252
  146. package/vibe/templates/contract-backend-template.md +526 -526
  147. package/vibe/templates/contract-frontend-template.md +599 -599
  148. package/vibe/templates/feature-template.md +96 -96
  149. package/vibe/templates/spec-template.md +221 -221
  150. package/dist/cli/mcp.d.ts +0 -49
  151. package/dist/cli/mcp.d.ts.map +0 -1
  152. package/dist/cli/mcp.js +0 -169
  153. package/dist/cli/mcp.js.map +0 -1
  154. package/dist/lib/gemini-mcp.d.ts +0 -10
  155. package/dist/lib/gemini-mcp.d.ts.map +0 -1
  156. package/dist/lib/gemini-mcp.js +0 -353
  157. package/dist/lib/gemini-mcp.js.map +0 -1
  158. package/dist/lib/gpt-mcp.d.ts +0 -10
  159. package/dist/lib/gpt-mcp.d.ts.map +0 -1
  160. package/dist/lib/gpt-mcp.js +0 -352
  161. package/dist/lib/gpt-mcp.js.map +0 -1
  162. package/dist/tools/analytics/getUsageAnalytics.d.ts +0 -10
  163. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +0 -1
  164. package/dist/tools/analytics/getUsageAnalytics.js +0 -246
  165. package/dist/tools/analytics/getUsageAnalytics.js.map +0 -1
  166. package/dist/tools/analytics/index.d.ts +0 -5
  167. package/dist/tools/analytics/index.d.ts.map +0 -1
  168. package/dist/tools/analytics/index.js +0 -5
  169. package/dist/tools/analytics/index.js.map +0 -1
  170. package/dist/tools/convention/getCodingGuide.d.ts +0 -7
  171. package/dist/tools/convention/getCodingGuide.d.ts.map +0 -1
  172. package/dist/tools/convention/getCodingGuide.js +0 -69
  173. package/dist/tools/convention/getCodingGuide.js.map +0 -1
  174. package/dist/tools/planning/analyzeRequirements.d.ts +0 -9
  175. package/dist/tools/planning/analyzeRequirements.d.ts.map +0 -1
  176. package/dist/tools/planning/analyzeRequirements.js +0 -171
  177. package/dist/tools/planning/analyzeRequirements.js.map +0 -1
  178. package/dist/tools/planning/createUserStories.d.ts +0 -9
  179. package/dist/tools/planning/createUserStories.d.ts.map +0 -1
  180. package/dist/tools/planning/createUserStories.js +0 -124
  181. package/dist/tools/planning/createUserStories.js.map +0 -1
  182. package/dist/tools/planning/featureRoadmap.d.ts +0 -10
  183. package/dist/tools/planning/featureRoadmap.d.ts.map +0 -1
  184. package/dist/tools/planning/featureRoadmap.js +0 -207
  185. package/dist/tools/planning/featureRoadmap.js.map +0 -1
  186. package/dist/tools/planning/generatePrd.d.ts +0 -11
  187. package/dist/tools/planning/generatePrd.d.ts.map +0 -1
  188. package/dist/tools/planning/generatePrd.js +0 -161
  189. package/dist/tools/planning/generatePrd.js.map +0 -1
  190. package/dist/tools/planning/index.d.ts +0 -8
  191. package/dist/tools/planning/index.d.ts.map +0 -1
  192. package/dist/tools/planning/index.js +0 -8
  193. package/dist/tools/planning/index.js.map +0 -1
  194. package/dist/tools/prompt/analyzePrompt.d.ts +0 -7
  195. package/dist/tools/prompt/analyzePrompt.d.ts.map +0 -1
  196. package/dist/tools/prompt/analyzePrompt.js +0 -150
  197. package/dist/tools/prompt/analyzePrompt.js.map +0 -1
  198. package/dist/tools/prompt/enhancePrompt.d.ts +0 -8
  199. package/dist/tools/prompt/enhancePrompt.d.ts.map +0 -1
  200. package/dist/tools/prompt/enhancePrompt.js +0 -110
  201. package/dist/tools/prompt/enhancePrompt.js.map +0 -1
  202. package/dist/tools/prompt/enhancePromptGemini.d.ts +0 -8
  203. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +0 -1
  204. package/dist/tools/prompt/enhancePromptGemini.js +0 -332
  205. package/dist/tools/prompt/enhancePromptGemini.js.map +0 -1
  206. package/dist/tools/prompt/index.d.ts +0 -7
  207. package/dist/tools/prompt/index.d.ts.map +0 -1
  208. package/dist/tools/prompt/index.js +0 -7
  209. package/dist/tools/prompt/index.js.map +0 -1
  210. package/dist/tools/reasoning/applyReasoningFramework.d.ts +0 -8
  211. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +0 -1
  212. package/dist/tools/reasoning/applyReasoningFramework.js +0 -266
  213. package/dist/tools/reasoning/applyReasoningFramework.js.map +0 -1
  214. package/dist/tools/reasoning/index.d.ts +0 -5
  215. package/dist/tools/reasoning/index.d.ts.map +0 -1
  216. package/dist/tools/reasoning/index.js +0 -5
  217. package/dist/tools/reasoning/index.js.map +0 -1
  218. package/dist/tools/thinking/analyzeProblem.d.ts +0 -7
  219. package/dist/tools/thinking/analyzeProblem.d.ts.map +0 -1
  220. package/dist/tools/thinking/analyzeProblem.js +0 -55
  221. package/dist/tools/thinking/analyzeProblem.js.map +0 -1
  222. package/dist/tools/thinking/breakDownProblem.d.ts +0 -8
  223. package/dist/tools/thinking/breakDownProblem.d.ts.map +0 -1
  224. package/dist/tools/thinking/breakDownProblem.js +0 -145
  225. package/dist/tools/thinking/breakDownProblem.js.map +0 -1
  226. package/dist/tools/thinking/createThinkingChain.d.ts +0 -7
  227. package/dist/tools/thinking/createThinkingChain.d.ts.map +0 -1
  228. package/dist/tools/thinking/createThinkingChain.js +0 -44
  229. package/dist/tools/thinking/createThinkingChain.js.map +0 -1
  230. package/dist/tools/thinking/formatAsPlan.d.ts +0 -9
  231. package/dist/tools/thinking/formatAsPlan.d.ts.map +0 -1
  232. package/dist/tools/thinking/formatAsPlan.js +0 -78
  233. package/dist/tools/thinking/formatAsPlan.js.map +0 -1
  234. package/dist/tools/thinking/index.d.ts +0 -10
  235. package/dist/tools/thinking/index.d.ts.map +0 -1
  236. package/dist/tools/thinking/index.js +0 -10
  237. package/dist/tools/thinking/index.js.map +0 -1
  238. package/dist/tools/thinking/stepByStepAnalysis.d.ts +0 -8
  239. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +0 -1
  240. package/dist/tools/thinking/stepByStepAnalysis.js +0 -63
  241. package/dist/tools/thinking/stepByStepAnalysis.js.map +0 -1
  242. package/dist/tools/thinking/thinkAloudProcess.d.ts +0 -8
  243. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +0 -1
  244. package/dist/tools/thinking/thinkAloudProcess.js +0 -80
  245. package/dist/tools/thinking/thinkAloudProcess.js.map +0 -1
package/hooks/hooks.json CHANGED
@@ -1,222 +1,222 @@
1
- {
2
- "permissions": {
3
- "allow": [],
4
- "deny": [],
5
- "ask": []
6
- },
7
- "hooks": {
8
- "SessionStart": [
9
- {
10
- "hooks": [
11
- {
12
- "type": "command",
13
- "command": "node {{VIBE_PATH}}/hooks/scripts/session-start.js"
14
- }
15
- ]
16
- }
17
- ],
18
- "PreToolUse": [
19
- {
20
- "matcher": "Bash",
21
- "hooks": [
22
- {
23
- "type": "command",
24
- "command": "node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Bash"
25
- }
26
- ]
27
- },
28
- {
29
- "matcher": "Edit",
30
- "hooks": [
31
- {
32
- "type": "command",
33
- "command": "node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Edit"
34
- }
35
- ]
36
- },
37
- {
38
- "matcher": "Write",
39
- "hooks": [
40
- {
41
- "type": "command",
42
- "command": "node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Write"
43
- }
44
- ]
45
- }
46
- ],
47
- "PostToolUse": [
48
- {
49
- "matcher": "Write|Edit",
50
- "hooks": [
51
- {
52
- "type": "command",
53
- "command": "node {{VIBE_PATH}}/hooks/scripts/code-check.js"
54
- }
55
- ]
56
- },
57
- {
58
- "matcher": "Edit",
59
- "hooks": [
60
- {
61
- "type": "command",
62
- "command": "node {{VIBE_PATH}}/hooks/scripts/post-edit.js"
63
- }
64
- ]
65
- }
66
- ],
67
- "UserPromptSubmit": [
68
- {
69
- "matcher": ".*",
70
- "hooks": [
71
- {
72
- "type": "command",
73
- "command": "echo '[INTERRUPT RULE] If this message follows a user interrupt (Ctrl+C/Escape), the previous task is CANCELLED. Do NOT resume interrupted work. Respond ONLY to this new message.'"
74
- }
75
- ]
76
- },
77
- {
78
- "matcher": "ultrawork|ulw|울트라워크|ralph|ralplan",
79
- "hooks": [
80
- {
81
- "type": "command",
82
- "command": "node {{VIBE_PATH}}/hooks/scripts/keyword-detector.js"
83
- }
84
- ]
85
- },
86
- {
87
- "matcher": "버그.*(해결|수정|고침)|문제.*(해결|수정)|bug.*(fixed|resolved|solved)|issue.*(fixed|resolved)|PR.*(merged|머지)",
88
- "hooks": [
89
- {
90
- "type": "command",
91
- "command": "node {{VIBE_PATH}}/hooks/scripts/compound.js"
92
- }
93
- ]
94
- },
95
- {
96
- "matcher": "코드\\s*리뷰|code\\s*review|PR\\s*리뷰|리뷰.*해줘|review.*this",
97
- "hooks": [
98
- {
99
- "type": "command",
100
- "command": "node {{VIBE_PATH}}/hooks/scripts/code-review.js"
101
- }
102
- ]
103
- },
104
- {
105
- "matcher": "e2e.*테스트|e2e.*test|playwright|브라우저.*테스트|browser.*test",
106
- "hooks": [
107
- {
108
- "type": "command",
109
- "command": "echo '[E2E MODE] Use /vibe.utils --e2e for Playwright-based browser testing. Supports visual regression and video recording.'"
110
- }
111
- ]
112
- },
113
- {
114
- "matcher": "복잡도|complexity|분석해|analyze this",
115
- "hooks": [
116
- {
117
- "type": "command",
118
- "command": "node {{VIBE_PATH}}/hooks/scripts/complexity.js"
119
- }
120
- ]
121
- },
122
- {
123
- "matcher": "뭐였지|기억|recall|이전에.*결정|저번에|previous.*decision|what was",
124
- "hooks": [
125
- {
126
- "type": "command",
127
- "command": "node {{VIBE_PATH}}/hooks/scripts/recall.js"
128
- }
129
- ]
130
- },
131
- {
132
- "matcher": "아키텍처|architecture|설계.*검토|design.*review|구조.*분석|structure.*analysis",
133
- "hooks": [
134
- {
135
- "type": "command",
136
- "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gpt orchestrate \"You are a software architect. Analyze and review the architecture.\"",
137
- "statusMessage": "GPT analyzing architecture..."
138
- }
139
- ]
140
- },
141
- {
142
- "matcher": "UI|UX|사용자.*경험|user.*experience|디자인.*리뷰|design.*feedback",
143
- "hooks": [
144
- {
145
- "type": "command",
146
- "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gemini orchestrate \"You are a UI/UX expert. Analyze and provide feedback.\"",
147
- "statusMessage": "Gemini reviewing UI/UX..."
148
- }
149
- ]
150
- },
151
- {
152
- "matcher": "디버깅|debugging|버그.*찾|find.*bug|debug.*this",
153
- "hooks": [
154
- {
155
- "type": "command",
156
- "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gpt orchestrate \"You are a debugging expert. Find bugs and suggest fixes.\"",
157
- "statusMessage": "GPT debugging..."
158
- }
159
- ]
160
- },
161
- {
162
- "matcher": "코드.*분석|analyze.*code|code.*review",
163
- "hooks": [
164
- {
165
- "type": "command",
166
- "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gemini orchestrate \"You are a code analysis expert. Review and analyze the code.\"",
167
- "statusMessage": "Gemini analyzing code..."
168
- }
169
- ]
170
- },
171
- {
172
- "matcher": "^test-gpt",
173
- "hooks": [
174
- {
175
- "type": "command",
176
- "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gpt orchestrate \"You are a helpful assistant. Answer the user's question clearly and concisely.\"",
177
- "statusMessage": "Testing GPT..."
178
- }
179
- ]
180
- },
181
- {
182
- "matcher": "^test-gemini",
183
- "hooks": [
184
- {
185
- "type": "command",
186
- "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gemini orchestrate \"You are a helpful assistant. Answer the user's question clearly and concisely.\"",
187
- "statusMessage": "Testing Gemini..."
188
- }
189
- ]
190
- }
191
- ],
192
- "Notification": [
193
- {
194
- "matcher": "context_window_80",
195
- "hooks": [
196
- {
197
- "type": "command",
198
- "command": "node {{VIBE_PATH}}/hooks/scripts/context-save.js medium"
199
- }
200
- ]
201
- },
202
- {
203
- "matcher": "context_window_90",
204
- "hooks": [
205
- {
206
- "type": "command",
207
- "command": "node {{VIBE_PATH}}/hooks/scripts/context-save.js high"
208
- }
209
- ]
210
- },
211
- {
212
- "matcher": "context_window_95",
213
- "hooks": [
214
- {
215
- "type": "command",
216
- "command": "node {{VIBE_PATH}}/hooks/scripts/context-save.js critical"
217
- }
218
- ]
219
- }
220
- ]
221
- }
222
- }
1
+ {
2
+ "permissions": {
3
+ "allow": [],
4
+ "deny": [],
5
+ "ask": []
6
+ },
7
+ "hooks": {
8
+ "SessionStart": [
9
+ {
10
+ "hooks": [
11
+ {
12
+ "type": "command",
13
+ "command": "node {{VIBE_PATH}}/hooks/scripts/session-start.js"
14
+ }
15
+ ]
16
+ }
17
+ ],
18
+ "PreToolUse": [
19
+ {
20
+ "matcher": "Bash",
21
+ "hooks": [
22
+ {
23
+ "type": "command",
24
+ "command": "node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Bash"
25
+ }
26
+ ]
27
+ },
28
+ {
29
+ "matcher": "Edit",
30
+ "hooks": [
31
+ {
32
+ "type": "command",
33
+ "command": "node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Edit"
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "matcher": "Write",
39
+ "hooks": [
40
+ {
41
+ "type": "command",
42
+ "command": "node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Write"
43
+ }
44
+ ]
45
+ }
46
+ ],
47
+ "PostToolUse": [
48
+ {
49
+ "matcher": "Write|Edit",
50
+ "hooks": [
51
+ {
52
+ "type": "command",
53
+ "command": "node {{VIBE_PATH}}/hooks/scripts/code-check.js"
54
+ }
55
+ ]
56
+ },
57
+ {
58
+ "matcher": "Edit",
59
+ "hooks": [
60
+ {
61
+ "type": "command",
62
+ "command": "node {{VIBE_PATH}}/hooks/scripts/post-edit.js"
63
+ }
64
+ ]
65
+ }
66
+ ],
67
+ "UserPromptSubmit": [
68
+ {
69
+ "matcher": ".*",
70
+ "hooks": [
71
+ {
72
+ "type": "command",
73
+ "command": "echo '[INTERRUPT RULE] If this message follows a user interrupt (Ctrl+C/Escape), the previous task is CANCELLED. Do NOT resume interrupted work. Respond ONLY to this new message.'"
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "matcher": "ultrawork|ulw|울트라워크|ralph|ralplan",
79
+ "hooks": [
80
+ {
81
+ "type": "command",
82
+ "command": "node {{VIBE_PATH}}/hooks/scripts/keyword-detector.js"
83
+ }
84
+ ]
85
+ },
86
+ {
87
+ "matcher": "버그.*(해결|수정|고침)|문제.*(해결|수정)|bug.*(fixed|resolved|solved)|issue.*(fixed|resolved)|PR.*(merged|머지)",
88
+ "hooks": [
89
+ {
90
+ "type": "command",
91
+ "command": "node {{VIBE_PATH}}/hooks/scripts/compound.js"
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "matcher": "코드\\s*리뷰|code\\s*review|PR\\s*리뷰|리뷰.*해줘|review.*this",
97
+ "hooks": [
98
+ {
99
+ "type": "command",
100
+ "command": "node {{VIBE_PATH}}/hooks/scripts/code-review.js"
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "matcher": "e2e.*테스트|e2e.*test|playwright|브라우저.*테스트|browser.*test",
106
+ "hooks": [
107
+ {
108
+ "type": "command",
109
+ "command": "echo '[E2E MODE] Use /vibe.utils --e2e for Playwright-based browser testing. Supports visual regression and video recording.'"
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "matcher": "복잡도|complexity|분석해|analyze this",
115
+ "hooks": [
116
+ {
117
+ "type": "command",
118
+ "command": "node {{VIBE_PATH}}/hooks/scripts/complexity.js"
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "matcher": "뭐였지|기억|recall|이전에.*결정|저번에|previous.*decision|what was",
124
+ "hooks": [
125
+ {
126
+ "type": "command",
127
+ "command": "node {{VIBE_PATH}}/hooks/scripts/recall.js"
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "matcher": "아키텍처|architecture|설계.*검토|design.*review|구조.*분석|structure.*analysis",
133
+ "hooks": [
134
+ {
135
+ "type": "command",
136
+ "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gpt orchestrate \"You are a software architect. Analyze and review the architecture.\"",
137
+ "statusMessage": "GPT analyzing architecture..."
138
+ }
139
+ ]
140
+ },
141
+ {
142
+ "matcher": "UI|UX|사용자.*경험|user.*experience|디자인.*리뷰|design.*feedback",
143
+ "hooks": [
144
+ {
145
+ "type": "command",
146
+ "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gemini orchestrate \"You are a UI/UX expert. Analyze and provide feedback.\"",
147
+ "statusMessage": "Gemini reviewing UI/UX..."
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ "matcher": "디버깅|debugging|버그.*찾|find.*bug|debug.*this",
153
+ "hooks": [
154
+ {
155
+ "type": "command",
156
+ "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gpt orchestrate \"You are a debugging expert. Find bugs and suggest fixes.\"",
157
+ "statusMessage": "GPT debugging..."
158
+ }
159
+ ]
160
+ },
161
+ {
162
+ "matcher": "코드.*분석|analyze.*code|code.*review",
163
+ "hooks": [
164
+ {
165
+ "type": "command",
166
+ "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gemini orchestrate \"You are a code analysis expert. Review and analyze the code.\"",
167
+ "statusMessage": "Gemini analyzing code..."
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "matcher": "^test-gpt",
173
+ "hooks": [
174
+ {
175
+ "type": "command",
176
+ "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gpt orchestrate \"You are a helpful assistant. Answer the user's question clearly and concisely.\"",
177
+ "statusMessage": "Testing GPT..."
178
+ }
179
+ ]
180
+ },
181
+ {
182
+ "matcher": "^test-gemini",
183
+ "hooks": [
184
+ {
185
+ "type": "command",
186
+ "command": "node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gemini orchestrate \"You are a helpful assistant. Answer the user's question clearly and concisely.\"",
187
+ "statusMessage": "Testing Gemini..."
188
+ }
189
+ ]
190
+ }
191
+ ],
192
+ "Notification": [
193
+ {
194
+ "matcher": "context_window_80",
195
+ "hooks": [
196
+ {
197
+ "type": "command",
198
+ "command": "node {{VIBE_PATH}}/hooks/scripts/context-save.js medium"
199
+ }
200
+ ]
201
+ },
202
+ {
203
+ "matcher": "context_window_90",
204
+ "hooks": [
205
+ {
206
+ "type": "command",
207
+ "command": "node {{VIBE_PATH}}/hooks/scripts/context-save.js high"
208
+ }
209
+ ]
210
+ },
211
+ {
212
+ "matcher": "context_window_95",
213
+ "hooks": [
214
+ {
215
+ "type": "command",
216
+ "command": "node {{VIBE_PATH}}/hooks/scripts/context-save.js critical"
217
+ }
218
+ ]
219
+ }
220
+ ]
221
+ }
222
+ }
@@ -1,22 +1,22 @@
1
- /**
2
- * PostToolUse Hook - Write/Edit 후 코드 품질 검사
3
- */
4
- import { getToolsBaseUrl, PROJECT_DIR } from './utils.js';
5
-
6
- const BASE_URL = getToolsBaseUrl();
7
-
8
- async function main() {
9
- try {
10
- const module = await import(`${BASE_URL}convention/index.js`);
11
- const result = await module.validateCodeQuality({
12
- targetPath: '.',
13
- projectPath: PROJECT_DIR,
14
- });
15
- const lines = result.content[0].text.split('\n').slice(0, 3).join(' | ');
16
- console.log('[CODE CHECK]', lines);
17
- } catch {
18
- console.log('[AUTO-CONTINUE] Code written. Continue.');
19
- }
20
- }
21
-
22
- main();
1
+ /**
2
+ * PostToolUse Hook - Write/Edit 후 코드 품질 검사
3
+ */
4
+ import { getToolsBaseUrl, PROJECT_DIR } from './utils.js';
5
+
6
+ const BASE_URL = getToolsBaseUrl();
7
+
8
+ async function main() {
9
+ try {
10
+ const module = await import(`${BASE_URL}convention/index.js`);
11
+ const result = await module.validateCodeQuality({
12
+ targetPath: '.',
13
+ projectPath: PROJECT_DIR,
14
+ });
15
+ const lines = result.content[0].text.split('\n').slice(0, 3).join(' | ');
16
+ console.log('[CODE CHECK]', lines);
17
+ } catch {
18
+ console.log('[AUTO-CONTINUE] Code written. Continue.');
19
+ }
20
+ }
21
+
22
+ main();
@@ -1,22 +1,22 @@
1
- /**
2
- * UserPromptSubmit Hook - 코드 리뷰 요청 시 품질 검사
3
- */
4
- import { getToolsBaseUrl, PROJECT_DIR } from './utils.js';
5
-
6
- const BASE_URL = getToolsBaseUrl();
7
-
8
- async function main() {
9
- try {
10
- const module = await import(`${BASE_URL}convention/index.js`);
11
- const result = await module.validateCodeQuality({
12
- targetPath: '.',
13
- projectPath: PROJECT_DIR,
14
- });
15
- const lines = result.content[0].text.split('\n').slice(0, 5).join(' | ');
16
- console.log('[CODE REVIEW]', lines);
17
- } catch (e) {
18
- console.log('[CODE REVIEW] Error:', e.message);
19
- }
20
- }
21
-
22
- main();
1
+ /**
2
+ * UserPromptSubmit Hook - 코드 리뷰 요청 시 품질 검사
3
+ */
4
+ import { getToolsBaseUrl, PROJECT_DIR } from './utils.js';
5
+
6
+ const BASE_URL = getToolsBaseUrl();
7
+
8
+ async function main() {
9
+ try {
10
+ const module = await import(`${BASE_URL}convention/index.js`);
11
+ const result = await module.validateCodeQuality({
12
+ targetPath: '.',
13
+ projectPath: PROJECT_DIR,
14
+ });
15
+ const lines = result.content[0].text.split('\n').slice(0, 5).join(' | ');
16
+ console.log('[CODE REVIEW]', lines);
17
+ } catch (e) {
18
+ console.log('[CODE REVIEW] Error:', e.message);
19
+ }
20
+ }
21
+
22
+ main();
@@ -1,22 +1,22 @@
1
- /**
2
- * UserPromptSubmit Hook - 복잡도 분석
3
- */
4
- import { getToolsBaseUrl, PROJECT_DIR } from './utils.js';
5
-
6
- const BASE_URL = getToolsBaseUrl();
7
-
8
- async function main() {
9
- try {
10
- const module = await import(`${BASE_URL}convention/index.js`);
11
- const result = await module.analyzeComplexity({
12
- targetPath: '.',
13
- projectPath: PROJECT_DIR,
14
- });
15
- const lines = result.content[0].text.split('\n').slice(0, 5).join(' | ');
16
- console.log('[COMPLEXITY]', lines);
17
- } catch (e) {
18
- console.log('[COMPLEXITY] Error:', e.message);
19
- }
20
- }
21
-
22
- main();
1
+ /**
2
+ * UserPromptSubmit Hook - 복잡도 분석
3
+ */
4
+ import { getToolsBaseUrl, PROJECT_DIR } from './utils.js';
5
+
6
+ const BASE_URL = getToolsBaseUrl();
7
+
8
+ async function main() {
9
+ try {
10
+ const module = await import(`${BASE_URL}convention/index.js`);
11
+ const result = await module.analyzeComplexity({
12
+ targetPath: '.',
13
+ projectPath: PROJECT_DIR,
14
+ });
15
+ const lines = result.content[0].text.split('\n').slice(0, 5).join(' | ');
16
+ console.log('[COMPLEXITY]', lines);
17
+ } catch (e) {
18
+ console.log('[COMPLEXITY] Error:', e.message);
19
+ }
20
+ }
21
+
22
+ main();
@@ -1,23 +1,23 @@
1
- /**
2
- * UserPromptSubmit Hook - 버그 해결/PR 머지 시 솔루션 저장
3
- */
4
- import { getToolsBaseUrl, PROJECT_DIR } from './utils.js';
5
-
6
- const BASE_URL = getToolsBaseUrl();
7
-
8
- async function main() {
9
- try {
10
- const module = await import(`${BASE_URL}memory/index.js`);
11
- const result = await module.saveMemory({
12
- key: `solution-${Date.now()}`,
13
- value: `Solution documented at ${new Date().toISOString()}`,
14
- category: 'solution',
15
- projectPath: PROJECT_DIR,
16
- });
17
- console.log('[COMPOUND]', result.content[0].text);
18
- } catch (e) {
19
- console.log('[COMPOUND] ✗ Error:', e.message);
20
- }
21
- }
22
-
23
- main();
1
+ /**
2
+ * UserPromptSubmit Hook - 버그 해결/PR 머지 시 솔루션 저장
3
+ */
4
+ import { getToolsBaseUrl, PROJECT_DIR } from './utils.js';
5
+
6
+ const BASE_URL = getToolsBaseUrl();
7
+
8
+ async function main() {
9
+ try {
10
+ const module = await import(`${BASE_URL}memory/index.js`);
11
+ const result = await module.saveMemory({
12
+ key: `solution-${Date.now()}`,
13
+ value: `Solution documented at ${new Date().toISOString()}`,
14
+ category: 'solution',
15
+ projectPath: PROJECT_DIR,
16
+ });
17
+ console.log('[COMPOUND]', result.content[0].text);
18
+ } catch (e) {
19
+ console.log('[COMPOUND] ✗ Error:', e.message);
20
+ }
21
+ }
22
+
23
+ main();