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,614 @@
1
+ ---
2
+ name: sveltekit
3
+ description: Comprehensive SvelteKit skill covering file-based routing, layouts, load functions, form actions, server hooks, page options (SSR, CSR, prerender), environment variables, stores, error handling, adapter configuration, and deployment. Use when building applications with SvelteKit.
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # SvelteKit
8
+
9
+ Full-stack framework for Svelte with file-based routing, server-side rendering, form actions, and flexible deployment targets via adapters.
10
+
11
+ ## Project Structure
12
+
13
+ ```
14
+ src/
15
+ app.html # HTML template
16
+ app.d.ts # Generated types
17
+ hooks.server.ts # Server hooks (runs on every request)
18
+ hooks.client.ts # Client hooks
19
+ lib/ # Shared library code ($lib alias)
20
+ components/
21
+ server/ # Server-only code ($lib/server)
22
+ db.ts
23
+ utils.ts
24
+ params/ # Parameter matchers
25
+ integer.ts
26
+ routes/ # File-based routing
27
+ +layout.svelte # Root layout
28
+ +layout.server.ts # Root layout data
29
+ +page.svelte # Home page
30
+ +page.server.ts # Home page server data
31
+ +error.svelte # Error page
32
+ about/
33
+ +page.svelte
34
+ blog/
35
+ +page.svelte
36
+ +page.server.ts
37
+ [slug]/
38
+ +page.svelte
39
+ +page.server.ts
40
+ api/
41
+ health/
42
+ +server.ts # API endpoint
43
+ static/ # Static assets
44
+ svelte.config.js # SvelteKit configuration
45
+ vite.config.ts # Vite configuration
46
+ ```
47
+
48
+ ## Routing
49
+
50
+ ### Basic Pages
51
+
52
+ ```svelte
53
+ <!-- src/routes/+page.svelte -->
54
+ <script lang="ts">
55
+ import type { PageData } from './$types';
56
+
57
+ let { data }: { data: PageData } = $props();
58
+ </script>
59
+
60
+ <h1>Welcome</h1>
61
+ <p>{data.message}</p>
62
+ ```
63
+
64
+ ### Dynamic Routes
65
+
66
+ ```
67
+ src/routes/
68
+ blog/[slug]/+page.svelte # /blog/my-post
69
+ users/[id=integer]/+page.svelte # /users/123 (with param matcher)
70
+ [...catchall]/+page.svelte # Catch-all route
71
+ [[optional]]/+page.svelte # Optional parameter
72
+ (marketing)/pricing/+page.svelte # Route group (no URL segment)
73
+ (marketing)/about/+page.svelte # Shares (marketing) layout
74
+ ```
75
+
76
+ ### Parameter Matchers
77
+
78
+ ```typescript
79
+ // src/params/integer.ts
80
+ import type { ParamMatcher } from '@sveltejs/kit';
81
+
82
+ export const match: ParamMatcher = (param) => {
83
+ return /^\d+$/.test(param);
84
+ };
85
+ ```
86
+
87
+ ### Layouts
88
+
89
+ ```svelte
90
+ <!-- src/routes/+layout.svelte -->
91
+ <script lang="ts">
92
+ import type { LayoutData } from './$types';
93
+ import { Snippet } from 'svelte';
94
+
95
+ let { data, children }: { data: LayoutData; children: Snippet } = $props();
96
+ </script>
97
+
98
+ <nav>
99
+ <a href="/">Home</a>
100
+ <a href="/about">About</a>
101
+ {#if data.user}
102
+ <span>{data.user.name}</span>
103
+ {/if}
104
+ </nav>
105
+
106
+ <main>
107
+ {@render children()}
108
+ </main>
109
+ ```
110
+
111
+ ### Route Groups
112
+
113
+ Route groups `(groupname)` share a layout without affecting the URL:
114
+
115
+ ```
116
+ src/routes/
117
+ (auth)/
118
+ +layout.svelte # Shared auth layout (centered card)
119
+ login/+page.svelte # /login
120
+ register/+page.svelte # /register
121
+ (app)/
122
+ +layout.svelte # Shared app layout (sidebar + nav)
123
+ dashboard/+page.svelte # /dashboard
124
+ settings/+page.svelte # /settings
125
+ ```
126
+
127
+ ## Load Functions
128
+
129
+ ### Server Load (+page.server.ts)
130
+
131
+ Runs only on the server. Has access to database, secrets, and server-only modules.
132
+
133
+ ```typescript
134
+ // src/routes/blog/+page.server.ts
135
+ import type { PageServerLoad } from './$types';
136
+ import { db } from '$lib/server/db';
137
+
138
+ export const load: PageServerLoad = async ({ url, locals }) => {
139
+ const page = parseInt(url.searchParams.get('page') ?? '1');
140
+ const perPage = 20;
141
+
142
+ const [posts, total] = await Promise.all([
143
+ db.post.findMany({
144
+ where: { published: true },
145
+ skip: (page - 1) * perPage,
146
+ take: perPage,
147
+ orderBy: { createdAt: 'desc' },
148
+ }),
149
+ db.post.count({ where: { published: true } }),
150
+ ]);
151
+
152
+ return {
153
+ posts,
154
+ total,
155
+ page,
156
+ perPage,
157
+ user: locals.user, // set in hooks.server.ts
158
+ };
159
+ };
160
+ ```
161
+
162
+ ### Universal Load (+page.ts)
163
+
164
+ Runs on both server (SSR) and client (navigation). Cannot use server-only modules.
165
+
166
+ ```typescript
167
+ // src/routes/blog/[slug]/+page.ts
168
+ import type { PageLoad } from './$types';
169
+
170
+ export const load: PageLoad = async ({ params, fetch }) => {
171
+ // This `fetch` is enhanced — deduplicates during SSR, includes cookies
172
+ const response = await fetch(`/api/posts/${params.slug}`);
173
+
174
+ if (!response.ok) {
175
+ throw error(404, 'Post not found');
176
+ }
177
+
178
+ const post = await response.json();
179
+ return { post };
180
+ };
181
+ ```
182
+
183
+ ### Layout Load
184
+
185
+ ```typescript
186
+ // src/routes/+layout.server.ts
187
+ import type { LayoutServerLoad } from './$types';
188
+
189
+ export const load: LayoutServerLoad = async ({ locals }) => {
190
+ return {
191
+ user: locals.user ?? null,
192
+ };
193
+ };
194
+ ```
195
+
196
+ **Data flow**: Layout data is available to all child pages. If the layout returns `{ user }`, every page under it can access `data.user`.
197
+
198
+ ### Streaming with Promises
199
+
200
+ ```typescript
201
+ // src/routes/dashboard/+page.server.ts
202
+ import type { PageServerLoad } from './$types';
203
+
204
+ export const load: PageServerLoad = async () => {
205
+ return {
206
+ // This resolves immediately
207
+ quickData: await db.getSummary(),
208
+ // This streams to the client as it resolves
209
+ slowData: db.getDetailedReport(),
210
+ };
211
+ };
212
+ ```
213
+
214
+ ```svelte
215
+ <!-- src/routes/dashboard/+page.svelte -->
216
+ <script lang="ts">
217
+ import type { PageData } from './$types';
218
+ let { data }: { data: PageData } = $props();
219
+ </script>
220
+
221
+ <h1>Summary: {data.quickData.title}</h1>
222
+
223
+ {#await data.slowData}
224
+ <p>Loading detailed report...</p>
225
+ {:then report}
226
+ <Report data={report} />
227
+ {:catch error}
228
+ <p>Failed to load report: {error.message}</p>
229
+ {/await}
230
+ ```
231
+
232
+ ## Form Actions
233
+
234
+ ### Server-Side Actions
235
+
236
+ ```typescript
237
+ // src/routes/blog/new/+page.server.ts
238
+ import type { Actions, PageServerLoad } from './$types';
239
+ import { fail, redirect } from '@sveltejs/kit';
240
+ import { z } from 'zod';
241
+ import { db } from '$lib/server/db';
242
+
243
+ const PostSchema = z.object({
244
+ title: z.string().min(1, 'Title is required').max(200),
245
+ content: z.string().min(1, 'Content is required').max(50000),
246
+ published: z.coerce.boolean().default(false),
247
+ });
248
+
249
+ export const load: PageServerLoad = async ({ locals }) => {
250
+ if (!locals.user) throw redirect(303, '/login');
251
+ return {};
252
+ };
253
+
254
+ export const actions: Actions = {
255
+ default: async ({ request, locals }) => {
256
+ if (!locals.user) return fail(401, { error: 'Unauthorized' });
257
+
258
+ const formData = await request.formData();
259
+ const raw = Object.fromEntries(formData);
260
+
261
+ const result = PostSchema.safeParse(raw);
262
+ if (!result.success) {
263
+ return fail(422, {
264
+ data: raw,
265
+ errors: result.error.flatten().fieldErrors,
266
+ });
267
+ }
268
+
269
+ const post = await db.post.create({
270
+ data: {
271
+ ...result.data,
272
+ authorId: locals.user.id,
273
+ },
274
+ });
275
+
276
+ throw redirect(303, `/blog/${post.slug}`);
277
+ },
278
+ };
279
+ ```
280
+
281
+ ### Form Component
282
+
283
+ ```svelte
284
+ <!-- src/routes/blog/new/+page.svelte -->
285
+ <script lang="ts">
286
+ import type { ActionData } from './$types';
287
+ import { enhance } from '$app/forms';
288
+
289
+ let { form }: { form: ActionData } = $props();
290
+ </script>
291
+
292
+ <form method="POST" use:enhance>
293
+ <div>
294
+ <label for="title">Title</label>
295
+ <input id="title" name="title" value={form?.data?.title ?? ''} />
296
+ {#if form?.errors?.title}
297
+ <p class="error">{form.errors.title[0]}</p>
298
+ {/if}
299
+ </div>
300
+
301
+ <div>
302
+ <label for="content">Content</label>
303
+ <textarea id="content" name="content">{form?.data?.content ?? ''}</textarea>
304
+ {#if form?.errors?.content}
305
+ <p class="error">{form.errors.content[0]}</p>
306
+ {/if}
307
+ </div>
308
+
309
+ <label>
310
+ <input type="checkbox" name="published" value="true" />
311
+ Publish immediately
312
+ </label>
313
+
314
+ <button type="submit">Create Post</button>
315
+ </form>
316
+ ```
317
+
318
+ ### Named Actions
319
+
320
+ ```typescript
321
+ // +page.server.ts
322
+ export const actions: Actions = {
323
+ create: async ({ request }) => { /* ... */ },
324
+ delete: async ({ request }) => { /* ... */ },
325
+ };
326
+ ```
327
+
328
+ ```svelte
329
+ <form method="POST" action="?/create" use:enhance>
330
+ <!-- create form -->
331
+ </form>
332
+
333
+ <form method="POST" action="?/delete" use:enhance>
334
+ <input type="hidden" name="id" value={post.id} />
335
+ <button type="submit">Delete</button>
336
+ </form>
337
+ ```
338
+
339
+ ### Progressive Enhancement
340
+
341
+ ```svelte
342
+ <script lang="ts">
343
+ import { enhance } from '$app/forms';
344
+
345
+ let loading = $state(false);
346
+ </script>
347
+
348
+ <form
349
+ method="POST"
350
+ use:enhance={() => {
351
+ loading = true;
352
+ return async ({ update }) => {
353
+ loading = false;
354
+ await update(); // update form state from server response
355
+ };
356
+ }}
357
+ >
358
+ <button type="submit" disabled={loading}>
359
+ {loading ? 'Saving...' : 'Save'}
360
+ </button>
361
+ </form>
362
+ ```
363
+
364
+ ## Server Hooks
365
+
366
+ ```typescript
367
+ // src/hooks.server.ts
368
+ import type { Handle, HandleServerError, HandleFetch } from '@sveltejs/kit';
369
+ import { sequence } from '@sveltejs/kit/hooks';
370
+ import { db } from '$lib/server/db';
371
+
372
+ // Authentication hook
373
+ const auth: Handle = async ({ event, resolve }) => {
374
+ const sessionId = event.cookies.get('session_id');
375
+
376
+ if (sessionId) {
377
+ const session = await db.session.findUnique({
378
+ where: { id: sessionId },
379
+ include: { user: true },
380
+ });
381
+
382
+ if (session && session.expiresAt > new Date()) {
383
+ event.locals.user = session.user;
384
+ } else {
385
+ event.cookies.delete('session_id', { path: '/' });
386
+ }
387
+ }
388
+
389
+ return resolve(event);
390
+ };
391
+
392
+ // Security headers hook
393
+ const securityHeaders: Handle = async ({ event, resolve }) => {
394
+ const response = await resolve(event);
395
+
396
+ response.headers.set('X-Frame-Options', 'DENY');
397
+ response.headers.set('X-Content-Type-Options', 'nosniff');
398
+ response.headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
399
+ response.headers.set(
400
+ 'Strict-Transport-Security',
401
+ 'max-age=63072000; includeSubDomains; preload'
402
+ );
403
+
404
+ return response;
405
+ };
406
+
407
+ // Compose hooks in order
408
+ export const handle: Handle = sequence(auth, securityHeaders);
409
+
410
+ // Global error handler (server-side)
411
+ export const handleError: HandleServerError = async ({ error, event, status, message }) => {
412
+ const errorId = crypto.randomUUID();
413
+ console.error(`Error ${errorId}:`, error);
414
+
415
+ return {
416
+ message: 'An unexpected error occurred',
417
+ errorId,
418
+ };
419
+ };
420
+
421
+ // Custom fetch behavior (for load functions)
422
+ export const handleFetch: HandleFetch = async ({ request, fetch }) => {
423
+ // Rewrite internal API calls to bypass network
424
+ if (request.url.startsWith('https://api.example.com/')) {
425
+ request = new Request(
426
+ request.url.replace('https://api.example.com/', 'http://localhost:3000/api/'),
427
+ request
428
+ );
429
+ }
430
+ return fetch(request);
431
+ };
432
+ ```
433
+
434
+ ### App.d.ts (Type Declarations)
435
+
436
+ ```typescript
437
+ // src/app.d.ts
438
+ declare global {
439
+ namespace App {
440
+ interface Error {
441
+ message: string;
442
+ errorId?: string;
443
+ }
444
+ interface Locals {
445
+ user: {
446
+ id: string;
447
+ email: string;
448
+ name: string;
449
+ role: 'admin' | 'user';
450
+ } | null;
451
+ }
452
+ interface PageData {
453
+ user: App.Locals['user'];
454
+ }
455
+ interface Platform {}
456
+ }
457
+ }
458
+
459
+ export {};
460
+ ```
461
+
462
+ ## API Endpoints
463
+
464
+ ```typescript
465
+ // src/routes/api/posts/+server.ts
466
+ import type { RequestHandler } from './$types';
467
+ import { json, error } from '@sveltejs/kit';
468
+ import { db } from '$lib/server/db';
469
+
470
+ export const GET: RequestHandler = async ({ url }) => {
471
+ const page = parseInt(url.searchParams.get('page') ?? '1');
472
+ const posts = await db.post.findMany({
473
+ skip: (page - 1) * 20,
474
+ take: 20,
475
+ });
476
+ return json(posts);
477
+ };
478
+
479
+ export const POST: RequestHandler = async ({ request, locals }) => {
480
+ if (!locals.user) {
481
+ throw error(401, 'Unauthorized');
482
+ }
483
+
484
+ const body = await request.json();
485
+ const post = await db.post.create({
486
+ data: { ...body, authorId: locals.user.id },
487
+ });
488
+
489
+ return json(post, { status: 201 });
490
+ };
491
+ ```
492
+
493
+ ## Page Options
494
+
495
+ ```typescript
496
+ // Per-page options in +page.ts or +page.server.ts
497
+ export const prerender = true; // Static HTML at build time
498
+ export const ssr = true; // Server-side render (default: true)
499
+ export const csr = true; // Client-side render (default: true)
500
+ export const trailingSlash = 'never'; // 'always' | 'never' | 'ignore'
501
+ ```
502
+
503
+ | Combination | Result |
504
+ |------------|--------|
505
+ | `prerender = true` | Static HTML generated at build time |
506
+ | `ssr = true, csr = true` | SSR + hydrate on client (default) |
507
+ | `ssr = false, csr = true` | SPA mode (client-only rendering) |
508
+ | `ssr = true, csr = false` | Server-only (no JavaScript sent to client) |
509
+
510
+ ## Environment Variables
511
+
512
+ ```typescript
513
+ // Static (replaced at build time) — must not contain secrets
514
+ import { PUBLIC_API_URL } from '$env/static/public';
515
+
516
+ // Static (replaced at build time) — server-only
517
+ import { DATABASE_URL, JWT_SECRET } from '$env/static/private';
518
+
519
+ // Dynamic (read at runtime) — for adapters that support it
520
+ import { env } from '$env/dynamic/private';
521
+ const dbUrl = env.DATABASE_URL;
522
+
523
+ import { env as publicEnv } from '$env/dynamic/public';
524
+ const apiUrl = publicEnv.PUBLIC_API_URL;
525
+ ```
526
+
527
+ **CRITICAL**: `$env/static/private` and `$env/dynamic/private` can only be imported in server-side files (`+page.server.ts`, `+server.ts`, `hooks.server.ts`, `$lib/server/`). Importing them in client code causes a build error.
528
+
529
+ ## Error Handling
530
+
531
+ ### Error Pages
532
+
533
+ ```svelte
534
+ <!-- src/routes/+error.svelte -->
535
+ <script lang="ts">
536
+ import { page } from '$app/stores';
537
+ </script>
538
+
539
+ <h1>{$page.status}</h1>
540
+ <p>{$page.error?.message}</p>
541
+
542
+ {#if $page.status === 404}
543
+ <a href="/">Go home</a>
544
+ {/if}
545
+ ```
546
+
547
+ ### Throwing Errors
548
+
549
+ ```typescript
550
+ import { error, redirect } from '@sveltejs/kit';
551
+
552
+ // In load functions or actions
553
+ throw error(404, 'Not found');
554
+ throw error(403, { message: 'Forbidden', errorId: 'abc-123' });
555
+ throw redirect(303, '/login');
556
+ ```
557
+
558
+ ## Adapter Configuration
559
+
560
+ ```javascript
561
+ // svelte.config.js
562
+ import adapter from '@sveltejs/adapter-auto'; // auto-detect platform
563
+ // import adapter from '@sveltejs/adapter-node';
564
+ // import adapter from '@sveltejs/adapter-vercel';
565
+ // import adapter from '@sveltejs/adapter-cloudflare';
566
+ // import adapter from '@sveltejs/adapter-static';
567
+ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
568
+
569
+ /** @type {import('@sveltejs/kit').Config} */
570
+ const config = {
571
+ preprocess: vitePreprocess(),
572
+
573
+ kit: {
574
+ adapter: adapter({
575
+ // Node adapter options
576
+ // out: 'build',
577
+ // precompress: true,
578
+ // envPrefix: '',
579
+ }),
580
+ alias: {
581
+ $components: 'src/lib/components',
582
+ $stores: 'src/lib/stores',
583
+ },
584
+ csrf: {
585
+ checkOrigin: true, // default: true — protects against CSRF
586
+ },
587
+ },
588
+ };
589
+
590
+ export default config;
591
+ ```
592
+
593
+ | Adapter | Platform | Features |
594
+ |---------|----------|----------|
595
+ | `adapter-auto` | Auto-detect | Detects Vercel, Netlify, Cloudflare |
596
+ | `adapter-node` | Node.js server | Long-running server, WebSockets |
597
+ | `adapter-vercel` | Vercel | Serverless, edge, ISR |
598
+ | `adapter-cloudflare` | Cloudflare Pages | Workers, KV, D1 |
599
+ | `adapter-static` | Any static host | Full prerendering, no server |
600
+
601
+ ## Anti-Patterns
602
+
603
+ | Anti-Pattern | Correct Approach |
604
+ |-------------|-----------------|
605
+ | Importing `$env/static/private` in shared code | Keep private env in `$lib/server/` or server-side files only |
606
+ | Using `fetch('/api/...')` in server load functions | Call database directly; use `fetch` only for external APIs |
607
+ | Putting auth checks in `+page.svelte` only | Check auth in `+page.server.ts` or `hooks.server.ts`, redirect early |
608
+ | Not using `use:enhance` on forms | Always use progressive enhancement for better UX |
609
+ | Returning non-serializable data from load | Load functions must return plain objects (no class instances, functions) |
610
+ | Using `+page.ts` for database access | Use `+page.server.ts` for anything that touches secrets or databases |
611
+ | Large `hooks.server.ts` without `sequence()` | Split hooks into focused functions, compose with `sequence()` |
612
+ | Ignoring the `+error.svelte` boundary | Always provide error pages at root and nested layout levels |
613
+ | Not typing `app.d.ts` | Always define `Locals`, `PageData`, and `Error` interfaces |
614
+ | Using `onMount` for data fetching | Use load functions; `onMount` runs only on client, loses SSR benefits |