@su-record/vibe 2.4.1 → 2.4.3
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.
- package/.claude/settings.json +13 -0
- package/.claude/settings.local.json +1 -8
- package/README.md +95 -748
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +18 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/tools/analytics/index.d.ts +5 -0
- package/dist/tools/analytics/index.d.ts.map +1 -0
- package/dist/tools/analytics/index.js +5 -0
- package/dist/tools/analytics/index.js.map +1 -0
- package/dist/tools/convention/index.d.ts +10 -0
- package/dist/tools/convention/index.d.ts.map +1 -0
- package/dist/tools/convention/index.js +10 -0
- package/dist/tools/convention/index.js.map +1 -0
- package/dist/tools/memory/index.d.ts +19 -0
- package/dist/tools/memory/index.d.ts.map +1 -0
- package/dist/tools/memory/index.js +19 -0
- package/dist/tools/memory/index.js.map +1 -0
- package/dist/tools/planning/index.d.ts +8 -0
- package/dist/tools/planning/index.d.ts.map +1 -0
- package/dist/tools/planning/index.js +8 -0
- package/dist/tools/planning/index.js.map +1 -0
- package/dist/tools/prompt/index.d.ts +7 -0
- package/dist/tools/prompt/index.d.ts.map +1 -0
- package/dist/tools/prompt/index.js +7 -0
- package/dist/tools/prompt/index.js.map +1 -0
- package/dist/tools/reasoning/index.d.ts +5 -0
- package/dist/tools/reasoning/index.d.ts.map +1 -0
- package/dist/tools/reasoning/index.js +5 -0
- package/dist/tools/reasoning/index.js.map +1 -0
- package/dist/tools/semantic/index.d.ts +7 -0
- package/dist/tools/semantic/index.d.ts.map +1 -0
- package/dist/tools/semantic/index.js +7 -0
- package/dist/tools/semantic/index.js.map +1 -0
- package/dist/tools/thinking/index.d.ts +10 -0
- package/dist/tools/thinking/index.d.ts.map +1 -0
- package/dist/tools/thinking/index.js +10 -0
- package/dist/tools/thinking/index.js.map +1 -0
- package/dist/tools/time/index.d.ts +5 -0
- package/dist/tools/time/index.d.ts.map +1 -0
- package/dist/tools/time/index.js +5 -0
- package/dist/tools/time/index.js.map +1 -0
- package/dist/tools/ui/index.d.ts +5 -0
- package/dist/tools/ui/index.d.ts.map +1 -0
- package/dist/tools/ui/index.js +5 -0
- package/dist/tools/ui/index.js.map +1 -0
- package/hooks/hooks.json +72 -9
- package/package.json +11 -1
- package/skills/context7-usage.md +82 -0
- package/skills/git-worktree.md +3 -0
- package/skills/multi-llm-orchestration.md +97 -0
- package/skills/parallel-research.md +77 -0
- package/skills/priority-todos.md +3 -0
- package/skills/tool-fallback.md +126 -0
- package/skills/vibe-capabilities.md +127 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/semantic/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/semantic/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thinking Tools - 사고 체인 및 문제 분석
|
|
3
|
+
*/
|
|
4
|
+
export { createThinkingChain } from './createThinkingChain.js';
|
|
5
|
+
export { analyzeProblem } from './analyzeProblem.js';
|
|
6
|
+
export { stepByStepAnalysis } from './stepByStepAnalysis.js';
|
|
7
|
+
export { formatAsPlan } from './formatAsPlan.js';
|
|
8
|
+
export { breakDownProblem } from './breakDownProblem.js';
|
|
9
|
+
export { thinkAloudProcess } from './thinkAloudProcess.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/thinking/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thinking Tools - 사고 체인 및 문제 분석
|
|
3
|
+
*/
|
|
4
|
+
export { createThinkingChain } from './createThinkingChain.js';
|
|
5
|
+
export { analyzeProblem } from './analyzeProblem.js';
|
|
6
|
+
export { stepByStepAnalysis } from './stepByStepAnalysis.js';
|
|
7
|
+
export { formatAsPlan } from './formatAsPlan.js';
|
|
8
|
+
export { breakDownProblem } from './breakDownProblem.js';
|
|
9
|
+
export { thinkAloudProcess } from './thinkAloudProcess.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/thinking/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/time/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/time/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/hooks/hooks.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"hooks": [
|
|
6
6
|
{
|
|
7
7
|
"type": "command",
|
|
8
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';Promise.all([import('@su-record/vibe/tools').then(t => t.startSession({projectPath: p})), import('@su-record/vibe/tools').then(t => t.getCurrentTime({format: 'human', timezone: 'Asia/Seoul'})), import('@su-record/vibe/tools').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))\""
|
|
8
|
+
"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))\""
|
|
9
9
|
}
|
|
10
10
|
]
|
|
11
11
|
}
|
|
@@ -27,12 +27,21 @@
|
|
|
27
27
|
"hooks": [
|
|
28
28
|
{
|
|
29
29
|
"type": "command",
|
|
30
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').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.'))\""
|
|
30
|
+
"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.'))\""
|
|
31
31
|
}
|
|
32
32
|
]
|
|
33
33
|
}
|
|
34
34
|
],
|
|
35
35
|
"UserPromptSubmit": [
|
|
36
|
+
{
|
|
37
|
+
"hooks": [
|
|
38
|
+
{
|
|
39
|
+
"type": "command",
|
|
40
|
+
"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.'",
|
|
41
|
+
"statusMessage": "Evaluating skills..."
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
36
45
|
{
|
|
37
46
|
"matcher": "ultrawork|ulw|울트라워크",
|
|
38
47
|
"hooks": [
|
|
@@ -47,7 +56,7 @@
|
|
|
47
56
|
"hooks": [
|
|
48
57
|
{
|
|
49
58
|
"type": "command",
|
|
50
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').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'))\""
|
|
59
|
+
"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'))\""
|
|
51
60
|
}
|
|
52
61
|
]
|
|
53
62
|
},
|
|
@@ -56,7 +65,7 @@
|
|
|
56
65
|
"hooks": [
|
|
57
66
|
{
|
|
58
67
|
"type": "command",
|
|
59
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').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'))\""
|
|
68
|
+
"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'))\""
|
|
60
69
|
}
|
|
61
70
|
]
|
|
62
71
|
},
|
|
@@ -74,7 +83,7 @@
|
|
|
74
83
|
"hooks": [
|
|
75
84
|
{
|
|
76
85
|
"type": "command",
|
|
77
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').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'))\""
|
|
86
|
+
"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'))\""
|
|
78
87
|
}
|
|
79
88
|
]
|
|
80
89
|
},
|
|
@@ -83,7 +92,61 @@
|
|
|
83
92
|
"hooks": [
|
|
84
93
|
{
|
|
85
94
|
"type": "command",
|
|
86
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').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'))\""
|
|
95
|
+
"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'))\""
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"matcher": "아키텍처|architecture|설계.*검토|design.*review|구조.*분석",
|
|
101
|
+
"hooks": [
|
|
102
|
+
{
|
|
103
|
+
"type": "command",
|
|
104
|
+
"command": "echo '[GPT-5.2 AVAILABLE] Architecture review → Consider mcp__vibe-gpt__gpt_analyze_architecture for GPT-5.2 perspective.'"
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"matcher": "UI|UX|사용자.*경험|user.*experience|디자인.*리뷰|design.*feedback",
|
|
110
|
+
"hooks": [
|
|
111
|
+
{
|
|
112
|
+
"type": "command",
|
|
113
|
+
"command": "echo '[GEMINI-3-PRO AVAILABLE] UI/UX review → Consider mcp__vibe-gemini__gemini_review_ui for Gemini 3 Pro perspective.'"
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"matcher": "gpt.*물어|gpt.*질문|gpt.*한테|ask.*gpt|gpt.*chat",
|
|
119
|
+
"hooks": [
|
|
120
|
+
{
|
|
121
|
+
"type": "command",
|
|
122
|
+
"command": "echo '[GPT-5.2 MCP] To ask GPT-5.2 → Use mcp__vibe-gpt__gpt_chat directly.'"
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"matcher": "gemini.*물어|gemini.*질문|gemini.*한테|ask.*gemini|gemini.*chat",
|
|
128
|
+
"hooks": [
|
|
129
|
+
{
|
|
130
|
+
"type": "command",
|
|
131
|
+
"command": "echo '[GEMINI-3-PRO MCP] To ask Gemini 3 Pro → Use mcp__vibe-gemini__gemini_chat directly.'"
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"matcher": "디버깅|debugging|버그.*찾|find.*bug|debug.*this",
|
|
137
|
+
"hooks": [
|
|
138
|
+
{
|
|
139
|
+
"type": "command",
|
|
140
|
+
"command": "echo '[GPT-5.2 DEBUG] For debugging → Consider mcp__vibe-gpt__gpt_debug for GPT-5.2 second opinion.'"
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"matcher": "코드.*분석|analyze.*code|code.*review.*gemini",
|
|
146
|
+
"hooks": [
|
|
147
|
+
{
|
|
148
|
+
"type": "command",
|
|
149
|
+
"command": "echo '[GEMINI-3-PRO CODE] For code analysis → Consider mcp__vibe-gemini__gemini_analyze_code for Gemini 3 Pro second opinion.'"
|
|
87
150
|
}
|
|
88
151
|
]
|
|
89
152
|
}
|
|
@@ -94,7 +157,7 @@
|
|
|
94
157
|
"hooks": [
|
|
95
158
|
{
|
|
96
159
|
"type": "command",
|
|
97
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').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)))\""
|
|
160
|
+
"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)))\""
|
|
98
161
|
}
|
|
99
162
|
]
|
|
100
163
|
},
|
|
@@ -103,7 +166,7 @@
|
|
|
103
166
|
"hooks": [
|
|
104
167
|
{
|
|
105
168
|
"type": "command",
|
|
106
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').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)))\""
|
|
169
|
+
"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)))\""
|
|
107
170
|
}
|
|
108
171
|
]
|
|
109
172
|
},
|
|
@@ -112,7 +175,7 @@
|
|
|
112
175
|
"hooks": [
|
|
113
176
|
{
|
|
114
177
|
"type": "command",
|
|
115
|
-
"command": "node -e \"const p='$CLAUDE_PROJECT_DIR';import('@su-record/vibe/tools').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)))\""
|
|
178
|
+
"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)))\""
|
|
116
179
|
}
|
|
117
180
|
]
|
|
118
181
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@su-record/vibe",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.3",
|
|
4
4
|
"description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework with 35+ integrated tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli/index.js",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": "./dist/cli/index.js",
|
|
9
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",
|
|
10
20
|
"./orchestrator": "./dist/orchestrator/index.js"
|
|
11
21
|
},
|
|
12
22
|
"bin": {
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Context7 MCP for latest library documentation. Auto-activates when docs, documentation, latest version, official docs, API reference, or library help is needed.
|
|
3
|
+
---
|
|
4
|
+
# Context7 Usage
|
|
5
|
+
|
|
6
|
+
Guide for searching latest library/framework documentation using Context7 MCP.
|
|
7
|
+
|
|
8
|
+
## When to Use
|
|
9
|
+
|
|
10
|
+
| Situation | Example |
|
|
11
|
+
|-----------|---------|
|
|
12
|
+
| Latest API check | "React 19 use() hook usage" |
|
|
13
|
+
| Version differences | "Next.js 15 changes" |
|
|
14
|
+
| Official docs needed | "Prisma schema syntax" |
|
|
15
|
+
| Migration guide | "Vue 2 → Vue 3 migration" |
|
|
16
|
+
|
|
17
|
+
## Usage (2 Steps)
|
|
18
|
+
|
|
19
|
+
### Step 1: Find Library ID
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
mcp__context7__resolve-library-id({
|
|
23
|
+
libraryName: "react"
|
|
24
|
+
})
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Returns: `/facebook/react`, `/vercel/next.js`, etc.
|
|
28
|
+
|
|
29
|
+
### Step 2: Get Documentation
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
mcp__context7__get-library-docs({
|
|
33
|
+
context7CompatibleLibraryID: "/facebook/react",
|
|
34
|
+
topic: "hooks" // optional: specific topic only
|
|
35
|
+
})
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Common Library IDs
|
|
39
|
+
|
|
40
|
+
| Library | Context7 ID |
|
|
41
|
+
|---------|-------------|
|
|
42
|
+
| React | /facebook/react |
|
|
43
|
+
| Next.js | /vercel/next.js |
|
|
44
|
+
| Vue | /vuejs/vue |
|
|
45
|
+
| Svelte | /sveltejs/svelte |
|
|
46
|
+
| Express | /expressjs/express |
|
|
47
|
+
| Prisma | /prisma/prisma |
|
|
48
|
+
| TypeScript | /microsoft/typescript |
|
|
49
|
+
|
|
50
|
+
## Search Tips
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
# Broad search
|
|
54
|
+
topic: omit → full documentation
|
|
55
|
+
|
|
56
|
+
# Narrow search
|
|
57
|
+
topic: "authentication" → auth related only
|
|
58
|
+
|
|
59
|
+
# Specific feature
|
|
60
|
+
topic: "server components" → server components only
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Web Search vs Context7
|
|
64
|
+
|
|
65
|
+
| Aspect | Web Search | Context7 |
|
|
66
|
+
|--------|------------|----------|
|
|
67
|
+
| Speed | Slow | Fast |
|
|
68
|
+
| Accuracy | Blogs mixed in | Official docs only |
|
|
69
|
+
| Freshness | Variable | Always latest |
|
|
70
|
+
| Reliability | Medium | High |
|
|
71
|
+
|
|
72
|
+
**Prefer Context7 for library documentation**
|
|
73
|
+
|
|
74
|
+
## Fallback When Fails
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
context7 fails
|
|
78
|
+
↓
|
|
79
|
+
Web Search for official docs
|
|
80
|
+
↓
|
|
81
|
+
Ask vibe-gpt
|
|
82
|
+
```
|
package/skills/git-worktree.md
CHANGED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Multi-LLM collaboration guide. Auto-activates for architecture review, design decisions, debugging, UI/UX consultation, complex problem solving, or when a different perspective is needed.
|
|
3
|
+
---
|
|
4
|
+
# Multi-LLM Orchestration
|
|
5
|
+
|
|
6
|
+
Guide for using GPT/Gemini as sub-agents in Claude Code.
|
|
7
|
+
|
|
8
|
+
## When to Use GPT (mcp__vibe-gpt)
|
|
9
|
+
|
|
10
|
+
| Situation | Reason |
|
|
11
|
+
|-----------|--------|
|
|
12
|
+
| Architecture design/review | Get different perspective on design |
|
|
13
|
+
| Complex debugging | Fresh eyes on the problem |
|
|
14
|
+
| Algorithm optimization | Alternative algorithm suggestions |
|
|
15
|
+
| Security review | Cross-check vulnerabilities |
|
|
16
|
+
| Technology decisions | Compare pros/cons |
|
|
17
|
+
|
|
18
|
+
### Usage
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
mcp__vibe-gpt__gpt_chat({
|
|
22
|
+
prompt: "Review this auth architecture: [code/description]",
|
|
23
|
+
model: "gpt-5.2-codex" // coding specialized
|
|
24
|
+
})
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Recommended Models
|
|
28
|
+
|
|
29
|
+
| Model | Use Case |
|
|
30
|
+
|-------|----------|
|
|
31
|
+
| gpt-5.2 | General purpose (default) |
|
|
32
|
+
| gpt-5.2-codex | Coding specialized |
|
|
33
|
+
| gpt-5.1-codex-mini | Quick responses needed |
|
|
34
|
+
|
|
35
|
+
## When to Use Gemini (mcp__vibe-gemini)
|
|
36
|
+
|
|
37
|
+
| Situation | Reason |
|
|
38
|
+
|-----------|--------|
|
|
39
|
+
| UI/UX design consultation | User experience perspective |
|
|
40
|
+
| Design system advice | Component structuring |
|
|
41
|
+
| Accessibility (a11y) review | Accessibility guidelines |
|
|
42
|
+
| User flow design | UX optimization |
|
|
43
|
+
|
|
44
|
+
### Usage
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
mcp__vibe-gemini__gemini_chat({
|
|
48
|
+
prompt: "Suggest UX improvements for this login form: [description]"
|
|
49
|
+
})
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## When NOT to Use
|
|
53
|
+
|
|
54
|
+
- Simple implementation (Claude alone is sufficient)
|
|
55
|
+
- File read/write (use Claude's tools)
|
|
56
|
+
- Quick response needed (API latency exists)
|
|
57
|
+
- Tasks requiring project context (Claude has the context)
|
|
58
|
+
|
|
59
|
+
## Collaboration Patterns
|
|
60
|
+
|
|
61
|
+
### Pattern 1: Design Cross-check
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Claude: Draft design
|
|
65
|
+
↓
|
|
66
|
+
GPT: Architecture review (mcp__vibe-gpt__gpt_analyze_architecture)
|
|
67
|
+
↓
|
|
68
|
+
Claude: Incorporate feedback into final design
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Pattern 2: Debugging Collaboration
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Claude: Attempt problem analysis
|
|
75
|
+
↓
|
|
76
|
+
If stuck, ask GPT (mcp__vibe-gpt__gpt_debug)
|
|
77
|
+
↓
|
|
78
|
+
Claude: Apply GPT's suggestions
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Pattern 3: UI/UX Consultation
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Claude: Implement feature
|
|
85
|
+
↓
|
|
86
|
+
Gemini: Suggest UX improvements (mcp__vibe-gemini__gemini_chat)
|
|
87
|
+
↓
|
|
88
|
+
Claude: Apply UX feedback
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## API Key Setup
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
vibe gpt <api-key> # Enable GPT
|
|
95
|
+
vibe gemini <api-key> # Enable Gemini
|
|
96
|
+
vibe status # Check current settings
|
|
97
|
+
```
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Parallel research guide. Auto-activates for complex features, new technologies, security-critical work, architecture design, or technology selection decisions.
|
|
3
|
+
---
|
|
4
|
+
# Parallel Research
|
|
5
|
+
|
|
6
|
+
Parallel research patterns for solving complex problems.
|
|
7
|
+
|
|
8
|
+
## When Parallel Research is Needed
|
|
9
|
+
|
|
10
|
+
| Situation | Reason |
|
|
11
|
+
|-----------|--------|
|
|
12
|
+
| New technology adoption | Need best practices |
|
|
13
|
+
| Security-related features | Multi-angle review needed |
|
|
14
|
+
| Architecture design | Multiple perspectives needed |
|
|
15
|
+
| Technology selection | Comparison analysis needed |
|
|
16
|
+
| Complex bugs | Explore multiple causes |
|
|
17
|
+
|
|
18
|
+
## Research Agents (4 Parallel)
|
|
19
|
+
|
|
20
|
+
| Agent | Role | Tools |
|
|
21
|
+
|-------|------|-------|
|
|
22
|
+
| best-practices | Search best practices | Web Search, context7 |
|
|
23
|
+
| framework-docs | Search official docs | context7 |
|
|
24
|
+
| codebase-patterns | Analyze existing code patterns | Grep, Glob |
|
|
25
|
+
| security-advisory | Search security advisories | Web Search |
|
|
26
|
+
|
|
27
|
+
## Usage Methods
|
|
28
|
+
|
|
29
|
+
### Method 1: Direct Orchestrator Call
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
node -e "import('@su-record/vibe/orchestrator').then(o =>
|
|
33
|
+
o.research('passkey authentication', ['React', 'Supabase'])
|
|
34
|
+
.then(r => console.log(r.content[0].text))
|
|
35
|
+
)"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Method 2: Use /vibe.spec
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
/vibe.spec "feature-name"
|
|
42
|
+
→ Parallel research runs automatically after requirements confirmed
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Method 3: Parallel Task Tool Execution
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Task 1: "Search React auth best practices"
|
|
49
|
+
Task 2: "Search Supabase Auth official docs" (concurrent)
|
|
50
|
+
Task 3: "Analyze existing auth code patterns" (concurrent)
|
|
51
|
+
Task 4: "Search auth security vulnerabilities" (concurrent)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Using Research Results
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Parallel research complete
|
|
58
|
+
↓
|
|
59
|
+
Synthesize results
|
|
60
|
+
↓
|
|
61
|
+
Reflect in SPEC Context section
|
|
62
|
+
OR
|
|
63
|
+
Reference during implementation
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## When Research is NOT Needed
|
|
67
|
+
|
|
68
|
+
- Simple CRUD operations
|
|
69
|
+
- Already familiar patterns
|
|
70
|
+
- Similar code exists in project
|
|
71
|
+
- Time-critical (supplement with review later)
|
|
72
|
+
|
|
73
|
+
## Notes
|
|
74
|
+
|
|
75
|
+
- Research runs **after requirements confirmed**
|
|
76
|
+
- Split overly broad topics
|
|
77
|
+
- Research results are references, not absolute truth
|
package/skills/priority-todos.md
CHANGED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Tool failure fallback strategies with circuit breaker. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors.
|
|
3
|
+
---
|
|
4
|
+
# Tool Fallback Strategies
|
|
5
|
+
|
|
6
|
+
Guide for finding alternatives when tools fail to continue work.
|
|
7
|
+
|
|
8
|
+
## Circuit Breaker Pattern
|
|
9
|
+
|
|
10
|
+
Track tool failures and temporarily disable unreliable tools:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Tool State Machine:
|
|
14
|
+
┌─────────┐ 3 failures ┌─────────┐ 30s cooldown ┌─────────────┐
|
|
15
|
+
│ CLOSED │ ─────────────→ │ OPEN │ ───────────────→ │ HALF-OPEN │
|
|
16
|
+
│ (normal)│ │ (block) │ │ (test 1 req)│
|
|
17
|
+
└─────────┘ └─────────┘ └─────────────┘
|
|
18
|
+
↑ │
|
|
19
|
+
│ success │
|
|
20
|
+
└────────────────────────────────────────────────────────┘
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
| State | Behavior |
|
|
24
|
+
|-------|----------|
|
|
25
|
+
| **CLOSED** | Normal operation, count failures |
|
|
26
|
+
| **OPEN** | Block all requests, use alternative immediately |
|
|
27
|
+
| **HALF-OPEN** | Allow 1 test request after cooldown |
|
|
28
|
+
|
|
29
|
+
**Per-tool tracking:**
|
|
30
|
+
```
|
|
31
|
+
vibe-gpt: failures=2, state=CLOSED
|
|
32
|
+
vibe-gemini: failures=0, state=CLOSED
|
|
33
|
+
WebSearch: failures=3, state=OPEN (blocked until 14:32:00)
|
|
34
|
+
context7: failures=1, state=CLOSED
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## When Web Search Fails
|
|
38
|
+
|
|
39
|
+
| Alternative | Method |
|
|
40
|
+
|-------------|--------|
|
|
41
|
+
| context7 MCP | `mcp__context7__query-docs` |
|
|
42
|
+
| vibe-gpt | `mcp__vibe-gpt__gpt_chat` |
|
|
43
|
+
| Cached knowledge | Use Claude's built-in knowledge |
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Web Search fails (429, 529, timeout)
|
|
47
|
+
↓
|
|
48
|
+
Check circuit breaker state
|
|
49
|
+
↓
|
|
50
|
+
If OPEN → Skip to alternative immediately
|
|
51
|
+
↓
|
|
52
|
+
If CLOSED → Try context7 for library docs
|
|
53
|
+
↓
|
|
54
|
+
If still fails, ask GPT
|
|
55
|
+
↓
|
|
56
|
+
Last resort: Claude's built-in knowledge
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## API Error Responses
|
|
60
|
+
|
|
61
|
+
| Error | Cause | Response | Circuit Breaker |
|
|
62
|
+
|-------|-------|----------|-----------------|
|
|
63
|
+
| 429 | Rate Limit | Exponential backoff | +1 failure count |
|
|
64
|
+
| 5xx | Server Error | Switch to alternative | +1 failure count |
|
|
65
|
+
| 529 | Overloaded | Wait and retry | +1 failure count |
|
|
66
|
+
| Timeout | Network | Split request or retry | +1 failure count |
|
|
67
|
+
| 401/403 | Auth Error | Re-auth or alternative | Don't count (auth issue) |
|
|
68
|
+
|
|
69
|
+
## When File/Code Not Found
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Glob fails
|
|
73
|
+
↓
|
|
74
|
+
Expand pattern: *.ts → **/*.ts → **/*
|
|
75
|
+
↓
|
|
76
|
+
Use Grep for content-based search
|
|
77
|
+
↓
|
|
78
|
+
Check git log for history
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## When MCP Fails
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
vibe-gpt fails
|
|
85
|
+
↓
|
|
86
|
+
Check circuit: If OPEN, skip to next
|
|
87
|
+
↓
|
|
88
|
+
Try vibe-gemini (similar capability)
|
|
89
|
+
↓
|
|
90
|
+
Try context7 (for docs)
|
|
91
|
+
↓
|
|
92
|
+
Claude solves alone
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Retry Strategy with Circuit Breaker
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
Request to tool
|
|
99
|
+
↓
|
|
100
|
+
Check circuit state
|
|
101
|
+
↓
|
|
102
|
+
┌─ OPEN? ──→ Use alternative immediately (no retry)
|
|
103
|
+
│
|
|
104
|
+
└─ CLOSED/HALF-OPEN? ──→ Try request
|
|
105
|
+
↓
|
|
106
|
+
Success? ──→ Reset failure count
|
|
107
|
+
↓ No
|
|
108
|
+
Retry with backoff:
|
|
109
|
+
retry(1): wait 2s
|
|
110
|
+
retry(2): wait 4s
|
|
111
|
+
retry(3): wait 8s
|
|
112
|
+
↓
|
|
113
|
+
All failed? ──→ +1 failure, check threshold
|
|
114
|
+
↓
|
|
115
|
+
failures >= 3? ──→ OPEN circuit for 30s
|
|
116
|
+
↓
|
|
117
|
+
Use alternative
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Principles
|
|
121
|
+
|
|
122
|
+
1. **Never stop** - Always find an alternative
|
|
123
|
+
2. **Before asking user** - Try alternatives first
|
|
124
|
+
3. **Track failures** - Open circuit after 3 consecutive failures
|
|
125
|
+
4. **Auto-recover** - Test after 30s cooldown
|
|
126
|
+
5. **Fail fast** - Skip blocked tools immediately
|