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,513 @@
1
+ # API Design Principles Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ ## Core Concepts
6
+
7
+ ### 1. RESTful Design Principles
8
+
9
+ **Resource-Oriented Architecture**
10
+
11
+ - Resources are nouns (users, orders, products), not verbs
12
+ - Use HTTP methods for actions (GET, POST, PUT, PATCH, DELETE)
13
+ - URLs represent resource hierarchies
14
+ - Consistent naming conventions
15
+
16
+ **HTTP Methods Semantics:**
17
+
18
+ - `GET`: Retrieve resources (idempotent, safe)
19
+ - `POST`: Create new resources
20
+ - `PUT`: Replace entire resource (idempotent)
21
+ - `PATCH`: Partial resource updates
22
+ - `DELETE`: Remove resources (idempotent)
23
+
24
+ ### 2. GraphQL Design Principles
25
+
26
+ **Schema-First Development**
27
+
28
+ - Types define your domain model
29
+ - Queries for reading data
30
+ - Mutations for modifying data
31
+ - Subscriptions for real-time updates
32
+
33
+ **Query Structure:**
34
+
35
+ - Clients request exactly what they need
36
+ - Single endpoint, multiple operations
37
+ - Strongly typed schema
38
+ - Introspection built-in
39
+
40
+ ### 3. API Versioning Strategies
41
+
42
+ **URL Versioning:**
43
+
44
+ ```
45
+ /api/v1/users
46
+ /api/v2/users
47
+ ```
48
+
49
+ **Header Versioning:**
50
+
51
+ ```
52
+ Accept: application/vnd.api+json; version=1
53
+ ```
54
+
55
+ **Query Parameter Versioning:**
56
+
57
+ ```
58
+ /api/users?version=1
59
+ ```
60
+
61
+ ## REST API Design Patterns
62
+
63
+ ### Pattern 1: Resource Collection Design
64
+
65
+ ```python
66
+ # Good: Resource-oriented endpoints
67
+ GET /api/users # List users (with pagination)
68
+ POST /api/users # Create user
69
+ GET /api/users/{id} # Get specific user
70
+ PUT /api/users/{id} # Replace user
71
+ PATCH /api/users/{id} # Update user fields
72
+ DELETE /api/users/{id} # Delete user
73
+
74
+ # Nested resources
75
+ GET /api/users/{id}/orders # Get user's orders
76
+ POST /api/users/{id}/orders # Create order for user
77
+
78
+ # Bad: Action-oriented endpoints (avoid)
79
+ POST /api/createUser
80
+ POST /api/getUserById
81
+ POST /api/deleteUser
82
+ ```
83
+
84
+ ### Pattern 2: Pagination and Filtering
85
+
86
+ ```python
87
+ from typing import List, Optional
88
+ from pydantic import BaseModel, Field
89
+
90
+ class PaginationParams(BaseModel):
91
+ page: int = Field(1, ge=1, description="Page number")
92
+ page_size: int = Field(20, ge=1, le=100, description="Items per page")
93
+
94
+ class FilterParams(BaseModel):
95
+ status: Optional[str] = None
96
+ created_after: Optional[str] = None
97
+ search: Optional[str] = None
98
+
99
+ class PaginatedResponse(BaseModel):
100
+ items: List[dict]
101
+ total: int
102
+ page: int
103
+ page_size: int
104
+ pages: int
105
+
106
+ @property
107
+ def has_next(self) -> bool:
108
+ return self.page < self.pages
109
+
110
+ @property
111
+ def has_prev(self) -> bool:
112
+ return self.page > 1
113
+
114
+ # FastAPI endpoint example
115
+ from fastapi import FastAPI, Query, Depends
116
+
117
+ app = FastAPI()
118
+
119
+ @app.get("/api/users", response_model=PaginatedResponse)
120
+ async def list_users(
121
+ page: int = Query(1, ge=1),
122
+ page_size: int = Query(20, ge=1, le=100),
123
+ status: Optional[str] = Query(None),
124
+ search: Optional[str] = Query(None)
125
+ ):
126
+ # Apply filters
127
+ query = build_query(status=status, search=search)
128
+
129
+ # Count total
130
+ total = await count_users(query)
131
+
132
+ # Fetch page
133
+ offset = (page - 1) * page_size
134
+ users = await fetch_users(query, limit=page_size, offset=offset)
135
+
136
+ return PaginatedResponse(
137
+ items=users,
138
+ total=total,
139
+ page=page,
140
+ page_size=page_size,
141
+ pages=(total + page_size - 1) // page_size
142
+ )
143
+ ```
144
+
145
+ ### Pattern 3: Error Handling and Status Codes
146
+
147
+ ```python
148
+ from fastapi import HTTPException, status
149
+ from pydantic import BaseModel
150
+
151
+ class ErrorResponse(BaseModel):
152
+ error: str
153
+ message: str
154
+ details: Optional[dict] = None
155
+ timestamp: str
156
+ path: str
157
+
158
+ class ValidationErrorDetail(BaseModel):
159
+ field: str
160
+ message: str
161
+ value: Any
162
+
163
+ # Consistent error responses
164
+ STATUS_CODES = {
165
+ "success": 200,
166
+ "created": 201,
167
+ "no_content": 204,
168
+ "bad_request": 400,
169
+ "unauthorized": 401,
170
+ "forbidden": 403,
171
+ "not_found": 404,
172
+ "conflict": 409,
173
+ "unprocessable": 422,
174
+ "internal_error": 500
175
+ }
176
+
177
+ def raise_not_found(resource: str, id: str):
178
+ raise HTTPException(
179
+ status_code=status.HTTP_404_NOT_FOUND,
180
+ detail={
181
+ "error": "NotFound",
182
+ "message": f"{resource} not found",
183
+ "details": {"id": id}
184
+ }
185
+ )
186
+
187
+ def raise_validation_error(errors: List[ValidationErrorDetail]):
188
+ raise HTTPException(
189
+ status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
190
+ detail={
191
+ "error": "ValidationError",
192
+ "message": "Request validation failed",
193
+ "details": {"errors": [e.dict() for e in errors]}
194
+ }
195
+ )
196
+
197
+ # Example usage
198
+ @app.get("/api/users/{user_id}")
199
+ async def get_user(user_id: str):
200
+ user = await fetch_user(user_id)
201
+ if not user:
202
+ raise_not_found("User", user_id)
203
+ return user
204
+ ```
205
+
206
+ ### Pattern 4: HATEOAS (Hypermedia as the Engine of Application State)
207
+
208
+ ```python
209
+ class UserResponse(BaseModel):
210
+ id: str
211
+ name: str
212
+ email: str
213
+ _links: dict
214
+
215
+ @classmethod
216
+ def from_user(cls, user: User, base_url: str):
217
+ return cls(
218
+ id=user.id,
219
+ name=user.name,
220
+ email=user.email,
221
+ _links={
222
+ "self": {"href": f"{base_url}/api/users/{user.id}"},
223
+ "orders": {"href": f"{base_url}/api/users/{user.id}/orders"},
224
+ "update": {
225
+ "href": f"{base_url}/api/users/{user.id}",
226
+ "method": "PATCH"
227
+ },
228
+ "delete": {
229
+ "href": f"{base_url}/api/users/{user.id}",
230
+ "method": "DELETE"
231
+ }
232
+ }
233
+ )
234
+ ```
235
+
236
+ ## GraphQL Design Patterns
237
+
238
+ ### Pattern 1: Schema Design
239
+
240
+ ```graphql
241
+ # schema.graphql
242
+
243
+ # Clear type definitions
244
+ type User {
245
+ id: ID!
246
+ email: String!
247
+ name: String!
248
+ createdAt: DateTime!
249
+
250
+ # Relationships
251
+ orders(first: Int = 20, after: String, status: OrderStatus): OrderConnection!
252
+
253
+ profile: UserProfile
254
+ }
255
+
256
+ type Order {
257
+ id: ID!
258
+ status: OrderStatus!
259
+ total: Money!
260
+ items: [OrderItem!]!
261
+ createdAt: DateTime!
262
+
263
+ # Back-reference
264
+ user: User!
265
+ }
266
+
267
+ # Pagination pattern (Relay-style)
268
+ type OrderConnection {
269
+ edges: [OrderEdge!]!
270
+ pageInfo: PageInfo!
271
+ totalCount: Int!
272
+ }
273
+
274
+ type OrderEdge {
275
+ node: Order!
276
+ cursor: String!
277
+ }
278
+
279
+ type PageInfo {
280
+ hasNextPage: Boolean!
281
+ hasPreviousPage: Boolean!
282
+ startCursor: String
283
+ endCursor: String
284
+ }
285
+
286
+ # Enums for type safety
287
+ enum OrderStatus {
288
+ PENDING
289
+ CONFIRMED
290
+ SHIPPED
291
+ DELIVERED
292
+ CANCELLED
293
+ }
294
+
295
+ # Custom scalars
296
+ scalar DateTime
297
+ scalar Money
298
+
299
+ # Query root
300
+ type Query {
301
+ user(id: ID!): User
302
+ users(first: Int = 20, after: String, search: String): UserConnection!
303
+
304
+ order(id: ID!): Order
305
+ }
306
+
307
+ # Mutation root
308
+ type Mutation {
309
+ createUser(input: CreateUserInput!): CreateUserPayload!
310
+ updateUser(input: UpdateUserInput!): UpdateUserPayload!
311
+ deleteUser(id: ID!): DeleteUserPayload!
312
+
313
+ createOrder(input: CreateOrderInput!): CreateOrderPayload!
314
+ }
315
+
316
+ # Input types for mutations
317
+ input CreateUserInput {
318
+ email: String!
319
+ name: String!
320
+ password: String!
321
+ }
322
+
323
+ # Payload types for mutations
324
+ type CreateUserPayload {
325
+ user: User
326
+ errors: [Error!]
327
+ }
328
+
329
+ type Error {
330
+ field: String
331
+ message: String!
332
+ }
333
+ ```
334
+
335
+ ### Pattern 2: Resolver Design
336
+
337
+ ```python
338
+ from typing import Optional, List
339
+ from ariadne import QueryType, MutationType, ObjectType
340
+ from dataclasses import dataclass
341
+
342
+ query = QueryType()
343
+ mutation = MutationType()
344
+ user_type = ObjectType("User")
345
+
346
+ @query.field("user")
347
+ async def resolve_user(obj, info, id: str) -> Optional[dict]:
348
+ """Resolve single user by ID."""
349
+ return await fetch_user_by_id(id)
350
+
351
+ @query.field("users")
352
+ async def resolve_users(
353
+ obj,
354
+ info,
355
+ first: int = 20,
356
+ after: Optional[str] = None,
357
+ search: Optional[str] = None
358
+ ) -> dict:
359
+ """Resolve paginated user list."""
360
+ # Decode cursor
361
+ offset = decode_cursor(after) if after else 0
362
+
363
+ # Fetch users
364
+ users = await fetch_users(
365
+ limit=first + 1, # Fetch one extra to check hasNextPage
366
+ offset=offset,
367
+ search=search
368
+ )
369
+
370
+ # Pagination
371
+ has_next = len(users) > first
372
+ if has_next:
373
+ users = users[:first]
374
+
375
+ edges = [
376
+ {
377
+ "node": user,
378
+ "cursor": encode_cursor(offset + i)
379
+ }
380
+ for i, user in enumerate(users)
381
+ ]
382
+
383
+ return {
384
+ "edges": edges,
385
+ "pageInfo": {
386
+ "hasNextPage": has_next,
387
+ "hasPreviousPage": offset > 0,
388
+ "startCursor": edges[0]["cursor"] if edges else None,
389
+ "endCursor": edges[-1]["cursor"] if edges else None
390
+ },
391
+ "totalCount": await count_users(search=search)
392
+ }
393
+
394
+ @user_type.field("orders")
395
+ async def resolve_user_orders(user: dict, info, first: int = 20) -> dict:
396
+ """Resolve user's orders (N+1 prevention with DataLoader)."""
397
+ # Use DataLoader to batch requests
398
+ loader = info.context["loaders"]["orders_by_user"]
399
+ orders = await loader.load(user["id"])
400
+
401
+ return paginate_orders(orders, first)
402
+
403
+ @mutation.field("createUser")
404
+ async def resolve_create_user(obj, info, input: dict) -> dict:
405
+ """Create new user."""
406
+ try:
407
+ # Validate input
408
+ validate_user_input(input)
409
+
410
+ # Create user
411
+ user = await create_user(
412
+ email=input["email"],
413
+ name=input["name"],
414
+ password=hash_password(input["password"])
415
+ )
416
+
417
+ return {
418
+ "user": user,
419
+ "errors": []
420
+ }
421
+ except ValidationError as e:
422
+ return {
423
+ "user": None,
424
+ "errors": [{"field": e.field, "message": e.message}]
425
+ }
426
+ ```
427
+
428
+ ### Pattern 3: DataLoader (N+1 Problem Prevention)
429
+
430
+ ```python
431
+ from aiodataloader import DataLoader
432
+ from typing import List, Optional
433
+
434
+ class UserLoader(DataLoader):
435
+ """Batch load users by ID."""
436
+
437
+ async def batch_load_fn(self, user_ids: List[str]) -> List[Optional[dict]]:
438
+ """Load multiple users in single query."""
439
+ users = await fetch_users_by_ids(user_ids)
440
+
441
+ # Map results back to input order
442
+ user_map = {user["id"]: user for user in users}
443
+ return [user_map.get(user_id) for user_id in user_ids]
444
+
445
+ class OrdersByUserLoader(DataLoader):
446
+ """Batch load orders by user ID."""
447
+
448
+ async def batch_load_fn(self, user_ids: List[str]) -> List[List[dict]]:
449
+ """Load orders for multiple users in single query."""
450
+ orders = await fetch_orders_by_user_ids(user_ids)
451
+
452
+ # Group orders by user_id
453
+ orders_by_user = {}
454
+ for order in orders:
455
+ user_id = order["user_id"]
456
+ if user_id not in orders_by_user:
457
+ orders_by_user[user_id] = []
458
+ orders_by_user[user_id].append(order)
459
+
460
+ # Return in input order
461
+ return [orders_by_user.get(user_id, []) for user_id in user_ids]
462
+
463
+ # Context setup
464
+ def create_context():
465
+ return {
466
+ "loaders": {
467
+ "user": UserLoader(),
468
+ "orders_by_user": OrdersByUserLoader()
469
+ }
470
+ }
471
+ ```
472
+
473
+ ## Best Practices
474
+
475
+ ### REST APIs
476
+
477
+ 1. **Consistent Naming**: Use plural nouns for collections (`/users`, not `/user`)
478
+ 2. **Stateless**: Each request contains all necessary information
479
+ 3. **Use HTTP Status Codes Correctly**: 2xx success, 4xx client errors, 5xx server errors
480
+ 4. **Version Your API**: Plan for breaking changes from day one
481
+ 5. **Pagination**: Always paginate large collections
482
+ 6. **Rate Limiting**: Protect your API with rate limits
483
+ 7. **Documentation**: Use OpenAPI/Swagger for interactive docs
484
+
485
+ ### GraphQL APIs
486
+
487
+ 1. **Schema First**: Design schema before writing resolvers
488
+ 2. **Avoid N+1**: Use DataLoaders for efficient data fetching
489
+ 3. **Input Validation**: Validate at schema and resolver levels
490
+ 4. **Error Handling**: Return structured errors in mutation payloads
491
+ 5. **Pagination**: Use cursor-based pagination (Relay spec)
492
+ 6. **Deprecation**: Use `@deprecated` directive for gradual migration
493
+ 7. **Monitoring**: Track query complexity and execution time
494
+
495
+ ## Common Pitfalls
496
+
497
+ - **Over-fetching/Under-fetching (REST)**: Fixed in GraphQL but requires DataLoaders
498
+ - **Breaking Changes**: Version APIs or use deprecation strategies
499
+ - **Inconsistent Error Formats**: Standardize error responses
500
+ - **Missing Rate Limits**: APIs without limits are vulnerable to abuse
501
+ - **Poor Documentation**: Undocumented APIs frustrate developers
502
+ - **Ignoring HTTP Semantics**: POST for idempotent operations breaks expectations
503
+ - **Tight Coupling**: API structure shouldn't mirror database schema
504
+
505
+ ## Resources
506
+
507
+ - **references/rest-best-practices.md**: Comprehensive REST API design guide
508
+ - **references/graphql-schema-design.md**: GraphQL schema patterns and anti-patterns
509
+ - **references/api-versioning-strategies.md**: Versioning approaches and migration paths
510
+ - **assets/rest-api-template.py**: FastAPI REST API template
511
+ - **assets/graphql-schema-template.graphql**: Complete GraphQL schema example
512
+ - **assets/api-design-checklist.md**: Pre-implementation review checklist
513
+ - **scripts/openapi-generator.py**: Generate OpenAPI specs from code