cfsa-antigravity 1.0.0

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 (378) hide show
  1. package/bin/cli.mjs +324 -0
  2. package/package.json +34 -0
  3. package/template/.agent/instructions/commands.md +48 -0
  4. package/template/.agent/instructions/patterns.md +61 -0
  5. package/template/.agent/instructions/structure.md +29 -0
  6. package/template/.agent/instructions/tech-stack.md +43 -0
  7. package/template/.agent/instructions/workflow.md +41 -0
  8. package/template/.agent/kit-sync.md +15 -0
  9. package/template/.agent/rules/boundary-not-placeholder.md +146 -0
  10. package/template/.agent/rules/completion-checklist.md +48 -0
  11. package/template/.agent/rules/decision-classification.md +103 -0
  12. package/template/.agent/rules/extensibility.md +47 -0
  13. package/template/.agent/rules/question-vs-command.md +81 -0
  14. package/template/.agent/rules/security-first.md +43 -0
  15. package/template/.agent/rules/specificity-standards.md +54 -0
  16. package/template/.agent/rules/tdd-contract-first.md +57 -0
  17. package/template/.agent/rules/vertical-slices.md +42 -0
  18. package/template/.agent/skill-library/MANIFEST.md +480 -0
  19. package/template/.agent/skill-library/README.md +38 -0
  20. package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
  21. package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
  22. package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
  23. package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
  24. package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
  25. package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
  26. package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
  27. package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
  28. package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
  29. package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
  30. package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
  31. package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
  32. package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
  33. package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
  34. package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
  35. package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
  36. package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
  37. package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
  38. package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
  39. package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
  40. package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
  41. package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
  42. package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
  43. package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
  44. package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
  45. package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
  46. package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
  47. package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
  48. package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
  49. package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
  50. package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
  51. package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
  52. package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
  53. package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
  54. package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
  55. package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
  56. package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
  57. package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
  58. package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
  59. package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
  60. package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
  61. package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
  62. package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
  63. package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
  64. package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
  65. package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
  66. package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
  67. package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
  68. package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
  69. package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
  70. package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
  71. package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
  72. package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
  73. package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
  74. package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
  75. package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
  76. package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
  77. package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
  78. package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
  79. package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
  80. package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
  81. package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
  82. package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
  83. package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
  84. package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
  85. package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
  86. package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
  87. package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
  88. package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
  89. package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
  90. package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
  91. package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
  92. package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
  93. package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
  94. package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
  95. package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
  96. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
  97. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
  98. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
  99. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
  100. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
  101. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
  102. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
  103. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
  104. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
  105. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
  106. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
  107. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
  108. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
  109. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
  110. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
  111. package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
  112. package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
  113. package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
  114. package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
  115. package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
  116. package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
  117. package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
  118. package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
  119. package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
  120. package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
  121. package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
  122. package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
  123. package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
  124. package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
  125. package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
  126. package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
  127. package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
  128. package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
  129. package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
  130. package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
  131. package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
  132. package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
  133. package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
  134. package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
  135. package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
  136. package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
  137. package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
  138. package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
  139. package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
  140. package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
  141. package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
  142. package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
  143. package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
  144. package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
  145. package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
  146. package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
  147. package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
  148. package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
  149. package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
  150. package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
  151. package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
  152. package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
  153. package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
  154. package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
  155. package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
  156. package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
  157. package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
  158. package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
  159. package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
  160. package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
  161. package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
  162. package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
  163. package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
  164. package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
  165. package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
  166. package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
  167. package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
  168. package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
  169. package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
  170. package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
  171. package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
  172. package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
  173. package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
  174. package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
  175. package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
  176. package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
  177. package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
  178. package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
  179. package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
  180. package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
  181. package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
  182. package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
  183. package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
  184. package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
  185. package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
  186. package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
  187. package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
  188. package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
  189. package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
  190. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
  191. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
  192. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
  193. package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
  194. package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
  195. package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
  196. package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
  197. package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
  198. package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
  199. package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
  200. package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
  201. package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
  202. package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
  203. package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
  204. package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
  205. package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
  206. package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
  207. package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
  208. package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
  209. package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
  210. package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
  211. package/template/.agent/skills/accessibility/SKILL.md +522 -0
  212. package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
  213. package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
  214. package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
  215. package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  216. package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
  217. package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  218. package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  219. package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  220. package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  221. package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  222. package/template/.agent/skills/api-versioning/SKILL.md +420 -0
  223. package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
  224. package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
  225. package/template/.agent/skills/brainstorming/SKILL.md +236 -0
  226. package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
  227. package/template/.agent/skills/clean-code/SKILL.md +94 -0
  228. package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
  229. package/template/.agent/skills/concise-planning/SKILL.md +68 -0
  230. package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
  231. package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
  232. package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
  233. package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
  234. package/template/.agent/skills/design-direction/SKILL.md +45 -0
  235. package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
  236. package/template/.agent/skills/find-skills/SKILL.md +145 -0
  237. package/template/.agent/skills/git-advanced/SKILL.md +972 -0
  238. package/template/.agent/skills/git-workflow/SKILL.md +420 -0
  239. package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
  240. package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
  241. package/template/.agent/skills/migration-management/SKILL.md +384 -0
  242. package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
  243. package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
  244. package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
  245. package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
  246. package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
  247. package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
  248. package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  249. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  250. package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  251. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  252. package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
  253. package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
  254. package/template/.agent/skills/prd-templates/SKILL.md +88 -0
  255. package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
  256. package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
  257. package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
  258. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
  259. package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
  260. package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
  261. package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  262. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
  263. package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  264. package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
  265. package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  266. package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
  267. package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
  268. package/template/.agent/skills/prompt-engineer/README.md +659 -0
  269. package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
  270. package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
  271. package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
  272. package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
  273. package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
  274. package/template/.agent/skills/session-continuity/SKILL.md +730 -0
  275. package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  276. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  277. package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
  278. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  279. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
  280. package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  281. package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  282. package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
  283. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  284. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
  285. package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  286. package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
  287. package/template/.agent/skills/skill-creator/README.md +270 -0
  288. package/template/.agent/skills/skill-creator/SKILL.md +590 -0
  289. package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
  290. package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
  291. package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
  292. package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
  293. package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
  294. package/template/.agent/skills/spec-writing/SKILL.md +110 -0
  295. package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
  296. package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
  297. package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  298. package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
  299. package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
  300. package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
  301. package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
  302. package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
  303. package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
  304. package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
  305. package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
  306. package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
  307. package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
  308. package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
  309. package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  310. package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  311. package/template/.agent/skills/technical-writer/SKILL.md +242 -0
  312. package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
  313. package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
  314. package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
  315. package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
  316. package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
  317. package/template/.agent/workflows/audit-ambiguity.md +64 -0
  318. package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
  319. package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
  320. package/template/.agent/workflows/bootstrap-agents.md +66 -0
  321. package/template/.agent/workflows/create-prd-architecture.md +119 -0
  322. package/template/.agent/workflows/create-prd-compile.md +138 -0
  323. package/template/.agent/workflows/create-prd-design-system.md +135 -0
  324. package/template/.agent/workflows/create-prd-security.md +113 -0
  325. package/template/.agent/workflows/create-prd-stack.md +91 -0
  326. package/template/.agent/workflows/create-prd.md +168 -0
  327. package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
  328. package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
  329. package/template/.agent/workflows/decompose-architecture.md +111 -0
  330. package/template/.agent/workflows/evolve-contract.md +98 -0
  331. package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
  332. package/template/.agent/workflows/evolve-feature-classify.md +116 -0
  333. package/template/.agent/workflows/evolve-feature.md +56 -0
  334. package/template/.agent/workflows/ideate-discover.md +144 -0
  335. package/template/.agent/workflows/ideate-extract.md +129 -0
  336. package/template/.agent/workflows/ideate-validate.md +117 -0
  337. package/template/.agent/workflows/ideate.md +113 -0
  338. package/template/.agent/workflows/implement-slice-setup.md +113 -0
  339. package/template/.agent/workflows/implement-slice-tdd.md +198 -0
  340. package/template/.agent/workflows/implement-slice.md +50 -0
  341. package/template/.agent/workflows/plan-phase.md +202 -0
  342. package/template/.agent/workflows/propagate-decision-apply.md +135 -0
  343. package/template/.agent/workflows/propagate-decision-scan.md +147 -0
  344. package/template/.agent/workflows/propagate-decision.md +56 -0
  345. package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
  346. package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
  347. package/template/.agent/workflows/remediate-pipeline.md +55 -0
  348. package/template/.agent/workflows/resolve-ambiguity.md +82 -0
  349. package/template/.agent/workflows/sync-kit.md +209 -0
  350. package/template/.agent/workflows/update-architecture-map.md +74 -0
  351. package/template/.agent/workflows/validate-phase.md +219 -0
  352. package/template/.agent/workflows/verify-infrastructure.md +207 -0
  353. package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
  354. package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
  355. package/template/.agent/workflows/write-architecture-spec.md +63 -0
  356. package/template/.agent/workflows/write-be-spec-classify.md +165 -0
  357. package/template/.agent/workflows/write-be-spec-write.md +98 -0
  358. package/template/.agent/workflows/write-be-spec.md +76 -0
  359. package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
  360. package/template/.agent/workflows/write-fe-spec-write.md +94 -0
  361. package/template/.agent/workflows/write-fe-spec.md +71 -0
  362. package/template/AGENTS.md +176 -0
  363. package/template/GEMINI.md +177 -0
  364. package/template/docs/README.md +187 -0
  365. package/template/docs/audits/.gitkeep +0 -0
  366. package/template/docs/audits/README.md +10 -0
  367. package/template/docs/plans/.gitkeep +0 -0
  368. package/template/docs/plans/README.md +21 -0
  369. package/template/docs/plans/be/.gitkeep +0 -0
  370. package/template/docs/plans/be/README.md +11 -0
  371. package/template/docs/plans/fe/.gitkeep +0 -0
  372. package/template/docs/plans/fe/README.md +11 -0
  373. package/template/docs/plans/ia/.gitkeep +0 -0
  374. package/template/docs/plans/ia/README.md +17 -0
  375. package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
  376. package/template/docs/plans/ia/deep-dives/README.md +5 -0
  377. package/template/docs/plans/phases/.gitkeep +0 -0
  378. package/template/docs/plans/phases/README.md +11 -0
@@ -0,0 +1,484 @@
1
+ ---
2
+ name: vercel
3
+ description: Comprehensive Vercel hosting and deployment skill covering serverless/edge functions, environment variables, preview deployments, caching, headers, redirects, rewrites, monorepo setup, Vercel storage (KV, Blob, Postgres), analytics, ISR, and CI/CD integration. Use when deploying to Vercel or configuring any Vercel platform feature.
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Vercel Hosting
8
+
9
+ Production deployment platform for frontend frameworks with serverless and edge compute, integrated storage, and zero-config CI/CD.
10
+
11
+ ## Project Configuration
12
+
13
+ ### vercel.json
14
+
15
+ ```json
16
+ {
17
+ "buildCommand": "pnpm build",
18
+ "outputDirectory": ".next",
19
+ "installCommand": "pnpm install",
20
+ "framework": "nextjs",
21
+ "regions": ["iad1"],
22
+ "headers": [
23
+ {
24
+ "source": "/api/(.*)",
25
+ "headers": [
26
+ { "key": "Cache-Control", "value": "no-store" },
27
+ { "key": "X-Content-Type-Options", "value": "nosniff" }
28
+ ]
29
+ },
30
+ {
31
+ "source": "/(.*)",
32
+ "headers": [
33
+ { "key": "X-Frame-Options", "value": "DENY" },
34
+ { "key": "Strict-Transport-Security", "value": "max-age=63072000; includeSubDomains; preload" }
35
+ ]
36
+ }
37
+ ],
38
+ "redirects": [
39
+ { "source": "/old-path", "destination": "/new-path", "permanent": true }
40
+ ],
41
+ "rewrites": [
42
+ { "source": "/api/proxy/:path*", "destination": "https://backend.example.com/:path*" }
43
+ ]
44
+ }
45
+ ```
46
+
47
+ ### Framework Detection
48
+
49
+ Vercel auto-detects frameworks. Override with `framework` in vercel.json:
50
+
51
+ | Framework | Value | Output Directory |
52
+ |-----------|-------|-----------------|
53
+ | Next.js | `nextjs` | `.next` |
54
+ | Astro | `astro` | `dist` |
55
+ | SvelteKit | `sveltekit` | `.svelte-kit` |
56
+ | Remix | `remix` | `build` |
57
+ | Vite/React | `vite` | `dist` |
58
+
59
+ ## Serverless Functions
60
+
61
+ ### API Route (Next.js App Router)
62
+
63
+ ```typescript
64
+ // app/api/users/route.ts
65
+ import { NextRequest, NextResponse } from 'next/server';
66
+
67
+ export const runtime = 'nodejs'; // default, or 'edge'
68
+ export const maxDuration = 30; // seconds (Pro: 60, Enterprise: 900)
69
+ export const dynamic = 'force-dynamic';
70
+
71
+ export async function GET(request: NextRequest) {
72
+ const searchParams = request.nextUrl.searchParams;
73
+ const page = parseInt(searchParams.get('page') ?? '1', 10);
74
+
75
+ const users = await db.users.findMany({ skip: (page - 1) * 20, take: 20 });
76
+ return NextResponse.json(users);
77
+ }
78
+
79
+ export async function POST(request: NextRequest) {
80
+ const body = await request.json();
81
+ const user = await db.users.create({ data: body });
82
+ return NextResponse.json(user, { status: 201 });
83
+ }
84
+ ```
85
+
86
+ ### Standalone Serverless Function (non-framework)
87
+
88
+ ```typescript
89
+ // api/hello.ts
90
+ import type { VercelRequest, VercelResponse } from '@vercel/node';
91
+
92
+ export default function handler(req: VercelRequest, res: VercelResponse) {
93
+ res.status(200).json({ message: 'Hello from Vercel' });
94
+ }
95
+ ```
96
+
97
+ ### Function Configuration
98
+
99
+ | Setting | Hobby | Pro | Enterprise |
100
+ |---------|-------|-----|-----------|
101
+ | Max Duration | 10s | 60s | 900s |
102
+ | Memory | 1024 MB | 3009 MB | 3009 MB |
103
+ | Payload Size | 4.5 MB | 4.5 MB | 4.5 MB |
104
+ | Regions | 1 | Multiple | Multiple |
105
+
106
+ ## Edge Functions
107
+
108
+ ```typescript
109
+ // app/api/geo/route.ts
110
+ import { NextRequest, NextResponse } from 'next/server';
111
+
112
+ export const runtime = 'edge';
113
+
114
+ export async function GET(request: NextRequest) {
115
+ const country = request.geo?.country ?? 'US';
116
+ const city = request.geo?.city ?? 'Unknown';
117
+
118
+ return NextResponse.json({ country, city });
119
+ }
120
+ ```
121
+
122
+ **Edge limitations**: No native Node.js modules (fs, net, child_process). No dynamic `require()`. Limited to Web APIs and edge-compatible npm packages. Max 128 KB compressed bundle size after tree shaking.
123
+
124
+ ## Edge Middleware
125
+
126
+ ```typescript
127
+ // middleware.ts (project root)
128
+ import { NextResponse } from 'next/server';
129
+ import type { NextRequest } from 'next/server';
130
+
131
+ export function middleware(request: NextRequest) {
132
+ // Geo-based redirect
133
+ if (request.geo?.country === 'DE') {
134
+ return NextResponse.redirect(new URL('/de', request.url));
135
+ }
136
+
137
+ // Add custom headers
138
+ const response = NextResponse.next();
139
+ response.headers.set('x-request-id', crypto.randomUUID());
140
+ return response;
141
+ }
142
+
143
+ export const config = {
144
+ matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'],
145
+ };
146
+ ```
147
+
148
+ ## Environment Variables
149
+
150
+ ### Configuration Hierarchy
151
+
152
+ | Scope | Available In | Set Via |
153
+ |-------|-------------|---------|
154
+ | `NEXT_PUBLIC_*` | Client + Server | Dashboard, CLI, vercel.json |
155
+ | No prefix | Server only | Dashboard, CLI |
156
+ | `VERCEL_*` | Auto-populated | System (read-only) |
157
+
158
+ ### Environment-Specific Variables
159
+
160
+ ```bash
161
+ # Set for specific environments
162
+ vercel env add DATABASE_URL production
163
+ vercel env add DATABASE_URL preview
164
+ vercel env add DATABASE_URL development
165
+
166
+ # Pull to local .env
167
+ vercel env pull .env.local
168
+
169
+ # List all
170
+ vercel env ls
171
+ ```
172
+
173
+ ### System Environment Variables
174
+
175
+ | Variable | Value |
176
+ |----------|-------|
177
+ | `VERCEL` | `1` (always set on Vercel) |
178
+ | `VERCEL_ENV` | `production`, `preview`, or `development` |
179
+ | `VERCEL_URL` | Deployment URL (no protocol) |
180
+ | `VERCEL_GIT_COMMIT_SHA` | Git commit hash |
181
+ | `VERCEL_GIT_COMMIT_REF` | Git branch name |
182
+
183
+ ## Caching and ISR
184
+
185
+ ### Incremental Static Regeneration
186
+
187
+ ```typescript
188
+ // app/products/[id]/page.tsx
189
+ export const revalidate = 60; // revalidate every 60 seconds
190
+
191
+ export async function generateStaticParams() {
192
+ const products = await db.products.findMany();
193
+ return products.map((p) => ({ id: p.id }));
194
+ }
195
+
196
+ export default async function ProductPage({ params }: { params: { id: string } }) {
197
+ const product = await db.products.findUnique({ where: { id: params.id } });
198
+ return <div>{product.name}</div>;
199
+ }
200
+ ```
201
+
202
+ ### On-Demand Revalidation
203
+
204
+ ```typescript
205
+ // app/api/revalidate/route.ts
206
+ import { revalidatePath, revalidateTag } from 'next/cache';
207
+ import { NextRequest, NextResponse } from 'next/server';
208
+
209
+ export async function POST(request: NextRequest) {
210
+ const secret = request.headers.get('x-revalidation-secret');
211
+ if (secret !== process.env.REVALIDATION_SECRET) {
212
+ return NextResponse.json({ error: 'Invalid secret' }, { status: 401 });
213
+ }
214
+
215
+ const { path, tag } = await request.json();
216
+
217
+ if (tag) {
218
+ revalidateTag(tag);
219
+ } else if (path) {
220
+ revalidatePath(path);
221
+ }
222
+
223
+ return NextResponse.json({ revalidated: true, now: Date.now() });
224
+ }
225
+ ```
226
+
227
+ ### Cache-Control Headers
228
+
229
+ ```typescript
230
+ // Manual cache headers for API routes
231
+ export async function GET() {
232
+ const data = await fetchData();
233
+
234
+ return NextResponse.json(data, {
235
+ headers: {
236
+ 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=300',
237
+ },
238
+ });
239
+ }
240
+ ```
241
+
242
+ **Cache hierarchy**: `s-maxage` controls Vercel CDN cache. `stale-while-revalidate` serves stale content while refreshing in background. `no-store` disables caching entirely.
243
+
244
+ ## Preview Deployments
245
+
246
+ Every push to a non-production branch creates a preview deployment.
247
+
248
+ ### Preview Protection
249
+
250
+ ```json
251
+ // vercel.json
252
+ {
253
+ "oidcTokenConfig": {
254
+ "enabled": true
255
+ }
256
+ }
257
+ ```
258
+
259
+ ### Preview Comments
260
+
261
+ Enabled by default on GitHub PRs. Disable per-project in dashboard under Settings > Git > Preview Comments.
262
+
263
+ ### Branch-Specific Domains
264
+
265
+ ```bash
266
+ # Assign custom domain to branch
267
+ vercel alias set <deployment-url> staging.example.com
268
+ ```
269
+
270
+ ## Monorepo Setup
271
+
272
+ ### Turborepo Configuration
273
+
274
+ ```json
275
+ // vercel.json at project root
276
+ {
277
+ "buildCommand": "cd ../.. && npx turbo run build --filter=web",
278
+ "installCommand": "cd ../.. && pnpm install",
279
+ "framework": "nextjs",
280
+ "outputDirectory": ".next"
281
+ }
282
+ ```
283
+
284
+ ### Root Directory Setting
285
+
286
+ Set in Vercel Dashboard > Project Settings > General > Root Directory. For a monorepo structure:
287
+
288
+ ```
289
+ apps/
290
+ web/ ← Root Directory for web project
291
+ docs/ ← Root Directory for docs project
292
+ packages/
293
+ ui/
294
+ config/
295
+ ```
296
+
297
+ ### Ignored Build Step
298
+
299
+ ```bash
300
+ # .vercel/ignore-build.sh — skip builds when no relevant changes
301
+ #!/bin/bash
302
+ git diff --quiet HEAD^ HEAD -- . ../../packages/
303
+ ```
304
+
305
+ Or in vercel.json:
306
+ ```json
307
+ {
308
+ "ignoreCommand": "git diff --quiet HEAD^ HEAD -- . ../../packages/"
309
+ }
310
+ ```
311
+
312
+ ## Vercel Storage
313
+
314
+ ### Vercel KV (Redis-compatible)
315
+
316
+ ```typescript
317
+ import { kv } from '@vercel/kv';
318
+
319
+ // Set
320
+ await kv.set('user:123', { name: 'Alice', email: 'alice@example.com' });
321
+ await kv.set('session:abc', 'data', { ex: 3600 }); // expires in 1 hour
322
+
323
+ // Get
324
+ const user = await kv.get<{ name: string; email: string }>('user:123');
325
+
326
+ // Hash operations
327
+ await kv.hset('config', { theme: 'dark', lang: 'en' });
328
+ const theme = await kv.hget<string>('config', 'theme');
329
+
330
+ // List operations
331
+ await kv.lpush('queue', 'task1', 'task2');
332
+ const task = await kv.rpop('queue');
333
+ ```
334
+
335
+ ### Vercel Blob
336
+
337
+ ```typescript
338
+ import { put, del, list, head } from '@vercel/blob';
339
+
340
+ // Upload
341
+ const blob = await put('avatars/user-123.png', fileBuffer, {
342
+ access: 'public',
343
+ contentType: 'image/png',
344
+ });
345
+ // blob.url → https://abc.public.blob.vercel-storage.com/avatars/user-123.png
346
+
347
+ // List blobs
348
+ const { blobs, cursor } = await list({ prefix: 'avatars/', limit: 100 });
349
+
350
+ // Delete
351
+ await del(blob.url);
352
+
353
+ // Client upload (from browser)
354
+ import { upload } from '@vercel/blob/client';
355
+
356
+ const blob = await upload('avatar.png', file, {
357
+ access: 'public',
358
+ handleUploadUrl: '/api/upload', // server-side handler
359
+ });
360
+ ```
361
+
362
+ ### Vercel Postgres
363
+
364
+ ```typescript
365
+ import { sql } from '@vercel/postgres';
366
+
367
+ // Query
368
+ const { rows } = await sql`SELECT * FROM users WHERE id = ${userId}`;
369
+
370
+ // Insert
371
+ await sql`INSERT INTO users (name, email) VALUES (${name}, ${email})`;
372
+
373
+ // Transaction
374
+ import { db } from '@vercel/postgres';
375
+
376
+ const client = await db.connect();
377
+ try {
378
+ await client.sql`BEGIN`;
379
+ await client.sql`UPDATE accounts SET balance = balance - ${amount} WHERE id = ${from}`;
380
+ await client.sql`UPDATE accounts SET balance = balance + ${amount} WHERE id = ${to}`;
381
+ await client.sql`COMMIT`;
382
+ } catch (e) {
383
+ await client.sql`ROLLBACK`;
384
+ throw e;
385
+ } finally {
386
+ client.release();
387
+ }
388
+ ```
389
+
390
+ ## Analytics and Speed Insights
391
+
392
+ ### Web Analytics
393
+
394
+ ```typescript
395
+ // app/layout.tsx
396
+ import { Analytics } from '@vercel/analytics/react';
397
+
398
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
399
+ return (
400
+ <html>
401
+ <body>
402
+ {children}
403
+ <Analytics />
404
+ </body>
405
+ </html>
406
+ );
407
+ }
408
+ ```
409
+
410
+ ### Speed Insights (Core Web Vitals)
411
+
412
+ ```typescript
413
+ import { SpeedInsights } from '@vercel/speed-insights/next';
414
+
415
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
416
+ return (
417
+ <html>
418
+ <body>
419
+ {children}
420
+ <SpeedInsights />
421
+ </body>
422
+ </html>
423
+ );
424
+ }
425
+ ```
426
+
427
+ ## CLI Commands
428
+
429
+ ```bash
430
+ # Deploy
431
+ vercel # preview deployment
432
+ vercel --prod # production deployment
433
+
434
+ # Environment
435
+ vercel env pull # pull env vars to .env.local
436
+ vercel env add KEY # add env var interactively
437
+ vercel env rm KEY # remove env var
438
+
439
+ # Domains
440
+ vercel domains add example.com
441
+ vercel domains inspect example.com
442
+
443
+ # Logs
444
+ vercel logs <deployment-url>
445
+ vercel logs <deployment-url> --follow
446
+
447
+ # Project management
448
+ vercel link # link local project
449
+ vercel project ls # list projects
450
+ ```
451
+
452
+ ## Anti-Patterns
453
+
454
+ | Anti-Pattern | Correct Approach |
455
+ |-------------|-----------------|
456
+ | Hardcoding `VERCEL_URL` in client code | Use `NEXT_PUBLIC_APP_URL` env var, set per environment |
457
+ | Using serverless functions for WebSockets | Use a dedicated WebSocket service or Vercel's Edge Config |
458
+ | `Cache-Control: max-age=31536000` on API routes | Use `s-maxage` for CDN caching, short `max-age` for browser |
459
+ | Large serverless function bundles (>50 MB) | Tree-shake imports, use dynamic imports, split into smaller functions |
460
+ | Running database migrations in serverless functions | Use build scripts or separate CI/CD step |
461
+ | Storing sessions in serverless function memory | Use Vercel KV or external session store |
462
+ | Ignoring cold start latency | Use edge runtime for latency-sensitive routes, warm critical functions |
463
+ | Deploying without preview testing | Always verify preview deployment before promoting to production |
464
+
465
+ ## Decision Guide
466
+
467
+ ```
468
+ Need compute?
469
+ ├─ < 10ms response, globally distributed → Edge Function (runtime = 'edge')
470
+ ├─ Node.js APIs needed (fs, streams, native modules) → Serverless Function (runtime = 'nodejs')
471
+ └─ Long-running (> 60s) → Not suitable for Vercel serverless, use external service
472
+
473
+ Need storage?
474
+ ├─ Session data, rate limiting, cache → Vercel KV
475
+ ├─ File uploads, images, documents → Vercel Blob
476
+ ├─ Relational data → Vercel Postgres
477
+ └─ Configuration, feature flags → Vercel Edge Config
478
+
479
+ Need caching?
480
+ ├─ Static pages with periodic updates → ISR (revalidate = N)
481
+ ├─ Static pages with webhook-triggered updates → On-demand revalidation
482
+ ├─ API responses → Cache-Control with s-maxage
483
+ └─ Dynamic, user-specific content → no-store
484
+ ```