@su-record/vibe 2.7.14 → 2.7.16
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 +134 -126
- package/LICENSE +21 -21
- package/README.md +449 -449
- 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 +294 -294
- 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 +258 -258
- package/commands/vibe.analyze.md +11 -13
- package/commands/vibe.review.md +43 -1
- package/commands/vibe.run.md +2124 -2078
- package/commands/vibe.spec.md +9 -4
- package/commands/vibe.spec.review.md +569 -565
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +33 -8
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +51 -55
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.js +5 -5
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/skills.js +5 -5
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.js +51 -51
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +16 -16
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +7 -8
- 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/setup/Provisioner.js +42 -42
- 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.js +21 -21
- 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.js +23 -23
- package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- 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 +77 -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 +475 -475
- 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 -180
- package/skills/brand-assets/SKILL.md +146 -146
- package/skills/capability-loop/SKILL.md +167 -167
- package/skills/characterization-test/SKILL.md +206 -206
- package/skills/commerce-patterns/SKILL.md +63 -59
- package/skills/commit-push-pr/SKILL.md +75 -75
- package/skills/context7-usage/SKILL.md +105 -105
- package/skills/core-capabilities/SKILL.md +13 -48
- package/skills/e2e-commerce/SKILL.md +61 -57
- package/skills/exec-plan/SKILL.md +147 -147
- package/skills/frontend-design/SKILL.md +12 -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 +66 -66
- package/skills/ui-ux-pro-max/SKILL.md +221 -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,206 +1,221 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ui-ux-pro-max
|
|
3
|
-
description: "UI/UX design intelligence. 50 styles,
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# UI/UX Pro Max - Design Intelligence
|
|
7
|
-
|
|
8
|
-
Searchable database: 50+ styles, 97 color palettes, 57 font pairings, 99 UX guidelines, 25 chart types across 9 stacks.
|
|
9
|
-
|
|
10
|
-
## Pre-check (K1)
|
|
11
|
-
|
|
12
|
-
> Does this project need custom UI/UX design? If using a pre-built template or admin framework (e.g., Retool, Vercel templates), skip this skill.
|
|
13
|
-
|
|
14
|
-
## Rule Categories by Priority
|
|
15
|
-
|
|
16
|
-
| Priority | Category | Impact | Domain |
|
|
17
|
-
|----------|----------|--------|--------|
|
|
18
|
-
| 1 | Accessibility | CRITICAL | `ux` |
|
|
19
|
-
| 2 | Touch & Interaction | CRITICAL | `ux` |
|
|
20
|
-
| 3 | Performance | HIGH | `ux` |
|
|
21
|
-
| 4 | Layout & Responsive | HIGH | `ux` |
|
|
22
|
-
| 5 | Typography & Color | MEDIUM | `typography`, `color` |
|
|
23
|
-
| 6 | Animation | MEDIUM | `ux` |
|
|
24
|
-
| 7 | Style Selection | MEDIUM | `style`, `product` |
|
|
25
|
-
| 8 | Charts & Data | LOW | `chart` |
|
|
26
|
-
|
|
27
|
-
## Quick Reference
|
|
28
|
-
|
|
29
|
-
### 1. Accessibility (CRITICAL)
|
|
30
|
-
|
|
31
|
-
- `color-contrast` - Minimum 4.5:1 ratio for normal text
|
|
32
|
-
- `focus-states` - Visible focus rings on interactive elements
|
|
33
|
-
- `alt-text` - Descriptive alt text for meaningful images
|
|
34
|
-
- `aria-labels` - aria-label for icon-only buttons
|
|
35
|
-
- `keyboard-nav` - Tab order matches visual order
|
|
36
|
-
- `form-labels` - Use label with for attribute
|
|
37
|
-
|
|
38
|
-
### 2. Touch & Interaction (CRITICAL)
|
|
39
|
-
|
|
40
|
-
- `touch-target-size` - Minimum 44x44px touch targets
|
|
41
|
-
- `hover-vs-tap` - Use click/tap for primary interactions
|
|
42
|
-
- `loading-buttons` - Disable button during async operations
|
|
43
|
-
- `error-feedback` - Clear error messages near problem
|
|
44
|
-
- `cursor-pointer` - Add cursor-pointer to clickable elements
|
|
45
|
-
|
|
46
|
-
### 3. Performance (HIGH)
|
|
47
|
-
|
|
48
|
-
- `image-optimization` - Use WebP, srcset, lazy loading
|
|
49
|
-
- `reduced-motion` - Check prefers-reduced-motion
|
|
50
|
-
- `content-jumping` - Reserve space for async content
|
|
51
|
-
|
|
52
|
-
### 4. Layout & Responsive (HIGH)
|
|
53
|
-
|
|
54
|
-
- `viewport-meta` - width=device-width initial-scale=1
|
|
55
|
-
- `readable-font-size` - Minimum 16px body text on mobile
|
|
56
|
-
- `horizontal-scroll` - Ensure content fits viewport width
|
|
57
|
-
- `z-index-management` - Define z-index scale (10, 20, 30, 50)
|
|
58
|
-
|
|
59
|
-
### 5. Typography & Color (MEDIUM)
|
|
60
|
-
|
|
61
|
-
- `line-height` - Use 1.5-1.75 for body text
|
|
62
|
-
- `line-length` - Limit to 65-75 characters per line
|
|
63
|
-
- `font-pairing` - Match heading/body font personalities
|
|
64
|
-
|
|
65
|
-
### 6. Animation (MEDIUM)
|
|
66
|
-
|
|
67
|
-
- `duration-timing` - Use 150-300ms for micro-interactions
|
|
68
|
-
- `transform-performance` - Use transform/opacity, not width/height
|
|
69
|
-
- `loading-states` - Skeleton screens or spinners
|
|
70
|
-
|
|
71
|
-
### 7. Style Selection (MEDIUM)
|
|
72
|
-
|
|
73
|
-
- `style-match` - Match style to product type
|
|
74
|
-
- `consistency` - Use same style across all pages
|
|
75
|
-
- `no-emoji-icons` - Use SVG icons, not emojis
|
|
76
|
-
|
|
77
|
-
### 8. Charts & Data (LOW)
|
|
78
|
-
|
|
79
|
-
- `chart-type` - Match chart type to data type
|
|
80
|
-
- `color-guidance` - Use accessible color palettes
|
|
81
|
-
- `data-table` - Provide table alternative for accessibility
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## How to Use
|
|
86
|
-
|
|
87
|
-
### Step 1: Analyze Requirements
|
|
88
|
-
|
|
89
|
-
Extract from user request: **product type**, **style keywords**, **industry**, **stack** (default: html-tailwind).
|
|
90
|
-
|
|
91
|
-
### Step 2: Generate Design System (REQUIRED)
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
python3 skills/ui-ux-pro-max/scripts/search.py "<product_type> <industry> <keywords>" --design-system [-p "Project Name"]
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
This searches 5 domains in parallel (product, style, color, landing, typography), applies reasoning rules, and returns complete design system.
|
|
98
|
-
|
|
99
|
-
**Persist for cross-session use:**
|
|
100
|
-
```bash
|
|
101
|
-
python3 skills/ui-ux-pro-max/scripts/search.py "<query>" --design-system --persist -p "Project Name"
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Creates `design-system/MASTER.md` (global) + optional `design-system/pages/<page>.md` (overrides).
|
|
105
|
-
|
|
106
|
-
**With page-specific override:**
|
|
107
|
-
```bash
|
|
108
|
-
python3 skills/ui-ux-pro-max/scripts/search.py "<query>" --design-system --persist -p "Name" --page "dashboard"
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**Hierarchical retrieval**: Page file overrides Master. No page file → Master exclusively.
|
|
112
|
-
|
|
113
|
-
### Step 3: Detailed Searches (as needed)
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
python3 skills/ui-ux-pro-max/scripts/search.py "<keyword>" --domain <domain> [-n <max_results>]
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
Domains: `product`, `style`, `typography`, `color`, `landing`, `chart`, `ux`, `react`, `web`, `prompt`
|
|
120
|
-
|
|
121
|
-
### Step 4: Stack Guidelines (default: html-tailwind)
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
python3 skills/ui-ux-pro-max/scripts/search.py "<keyword>" --stack html-tailwind
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
Stacks: `html-tailwind`, `react`, `nextjs`, `vue`, `svelte`, `swiftui`, `react-native`, `flutter`, `shadcn`, `jetpack-compose`
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## Common Rules for Professional UI
|
|
132
|
-
|
|
133
|
-
### Icons & Visual Elements
|
|
134
|
-
|
|
135
|
-
| Rule | Do | Don't |
|
|
136
|
-
|------|----|----- |
|
|
137
|
-
| **No emoji icons** | Use SVG icons (Heroicons, Lucide, Simple Icons) | Use emojis as UI icons |
|
|
138
|
-
| **Stable hover states** | Use color/opacity transitions on hover | Use scale transforms that shift layout |
|
|
139
|
-
| **Correct brand logos** | Research official SVG from Simple Icons | Guess or use incorrect logo paths |
|
|
140
|
-
| **Consistent icon sizing** | Fixed viewBox (24x24) with w-6 h-6 | Mix different icon sizes |
|
|
141
|
-
|
|
142
|
-
### Interaction & Cursor
|
|
143
|
-
|
|
144
|
-
| Rule | Do | Don't |
|
|
145
|
-
|------|----|----- |
|
|
146
|
-
| **Cursor pointer** | `cursor-pointer` on all clickable elements | Default cursor on interactive elements |
|
|
147
|
-
| **Hover feedback** | Visual feedback (color, shadow, border) | No indication element is interactive |
|
|
148
|
-
| **Smooth transitions** | `transition-colors duration-200` | Instant changes or >500ms |
|
|
149
|
-
|
|
150
|
-
### Light/Dark Mode Contrast
|
|
151
|
-
|
|
152
|
-
| Rule | Do | Don't |
|
|
153
|
-
|------|----|----- |
|
|
154
|
-
| **Glass card light mode** | `bg-white/80` or higher opacity | `bg-white/10` (too transparent) |
|
|
155
|
-
| **Text contrast light** | `#0F172A` (slate-900) for text | `#94A3B8` (slate-400) for body |
|
|
156
|
-
| **Muted text light** | `#475569` (slate-600) minimum | gray-400 or lighter |
|
|
157
|
-
| **Border visibility** | `border-gray-200` in light mode | `border-white/10` (invisible) |
|
|
158
|
-
|
|
159
|
-
### Layout & Spacing
|
|
160
|
-
|
|
161
|
-
| Rule | Do | Don't |
|
|
162
|
-
|------|----|----- |
|
|
163
|
-
| **Floating navbar** | `top-4 left-4 right-4` spacing | Stick to `top-0 left-0 right-0` |
|
|
164
|
-
| **Content padding** | Account for fixed navbar height | Content hidden behind fixed elements |
|
|
165
|
-
| **Consistent max-width** | Same `max-w-6xl` or `max-w-7xl` | Mix different container widths |
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Pre-Delivery Checklist
|
|
170
|
-
|
|
171
|
-
### Visual Quality
|
|
172
|
-
- [ ] No emojis used as icons (SVG instead)
|
|
173
|
-
- [ ] All icons from consistent set (Heroicons/Lucide)
|
|
174
|
-
- [ ] Brand logos verified (Simple Icons)
|
|
175
|
-
- [ ] Hover states don't cause layout shift
|
|
176
|
-
|
|
177
|
-
### Interaction
|
|
178
|
-
- [ ] All clickable elements have `cursor-pointer`
|
|
179
|
-
- [ ] Hover states provide clear visual feedback
|
|
180
|
-
- [ ] Transitions are smooth (150-300ms)
|
|
181
|
-
- [ ] Focus states visible for keyboard navigation
|
|
182
|
-
|
|
183
|
-
### Light/Dark Mode
|
|
184
|
-
- [ ] Light mode text has sufficient contrast (4.5:1)
|
|
185
|
-
- [ ] Glass/transparent elements visible in light mode
|
|
186
|
-
- [ ] Borders visible in both modes
|
|
187
|
-
- [ ] Both modes tested before delivery
|
|
188
|
-
|
|
189
|
-
### Layout
|
|
190
|
-
- [ ] Floating elements have proper edge spacing
|
|
191
|
-
- [ ] No content hidden behind fixed navbars
|
|
192
|
-
- [ ] Responsive at 375px, 768px, 1024px, 1440px
|
|
193
|
-
- [ ] No horizontal scroll on mobile
|
|
194
|
-
|
|
195
|
-
### Accessibility
|
|
196
|
-
- [ ] All images have alt text
|
|
197
|
-
- [ ] Form inputs have labels
|
|
198
|
-
- [ ] Color is not the only indicator
|
|
199
|
-
- [ ] `prefers-reduced-motion` respected
|
|
200
|
-
|
|
201
|
-
##
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
|
|
1
|
+
---
|
|
2
|
+
name: ui-ux-pro-max
|
|
3
|
+
description: "UI/UX design intelligence with bold aesthetic direction. 50+ styles, 97 palettes, 57 font pairings, 99 UX guidelines, 25 chart types across 9 stacks."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# UI/UX Pro Max - Design Intelligence
|
|
7
|
+
|
|
8
|
+
Searchable database: 50+ styles, 97 color palettes, 57 font pairings, 99 UX guidelines, 25 chart types across 9 stacks.
|
|
9
|
+
|
|
10
|
+
## Pre-check (K1)
|
|
11
|
+
|
|
12
|
+
> Does this project need custom UI/UX design? If using a pre-built template or admin framework (e.g., Retool, Vercel templates), skip this skill.
|
|
13
|
+
|
|
14
|
+
## Rule Categories by Priority
|
|
15
|
+
|
|
16
|
+
| Priority | Category | Impact | Domain |
|
|
17
|
+
|----------|----------|--------|--------|
|
|
18
|
+
| 1 | Accessibility | CRITICAL | `ux` |
|
|
19
|
+
| 2 | Touch & Interaction | CRITICAL | `ux` |
|
|
20
|
+
| 3 | Performance | HIGH | `ux` |
|
|
21
|
+
| 4 | Layout & Responsive | HIGH | `ux` |
|
|
22
|
+
| 5 | Typography & Color | MEDIUM | `typography`, `color` |
|
|
23
|
+
| 6 | Animation | MEDIUM | `ux` |
|
|
24
|
+
| 7 | Style Selection | MEDIUM | `style`, `product` |
|
|
25
|
+
| 8 | Charts & Data | LOW | `chart` |
|
|
26
|
+
|
|
27
|
+
## Quick Reference
|
|
28
|
+
|
|
29
|
+
### 1. Accessibility (CRITICAL)
|
|
30
|
+
|
|
31
|
+
- `color-contrast` - Minimum 4.5:1 ratio for normal text
|
|
32
|
+
- `focus-states` - Visible focus rings on interactive elements
|
|
33
|
+
- `alt-text` - Descriptive alt text for meaningful images
|
|
34
|
+
- `aria-labels` - aria-label for icon-only buttons
|
|
35
|
+
- `keyboard-nav` - Tab order matches visual order
|
|
36
|
+
- `form-labels` - Use label with for attribute
|
|
37
|
+
|
|
38
|
+
### 2. Touch & Interaction (CRITICAL)
|
|
39
|
+
|
|
40
|
+
- `touch-target-size` - Minimum 44x44px touch targets
|
|
41
|
+
- `hover-vs-tap` - Use click/tap for primary interactions
|
|
42
|
+
- `loading-buttons` - Disable button during async operations
|
|
43
|
+
- `error-feedback` - Clear error messages near problem
|
|
44
|
+
- `cursor-pointer` - Add cursor-pointer to clickable elements
|
|
45
|
+
|
|
46
|
+
### 3. Performance (HIGH)
|
|
47
|
+
|
|
48
|
+
- `image-optimization` - Use WebP, srcset, lazy loading
|
|
49
|
+
- `reduced-motion` - Check prefers-reduced-motion
|
|
50
|
+
- `content-jumping` - Reserve space for async content
|
|
51
|
+
|
|
52
|
+
### 4. Layout & Responsive (HIGH)
|
|
53
|
+
|
|
54
|
+
- `viewport-meta` - width=device-width initial-scale=1
|
|
55
|
+
- `readable-font-size` - Minimum 16px body text on mobile
|
|
56
|
+
- `horizontal-scroll` - Ensure content fits viewport width
|
|
57
|
+
- `z-index-management` - Define z-index scale (10, 20, 30, 50)
|
|
58
|
+
|
|
59
|
+
### 5. Typography & Color (MEDIUM)
|
|
60
|
+
|
|
61
|
+
- `line-height` - Use 1.5-1.75 for body text
|
|
62
|
+
- `line-length` - Limit to 65-75 characters per line
|
|
63
|
+
- `font-pairing` - Match heading/body font personalities
|
|
64
|
+
|
|
65
|
+
### 6. Animation (MEDIUM)
|
|
66
|
+
|
|
67
|
+
- `duration-timing` - Use 150-300ms for micro-interactions
|
|
68
|
+
- `transform-performance` - Use transform/opacity, not width/height
|
|
69
|
+
- `loading-states` - Skeleton screens or spinners
|
|
70
|
+
|
|
71
|
+
### 7. Style Selection (MEDIUM)
|
|
72
|
+
|
|
73
|
+
- `style-match` - Match style to product type
|
|
74
|
+
- `consistency` - Use same style across all pages
|
|
75
|
+
- `no-emoji-icons` - Use SVG icons, not emojis
|
|
76
|
+
|
|
77
|
+
### 8. Charts & Data (LOW)
|
|
78
|
+
|
|
79
|
+
- `chart-type` - Match chart type to data type
|
|
80
|
+
- `color-guidance` - Use accessible color palettes
|
|
81
|
+
- `data-table` - Provide table alternative for accessibility
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## How to Use
|
|
86
|
+
|
|
87
|
+
### Step 1: Analyze Requirements
|
|
88
|
+
|
|
89
|
+
Extract from user request: **product type**, **style keywords**, **industry**, **stack** (default: html-tailwind).
|
|
90
|
+
|
|
91
|
+
### Step 2: Generate Design System (REQUIRED)
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
python3 skills/ui-ux-pro-max/scripts/search.py "<product_type> <industry> <keywords>" --design-system [-p "Project Name"]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
This searches 5 domains in parallel (product, style, color, landing, typography), applies reasoning rules, and returns complete design system.
|
|
98
|
+
|
|
99
|
+
**Persist for cross-session use:**
|
|
100
|
+
```bash
|
|
101
|
+
python3 skills/ui-ux-pro-max/scripts/search.py "<query>" --design-system --persist -p "Project Name"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Creates `design-system/MASTER.md` (global) + optional `design-system/pages/<page>.md` (overrides).
|
|
105
|
+
|
|
106
|
+
**With page-specific override:**
|
|
107
|
+
```bash
|
|
108
|
+
python3 skills/ui-ux-pro-max/scripts/search.py "<query>" --design-system --persist -p "Name" --page "dashboard"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Hierarchical retrieval**: Page file overrides Master. No page file → Master exclusively.
|
|
112
|
+
|
|
113
|
+
### Step 3: Detailed Searches (as needed)
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
python3 skills/ui-ux-pro-max/scripts/search.py "<keyword>" --domain <domain> [-n <max_results>]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Domains: `product`, `style`, `typography`, `color`, `landing`, `chart`, `ux`, `react`, `web`, `prompt`
|
|
120
|
+
|
|
121
|
+
### Step 4: Stack Guidelines (default: html-tailwind)
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
python3 skills/ui-ux-pro-max/scripts/search.py "<keyword>" --stack html-tailwind
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Stacks: `html-tailwind`, `react`, `nextjs`, `vue`, `svelte`, `swiftui`, `react-native`, `flutter`, `shadcn`, `jetpack-compose`
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Common Rules for Professional UI
|
|
132
|
+
|
|
133
|
+
### Icons & Visual Elements
|
|
134
|
+
|
|
135
|
+
| Rule | Do | Don't |
|
|
136
|
+
|------|----|----- |
|
|
137
|
+
| **No emoji icons** | Use SVG icons (Heroicons, Lucide, Simple Icons) | Use emojis as UI icons |
|
|
138
|
+
| **Stable hover states** | Use color/opacity transitions on hover | Use scale transforms that shift layout |
|
|
139
|
+
| **Correct brand logos** | Research official SVG from Simple Icons | Guess or use incorrect logo paths |
|
|
140
|
+
| **Consistent icon sizing** | Fixed viewBox (24x24) with w-6 h-6 | Mix different icon sizes |
|
|
141
|
+
|
|
142
|
+
### Interaction & Cursor
|
|
143
|
+
|
|
144
|
+
| Rule | Do | Don't |
|
|
145
|
+
|------|----|----- |
|
|
146
|
+
| **Cursor pointer** | `cursor-pointer` on all clickable elements | Default cursor on interactive elements |
|
|
147
|
+
| **Hover feedback** | Visual feedback (color, shadow, border) | No indication element is interactive |
|
|
148
|
+
| **Smooth transitions** | `transition-colors duration-200` | Instant changes or >500ms |
|
|
149
|
+
|
|
150
|
+
### Light/Dark Mode Contrast
|
|
151
|
+
|
|
152
|
+
| Rule | Do | Don't |
|
|
153
|
+
|------|----|----- |
|
|
154
|
+
| **Glass card light mode** | `bg-white/80` or higher opacity | `bg-white/10` (too transparent) |
|
|
155
|
+
| **Text contrast light** | `#0F172A` (slate-900) for text | `#94A3B8` (slate-400) for body |
|
|
156
|
+
| **Muted text light** | `#475569` (slate-600) minimum | gray-400 or lighter |
|
|
157
|
+
| **Border visibility** | `border-gray-200` in light mode | `border-white/10` (invisible) |
|
|
158
|
+
|
|
159
|
+
### Layout & Spacing
|
|
160
|
+
|
|
161
|
+
| Rule | Do | Don't |
|
|
162
|
+
|------|----|----- |
|
|
163
|
+
| **Floating navbar** | `top-4 left-4 right-4` spacing | Stick to `top-0 left-0 right-0` |
|
|
164
|
+
| **Content padding** | Account for fixed navbar height | Content hidden behind fixed elements |
|
|
165
|
+
| **Consistent max-width** | Same `max-w-6xl` or `max-w-7xl` | Mix different container widths |
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Pre-Delivery Checklist
|
|
170
|
+
|
|
171
|
+
### Visual Quality
|
|
172
|
+
- [ ] No emojis used as icons (SVG instead)
|
|
173
|
+
- [ ] All icons from consistent set (Heroicons/Lucide)
|
|
174
|
+
- [ ] Brand logos verified (Simple Icons)
|
|
175
|
+
- [ ] Hover states don't cause layout shift
|
|
176
|
+
|
|
177
|
+
### Interaction
|
|
178
|
+
- [ ] All clickable elements have `cursor-pointer`
|
|
179
|
+
- [ ] Hover states provide clear visual feedback
|
|
180
|
+
- [ ] Transitions are smooth (150-300ms)
|
|
181
|
+
- [ ] Focus states visible for keyboard navigation
|
|
182
|
+
|
|
183
|
+
### Light/Dark Mode
|
|
184
|
+
- [ ] Light mode text has sufficient contrast (4.5:1)
|
|
185
|
+
- [ ] Glass/transparent elements visible in light mode
|
|
186
|
+
- [ ] Borders visible in both modes
|
|
187
|
+
- [ ] Both modes tested before delivery
|
|
188
|
+
|
|
189
|
+
### Layout
|
|
190
|
+
- [ ] Floating elements have proper edge spacing
|
|
191
|
+
- [ ] No content hidden behind fixed navbars
|
|
192
|
+
- [ ] Responsive at 375px, 768px, 1024px, 1440px
|
|
193
|
+
- [ ] No horizontal scroll on mobile
|
|
194
|
+
|
|
195
|
+
### Accessibility
|
|
196
|
+
- [ ] All images have alt text
|
|
197
|
+
- [ ] Form inputs have labels
|
|
198
|
+
- [ ] Color is not the only indicator
|
|
199
|
+
- [ ] `prefers-reduced-motion` respected
|
|
200
|
+
|
|
201
|
+
## Design Direction Anti-Patterns
|
|
202
|
+
|
|
203
|
+
Avoid these signs of generic, AI-generated UI:
|
|
204
|
+
|
|
205
|
+
| Anti-Pattern | Fix |
|
|
206
|
+
|---|---|
|
|
207
|
+
| Default Bootstrap/Tailwind without customization | Define design tokens first (colors, typography, spacing, motion) |
|
|
208
|
+
| Overused fonts (Inter, Roboto) without styling | Choose distinctive typefaces that set the tone |
|
|
209
|
+
| Predictable card-based layouts everywhere | Use asymmetry and unconventional layouts when appropriate |
|
|
210
|
+
| Stock photography without curation | Custom icons and illustrations |
|
|
211
|
+
| Safe, corporate color palettes | Develop unique color palettes beyond defaults |
|
|
212
|
+
| No micro-interactions | Add meaningful motion to guide user attention (150-300ms) |
|
|
213
|
+
|
|
214
|
+
## Done Criteria (K4)
|
|
215
|
+
|
|
216
|
+
- [ ] Design system generated before implementation
|
|
217
|
+
- [ ] All pre-delivery checklist items verified
|
|
218
|
+
- [ ] Both light and dark modes tested
|
|
219
|
+
- [ ] Responsive at all breakpoints
|
|
220
|
+
- [ ] No default/uncustomized framework styles remain
|
|
221
|
+
- [ ] All interactive states designed (hover, focus, active, disabled)
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: vercel-react-best-practices
|
|
3
|
-
description: "React/Next.js performance gotchas from Vercel engineering. Non-intuitive pitfalls that LLMs commonly miss."
|
|
4
|
-
triggers: [react, next.js, performance, optimization, vercel, component, rendering]
|
|
5
|
-
priority: 60
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Vercel React Best Practices
|
|
9
|
-
|
|
10
|
-
## Pre-check (K1)
|
|
11
|
-
|
|
12
|
-
> Is this a React/Next.js performance issue? Standard React patterns (useState, useEffect, components) don't need this skill. Activate only for performance optimization or code review.
|
|
13
|
-
|
|
14
|
-
## CRITICAL Gotchas
|
|
15
|
-
|
|
16
|
-
### Waterfall Elimination
|
|
17
|
-
|
|
18
|
-
| Gotcha | Why Non-obvious |
|
|
19
|
-
|--------|----------------|
|
|
20
|
-
| **Sequential awaits** | `const a = await f1(); const b = await f2();` creates waterfall. Use `Promise.all([f1(), f2()])` for independent ops |
|
|
21
|
-
| **Await placement** | Move `await` to the branch where value is actually used, not at declaration |
|
|
22
|
-
| **Missing Suspense** | Wrap slow server components in `<Suspense>` to stream — don't block entire page |
|
|
23
|
-
|
|
24
|
-
### Bundle Size
|
|
25
|
-
|
|
26
|
-
| Gotcha | Why Non-obvious |
|
|
27
|
-
|--------|----------------|
|
|
28
|
-
| **Barrel imports** | `import { Button } from "@/components"` pulls entire barrel. Use `import { Button } from "@/components/Button"` |
|
|
29
|
-
| **Third-party in initial bundle** | Load analytics/logging AFTER hydration with `next/dynamic` or lazy `useEffect` |
|
|
30
|
-
| **Heavy components** | Charts, editors, maps → `next/dynamic` with `{ ssr: false }` |
|
|
31
|
-
|
|
32
|
-
## HIGH Gotchas
|
|
33
|
-
|
|
34
|
-
### Server-side
|
|
35
|
-
|
|
36
|
-
| Gotcha | Fix |
|
|
37
|
-
|--------|-----|
|
|
38
|
-
| Duplicate DB calls across server components | Wrap with `React.cache()` for per-request dedup |
|
|
39
|
-
| Large data serialized to client | Pick only needed fields before passing to client components |
|
|
40
|
-
| Blocking post-processing (logging, analytics) | Use `after()` for non-blocking tasks |
|
|
41
|
-
|
|
42
|
-
## MEDIUM Gotchas
|
|
43
|
-
|
|
44
|
-
| Gotcha | Fix |
|
|
45
|
-
|--------|-----|
|
|
46
|
-
| Expensive computation re-runs on parent re-render | Isolate in `memo()` wrapped component |
|
|
47
|
-
| Static JSX recreated every render | Hoist outside component: `const HEADER = <header>...</header>` |
|
|
48
|
-
| Long lists render all items | `content-visibility: auto; contain-intrinsic-size: 0 80px;` on list items |
|
|
49
|
-
| `{count && <Item />}` renders `0` | Use ternary: `{count > 0 ? <Item /> : null}` |
|
|
50
|
-
| Event handler changes every render → effect re-runs | Store handlers in `useRef` for stable effects |
|
|
51
|
-
| Object in useEffect deps | Use primitive values (id, not entire object) as dependencies |
|
|
52
|
-
|
|
53
|
-
## Done Criteria (K4)
|
|
54
|
-
|
|
55
|
-
- [ ] No sequential awaits for independent operations
|
|
56
|
-
- [ ] No barrel imports for tree-shakeable modules
|
|
57
|
-
- [ ] Server component data is `React.cache()`-wrapped where reused
|
|
58
|
-
- [ ] Heavy third-party loaded after hydration
|
|
59
|
-
- [ ] Long lists use `content-visibility: auto`
|
|
1
|
+
---
|
|
2
|
+
name: vercel-react-best-practices
|
|
3
|
+
description: "React/Next.js performance gotchas from Vercel engineering. Non-intuitive pitfalls that LLMs commonly miss."
|
|
4
|
+
triggers: [react, next.js, performance, optimization, vercel, component, rendering]
|
|
5
|
+
priority: 60
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Vercel React Best Practices
|
|
9
|
+
|
|
10
|
+
## Pre-check (K1)
|
|
11
|
+
|
|
12
|
+
> Is this a React/Next.js performance issue? Standard React patterns (useState, useEffect, components) don't need this skill. Activate only for performance optimization or code review.
|
|
13
|
+
|
|
14
|
+
## CRITICAL Gotchas
|
|
15
|
+
|
|
16
|
+
### Waterfall Elimination
|
|
17
|
+
|
|
18
|
+
| Gotcha | Why Non-obvious |
|
|
19
|
+
|--------|----------------|
|
|
20
|
+
| **Sequential awaits** | `const a = await f1(); const b = await f2();` creates waterfall. Use `Promise.all([f1(), f2()])` for independent ops |
|
|
21
|
+
| **Await placement** | Move `await` to the branch where value is actually used, not at declaration |
|
|
22
|
+
| **Missing Suspense** | Wrap slow server components in `<Suspense>` to stream — don't block entire page |
|
|
23
|
+
|
|
24
|
+
### Bundle Size
|
|
25
|
+
|
|
26
|
+
| Gotcha | Why Non-obvious |
|
|
27
|
+
|--------|----------------|
|
|
28
|
+
| **Barrel imports** | `import { Button } from "@/components"` pulls entire barrel. Use `import { Button } from "@/components/Button"` |
|
|
29
|
+
| **Third-party in initial bundle** | Load analytics/logging AFTER hydration with `next/dynamic` or lazy `useEffect` |
|
|
30
|
+
| **Heavy components** | Charts, editors, maps → `next/dynamic` with `{ ssr: false }` |
|
|
31
|
+
|
|
32
|
+
## HIGH Gotchas
|
|
33
|
+
|
|
34
|
+
### Server-side
|
|
35
|
+
|
|
36
|
+
| Gotcha | Fix |
|
|
37
|
+
|--------|-----|
|
|
38
|
+
| Duplicate DB calls across server components | Wrap with `React.cache()` for per-request dedup |
|
|
39
|
+
| Large data serialized to client | Pick only needed fields before passing to client components |
|
|
40
|
+
| Blocking post-processing (logging, analytics) | Use `after()` for non-blocking tasks |
|
|
41
|
+
|
|
42
|
+
## MEDIUM Gotchas
|
|
43
|
+
|
|
44
|
+
| Gotcha | Fix |
|
|
45
|
+
|--------|-----|
|
|
46
|
+
| Expensive computation re-runs on parent re-render | Isolate in `memo()` wrapped component |
|
|
47
|
+
| Static JSX recreated every render | Hoist outside component: `const HEADER = <header>...</header>` |
|
|
48
|
+
| Long lists render all items | `content-visibility: auto; contain-intrinsic-size: 0 80px;` on list items |
|
|
49
|
+
| `{count && <Item />}` renders `0` | Use ternary: `{count > 0 ? <Item /> : null}` |
|
|
50
|
+
| Event handler changes every render → effect re-runs | Store handlers in `useRef` for stable effects |
|
|
51
|
+
| Object in useEffect deps | Use primitive values (id, not entire object) as dependencies |
|
|
52
|
+
|
|
53
|
+
## Done Criteria (K4)
|
|
54
|
+
|
|
55
|
+
- [ ] No sequential awaits for independent operations
|
|
56
|
+
- [ ] No barrel imports for tree-shakeable modules
|
|
57
|
+
- [ ] Server component data is `React.cache()`-wrapped where reused
|
|
58
|
+
- [ ] Heavy third-party loaded after hydration
|
|
59
|
+
- [ ] Long lists use `content-visibility: auto`
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: video-production
|
|
3
|
-
description: "Video processing gotchas — FFmpeg, transcoding, streaming, subtitles."
|
|
4
|
-
triggers: [video, ffmpeg, transcode, encode, stream, media, subtitle, thumbnail, hls, dash]
|
|
5
|
-
priority: 60
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Video Production
|
|
9
|
-
|
|
10
|
-
## Pre-check (K1)
|
|
11
|
-
|
|
12
|
-
> Are you processing video files programmatically? If just embedding a YouTube/Vimeo player, this skill is not needed.
|
|
13
|
-
|
|
14
|
-
## Gotchas
|
|
15
|
-
|
|
16
|
-
| Gotcha | Consequence | Prevention |
|
|
17
|
-
|--------|-------------|------------|
|
|
18
|
-
| Direct CLI string concatenation | Command injection risk | Always use wrapper library (fluent-ffmpeg for TS, ffmpeg-python for Python) |
|
|
19
|
-
| No input validation | Crash on corrupted files | Always `ffprobe` input before processing — check codec, resolution, duration |
|
|
20
|
-
| No temp file cleanup | Disk fills up silently | `try/finally` or cleanup handler — never leave partial outputs |
|
|
21
|
-
| No progress callback | Long encoding appears frozen | Implement progress events for any operation >10s |
|
|
22
|
-
| Memory loading large files | OOM on 4K+ video | Use streaming I/O, never read entire file into memory |
|
|
23
|
-
| Assuming codec availability | Fails on different FFmpeg builds | Check `ffmpeg -codecs` at runtime before encoding |
|
|
24
|
-
| Fixed bitrate encoding | Inconsistent quality | Use CRF-based quality (18-28 for H.264) instead |
|
|
25
|
-
| No timeout | Encoding hangs forever | Set timeout + kill process on expiry |
|
|
26
|
-
|
|
27
|
-
## Codec Quick Reference
|
|
28
|
-
|
|
29
|
-
| Use Case | Codec | Note |
|
|
30
|
-
|----------|-------|------|
|
|
31
|
-
| Maximum compatibility | H.264 (libx264) | CRF 23 default |
|
|
32
|
-
| Smaller files | H.265 (libx265) | 50% smaller, slower, licensing issues |
|
|
33
|
-
| Open source | VP9 (libvpx-vp9) | Good for WebM |
|
|
34
|
-
| Best compression | AV1 (libaom-av1) | Very slow encoding |
|
|
35
|
-
|
|
36
|
-
## Resolution Presets
|
|
37
|
-
|
|
38
|
-
| Preset | Resolution | Bitrate (H.264) |
|
|
39
|
-
|--------|-----------|-----------------|
|
|
40
|
-
| 360p | 640x360 | 800 kbps |
|
|
41
|
-
| 720p | 1280x720 | 3 Mbps |
|
|
42
|
-
| 1080p | 1920x1080 | 6 Mbps |
|
|
43
|
-
| 4K | 3840x2160 | 15 Mbps |
|
|
44
|
-
|
|
45
|
-
## Done Criteria (K4)
|
|
46
|
-
|
|
47
|
-
- [ ] All FFmpeg calls go through wrapper library (no raw CLI strings)
|
|
48
|
-
- [ ] Input files validated with ffprobe before processing
|
|
49
|
-
- [ ] Temp files cleaned up in all paths (success + error)
|
|
50
|
-
- [ ] Progress reporting for long operations
|
|
51
|
-
- [ ] Codec availability checked at runtime
|
|
1
|
+
---
|
|
2
|
+
name: video-production
|
|
3
|
+
description: "Video processing gotchas — FFmpeg, transcoding, streaming, subtitles."
|
|
4
|
+
triggers: [video, ffmpeg, transcode, encode, stream, media, subtitle, thumbnail, hls, dash]
|
|
5
|
+
priority: 60
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Video Production
|
|
9
|
+
|
|
10
|
+
## Pre-check (K1)
|
|
11
|
+
|
|
12
|
+
> Are you processing video files programmatically? If just embedding a YouTube/Vimeo player, this skill is not needed.
|
|
13
|
+
|
|
14
|
+
## Gotchas
|
|
15
|
+
|
|
16
|
+
| Gotcha | Consequence | Prevention |
|
|
17
|
+
|--------|-------------|------------|
|
|
18
|
+
| Direct CLI string concatenation | Command injection risk | Always use wrapper library (fluent-ffmpeg for TS, ffmpeg-python for Python) |
|
|
19
|
+
| No input validation | Crash on corrupted files | Always `ffprobe` input before processing — check codec, resolution, duration |
|
|
20
|
+
| No temp file cleanup | Disk fills up silently | `try/finally` or cleanup handler — never leave partial outputs |
|
|
21
|
+
| No progress callback | Long encoding appears frozen | Implement progress events for any operation >10s |
|
|
22
|
+
| Memory loading large files | OOM on 4K+ video | Use streaming I/O, never read entire file into memory |
|
|
23
|
+
| Assuming codec availability | Fails on different FFmpeg builds | Check `ffmpeg -codecs` at runtime before encoding |
|
|
24
|
+
| Fixed bitrate encoding | Inconsistent quality | Use CRF-based quality (18-28 for H.264) instead |
|
|
25
|
+
| No timeout | Encoding hangs forever | Set timeout + kill process on expiry |
|
|
26
|
+
|
|
27
|
+
## Codec Quick Reference
|
|
28
|
+
|
|
29
|
+
| Use Case | Codec | Note |
|
|
30
|
+
|----------|-------|------|
|
|
31
|
+
| Maximum compatibility | H.264 (libx264) | CRF 23 default |
|
|
32
|
+
| Smaller files | H.265 (libx265) | 50% smaller, slower, licensing issues |
|
|
33
|
+
| Open source | VP9 (libvpx-vp9) | Good for WebM |
|
|
34
|
+
| Best compression | AV1 (libaom-av1) | Very slow encoding |
|
|
35
|
+
|
|
36
|
+
## Resolution Presets
|
|
37
|
+
|
|
38
|
+
| Preset | Resolution | Bitrate (H.264) |
|
|
39
|
+
|--------|-----------|-----------------|
|
|
40
|
+
| 360p | 640x360 | 800 kbps |
|
|
41
|
+
| 720p | 1280x720 | 3 Mbps |
|
|
42
|
+
| 1080p | 1920x1080 | 6 Mbps |
|
|
43
|
+
| 4K | 3840x2160 | 15 Mbps |
|
|
44
|
+
|
|
45
|
+
## Done Criteria (K4)
|
|
46
|
+
|
|
47
|
+
- [ ] All FFmpeg calls go through wrapper library (no raw CLI strings)
|
|
48
|
+
- [ ] Input files validated with ffprobe before processing
|
|
49
|
+
- [ ] Temp files cleaned up in all paths (success + error)
|
|
50
|
+
- [ ] Progress reporting for long operations
|
|
51
|
+
- [ ] Codec availability checked at runtime
|