@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.
Files changed (345) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +153 -153
  3. package/LICENSE +21 -21
  4. package/README.md +451 -449
  5. package/agents/architect-low.md +41 -41
  6. package/agents/architect-medium.md +59 -59
  7. package/agents/architect.md +80 -80
  8. package/agents/build-error-resolver.md +115 -115
  9. package/agents/compounder.md +261 -261
  10. package/agents/diagrammer.md +178 -178
  11. package/agents/docs/api-documenter.md +99 -99
  12. package/agents/docs/changelog-writer.md +93 -93
  13. package/agents/e2e-tester.md +294 -294
  14. package/agents/event/event-comms.md +78 -0
  15. package/agents/event/event-content.md +68 -0
  16. package/agents/event/event-image.md +95 -0
  17. package/agents/event/event-ops.md +84 -0
  18. package/agents/event/event-scheduler.md +69 -0
  19. package/agents/event/event-speaker.md +86 -0
  20. package/agents/explorer-low.md +42 -42
  21. package/agents/explorer-medium.md +59 -59
  22. package/agents/explorer.md +48 -48
  23. package/agents/implementer-low.md +43 -43
  24. package/agents/implementer-medium.md +52 -52
  25. package/agents/implementer.md +54 -54
  26. package/agents/junior-mentor.md +141 -141
  27. package/agents/planning/requirements-analyst.md +84 -84
  28. package/agents/planning/ux-advisor.md +83 -83
  29. package/agents/qa/acceptance-tester.md +86 -86
  30. package/agents/qa/edge-case-finder.md +93 -93
  31. package/agents/refactor-cleaner.md +143 -143
  32. package/agents/research/best-practices-agent.md +199 -199
  33. package/agents/research/codebase-patterns-agent.md +157 -157
  34. package/agents/research/framework-docs-agent.md +188 -188
  35. package/agents/research/security-advisory-agent.md +213 -213
  36. package/agents/review/architecture-reviewer.md +107 -107
  37. package/agents/review/complexity-reviewer.md +116 -116
  38. package/agents/review/data-integrity-reviewer.md +88 -88
  39. package/agents/review/git-history-reviewer.md +103 -103
  40. package/agents/review/performance-reviewer.md +86 -86
  41. package/agents/review/python-reviewer.md +150 -150
  42. package/agents/review/rails-reviewer.md +139 -139
  43. package/agents/review/react-reviewer.md +144 -144
  44. package/agents/review/security-reviewer.md +80 -80
  45. package/agents/review/simplicity-reviewer.md +140 -140
  46. package/agents/review/test-coverage-reviewer.md +116 -116
  47. package/agents/review/typescript-reviewer.md +127 -127
  48. package/agents/searcher.md +54 -54
  49. package/agents/simplifier.md +120 -120
  50. package/agents/tester.md +49 -49
  51. package/agents/ui/ui-a11y-auditor.md +93 -93
  52. package/agents/ui/ui-antipattern-detector.md +94 -94
  53. package/agents/ui/ui-dataviz-advisor.md +69 -69
  54. package/agents/ui/ui-design-system-gen.md +57 -57
  55. package/agents/ui/ui-industry-analyzer.md +49 -49
  56. package/agents/ui/ui-layout-architect.md +65 -65
  57. package/agents/ui/ui-stack-implementer.md +68 -68
  58. package/agents/ui/ux-compliance-reviewer.md +81 -81
  59. package/agents/ui-previewer.md +258 -258
  60. package/commands/vibe.analyze.md +379 -379
  61. package/commands/vibe.event.md +163 -0
  62. package/commands/vibe.review.md +607 -607
  63. package/commands/vibe.run.md +2217 -2124
  64. package/commands/vibe.spec.md +1195 -1195
  65. package/commands/vibe.spec.review.md +569 -569
  66. package/commands/vibe.trace.md +50 -0
  67. package/commands/vibe.utils.md +413 -413
  68. package/commands/vibe.verify.md +484 -484
  69. package/dist/__tests__/architecture.test.d.ts +2 -0
  70. package/dist/__tests__/architecture.test.d.ts.map +1 -0
  71. package/dist/__tests__/architecture.test.js +207 -0
  72. package/dist/__tests__/architecture.test.js.map +1 -0
  73. package/dist/cli/auth.js +3 -3
  74. package/dist/cli/auth.js.map +1 -1
  75. package/dist/cli/collaborator.js +52 -52
  76. package/dist/cli/commands/evolution.js +12 -12
  77. package/dist/cli/commands/info.d.ts.map +1 -1
  78. package/dist/cli/commands/info.js +45 -81
  79. package/dist/cli/commands/info.js.map +1 -1
  80. package/dist/cli/commands/init.js +5 -5
  81. package/dist/cli/commands/remove.js +14 -14
  82. package/dist/cli/commands/sentinel.js +27 -27
  83. package/dist/cli/commands/skills.js +5 -5
  84. package/dist/cli/commands/slack.js +10 -10
  85. package/dist/cli/commands/telegram.js +12 -12
  86. package/dist/cli/detect.d.ts.map +1 -1
  87. package/dist/cli/detect.js +55 -32
  88. package/dist/cli/detect.js.map +1 -1
  89. package/dist/cli/index.d.ts +1 -1
  90. package/dist/cli/index.d.ts.map +1 -1
  91. package/dist/cli/index.js +52 -52
  92. package/dist/cli/index.js.map +1 -1
  93. package/dist/cli/llm/claude-commands.js +16 -16
  94. package/dist/cli/llm/config.js +18 -18
  95. package/dist/cli/llm/gemini-commands.js +16 -16
  96. package/dist/cli/llm/gpt-commands.js +19 -19
  97. package/dist/cli/llm/help.js +21 -21
  98. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  99. package/dist/cli/postinstall/constants.js +24 -0
  100. package/dist/cli/postinstall/constants.js.map +1 -1
  101. package/dist/cli/postinstall/cursor-agents.js +32 -32
  102. package/dist/cli/postinstall/cursor-rules.js +83 -83
  103. package/dist/cli/postinstall/cursor-skills.js +743 -743
  104. package/dist/cli/setup/Provisioner.js +42 -42
  105. package/dist/infra/lib/AutomationLevel.d.ts +48 -0
  106. package/dist/infra/lib/AutomationLevel.d.ts.map +1 -0
  107. package/dist/infra/lib/AutomationLevel.js +157 -0
  108. package/dist/infra/lib/AutomationLevel.js.map +1 -0
  109. package/dist/infra/lib/DecisionTracer.d.ts +81 -0
  110. package/dist/infra/lib/DecisionTracer.d.ts.map +1 -0
  111. package/dist/infra/lib/DecisionTracer.js +135 -0
  112. package/dist/infra/lib/DecisionTracer.js.map +1 -0
  113. package/dist/infra/lib/DeepInit.js +24 -24
  114. package/dist/infra/lib/InteractiveCheckpoint.d.ts +75 -0
  115. package/dist/infra/lib/InteractiveCheckpoint.d.ts.map +1 -0
  116. package/dist/infra/lib/InteractiveCheckpoint.js +179 -0
  117. package/dist/infra/lib/InteractiveCheckpoint.js.map +1 -0
  118. package/dist/infra/lib/IterationTracker.d.ts +44 -0
  119. package/dist/infra/lib/IterationTracker.d.ts.map +1 -1
  120. package/dist/infra/lib/IterationTracker.js +267 -12
  121. package/dist/infra/lib/IterationTracker.js.map +1 -1
  122. package/dist/infra/lib/LoopBreaker.d.ts +56 -0
  123. package/dist/infra/lib/LoopBreaker.d.ts.map +1 -0
  124. package/dist/infra/lib/LoopBreaker.js +109 -0
  125. package/dist/infra/lib/LoopBreaker.js.map +1 -0
  126. package/dist/infra/lib/PythonParser.js +108 -108
  127. package/dist/infra/lib/ReviewRace.js +96 -96
  128. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  129. package/dist/infra/lib/SkillQualityGate.js +9 -9
  130. package/dist/infra/lib/SkillRepository.js +159 -159
  131. package/dist/infra/lib/UltraQA.js +99 -99
  132. package/dist/infra/lib/VerificationLoop.d.ts +105 -0
  133. package/dist/infra/lib/VerificationLoop.d.ts.map +1 -0
  134. package/dist/infra/lib/VerificationLoop.js +189 -0
  135. package/dist/infra/lib/VerificationLoop.js.map +1 -0
  136. package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts +2 -0
  137. package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts.map +1 -0
  138. package/dist/infra/lib/__tests__/AutomationLevel.test.js +297 -0
  139. package/dist/infra/lib/__tests__/AutomationLevel.test.js.map +1 -0
  140. package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts +2 -0
  141. package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts.map +1 -0
  142. package/dist/infra/lib/__tests__/DecisionTracer.test.js +274 -0
  143. package/dist/infra/lib/__tests__/DecisionTracer.test.js.map +1 -0
  144. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts +2 -0
  145. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts.map +1 -0
  146. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js +350 -0
  147. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js.map +1 -0
  148. package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts +2 -0
  149. package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts.map +1 -0
  150. package/dist/infra/lib/__tests__/LoopBreaker.test.js +340 -0
  151. package/dist/infra/lib/__tests__/LoopBreaker.test.js.map +1 -0
  152. package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts +2 -0
  153. package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts.map +1 -0
  154. package/dist/infra/lib/__tests__/VerificationLoop.test.js +486 -0
  155. package/dist/infra/lib/__tests__/VerificationLoop.test.js.map +1 -0
  156. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  157. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  158. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  159. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  160. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  161. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  162. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  163. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  164. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js +4 -0
  165. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js.map +1 -1
  166. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  167. package/dist/infra/lib/evolution/DeprecationDetector.d.ts +68 -0
  168. package/dist/infra/lib/evolution/DeprecationDetector.d.ts.map +1 -0
  169. package/dist/infra/lib/evolution/DeprecationDetector.js +207 -0
  170. package/dist/infra/lib/evolution/DeprecationDetector.js.map +1 -0
  171. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  172. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  173. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  174. package/dist/infra/lib/evolution/ParityTester.d.ts +74 -0
  175. package/dist/infra/lib/evolution/ParityTester.d.ts.map +1 -0
  176. package/dist/infra/lib/evolution/ParityTester.js +238 -0
  177. package/dist/infra/lib/evolution/ParityTester.js.map +1 -0
  178. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  179. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  180. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  181. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  182. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  183. package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts +2 -0
  184. package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts.map +1 -0
  185. package/dist/infra/lib/evolution/__tests__/deprecation.test.js +251 -0
  186. package/dist/infra/lib/evolution/__tests__/deprecation.test.js.map +1 -0
  187. package/dist/infra/lib/evolution/__tests__/parity.test.d.ts +2 -0
  188. package/dist/infra/lib/evolution/__tests__/parity.test.d.ts.map +1 -0
  189. package/dist/infra/lib/evolution/__tests__/parity.test.js +319 -0
  190. package/dist/infra/lib/evolution/__tests__/parity.test.js.map +1 -0
  191. package/dist/infra/lib/evolution/index.d.ts +4 -0
  192. package/dist/infra/lib/evolution/index.d.ts.map +1 -1
  193. package/dist/infra/lib/evolution/index.js +3 -0
  194. package/dist/infra/lib/evolution/index.js.map +1 -1
  195. package/dist/infra/lib/gemini/orchestration.js +5 -5
  196. package/dist/infra/lib/gpt/orchestration.js +4 -4
  197. package/dist/infra/lib/gpt/specializations.d.ts +1 -1
  198. package/dist/infra/lib/gpt/specializations.js +1 -1
  199. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  200. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  201. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  202. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  203. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  204. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  205. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  206. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  207. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts +6 -0
  208. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +1 -1
  209. package/dist/infra/lib/telemetry/SkillTelemetry.js +11 -0
  210. package/dist/infra/lib/telemetry/SkillTelemetry.js.map +1 -1
  211. package/dist/infra/orchestrator/AgentManager.js +12 -12
  212. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  213. package/dist/infra/orchestrator/BackgroundManager.d.ts.map +1 -1
  214. package/dist/infra/orchestrator/BackgroundManager.js +2 -0
  215. package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
  216. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  217. package/dist/infra/orchestrator/PhasePipeline.js +1 -1
  218. package/dist/infra/orchestrator/PhasePipeline.js.map +1 -1
  219. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  220. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  221. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  222. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  223. package/dist/tools/index.d.ts +16 -19
  224. package/dist/tools/index.d.ts.map +1 -1
  225. package/dist/tools/index.js +15 -27
  226. package/dist/tools/index.js.map +1 -1
  227. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  228. package/dist/tools/memory/getMemoryGraph.js +12 -12
  229. package/dist/tools/memory/getSessionContext.js +9 -9
  230. package/dist/tools/memory/linkMemories.js +14 -14
  231. package/dist/tools/memory/listMemories.js +4 -4
  232. package/dist/tools/memory/recallMemory.js +4 -4
  233. package/dist/tools/memory/saveMemory.js +4 -4
  234. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  235. package/dist/tools/memory/startSession.js +1 -1
  236. package/dist/tools/memory/startSession.js.map +1 -1
  237. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  238. package/dist/tools/semantic/astGrep.test.js +6 -6
  239. package/dist/tools/spec/index.d.ts +0 -4
  240. package/dist/tools/spec/index.d.ts.map +1 -1
  241. package/dist/tools/spec/index.js +0 -4
  242. package/dist/tools/spec/index.js.map +1 -1
  243. package/dist/tools/spec/prdParser.test.js +171 -171
  244. package/dist/tools/spec/specGenerator.js +169 -169
  245. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  246. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  247. package/hooks/gemini-hooks.json +73 -73
  248. package/hooks/hooks.json +137 -137
  249. package/hooks/scripts/code-check.js +77 -77
  250. package/hooks/scripts/context-save.js +212 -212
  251. package/hooks/scripts/evolution-engine.js +69 -0
  252. package/hooks/scripts/hud-status.js +291 -291
  253. package/hooks/scripts/keyword-detector.js +214 -214
  254. package/hooks/scripts/llm-orchestrate.js +475 -475
  255. package/hooks/scripts/post-edit.js +32 -32
  256. package/hooks/scripts/pre-tool-guard.js +125 -125
  257. package/hooks/scripts/prompt-dispatcher.js +185 -185
  258. package/hooks/scripts/sentinel-guard.js +104 -104
  259. package/hooks/scripts/session-start.js +106 -106
  260. package/hooks/scripts/skill-injector.js +83 -0
  261. package/hooks/scripts/stop-notify.js +209 -209
  262. package/hooks/scripts/utils.js +100 -100
  263. package/languages/csharp-unity.md +515 -515
  264. package/languages/gdscript-godot.md +470 -470
  265. package/languages/ruby-rails.md +489 -489
  266. package/languages/typescript-angular.md +433 -433
  267. package/languages/typescript-astro.md +416 -416
  268. package/languages/typescript-electron.md +406 -406
  269. package/languages/typescript-nestjs.md +524 -524
  270. package/languages/typescript-svelte.md +407 -407
  271. package/languages/typescript-tauri.md +365 -365
  272. package/package.json +101 -123
  273. package/skills/agents-md/SKILL.md +120 -120
  274. package/skills/arch-guard/SKILL.md +180 -180
  275. package/skills/brand-assets/SKILL.md +146 -146
  276. package/skills/capability-loop/SKILL.md +167 -167
  277. package/skills/characterization-test/SKILL.md +206 -206
  278. package/skills/commerce-patterns/SKILL.md +63 -63
  279. package/skills/commit-push-pr/SKILL.md +75 -75
  280. package/skills/context7-usage/SKILL.md +105 -105
  281. package/skills/core-capabilities/SKILL.md +13 -13
  282. package/skills/e2e-commerce/SKILL.md +61 -61
  283. package/skills/event-comms/SKILL.md +161 -0
  284. package/skills/event-ops/SKILL.md +197 -0
  285. package/skills/event-planning/SKILL.md +131 -0
  286. package/skills/exec-plan/SKILL.md +147 -147
  287. package/skills/frontend-design/SKILL.md +12 -12
  288. package/skills/git-worktree/SKILL.md +72 -72
  289. package/skills/handoff/SKILL.md +109 -109
  290. package/skills/parallel-research/SKILL.md +87 -87
  291. package/skills/priority-todos/SKILL.md +63 -63
  292. package/skills/seo-checklist/SKILL.md +57 -57
  293. package/skills/techdebt/SKILL.md +122 -122
  294. package/skills/tool-fallback/SKILL.md +103 -103
  295. package/skills/typescript-advanced-types/SKILL.md +66 -66
  296. package/skills/ui-ux-pro-max/SKILL.md +221 -221
  297. package/skills/vercel-react-best-practices/SKILL.md +59 -59
  298. package/skills/video-production/SKILL.md +51 -51
  299. package/vibe/config.json +29 -29
  300. package/vibe/constitution.md +227 -227
  301. package/vibe/rules/principles/communication-guide.md +98 -98
  302. package/vibe/rules/principles/development-philosophy.md +52 -52
  303. package/vibe/rules/principles/quick-start.md +102 -102
  304. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  305. package/vibe/rules/quality/checklist.md +276 -276
  306. package/vibe/rules/quality/performance.md +236 -236
  307. package/vibe/rules/quality/testing-strategy.md +440 -440
  308. package/vibe/rules/standards/anti-patterns.md +541 -541
  309. package/vibe/rules/standards/code-structure.md +291 -291
  310. package/vibe/rules/standards/complexity-metrics.md +313 -313
  311. package/vibe/rules/standards/git-workflow.md +237 -237
  312. package/vibe/rules/standards/naming-conventions.md +198 -198
  313. package/vibe/rules/standards/security.md +305 -305
  314. package/vibe/rules/writing/document-style.md +74 -74
  315. package/vibe/setup.sh +31 -31
  316. package/vibe/templates/constitution-template.md +252 -252
  317. package/vibe/templates/contract-backend-template.md +526 -526
  318. package/vibe/templates/contract-frontend-template.md +599 -599
  319. package/vibe/templates/feature-template.md +96 -96
  320. package/vibe/templates/spec-template.md +221 -221
  321. package/vibe/ui-ux-data/charts.csv +26 -26
  322. package/vibe/ui-ux-data/colors.csv +97 -97
  323. package/vibe/ui-ux-data/icons.csv +101 -101
  324. package/vibe/ui-ux-data/landing.csv +31 -31
  325. package/vibe/ui-ux-data/products.csv +96 -96
  326. package/vibe/ui-ux-data/react-performance.csv +45 -45
  327. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  328. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  329. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  330. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  331. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  332. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  333. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  334. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  335. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  336. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  337. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  338. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  339. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  340. package/vibe/ui-ux-data/styles.csv +68 -68
  341. package/vibe/ui-ux-data/typography.csv +57 -57
  342. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  343. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  344. package/vibe/ui-ux-data/version.json +31 -31
  345. 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
  }