From 7a76c37ac4d3f031a512995166c0f0f160212827 Mon Sep 17 00:00:00 2001 From: NagyVikt Date: Tue, 30 Jun 2026 03:13:35 +0200 Subject: [PATCH] feat(vercel): vendor vercel-labs/agent-skills (9 skills) + mirror sync script Vendored read-only mirror of vercel-labs/agent-skills @ f8a72b9 (MIT). scripts/sync-vercel-skills.sh re-pulls upstream (zips stripped). See skills/vercel/UPSTREAM.md for attribution. --- scripts/sync-vercel-skills.sh | 31 + skills/vercel/UPSTREAM.md | 12 + skills/vercel/composition-patterns/AGENTS.md | 946 ++++ skills/vercel/composition-patterns/README.md | 60 + skills/vercel/composition-patterns/SKILL.md | 89 + .../vercel/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 + skills/vercel/deploy-to-vercel/SKILL.md | 296 ++ .../resources/deploy-codex.sh | 301 ++ .../deploy-to-vercel/resources/deploy.sh | 301 ++ skills/vercel/react-best-practices/AGENTS.md | 3810 +++++++++++++++++ skills/vercel/react-best-practices/README.md | 123 + skills/vercel/react-best-practices/SKILL.md | 149 + .../vercel/react-best-practices/metadata.json | 15 + .../react-best-practices/rules/_sections.md | 46 + .../react-best-practices/rules/_template.md | 28 + .../rules/advanced-effect-event-deps.md | 56 + .../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 + .../async-cheap-condition-before-await.md | 37 + .../rules/async-defer-await.md | 82 + .../rules/async-dependencies.md | 51 + .../rules/async-parallel.md | 28 + .../rules/async-suspense-boundaries.md | 99 + .../rules/bundle-analyzable-paths.md | 63 + .../rules/bundle-barrel-imports.md | 60 + .../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-request-idle-callback.md | 105 + .../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-split-combined-hooks.md | 64 + .../rules/rerender-transitions.md | 40 + .../rules/rerender-use-deferred-value.md | 59 + .../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 | 149 + .../rules/server-no-shared-module-state.md | 50 + .../rules/server-parallel-fetching.md | 83 + .../rules/server-parallel-nested-fetching.md | 34 + .../rules/server-serialization.md | 38 + skills/vercel/react-native-skills/AGENTS.md | 2897 +++++++++++++ skills/vercel/react-native-skills/README.md | 165 + skills/vercel/react-native-skills/SKILL.md | 121 + .../vercel/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 + .../vercel/react-view-transitions/AGENTS.md | 955 +++++ .../vercel/react-view-transitions/README.md | 42 + skills/vercel/react-view-transitions/SKILL.md | 320 ++ .../react-view-transitions/metadata.json | 12 + .../references/css-recipes.md | 242 ++ .../references/implementation.md | 182 + .../references/nextjs.md | 176 + .../references/patterns.md | 262 ++ skills/vercel/vercel-cli-with-tokens/SKILL.md | 353 ++ skills/vercel/vercel-optimize/AGENTS.md | 48 + skills/vercel/vercel-optimize/CONTRIBUTING.md | 41 + skills/vercel/vercel-optimize/README.md | 91 + skills/vercel/vercel-optimize/SKILL.md | 322 ++ .../vercel/vercel-optimize/lib/auth-route.mjs | 23 + .../vercel-optimize/lib/budget-summary.mjs | 182 + .../vercel/vercel-optimize/lib/citations.mjs | 139 + .../vercel-optimize/lib/cost-coverage.mjs | 143 + .../vercel/vercel-optimize/lib/dedup-recs.mjs | 325 ++ .../vercel/vercel-optimize/lib/deep-dive.mjs | 350 ++ .../vercel-optimize/lib/display-labels.mjs | 185 + .../vercel-optimize/lib/extract-claims.mjs | 550 +++ .../vercel-optimize/lib/framework-support.mjs | 67 + .../lib/gates/build-minutes-fanout.mjs | 69 + .../vercel-optimize/lib/gates/cold-start.mjs | 66 + .../vercel-optimize/lib/gates/contract.mjs | 79 + .../vercel-optimize/lib/gates/cwv-poor.mjs | 87 + .../lib/gates/external-api-slow.mjs | 55 + .../vercel-optimize/lib/gates/hard-gates.mjs | 73 + .../vercel-optimize/lib/gates/index.mjs | 45 + .../lib/gates/isr-overrevalidation.mjs | 62 + .../lib/gates/middleware-heavy.mjs | 51 + .../observability-events-attribution.mjs | 56 + .../lib/gates/platform-bot-protection.mjs | 115 + .../lib/gates/platform-fluid-compute.mjs | 83 + .../lib/gates/region-misconfig.mjs | 64 + .../lib/gates/route-errors.mjs | 80 + .../lib/gates/scanner-driven.mjs | 122 + .../lib/gates/select-candidates.mjs | 134 + .../vercel-optimize/lib/gates/slow-route.mjs | 88 + .../vercel-optimize/lib/gates/types.d.ts | 38 + .../lib/gates/uncached-route.mjs | 93 + .../lib/gates/usage-spike-triage.mjs | 121 + .../lib/grade-recommendation.mjs | 155 + .../vercel-optimize/lib/impact-label.mjs | 126 + .../vercel-optimize/lib/impact-magnitude.mjs | 60 + .../lib/investigation-brief.mjs | 610 +++ .../lib/observation-safety.mjs | 174 + .../vercel-optimize/lib/project-facts.mjs | 99 + skills/vercel/vercel-optimize/lib/queries.mjs | 315 ++ .../lib/reconcile-candidates.mjs | 372 ++ .../vercel-optimize/lib/render-report.mjs | 955 +++++ .../vercel/vercel-optimize/lib/repo-root.mjs | 86 + .../vercel-optimize/lib/route-normalize.mjs | 220 + .../sanitizers/bot-protection-certainty.mjs | 38 + .../cache-tag-invalidation-certainty.mjs | 30 + .../lib/sanitizers/count-correct.mjs | 52 + .../function-duration-invocations.mjs | 38 + .../vercel-optimize/lib/sanitizers/index.mjs | 79 + .../lib/sanitizers/middleware-conflict.mjs | 36 + .../lib/sanitizers/missing-citation.mjs | 16 + .../lib/sanitizers/pre-release.mjs | 74 + .../lib/sanitizers/rate-limit.mjs | 67 + .../sanitizers/rendering-mode-mislabel.mjs | 38 + .../lib/sanitizers/undeclared-dep.mjs | 78 + .../lib/sanitizers/vercel-directive-strip.mjs | 37 + .../lib/sanitizers/window-units.mjs | 32 + .../cache-components-suspense-dedupe.mjs | 109 + .../lib/scanners/edge-heavy-import.mjs | 94 + .../lib/scanners/force-dynamic.mjs | 42 + .../lib/scanners/headers-in-page.mjs | 44 + .../vercel-optimize/lib/scanners/index.mjs | 35 + .../lib/scanners/large-static-asset.mjs | 92 + .../lib/scanners/max-age-without-s-maxage.mjs | 42 + .../lib/scanners/middleware-broad-matcher.mjs | 55 + .../lib/scanners/missing-cache-headers.mjs | 90 + .../lib/scanners/prisma-include-tree.mjs | 42 + .../lib/scanners/region-pin-in-config.mjs | 88 + .../lib/scanners/source-maps-production.mjs | 36 + .../scanners/sveltekit-prerender-missing.mjs | 43 + .../lib/scanners/turbo-force-bypass.mjs | 129 + .../lib/scanners/unoptimized-image.mjs | 113 + .../lib/scanners/use-cache-date-stamp.mjs | 106 + .../vercel-optimize/lib/support-topics.mjs | 355 ++ .../vercel/vercel-optimize/lib/throttle.mjs | 273 ++ skills/vercel/vercel-optimize/lib/util.mjs | 17 + skills/vercel/vercel-optimize/lib/vercel.mjs | 864 ++++ .../vercel-optimize/lib/verify-claim.mjs | 1296 ++++++ .../lib/workspace-resolver.mjs | 521 +++ skills/vercel/vercel-optimize/metadata.json | 14 + .../vercel-optimize/references/candidates.md | 176 + .../references/data-collection.md | 218 + .../references/docs-library.json | 683 +++ .../vercel-optimize/references/doctrine.md | 105 + .../references/observability-plus.md | 108 + .../references/playbooks/README.md | 53 + .../references/playbooks/ai-application.md | 32 + .../references/playbooks/api-service.md | 30 + .../references/playbooks/content-site.md | 30 + .../references/playbooks/ecommerce.md | 30 + .../references/playbooks/marketing.md | 30 + .../references/playbooks/saas.md | 31 + .../references/playbooks/sveltekit.md | 75 + .../references/recommendations.md | 203 + .../references/scanner-patterns.md | 251 ++ .../vercel-optimize/references/scoring.md | 205 + .../references/support-topics/README.md | 46 + .../astro-edge-middleware-scope.md | 22 + .../astro-output-mode-and-isr.md | 22 + .../auth-preserving-parallelization.md | 22 + .../bot-protection-product-guardrails.md | 22 + .../build-minutes-monorepo-fanout.md | 23 + ...ache-components-static-shell-boundaries.md | 22 + ...ache-components-suspense-dedupe-pitfall.md | 23 + .../support-topics/cdn-cache-auth-safety.md | 22 + .../cold-start-initialization-bundle.md | 22 + .../core-web-vitals-client-bottlenecks.md | 22 + .../database-egress-pooling-region.md | 22 + .../support-topics/dynamic-rendering-traps.md | 22 + .../external-api-critical-path-platform.md | 22 + .../external-api-critical-path.md | 22 + .../fast-data-transfer-payloads.md | 22 + .../support-topics/fluid-compute-caveats.md | 22 + .../function-duration-io-and-after.md | 22 + .../function-invocation-reduction.md | 22 + .../function-region-misconfiguration-ttfb.md | 23 + .../image-optimization-cost-control.md | 22 + .../isr-revalidation-static-generation.md | 22 + .../middleware-proxy-edge-cost.md | 22 + .../next-fetch-revalidate-floor.md | 22 + .../next-font-cls-self-hosting.md | 23 + .../next-heavy-ui-lazy-load-boundaries.md | 23 + .../next-image-lcp-preload-sizes.md | 23 + .../next-route-handler-get-cache-defaults.md | 22 + .../next-script-third-party-strategy.md | 23 + .../nextjs-version-cache-semantics.md | 22 + .../not-found-catchall-request-waste.md | 23 + .../nuxt-route-rules-cache-isr.md | 22 + .../observability-events-cost-attribution.md | 22 + .../post-response-work-waituntil.md | 22 + .../route-error-durable-offload.md | 22 + .../route-error-runtime-limits.md | 22 + .../runtime-cache-reusable-data.md | 22 + .../sveltekit-isr-prerender-safety.md | 22 + .../sveltekit-split-cold-start-tradeoff.md | 22 + .../support-topics/usage-spike-triage.md | 22 + ...se-cache-date-stamp-isr-write-amplifier.md | 23 + .../use-cache-remote-shared-origin-data.md | 22 + .../workflow-resumable-stream-routes.md | 23 + .../references/verification.md | 102 + .../vercel-optimize/references/voice.md | 76 + .../scripts/budget-summary.mjs | 56 + .../vercel-optimize/scripts/build-docs.mjs | 74 + .../scripts/check-citations.mjs | 81 + .../scripts/check-docs-fresh.mjs | 93 + .../scripts/collect-signals.mjs | 576 +++ .../scripts/collect-sub-agent-outputs.mjs | 296 ++ .../vercel-optimize/scripts/deep-dive.mjs | 319 ++ .../scripts/gate-investigations.mjs | 166 + .../vercel-optimize/scripts/merge-signals.mjs | 192 + .../scripts/prepare-investigation-brief.mjs | 231 + .../scripts/reconcile-candidates.mjs | 62 + .../vercel-optimize/scripts/render-report.mjs | 437 ++ .../vercel-optimize/scripts/scan-codebase.mjs | 313 ++ .../scripts/verify-and-regen.mjs | 346 ++ .../scripts/verify-finding.mjs | 19 + skills/vercel/web-design-guidelines/SKILL.md | 39 + skills/vercel/writing-guidelines/SKILL.md | 39 + 304 files changed, 38802 insertions(+) create mode 100755 scripts/sync-vercel-skills.sh create mode 100644 skills/vercel/UPSTREAM.md create mode 100644 skills/vercel/composition-patterns/AGENTS.md create mode 100644 skills/vercel/composition-patterns/README.md create mode 100644 skills/vercel/composition-patterns/SKILL.md create mode 100644 skills/vercel/composition-patterns/metadata.json create mode 100644 skills/vercel/composition-patterns/rules/_sections.md create mode 100644 skills/vercel/composition-patterns/rules/_template.md create mode 100644 skills/vercel/composition-patterns/rules/architecture-avoid-boolean-props.md create mode 100644 skills/vercel/composition-patterns/rules/architecture-compound-components.md create mode 100644 skills/vercel/composition-patterns/rules/patterns-children-over-render-props.md create mode 100644 skills/vercel/composition-patterns/rules/patterns-explicit-variants.md create mode 100644 skills/vercel/composition-patterns/rules/react19-no-forwardref.md create mode 100644 skills/vercel/composition-patterns/rules/state-context-interface.md create mode 100644 skills/vercel/composition-patterns/rules/state-decouple-implementation.md create mode 100644 skills/vercel/composition-patterns/rules/state-lift-state.md create mode 100644 skills/vercel/deploy-to-vercel/SKILL.md create mode 100755 skills/vercel/deploy-to-vercel/resources/deploy-codex.sh create mode 100755 skills/vercel/deploy-to-vercel/resources/deploy.sh create mode 100644 skills/vercel/react-best-practices/AGENTS.md create mode 100644 skills/vercel/react-best-practices/README.md create mode 100644 skills/vercel/react-best-practices/SKILL.md create mode 100644 skills/vercel/react-best-practices/metadata.json create mode 100644 skills/vercel/react-best-practices/rules/_sections.md create mode 100644 skills/vercel/react-best-practices/rules/_template.md create mode 100644 skills/vercel/react-best-practices/rules/advanced-effect-event-deps.md create mode 100644 skills/vercel/react-best-practices/rules/advanced-event-handler-refs.md create mode 100644 skills/vercel/react-best-practices/rules/advanced-init-once.md create mode 100644 skills/vercel/react-best-practices/rules/advanced-use-latest.md create mode 100644 skills/vercel/react-best-practices/rules/async-api-routes.md create mode 100644 skills/vercel/react-best-practices/rules/async-cheap-condition-before-await.md create mode 100644 skills/vercel/react-best-practices/rules/async-defer-await.md create mode 100644 skills/vercel/react-best-practices/rules/async-dependencies.md create mode 100644 skills/vercel/react-best-practices/rules/async-parallel.md create mode 100644 skills/vercel/react-best-practices/rules/async-suspense-boundaries.md create mode 100644 skills/vercel/react-best-practices/rules/bundle-analyzable-paths.md create mode 100644 skills/vercel/react-best-practices/rules/bundle-barrel-imports.md create mode 100644 skills/vercel/react-best-practices/rules/bundle-conditional.md create mode 100644 skills/vercel/react-best-practices/rules/bundle-defer-third-party.md create mode 100644 skills/vercel/react-best-practices/rules/bundle-dynamic-imports.md create mode 100644 skills/vercel/react-best-practices/rules/bundle-preload.md create mode 100644 skills/vercel/react-best-practices/rules/client-event-listeners.md create mode 100644 skills/vercel/react-best-practices/rules/client-localstorage-schema.md create mode 100644 skills/vercel/react-best-practices/rules/client-passive-event-listeners.md create mode 100644 skills/vercel/react-best-practices/rules/client-swr-dedup.md create mode 100644 skills/vercel/react-best-practices/rules/js-batch-dom-css.md create mode 100644 skills/vercel/react-best-practices/rules/js-cache-function-results.md create mode 100644 skills/vercel/react-best-practices/rules/js-cache-property-access.md create mode 100644 skills/vercel/react-best-practices/rules/js-cache-storage.md create mode 100644 skills/vercel/react-best-practices/rules/js-combine-iterations.md create mode 100644 skills/vercel/react-best-practices/rules/js-early-exit.md create mode 100644 skills/vercel/react-best-practices/rules/js-flatmap-filter.md create mode 100644 skills/vercel/react-best-practices/rules/js-hoist-regexp.md create mode 100644 skills/vercel/react-best-practices/rules/js-index-maps.md create mode 100644 skills/vercel/react-best-practices/rules/js-length-check-first.md create mode 100644 skills/vercel/react-best-practices/rules/js-min-max-loop.md create mode 100644 skills/vercel/react-best-practices/rules/js-request-idle-callback.md create mode 100644 skills/vercel/react-best-practices/rules/js-set-map-lookups.md create mode 100644 skills/vercel/react-best-practices/rules/js-tosorted-immutable.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-activity.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-animate-svg-wrapper.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-conditional-render.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-content-visibility.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-hoist-jsx.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-hydration-no-flicker.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-hydration-suppress-warning.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-resource-hints.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-script-defer-async.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-svg-precision.md create mode 100644 skills/vercel/react-best-practices/rules/rendering-usetransition-loading.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-defer-reads.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-dependencies.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-derived-state-no-effect.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-derived-state.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-functional-setstate.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-lazy-state-init.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-memo-with-default-value.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-memo.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-move-effect-to-event.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-no-inline-components.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-simple-expression-in-memo.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-split-combined-hooks.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-transitions.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-use-deferred-value.md create mode 100644 skills/vercel/react-best-practices/rules/rerender-use-ref-transient-values.md create mode 100644 skills/vercel/react-best-practices/rules/server-after-nonblocking.md create mode 100644 skills/vercel/react-best-practices/rules/server-auth-actions.md create mode 100644 skills/vercel/react-best-practices/rules/server-cache-lru.md create mode 100644 skills/vercel/react-best-practices/rules/server-cache-react.md create mode 100644 skills/vercel/react-best-practices/rules/server-dedup-props.md create mode 100644 skills/vercel/react-best-practices/rules/server-hoist-static-io.md create mode 100644 skills/vercel/react-best-practices/rules/server-no-shared-module-state.md create mode 100644 skills/vercel/react-best-practices/rules/server-parallel-fetching.md create mode 100644 skills/vercel/react-best-practices/rules/server-parallel-nested-fetching.md create mode 100644 skills/vercel/react-best-practices/rules/server-serialization.md create mode 100644 skills/vercel/react-native-skills/AGENTS.md create mode 100644 skills/vercel/react-native-skills/README.md create mode 100644 skills/vercel/react-native-skills/SKILL.md create mode 100644 skills/vercel/react-native-skills/metadata.json create mode 100644 skills/vercel/react-native-skills/rules/_sections.md create mode 100644 skills/vercel/react-native-skills/rules/_template.md create mode 100644 skills/vercel/react-native-skills/rules/animation-derived-value.md create mode 100644 skills/vercel/react-native-skills/rules/animation-gesture-detector-press.md create mode 100644 skills/vercel/react-native-skills/rules/animation-gpu-properties.md create mode 100644 skills/vercel/react-native-skills/rules/design-system-compound-components.md create mode 100644 skills/vercel/react-native-skills/rules/fonts-config-plugin.md create mode 100644 skills/vercel/react-native-skills/rules/imports-design-system-folder.md create mode 100644 skills/vercel/react-native-skills/rules/js-hoist-intl.md create mode 100644 skills/vercel/react-native-skills/rules/list-performance-callbacks.md create mode 100644 skills/vercel/react-native-skills/rules/list-performance-function-references.md create mode 100644 skills/vercel/react-native-skills/rules/list-performance-images.md create mode 100644 skills/vercel/react-native-skills/rules/list-performance-inline-objects.md create mode 100644 skills/vercel/react-native-skills/rules/list-performance-item-expensive.md create mode 100644 skills/vercel/react-native-skills/rules/list-performance-item-memo.md create mode 100644 skills/vercel/react-native-skills/rules/list-performance-item-types.md create mode 100644 skills/vercel/react-native-skills/rules/list-performance-virtualize.md create mode 100644 skills/vercel/react-native-skills/rules/monorepo-native-deps-in-app.md create mode 100644 skills/vercel/react-native-skills/rules/monorepo-single-dependency-versions.md create mode 100644 skills/vercel/react-native-skills/rules/navigation-native-navigators.md create mode 100644 skills/vercel/react-native-skills/rules/react-compiler-destructure-functions.md create mode 100644 skills/vercel/react-native-skills/rules/react-compiler-reanimated-shared-values.md create mode 100644 skills/vercel/react-native-skills/rules/react-state-dispatcher.md create mode 100644 skills/vercel/react-native-skills/rules/react-state-fallback.md create mode 100644 skills/vercel/react-native-skills/rules/react-state-minimize.md create mode 100644 skills/vercel/react-native-skills/rules/rendering-no-falsy-and.md create mode 100644 skills/vercel/react-native-skills/rules/rendering-text-in-text-component.md create mode 100644 skills/vercel/react-native-skills/rules/scroll-position-no-state.md create mode 100644 skills/vercel/react-native-skills/rules/state-ground-truth.md create mode 100644 skills/vercel/react-native-skills/rules/ui-expo-image.md create mode 100644 skills/vercel/react-native-skills/rules/ui-image-gallery.md create mode 100644 skills/vercel/react-native-skills/rules/ui-measure-views.md create mode 100644 skills/vercel/react-native-skills/rules/ui-menus.md create mode 100644 skills/vercel/react-native-skills/rules/ui-native-modals.md create mode 100644 skills/vercel/react-native-skills/rules/ui-pressable.md create mode 100644 skills/vercel/react-native-skills/rules/ui-safe-area-scroll.md create mode 100644 skills/vercel/react-native-skills/rules/ui-scrollview-content-inset.md create mode 100644 skills/vercel/react-native-skills/rules/ui-styling.md create mode 100644 skills/vercel/react-view-transitions/AGENTS.md create mode 100644 skills/vercel/react-view-transitions/README.md create mode 100644 skills/vercel/react-view-transitions/SKILL.md create mode 100644 skills/vercel/react-view-transitions/metadata.json create mode 100644 skills/vercel/react-view-transitions/references/css-recipes.md create mode 100644 skills/vercel/react-view-transitions/references/implementation.md create mode 100644 skills/vercel/react-view-transitions/references/nextjs.md create mode 100644 skills/vercel/react-view-transitions/references/patterns.md create mode 100644 skills/vercel/vercel-cli-with-tokens/SKILL.md create mode 100644 skills/vercel/vercel-optimize/AGENTS.md create mode 100644 skills/vercel/vercel-optimize/CONTRIBUTING.md create mode 100644 skills/vercel/vercel-optimize/README.md create mode 100644 skills/vercel/vercel-optimize/SKILL.md create mode 100644 skills/vercel/vercel-optimize/lib/auth-route.mjs create mode 100644 skills/vercel/vercel-optimize/lib/budget-summary.mjs create mode 100644 skills/vercel/vercel-optimize/lib/citations.mjs create mode 100644 skills/vercel/vercel-optimize/lib/cost-coverage.mjs create mode 100644 skills/vercel/vercel-optimize/lib/dedup-recs.mjs create mode 100644 skills/vercel/vercel-optimize/lib/deep-dive.mjs create mode 100644 skills/vercel/vercel-optimize/lib/display-labels.mjs create mode 100644 skills/vercel/vercel-optimize/lib/extract-claims.mjs create mode 100644 skills/vercel/vercel-optimize/lib/framework-support.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/build-minutes-fanout.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/cold-start.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/contract.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/cwv-poor.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/external-api-slow.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/hard-gates.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/index.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/isr-overrevalidation.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/middleware-heavy.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/observability-events-attribution.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/platform-bot-protection.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/platform-fluid-compute.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/region-misconfig.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/route-errors.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/scanner-driven.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/select-candidates.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/slow-route.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/types.d.ts create mode 100644 skills/vercel/vercel-optimize/lib/gates/uncached-route.mjs create mode 100644 skills/vercel/vercel-optimize/lib/gates/usage-spike-triage.mjs create mode 100644 skills/vercel/vercel-optimize/lib/grade-recommendation.mjs create mode 100644 skills/vercel/vercel-optimize/lib/impact-label.mjs create mode 100644 skills/vercel/vercel-optimize/lib/impact-magnitude.mjs create mode 100644 skills/vercel/vercel-optimize/lib/investigation-brief.mjs create mode 100644 skills/vercel/vercel-optimize/lib/observation-safety.mjs create mode 100644 skills/vercel/vercel-optimize/lib/project-facts.mjs create mode 100644 skills/vercel/vercel-optimize/lib/queries.mjs create mode 100644 skills/vercel/vercel-optimize/lib/reconcile-candidates.mjs create mode 100644 skills/vercel/vercel-optimize/lib/render-report.mjs create mode 100644 skills/vercel/vercel-optimize/lib/repo-root.mjs create mode 100644 skills/vercel/vercel-optimize/lib/route-normalize.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/bot-protection-certainty.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/cache-tag-invalidation-certainty.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/count-correct.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/function-duration-invocations.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/index.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/middleware-conflict.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/missing-citation.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/pre-release.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/rate-limit.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/rendering-mode-mislabel.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/undeclared-dep.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/vercel-directive-strip.mjs create mode 100644 skills/vercel/vercel-optimize/lib/sanitizers/window-units.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/cache-components-suspense-dedupe.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/edge-heavy-import.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/force-dynamic.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/headers-in-page.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/index.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/large-static-asset.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/max-age-without-s-maxage.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/middleware-broad-matcher.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/missing-cache-headers.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/prisma-include-tree.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/region-pin-in-config.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/source-maps-production.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/sveltekit-prerender-missing.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/turbo-force-bypass.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/unoptimized-image.mjs create mode 100644 skills/vercel/vercel-optimize/lib/scanners/use-cache-date-stamp.mjs create mode 100644 skills/vercel/vercel-optimize/lib/support-topics.mjs create mode 100644 skills/vercel/vercel-optimize/lib/throttle.mjs create mode 100644 skills/vercel/vercel-optimize/lib/util.mjs create mode 100644 skills/vercel/vercel-optimize/lib/vercel.mjs create mode 100644 skills/vercel/vercel-optimize/lib/verify-claim.mjs create mode 100644 skills/vercel/vercel-optimize/lib/workspace-resolver.mjs create mode 100644 skills/vercel/vercel-optimize/metadata.json create mode 100644 skills/vercel/vercel-optimize/references/candidates.md create mode 100644 skills/vercel/vercel-optimize/references/data-collection.md create mode 100644 skills/vercel/vercel-optimize/references/docs-library.json create mode 100644 skills/vercel/vercel-optimize/references/doctrine.md create mode 100644 skills/vercel/vercel-optimize/references/observability-plus.md create mode 100644 skills/vercel/vercel-optimize/references/playbooks/README.md create mode 100644 skills/vercel/vercel-optimize/references/playbooks/ai-application.md create mode 100644 skills/vercel/vercel-optimize/references/playbooks/api-service.md create mode 100644 skills/vercel/vercel-optimize/references/playbooks/content-site.md create mode 100644 skills/vercel/vercel-optimize/references/playbooks/ecommerce.md create mode 100644 skills/vercel/vercel-optimize/references/playbooks/marketing.md create mode 100644 skills/vercel/vercel-optimize/references/playbooks/saas.md create mode 100644 skills/vercel/vercel-optimize/references/playbooks/sveltekit.md create mode 100644 skills/vercel/vercel-optimize/references/recommendations.md create mode 100644 skills/vercel/vercel-optimize/references/scanner-patterns.md create mode 100644 skills/vercel/vercel-optimize/references/scoring.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/README.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/astro-edge-middleware-scope.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/astro-output-mode-and-isr.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/auth-preserving-parallelization.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/bot-protection-product-guardrails.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/build-minutes-monorepo-fanout.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/cache-components-static-shell-boundaries.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/cache-components-suspense-dedupe-pitfall.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/cdn-cache-auth-safety.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/cold-start-initialization-bundle.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/core-web-vitals-client-bottlenecks.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/database-egress-pooling-region.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/dynamic-rendering-traps.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/external-api-critical-path-platform.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/external-api-critical-path.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/fast-data-transfer-payloads.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/fluid-compute-caveats.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/function-duration-io-and-after.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/function-invocation-reduction.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/function-region-misconfiguration-ttfb.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/image-optimization-cost-control.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/isr-revalidation-static-generation.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/middleware-proxy-edge-cost.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/next-fetch-revalidate-floor.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/next-font-cls-self-hosting.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/next-heavy-ui-lazy-load-boundaries.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/next-image-lcp-preload-sizes.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/next-route-handler-get-cache-defaults.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/next-script-third-party-strategy.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/nextjs-version-cache-semantics.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/not-found-catchall-request-waste.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/nuxt-route-rules-cache-isr.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/observability-events-cost-attribution.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/post-response-work-waituntil.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/route-error-durable-offload.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/route-error-runtime-limits.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/runtime-cache-reusable-data.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/sveltekit-isr-prerender-safety.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/sveltekit-split-cold-start-tradeoff.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/usage-spike-triage.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/use-cache-date-stamp-isr-write-amplifier.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/use-cache-remote-shared-origin-data.md create mode 100644 skills/vercel/vercel-optimize/references/support-topics/workflow-resumable-stream-routes.md create mode 100644 skills/vercel/vercel-optimize/references/verification.md create mode 100644 skills/vercel/vercel-optimize/references/voice.md create mode 100644 skills/vercel/vercel-optimize/scripts/budget-summary.mjs create mode 100755 skills/vercel/vercel-optimize/scripts/build-docs.mjs create mode 100644 skills/vercel/vercel-optimize/scripts/check-citations.mjs create mode 100755 skills/vercel/vercel-optimize/scripts/check-docs-fresh.mjs create mode 100755 skills/vercel/vercel-optimize/scripts/collect-signals.mjs create mode 100644 skills/vercel/vercel-optimize/scripts/collect-sub-agent-outputs.mjs create mode 100755 skills/vercel/vercel-optimize/scripts/deep-dive.mjs create mode 100755 skills/vercel/vercel-optimize/scripts/gate-investigations.mjs create mode 100644 skills/vercel/vercel-optimize/scripts/merge-signals.mjs create mode 100644 skills/vercel/vercel-optimize/scripts/prepare-investigation-brief.mjs create mode 100644 skills/vercel/vercel-optimize/scripts/reconcile-candidates.mjs create mode 100644 skills/vercel/vercel-optimize/scripts/render-report.mjs create mode 100755 skills/vercel/vercel-optimize/scripts/scan-codebase.mjs create mode 100644 skills/vercel/vercel-optimize/scripts/verify-and-regen.mjs create mode 100755 skills/vercel/vercel-optimize/scripts/verify-finding.mjs create mode 100644 skills/vercel/web-design-guidelines/SKILL.md create mode 100644 skills/vercel/writing-guidelines/SKILL.md diff --git a/scripts/sync-vercel-skills.sh b/scripts/sync-vercel-skills.sh new file mode 100755 index 0000000..611d9bd --- /dev/null +++ b/scripts/sync-vercel-skills.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# Sync vercel-labs/agent-skills into skills/vercel/ (vendored read-only mirror). +# Re-run anytime to pull upstream updates. Build .zip artifacts are excluded. +# +# bash scripts/sync-vercel-skills.sh +# +set -euo pipefail +UPSTREAM="${VERCEL_SKILLS_UPSTREAM:-https://github.com/vercel-labs/agent-skills.git}" +PREFIX="skills/vercel" +REPO_ROOT="$(git rev-parse --show-toplevel)" +WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT + +git clone --quiet --depth=1 "$UPSTREAM" "$WORK/up" +SHA="$(git -C "$WORK/up" rev-parse HEAD)" +dest="$REPO_ROOT/$PREFIX"; mkdir -p "$dest" + +# Replace vendored skill dirs (preserve UPSTREAM.md), excluding build artifacts +find "$dest" -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} + +for d in "$WORK/up/skills"/*/; do + rsync -a --exclude='*.zip' "$d" "$dest/$(basename "$d")/" +done +sed -i -E "s|^- Upstream commit:.*|- Upstream commit: $SHA|" "$dest/UPSTREAM.md" 2>/dev/null || true + +cd "$REPO_ROOT" +git add "$PREFIX" +if git diff --cached --quiet; then + echo "Already up to date with $SHA" +else + git commit -q -m "chore(vercel): sync agent-skills to ${SHA:0:7}" + echo "OK: $PREFIX synced to $SHA" +fi diff --git a/skills/vercel/UPSTREAM.md b/skills/vercel/UPSTREAM.md new file mode 100644 index 0000000..a10f2af --- /dev/null +++ b/skills/vercel/UPSTREAM.md @@ -0,0 +1,12 @@ +# Vendored from vercel-labs/agent-skills + +Read-only mirror of https://github.com/vercel-labs/agent-skills + +- Upstream commit: f8a72b9603728bb92a217a879b7e62e43ad76c81 +- Vendored: 2026-06-30 via `git subtree` (prefix skills/vercel) +- License: MIT (declared in upstream README; upstream ships no LICENSE file) +- Update: run `bash scripts/sync-vercel-skills.sh` from the skills repo root. + It re-pulls upstream and strips build `.zip` artifacts automatically. + +Do not hand-edit these skills — local changes are overwritten on the next sync. +Contribute fixes upstream at vercel-labs/agent-skills. diff --git a/skills/vercel/composition-patterns/AGENTS.md b/skills/vercel/composition-patterns/AGENTS.md new file mode 100644 index 0000000..558bf9a --- /dev/null +++ b/skills/vercel/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 ? ( + + ) : ( + + )} +