@su-record/vibe 2.7.18 → 2.7.20
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 +153 -153
- package/LICENSE +21 -21
- package/README.md +451 -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/event/event-comms.md +78 -0
- package/agents/event/event-content.md +68 -0
- package/agents/event/event-image.md +95 -0
- package/agents/event/event-ops.md +84 -0
- package/agents/event/event-scheduler.md +69 -0
- package/agents/event/event-speaker.md +86 -0
- 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 +379 -379
- package/commands/vibe.event.md +163 -0
- package/commands/vibe.review.md +607 -607
- package/commands/vibe.run.md +2217 -2124
- package/commands/vibe.spec.md +1195 -1195
- package/commands/vibe.spec.review.md +569 -569
- package/commands/vibe.trace.md +50 -0
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +484 -484
- package/dist/__tests__/architecture.test.d.ts +2 -0
- package/dist/__tests__/architecture.test.d.ts.map +1 -0
- package/dist/__tests__/architecture.test.js +207 -0
- package/dist/__tests__/architecture.test.js.map +1 -0
- package/dist/cli/auth.js +3 -3
- 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/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +45 -81
- 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.d.ts.map +1 -1
- package/dist/cli/detect.js +55 -32
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +52 -52
- 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 +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 +24 -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/setup/Provisioner.js +42 -42
- package/dist/infra/lib/AutomationLevel.d.ts +48 -0
- package/dist/infra/lib/AutomationLevel.d.ts.map +1 -0
- package/dist/infra/lib/AutomationLevel.js +157 -0
- package/dist/infra/lib/AutomationLevel.js.map +1 -0
- package/dist/infra/lib/DecisionTracer.d.ts +81 -0
- package/dist/infra/lib/DecisionTracer.d.ts.map +1 -0
- package/dist/infra/lib/DecisionTracer.js +135 -0
- package/dist/infra/lib/DecisionTracer.js.map +1 -0
- package/dist/infra/lib/DeepInit.js +24 -24
- package/dist/infra/lib/InteractiveCheckpoint.d.ts +75 -0
- package/dist/infra/lib/InteractiveCheckpoint.d.ts.map +1 -0
- package/dist/infra/lib/InteractiveCheckpoint.js +179 -0
- package/dist/infra/lib/InteractiveCheckpoint.js.map +1 -0
- package/dist/infra/lib/IterationTracker.d.ts +44 -0
- package/dist/infra/lib/IterationTracker.d.ts.map +1 -1
- package/dist/infra/lib/IterationTracker.js +267 -12
- package/dist/infra/lib/IterationTracker.js.map +1 -1
- package/dist/infra/lib/LoopBreaker.d.ts +56 -0
- package/dist/infra/lib/LoopBreaker.d.ts.map +1 -0
- package/dist/infra/lib/LoopBreaker.js +109 -0
- package/dist/infra/lib/LoopBreaker.js.map +1 -0
- 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/VerificationLoop.d.ts +105 -0
- package/dist/infra/lib/VerificationLoop.d.ts.map +1 -0
- package/dist/infra/lib/VerificationLoop.js +189 -0
- package/dist/infra/lib/VerificationLoop.js.map +1 -0
- package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/AutomationLevel.test.js +297 -0
- package/dist/infra/lib/__tests__/AutomationLevel.test.js.map +1 -0
- package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/DecisionTracer.test.js +274 -0
- package/dist/infra/lib/__tests__/DecisionTracer.test.js.map +1 -0
- package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js +350 -0
- package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js.map +1 -0
- package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/LoopBreaker.test.js +340 -0
- package/dist/infra/lib/__tests__/LoopBreaker.test.js.map +1 -0
- package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/VerificationLoop.test.js +486 -0
- package/dist/infra/lib/__tests__/VerificationLoop.test.js.map +1 -0
- 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.d.ts +3 -3
- 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/embedding/__tests__/EmbeddingProvider.test.js +4 -0
- package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js.map +1 -1
- package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
- package/dist/infra/lib/evolution/DeprecationDetector.d.ts +68 -0
- package/dist/infra/lib/evolution/DeprecationDetector.d.ts.map +1 -0
- package/dist/infra/lib/evolution/DeprecationDetector.js +207 -0
- package/dist/infra/lib/evolution/DeprecationDetector.js.map +1 -0
- 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/ParityTester.d.ts +74 -0
- package/dist/infra/lib/evolution/ParityTester.d.ts.map +1 -0
- package/dist/infra/lib/evolution/ParityTester.js +238 -0
- package/dist/infra/lib/evolution/ParityTester.js.map +1 -0
- 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/evolution/__tests__/deprecation.test.d.ts +2 -0
- package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts.map +1 -0
- package/dist/infra/lib/evolution/__tests__/deprecation.test.js +251 -0
- package/dist/infra/lib/evolution/__tests__/deprecation.test.js.map +1 -0
- package/dist/infra/lib/evolution/__tests__/parity.test.d.ts +2 -0
- package/dist/infra/lib/evolution/__tests__/parity.test.d.ts.map +1 -0
- package/dist/infra/lib/evolution/__tests__/parity.test.js +319 -0
- package/dist/infra/lib/evolution/__tests__/parity.test.js.map +1 -0
- package/dist/infra/lib/evolution/index.d.ts +4 -0
- package/dist/infra/lib/evolution/index.d.ts.map +1 -1
- package/dist/infra/lib/evolution/index.js +3 -0
- package/dist/infra/lib/evolution/index.js.map +1 -1
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gpt/orchestration.js +4 -4
- package/dist/infra/lib/gpt/specializations.d.ts +1 -1
- package/dist/infra/lib/gpt/specializations.js +1 -1
- 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/lib/telemetry/SkillTelemetry.d.ts +6 -0
- package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.js +11 -0
- package/dist/infra/lib/telemetry/SkillTelemetry.js.map +1 -1
- package/dist/infra/orchestrator/AgentManager.js +12 -12
- package/dist/infra/orchestrator/AgentRegistry.js +65 -65
- package/dist/infra/orchestrator/BackgroundManager.d.ts.map +1 -1
- package/dist/infra/orchestrator/BackgroundManager.js +2 -0
- package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/infra/orchestrator/PhasePipeline.js +1 -1
- package/dist/infra/orchestrator/PhasePipeline.js.map +1 -1
- 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/index.d.ts +16 -19
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -27
- package/dist/tools/index.js.map +1 -1
- 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/memory/startSession.js +1 -1
- package/dist/tools/memory/startSession.js.map +1 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/dist/tools/semantic/astGrep.test.js +6 -6
- package/dist/tools/spec/index.d.ts +0 -4
- package/dist/tools/spec/index.d.ts.map +1 -1
- package/dist/tools/spec/index.js +0 -4
- package/dist/tools/spec/index.js.map +1 -1
- 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 -77
- package/hooks/scripts/context-save.js +212 -212
- package/hooks/scripts/evolution-engine.js +69 -0
- 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/skill-injector.js +83 -0
- 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 +101 -123
- 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 -63
- package/skills/commit-push-pr/SKILL.md +75 -75
- package/skills/context7-usage/SKILL.md +105 -105
- package/skills/core-capabilities/SKILL.md +13 -13
- package/skills/e2e-commerce/SKILL.md +61 -61
- package/skills/event-comms/SKILL.md +161 -0
- package/skills/event-ops/SKILL.md +197 -0
- package/skills/event-planning/SKILL.md +131 -0
- package/skills/exec-plan/SKILL.md +147 -147
- package/skills/frontend-design/SKILL.md +12 -12
- 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 -221
- 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,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
|
package/vibe/config.json
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
{
|
|
2
|
-
"models": {
|
|
3
|
-
"gpt": {
|
|
4
|
-
"enabled": false,
|
|
5
|
-
"authType": "codex-cli",
|
|
6
|
-
"role": "architecture",
|
|
7
|
-
"description": "Architecture/Debugging/Coding (GPT 5.4)"
|
|
8
|
-
},
|
|
9
|
-
"gemini": {
|
|
10
|
-
"enabled": false,
|
|
11
|
-
"authType": "apikey",
|
|
12
|
-
"role": "exploration",
|
|
13
|
-
"description": "Gemini 3.1 Pro / 3.1 Flash-Lite (Exploration, UI/UX)"
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"stacks": [
|
|
17
|
-
{
|
|
18
|
-
"type": "typescript-node",
|
|
19
|
-
"path": ""
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
"details": {
|
|
23
|
-
"databases": [
|
|
24
|
-
"SQLite"
|
|
25
|
-
],
|
|
26
|
-
"stateManagement": [],
|
|
27
|
-
"hosting": [],
|
|
28
|
-
"cicd": []
|
|
29
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"models": {
|
|
3
|
+
"gpt": {
|
|
4
|
+
"enabled": false,
|
|
5
|
+
"authType": "codex-cli",
|
|
6
|
+
"role": "architecture",
|
|
7
|
+
"description": "Architecture/Debugging/Coding (GPT 5.4)"
|
|
8
|
+
},
|
|
9
|
+
"gemini": {
|
|
10
|
+
"enabled": false,
|
|
11
|
+
"authType": "apikey",
|
|
12
|
+
"role": "exploration",
|
|
13
|
+
"description": "Gemini 3.1 Pro / 3.1 Flash-Lite (Exploration, UI/UX)"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"stacks": [
|
|
17
|
+
{
|
|
18
|
+
"type": "typescript-node",
|
|
19
|
+
"path": ""
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"details": {
|
|
23
|
+
"databases": [
|
|
24
|
+
"SQLite"
|
|
25
|
+
],
|
|
26
|
+
"stateManagement": [],
|
|
27
|
+
"hosting": [],
|
|
28
|
+
"cicd": []
|
|
29
|
+
}
|
|
30
30
|
}
|