@su-record/vibe 2.5.14 → 2.5.17
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.md +96 -267
- package/LICENSE +21 -21
- package/README.md +262 -262
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -189
- package/agents/research/codebase-patterns-agent.md +157 -147
- package/agents/research/framework-docs-agent.md +188 -178
- package/agents/research/security-advisory-agent.md +213 -203
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +129 -129
- package/commands/vibe.analyze.md +356 -356
- package/commands/vibe.reason.md +329 -329
- package/commands/vibe.review.md +326 -326
- package/commands/vibe.run.md +1117 -1117
- package/commands/vibe.spec.md +1066 -1058
- package/commands/vibe.utils.md +353 -353
- package/commands/vibe.verify.md +375 -375
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +109 -108
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm.js +144 -144
- package/dist/lib/DeepInit.js +24 -24
- package/dist/lib/FrameworkDetector.d.ts +56 -0
- package/dist/lib/FrameworkDetector.d.ts.map +1 -0
- package/dist/lib/FrameworkDetector.js +287 -0
- package/dist/lib/FrameworkDetector.js.map +1 -0
- package/dist/lib/IterationTracker.js +11 -11
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/RuleBuildSystem.d.ts +117 -0
- package/dist/lib/RuleBuildSystem.d.ts.map +1 -0
- package/dist/lib/RuleBuildSystem.js +402 -0
- package/dist/lib/RuleBuildSystem.js.map +1 -0
- package/dist/lib/SkillFrontmatter.js +28 -28
- package/dist/lib/SkillQualityGate.js +9 -9
- package/dist/lib/SkillRepository.js +159 -159
- package/dist/lib/UltraQA.js +77 -77
- package/dist/lib/gpt-api.js +4 -4
- package/dist/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/lib/memory/MemorySearch.js +20 -20
- package/dist/lib/memory/MemoryStorage.js +64 -64
- package/dist/orchestrator/AgentManager.js +12 -12
- package/dist/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/orchestrator/SmartRouter.js +11 -11
- package/dist/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/hooks/hooks.json +222 -222
- package/hooks/scripts/code-check.js +22 -22
- package/hooks/scripts/code-review.js +22 -22
- package/hooks/scripts/complexity.js +22 -22
- package/hooks/scripts/compound.js +23 -23
- package/hooks/scripts/context-save.js +33 -33
- package/hooks/scripts/generate-brand-assets.js +472 -472
- package/hooks/scripts/hud-multiline.js +262 -262
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +171 -171
- package/hooks/scripts/post-edit.js +97 -97
- package/hooks/scripts/post-tool-verify.js +210 -210
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/recall.js +22 -22
- package/hooks/scripts/session-start.js +30 -30
- package/hooks/scripts/skill-injector.js +191 -191
- package/hooks/scripts/utils.js +97 -97
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +83 -83
- package/skills/brand-assets.md +141 -141
- package/skills/commerce-patterns.md +361 -361
- package/skills/context7-usage.md +102 -102
- package/skills/e2e-commerce.md +304 -304
- package/skills/frontend-design.md +92 -92
- package/skills/git-worktree.md +181 -181
- package/skills/parallel-research.md +77 -77
- package/skills/priority-todos.md +239 -239
- package/skills/seo-checklist.md +244 -244
- package/skills/tool-fallback.md +190 -190
- package/skills/vibe-capabilities.md +161 -161
- package/vibe/constitution.md +227 -227
- package/vibe/rules/core/communication-guide.md +98 -98
- package/vibe/rules/core/development-philosophy.md +52 -52
- package/vibe/rules/core/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
- package/dist/cli/mcp.d.ts +0 -49
- package/dist/cli/mcp.d.ts.map +0 -1
- package/dist/cli/mcp.js +0 -169
- package/dist/cli/mcp.js.map +0 -1
- package/dist/lib/gemini-mcp.d.ts +0 -10
- package/dist/lib/gemini-mcp.d.ts.map +0 -1
- package/dist/lib/gemini-mcp.js +0 -353
- package/dist/lib/gemini-mcp.js.map +0 -1
- package/dist/lib/gpt-mcp.d.ts +0 -10
- package/dist/lib/gpt-mcp.d.ts.map +0 -1
- package/dist/lib/gpt-mcp.js +0 -352
- package/dist/lib/gpt-mcp.js.map +0 -1
- package/dist/tools/analytics/getUsageAnalytics.d.ts +0 -10
- package/dist/tools/analytics/getUsageAnalytics.d.ts.map +0 -1
- package/dist/tools/analytics/getUsageAnalytics.js +0 -246
- package/dist/tools/analytics/getUsageAnalytics.js.map +0 -1
- package/dist/tools/analytics/index.d.ts +0 -5
- package/dist/tools/analytics/index.d.ts.map +0 -1
- package/dist/tools/analytics/index.js +0 -5
- package/dist/tools/analytics/index.js.map +0 -1
- package/dist/tools/convention/getCodingGuide.d.ts +0 -7
- package/dist/tools/convention/getCodingGuide.d.ts.map +0 -1
- package/dist/tools/convention/getCodingGuide.js +0 -69
- package/dist/tools/convention/getCodingGuide.js.map +0 -1
- package/dist/tools/planning/analyzeRequirements.d.ts +0 -9
- package/dist/tools/planning/analyzeRequirements.d.ts.map +0 -1
- package/dist/tools/planning/analyzeRequirements.js +0 -171
- package/dist/tools/planning/analyzeRequirements.js.map +0 -1
- package/dist/tools/planning/createUserStories.d.ts +0 -9
- package/dist/tools/planning/createUserStories.d.ts.map +0 -1
- package/dist/tools/planning/createUserStories.js +0 -124
- package/dist/tools/planning/createUserStories.js.map +0 -1
- package/dist/tools/planning/featureRoadmap.d.ts +0 -10
- package/dist/tools/planning/featureRoadmap.d.ts.map +0 -1
- package/dist/tools/planning/featureRoadmap.js +0 -207
- package/dist/tools/planning/featureRoadmap.js.map +0 -1
- package/dist/tools/planning/generatePrd.d.ts +0 -11
- package/dist/tools/planning/generatePrd.d.ts.map +0 -1
- package/dist/tools/planning/generatePrd.js +0 -161
- package/dist/tools/planning/generatePrd.js.map +0 -1
- package/dist/tools/planning/index.d.ts +0 -8
- package/dist/tools/planning/index.d.ts.map +0 -1
- package/dist/tools/planning/index.js +0 -8
- package/dist/tools/planning/index.js.map +0 -1
- package/dist/tools/prompt/analyzePrompt.d.ts +0 -7
- package/dist/tools/prompt/analyzePrompt.d.ts.map +0 -1
- package/dist/tools/prompt/analyzePrompt.js +0 -150
- package/dist/tools/prompt/analyzePrompt.js.map +0 -1
- package/dist/tools/prompt/enhancePrompt.d.ts +0 -8
- package/dist/tools/prompt/enhancePrompt.d.ts.map +0 -1
- package/dist/tools/prompt/enhancePrompt.js +0 -110
- package/dist/tools/prompt/enhancePrompt.js.map +0 -1
- package/dist/tools/prompt/enhancePromptGemini.d.ts +0 -8
- package/dist/tools/prompt/enhancePromptGemini.d.ts.map +0 -1
- package/dist/tools/prompt/enhancePromptGemini.js +0 -332
- package/dist/tools/prompt/enhancePromptGemini.js.map +0 -1
- package/dist/tools/prompt/index.d.ts +0 -7
- package/dist/tools/prompt/index.d.ts.map +0 -1
- package/dist/tools/prompt/index.js +0 -7
- package/dist/tools/prompt/index.js.map +0 -1
- package/dist/tools/reasoning/applyReasoningFramework.d.ts +0 -8
- package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +0 -1
- package/dist/tools/reasoning/applyReasoningFramework.js +0 -266
- package/dist/tools/reasoning/applyReasoningFramework.js.map +0 -1
- package/dist/tools/reasoning/index.d.ts +0 -5
- package/dist/tools/reasoning/index.d.ts.map +0 -1
- package/dist/tools/reasoning/index.js +0 -5
- package/dist/tools/reasoning/index.js.map +0 -1
- package/dist/tools/thinking/analyzeProblem.d.ts +0 -7
- package/dist/tools/thinking/analyzeProblem.d.ts.map +0 -1
- package/dist/tools/thinking/analyzeProblem.js +0 -55
- package/dist/tools/thinking/analyzeProblem.js.map +0 -1
- package/dist/tools/thinking/breakDownProblem.d.ts +0 -8
- package/dist/tools/thinking/breakDownProblem.d.ts.map +0 -1
- package/dist/tools/thinking/breakDownProblem.js +0 -145
- package/dist/tools/thinking/breakDownProblem.js.map +0 -1
- package/dist/tools/thinking/createThinkingChain.d.ts +0 -7
- package/dist/tools/thinking/createThinkingChain.d.ts.map +0 -1
- package/dist/tools/thinking/createThinkingChain.js +0 -44
- package/dist/tools/thinking/createThinkingChain.js.map +0 -1
- package/dist/tools/thinking/formatAsPlan.d.ts +0 -9
- package/dist/tools/thinking/formatAsPlan.d.ts.map +0 -1
- package/dist/tools/thinking/formatAsPlan.js +0 -78
- package/dist/tools/thinking/formatAsPlan.js.map +0 -1
- package/dist/tools/thinking/index.d.ts +0 -10
- package/dist/tools/thinking/index.d.ts.map +0 -1
- package/dist/tools/thinking/index.js +0 -10
- package/dist/tools/thinking/index.js.map +0 -1
- package/dist/tools/thinking/stepByStepAnalysis.d.ts +0 -8
- package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +0 -1
- package/dist/tools/thinking/stepByStepAnalysis.js +0 -63
- package/dist/tools/thinking/stepByStepAnalysis.js.map +0 -1
- package/dist/tools/thinking/thinkAloudProcess.d.ts +0 -8
- package/dist/tools/thinking/thinkAloudProcess.d.ts.map +0 -1
- package/dist/tools/thinking/thinkAloudProcess.js +0 -80
- package/dist/tools/thinking/thinkAloudProcess.js.map +0 -1
|
@@ -265,177 +265,177 @@ export class SkillRepository {
|
|
|
265
265
|
export const DEFAULT_SKILLS = [
|
|
266
266
|
{
|
|
267
267
|
id: 'multi-llm-orchestration',
|
|
268
|
-
content: `---
|
|
269
|
-
name: multi-llm-orchestration
|
|
270
|
-
description: "Multi-LLM research using GPT and Gemini for comprehensive analysis"
|
|
271
|
-
triggers: [gpt, gemini, multi-llm, research, parallel research]
|
|
272
|
-
priority: 80
|
|
273
|
-
---
|
|
274
|
-
# Multi-LLM Orchestration
|
|
275
|
-
|
|
276
|
-
Use multiple LLMs for comprehensive research and validation.
|
|
277
|
-
|
|
278
|
-
## Usage
|
|
279
|
-
|
|
280
|
-
\`\`\`bash
|
|
281
|
-
# Via Bash hook (automatic in /vibe.spec)
|
|
282
|
-
node hooks/scripts/llm-orchestrate.js gpt "your prompt"
|
|
283
|
-
node hooks/scripts/llm-orchestrate.js gemini "your prompt"
|
|
284
|
-
\`\`\`
|
|
285
|
-
|
|
286
|
-
## Setup
|
|
287
|
-
|
|
288
|
-
\`\`\`bash
|
|
289
|
-
vibe gpt auth # Configure GPT API key
|
|
290
|
-
vibe gemini auth # Configure Gemini OAuth/API key
|
|
291
|
-
vibe status # Check current configuration
|
|
292
|
-
\`\`\`
|
|
293
|
-
|
|
294
|
-
## Best Practices
|
|
295
|
-
|
|
296
|
-
1. Use GPT for best practices and code review
|
|
297
|
-
2. Use Gemini for documentation and security analysis
|
|
298
|
-
3. Combine results for comprehensive coverage
|
|
268
|
+
content: `---
|
|
269
|
+
name: multi-llm-orchestration
|
|
270
|
+
description: "Multi-LLM research using GPT and Gemini for comprehensive analysis"
|
|
271
|
+
triggers: [gpt, gemini, multi-llm, research, parallel research]
|
|
272
|
+
priority: 80
|
|
273
|
+
---
|
|
274
|
+
# Multi-LLM Orchestration
|
|
275
|
+
|
|
276
|
+
Use multiple LLMs for comprehensive research and validation.
|
|
277
|
+
|
|
278
|
+
## Usage
|
|
279
|
+
|
|
280
|
+
\`\`\`bash
|
|
281
|
+
# Via Bash hook (automatic in /vibe.spec)
|
|
282
|
+
node hooks/scripts/llm-orchestrate.js gpt "your prompt"
|
|
283
|
+
node hooks/scripts/llm-orchestrate.js gemini "your prompt"
|
|
284
|
+
\`\`\`
|
|
285
|
+
|
|
286
|
+
## Setup
|
|
287
|
+
|
|
288
|
+
\`\`\`bash
|
|
289
|
+
vibe gpt auth # Configure GPT API key
|
|
290
|
+
vibe gemini auth # Configure Gemini OAuth/API key
|
|
291
|
+
vibe status # Check current configuration
|
|
292
|
+
\`\`\`
|
|
293
|
+
|
|
294
|
+
## Best Practices
|
|
295
|
+
|
|
296
|
+
1. Use GPT for best practices and code review
|
|
297
|
+
2. Use Gemini for documentation and security analysis
|
|
298
|
+
3. Combine results for comprehensive coverage
|
|
299
299
|
`,
|
|
300
300
|
},
|
|
301
301
|
{
|
|
302
302
|
id: 'error-recovery',
|
|
303
|
-
content: `---
|
|
304
|
-
name: error-recovery
|
|
305
|
-
description: "Error recovery patterns and retry strategies"
|
|
306
|
-
triggers: [error, fail, retry, recover, fix]
|
|
307
|
-
priority: 70
|
|
308
|
-
---
|
|
309
|
-
# Error Recovery Patterns
|
|
310
|
-
|
|
311
|
-
## Common Error Types
|
|
312
|
-
|
|
313
|
-
### Build Errors
|
|
314
|
-
- Check TypeScript compilation errors
|
|
315
|
-
- Verify dependency versions
|
|
316
|
-
- Run \`npm ci\` to clean install
|
|
317
|
-
|
|
318
|
-
### Test Failures
|
|
319
|
-
- Run failed tests in isolation
|
|
320
|
-
- Check test fixtures/mocks
|
|
321
|
-
- Verify async timing issues
|
|
322
|
-
|
|
323
|
-
### Runtime Errors
|
|
324
|
-
- Check stack trace carefully
|
|
325
|
-
- Verify environment variables
|
|
326
|
-
- Check external service connectivity
|
|
327
|
-
|
|
328
|
-
## Retry Strategy
|
|
329
|
-
|
|
330
|
-
1. First retry: Same action
|
|
331
|
-
2. Second retry: Clean state (cache clear)
|
|
332
|
-
3. Third retry: Alternative approach
|
|
333
|
-
4. Max retries exceeded: Escalate to user
|
|
334
|
-
|
|
335
|
-
## Auto-Recovery Commands
|
|
336
|
-
|
|
337
|
-
\`\`\`bash
|
|
338
|
-
# Clean build
|
|
339
|
-
rm -rf node_modules dist && npm ci && npm run build
|
|
340
|
-
|
|
341
|
-
# Reset git state (careful!)
|
|
342
|
-
git stash && git checkout .
|
|
343
|
-
|
|
344
|
-
# Clear caches
|
|
345
|
-
npm cache clean --force
|
|
346
|
-
\`\`\`
|
|
303
|
+
content: `---
|
|
304
|
+
name: error-recovery
|
|
305
|
+
description: "Error recovery patterns and retry strategies"
|
|
306
|
+
triggers: [error, fail, retry, recover, fix]
|
|
307
|
+
priority: 70
|
|
308
|
+
---
|
|
309
|
+
# Error Recovery Patterns
|
|
310
|
+
|
|
311
|
+
## Common Error Types
|
|
312
|
+
|
|
313
|
+
### Build Errors
|
|
314
|
+
- Check TypeScript compilation errors
|
|
315
|
+
- Verify dependency versions
|
|
316
|
+
- Run \`npm ci\` to clean install
|
|
317
|
+
|
|
318
|
+
### Test Failures
|
|
319
|
+
- Run failed tests in isolation
|
|
320
|
+
- Check test fixtures/mocks
|
|
321
|
+
- Verify async timing issues
|
|
322
|
+
|
|
323
|
+
### Runtime Errors
|
|
324
|
+
- Check stack trace carefully
|
|
325
|
+
- Verify environment variables
|
|
326
|
+
- Check external service connectivity
|
|
327
|
+
|
|
328
|
+
## Retry Strategy
|
|
329
|
+
|
|
330
|
+
1. First retry: Same action
|
|
331
|
+
2. Second retry: Clean state (cache clear)
|
|
332
|
+
3. Third retry: Alternative approach
|
|
333
|
+
4. Max retries exceeded: Escalate to user
|
|
334
|
+
|
|
335
|
+
## Auto-Recovery Commands
|
|
336
|
+
|
|
337
|
+
\`\`\`bash
|
|
338
|
+
# Clean build
|
|
339
|
+
rm -rf node_modules dist && npm ci && npm run build
|
|
340
|
+
|
|
341
|
+
# Reset git state (careful!)
|
|
342
|
+
git stash && git checkout .
|
|
343
|
+
|
|
344
|
+
# Clear caches
|
|
345
|
+
npm cache clean --force
|
|
346
|
+
\`\`\`
|
|
347
347
|
`,
|
|
348
348
|
},
|
|
349
349
|
{
|
|
350
350
|
id: 'code-quality-check',
|
|
351
|
-
content: `---
|
|
352
|
-
name: code-quality-check
|
|
353
|
-
description: "Code quality validation using vibe tools"
|
|
354
|
-
triggers: [quality, lint, complexity, review]
|
|
355
|
-
priority: 60
|
|
356
|
-
---
|
|
357
|
-
# Code Quality Check
|
|
358
|
-
|
|
359
|
-
## Using Vibe Tools
|
|
360
|
-
|
|
361
|
-
\`\`\`bash
|
|
362
|
-
# Analyze complexity
|
|
363
|
-
node -e "import('@su-record/vibe/tools').then(t =>
|
|
364
|
-
t.analyzeComplexity({targetPath: 'src/', projectPath: process.cwd()})
|
|
365
|
-
.then(r => console.log(r.content[0].text))
|
|
366
|
-
)"
|
|
367
|
-
|
|
368
|
-
# Validate quality
|
|
369
|
-
node -e "import('@su-record/vibe/tools').then(t =>
|
|
370
|
-
t.validateCodeQuality({targetPath: 'src/', projectPath: process.cwd()})
|
|
371
|
-
.then(r => console.log(r.content[0].text))
|
|
372
|
-
)"
|
|
373
|
-
\`\`\`
|
|
374
|
-
|
|
375
|
-
## Quality Metrics
|
|
376
|
-
|
|
377
|
-
| Metric | Good | Warning | Critical |
|
|
378
|
-
|--------|------|---------|----------|
|
|
379
|
-
| Cyclomatic Complexity | ≤10 | 11-15 | >15 |
|
|
380
|
-
| Function Length | ≤30 | 31-50 | >50 |
|
|
381
|
-
| Nesting Depth | ≤3 | 4 | >4 |
|
|
382
|
-
|
|
383
|
-
## Common Issues
|
|
384
|
-
|
|
385
|
-
1. **High Complexity**: Extract helper functions
|
|
386
|
-
2. **Long Functions**: Split by responsibility
|
|
387
|
-
3. **Deep Nesting**: Use early returns
|
|
388
|
-
4. **Tight Coupling**: Apply dependency injection
|
|
351
|
+
content: `---
|
|
352
|
+
name: code-quality-check
|
|
353
|
+
description: "Code quality validation using vibe tools"
|
|
354
|
+
triggers: [quality, lint, complexity, review]
|
|
355
|
+
priority: 60
|
|
356
|
+
---
|
|
357
|
+
# Code Quality Check
|
|
358
|
+
|
|
359
|
+
## Using Vibe Tools
|
|
360
|
+
|
|
361
|
+
\`\`\`bash
|
|
362
|
+
# Analyze complexity
|
|
363
|
+
node -e "import('@su-record/vibe/tools').then(t =>
|
|
364
|
+
t.analyzeComplexity({targetPath: 'src/', projectPath: process.cwd()})
|
|
365
|
+
.then(r => console.log(r.content[0].text))
|
|
366
|
+
)"
|
|
367
|
+
|
|
368
|
+
# Validate quality
|
|
369
|
+
node -e "import('@su-record/vibe/tools').then(t =>
|
|
370
|
+
t.validateCodeQuality({targetPath: 'src/', projectPath: process.cwd()})
|
|
371
|
+
.then(r => console.log(r.content[0].text))
|
|
372
|
+
)"
|
|
373
|
+
\`\`\`
|
|
374
|
+
|
|
375
|
+
## Quality Metrics
|
|
376
|
+
|
|
377
|
+
| Metric | Good | Warning | Critical |
|
|
378
|
+
|--------|------|---------|----------|
|
|
379
|
+
| Cyclomatic Complexity | ≤10 | 11-15 | >15 |
|
|
380
|
+
| Function Length | ≤30 | 31-50 | >50 |
|
|
381
|
+
| Nesting Depth | ≤3 | 4 | >4 |
|
|
382
|
+
|
|
383
|
+
## Common Issues
|
|
384
|
+
|
|
385
|
+
1. **High Complexity**: Extract helper functions
|
|
386
|
+
2. **Long Functions**: Split by responsibility
|
|
387
|
+
3. **Deep Nesting**: Use early returns
|
|
388
|
+
4. **Tight Coupling**: Apply dependency injection
|
|
389
389
|
`,
|
|
390
390
|
},
|
|
391
391
|
{
|
|
392
392
|
id: 'session-management',
|
|
393
|
-
content: `---
|
|
394
|
-
name: session-management
|
|
395
|
-
description: "Context and session management across conversations"
|
|
396
|
-
triggers: [session, context, memory, save, restore, continue]
|
|
397
|
-
priority: 75
|
|
398
|
-
---
|
|
399
|
-
# Session Management
|
|
400
|
-
|
|
401
|
-
## Starting a Session
|
|
402
|
-
|
|
403
|
-
\`\`\`bash
|
|
404
|
-
# Auto-restore previous context
|
|
405
|
-
node -e "import('@su-record/vibe/tools').then(t =>
|
|
406
|
-
t.startSession({projectPath: process.cwd()})
|
|
407
|
-
.then(r => console.log(r.content[0].text))
|
|
408
|
-
)"
|
|
409
|
-
\`\`\`
|
|
410
|
-
|
|
411
|
-
## Saving Context
|
|
412
|
-
|
|
413
|
-
\`\`\`bash
|
|
414
|
-
# Save important decisions
|
|
415
|
-
node -e "import('@su-record/vibe/tools').then(t =>
|
|
416
|
-
t.saveMemory({
|
|
417
|
-
key: 'decision-auth-method',
|
|
418
|
-
value: 'Using JWT with refresh tokens for auth',
|
|
419
|
-
category: 'architecture',
|
|
420
|
-
projectPath: process.cwd()
|
|
421
|
-
}).then(r => console.log(r.content[0].text))
|
|
422
|
-
)"
|
|
423
|
-
\`\`\`
|
|
424
|
-
|
|
425
|
-
## Context Management
|
|
426
|
-
|
|
427
|
-
At 70%+ context usage:
|
|
428
|
-
1. Use \`saveMemory\` for important decisions
|
|
429
|
-
2. Start new session with \`/new\`
|
|
430
|
-
3. Previous context auto-restores
|
|
431
|
-
|
|
432
|
-
## Slash Command
|
|
433
|
-
|
|
434
|
-
\`\`\`
|
|
435
|
-
/vibe.utils --continue
|
|
436
|
-
\`\`\`
|
|
437
|
-
|
|
438
|
-
Restores previous session context automatically.
|
|
393
|
+
content: `---
|
|
394
|
+
name: session-management
|
|
395
|
+
description: "Context and session management across conversations"
|
|
396
|
+
triggers: [session, context, memory, save, restore, continue]
|
|
397
|
+
priority: 75
|
|
398
|
+
---
|
|
399
|
+
# Session Management
|
|
400
|
+
|
|
401
|
+
## Starting a Session
|
|
402
|
+
|
|
403
|
+
\`\`\`bash
|
|
404
|
+
# Auto-restore previous context
|
|
405
|
+
node -e "import('@su-record/vibe/tools').then(t =>
|
|
406
|
+
t.startSession({projectPath: process.cwd()})
|
|
407
|
+
.then(r => console.log(r.content[0].text))
|
|
408
|
+
)"
|
|
409
|
+
\`\`\`
|
|
410
|
+
|
|
411
|
+
## Saving Context
|
|
412
|
+
|
|
413
|
+
\`\`\`bash
|
|
414
|
+
# Save important decisions
|
|
415
|
+
node -e "import('@su-record/vibe/tools').then(t =>
|
|
416
|
+
t.saveMemory({
|
|
417
|
+
key: 'decision-auth-method',
|
|
418
|
+
value: 'Using JWT with refresh tokens for auth',
|
|
419
|
+
category: 'architecture',
|
|
420
|
+
projectPath: process.cwd()
|
|
421
|
+
}).then(r => console.log(r.content[0].text))
|
|
422
|
+
)"
|
|
423
|
+
\`\`\`
|
|
424
|
+
|
|
425
|
+
## Context Management
|
|
426
|
+
|
|
427
|
+
At 70%+ context usage:
|
|
428
|
+
1. Use \`saveMemory\` for important decisions
|
|
429
|
+
2. Start new session with \`/new\`
|
|
430
|
+
3. Previous context auto-restores
|
|
431
|
+
|
|
432
|
+
## Slash Command
|
|
433
|
+
|
|
434
|
+
\`\`\`
|
|
435
|
+
/vibe.utils --continue
|
|
436
|
+
\`\`\`
|
|
437
|
+
|
|
438
|
+
Restores previous session context automatically.
|
|
439
439
|
`,
|
|
440
440
|
},
|
|
441
441
|
];
|
package/dist/lib/UltraQA.js
CHANGED
|
@@ -91,60 +91,60 @@ export function shouldContinue(session) {
|
|
|
91
91
|
* Generate architect diagnosis prompt
|
|
92
92
|
*/
|
|
93
93
|
export function generateDiagnosisPrompt(result) {
|
|
94
|
-
return `
|
|
95
|
-
## QA Failure Diagnosis Required
|
|
96
|
-
|
|
97
|
-
**Cycle**: ${result.cycle}
|
|
98
|
-
**Goal**: ${result.goal}
|
|
99
|
-
**Command**: ${result.command}
|
|
100
|
-
**Exit Code**: ${result.exitCode}
|
|
101
|
-
|
|
102
|
-
### Output:
|
|
103
|
-
\`\`\`
|
|
104
|
-
${result.output.slice(0, 2000)}
|
|
105
|
-
\`\`\`
|
|
106
|
-
|
|
107
|
-
### Task:
|
|
108
|
-
1. Identify the root cause of this failure
|
|
109
|
-
2. Determine if it's a code issue, config issue, or environment issue
|
|
110
|
-
3. Provide a specific fix recommendation
|
|
111
|
-
|
|
112
|
-
Return JSON:
|
|
113
|
-
\`\`\`json
|
|
114
|
-
{
|
|
115
|
-
"rootCause": "description of root cause",
|
|
116
|
-
"category": "code|config|environment|dependency",
|
|
117
|
-
"fix": "specific fix to apply",
|
|
118
|
-
"files": ["list", "of", "files", "to", "modify"],
|
|
119
|
-
"confidence": "high|medium|low"
|
|
120
|
-
}
|
|
121
|
-
\`\`\`
|
|
94
|
+
return `
|
|
95
|
+
## QA Failure Diagnosis Required
|
|
96
|
+
|
|
97
|
+
**Cycle**: ${result.cycle}
|
|
98
|
+
**Goal**: ${result.goal}
|
|
99
|
+
**Command**: ${result.command}
|
|
100
|
+
**Exit Code**: ${result.exitCode}
|
|
101
|
+
|
|
102
|
+
### Output:
|
|
103
|
+
\`\`\`
|
|
104
|
+
${result.output.slice(0, 2000)}
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
### Task:
|
|
108
|
+
1. Identify the root cause of this failure
|
|
109
|
+
2. Determine if it's a code issue, config issue, or environment issue
|
|
110
|
+
3. Provide a specific fix recommendation
|
|
111
|
+
|
|
112
|
+
Return JSON:
|
|
113
|
+
\`\`\`json
|
|
114
|
+
{
|
|
115
|
+
"rootCause": "description of root cause",
|
|
116
|
+
"category": "code|config|environment|dependency",
|
|
117
|
+
"fix": "specific fix to apply",
|
|
118
|
+
"files": ["list", "of", "files", "to", "modify"],
|
|
119
|
+
"confidence": "high|medium|low"
|
|
120
|
+
}
|
|
121
|
+
\`\`\`
|
|
122
122
|
`.trim();
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
125
125
|
* Generate executor fix prompt
|
|
126
126
|
*/
|
|
127
127
|
export function generateFixPrompt(diagnosis, result) {
|
|
128
|
-
return `
|
|
129
|
-
## Apply Fix for QA Failure
|
|
130
|
-
|
|
131
|
-
**Previous Diagnosis**:
|
|
132
|
-
${diagnosis}
|
|
133
|
-
|
|
134
|
-
**Failed Command**: ${result.command}
|
|
135
|
-
**Cycle**: ${result.cycle}
|
|
136
|
-
|
|
137
|
-
### Task:
|
|
138
|
-
Apply the fix identified in the diagnosis. Make minimal changes to resolve the issue.
|
|
139
|
-
|
|
140
|
-
### Rules:
|
|
141
|
-
1. Only modify files mentioned in the diagnosis
|
|
142
|
-
2. Make the smallest change that fixes the issue
|
|
143
|
-
3. Do not refactor or improve unrelated code
|
|
144
|
-
4. Run the verification command after fixing
|
|
145
|
-
|
|
146
|
-
### After fixing, run:
|
|
147
|
-
\`${result.command}\`
|
|
128
|
+
return `
|
|
129
|
+
## Apply Fix for QA Failure
|
|
130
|
+
|
|
131
|
+
**Previous Diagnosis**:
|
|
132
|
+
${diagnosis}
|
|
133
|
+
|
|
134
|
+
**Failed Command**: ${result.command}
|
|
135
|
+
**Cycle**: ${result.cycle}
|
|
136
|
+
|
|
137
|
+
### Task:
|
|
138
|
+
Apply the fix identified in the diagnosis. Make minimal changes to resolve the issue.
|
|
139
|
+
|
|
140
|
+
### Rules:
|
|
141
|
+
1. Only modify files mentioned in the diagnosis
|
|
142
|
+
2. Make the smallest change that fixes the issue
|
|
143
|
+
3. Do not refactor or improve unrelated code
|
|
144
|
+
4. Run the verification command after fixing
|
|
145
|
+
|
|
146
|
+
### After fixing, run:
|
|
147
|
+
\`${result.command}\`
|
|
148
148
|
`.trim();
|
|
149
149
|
}
|
|
150
150
|
/**
|
|
@@ -198,35 +198,35 @@ export function parseQAGoals(input) {
|
|
|
198
198
|
* Create UltraQA workflow description
|
|
199
199
|
*/
|
|
200
200
|
export function describeUltraQAWorkflow() {
|
|
201
|
-
return `
|
|
202
|
-
## UltraQA Workflow
|
|
203
|
-
|
|
204
|
-
5-cycle autonomous QA loop:
|
|
205
|
-
|
|
206
|
-
\`\`\`
|
|
207
|
-
┌─────────────────────────────────────────────┐
|
|
208
|
-
│ ULTRAQA CYCLE │
|
|
209
|
-
│ │
|
|
210
|
-
│ 1. Run verification (test/build/lint) │
|
|
211
|
-
│ ↓ │
|
|
212
|
-
│ 2. Check result │
|
|
213
|
-
│ ↓ │
|
|
214
|
-
│ ┌───┴───┐ │
|
|
215
|
-
│ PASS FAIL │
|
|
216
|
-
│ ↓ ↓ │
|
|
217
|
-
│ DONE 3. Architect diagnosis │
|
|
218
|
-
│ ↓ │
|
|
219
|
-
│ 4. Executor fix │
|
|
220
|
-
│ ↓ │
|
|
221
|
-
│ 5. Repeat (max 5 cycles) │
|
|
222
|
-
└─────────────────────────────────────────────┘
|
|
223
|
-
\`\`\`
|
|
224
|
-
|
|
225
|
-
Exit conditions:
|
|
226
|
-
- ✅ All goals pass
|
|
227
|
-
- ❌ Max 5 cycles reached
|
|
228
|
-
- ❌ Same failure 3 times
|
|
229
|
-
- ❌ Environment error
|
|
201
|
+
return `
|
|
202
|
+
## UltraQA Workflow
|
|
203
|
+
|
|
204
|
+
5-cycle autonomous QA loop:
|
|
205
|
+
|
|
206
|
+
\`\`\`
|
|
207
|
+
┌─────────────────────────────────────────────┐
|
|
208
|
+
│ ULTRAQA CYCLE │
|
|
209
|
+
│ │
|
|
210
|
+
│ 1. Run verification (test/build/lint) │
|
|
211
|
+
│ ↓ │
|
|
212
|
+
│ 2. Check result │
|
|
213
|
+
│ ↓ │
|
|
214
|
+
│ ┌───┴───┐ │
|
|
215
|
+
│ PASS FAIL │
|
|
216
|
+
│ ↓ ↓ │
|
|
217
|
+
│ DONE 3. Architect diagnosis │
|
|
218
|
+
│ ↓ │
|
|
219
|
+
│ 4. Executor fix │
|
|
220
|
+
│ ↓ │
|
|
221
|
+
│ 5. Repeat (max 5 cycles) │
|
|
222
|
+
└─────────────────────────────────────────────┘
|
|
223
|
+
\`\`\`
|
|
224
|
+
|
|
225
|
+
Exit conditions:
|
|
226
|
+
- ✅ All goals pass
|
|
227
|
+
- ❌ Max 5 cycles reached
|
|
228
|
+
- ❌ Same failure 3 times
|
|
229
|
+
- ❌ Environment error
|
|
230
230
|
`.trim();
|
|
231
231
|
}
|
|
232
232
|
//# sourceMappingURL=UltraQA.js.map
|
package/dist/lib/gpt-api.js
CHANGED
|
@@ -529,28 +529,28 @@ export async function vibeGptOrchestrate(prompt, systemPrompt, options = {}) {
|
|
|
529
529
|
* Vibe Spec 파싱 (Vibe Spec → 실행 계획)
|
|
530
530
|
*/
|
|
531
531
|
export async function vibeGptParseSpec(spec) {
|
|
532
|
-
return vibeGptOrchestrate(spec, `You are a Vibe Spec parser. Parse the given specification and output a structured execution plan.
|
|
532
|
+
return vibeGptOrchestrate(spec, `You are a Vibe Spec parser. Parse the given specification and output a structured execution plan.
|
|
533
533
|
Output format: { "phases": [...], "files": [...], "dependencies": [...] }`);
|
|
534
534
|
}
|
|
535
535
|
/**
|
|
536
536
|
* Vibe 실행 계획 수립 (Task → Steps)
|
|
537
537
|
*/
|
|
538
538
|
export async function vibeGptPlanExecution(task, context) {
|
|
539
|
-
return vibeGptOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Vibe execution planner. Given a task and context, create a step-by-step execution plan.
|
|
539
|
+
return vibeGptOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Vibe execution planner. Given a task and context, create a step-by-step execution plan.
|
|
540
540
|
Output format: { "steps": [{ "id": 1, "action": "...", "target": "...", "expected": "..." }], "estimatedComplexity": "low|medium|high" }`);
|
|
541
541
|
}
|
|
542
542
|
/**
|
|
543
543
|
* Vibe 코드 분석 (빠른 구조 분석)
|
|
544
544
|
*/
|
|
545
545
|
export async function vibeGptAnalyze(code, question) {
|
|
546
|
-
return vibeGptOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
|
|
546
|
+
return vibeGptOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
|
|
547
547
|
Output format: { "answer": "...", "confidence": 0.0-1.0, "relatedSymbols": [...] }`);
|
|
548
548
|
}
|
|
549
549
|
/**
|
|
550
550
|
* Vibe 다음 액션 결정 (상태 기반)
|
|
551
551
|
*/
|
|
552
552
|
export async function vibeGptDecideNextAction(currentState, availableActions, goal) {
|
|
553
|
-
return vibeGptOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
|
|
553
|
+
return vibeGptOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
|
|
554
554
|
Output format: { "selectedAction": "...", "reason": "...", "parameters": {} }`);
|
|
555
555
|
}
|
|
556
556
|
//# sourceMappingURL=gpt-api.js.map
|
|
@@ -14,10 +14,10 @@ export class KnowledgeGraph {
|
|
|
14
14
|
const timestamp = new Date().toISOString();
|
|
15
15
|
const metadataJson = metadata ? JSON.stringify(metadata) : null;
|
|
16
16
|
try {
|
|
17
|
-
const stmt = this.db.prepare(`
|
|
18
|
-
INSERT OR REPLACE INTO memory_relations
|
|
19
|
-
(sourceKey, targetKey, relationType, strength, metadata, timestamp)
|
|
20
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
17
|
+
const stmt = this.db.prepare(`
|
|
18
|
+
INSERT OR REPLACE INTO memory_relations
|
|
19
|
+
(sourceKey, targetKey, relationType, strength, metadata, timestamp)
|
|
20
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
21
21
|
`);
|
|
22
22
|
stmt.run(sourceKey, targetKey, relationType, strength, metadataJson, timestamp);
|
|
23
23
|
return true;
|
|
@@ -32,9 +32,9 @@ export class MemorySearch {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
searchKeyword(query, limit, category) {
|
|
35
|
-
let sql = `
|
|
36
|
-
SELECT * FROM memories
|
|
37
|
-
WHERE (key LIKE ? OR value LIKE ?)
|
|
35
|
+
let sql = `
|
|
36
|
+
SELECT * FROM memories
|
|
37
|
+
WHERE (key LIKE ? OR value LIKE ?)
|
|
38
38
|
`;
|
|
39
39
|
const params = [`%${query}%`, `%${query}%`];
|
|
40
40
|
if (category) {
|
|
@@ -46,31 +46,31 @@ export class MemorySearch {
|
|
|
46
46
|
return this.db.prepare(sql).all(...params);
|
|
47
47
|
}
|
|
48
48
|
searchTemporal(query, limit) {
|
|
49
|
-
const sql = `
|
|
50
|
-
SELECT * FROM memories
|
|
51
|
-
WHERE key LIKE ? OR value LIKE ?
|
|
52
|
-
ORDER BY timestamp DESC
|
|
53
|
-
LIMIT ?
|
|
49
|
+
const sql = `
|
|
50
|
+
SELECT * FROM memories
|
|
51
|
+
WHERE key LIKE ? OR value LIKE ?
|
|
52
|
+
ORDER BY timestamp DESC
|
|
53
|
+
LIMIT ?
|
|
54
54
|
`;
|
|
55
55
|
return this.db.prepare(sql).all(`%${query}%`, `%${query}%`, limit);
|
|
56
56
|
}
|
|
57
57
|
searchByPriority(query, limit) {
|
|
58
|
-
const sql = `
|
|
59
|
-
SELECT * FROM memories
|
|
60
|
-
WHERE key LIKE ? OR value LIKE ?
|
|
61
|
-
ORDER BY priority DESC, lastAccessed DESC
|
|
62
|
-
LIMIT ?
|
|
58
|
+
const sql = `
|
|
59
|
+
SELECT * FROM memories
|
|
60
|
+
WHERE key LIKE ? OR value LIKE ?
|
|
61
|
+
ORDER BY priority DESC, lastAccessed DESC
|
|
62
|
+
LIMIT ?
|
|
63
63
|
`;
|
|
64
64
|
return this.db.prepare(sql).all(`%${query}%`, `%${query}%`, limit);
|
|
65
65
|
}
|
|
66
66
|
searchContextAware(query, limit, category) {
|
|
67
|
-
let sql = `
|
|
68
|
-
SELECT *,
|
|
69
|
-
(CASE WHEN key LIKE ? THEN 3 ELSE 0 END +
|
|
70
|
-
CASE WHEN value LIKE ? THEN 2 ELSE 0 END +
|
|
71
|
-
priority * 0.5) as relevance_score
|
|
72
|
-
FROM memories
|
|
73
|
-
WHERE key LIKE ? OR value LIKE ?
|
|
67
|
+
let sql = `
|
|
68
|
+
SELECT *,
|
|
69
|
+
(CASE WHEN key LIKE ? THEN 3 ELSE 0 END +
|
|
70
|
+
CASE WHEN value LIKE ? THEN 2 ELSE 0 END +
|
|
71
|
+
priority * 0.5) as relevance_score
|
|
72
|
+
FROM memories
|
|
73
|
+
WHERE key LIKE ? OR value LIKE ?
|
|
74
74
|
`;
|
|
75
75
|
const params = [`%${query}%`, `%${query}%`, `%${query}%`, `%${query}%`];
|
|
76
76
|
if (category) {
|