@su-record/vibe 2.7.10 → 2.7.12
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/.env.example +37 -37
- package/CLAUDE.md +126 -222
- package/LICENSE +21 -21
- package/README.md +580 -580
- 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/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- 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/junior-mentor.md +141 -141
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- 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/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +94 -94
- package/agents/ui/ui-dataviz-advisor.md +69 -69
- package/agents/ui/ui-design-system-gen.md +57 -57
- package/agents/ui/ui-industry-analyzer.md +49 -49
- package/agents/ui/ui-layout-architect.md +65 -65
- package/agents/ui/ui-stack-implementer.md +68 -68
- package/agents/ui/ux-compliance-reviewer.md +81 -81
- package/agents/ui-previewer.md +260 -260
- package/commands/vibe.run.md +83 -0
- package/commands/vibe.spec.review.md +558 -558
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.voice.md +79 -79
- package/dist/cli/auth.d.ts +1 -1
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +15 -7
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +62 -56
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -6
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/skills.d.ts +13 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +83 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +3 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +64 -47
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +47 -47
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/constants.d.ts +8 -0
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +33 -0
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-agents.js +32 -32
- package/dist/cli/postinstall/cursor-rules.js +83 -83
- package/dist/cli/postinstall/cursor-skills.js +743 -743
- package/dist/cli/postinstall/index.d.ts +1 -1
- package/dist/cli/postinstall/index.d.ts.map +1 -1
- package/dist/cli/postinstall/index.js +1 -1
- package/dist/cli/postinstall/index.js.map +1 -1
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +5 -0
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup/Provisioner.js +42 -42
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/infra/lib/DeepInit.js +24 -24
- package/dist/infra/lib/IterationTracker.js +11 -11
- package/dist/infra/lib/PythonParser.js +108 -108
- package/dist/infra/lib/ReviewRace.js +96 -96
- package/dist/infra/lib/SkillFrontmatter.js +28 -28
- package/dist/infra/lib/SkillQualityGate.js +9 -9
- package/dist/infra/lib/SkillRepository.js +159 -159
- package/dist/infra/lib/UltraQA.js +99 -99
- package/dist/infra/lib/autonomy/AuditStore.js +41 -41
- package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
- package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
- package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
- package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
- package/dist/infra/lib/embedding/VectorStore.js +22 -22
- package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
- package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts +79 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts.map +1 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.js +259 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.js.map +1 -0
- package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
- package/dist/infra/lib/evolution/InsightStore.js +90 -90
- package/dist/infra/lib/evolution/RollbackManager.js +5 -5
- package/dist/infra/lib/evolution/SkillBenchmark.d.ts +81 -0
- package/dist/infra/lib/evolution/SkillBenchmark.d.ts.map +1 -0
- package/dist/infra/lib/evolution/SkillBenchmark.js +233 -0
- package/dist/infra/lib/evolution/SkillBenchmark.js.map +1 -0
- package/dist/infra/lib/evolution/SkillClassifier.d.ts +35 -0
- package/dist/infra/lib/evolution/SkillClassifier.d.ts.map +1 -0
- package/dist/infra/lib/evolution/SkillClassifier.js +167 -0
- package/dist/infra/lib/evolution/SkillClassifier.js.map +1 -0
- package/dist/infra/lib/evolution/SkillEvalRunner.d.ts +102 -0
- package/dist/infra/lib/evolution/SkillEvalRunner.d.ts.map +1 -0
- package/dist/infra/lib/evolution/SkillEvalRunner.js +256 -0
- package/dist/infra/lib/evolution/SkillEvalRunner.js.map +1 -0
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/evolution/__tests__/eval.test.d.ts +2 -0
- package/dist/infra/lib/evolution/__tests__/eval.test.d.ts.map +1 -0
- package/dist/infra/lib/evolution/__tests__/eval.test.js +539 -0
- package/dist/infra/lib/evolution/__tests__/eval.test.js.map +1 -0
- package/dist/infra/lib/evolution/index.d.ts +8 -0
- package/dist/infra/lib/evolution/index.d.ts.map +1 -1
- package/dist/infra/lib/evolution/index.js +5 -0
- package/dist/infra/lib/evolution/index.js.map +1 -1
- package/dist/infra/lib/gemini/constants.js +14 -14
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gpt/oauth.js +44 -44
- package/dist/infra/lib/gpt/orchestration.js +4 -4
- package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/infra/lib/memory/MemorySearch.js +57 -57
- package/dist/infra/lib/memory/MemoryStorage.js +181 -181
- package/dist/infra/lib/memory/ObservationStore.js +28 -28
- package/dist/infra/lib/memory/ReflectionStore.js +30 -30
- package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
- package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
- package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
- package/dist/infra/orchestrator/AgentManager.js +12 -12
- package/dist/infra/orchestrator/AgentRegistry.js +65 -65
- package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/infra/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/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/dist/tools/semantic/astGrep.test.js +6 -6
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/hooks/gemini-hooks.json +73 -73
- package/hooks/hooks.json +137 -137
- package/hooks/scripts/code-check.js +70 -70
- package/hooks/scripts/context-save.js +212 -212
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +646 -646
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +104 -104
- package/hooks/scripts/session-start.js +106 -106
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +100 -100
- 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 +121 -121
- package/skills/agents-md/SKILL.md +120 -120
- package/skills/arch-guard/SKILL.md +180 -0
- package/skills/brand-assets/SKILL.md +146 -146
- package/skills/capability-loop/SKILL.md +167 -0
- package/skills/characterization-test/SKILL.md +206 -206
- package/skills/commerce-patterns/SKILL.md +59 -59
- package/skills/commit-push-pr/SKILL.md +75 -75
- package/skills/context7-usage/SKILL.md +105 -105
- package/skills/core-capabilities/SKILL.md +48 -48
- package/skills/e2e-commerce/SKILL.md +57 -57
- package/skills/exec-plan/SKILL.md +147 -0
- package/skills/frontend-design/SKILL.md +73 -73
- package/skills/git-worktree/SKILL.md +72 -72
- package/skills/handoff/SKILL.md +109 -109
- package/skills/parallel-research/SKILL.md +87 -87
- package/skills/priority-todos/SKILL.md +63 -63
- package/skills/seo-checklist/SKILL.md +57 -57
- package/skills/techdebt/SKILL.md +122 -122
- package/skills/tool-fallback/SKILL.md +103 -103
- package/skills/typescript-advanced-types/SKILL.md +65 -65
- package/skills/ui-ux-pro-max/SKILL.md +206 -206
- package/skills/vercel-react-best-practices/SKILL.md +59 -59
- package/skills/video-production/SKILL.md +51 -51
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/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/performance.md +236 -236
- 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/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- 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/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
|
@@ -1,146 +1,146 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: brand-assets
|
|
3
|
-
description: "Auto-generate app icons and favicons from SPEC brand information using Gemini Image API"
|
|
4
|
-
triggers: [icon, favicon, brand, logo, app icon, branding, assets]
|
|
5
|
-
priority: 65
|
|
6
|
-
---
|
|
7
|
-
# Brand Assets Generation Skill
|
|
8
|
-
|
|
9
|
-
Auto-generate app icons and favicons based on SPEC brand information.
|
|
10
|
-
|
|
11
|
-
## When to Use
|
|
12
|
-
|
|
13
|
-
- First-time project setup with `/vibe.run`
|
|
14
|
-
- When SPEC contains brand/design information
|
|
15
|
-
- When Gemini API key is configured
|
|
16
|
-
|
|
17
|
-
## Prerequisites
|
|
18
|
-
|
|
19
|
-
- Gemini API key configured (`vibe gemini auth`)
|
|
20
|
-
- SPEC with brand context (app name, colors, style)
|
|
21
|
-
|
|
22
|
-
## Generated Assets
|
|
23
|
-
|
|
24
|
-
### Web
|
|
25
|
-
- `favicon.ico` (16x16, 32x32, 48x48)
|
|
26
|
-
- `favicon-16x16.png`
|
|
27
|
-
- `favicon-32x32.png`
|
|
28
|
-
- `apple-touch-icon.png` (180x180)
|
|
29
|
-
- `android-chrome-192x192.png`
|
|
30
|
-
- `android-chrome-512x512.png`
|
|
31
|
-
|
|
32
|
-
### Mobile (if applicable)
|
|
33
|
-
- iOS: `AppIcon.appiconset/` with all sizes
|
|
34
|
-
- Android: `mipmap-*/` adaptive icons
|
|
35
|
-
|
|
36
|
-
## SPEC Brand Section
|
|
37
|
-
|
|
38
|
-
For best results, include brand info in your SPEC:
|
|
39
|
-
|
|
40
|
-
```yaml
|
|
41
|
-
<context>
|
|
42
|
-
Brand:
|
|
43
|
-
- App Name: MyApp
|
|
44
|
-
- Primary Color: #2F6BFF
|
|
45
|
-
- Style: Modern, minimal, flat design
|
|
46
|
-
- Icon Concept: Abstract geometric shape representing connectivity
|
|
47
|
-
</context>
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Generation Flow
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
SPEC Brand Info
|
|
54
|
-
|
|
|
55
|
-
v
|
|
56
|
-
Extract: name, colors, style keywords
|
|
57
|
-
|
|
|
58
|
-
v
|
|
59
|
-
Generate Prompt: "App icon for [name], [style], [colors]..."
|
|
60
|
-
|
|
|
61
|
-
v
|
|
62
|
-
Gemini Image API (gemini-2.5-flash-image)
|
|
63
|
-
|
|
|
64
|
-
v
|
|
65
|
-
Resize & Convert: All platform sizes
|
|
66
|
-
|
|
|
67
|
-
v
|
|
68
|
-
Save to: public/ or assets/
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Auto-Trigger Conditions
|
|
72
|
-
|
|
73
|
-
1. First `/vibe.run` execution (no existing icons)
|
|
74
|
-
2. SPEC contains brand/design context
|
|
75
|
-
3. Gemini API key is available
|
|
76
|
-
4. `--generate-icons` flag passed
|
|
77
|
-
|
|
78
|
-
## Skip Conditions
|
|
79
|
-
|
|
80
|
-
- Icons already exist (unless `--regenerate-icons`)
|
|
81
|
-
- No brand info in SPEC
|
|
82
|
-
- Gemini API not configured
|
|
83
|
-
|
|
84
|
-
## Prompt Template
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
Create a modern app icon for "[APP_NAME]".
|
|
88
|
-
|
|
89
|
-
Style: [STYLE_KEYWORDS]
|
|
90
|
-
Primary color: [PRIMARY_COLOR]
|
|
91
|
-
Design: Minimalist, professional, suitable for mobile app
|
|
92
|
-
Format: Square, clean edges, simple recognizable shape
|
|
93
|
-
Background: Solid color or subtle gradient
|
|
94
|
-
|
|
95
|
-
Requirements:
|
|
96
|
-
- Works at small sizes (16x16 to 512x512)
|
|
97
|
-
- No text or letters
|
|
98
|
-
- Single focal element
|
|
99
|
-
- High contrast for visibility
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Manual Usage
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
# [LLM_SCRIPT] = {{CORE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
106
|
-
# Generate via llm-orchestrate (when Gemini configured)
|
|
107
|
-
node "[LLM_SCRIPT]" gemini image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## Integration with /vibe.run
|
|
111
|
-
|
|
112
|
-
During Phase 1 (Setup), if brand assets don't exist:
|
|
113
|
-
|
|
114
|
-
1. Parse SPEC for brand context
|
|
115
|
-
2. Generate icon via Gemini Image API
|
|
116
|
-
3. Create all size variants
|
|
117
|
-
4. Place in appropriate directories
|
|
118
|
-
5. Update manifest files if needed
|
|
119
|
-
|
|
120
|
-
## Fallback Strategy
|
|
121
|
-
|
|
122
|
-
If Gemini Image fails:
|
|
123
|
-
1. Generate text-based monogram icon (first letter)
|
|
124
|
-
2. Use project primary color as background
|
|
125
|
-
3. Create simple geometric placeholder
|
|
126
|
-
|
|
127
|
-
## Output Structure
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
public/
|
|
131
|
-
favicon.ico
|
|
132
|
-
favicon-16x16.png
|
|
133
|
-
favicon-32x32.png
|
|
134
|
-
apple-touch-icon.png
|
|
135
|
-
android-chrome-192x192.png
|
|
136
|
-
android-chrome-512x512.png
|
|
137
|
-
site.webmanifest
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Done Criteria (K4)
|
|
141
|
-
|
|
142
|
-
- [ ] All required sizes generated (16x16 through 512x512)
|
|
143
|
-
- [ ] Icons work at small sizes (recognizable at 16x16)
|
|
144
|
-
- [ ] No text/letters in icon (illegible at small sizes)
|
|
145
|
-
- [ ] `site.webmanifest` updated with icon paths
|
|
146
|
-
- [ ] Fallback generated if Gemini API unavailable
|
|
1
|
+
---
|
|
2
|
+
name: brand-assets
|
|
3
|
+
description: "Auto-generate app icons and favicons from SPEC brand information using Gemini Image API"
|
|
4
|
+
triggers: [icon, favicon, brand, logo, app icon, branding, assets]
|
|
5
|
+
priority: 65
|
|
6
|
+
---
|
|
7
|
+
# Brand Assets Generation Skill
|
|
8
|
+
|
|
9
|
+
Auto-generate app icons and favicons based on SPEC brand information.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- First-time project setup with `/vibe.run`
|
|
14
|
+
- When SPEC contains brand/design information
|
|
15
|
+
- When Gemini API key is configured
|
|
16
|
+
|
|
17
|
+
## Prerequisites
|
|
18
|
+
|
|
19
|
+
- Gemini API key configured (`vibe gemini auth`)
|
|
20
|
+
- SPEC with brand context (app name, colors, style)
|
|
21
|
+
|
|
22
|
+
## Generated Assets
|
|
23
|
+
|
|
24
|
+
### Web
|
|
25
|
+
- `favicon.ico` (16x16, 32x32, 48x48)
|
|
26
|
+
- `favicon-16x16.png`
|
|
27
|
+
- `favicon-32x32.png`
|
|
28
|
+
- `apple-touch-icon.png` (180x180)
|
|
29
|
+
- `android-chrome-192x192.png`
|
|
30
|
+
- `android-chrome-512x512.png`
|
|
31
|
+
|
|
32
|
+
### Mobile (if applicable)
|
|
33
|
+
- iOS: `AppIcon.appiconset/` with all sizes
|
|
34
|
+
- Android: `mipmap-*/` adaptive icons
|
|
35
|
+
|
|
36
|
+
## SPEC Brand Section
|
|
37
|
+
|
|
38
|
+
For best results, include brand info in your SPEC:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
<context>
|
|
42
|
+
Brand:
|
|
43
|
+
- App Name: MyApp
|
|
44
|
+
- Primary Color: #2F6BFF
|
|
45
|
+
- Style: Modern, minimal, flat design
|
|
46
|
+
- Icon Concept: Abstract geometric shape representing connectivity
|
|
47
|
+
</context>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Generation Flow
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
SPEC Brand Info
|
|
54
|
+
|
|
|
55
|
+
v
|
|
56
|
+
Extract: name, colors, style keywords
|
|
57
|
+
|
|
|
58
|
+
v
|
|
59
|
+
Generate Prompt: "App icon for [name], [style], [colors]..."
|
|
60
|
+
|
|
|
61
|
+
v
|
|
62
|
+
Gemini Image API (gemini-2.5-flash-image)
|
|
63
|
+
|
|
|
64
|
+
v
|
|
65
|
+
Resize & Convert: All platform sizes
|
|
66
|
+
|
|
|
67
|
+
v
|
|
68
|
+
Save to: public/ or assets/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Auto-Trigger Conditions
|
|
72
|
+
|
|
73
|
+
1. First `/vibe.run` execution (no existing icons)
|
|
74
|
+
2. SPEC contains brand/design context
|
|
75
|
+
3. Gemini API key is available
|
|
76
|
+
4. `--generate-icons` flag passed
|
|
77
|
+
|
|
78
|
+
## Skip Conditions
|
|
79
|
+
|
|
80
|
+
- Icons already exist (unless `--regenerate-icons`)
|
|
81
|
+
- No brand info in SPEC
|
|
82
|
+
- Gemini API not configured
|
|
83
|
+
|
|
84
|
+
## Prompt Template
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Create a modern app icon for "[APP_NAME]".
|
|
88
|
+
|
|
89
|
+
Style: [STYLE_KEYWORDS]
|
|
90
|
+
Primary color: [PRIMARY_COLOR]
|
|
91
|
+
Design: Minimalist, professional, suitable for mobile app
|
|
92
|
+
Format: Square, clean edges, simple recognizable shape
|
|
93
|
+
Background: Solid color or subtle gradient
|
|
94
|
+
|
|
95
|
+
Requirements:
|
|
96
|
+
- Works at small sizes (16x16 to 512x512)
|
|
97
|
+
- No text or letters
|
|
98
|
+
- Single focal element
|
|
99
|
+
- High contrast for visibility
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Manual Usage
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# [LLM_SCRIPT] = {{CORE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
106
|
+
# Generate via llm-orchestrate (when Gemini configured)
|
|
107
|
+
node "[LLM_SCRIPT]" gemini image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Integration with /vibe.run
|
|
111
|
+
|
|
112
|
+
During Phase 1 (Setup), if brand assets don't exist:
|
|
113
|
+
|
|
114
|
+
1. Parse SPEC for brand context
|
|
115
|
+
2. Generate icon via Gemini Image API
|
|
116
|
+
3. Create all size variants
|
|
117
|
+
4. Place in appropriate directories
|
|
118
|
+
5. Update manifest files if needed
|
|
119
|
+
|
|
120
|
+
## Fallback Strategy
|
|
121
|
+
|
|
122
|
+
If Gemini Image fails:
|
|
123
|
+
1. Generate text-based monogram icon (first letter)
|
|
124
|
+
2. Use project primary color as background
|
|
125
|
+
3. Create simple geometric placeholder
|
|
126
|
+
|
|
127
|
+
## Output Structure
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
public/
|
|
131
|
+
favicon.ico
|
|
132
|
+
favicon-16x16.png
|
|
133
|
+
favicon-32x32.png
|
|
134
|
+
apple-touch-icon.png
|
|
135
|
+
android-chrome-192x192.png
|
|
136
|
+
android-chrome-512x512.png
|
|
137
|
+
site.webmanifest
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Done Criteria (K4)
|
|
141
|
+
|
|
142
|
+
- [ ] All required sizes generated (16x16 through 512x512)
|
|
143
|
+
- [ ] Icons work at small sizes (recognizable at 16x16)
|
|
144
|
+
- [ ] No text/letters in icon (illegible at small sizes)
|
|
145
|
+
- [ ] `site.webmanifest` updated with icon paths
|
|
146
|
+
- [ ] Fallback generated if Gemini API unavailable
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: capability-loop
|
|
3
|
+
description: "When an agent fails, diagnose which capability is missing and build it into the repo."
|
|
4
|
+
triggers: [capability loop, failure loop, build capability, missing capability, agent failed, why did it fail]
|
|
5
|
+
priority: 75
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Capability Loop — Failure → Capability Building
|
|
9
|
+
|
|
10
|
+
> **Principle**: "Ask what capability is missing, not why it failed." Every failure is a missing tool, guardrail, abstraction, or piece of documentation. Build the capability so the failure NEVER recurs.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
| Trigger | Signal |
|
|
15
|
+
|---------|--------|
|
|
16
|
+
| Agent fails a task | Error, wrong output, timeout, confusion |
|
|
17
|
+
| Same error occurs twice | Pattern of missing capability |
|
|
18
|
+
| Agent asks clarifying question | Information not discoverable |
|
|
19
|
+
| Review finds recurring issue | Systemic gap, not one-off mistake |
|
|
20
|
+
| Manual intervention needed | Agent should have been self-sufficient |
|
|
21
|
+
|
|
22
|
+
## Core Flow
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
FAILURE → DIAGNOSE → CLASSIFY → BUILD → VERIFY → PERSIST
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Step 1: DIAGNOSE — What Capability is Missing?
|
|
29
|
+
|
|
30
|
+
Do NOT ask "why did it fail?" Instead ask: **"What would have prevented this failure?"**
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Diagnosis questions (answer ALL):
|
|
34
|
+
|
|
35
|
+
1. TOOL: Did the agent lack a tool to accomplish the task?
|
|
36
|
+
→ Missing CLI command, missing API, missing utility function
|
|
37
|
+
|
|
38
|
+
2. GUARDRAIL: Did the agent do something it shouldn't have?
|
|
39
|
+
→ Missing lint rule, missing test, missing hook check
|
|
40
|
+
|
|
41
|
+
3. ABSTRACTION: Did the agent struggle with unnecessary complexity?
|
|
42
|
+
→ Missing helper, missing wrapper, missing shared module
|
|
43
|
+
|
|
44
|
+
4. DOCUMENTATION: Did the agent lack discoverable information?
|
|
45
|
+
→ Missing CLAUDE.md entry, missing code comment, missing type definition
|
|
46
|
+
|
|
47
|
+
5. FEEDBACK: Did the agent not know it was doing the wrong thing?
|
|
48
|
+
→ Missing error message, missing test assertion, missing type error
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step 2: CLASSIFY — What Type of Capability?
|
|
52
|
+
|
|
53
|
+
| Category | Example | Where to Build |
|
|
54
|
+
|----------|---------|---------------|
|
|
55
|
+
| **Tool** | "No way to validate schema" | New CLI command or skill |
|
|
56
|
+
| **Guardrail** | "Accidentally deleted migration" | New hook or test |
|
|
57
|
+
| **Abstraction** | "Copy-pasted auth logic 3 times" | New shared module |
|
|
58
|
+
| **Documentation** | "Didn't know config format" | CLAUDE.md or code comments |
|
|
59
|
+
| **Feedback** | "Didn't realize test was wrong" | Better error messages or types |
|
|
60
|
+
|
|
61
|
+
### Step 3: BUILD — Create the Capability
|
|
62
|
+
|
|
63
|
+
Based on classification, build the appropriate artifact:
|
|
64
|
+
|
|
65
|
+
#### Tool → New Skill or Command
|
|
66
|
+
```
|
|
67
|
+
1. Create skills/{capability-name}/SKILL.md
|
|
68
|
+
2. Add triggers for automatic activation
|
|
69
|
+
3. Test with a simulated scenario
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
#### Guardrail → New Test or Hook
|
|
73
|
+
```
|
|
74
|
+
1. Add test to tests/arch-guard.test.ts (if structural)
|
|
75
|
+
2. Or add check to hooks/scripts/ (if runtime)
|
|
76
|
+
3. Verify it catches the original failure
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### Abstraction → New Module
|
|
80
|
+
```
|
|
81
|
+
1. Extract shared code into appropriate location
|
|
82
|
+
2. Update existing callers to use new abstraction
|
|
83
|
+
3. Add tests for the abstraction
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Documentation → CLAUDE.md or Inline
|
|
87
|
+
```
|
|
88
|
+
1. If it's a constraint/gotcha → add to CLAUDE.md "Gotchas" section
|
|
89
|
+
2. If it's discoverable from code → add code comment or type definition
|
|
90
|
+
3. If it's a pattern → add to relevant language rule file
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### Feedback → Better Types or Errors
|
|
94
|
+
```
|
|
95
|
+
1. Add TypeScript type that prevents the mistake at compile time
|
|
96
|
+
2. Or add runtime validation with clear error message
|
|
97
|
+
3. Or add test that catches the mistake early
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Step 4: VERIFY — Reproduce and Confirm Fix
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
1. Reproduce the original failure scenario
|
|
104
|
+
2. Confirm the new capability prevents it
|
|
105
|
+
3. Run existing tests to verify no regressions
|
|
106
|
+
4. If the capability is a test, verify it FAILS without the fix
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Step 5: PERSIST — Record for Future Reference
|
|
110
|
+
|
|
111
|
+
Save the capability-building decision:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
save_memory("capability-{name}", {
|
|
115
|
+
failure: "description of what failed",
|
|
116
|
+
diagnosis: "what capability was missing",
|
|
117
|
+
category: "tool|guardrail|abstraction|documentation|feedback",
|
|
118
|
+
solution: "what was built",
|
|
119
|
+
files_changed: ["list of files"]
|
|
120
|
+
})
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Update `.claude/vibe/capabilities-log.md`:
|
|
124
|
+
|
|
125
|
+
```markdown
|
|
126
|
+
## {date} — {capability-name}
|
|
127
|
+
|
|
128
|
+
**Failure**: {what happened}
|
|
129
|
+
**Missing**: {what capability was absent}
|
|
130
|
+
**Built**: {what was created}
|
|
131
|
+
**Files**: {list}
|
|
132
|
+
**Prevents**: {what class of failures this prevents}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Decision Tree
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Agent failed
|
|
139
|
+
│
|
|
140
|
+
├─ Could a TOOL have done it automatically?
|
|
141
|
+
│ YES → Build tool (skill/command/script)
|
|
142
|
+
│
|
|
143
|
+
├─ Should the agent have been PREVENTED from doing it?
|
|
144
|
+
│ YES → Build guardrail (hook/test/lint rule)
|
|
145
|
+
│
|
|
146
|
+
├─ Was the agent REPEATING work that should be shared?
|
|
147
|
+
│ YES → Build abstraction (module/helper/utility)
|
|
148
|
+
│
|
|
149
|
+
├─ Did the agent lack KNOWLEDGE it needed?
|
|
150
|
+
│ YES → Add documentation (CLAUDE.md/comments/types)
|
|
151
|
+
│
|
|
152
|
+
└─ Did the agent not KNOW it was wrong?
|
|
153
|
+
YES → Build feedback (types/errors/tests)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Anti-patterns
|
|
157
|
+
|
|
158
|
+
- "Add a note to be more careful" → Build a guardrail instead
|
|
159
|
+
- "Document the right way to do it" → If possible, make the wrong way a compile/test error
|
|
160
|
+
- "Tell the agent to check X first" → Make X discoverable automatically
|
|
161
|
+
- "It was a one-off mistake" → If it happened once, it will happen again. Build the capability.
|
|
162
|
+
|
|
163
|
+
## Integration Points
|
|
164
|
+
|
|
165
|
+
- After `/vibe.run` failure → auto-trigger capability-loop diagnosis
|
|
166
|
+
- After `/vibe.review` findings → suggest capability-loop for recurring patterns
|
|
167
|
+
- After manual agent correction → prompt "What capability would have prevented this?"
|