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,564 @@
1
+ ---
2
+ name: nuxt
3
+ description: Build full-stack Vue applications with Nuxt.js including file-based routing, server routes, composables, data fetching, middleware, and deployment. Use when developing SSR/SSG/SPA applications with the Nuxt meta-framework.
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Nuxt.js
8
+
9
+ Build full-stack Vue applications with Nuxt.js. Nuxt provides file-based routing, auto-imports, server routes (Nitro), SSR/SSG/SPA rendering modes, and a powerful module ecosystem.
10
+
11
+ ## When to Use This Skill
12
+
13
+ - Building server-rendered (SSR) Vue applications
14
+ - Generating static sites (SSG) with Vue
15
+ - Creating full-stack applications with API routes
16
+ - Implementing SEO-optimized web applications
17
+ - Developing applications that need flexible rendering strategies per route
18
+
19
+ ## Project Structure
20
+
21
+ ```
22
+ nuxt-app/
23
+ app.vue # Root component
24
+ nuxt.config.ts # Nuxt configuration
25
+ pages/ # File-based routes
26
+ components/ # Auto-imported components
27
+ composables/ # Auto-imported composables
28
+ server/
29
+ api/ # API routes (/api/*)
30
+ routes/ # Server routes
31
+ middleware/ # Server middleware
32
+ utils/ # Server utilities
33
+ middleware/ # Route middleware (client + server)
34
+ layouts/ # Layout components
35
+ plugins/ # App plugins
36
+ utils/ # Auto-imported utilities
37
+ public/ # Static assets
38
+ assets/ # Processed assets (CSS, images)
39
+ ```
40
+
41
+ ## Configuration
42
+
43
+ ```typescript
44
+ // nuxt.config.ts
45
+ export default defineNuxtConfig({
46
+ devtools: { enabled: true },
47
+
48
+ modules: [
49
+ '@nuxtjs/tailwindcss',
50
+ '@pinia/nuxt',
51
+ '@vueuse/nuxt',
52
+ 'nuxt-icon',
53
+ ],
54
+
55
+ runtimeConfig: {
56
+ // Server-only (not exposed to client)
57
+ databaseUrl: process.env.DATABASE_URL,
58
+ apiSecret: process.env.API_SECRET,
59
+
60
+ // Client-accessible (exposed via useRuntimeConfig())
61
+ public: {
62
+ apiBase: process.env.NUXT_PUBLIC_API_BASE ?? '/api',
63
+ siteUrl: process.env.NUXT_PUBLIC_SITE_URL ?? 'http://localhost:3000',
64
+ },
65
+ },
66
+
67
+ app: {
68
+ head: {
69
+ charset: 'utf-8',
70
+ viewport: 'width=device-width, initial-scale=1',
71
+ htmlAttrs: { lang: 'en' },
72
+ },
73
+ },
74
+
75
+ routeRules: {
76
+ '/': { prerender: true }, // Static at build time
77
+ '/blog/**': { isr: 3600 }, // ISR: revalidate every hour
78
+ '/dashboard/**': { ssr: false }, // Client-only SPA
79
+ '/api/**': { cors: true }, // CORS for API routes
80
+ '/old-page': { redirect: '/new-page' },
81
+ },
82
+
83
+ nitro: {
84
+ preset: 'cloudflare-pages', // Deployment target
85
+ },
86
+ });
87
+ ```
88
+
89
+ ## File-Based Routing
90
+
91
+ ### Route Structure
92
+
93
+ ```
94
+ pages/
95
+ index.vue # /
96
+ about.vue # /about
97
+ blog/
98
+ index.vue # /blog
99
+ [slug].vue # /blog/:slug
100
+ users/
101
+ [id]/
102
+ index.vue # /users/:id
103
+ settings.vue # /users/:id/settings
104
+ [...slug].vue # Catch-all: /any/nested/path
105
+ ```
106
+
107
+ ### Page Component
108
+
109
+ ```vue
110
+ <!-- pages/blog/[slug].vue -->
111
+ <script setup lang="ts">
112
+ const route = useRoute();
113
+ const slug = route.params.slug as string;
114
+
115
+ const { data: post, error } = await useAsyncData(
116
+ `post-${slug}`,
117
+ () => $fetch(`/api/posts/${slug}`),
118
+ );
119
+
120
+ if (error.value) {
121
+ throw createError({ statusCode: 404, statusMessage: 'Post not found' });
122
+ }
123
+
124
+ // SEO
125
+ useSeoMeta({
126
+ title: post.value?.title,
127
+ description: post.value?.excerpt,
128
+ ogTitle: post.value?.title,
129
+ ogDescription: post.value?.excerpt,
130
+ ogImage: post.value?.coverImage,
131
+ });
132
+ </script>
133
+
134
+ <template>
135
+ <article v-if="post">
136
+ <h1>{{ post.title }}</h1>
137
+ <time :datetime="post.publishedAt">{{ formatDate(post.publishedAt) }}</time>
138
+ <div v-html="post.content" />
139
+ </article>
140
+ </template>
141
+ ```
142
+
143
+ ### Navigation
144
+
145
+ ```vue
146
+ <template>
147
+ <nav>
148
+ <!-- NuxtLink provides prefetching and active state -->
149
+ <NuxtLink to="/">Home</NuxtLink>
150
+ <NuxtLink to="/blog" active-class="text-blue-600">Blog</NuxtLink>
151
+ <NuxtLink :to="`/users/${userId}`">Profile</NuxtLink>
152
+ </nav>
153
+ </template>
154
+ ```
155
+
156
+ ## Data Fetching
157
+
158
+ ### useFetch (Composable Wrapper)
159
+
160
+ ```vue
161
+ <script setup lang="ts">
162
+ // useFetch is a convenience wrapper around useAsyncData + $fetch
163
+ const { data, status, error, refresh } = await useFetch('/api/posts', {
164
+ query: { page: 1, limit: 10 },
165
+ // Transform response
166
+ transform: (response) => response.posts,
167
+ // Cache key (auto-generated from URL if omitted)
168
+ key: 'posts-page-1',
169
+ // Lazy: don't block navigation
170
+ lazy: true,
171
+ // Watch reactive sources to refetch
172
+ watch: [page],
173
+ });
174
+ </script>
175
+ ```
176
+
177
+ ### useAsyncData (Full Control)
178
+
179
+ ```vue
180
+ <script setup lang="ts">
181
+ const page = ref(1);
182
+
183
+ const { data: posts, status, refresh } = await useAsyncData(
184
+ 'posts',
185
+ () => $fetch('/api/posts', { query: { page: page.value } }),
186
+ {
187
+ // Re-fetch when page changes
188
+ watch: [page],
189
+ // Default value while loading
190
+ default: () => [],
191
+ // Transform
192
+ transform: (result) => result.data,
193
+ },
194
+ );
195
+
196
+ // Manual refresh
197
+ async function loadMore() {
198
+ page.value++;
199
+ await refresh();
200
+ }
201
+ </script>
202
+ ```
203
+
204
+ ### $fetch (Direct API Calls)
205
+
206
+ ```typescript
207
+ // $fetch is Nuxt's universal fetch (works on server and client)
208
+ // It auto-handles JSON serialization/deserialization
209
+
210
+ // In event handlers or non-setup contexts
211
+ async function submitForm(formData: FormData) {
212
+ try {
213
+ const result = await $fetch('/api/contact', {
214
+ method: 'POST',
215
+ body: formData,
216
+ });
217
+ return result;
218
+ } catch (error) {
219
+ // $fetch throws on non-2xx responses
220
+ if (error.statusCode === 422) {
221
+ return { errors: error.data.errors };
222
+ }
223
+ throw error;
224
+ }
225
+ }
226
+ ```
227
+
228
+ ## Server Routes (Nitro)
229
+
230
+ ### API Routes
231
+
232
+ ```typescript
233
+ // server/api/posts/index.get.ts
234
+ export default defineEventHandler(async (event) => {
235
+ const query = getQuery(event);
236
+ const page = Number(query.page) ?? 1;
237
+ const limit = Number(query.limit) ?? 10;
238
+
239
+ const posts = await db.post.findMany({
240
+ skip: (page - 1) * limit,
241
+ take: limit,
242
+ orderBy: { publishedAt: 'desc' },
243
+ });
244
+
245
+ return { data: posts, page, limit };
246
+ });
247
+ ```
248
+
249
+ ```typescript
250
+ // server/api/posts/index.post.ts
251
+ import { z } from 'zod';
252
+
253
+ const CreatePostSchema = z.object({
254
+ title: z.string().min(3).max(200),
255
+ content: z.string().min(1),
256
+ status: z.enum(['draft', 'published']).default('draft'),
257
+ });
258
+
259
+ export default defineEventHandler(async (event) => {
260
+ const body = await readBody(event);
261
+
262
+ const parsed = CreatePostSchema.safeParse(body);
263
+ if (!parsed.success) {
264
+ throw createError({
265
+ statusCode: 422,
266
+ statusMessage: 'Validation failed',
267
+ data: { errors: parsed.error.flatten().fieldErrors },
268
+ });
269
+ }
270
+
271
+ const post = await db.post.create({ data: parsed.data });
272
+ setResponseStatus(event, 201);
273
+ return post;
274
+ });
275
+ ```
276
+
277
+ ```typescript
278
+ // server/api/posts/[slug].get.ts
279
+ export default defineEventHandler(async (event) => {
280
+ const slug = getRouterParam(event, 'slug');
281
+
282
+ const post = await db.post.findUnique({ where: { slug } });
283
+ if (!post) {
284
+ throw createError({ statusCode: 404, statusMessage: 'Post not found' });
285
+ }
286
+
287
+ return post;
288
+ });
289
+ ```
290
+
291
+ ### Server Middleware
292
+
293
+ ```typescript
294
+ // server/middleware/auth.ts
295
+ export default defineEventHandler(async (event) => {
296
+ // Runs on EVERY server request
297
+ const token = getHeader(event, 'authorization')?.replace('Bearer ', '');
298
+
299
+ if (event.path.startsWith('/api/admin')) {
300
+ if (!token) {
301
+ throw createError({ statusCode: 401, statusMessage: 'Unauthorized' });
302
+ }
303
+
304
+ const user = await verifyToken(token);
305
+ if (!user) {
306
+ throw createError({ statusCode: 401, statusMessage: 'Invalid token' });
307
+ }
308
+
309
+ // Attach user to event context
310
+ event.context.user = user;
311
+ }
312
+ });
313
+ ```
314
+
315
+ ### Server Utilities
316
+
317
+ ```typescript
318
+ // server/utils/db.ts
319
+ // Auto-imported in all server/ files
320
+ import { PrismaClient } from '@prisma/client';
321
+
322
+ let prisma: PrismaClient;
323
+
324
+ export function useDB(): PrismaClient {
325
+ if (!prisma) {
326
+ prisma = new PrismaClient();
327
+ }
328
+ return prisma;
329
+ }
330
+ ```
331
+
332
+ ## Composables
333
+
334
+ ```typescript
335
+ // composables/useAuth.ts
336
+ // Auto-imported everywhere in the app
337
+ export function useAuth() {
338
+ const user = useState<User | null>('auth-user', () => null);
339
+ const isAuthenticated = computed(() => user.value !== null);
340
+
341
+ async function login(email: string, password: string) {
342
+ const result = await $fetch('/api/auth/login', {
343
+ method: 'POST',
344
+ body: { email, password },
345
+ });
346
+ user.value = result.user;
347
+ return result;
348
+ }
349
+
350
+ async function logout() {
351
+ await $fetch('/api/auth/logout', { method: 'POST' });
352
+ user.value = null;
353
+ navigateTo('/login');
354
+ }
355
+
356
+ async function fetchUser() {
357
+ try {
358
+ user.value = await $fetch('/api/auth/me');
359
+ } catch {
360
+ user.value = null;
361
+ }
362
+ }
363
+
364
+ return { user, isAuthenticated, login, logout, fetchUser };
365
+ }
366
+ ```
367
+
368
+ ```typescript
369
+ // composables/useToast.ts
370
+ interface Toast {
371
+ id: string;
372
+ message: string;
373
+ type: 'success' | 'error' | 'info';
374
+ }
375
+
376
+ export function useToast() {
377
+ const toasts = useState<Toast[]>('toasts', () => []);
378
+
379
+ function show(message: string, type: Toast['type'] = 'info') {
380
+ const id = crypto.randomUUID();
381
+ toasts.value.push({ id, message, type });
382
+ setTimeout(() => dismiss(id), 5000);
383
+ }
384
+
385
+ function dismiss(id: string) {
386
+ toasts.value = toasts.value.filter((t) => t.id !== id);
387
+ }
388
+
389
+ return { toasts: readonly(toasts), show, dismiss };
390
+ }
391
+ ```
392
+
393
+ ## Route Middleware
394
+
395
+ ```typescript
396
+ // middleware/auth.ts
397
+ export default defineNuxtRouteMiddleware((to) => {
398
+ const { isAuthenticated } = useAuth();
399
+
400
+ if (!isAuthenticated.value) {
401
+ return navigateTo(`/login?redirect=${encodeURIComponent(to.fullPath)}`);
402
+ }
403
+ });
404
+ ```
405
+
406
+ ```typescript
407
+ // middleware/admin.ts
408
+ export default defineNuxtRouteMiddleware(() => {
409
+ const { user } = useAuth();
410
+
411
+ if (user.value?.role !== 'admin') {
412
+ return navigateTo('/');
413
+ }
414
+ });
415
+ ```
416
+
417
+ ```vue
418
+ <!-- Apply middleware to a page -->
419
+ <script setup lang="ts">
420
+ definePageMeta({
421
+ middleware: ['auth', 'admin'],
422
+ layout: 'dashboard',
423
+ });
424
+ </script>
425
+ ```
426
+
427
+ ## Layouts
428
+
429
+ ```vue
430
+ <!-- layouts/default.vue -->
431
+ <template>
432
+ <div class="min-h-screen flex flex-col">
433
+ <AppHeader />
434
+ <main class="flex-1">
435
+ <slot />
436
+ </main>
437
+ <AppFooter />
438
+ </div>
439
+ </template>
440
+ ```
441
+
442
+ ```vue
443
+ <!-- layouts/dashboard.vue -->
444
+ <template>
445
+ <div class="flex min-h-screen">
446
+ <DashboardSidebar />
447
+ <div class="flex-1 p-6">
448
+ <slot />
449
+ </div>
450
+ </div>
451
+ </template>
452
+ ```
453
+
454
+ ## Error Handling
455
+
456
+ ```vue
457
+ <!-- error.vue (root-level error page) -->
458
+ <script setup lang="ts">
459
+ import type { NuxtError } from '#app';
460
+
461
+ defineProps<{ error: NuxtError }>();
462
+
463
+ function handleClear() {
464
+ clearError({ redirect: '/' });
465
+ }
466
+ </script>
467
+
468
+ <template>
469
+ <div class="flex flex-col items-center justify-center min-h-screen">
470
+ <h1 class="text-4xl font-bold">{{ error.statusCode }}</h1>
471
+ <p class="mt-2 text-gray-600">{{ error.statusMessage }}</p>
472
+ <button class="mt-4 px-4 py-2 bg-blue-600 text-white rounded" @click="handleClear">
473
+ Go Home
474
+ </button>
475
+ </div>
476
+ </template>
477
+ ```
478
+
479
+ ## SEO
480
+
481
+ ```vue
482
+ <script setup lang="ts">
483
+ // useHead for full control
484
+ useHead({
485
+ title: 'My Page Title',
486
+ link: [{ rel: 'canonical', href: 'https://example.com/page' }],
487
+ script: [{ type: 'application/ld+json', innerHTML: JSON.stringify(jsonLd) }],
488
+ });
489
+
490
+ // useSeoMeta for common meta tags (type-safe)
491
+ useSeoMeta({
492
+ title: 'My Page',
493
+ description: 'Page description for search engines',
494
+ ogTitle: 'My Page',
495
+ ogDescription: 'Page description for social sharing',
496
+ ogImage: 'https://example.com/og.png',
497
+ ogUrl: 'https://example.com/page',
498
+ twitterCard: 'summary_large_image',
499
+ twitterTitle: 'My Page',
500
+ twitterDescription: 'Page description for Twitter',
501
+ twitterImage: 'https://example.com/twitter.png',
502
+ robots: 'index, follow',
503
+ });
504
+ </script>
505
+ ```
506
+
507
+ ## State Management (useState)
508
+
509
+ ```typescript
510
+ // useState persists across SSR and client hydration
511
+ const counter = useState('counter', () => 0);
512
+ const theme = useState<'light' | 'dark'>('theme', () => 'light');
513
+
514
+ // For complex state, use Pinia
515
+ // stores/useCartStore.ts
516
+ export const useCartStore = defineStore('cart', () => {
517
+ const items = ref<CartItem[]>([]);
518
+ const total = computed(() => items.value.reduce((sum, item) => sum + item.price, 0));
519
+
520
+ function addItem(item: CartItem) {
521
+ items.value.push(item);
522
+ }
523
+
524
+ function removeItem(id: string) {
525
+ items.value = items.value.filter((item) => item.id !== id);
526
+ }
527
+
528
+ return { items, total, addItem, removeItem };
529
+ });
530
+ ```
531
+
532
+ ## Anti-Patterns
533
+
534
+ | Anti-Pattern | Correct Approach |
535
+ |-------------|-----------------|
536
+ | Using `axios` or `node-fetch` instead of `$fetch` | `$fetch` handles SSR/client, serialization, and base URL automatically |
537
+ | Calling `useFetch` inside event handlers | `useFetch` is for `<script setup>` only; use `$fetch` in handlers |
538
+ | Mutating `useState` values on the server without SSR awareness | Server state is serialized and sent to client -- avoid large objects |
539
+ | Importing composables manually | They are auto-imported from `composables/` directory |
540
+ | Using `process.env` in client code | Use `useRuntimeConfig().public` for client-accessible values |
541
+ | Putting database logic in `composables/` | Database access belongs in `server/` only |
542
+ | Using global middleware for auth on every route | Use named middleware and `definePageMeta` per page |
543
+
544
+ ## Deployment
545
+
546
+ ```typescript
547
+ // nuxt.config.ts -- set Nitro preset for your platform
548
+ export default defineNuxtConfig({
549
+ nitro: {
550
+ preset: 'cloudflare-pages', // or 'vercel', 'netlify', 'node-server', 'bun', 'deno'
551
+ },
552
+ });
553
+ ```
554
+
555
+ ```bash
556
+ # Build
557
+ pnpm build
558
+
559
+ # Preview production build locally
560
+ pnpm preview
561
+
562
+ # Static generation (SSG)
563
+ pnpm generate
564
+ ```