opencode-skills-collection 3.0.34 → 3.0.36

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 (269) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +16 -1
  2. package/bundled-skills/accesslint-audit/SKILL.md +115 -0
  3. package/bundled-skills/accesslint-diff/SKILL.md +81 -0
  4. package/bundled-skills/accesslint-scan/SKILL.md +47 -0
  5. package/bundled-skills/composition-patterns/SKILL.md +87 -0
  6. package/bundled-skills/composition-patterns/rules/_sections.md +29 -0
  7. package/bundled-skills/composition-patterns/rules/_template.md +24 -0
  8. package/bundled-skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  9. package/bundled-skills/composition-patterns/rules/architecture-compound-components.md +112 -0
  10. package/bundled-skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  11. package/bundled-skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  12. package/bundled-skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
  13. package/bundled-skills/composition-patterns/rules/state-context-interface.md +191 -0
  14. package/bundled-skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
  15. package/bundled-skills/composition-patterns/rules/state-lift-state.md +125 -0
  16. package/bundled-skills/debugging-toolkit/SKILL.md +35 -0
  17. package/bundled-skills/deploy-to-vercel/SKILL.md +304 -0
  18. package/bundled-skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
  19. package/bundled-skills/deploy-to-vercel/resources/deploy.sh +301 -0
  20. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  21. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  22. package/bundled-skills/docs/maintainers/backups/README-2026-06-02.md +687 -0
  23. package/bundled-skills/docs/maintainers/repo-growth-seo.md +4 -4
  24. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  25. package/bundled-skills/docs/users/bundles.md +245 -1
  26. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  27. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  28. package/bundled-skills/docs/users/getting-started.md +3 -3
  29. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  30. package/bundled-skills/docs/users/plugins.md +21 -13
  31. package/bundled-skills/docs/users/specialized-plugin-roadmap.md +95 -0
  32. package/bundled-skills/docs/users/usage.md +4 -4
  33. package/bundled-skills/docs/users/visual-guide.md +4 -4
  34. package/bundled-skills/mmx-cli/SKILL.md +5 -2
  35. package/bundled-skills/nextjs-seo-indexing/SKILL.md +3 -3
  36. package/bundled-skills/polis-protocol/SKILL.md +93 -0
  37. package/bundled-skills/python-development/SKILL.md +35 -0
  38. package/bundled-skills/radix-ui-design-system/SKILL.md +2 -2
  39. package/bundled-skills/react-native-skills/SKILL.md +120 -0
  40. package/bundled-skills/react-native-skills/rules/_sections.md +86 -0
  41. package/bundled-skills/react-native-skills/rules/_template.md +28 -0
  42. package/bundled-skills/react-native-skills/rules/animation-derived-value.md +53 -0
  43. package/bundled-skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  44. package/bundled-skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
  45. package/bundled-skills/react-native-skills/rules/design-system-compound-components.md +66 -0
  46. package/bundled-skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
  47. package/bundled-skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
  48. package/bundled-skills/react-native-skills/rules/js-hoist-intl.md +61 -0
  49. package/bundled-skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
  50. package/bundled-skills/react-native-skills/rules/list-performance-function-references.md +132 -0
  51. package/bundled-skills/react-native-skills/rules/list-performance-images.md +53 -0
  52. package/bundled-skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
  53. package/bundled-skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
  54. package/bundled-skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
  55. package/bundled-skills/react-native-skills/rules/list-performance-item-types.md +104 -0
  56. package/bundled-skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
  57. package/bundled-skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  58. package/bundled-skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  59. package/bundled-skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
  60. package/bundled-skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  61. package/bundled-skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  62. package/bundled-skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
  63. package/bundled-skills/react-native-skills/rules/react-state-fallback.md +56 -0
  64. package/bundled-skills/react-native-skills/rules/react-state-minimize.md +65 -0
  65. package/bundled-skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  66. package/bundled-skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  67. package/bundled-skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
  68. package/bundled-skills/react-native-skills/rules/state-ground-truth.md +80 -0
  69. package/bundled-skills/react-native-skills/rules/ui-expo-image.md +66 -0
  70. package/bundled-skills/react-native-skills/rules/ui-image-gallery.md +104 -0
  71. package/bundled-skills/react-native-skills/rules/ui-measure-views.md +78 -0
  72. package/bundled-skills/react-native-skills/rules/ui-menus.md +174 -0
  73. package/bundled-skills/react-native-skills/rules/ui-native-modals.md +77 -0
  74. package/bundled-skills/react-native-skills/rules/ui-pressable.md +61 -0
  75. package/bundled-skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  76. package/bundled-skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  77. package/bundled-skills/react-native-skills/rules/ui-styling.md +87 -0
  78. package/bundled-skills/schema-markup-generator/SKILL.md +1 -1
  79. package/bundled-skills/skill-issue/SKILL.md +73 -0
  80. package/bundled-skills/social-metadata-hardening/SKILL.md +4 -3
  81. package/bundled-skills/social-post-writer-seo/SKILL.md +19 -0
  82. package/bundled-skills/tdd-workflows/SKILL.md +35 -0
  83. package/bundled-skills/user-thoughts/SKILL.md +236 -0
  84. package/bundled-skills/user-thoughts/assets/Runtime-Template/README.ai.md +13 -0
  85. package/bundled-skills/user-thoughts/assets/Runtime-Template/define.ini +3 -0
  86. package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/README.ai.md +25 -0
  87. package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/backlog.md +19 -0
  88. package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/dev-stack.md +7 -0
  89. package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/general.md +7 -0
  90. package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/plans.md +7 -0
  91. package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/rules.md +7 -0
  92. package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/ui/details.md +7 -0
  93. package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/ui/outline.md +7 -0
  94. package/bundled-skills/user-thoughts/references/commands.md +54 -0
  95. package/bundled-skills/user-thoughts/references/edge-cases.md +84 -0
  96. package/bundled-skills/user-thoughts/references/safety.md +65 -0
  97. package/bundled-skills/user-thoughts/references/sortin.md +76 -0
  98. package/bundled-skills/user-thoughts/scripts/common.py +62 -0
  99. package/bundled-skills/user-thoughts/scripts/ignore_ops.py +125 -0
  100. package/bundled-skills/user-thoughts/scripts/init.py +63 -0
  101. package/bundled-skills/user-thoughts/scripts/show_mdbase.py +93 -0
  102. package/bundled-skills/user-thoughts/scripts/show_raw.py +42 -0
  103. package/bundled-skills/user-thoughts/scripts/sortin.py +211 -0
  104. package/bundled-skills/user-thoughts/scripts/status.py +56 -0
  105. package/bundled-skills/user-thoughts/scripts/toggle.py +68 -0
  106. package/bundled-skills/user-thoughts/scripts/write_raw.py +106 -0
  107. package/bundled-skills/vercel-cli-with-tokens/SKILL.md +361 -0
  108. package/bundled-skills/vercel-optimize/CONTRIBUTING.md +41 -0
  109. package/bundled-skills/vercel-optimize/SKILL.md +331 -0
  110. package/bundled-skills/vercel-optimize/lib/auth-route.mjs +23 -0
  111. package/bundled-skills/vercel-optimize/lib/budget-summary.mjs +182 -0
  112. package/bundled-skills/vercel-optimize/lib/citations.mjs +139 -0
  113. package/bundled-skills/vercel-optimize/lib/cost-coverage.mjs +143 -0
  114. package/bundled-skills/vercel-optimize/lib/dedup-recs.mjs +325 -0
  115. package/bundled-skills/vercel-optimize/lib/deep-dive.mjs +350 -0
  116. package/bundled-skills/vercel-optimize/lib/display-labels.mjs +185 -0
  117. package/bundled-skills/vercel-optimize/lib/extract-claims.mjs +550 -0
  118. package/bundled-skills/vercel-optimize/lib/framework-support.mjs +67 -0
  119. package/bundled-skills/vercel-optimize/lib/gates/build-minutes-fanout.mjs +69 -0
  120. package/bundled-skills/vercel-optimize/lib/gates/cold-start.mjs +66 -0
  121. package/bundled-skills/vercel-optimize/lib/gates/contract.mjs +79 -0
  122. package/bundled-skills/vercel-optimize/lib/gates/cwv-poor.mjs +87 -0
  123. package/bundled-skills/vercel-optimize/lib/gates/external-api-slow.mjs +55 -0
  124. package/bundled-skills/vercel-optimize/lib/gates/hard-gates.mjs +73 -0
  125. package/bundled-skills/vercel-optimize/lib/gates/index.mjs +45 -0
  126. package/bundled-skills/vercel-optimize/lib/gates/isr-overrevalidation.mjs +62 -0
  127. package/bundled-skills/vercel-optimize/lib/gates/middleware-heavy.mjs +51 -0
  128. package/bundled-skills/vercel-optimize/lib/gates/observability-events-attribution.mjs +56 -0
  129. package/bundled-skills/vercel-optimize/lib/gates/platform-bot-protection.mjs +115 -0
  130. package/bundled-skills/vercel-optimize/lib/gates/platform-fluid-compute.mjs +83 -0
  131. package/bundled-skills/vercel-optimize/lib/gates/region-misconfig.mjs +64 -0
  132. package/bundled-skills/vercel-optimize/lib/gates/route-errors.mjs +80 -0
  133. package/bundled-skills/vercel-optimize/lib/gates/scanner-driven.mjs +122 -0
  134. package/bundled-skills/vercel-optimize/lib/gates/select-candidates.mjs +134 -0
  135. package/bundled-skills/vercel-optimize/lib/gates/slow-route.mjs +88 -0
  136. package/bundled-skills/vercel-optimize/lib/gates/types.d.ts +38 -0
  137. package/bundled-skills/vercel-optimize/lib/gates/uncached-route.mjs +93 -0
  138. package/bundled-skills/vercel-optimize/lib/gates/usage-spike-triage.mjs +121 -0
  139. package/bundled-skills/vercel-optimize/lib/grade-recommendation.mjs +155 -0
  140. package/bundled-skills/vercel-optimize/lib/impact-label.mjs +126 -0
  141. package/bundled-skills/vercel-optimize/lib/impact-magnitude.mjs +60 -0
  142. package/bundled-skills/vercel-optimize/lib/investigation-brief.mjs +610 -0
  143. package/bundled-skills/vercel-optimize/lib/observation-safety.mjs +174 -0
  144. package/bundled-skills/vercel-optimize/lib/project-facts.mjs +99 -0
  145. package/bundled-skills/vercel-optimize/lib/queries.mjs +315 -0
  146. package/bundled-skills/vercel-optimize/lib/reconcile-candidates.mjs +372 -0
  147. package/bundled-skills/vercel-optimize/lib/render-report.mjs +955 -0
  148. package/bundled-skills/vercel-optimize/lib/repo-root.mjs +86 -0
  149. package/bundled-skills/vercel-optimize/lib/route-normalize.mjs +220 -0
  150. package/bundled-skills/vercel-optimize/lib/sanitizers/bot-protection-certainty.mjs +38 -0
  151. package/bundled-skills/vercel-optimize/lib/sanitizers/cache-tag-invalidation-certainty.mjs +30 -0
  152. package/bundled-skills/vercel-optimize/lib/sanitizers/count-correct.mjs +52 -0
  153. package/bundled-skills/vercel-optimize/lib/sanitizers/function-duration-invocations.mjs +38 -0
  154. package/bundled-skills/vercel-optimize/lib/sanitizers/index.mjs +79 -0
  155. package/bundled-skills/vercel-optimize/lib/sanitizers/middleware-conflict.mjs +36 -0
  156. package/bundled-skills/vercel-optimize/lib/sanitizers/missing-citation.mjs +16 -0
  157. package/bundled-skills/vercel-optimize/lib/sanitizers/pre-release.mjs +74 -0
  158. package/bundled-skills/vercel-optimize/lib/sanitizers/rate-limit.mjs +67 -0
  159. package/bundled-skills/vercel-optimize/lib/sanitizers/rendering-mode-mislabel.mjs +38 -0
  160. package/bundled-skills/vercel-optimize/lib/sanitizers/undeclared-dep.mjs +78 -0
  161. package/bundled-skills/vercel-optimize/lib/sanitizers/vercel-directive-strip.mjs +37 -0
  162. package/bundled-skills/vercel-optimize/lib/sanitizers/window-units.mjs +32 -0
  163. package/bundled-skills/vercel-optimize/lib/scanners/cache-components-suspense-dedupe.mjs +109 -0
  164. package/bundled-skills/vercel-optimize/lib/scanners/edge-heavy-import.mjs +94 -0
  165. package/bundled-skills/vercel-optimize/lib/scanners/force-dynamic.mjs +42 -0
  166. package/bundled-skills/vercel-optimize/lib/scanners/headers-in-page.mjs +44 -0
  167. package/bundled-skills/vercel-optimize/lib/scanners/index.mjs +35 -0
  168. package/bundled-skills/vercel-optimize/lib/scanners/large-static-asset.mjs +92 -0
  169. package/bundled-skills/vercel-optimize/lib/scanners/max-age-without-s-maxage.mjs +42 -0
  170. package/bundled-skills/vercel-optimize/lib/scanners/middleware-broad-matcher.mjs +55 -0
  171. package/bundled-skills/vercel-optimize/lib/scanners/missing-cache-headers.mjs +90 -0
  172. package/bundled-skills/vercel-optimize/lib/scanners/prisma-include-tree.mjs +42 -0
  173. package/bundled-skills/vercel-optimize/lib/scanners/region-pin-in-config.mjs +88 -0
  174. package/bundled-skills/vercel-optimize/lib/scanners/source-maps-production.mjs +36 -0
  175. package/bundled-skills/vercel-optimize/lib/scanners/sveltekit-prerender-missing.mjs +43 -0
  176. package/bundled-skills/vercel-optimize/lib/scanners/turbo-force-bypass.mjs +129 -0
  177. package/bundled-skills/vercel-optimize/lib/scanners/unoptimized-image.mjs +113 -0
  178. package/bundled-skills/vercel-optimize/lib/scanners/use-cache-date-stamp.mjs +106 -0
  179. package/bundled-skills/vercel-optimize/lib/support-topics.mjs +355 -0
  180. package/bundled-skills/vercel-optimize/lib/throttle.mjs +273 -0
  181. package/bundled-skills/vercel-optimize/lib/util.mjs +17 -0
  182. package/bundled-skills/vercel-optimize/lib/vercel.mjs +784 -0
  183. package/bundled-skills/vercel-optimize/lib/verify-claim.mjs +1296 -0
  184. package/bundled-skills/vercel-optimize/lib/workspace-resolver.mjs +521 -0
  185. package/bundled-skills/vercel-optimize/references/candidates.md +176 -0
  186. package/bundled-skills/vercel-optimize/references/data-collection.md +218 -0
  187. package/bundled-skills/vercel-optimize/references/docs-library.json +683 -0
  188. package/bundled-skills/vercel-optimize/references/doctrine.md +105 -0
  189. package/bundled-skills/vercel-optimize/references/observability-plus.md +108 -0
  190. package/bundled-skills/vercel-optimize/references/playbooks/README.md +53 -0
  191. package/bundled-skills/vercel-optimize/references/playbooks/ai-application.md +32 -0
  192. package/bundled-skills/vercel-optimize/references/playbooks/api-service.md +30 -0
  193. package/bundled-skills/vercel-optimize/references/playbooks/content-site.md +30 -0
  194. package/bundled-skills/vercel-optimize/references/playbooks/ecommerce.md +30 -0
  195. package/bundled-skills/vercel-optimize/references/playbooks/marketing.md +30 -0
  196. package/bundled-skills/vercel-optimize/references/playbooks/saas.md +31 -0
  197. package/bundled-skills/vercel-optimize/references/playbooks/sveltekit.md +75 -0
  198. package/bundled-skills/vercel-optimize/references/recommendations.md +203 -0
  199. package/bundled-skills/vercel-optimize/references/scanner-patterns.md +251 -0
  200. package/bundled-skills/vercel-optimize/references/scoring.md +205 -0
  201. package/bundled-skills/vercel-optimize/references/support-topics/README.md +46 -0
  202. package/bundled-skills/vercel-optimize/references/support-topics/astro-edge-middleware-scope.md +22 -0
  203. package/bundled-skills/vercel-optimize/references/support-topics/astro-output-mode-and-isr.md +22 -0
  204. package/bundled-skills/vercel-optimize/references/support-topics/auth-preserving-parallelization.md +22 -0
  205. package/bundled-skills/vercel-optimize/references/support-topics/bot-protection-product-guardrails.md +22 -0
  206. package/bundled-skills/vercel-optimize/references/support-topics/build-minutes-monorepo-fanout.md +23 -0
  207. package/bundled-skills/vercel-optimize/references/support-topics/cache-components-static-shell-boundaries.md +22 -0
  208. package/bundled-skills/vercel-optimize/references/support-topics/cache-components-suspense-dedupe-pitfall.md +23 -0
  209. package/bundled-skills/vercel-optimize/references/support-topics/cdn-cache-auth-safety.md +22 -0
  210. package/bundled-skills/vercel-optimize/references/support-topics/cold-start-initialization-bundle.md +22 -0
  211. package/bundled-skills/vercel-optimize/references/support-topics/core-web-vitals-client-bottlenecks.md +22 -0
  212. package/bundled-skills/vercel-optimize/references/support-topics/database-egress-pooling-region.md +22 -0
  213. package/bundled-skills/vercel-optimize/references/support-topics/dynamic-rendering-traps.md +22 -0
  214. package/bundled-skills/vercel-optimize/references/support-topics/external-api-critical-path-platform.md +22 -0
  215. package/bundled-skills/vercel-optimize/references/support-topics/external-api-critical-path.md +22 -0
  216. package/bundled-skills/vercel-optimize/references/support-topics/fast-data-transfer-payloads.md +22 -0
  217. package/bundled-skills/vercel-optimize/references/support-topics/fluid-compute-caveats.md +22 -0
  218. package/bundled-skills/vercel-optimize/references/support-topics/function-duration-io-and-after.md +22 -0
  219. package/bundled-skills/vercel-optimize/references/support-topics/function-invocation-reduction.md +22 -0
  220. package/bundled-skills/vercel-optimize/references/support-topics/function-region-misconfiguration-ttfb.md +23 -0
  221. package/bundled-skills/vercel-optimize/references/support-topics/image-optimization-cost-control.md +22 -0
  222. package/bundled-skills/vercel-optimize/references/support-topics/isr-revalidation-static-generation.md +22 -0
  223. package/bundled-skills/vercel-optimize/references/support-topics/middleware-proxy-edge-cost.md +22 -0
  224. package/bundled-skills/vercel-optimize/references/support-topics/next-fetch-revalidate-floor.md +22 -0
  225. package/bundled-skills/vercel-optimize/references/support-topics/next-font-cls-self-hosting.md +23 -0
  226. package/bundled-skills/vercel-optimize/references/support-topics/next-heavy-ui-lazy-load-boundaries.md +23 -0
  227. package/bundled-skills/vercel-optimize/references/support-topics/next-image-lcp-preload-sizes.md +23 -0
  228. package/bundled-skills/vercel-optimize/references/support-topics/next-route-handler-get-cache-defaults.md +22 -0
  229. package/bundled-skills/vercel-optimize/references/support-topics/next-script-third-party-strategy.md +23 -0
  230. package/bundled-skills/vercel-optimize/references/support-topics/nextjs-version-cache-semantics.md +22 -0
  231. package/bundled-skills/vercel-optimize/references/support-topics/not-found-catchall-request-waste.md +23 -0
  232. package/bundled-skills/vercel-optimize/references/support-topics/nuxt-route-rules-cache-isr.md +22 -0
  233. package/bundled-skills/vercel-optimize/references/support-topics/observability-events-cost-attribution.md +22 -0
  234. package/bundled-skills/vercel-optimize/references/support-topics/post-response-work-waituntil.md +22 -0
  235. package/bundled-skills/vercel-optimize/references/support-topics/route-error-durable-offload.md +22 -0
  236. package/bundled-skills/vercel-optimize/references/support-topics/route-error-runtime-limits.md +22 -0
  237. package/bundled-skills/vercel-optimize/references/support-topics/runtime-cache-reusable-data.md +22 -0
  238. package/bundled-skills/vercel-optimize/references/support-topics/sveltekit-isr-prerender-safety.md +22 -0
  239. package/bundled-skills/vercel-optimize/references/support-topics/sveltekit-split-cold-start-tradeoff.md +22 -0
  240. package/bundled-skills/vercel-optimize/references/support-topics/usage-spike-triage.md +22 -0
  241. package/bundled-skills/vercel-optimize/references/support-topics/use-cache-date-stamp-isr-write-amplifier.md +23 -0
  242. package/bundled-skills/vercel-optimize/references/support-topics/use-cache-remote-shared-origin-data.md +22 -0
  243. package/bundled-skills/vercel-optimize/references/support-topics/workflow-resumable-stream-routes.md +23 -0
  244. package/bundled-skills/vercel-optimize/references/verification.md +102 -0
  245. package/bundled-skills/vercel-optimize/references/voice.md +76 -0
  246. package/bundled-skills/vercel-optimize/scripts/budget-summary.mjs +56 -0
  247. package/bundled-skills/vercel-optimize/scripts/build-docs.mjs +74 -0
  248. package/bundled-skills/vercel-optimize/scripts/check-citations.mjs +81 -0
  249. package/bundled-skills/vercel-optimize/scripts/check-docs-fresh.mjs +93 -0
  250. package/bundled-skills/vercel-optimize/scripts/collect-signals.mjs +576 -0
  251. package/bundled-skills/vercel-optimize/scripts/collect-sub-agent-outputs.mjs +296 -0
  252. package/bundled-skills/vercel-optimize/scripts/deep-dive.mjs +319 -0
  253. package/bundled-skills/vercel-optimize/scripts/gate-investigations.mjs +166 -0
  254. package/bundled-skills/vercel-optimize/scripts/merge-signals.mjs +192 -0
  255. package/bundled-skills/vercel-optimize/scripts/prepare-investigation-brief.mjs +231 -0
  256. package/bundled-skills/vercel-optimize/scripts/reconcile-candidates.mjs +62 -0
  257. package/bundled-skills/vercel-optimize/scripts/render-report.mjs +437 -0
  258. package/bundled-skills/vercel-optimize/scripts/scan-codebase.mjs +313 -0
  259. package/bundled-skills/vercel-optimize/scripts/verify-and-regen.mjs +346 -0
  260. package/bundled-skills/vercel-optimize/scripts/verify-finding.mjs +19 -0
  261. package/bundled-skills/vercel-react-view-transitions/SKILL.md +327 -0
  262. package/bundled-skills/vercel-react-view-transitions/references/css-recipes.md +242 -0
  263. package/bundled-skills/vercel-react-view-transitions/references/implementation.md +182 -0
  264. package/bundled-skills/vercel-react-view-transitions/references/nextjs.md +176 -0
  265. package/bundled-skills/vercel-react-view-transitions/references/patterns.md +262 -0
  266. package/bundled-skills/vibe-code-cleanup/SKILL.md +4 -4
  267. package/bundled-skills/vibecode-production-qa-validator/SKILL.md +3 -2
  268. package/package.json +1 -1
  269. package/skills_index.json +338 -4
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "updatedAt": "2026-06-02T02:29:56.350Z",
3
+ "updatedAt": "2026-06-04T02:31:57.779Z",
4
4
  "entries": [
5
5
  "00-andruia-consultant",
6
6
  "007",
@@ -10,6 +10,9 @@
10
10
  "ab-test-setup",
11
11
  "acceptance-orchestrator",
12
12
  "accessibility-compliance-accessibility-audit",
13
+ "accesslint-audit",
14
+ "accesslint-diff",
15
+ "accesslint-scan",
13
16
  "active-directory-attacks",
14
17
  "activecampaign-automation",
15
18
  "ad-creative",
@@ -377,6 +380,7 @@
377
380
  "competitive-landscape",
378
381
  "competitor-alternatives",
379
382
  "complexity-cuts",
383
+ "composition-patterns",
380
384
  "comprehensive-review-full-review",
381
385
  "comprehensive-review-pr-enhance",
382
386
  "computer-use-agents",
@@ -458,6 +462,7 @@
458
462
  "debug-buttercup",
459
463
  "debugger",
460
464
  "debugging-strategies",
465
+ "debugging-toolkit",
461
466
  "debugging-toolkit-smart-debug",
462
467
  "decision-navigator",
463
468
  "deep-research",
@@ -465,6 +470,7 @@
465
470
  "defuddle",
466
471
  "dependency-management-deps-audit",
467
472
  "dependency-upgrade",
473
+ "deploy-to-vercel",
468
474
  "deployment-engineer",
469
475
  "deployment-pipeline-design",
470
476
  "deployment-procedures",
@@ -1029,6 +1035,7 @@
1029
1035
  "plotly",
1030
1036
  "podcast-generation",
1031
1037
  "polars",
1038
+ "polis-protocol",
1032
1039
  "popup-cro",
1033
1040
  "posix-shell-pro",
1034
1041
  "postgres-best-practices",
@@ -1073,6 +1080,7 @@
1073
1080
  "pydantic-ai",
1074
1081
  "pydantic-models-py",
1075
1082
  "pypict-skill",
1083
+ "python-development",
1076
1084
  "python-development-python-scaffold",
1077
1085
  "python-fastapi-development",
1078
1086
  "python-packaging",
@@ -1095,6 +1103,7 @@
1095
1103
  "react-flow-node-ts",
1096
1104
  "react-modernization",
1097
1105
  "react-native-architecture",
1106
+ "react-native-skills",
1098
1107
  "react-nextjs-development",
1099
1108
  "react-patterns",
1100
1109
  "react-state-management",
@@ -1240,6 +1249,7 @@
1240
1249
  "skill-developer",
1241
1250
  "skill-improver",
1242
1251
  "skill-installer",
1252
+ "skill-issue",
1243
1253
  "skill-optimizer",
1244
1254
  "skill-rails-upgrade",
1245
1255
  "skill-router",
@@ -1317,6 +1327,7 @@
1317
1327
  "tcm-constitution-analyzer",
1318
1328
  "tdd-orchestrator",
1319
1329
  "tdd-workflow",
1330
+ "tdd-workflows",
1320
1331
  "tdd-workflows-tdd-cycle",
1321
1332
  "tdd-workflows-tdd-green",
1322
1333
  "tdd-workflows-tdd-red",
@@ -1399,6 +1410,7 @@
1399
1410
  "unsplash-integration",
1400
1411
  "upgrading-expo",
1401
1412
  "upstash-qstash",
1413
+ "user-thoughts",
1402
1414
  "using-git-worktrees",
1403
1415
  "using-neon",
1404
1416
  "using-superpowers",
@@ -1416,7 +1428,10 @@
1416
1428
  "vector-index-tuning",
1417
1429
  "vercel-ai-sdk-expert",
1418
1430
  "vercel-automation",
1431
+ "vercel-cli-with-tokens",
1419
1432
  "vercel-deployment",
1433
+ "vercel-optimize",
1434
+ "vercel-react-view-transitions",
1420
1435
  "verification-before-completion",
1421
1436
  "vexor",
1422
1437
  "vexor-cli",
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: accesslint-audit
3
+ description: "Find and fix WCAG 2.2 accessibility issues. Two modes — report (sweep a codebase or page, produce a prioritized written report, no edits) and fix (audit→edit→verify loop on a target). Prefers direct-CDP live-DOM auditing; falls back to a browser-MCP composition or HTML-string audits."
4
+ risk: safe
5
+ source: "https://github.com/AccessLint/skills"
6
+ date_added: "2026-06-02"
7
+ ---
8
+
9
+ You audit accessibility and optionally fix what's broken.
10
+
11
+ ## When to Use
12
+ - Use this skill when the task matches this description: Find and fix WCAG 2.2 accessibility issues. Two modes — report (sweep a codebase or page, produce a prioritized written report, no edits) and fix (audit→edit→verify loop on a target). Prefers direct-CDP live-DOM auditing; falls back to a browser-MCP composition or HTML-string audits.
13
+
14
+ ## Pick a mode from the user's intent
15
+
16
+ - **Report mode** — "audit my codebase", "review src/components/", "what's wrong with this page?", "give me an a11y report". You audit + write a report. **You do not edit files.**
17
+ - **Fix mode** — "fix the a11y issues in X", "audit and fix", "make this accessible", "verify the contrast fix landed", or hands you a violation report and asks to apply it. You audit → edit → verify.
18
+
19
+ If unsure, ask. Don't default-to-fix when the user only asked for an audit.
20
+
21
+ For very large sweeps where main-thread context cost matters, you can be invoked via `Task` (general-purpose agent) for context isolation. The recipe is the same either way.
22
+
23
+ ## Picking a flow
24
+
25
+ Three flows, in order of preference.
26
+
27
+ 1. **`audit_live`** — try first for any URL. Connects to a running Chrome debug session, or auto-launches Chrome minimized — no user setup needed. Single call; IIFE bytes don't enter your context.
28
+ 2. **`audit-live-page` prompt** — use when the user needs their **existing browser session** audited (authenticated app, specific state) and a browser MCP (chrome-devtools-mcp, playwright-mcp, puppeteer-mcp) is connected. Invoke via `Skill` with `mode: "fix"` or `mode: "plan"`.
29
+ 3. **`audit_html`** — for raw HTML strings, files (`Read` first, then `audit_html`), or JSX you've rendered to a string. Pair with `audit_diff({ html })` for fix-mode verification.
30
+
31
+ For non-URL targets, skip straight to flow 3. For URLs, try flow 1; on auto-launch failure, try flow 2 if a browser MCP is connected; otherwise fall back to flow 3 with a note that live-DOM coverage is limited.
32
+
33
+ ## Scope handling (report mode)
34
+
35
+ - **Directory path** — analyze all relevant files within.
36
+ - **Multiple files** — analyze the listed files plus imports they reach.
37
+ - **A URL** — audit it. If it's a dev-server URL, that's flow 1 or 2.
38
+ - **No arguments** — ask the user to narrow scope. Whole-codebase sweeps are rarely the right thing.
39
+
40
+ State the scope explicitly at the start of your report.
41
+
42
+ ## Approach (report mode)
43
+
44
+ 1. **Map the surface.** Glob/Grep to enumerate components, templates, styles. Sample representative files; don't open everything blindly.
45
+ 2. **Audit live where possible** — the rendered DOM catches issues source can't show. Use the flow picker above.
46
+ 3. **Look for patterns.** If one component fails a rule, similar components likely do too. Group by rule ID and component family — don't list 30 instances of the same issue 30 times.
47
+ 4. **Prioritize by user impact.** Critical/serious first. Many low-impact violations of one rule are often a single root-cause fix.
48
+ 5. **Use `format: "compact"` for sweep-time calls.** Reserve verbose output for rules you'll expand in the report.
49
+ 6. **Trust `Source:` lines.** Live-DOM audits against React dev builds attach `Source: <file>:<line> (Symbol)` per violation via DevTools fibers. Use it as the file pointer instead of grepping selectors. Fall back to stable hooks → visible text → tree position when absent.
50
+ 7. **Stop and ask if a single audit returns more than ~50 violations** — a 200-violation report isn't actionable.
51
+
52
+ The engine catches what's mechanically detectable. Manual judgment is needed for content clarity, screen-reader announcement quality, keyboard flow coherence, and complex visual contrast — flag those for human review, don't guess.
53
+
54
+ ### Report format
55
+
56
+ ```
57
+ # Accessibility audit — <scope>
58
+
59
+ ## Summary
60
+ - N critical, M serious, K moderate, J minor (after deduplication)
61
+ - Most impactful patterns: <one-line each, max 3>
62
+
63
+ ## Critical (blocks access)
64
+ For each pattern:
65
+ - **Pattern**: <one-line description>
66
+ - **WCAG**: <ID> — <name>
67
+ - **Affected files**: <file:line> (×N if repeated)
68
+ - **Fix**: <directive from engine output, or specific code change>
69
+ - **Why critical**: <user impact>
70
+
71
+ ## Serious
72
+ [same shape]
73
+
74
+ ## Moderate / Minor
75
+ [Bullet list, deduplicated by rule. Skip per-instance detail unless the fix differs.]
76
+
77
+ ## Recommendations
78
+ - Architectural / pattern-level changes that would prevent recurrence.
79
+ - Tooling or component abstractions worth introducing.
80
+ - What to verify manually (screen reader, keyboard, low-vision testing).
81
+
82
+ ## Positive findings
83
+ What the codebase does well — short, factual, reinforces practices to keep.
84
+ ```
85
+
86
+ Include rule IDs in every entry. Quote the `Fix:` directive verbatim for `mechanical` rules. For `visual` / `contextual`, leave a `TODO` with the rule ID; don't invent content.
87
+
88
+ ## Recipe (fix mode)
89
+
90
+ 1. **Baseline.** Audit with `name: "before"` and `format: "compact"`.
91
+ 2. **Plan + apply.** For each violation:
92
+ - `Source:` line present → open that file at that line. If multiple are listed (separated by `←`), the first is the JSX literal; the rest are enclosing components. Use `Symbol` to disambiguate.
93
+ - No `Source:` → grep stable hooks (`data-testid`, `id`, `aria-label`), then visible text, then tree position.
94
+ - The violation's `Fixability:` and `Fix:` fields are authoritative — apply mechanical fixes verbatim, leave `TODO`s with the rule ID for `contextual` / `visual`. Never invent content.
95
+ - Group same-file edits into one operation.
96
+ - Confirm scope with the user before touching files outside the obvious target, or before more than ~10 mechanical fixes.
97
+ 3. **Verify.** Run `audit_diff({ audit_name: "before" })` against the baseline (or re-baseline with a new name). Confirm `-fixed` covers your targets and `+new` is empty.
98
+
99
+ `Source:` lines come from React DevTools fibers and only appear in live-DOM audits against React dev builds. Static audits won't have them — fall back to selectors.
100
+
101
+ When unsure about a rule, call `explain_rule({ id: "<rule-id>" })` for guidance and `browserHint`.
102
+
103
+ ## When to bail (fix mode)
104
+
105
+ - A violation has no `Fix:` directive — leave a `TODO`, don't guess.
106
+ - Verification fails (anything in `+new`, or a targeted rule missing from `-fixed`) — name it and stop. Do not iterate silently.
107
+
108
+ ## Output (fix mode)
109
+
110
+ Per cycle: flow used, violations by impact, what was applied (file + rule), what was deferred (`TODO`s + reasons), final diff.
111
+
112
+ ## Limitations
113
+ - Use this skill only when the task clearly matches the scope described above.
114
+ - Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
115
+ - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: accesslint-diff
3
+ description: "Diff a live page's accessibility violations against a baseline — by default compares uncommitted changes (stash-based), or pass --branch [<name>] to diff against a branch. Reports only new violations introduced, violations fixed, and pre-existing count. Use `scan` for a full audit with no diffing."
4
+ risk: safe
5
+ source: "https://github.com/AccessLint/skills"
6
+ date_added: "2026-06-02"
7
+ ---
8
+
9
+ Default branch: !`git symbolic-ref refs/remotes/origin/HEAD --short 2>/dev/null | sed 's|.*/||' || echo main`
10
+
11
+ Report only what changed. Locate; don't fix. If no URL in `$ARGUMENTS`, ask for one.
12
+
13
+ Parse `$ARGUMENTS`: strip `--branch <name>` if present → branch mode. If `--branch` has no value, use the default branch above. Remainder is the URL.
14
+
15
+ ## When to Use
16
+ - Use this skill when the task matches this description: Diff a live page's accessibility violations against a baseline — by default compares uncommitted changes (stash-based), or pass --branch [<name>] to diff against a branch. Reports only new violations introduced, violations fixed, and pre-existing count. Use `scan` for a full audit with no diffing.
17
+
18
+ ## 1. Audit
19
+
20
+ ```bash
21
+ PORT=$(npx -y @accesslint/chrome@latest ensure | node -e 'process.stdin.on("data",d=>process.stdout.write(""+JSON.parse(d).port))')
22
+ ```
23
+
24
+ **Stash mode** (default — uncommitted changes). Tell the user first: _"Running in diff mode — stashing your changes to capture a baseline, then restoring. Your working tree will be fully restored."_ If `git stash push` fails, warn and exit.
25
+
26
+ ```bash
27
+ git stash push -u -m "accesslint-diff-baseline"
28
+ npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --update-snapshot
29
+ git stash pop && sleep 2
30
+ npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --format json
31
+ ```
32
+
33
+ **Branch mode** (`--branch <name>`). Tell the user first: _"Diffing against `<name>` — checking out that branch to capture a baseline, then restoring. Your working tree will be fully restored."_
34
+
35
+ Branch switching triggers a rebuild but not a browser reload — the CLI opens a fresh tab each time so it always reads the current build. Use `--wait-for "<selector>"` to gate the audit until the rebuild is ready; without it, warn the user that a slow build may yield a stale baseline.
36
+
37
+ ```bash
38
+ git diff --quiet && git diff --cached --quiet || git stash push -u -m "accesslint-diff-branch"
39
+ git checkout <branch>
40
+ npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --update-snapshot [--wait-for "<selector>"]
41
+ git checkout - && git stash pop 2>/dev/null
42
+ npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --format json [--wait-for "<selector>"]
43
+ ```
44
+
45
+ Pass `--selector`, `--include-aaa` to **both** runs.
46
+
47
+ ## 2. Report
48
+
49
+ ```
50
+ Accessibility diff — http://localhost:3000/ vs main (94 rules, live DOM)
51
+ 2 new · 1 fixed · 4 pre-existing hidden
52
+
53
+ New — Critical
54
+ - color-contrast — 2.1:1 (needs 4.5:1), #bbb on #fff
55
+ where: main > p.subtitle fix: darken to #767676
56
+ Fixed
57
+ - img-alt — <img src="old.jpg"> (no longer present)
58
+ ```
59
+
60
+ Each new violation: **where** (selector verbatim + `file:line (symbol)` if `source` present — never fabricate), **evidence**, **fix** (mechanical change or `NEEDS HUMAN`).
61
+
62
+ Don't edit. For fixes: apply mechanical ones then re-run `accesslint:diff` to verify; for bulk work hand off to `accesslint:audit`.
63
+
64
+ ## 3. Tear down
65
+
66
+ ```bash
67
+ npx -y @accesslint/chrome@latest stop --all # skip if ensure reported "managed":false
68
+ ```
69
+
70
+ ## Gotchas
71
+
72
+ - `ensure` always determines the port — never hardcode 9222.
73
+ - CLI exit 2 = bad URL or page never loaded; check the dev server.
74
+ - Stash mode: `sleep 2` covers most HMR cases; if baseline looks identical to current, add `--wait-for "<selector>"`.
75
+ - Branch mode: no HMR — CLI opens a fresh tab each run. `--wait-for` is the rebuild gate.
76
+ - Heavy DOM changes between runs cause selector drift — re-run with `accesslint:scan` for the full picture.
77
+
78
+ ## Limitations
79
+ - Use this skill only when the task clearly matches the scope described above.
80
+ - Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
81
+ - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: accesslint-scan
3
+ description: "Audit a live page for accessibility issues, locate each WCAG violation precisely, and return a selector-grounded fix worklist without editing."
4
+ risk: safe
5
+ source: "https://github.com/AccessLint/skills"
6
+ date_added: "2026-06-02"
7
+ ---
8
+
9
+ Audit a live page and report what's broken and where. Locate; don't fix. If no URL in `$ARGUMENTS`, ask for one.
10
+
11
+ ## When to Use
12
+ - Use this skill when the task matches this description: Audit a live page for accessibility issues, locate each WCAG violation precisely, and return a selector-grounded fix worklist without editing.
13
+
14
+ ## 1. Audit
15
+
16
+ ```bash
17
+ PORT=$(npx -y @accesslint/chrome@latest ensure | node -e 'process.stdin.on("data",d=>process.stdout.write(""+JSON.parse(d).port))')
18
+ npx -y @accesslint/cli@latest "<url>" --port "$PORT" --format json
19
+ ```
20
+
21
+ Flags as needed: `--selector`, `--wait-for "<selector>"`, `--include-aaa`, `--disable <rules>`.
22
+
23
+ ## 2. Report
24
+
25
+ Counts by impact, then one entry per violation:
26
+
27
+ - **where** — selector verbatim + `file:line (symbol)` if `source` is present — never fabricate. If no violation has `source`, note "source mapping unavailable — located by selector only".
28
+ - **evidence** — contrast ratio, missing attribute, empty name
29
+ - **fix** — mechanical change or `NEEDS HUMAN`
30
+
31
+ Don't edit. For fixes: apply mechanical ones then re-run to verify; for bulk work hand off to `accesslint:audit`.
32
+
33
+ ## 3. Tear down
34
+
35
+ ```bash
36
+ npx -y @accesslint/chrome@latest stop --all # skip if ensure reported "managed":false
37
+ ```
38
+
39
+ ## Gotchas
40
+
41
+ - `ensure` always determines the port — never hardcode 9222.
42
+ - CLI exit 2 = bad URL or page never loaded; check the dev server.
43
+
44
+ ## Limitations
45
+ - Use this skill only when the task clearly matches the scope described above.
46
+ - Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
47
+ - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: composition-patterns
3
+ description: "Use when working with composition-patterns tasks or workflows"
4
+ risk: safe
5
+ source: "https://github.com/vercel-labs/agent-skills"
6
+ date_added: "2026-06-02"
7
+ ---
8
+
9
+ # React Composition Patterns
10
+
11
+ Composition patterns for building flexible, maintainable React components. Avoid
12
+ boolean prop proliferation by using compound components, lifting state, and
13
+ composing internals. These patterns make codebases easier for both humans and AI
14
+ agents to work with as they scale.
15
+
16
+ ## When to Use
17
+ Reference these guidelines when:
18
+
19
+ - Refactoring components with many boolean props
20
+ - Building reusable component libraries
21
+ - Designing flexible component APIs
22
+ - Reviewing component architecture
23
+ - Working with compound components or context providers
24
+
25
+ ## Rule Categories by Priority
26
+
27
+ | Priority | Category | Impact | Prefix |
28
+ | -------- | ----------------------- | ------ | --------------- |
29
+ | 1 | Component Architecture | HIGH | `architecture-` |
30
+ | 2 | State Management | MEDIUM | `state-` |
31
+ | 3 | Implementation Patterns | MEDIUM | `patterns-` |
32
+ | 4 | React 19 APIs | MEDIUM | `react19-` |
33
+
34
+ ## Quick Reference
35
+
36
+ ### 1. Component Architecture (HIGH)
37
+
38
+ - `architecture-avoid-boolean-props` - Don't add boolean props to customize
39
+ behavior; use composition
40
+ - `architecture-compound-components` - Structure complex components with shared
41
+ context
42
+
43
+ ### 2. State Management (MEDIUM)
44
+
45
+ - `state-decouple-implementation` - Provider is the only place that knows how
46
+ state is managed
47
+ - `state-context-interface` - Define generic interface with state, actions, meta
48
+ for dependency injection
49
+ - `state-lift-state` - Move state into provider components for sibling access
50
+
51
+ ### 3. Implementation Patterns (MEDIUM)
52
+
53
+ - `patterns-explicit-variants` - Create explicit variant components instead of
54
+ boolean modes
55
+ - `patterns-children-over-render-props` - Use children for composition instead
56
+ of renderX props
57
+
58
+ ### 4. React 19 APIs (MEDIUM)
59
+
60
+ > **⚠️ React 19+ only.** Skip this section if using React 18 or earlier.
61
+
62
+ - `react19-no-forwardref` - Don't use `forwardRef`; use `use()` instead of `useContext()`
63
+
64
+ ## How to Use
65
+
66
+ Read individual rule files for detailed explanations and code examples:
67
+
68
+ ```
69
+ rules/architecture-avoid-boolean-props.md
70
+ rules/state-context-interface.md
71
+ ```
72
+
73
+ Each rule file contains:
74
+
75
+ - Brief explanation of why it matters
76
+ - Incorrect code example with explanation
77
+ - Correct code example with explanation
78
+ - Additional context and references
79
+
80
+ ## Full Compiled Document
81
+
82
+ For the complete guide with all rules expanded: `AGENTS.md`
83
+
84
+ ## Limitations
85
+ - Use this skill only when the task clearly matches the scope described above.
86
+ - Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
87
+ - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
@@ -0,0 +1,29 @@
1
+ # Sections
2
+
3
+ This file defines all sections, their ordering, impact levels, and descriptions.
4
+ The section ID (in parentheses) is the filename prefix used to group rules.
5
+
6
+ ---
7
+
8
+ ## 1. Component Architecture (architecture)
9
+
10
+ **Impact:** HIGH
11
+ **Description:** Fundamental patterns for structuring components to avoid prop
12
+ proliferation and enable flexible composition.
13
+
14
+ ## 2. State Management (state)
15
+
16
+ **Impact:** MEDIUM
17
+ **Description:** Patterns for lifting state and managing shared context across
18
+ composed components.
19
+
20
+ ## 3. Implementation Patterns (patterns)
21
+
22
+ **Impact:** MEDIUM
23
+ **Description:** Specific techniques for implementing compound components and
24
+ context providers.
25
+
26
+ ## 4. React 19 APIs (react19)
27
+
28
+ **Impact:** MEDIUM
29
+ **Description:** React 19+ only. Don't use `forwardRef`; use `use()` instead of `useContext()`.
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: Rule Title Here
3
+ impact: MEDIUM
4
+ impactDescription: brief description of impact
5
+ tags: composition, components
6
+ ---
7
+
8
+ ## Rule Title Here
9
+
10
+ Brief explanation of the rule and why it matters.
11
+
12
+ **Incorrect:**
13
+
14
+ ```tsx
15
+ // Bad code example
16
+ ```
17
+
18
+ **Correct:**
19
+
20
+ ```tsx
21
+ // Good code example
22
+ ```
23
+
24
+ Reference: [Link](https://example.com)
@@ -0,0 +1,100 @@
1
+ ---
2
+ title: Avoid Boolean Prop Proliferation
3
+ impact: CRITICAL
4
+ impactDescription: prevents unmaintainable component variants
5
+ tags: composition, props, architecture
6
+ ---
7
+
8
+ ## Avoid Boolean Prop Proliferation
9
+
10
+ Don't add boolean props like `isThread`, `isEditing`, `isDMThread` to customize
11
+ component behavior. Each boolean doubles possible states and creates
12
+ unmaintainable conditional logic. Use composition instead.
13
+
14
+ **Incorrect (boolean props create exponential complexity):**
15
+
16
+ ```tsx
17
+ function Composer({
18
+ onSubmit,
19
+ isThread,
20
+ channelId,
21
+ isDMThread,
22
+ dmId,
23
+ isEditing,
24
+ isForwarding,
25
+ }: Props) {
26
+ return (
27
+ <form>
28
+ <Header />
29
+ <Input />
30
+ {isDMThread ? (
31
+ <AlsoSendToDMField id={dmId} />
32
+ ) : isThread ? (
33
+ <AlsoSendToChannelField id={channelId} />
34
+ ) : null}
35
+ {isEditing ? (
36
+ <EditActions />
37
+ ) : isForwarding ? (
38
+ <ForwardActions />
39
+ ) : (
40
+ <DefaultActions />
41
+ )}
42
+ <Footer onSubmit={onSubmit} />
43
+ </form>
44
+ )
45
+ }
46
+ ```
47
+
48
+ **Correct (composition eliminates conditionals):**
49
+
50
+ ```tsx
51
+ // Channel composer
52
+ function ChannelComposer() {
53
+ return (
54
+ <Composer.Frame>
55
+ <Composer.Header />
56
+ <Composer.Input />
57
+ <Composer.Footer>
58
+ <Composer.Attachments />
59
+ <Composer.Formatting />
60
+ <Composer.Emojis />
61
+ <Composer.Submit />
62
+ </Composer.Footer>
63
+ </Composer.Frame>
64
+ )
65
+ }
66
+
67
+ // Thread composer - adds "also send to channel" field
68
+ function ThreadComposer({ channelId }: { channelId: string }) {
69
+ return (
70
+ <Composer.Frame>
71
+ <Composer.Header />
72
+ <Composer.Input />
73
+ <AlsoSendToChannelField id={channelId} />
74
+ <Composer.Footer>
75
+ <Composer.Formatting />
76
+ <Composer.Emojis />
77
+ <Composer.Submit />
78
+ </Composer.Footer>
79
+ </Composer.Frame>
80
+ )
81
+ }
82
+
83
+ // Edit composer - different footer actions
84
+ function EditComposer() {
85
+ return (
86
+ <Composer.Frame>
87
+ <Composer.Input />
88
+ <Composer.Footer>
89
+ <Composer.Formatting />
90
+ <Composer.Emojis />
91
+ <Composer.CancelEdit />
92
+ <Composer.SaveEdit />
93
+ </Composer.Footer>
94
+ </Composer.Frame>
95
+ )
96
+ }
97
+ ```
98
+
99
+ Each variant is explicit about what it renders. We can share internals without
100
+ sharing a single monolithic parent.