@su-record/vibe 2.5.11 → 2.5.13
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 +243 -0
- 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 +189 -189
- package/agents/research/codebase-patterns-agent.md +147 -147
- package/agents/research/framework-docs-agent.md +178 -178
- package/agents/research/security-advisory-agent.md +203 -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 -1051
- package/commands/vibe.spec.md +1058 -1058
- package/commands/vibe.utils.md +353 -296
- 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.js +102 -102
- package/dist/cli/llm.js +144 -144
- package/dist/cli/mcp.d.ts +49 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +169 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/postinstall.js +180 -2
- package/dist/cli/postinstall.js.map +1 -1
- package/dist/cli/setup/GlobalInstaller.d.ts +24 -0
- package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -0
- package/dist/cli/setup/GlobalInstaller.js +130 -0
- package/dist/cli/setup/GlobalInstaller.js.map +1 -0
- package/dist/cli/setup/LanguageDetector.d.ts +16 -0
- package/dist/cli/setup/LanguageDetector.d.ts.map +1 -0
- package/dist/cli/setup/LanguageDetector.js +49 -0
- package/dist/cli/setup/LanguageDetector.js.map +1 -0
- package/dist/cli/setup/LegacyMigration.d.ts +25 -0
- package/dist/cli/setup/LegacyMigration.d.ts.map +1 -0
- package/dist/cli/setup/LegacyMigration.js +162 -0
- package/dist/cli/setup/LegacyMigration.js.map +1 -0
- package/dist/cli/setup/ProjectSetup.d.ts +30 -0
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -0
- package/dist/cli/setup/ProjectSetup.js +238 -0
- package/dist/cli/setup/ProjectSetup.js.map +1 -0
- package/dist/cli/setup/index.d.ts +14 -0
- package/dist/cli/setup/index.d.ts.map +1 -0
- package/dist/cli/setup/index.js +18 -0
- package/dist/cli/setup/index.js.map +1 -0
- package/dist/cli/setup.d.ts +10 -77
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +15 -592
- package/dist/cli/setup.js.map +1 -1
- package/dist/lib/DeepInit.d.ts +0 -2
- package/dist/lib/DeepInit.d.ts.map +1 -1
- package/dist/lib/DeepInit.js +24 -26
- package/dist/lib/DeepInit.js.map +1 -1
- package/dist/lib/IterationTracker.d.ts +0 -2
- package/dist/lib/IterationTracker.d.ts.map +1 -1
- package/dist/lib/IterationTracker.js +11 -13
- package/dist/lib/IterationTracker.js.map +1 -1
- package/dist/lib/ModelRouter.d.ts +0 -2
- package/dist/lib/ModelRouter.d.ts.map +1 -1
- package/dist/lib/ModelRouter.js +0 -2
- package/dist/lib/ModelRouter.js.map +1 -1
- package/dist/lib/OrchestrateWorkflow.d.ts +1 -3
- package/dist/lib/OrchestrateWorkflow.d.ts.map +1 -1
- package/dist/lib/OrchestrateWorkflow.js +1 -3
- package/dist/lib/OrchestrateWorkflow.js.map +1 -1
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/SkillFrontmatter.d.ts +0 -2
- package/dist/lib/SkillFrontmatter.d.ts.map +1 -1
- package/dist/lib/SkillFrontmatter.js +28 -30
- package/dist/lib/SkillFrontmatter.js.map +1 -1
- package/dist/lib/SkillQualityGate.d.ts +0 -2
- package/dist/lib/SkillQualityGate.d.ts.map +1 -1
- package/dist/lib/SkillQualityGate.js +9 -11
- package/dist/lib/SkillQualityGate.js.map +1 -1
- package/dist/lib/SkillRepository.d.ts +117 -0
- package/dist/lib/SkillRepository.d.ts.map +1 -0
- package/dist/lib/SkillRepository.js +477 -0
- package/dist/lib/SkillRepository.js.map +1 -0
- package/dist/lib/UltraQA.d.ts +0 -2
- package/dist/lib/UltraQA.d.ts.map +1 -1
- package/dist/lib/UltraQA.js +77 -79
- package/dist/lib/UltraQA.js.map +1 -1
- package/dist/lib/gemini-mcp.d.ts +10 -0
- package/dist/lib/gemini-mcp.d.ts.map +1 -0
- package/dist/lib/gemini-mcp.js +353 -0
- package/dist/lib/gemini-mcp.js.map +1 -0
- package/dist/lib/gpt-api.js +4 -4
- package/dist/lib/gpt-mcp.d.ts +10 -0
- package/dist/lib/gpt-mcp.d.ts.map +1 -0
- package/dist/lib/gpt-mcp.js +352 -0
- package/dist/lib/gpt-mcp.js.map +1 -0
- package/dist/lib/llm/auth/ApiKeyManager.d.ts +21 -0
- package/dist/lib/llm/auth/ApiKeyManager.d.ts.map +1 -0
- package/dist/lib/llm/auth/ApiKeyManager.js +43 -0
- package/dist/lib/llm/auth/ApiKeyManager.js.map +1 -0
- package/dist/lib/llm/auth/ConfigManager.d.ts +29 -0
- package/dist/lib/llm/auth/ConfigManager.d.ts.map +1 -0
- package/dist/lib/llm/auth/ConfigManager.js +67 -0
- package/dist/lib/llm/auth/ConfigManager.js.map +1 -0
- package/dist/lib/llm/auth/index.d.ts +25 -0
- package/dist/lib/llm/auth/index.d.ts.map +1 -0
- package/dist/lib/llm/auth/index.js +83 -0
- package/dist/lib/llm/auth/index.js.map +1 -0
- package/dist/lib/llm/index.d.ts +10 -0
- package/dist/lib/llm/index.d.ts.map +1 -0
- package/dist/lib/llm/index.js +12 -0
- package/dist/lib/llm/index.js.map +1 -0
- package/dist/lib/llm/types.d.ts +96 -0
- package/dist/lib/llm/types.d.ts.map +1 -0
- package/dist/lib/llm/types.js +17 -0
- package/dist/lib/llm/types.js.map +1 -0
- package/dist/lib/llm/utils/index.d.ts +6 -0
- package/dist/lib/llm/utils/index.d.ts.map +1 -0
- package/dist/lib/llm/utils/index.js +6 -0
- package/dist/lib/llm/utils/index.js.map +1 -0
- package/dist/lib/llm/utils/retry.d.ts +25 -0
- package/dist/lib/llm/utils/retry.d.ts.map +1 -0
- package/dist/lib/llm/utils/retry.js +72 -0
- package/dist/lib/llm/utils/retry.js.map +1 -0
- package/dist/lib/llm/utils/stream.d.ts +13 -0
- package/dist/lib/llm/utils/stream.d.ts.map +1 -0
- package/dist/lib/llm/utils/stream.js +110 -0
- package/dist/lib/llm/utils/stream.js.map +1 -0
- 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/AgentExecutor.d.ts +23 -0
- package/dist/orchestrator/AgentExecutor.d.ts.map +1 -0
- package/dist/orchestrator/AgentExecutor.js +231 -0
- package/dist/orchestrator/AgentExecutor.js.map +1 -0
- package/dist/orchestrator/AgentManager.d.ts +73 -0
- package/dist/orchestrator/AgentManager.d.ts.map +1 -0
- package/dist/orchestrator/AgentManager.js +184 -0
- package/dist/orchestrator/AgentManager.js.map +1 -0
- package/dist/orchestrator/LLMCluster.d.ts +70 -0
- package/dist/orchestrator/LLMCluster.d.ts.map +1 -0
- package/dist/orchestrator/LLMCluster.js +91 -0
- package/dist/orchestrator/LLMCluster.js.map +1 -0
- package/dist/orchestrator/MultiLlmResearch.d.ts +27 -0
- package/dist/orchestrator/MultiLlmResearch.d.ts.map +1 -0
- package/dist/orchestrator/MultiLlmResearch.js +145 -0
- package/dist/orchestrator/MultiLlmResearch.js.map +1 -0
- package/dist/orchestrator/SessionStore.d.ts +41 -0
- package/dist/orchestrator/SessionStore.d.ts.map +1 -0
- package/dist/orchestrator/SessionStore.js +117 -0
- package/dist/orchestrator/SessionStore.js.map +1 -0
- package/dist/orchestrator/SmartRouter.d.ts +68 -0
- package/dist/orchestrator/SmartRouter.d.ts.map +1 -0
- package/dist/orchestrator/SmartRouter.js +256 -0
- package/dist/orchestrator/SmartRouter.js.map +1 -0
- package/dist/orchestrator/backgroundAgent.d.ts +10 -28
- package/dist/orchestrator/backgroundAgent.d.ts.map +1 -1
- package/dist/orchestrator/backgroundAgent.js +11 -346
- package/dist/orchestrator/backgroundAgent.js.map +1 -1
- package/dist/orchestrator/index.d.ts +3 -0
- package/dist/orchestrator/index.d.ts.map +1 -1
- package/dist/orchestrator/index.js +4 -0
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/orchestrator.d.ts +19 -154
- package/dist/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.js +90 -514
- package/dist/orchestrator/orchestrator.js.map +1 -1
- package/dist/orchestrator/parallelResearch.d.ts +5 -12
- package/dist/orchestrator/parallelResearch.d.ts.map +1 -1
- package/dist/orchestrator/parallelResearch.js +10 -193
- package/dist/orchestrator/parallelResearch.js.map +1 -1
- package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
- package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
- package/dist/tools/analytics/getUsageAnalytics.js +246 -0
- package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
- 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/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/getCodingGuide.d.ts +7 -0
- package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
- package/dist/tools/convention/getCodingGuide.js +69 -0
- package/dist/tools/convention/getCodingGuide.js.map +1 -0
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
- package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
- package/dist/tools/planning/analyzeRequirements.js +171 -0
- package/dist/tools/planning/analyzeRequirements.js.map +1 -0
- package/dist/tools/planning/createUserStories.d.ts +9 -0
- package/dist/tools/planning/createUserStories.d.ts.map +1 -0
- package/dist/tools/planning/createUserStories.js +124 -0
- package/dist/tools/planning/createUserStories.js.map +1 -0
- package/dist/tools/planning/featureRoadmap.d.ts +10 -0
- package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
- package/dist/tools/planning/featureRoadmap.js +207 -0
- package/dist/tools/planning/featureRoadmap.js.map +1 -0
- package/dist/tools/planning/generatePrd.d.ts +11 -0
- package/dist/tools/planning/generatePrd.d.ts.map +1 -0
- package/dist/tools/planning/generatePrd.js +161 -0
- package/dist/tools/planning/generatePrd.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/analyzePrompt.d.ts +7 -0
- package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/analyzePrompt.js +150 -0
- package/dist/tools/prompt/analyzePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
- package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePrompt.js +110 -0
- package/dist/tools/prompt/enhancePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.js +332 -0
- package/dist/tools/prompt/enhancePromptGemini.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/applyReasoningFramework.d.ts +8 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
- package/dist/tools/reasoning/applyReasoningFramework.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/thinking/analyzeProblem.d.ts +7 -0
- package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
- package/dist/tools/thinking/analyzeProblem.js +55 -0
- package/dist/tools/thinking/analyzeProblem.js.map +1 -0
- package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
- package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
- package/dist/tools/thinking/breakDownProblem.js +145 -0
- package/dist/tools/thinking/breakDownProblem.js.map +1 -0
- package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
- package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
- package/dist/tools/thinking/createThinkingChain.js +44 -0
- package/dist/tools/thinking/createThinkingChain.js.map +1 -0
- package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
- package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
- package/dist/tools/thinking/formatAsPlan.js +78 -0
- package/dist/tools/thinking/formatAsPlan.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/thinking/stepByStepAnalysis.d.ts +8 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
- package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.js +80 -0
- package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
- 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 -0
- package/hooks/scripts/hud-multiline.js +262 -264
- package/hooks/scripts/hud-status.js +291 -293
- package/hooks/scripts/keyword-detector.js +214 -216
- package/hooks/scripts/llm-orchestrate.js +171 -171
- package/hooks/scripts/post-edit.js +97 -97
- package/hooks/scripts/post-tool-verify.js +210 -212
- package/hooks/scripts/pre-tool-guard.js +125 -127
- package/hooks/scripts/recall.js +22 -22
- package/hooks/scripts/session-start.js +30 -30
- package/hooks/scripts/skill-injector.js +191 -193
- 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 -0
- package/skills/commerce-patterns.md +361 -0
- package/skills/context7-usage.md +102 -102
- package/skills/e2e-commerce.md +304 -0
- package/skills/frontend-design.md +92 -0
- 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 -0
- 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
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seo-checklist
|
|
3
|
+
description: "SEO/GEO checklist for web development - meta tags, structured data, Core Web Vitals"
|
|
4
|
+
triggers: [seo, search, meta, sitemap, schema, structured data, og, opengraph, google, naver]
|
|
5
|
+
priority: 65
|
|
6
|
+
---
|
|
7
|
+
# SEO Checklist Skill
|
|
8
|
+
|
|
9
|
+
Development output SEO quality checklist for web projects.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- Web application development with `/vibe.run`
|
|
14
|
+
- Landing pages and marketing sites
|
|
15
|
+
- E-commerce product pages
|
|
16
|
+
- Content-heavy applications
|
|
17
|
+
|
|
18
|
+
## Essential SEO Elements
|
|
19
|
+
|
|
20
|
+
### 1. Meta Tags (Required)
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<!-- Basic -->
|
|
24
|
+
<title>Page Title - Brand (50-60 chars)</title>
|
|
25
|
+
<meta name="description" content="Compelling description (150-160 chars)">
|
|
26
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
27
|
+
<link rel="canonical" href="https://example.com/page">
|
|
28
|
+
|
|
29
|
+
<!-- Open Graph -->
|
|
30
|
+
<meta property="og:title" content="Title">
|
|
31
|
+
<meta property="og:description" content="Description">
|
|
32
|
+
<meta property="og:image" content="https://example.com/og-image.png">
|
|
33
|
+
<meta property="og:url" content="https://example.com/page">
|
|
34
|
+
<meta property="og:type" content="website">
|
|
35
|
+
|
|
36
|
+
<!-- Twitter -->
|
|
37
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
38
|
+
<meta name="twitter:title" content="Title">
|
|
39
|
+
<meta name="twitter:description" content="Description">
|
|
40
|
+
<meta name="twitter:image" content="https://example.com/twitter-image.png">
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. Structured Data (Schema.org)
|
|
44
|
+
|
|
45
|
+
```html
|
|
46
|
+
<script type="application/ld+json">
|
|
47
|
+
{
|
|
48
|
+
"@context": "https://schema.org",
|
|
49
|
+
"@type": "WebPage",
|
|
50
|
+
"name": "Page Title",
|
|
51
|
+
"description": "Page description",
|
|
52
|
+
"url": "https://example.com/page"
|
|
53
|
+
}
|
|
54
|
+
</script>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### Common Schema Types
|
|
58
|
+
|
|
59
|
+
| Type | Use Case |
|
|
60
|
+
|------|----------|
|
|
61
|
+
| `Organization` | Company/brand pages |
|
|
62
|
+
| `Product` | E-commerce product pages |
|
|
63
|
+
| `Article` | Blog posts, news |
|
|
64
|
+
| `FAQPage` | FAQ sections |
|
|
65
|
+
| `BreadcrumbList` | Navigation breadcrumbs |
|
|
66
|
+
| `LocalBusiness` | Local/physical stores |
|
|
67
|
+
|
|
68
|
+
### 3. Technical SEO Files
|
|
69
|
+
|
|
70
|
+
#### robots.txt
|
|
71
|
+
```
|
|
72
|
+
User-agent: *
|
|
73
|
+
Allow: /
|
|
74
|
+
Disallow: /api/
|
|
75
|
+
Disallow: /admin/
|
|
76
|
+
|
|
77
|
+
Sitemap: https://example.com/sitemap.xml
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
#### sitemap.xml
|
|
81
|
+
```xml
|
|
82
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
83
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
84
|
+
<url>
|
|
85
|
+
<loc>https://example.com/</loc>
|
|
86
|
+
<lastmod>2024-01-01</lastmod>
|
|
87
|
+
<changefreq>weekly</changefreq>
|
|
88
|
+
<priority>1.0</priority>
|
|
89
|
+
</url>
|
|
90
|
+
</urlset>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 4. Performance (Core Web Vitals)
|
|
94
|
+
|
|
95
|
+
| Metric | Good | Needs Work | Poor |
|
|
96
|
+
|--------|------|------------|------|
|
|
97
|
+
| LCP (Largest Contentful Paint) | ≤2.5s | ≤4.0s | >4.0s |
|
|
98
|
+
| INP (Interaction to Next Paint) | ≤200ms | ≤500ms | >500ms |
|
|
99
|
+
| CLS (Cumulative Layout Shift) | ≤0.1 | ≤0.25 | >0.25 |
|
|
100
|
+
|
|
101
|
+
### 5. Image Optimization
|
|
102
|
+
|
|
103
|
+
```html
|
|
104
|
+
<!-- Responsive images -->
|
|
105
|
+
<img
|
|
106
|
+
src="image.webp"
|
|
107
|
+
alt="Descriptive alt text"
|
|
108
|
+
width="800"
|
|
109
|
+
height="600"
|
|
110
|
+
loading="lazy"
|
|
111
|
+
decoding="async"
|
|
112
|
+
>
|
|
113
|
+
|
|
114
|
+
<!-- Next.js Image -->
|
|
115
|
+
<Image
|
|
116
|
+
src="/image.webp"
|
|
117
|
+
alt="Descriptive alt text"
|
|
118
|
+
width={800}
|
|
119
|
+
height={600}
|
|
120
|
+
priority={false}
|
|
121
|
+
/>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Framework-Specific Implementation
|
|
125
|
+
|
|
126
|
+
### Next.js (App Router)
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
// app/layout.tsx
|
|
130
|
+
import { Metadata } from 'next';
|
|
131
|
+
|
|
132
|
+
export const metadata: Metadata = {
|
|
133
|
+
title: {
|
|
134
|
+
default: 'Site Name',
|
|
135
|
+
template: '%s | Site Name',
|
|
136
|
+
},
|
|
137
|
+
description: 'Site description',
|
|
138
|
+
openGraph: {
|
|
139
|
+
title: 'Site Name',
|
|
140
|
+
description: 'Site description',
|
|
141
|
+
url: 'https://example.com',
|
|
142
|
+
siteName: 'Site Name',
|
|
143
|
+
images: [{ url: '/og-image.png', width: 1200, height: 630 }],
|
|
144
|
+
locale: 'ko_KR',
|
|
145
|
+
type: 'website',
|
|
146
|
+
},
|
|
147
|
+
robots: {
|
|
148
|
+
index: true,
|
|
149
|
+
follow: true,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### React (Vite + react-helmet-async)
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { Helmet } from 'react-helmet-async';
|
|
158
|
+
|
|
159
|
+
function SEO({ title, description, image }) {
|
|
160
|
+
return (
|
|
161
|
+
<Helmet>
|
|
162
|
+
<title>{title}</title>
|
|
163
|
+
<meta name="description" content={description} />
|
|
164
|
+
<meta property="og:title" content={title} />
|
|
165
|
+
<meta property="og:description" content={description} />
|
|
166
|
+
<meta property="og:image" content={image} />
|
|
167
|
+
</Helmet>
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Quality Checklist
|
|
173
|
+
|
|
174
|
+
### Pre-Launch
|
|
175
|
+
|
|
176
|
+
- [ ] All pages have unique title and description
|
|
177
|
+
- [ ] Open Graph tags on all shareable pages
|
|
178
|
+
- [ ] Structured data validates (Google Rich Results Test)
|
|
179
|
+
- [ ] robots.txt allows important pages
|
|
180
|
+
- [ ] sitemap.xml includes all public pages
|
|
181
|
+
- [ ] canonical URLs set correctly
|
|
182
|
+
- [ ] Images have alt text
|
|
183
|
+
- [ ] No broken links (404s)
|
|
184
|
+
|
|
185
|
+
### Performance
|
|
186
|
+
|
|
187
|
+
- [ ] LCP < 2.5s on mobile
|
|
188
|
+
- [ ] Images optimized (WebP, lazy loading)
|
|
189
|
+
- [ ] CSS/JS minified and compressed
|
|
190
|
+
- [ ] Server response time < 200ms
|
|
191
|
+
|
|
192
|
+
### Accessibility (SEO Impact)
|
|
193
|
+
|
|
194
|
+
- [ ] Semantic HTML (h1-h6 hierarchy)
|
|
195
|
+
- [ ] ARIA labels where needed
|
|
196
|
+
- [ ] Keyboard navigation works
|
|
197
|
+
- [ ] Color contrast meets WCAG AA
|
|
198
|
+
|
|
199
|
+
## Validation Tools
|
|
200
|
+
|
|
201
|
+
| Tool | Purpose |
|
|
202
|
+
|------|---------|
|
|
203
|
+
| [Google Search Console](https://search.google.com/search-console) | Index status, errors |
|
|
204
|
+
| [Google Rich Results Test](https://search.google.com/test/rich-results) | Schema validation |
|
|
205
|
+
| [PageSpeed Insights](https://pagespeed.web.dev/) | Core Web Vitals |
|
|
206
|
+
| [Lighthouse](https://developer.chrome.com/docs/lighthouse) | SEO audit |
|
|
207
|
+
| [Ahrefs/Screaming Frog](https://www.screamingfrog.co.uk/) | Site crawl |
|
|
208
|
+
|
|
209
|
+
## Integration with /vibe.run
|
|
210
|
+
|
|
211
|
+
During implementation phase, check:
|
|
212
|
+
|
|
213
|
+
1. **Phase 1 (Setup)**: Create robots.txt, sitemap structure
|
|
214
|
+
2. **Phase 2-3 (Core)**: Add meta tags to layout/pages
|
|
215
|
+
3. **Phase 4 (Polish)**: Validate structured data, test OG images
|
|
216
|
+
4. **Phase 5 (QA)**: Run Lighthouse SEO audit, fix issues
|
|
217
|
+
|
|
218
|
+
## Generative Engine Optimization (AI 검색)
|
|
219
|
+
|
|
220
|
+
For AI search engines (ChatGPT, Perplexity, Google AI Overviews):
|
|
221
|
+
|
|
222
|
+
### Content Structure for LLM Citation
|
|
223
|
+
|
|
224
|
+
- Add summary paragraph at page top
|
|
225
|
+
- Use clear Q&A format for FAQs
|
|
226
|
+
- Include data/statistics with sources
|
|
227
|
+
- Add author, publish date, last updated
|
|
228
|
+
- Structure content with clear headings
|
|
229
|
+
|
|
230
|
+
### Machine-Readable Formats
|
|
231
|
+
|
|
232
|
+
```json
|
|
233
|
+
// /api/public/faq.json (optional)
|
|
234
|
+
{
|
|
235
|
+
"faqs": [
|
|
236
|
+
{
|
|
237
|
+
"question": "What is X?",
|
|
238
|
+
"answer": "X is...",
|
|
239
|
+
"source": "https://example.com/docs",
|
|
240
|
+
"lastUpdated": "2024-01-01"
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
}
|
|
244
|
+
```
|
package/skills/tool-fallback.md
CHANGED
|
@@ -1,190 +1,190 @@
|
|
|
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
|
-
GPT hook: failures=2, state=CLOSED
|
|
32
|
-
Gemini hook: 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 plugin | `resolve-library-id` → `get-library-docs` |
|
|
42
|
-
| VibeOrchestrator | `smartWebSearch()` - auto fallback chain |
|
|
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: VibeOrchestrator.smartWebSearch()
|
|
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 External LLM Fails
|
|
82
|
-
|
|
83
|
-
**Production (VibeOrchestrator):**
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
VibeOrchestrator.smartRoute({ type, prompt })
|
|
87
|
-
↓
|
|
88
|
-
LLM priority based on task type:
|
|
89
|
-
- architecture/debugging: GPT → Gemini → Claude
|
|
90
|
-
- uiux/code-analysis: Gemini → GPT → Claude
|
|
91
|
-
- code-gen: Claude only
|
|
92
|
-
↓
|
|
93
|
-
Auto fallback on primary LLM failure
|
|
94
|
-
↓
|
|
95
|
-
Claude handles directly when all fail
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Test/Debug Hooks (development only):**
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
gpt- or gpt. [question] fails
|
|
102
|
-
↓
|
|
103
|
-
Check circuit: If OPEN, skip to next
|
|
104
|
-
↓
|
|
105
|
-
Try gemini- or gemini. [question] (similar capability)
|
|
106
|
-
↓
|
|
107
|
-
Try context7 (for docs)
|
|
108
|
-
↓
|
|
109
|
-
Claude solves alone
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
> **Note:** `test-gpt`, `test-gemini` prefixes are for hook connectivity testing only.
|
|
113
|
-
> For actual work, use VIBE commands (`/vibe.run`, `/vibe.spec`, etc.) and
|
|
114
|
-
> VibeOrchestrator will automatically select the appropriate LLM.
|
|
115
|
-
|
|
116
|
-
## Retry Strategy with Circuit Breaker
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
Request to tool
|
|
120
|
-
↓
|
|
121
|
-
Check circuit state
|
|
122
|
-
↓
|
|
123
|
-
┌─ OPEN? ──→ Use alternative immediately (no retry)
|
|
124
|
-
│
|
|
125
|
-
└─ CLOSED/HALF-OPEN? ──→ Try request
|
|
126
|
-
↓
|
|
127
|
-
Success? ──→ Reset failure count
|
|
128
|
-
↓ No
|
|
129
|
-
Retry with backoff:
|
|
130
|
-
retry(1): wait 2s
|
|
131
|
-
retry(2): wait 4s
|
|
132
|
-
retry(3): wait 8s
|
|
133
|
-
↓
|
|
134
|
-
All failed? ──→ +1 failure, check threshold
|
|
135
|
-
↓
|
|
136
|
-
failures >= 3? ──→ OPEN circuit for 30s
|
|
137
|
-
↓
|
|
138
|
-
Use alternative
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## VibeOrchestrator Smart Routing
|
|
142
|
-
|
|
143
|
-
VIBE commands (`/vibe.spec`, `/vibe.run`, etc.) use VibeOrchestrator internally.
|
|
144
|
-
|
|
145
|
-
### LLM Priority by Task Type
|
|
146
|
-
|
|
147
|
-
| Task Type | Primary | Secondary | Fallback |
|
|
148
|
-
|-----------------|---------|-----------|----------|
|
|
149
|
-
| `architecture` | GPT | Gemini | Claude |
|
|
150
|
-
| `debugging` | GPT | Gemini | Claude |
|
|
151
|
-
| `uiux` | Gemini | GPT | Claude |
|
|
152
|
-
| `code-analysis` | Gemini | GPT | Claude |
|
|
153
|
-
| `web-search` | GPT | Gemini | Claude |
|
|
154
|
-
| `code-gen` | Claude | - | - |
|
|
155
|
-
| `general` | Claude | - | - |
|
|
156
|
-
|
|
157
|
-
### Auto Fallback Logic
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
smartRoute({ type: 'architecture', prompt })
|
|
161
|
-
↓
|
|
162
|
-
1. Try GPT (max 2 retries)
|
|
163
|
-
↓ fails (429, 401, 5xx)
|
|
164
|
-
2. Try Gemini (max 2 retries)
|
|
165
|
-
↓ fails
|
|
166
|
-
3. Claude handles directly (fallback message)
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Retry vs Immediate Switch
|
|
170
|
-
|
|
171
|
-
| Error | Action |
|
|
172
|
-
|------------------|------------------------|
|
|
173
|
-
| 429 Rate Limit | Skip to next LLM |
|
|
174
|
-
| 401/403 Auth | Skip to next LLM |
|
|
175
|
-
| Network Error | Retry with backoff |
|
|
176
|
-
| 5xx Server Error | Retry then switch |
|
|
177
|
-
|
|
178
|
-
### Availability Cache
|
|
179
|
-
|
|
180
|
-
- 5-minute TTL for LLM status cache
|
|
181
|
-
- Auto-disable after 3 consecutive failures
|
|
182
|
-
- Failed LLMs are skipped in subsequent requests
|
|
183
|
-
|
|
184
|
-
## Principles
|
|
185
|
-
|
|
186
|
-
1. **Never stop** - Always find an alternative
|
|
187
|
-
2. **Before asking user** - Try alternatives first
|
|
188
|
-
3. **Track failures** - Open circuit after 3 consecutive failures
|
|
189
|
-
4. **Auto-recover** - Test after 30s cooldown
|
|
190
|
-
5. **Fail fast** - Skip blocked tools immediately
|
|
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
|
+
GPT hook: failures=2, state=CLOSED
|
|
32
|
+
Gemini hook: 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 plugin | `resolve-library-id` → `get-library-docs` |
|
|
42
|
+
| VibeOrchestrator | `smartWebSearch()` - auto fallback chain |
|
|
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: VibeOrchestrator.smartWebSearch()
|
|
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 External LLM Fails
|
|
82
|
+
|
|
83
|
+
**Production (VibeOrchestrator):**
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
VibeOrchestrator.smartRoute({ type, prompt })
|
|
87
|
+
↓
|
|
88
|
+
LLM priority based on task type:
|
|
89
|
+
- architecture/debugging: GPT → Gemini → Claude
|
|
90
|
+
- uiux/code-analysis: Gemini → GPT → Claude
|
|
91
|
+
- code-gen: Claude only
|
|
92
|
+
↓
|
|
93
|
+
Auto fallback on primary LLM failure
|
|
94
|
+
↓
|
|
95
|
+
Claude handles directly when all fail
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Test/Debug Hooks (development only):**
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
gpt- or gpt. [question] fails
|
|
102
|
+
↓
|
|
103
|
+
Check circuit: If OPEN, skip to next
|
|
104
|
+
↓
|
|
105
|
+
Try gemini- or gemini. [question] (similar capability)
|
|
106
|
+
↓
|
|
107
|
+
Try context7 (for docs)
|
|
108
|
+
↓
|
|
109
|
+
Claude solves alone
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
> **Note:** `test-gpt`, `test-gemini` prefixes are for hook connectivity testing only.
|
|
113
|
+
> For actual work, use VIBE commands (`/vibe.run`, `/vibe.spec`, etc.) and
|
|
114
|
+
> VibeOrchestrator will automatically select the appropriate LLM.
|
|
115
|
+
|
|
116
|
+
## Retry Strategy with Circuit Breaker
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Request to tool
|
|
120
|
+
↓
|
|
121
|
+
Check circuit state
|
|
122
|
+
↓
|
|
123
|
+
┌─ OPEN? ──→ Use alternative immediately (no retry)
|
|
124
|
+
│
|
|
125
|
+
└─ CLOSED/HALF-OPEN? ──→ Try request
|
|
126
|
+
↓
|
|
127
|
+
Success? ──→ Reset failure count
|
|
128
|
+
↓ No
|
|
129
|
+
Retry with backoff:
|
|
130
|
+
retry(1): wait 2s
|
|
131
|
+
retry(2): wait 4s
|
|
132
|
+
retry(3): wait 8s
|
|
133
|
+
↓
|
|
134
|
+
All failed? ──→ +1 failure, check threshold
|
|
135
|
+
↓
|
|
136
|
+
failures >= 3? ──→ OPEN circuit for 30s
|
|
137
|
+
↓
|
|
138
|
+
Use alternative
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## VibeOrchestrator Smart Routing
|
|
142
|
+
|
|
143
|
+
VIBE commands (`/vibe.spec`, `/vibe.run`, etc.) use VibeOrchestrator internally.
|
|
144
|
+
|
|
145
|
+
### LLM Priority by Task Type
|
|
146
|
+
|
|
147
|
+
| Task Type | Primary | Secondary | Fallback |
|
|
148
|
+
|-----------------|---------|-----------|----------|
|
|
149
|
+
| `architecture` | GPT | Gemini | Claude |
|
|
150
|
+
| `debugging` | GPT | Gemini | Claude |
|
|
151
|
+
| `uiux` | Gemini | GPT | Claude |
|
|
152
|
+
| `code-analysis` | Gemini | GPT | Claude |
|
|
153
|
+
| `web-search` | GPT | Gemini | Claude |
|
|
154
|
+
| `code-gen` | Claude | - | - |
|
|
155
|
+
| `general` | Claude | - | - |
|
|
156
|
+
|
|
157
|
+
### Auto Fallback Logic
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
smartRoute({ type: 'architecture', prompt })
|
|
161
|
+
↓
|
|
162
|
+
1. Try GPT (max 2 retries)
|
|
163
|
+
↓ fails (429, 401, 5xx)
|
|
164
|
+
2. Try Gemini (max 2 retries)
|
|
165
|
+
↓ fails
|
|
166
|
+
3. Claude handles directly (fallback message)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Retry vs Immediate Switch
|
|
170
|
+
|
|
171
|
+
| Error | Action |
|
|
172
|
+
|------------------|------------------------|
|
|
173
|
+
| 429 Rate Limit | Skip to next LLM |
|
|
174
|
+
| 401/403 Auth | Skip to next LLM |
|
|
175
|
+
| Network Error | Retry with backoff |
|
|
176
|
+
| 5xx Server Error | Retry then switch |
|
|
177
|
+
|
|
178
|
+
### Availability Cache
|
|
179
|
+
|
|
180
|
+
- 5-minute TTL for LLM status cache
|
|
181
|
+
- Auto-disable after 3 consecutive failures
|
|
182
|
+
- Failed LLMs are skipped in subsequent requests
|
|
183
|
+
|
|
184
|
+
## Principles
|
|
185
|
+
|
|
186
|
+
1. **Never stop** - Always find an alternative
|
|
187
|
+
2. **Before asking user** - Try alternatives first
|
|
188
|
+
3. **Track failures** - Open circuit after 3 consecutive failures
|
|
189
|
+
4. **Auto-recover** - Test after 30s cooldown
|
|
190
|
+
5. **Fail fast** - Skip blocked tools immediately
|