From e3e07c9063c09f2688fcd17194c5dec53d37b704 Mon Sep 17 00:00:00 2001 From: Ashwin Mathews Date: Fri, 13 Mar 2026 23:47:07 -0700 Subject: [PATCH 1/2] init vercel skills --- .../skills/composition-patterns/AGENTS.md | 946 +++++ .../skills/composition-patterns/README.md | 60 + .../skills/composition-patterns/SKILL.md | 89 + .../skills/composition-patterns/metadata.json | 11 + .../composition-patterns/rules/_sections.md | 29 + .../composition-patterns/rules/_template.md | 24 + .../rules/architecture-avoid-boolean-props.md | 100 + .../rules/architecture-compound-components.md | 112 + .../patterns-children-over-render-props.md | 87 + .../rules/patterns-explicit-variants.md | 100 + .../rules/react19-no-forwardref.md | 42 + .../rules/state-context-interface.md | 191 + .../rules/state-decouple-implementation.md | 113 + .../rules/state-lift-state.md | 125 + .../vercel/skills/deploy-to-vercel/SKILL.md | 296 ++ .../resources/deploy-codex.sh | 301 ++ .../deploy-to-vercel/resources/deploy.sh | 301 ++ .../skills/react-best-practices/AGENTS.md | 3254 +++++++++++++++++ .../skills/react-best-practices/README.md | 123 + .../skills/react-best-practices/SKILL.md | 141 + .../skills/react-best-practices/metadata.json | 15 + .../react-best-practices/rules/_sections.md | 46 + .../react-best-practices/rules/_template.md | 28 + .../rules/advanced-event-handler-refs.md | 55 + .../rules/advanced-init-once.md | 42 + .../rules/advanced-use-latest.md | 39 + .../rules/async-api-routes.md | 38 + .../rules/async-defer-await.md | 80 + .../rules/async-dependencies.md | 51 + .../rules/async-parallel.md | 28 + .../rules/async-suspense-boundaries.md | 99 + .../rules/bundle-barrel-imports.md | 59 + .../rules/bundle-conditional.md | 31 + .../rules/bundle-defer-third-party.md | 49 + .../rules/bundle-dynamic-imports.md | 35 + .../rules/bundle-preload.md | 50 + .../rules/client-event-listeners.md | 74 + .../rules/client-localstorage-schema.md | 71 + .../rules/client-passive-event-listeners.md | 48 + .../rules/client-swr-dedup.md | 56 + .../rules/js-batch-dom-css.md | 107 + .../rules/js-cache-function-results.md | 80 + .../rules/js-cache-property-access.md | 28 + .../rules/js-cache-storage.md | 70 + .../rules/js-combine-iterations.md | 32 + .../rules/js-early-exit.md | 50 + .../rules/js-flatmap-filter.md | 60 + .../rules/js-hoist-regexp.md | 45 + .../rules/js-index-maps.md | 37 + .../rules/js-length-check-first.md | 49 + .../rules/js-min-max-loop.md | 82 + .../rules/js-set-map-lookups.md | 24 + .../rules/js-tosorted-immutable.md | 57 + .../rules/rendering-activity.md | 26 + .../rules/rendering-animate-svg-wrapper.md | 47 + .../rules/rendering-conditional-render.md | 40 + .../rules/rendering-content-visibility.md | 38 + .../rules/rendering-hoist-jsx.md | 46 + .../rules/rendering-hydration-no-flicker.md | 82 + .../rendering-hydration-suppress-warning.md | 30 + .../rules/rendering-resource-hints.md | 85 + .../rules/rendering-script-defer-async.md | 68 + .../rules/rendering-svg-precision.md | 28 + .../rules/rendering-usetransition-loading.md | 75 + .../rules/rerender-defer-reads.md | 39 + .../rules/rerender-dependencies.md | 45 + .../rules/rerender-derived-state-no-effect.md | 40 + .../rules/rerender-derived-state.md | 29 + .../rules/rerender-functional-setstate.md | 74 + .../rules/rerender-lazy-state-init.md | 58 + .../rules/rerender-memo-with-default-value.md | 38 + .../rules/rerender-memo.md | 44 + .../rules/rerender-move-effect-to-event.md | 45 + .../rules/rerender-no-inline-components.md | 82 + .../rerender-simple-expression-in-memo.md | 35 + .../rules/rerender-transitions.md | 40 + .../rerender-use-ref-transient-values.md | 73 + .../rules/server-after-nonblocking.md | 73 + .../rules/server-auth-actions.md | 96 + .../rules/server-cache-lru.md | 41 + .../rules/server-cache-react.md | 76 + .../rules/server-dedup-props.md | 65 + .../rules/server-hoist-static-io.md | 142 + .../rules/server-parallel-fetching.md | 83 + .../rules/server-serialization.md | 38 + .../skills/react-native-skills/AGENTS.md | 2897 +++++++++++++++ .../skills/react-native-skills/README.md | 165 + .../skills/react-native-skills/SKILL.md | 121 + .../skills/react-native-skills/metadata.json | 16 + .../react-native-skills/rules/_sections.md | 86 + .../react-native-skills/rules/_template.md | 28 + .../rules/animation-derived-value.md | 53 + .../rules/animation-gesture-detector-press.md | 95 + .../rules/animation-gpu-properties.md | 65 + .../design-system-compound-components.md | 66 + .../rules/fonts-config-plugin.md | 71 + .../rules/imports-design-system-folder.md | 68 + .../rules/js-hoist-intl.md | 61 + .../rules/list-performance-callbacks.md | 44 + .../list-performance-function-references.md | 132 + .../rules/list-performance-images.md | 53 + .../rules/list-performance-inline-objects.md | 97 + .../rules/list-performance-item-expensive.md | 94 + .../rules/list-performance-item-memo.md | 82 + .../rules/list-performance-item-types.md | 104 + .../rules/list-performance-virtualize.md | 67 + .../rules/monorepo-native-deps-in-app.md | 46 + .../monorepo-single-dependency-versions.md | 63 + .../rules/navigation-native-navigators.md | 188 + .../react-compiler-destructure-functions.md | 50 + ...react-compiler-reanimated-shared-values.md | 48 + .../rules/react-state-dispatcher.md | 91 + .../rules/react-state-fallback.md | 56 + .../rules/react-state-minimize.md | 65 + .../rules/rendering-no-falsy-and.md | 74 + .../rules/rendering-text-in-text-component.md | 36 + .../rules/scroll-position-no-state.md | 82 + .../rules/state-ground-truth.md | 80 + .../rules/ui-expo-image.md | 66 + .../rules/ui-image-gallery.md | 104 + .../rules/ui-measure-views.md | 78 + .../react-native-skills/rules/ui-menus.md | 174 + .../rules/ui-native-modals.md | 77 + .../react-native-skills/rules/ui-pressable.md | 61 + .../rules/ui-safe-area-scroll.md | 65 + .../rules/ui-scrollview-content-inset.md | 45 + .../react-native-skills/rules/ui-styling.md | 87 + .../skills/web-design-guidelines/SKILL.md | 39 + 128 files changed, 16121 insertions(+) create mode 100644 plugins/vercel/skills/composition-patterns/AGENTS.md create mode 100644 plugins/vercel/skills/composition-patterns/README.md create mode 100644 plugins/vercel/skills/composition-patterns/SKILL.md create mode 100644 plugins/vercel/skills/composition-patterns/metadata.json create mode 100644 plugins/vercel/skills/composition-patterns/rules/_sections.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/_template.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/architecture-avoid-boolean-props.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/architecture-compound-components.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/patterns-children-over-render-props.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/patterns-explicit-variants.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/react19-no-forwardref.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/state-context-interface.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/state-decouple-implementation.md create mode 100644 plugins/vercel/skills/composition-patterns/rules/state-lift-state.md create mode 100644 plugins/vercel/skills/deploy-to-vercel/SKILL.md create mode 100755 plugins/vercel/skills/deploy-to-vercel/resources/deploy-codex.sh create mode 100755 plugins/vercel/skills/deploy-to-vercel/resources/deploy.sh create mode 100644 plugins/vercel/skills/react-best-practices/AGENTS.md create mode 100644 plugins/vercel/skills/react-best-practices/README.md create mode 100644 plugins/vercel/skills/react-best-practices/SKILL.md create mode 100644 plugins/vercel/skills/react-best-practices/metadata.json create mode 100644 plugins/vercel/skills/react-best-practices/rules/_sections.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/_template.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/advanced-event-handler-refs.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/advanced-init-once.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/advanced-use-latest.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/async-api-routes.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/async-defer-await.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/async-dependencies.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/async-parallel.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/async-suspense-boundaries.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/bundle-barrel-imports.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/bundle-conditional.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/bundle-defer-third-party.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/bundle-dynamic-imports.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/bundle-preload.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/client-event-listeners.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/client-localstorage-schema.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/client-passive-event-listeners.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/client-swr-dedup.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-batch-dom-css.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-cache-function-results.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-cache-property-access.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-cache-storage.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-combine-iterations.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-early-exit.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-flatmap-filter.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-hoist-regexp.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-index-maps.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-length-check-first.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-min-max-loop.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-set-map-lookups.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/js-tosorted-immutable.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-activity.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-conditional-render.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-content-visibility.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-hoist-jsx.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-hydration-no-flicker.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-resource-hints.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-script-defer-async.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-svg-precision.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rendering-usetransition-loading.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-defer-reads.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-dependencies.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-derived-state-no-effect.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-derived-state.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-functional-setstate.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-lazy-state-init.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-memo-with-default-value.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-memo.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-move-effect-to-event.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-no-inline-components.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-transitions.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/rerender-use-ref-transient-values.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/server-after-nonblocking.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/server-auth-actions.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/server-cache-lru.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/server-cache-react.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/server-dedup-props.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/server-hoist-static-io.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/server-parallel-fetching.md create mode 100644 plugins/vercel/skills/react-best-practices/rules/server-serialization.md create mode 100644 plugins/vercel/skills/react-native-skills/AGENTS.md create mode 100644 plugins/vercel/skills/react-native-skills/README.md create mode 100644 plugins/vercel/skills/react-native-skills/SKILL.md create mode 100644 plugins/vercel/skills/react-native-skills/metadata.json create mode 100644 plugins/vercel/skills/react-native-skills/rules/_sections.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/_template.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/animation-derived-value.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/animation-gesture-detector-press.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/animation-gpu-properties.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/design-system-compound-components.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/fonts-config-plugin.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/imports-design-system-folder.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/js-hoist-intl.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/list-performance-callbacks.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/list-performance-function-references.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/list-performance-images.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/list-performance-inline-objects.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/list-performance-item-expensive.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/list-performance-item-memo.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/list-performance-item-types.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/list-performance-virtualize.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/monorepo-native-deps-in-app.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/monorepo-single-dependency-versions.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/navigation-native-navigators.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/react-compiler-destructure-functions.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/react-state-dispatcher.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/react-state-fallback.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/react-state-minimize.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/rendering-no-falsy-and.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/rendering-text-in-text-component.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/scroll-position-no-state.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/state-ground-truth.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-expo-image.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-image-gallery.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-measure-views.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-menus.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-native-modals.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-pressable.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-safe-area-scroll.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-scrollview-content-inset.md create mode 100644 plugins/vercel/skills/react-native-skills/rules/ui-styling.md create mode 100644 plugins/vercel/skills/web-design-guidelines/SKILL.md diff --git a/plugins/vercel/skills/composition-patterns/AGENTS.md b/plugins/vercel/skills/composition-patterns/AGENTS.md new file mode 100644 index 00000000..558bf9aa --- /dev/null +++ b/plugins/vercel/skills/composition-patterns/AGENTS.md @@ -0,0 +1,946 @@ +# React Composition Patterns + +**Version 1.0.0** +Engineering +January 2026 + +> **Note:** +> This document is mainly for agents and LLMs to follow when maintaining, +> generating, or refactoring React codebases using composition. Humans +> may also find it useful, but guidance here is optimized for automation +> and consistency by AI-assisted workflows. + +--- + +## Abstract + +Composition patterns for building flexible, maintainable React components. Avoid boolean prop proliferation by using compound components, lifting state, and composing internals. These patterns make codebases easier for both humans and AI agents to work with as they scale. + +--- + +## Table of Contents + +1. [Component Architecture](#1-component-architecture) — **HIGH** + - 1.1 [Avoid Boolean Prop Proliferation](#11-avoid-boolean-prop-proliferation) + - 1.2 [Use Compound Components](#12-use-compound-components) +2. [State Management](#2-state-management) — **MEDIUM** + - 2.1 [Decouple State Management from UI](#21-decouple-state-management-from-ui) + - 2.2 [Define Generic Context Interfaces for Dependency Injection](#22-define-generic-context-interfaces-for-dependency-injection) + - 2.3 [Lift State into Provider Components](#23-lift-state-into-provider-components) +3. [Implementation Patterns](#3-implementation-patterns) — **MEDIUM** + - 3.1 [Create Explicit Component Variants](#31-create-explicit-component-variants) + - 3.2 [Prefer Composing Children Over Render Props](#32-prefer-composing-children-over-render-props) +4. [React 19 APIs](#4-react-19-apis) — **MEDIUM** + - 4.1 [React 19 API Changes](#41-react-19-api-changes) + +--- + +## 1. Component Architecture + +**Impact: HIGH** + +Fundamental patterns for structuring components to avoid prop +proliferation and enable flexible composition. + +### 1.1 Avoid Boolean Prop Proliferation + +**Impact: CRITICAL (prevents unmaintainable component variants)** + +Don't add boolean props like `isThread`, `isEditing`, `isDMThread` to customize + +component behavior. Each boolean doubles possible states and creates + +unmaintainable conditional logic. Use composition instead. + +**Incorrect: boolean props create exponential complexity** + +```tsx +function Composer({ + onSubmit, + isThread, + channelId, + isDMThread, + dmId, + isEditing, + isForwarding, +}: Props) { + return ( +
+
+ + {isDMThread ? ( + + ) : isThread ? ( + + ) : null} + {isEditing ? ( + + ) : isForwarding ? ( + + ) : ( + + )} +