@ruaruababa/vibe-kit 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 (462) hide show
  1. package/CATALOG.md +317 -0
  2. package/README.md +121 -0
  3. package/aliases.json +65 -0
  4. package/bin/vibe.js +2 -0
  5. package/bundles.json +265 -0
  6. package/catalog.json +1560 -0
  7. package/dist/antigravity-skills/bin/cli.js +438 -0
  8. package/dist/antigravity-skills/lib/skill-utils.js +158 -0
  9. package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
  10. package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
  11. package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
  12. package/dist/bin/vibe.js +2 -0
  13. package/dist/dist/src/cli/index.js +26 -0
  14. package/dist/lib/skill-utils.js +158 -0
  15. package/dist/scripts/build-catalog.js +50 -0
  16. package/dist/scripts/normalize-frontmatter.js +144 -0
  17. package/dist/scripts/validate-skills.js +56 -0
  18. package/dist/src/cli/index.js +146 -0
  19. package/dist/src/types/index.js +13 -0
  20. package/dist/src/utils/fs.js +1 -0
  21. package/package.json +43 -0
  22. package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
  23. package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
  24. package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
  25. package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
  26. package/skills/agent-orchestrator/SKILL.md +24 -0
  27. package/skills/ai-engineer/SKILL.md +171 -0
  28. package/skills/airflow-dag-patterns/SKILL.md +41 -0
  29. package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
  30. package/skills/angular-migration/SKILL.md +428 -0
  31. package/skills/anti-reversing-techniques/SKILL.md +42 -0
  32. package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
  33. package/skills/api-design-principles/SKILL.md +37 -0
  34. package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  35. package/skills/api-design-principles/assets/rest-api-template.py +182 -0
  36. package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  37. package/skills/api-design-principles/references/rest-best-practices.md +408 -0
  38. package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  39. package/skills/api-documenter/SKILL.md +184 -0
  40. package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
  41. package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
  42. package/skills/application-performance-performance-optimization/SKILL.md +154 -0
  43. package/skills/architect-review/SKILL.md +174 -0
  44. package/skills/architecture-decision-records/SKILL.md +441 -0
  45. package/skills/architecture-patterns/SKILL.md +37 -0
  46. package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
  47. package/skills/arm-cortex-expert/SKILL.md +306 -0
  48. package/skills/async-python-patterns/SKILL.md +39 -0
  49. package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
  50. package/skills/attack-tree-construction/SKILL.md +38 -0
  51. package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
  52. package/skills/auth-implementation-patterns/SKILL.md +39 -0
  53. package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
  54. package/skills/backend-architect/SKILL.md +333 -0
  55. package/skills/backend-development-feature-development/SKILL.md +180 -0
  56. package/skills/backend-security-coder/SKILL.md +156 -0
  57. package/skills/backtesting-frameworks/SKILL.md +39 -0
  58. package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
  59. package/skills/bash-defensive-patterns/SKILL.md +43 -0
  60. package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
  61. package/skills/bash-pro/SKILL.md +310 -0
  62. package/skills/bats-testing-patterns/SKILL.md +34 -0
  63. package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
  64. package/skills/bazel-build-optimization/SKILL.md +397 -0
  65. package/skills/billing-automation/SKILL.md +42 -0
  66. package/skills/billing-automation/resources/implementation-playbook.md +544 -0
  67. package/skills/binary-analysis-patterns/SKILL.md +450 -0
  68. package/skills/blockchain-developer/SKILL.md +208 -0
  69. package/skills/business-analyst/SKILL.md +182 -0
  70. package/skills/c-pro/SKILL.md +56 -0
  71. package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
  72. package/skills/c4-code/SKILL.md +244 -0
  73. package/skills/c4-component/SKILL.md +153 -0
  74. package/skills/c4-container/SKILL.md +171 -0
  75. package/skills/c4-context/SKILL.md +150 -0
  76. package/skills/changelog-automation/SKILL.md +38 -0
  77. package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
  78. package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
  79. package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
  80. package/skills/clean-markdown/SKILL.md +23 -0
  81. package/skills/cloud-architect/SKILL.md +135 -0
  82. package/skills/code-documentation-code-explain/SKILL.md +46 -0
  83. package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
  84. package/skills/code-documentation-doc-generate/SKILL.md +48 -0
  85. package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
  86. package/skills/code-refactoring-context-restore/SKILL.md +179 -0
  87. package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
  88. package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
  89. package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
  90. package/skills/code-review-ai-ai-review/SKILL.md +450 -0
  91. package/skills/code-review-excellence/SKILL.md +40 -0
  92. package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
  93. package/skills/code-reviewer/SKILL.md +178 -0
  94. package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
  95. package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
  96. package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
  97. package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
  98. package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
  99. package/skills/competitive-landscape/SKILL.md +34 -0
  100. package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
  101. package/skills/comprehensive-review-full-review/SKILL.md +146 -0
  102. package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
  103. package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
  104. package/skills/conductor-implement/SKILL.md +388 -0
  105. package/skills/conductor-manage/SKILL.md +39 -0
  106. package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
  107. package/skills/conductor-new-track/SKILL.md +433 -0
  108. package/skills/conductor-revert/SKILL.md +372 -0
  109. package/skills/conductor-setup/SKILL.md +426 -0
  110. package/skills/conductor-status/SKILL.md +338 -0
  111. package/skills/conductor-validator/SKILL.md +62 -0
  112. package/skills/content-marketer/SKILL.md +170 -0
  113. package/skills/context-driven-development/SKILL.md +400 -0
  114. package/skills/context-management-context-restore/SKILL.md +179 -0
  115. package/skills/context-management-context-save/SKILL.md +177 -0
  116. package/skills/context-manager/SKILL.md +185 -0
  117. package/skills/cost-optimization/SKILL.md +286 -0
  118. package/skills/cpp-pro/SKILL.md +59 -0
  119. package/skills/cqrs-implementation/SKILL.md +35 -0
  120. package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
  121. package/skills/csharp-pro/SKILL.md +59 -0
  122. package/skills/customer-support/SKILL.md +170 -0
  123. package/skills/data-engineer/SKILL.md +224 -0
  124. package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
  125. package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
  126. package/skills/data-quality-frameworks/SKILL.md +40 -0
  127. package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
  128. package/skills/data-scientist/SKILL.md +199 -0
  129. package/skills/data-storytelling/SKILL.md +465 -0
  130. package/skills/database-admin/SKILL.md +165 -0
  131. package/skills/database-architect/SKILL.md +268 -0
  132. package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
  133. package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
  134. package/skills/database-migration/SKILL.md +436 -0
  135. package/skills/database-migrations-migration-observability/SKILL.md +420 -0
  136. package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
  137. package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
  138. package/skills/database-optimizer/SKILL.md +167 -0
  139. package/skills/dbt-transformation-patterns/SKILL.md +34 -0
  140. package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
  141. package/skills/debugger/SKILL.md +49 -0
  142. package/skills/debugging-strategies/SKILL.md +34 -0
  143. package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
  144. package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
  145. package/skills/defi-protocol-templates/SKILL.md +466 -0
  146. package/skills/dependency-management-deps-audit/SKILL.md +44 -0
  147. package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
  148. package/skills/dependency-upgrade/SKILL.md +421 -0
  149. package/skills/deployment-engineer/SKILL.md +170 -0
  150. package/skills/deployment-pipeline-design/SKILL.md +371 -0
  151. package/skills/deployment-validation-config-validate/SKILL.md +496 -0
  152. package/skills/devops-troubleshooter/SKILL.md +161 -0
  153. package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
  154. package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
  155. package/skills/distributed-tracing/SKILL.md +450 -0
  156. package/skills/django-pro/SKILL.md +180 -0
  157. package/skills/docs-architect/SKILL.md +98 -0
  158. package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
  159. package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
  160. package/skills/dotnet-architect/SKILL.md +197 -0
  161. package/skills/dotnet-backend-patterns/SKILL.md +37 -0
  162. package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
  163. package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
  164. package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
  165. package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
  166. package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
  167. package/skills/dummy-skill/SKILL.md +5 -0
  168. package/skills/dx-optimizer/SKILL.md +83 -0
  169. package/skills/e2e-testing-patterns/SKILL.md +41 -0
  170. package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
  171. package/skills/elixir-pro/SKILL.md +59 -0
  172. package/skills/embedding-strategies/SKILL.md +491 -0
  173. package/skills/employment-contract-templates/SKILL.md +39 -0
  174. package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
  175. package/skills/error-debugging-error-analysis/SKILL.md +47 -0
  176. package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
  177. package/skills/error-debugging-error-trace/SKILL.md +43 -0
  178. package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
  179. package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
  180. package/skills/error-detective/SKILL.md +53 -0
  181. package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
  182. package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
  183. package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
  184. package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
  185. package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
  186. package/skills/error-handling-patterns/SKILL.md +35 -0
  187. package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
  188. package/skills/event-sourcing-architect/SKILL.md +58 -0
  189. package/skills/event-store-design/SKILL.md +449 -0
  190. package/skills/fastapi-pro/SKILL.md +192 -0
  191. package/skills/fastapi-templates/SKILL.md +32 -0
  192. package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
  193. package/skills/final-test/SKILL.md +5 -0
  194. package/skills/firmware-analyst/SKILL.md +320 -0
  195. package/skills/flutter-expert/SKILL.md +200 -0
  196. package/skills/framework-migration-code-migrate/SKILL.md +48 -0
  197. package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
  198. package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
  199. package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
  200. package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
  201. package/skills/frontend-developer/SKILL.md +171 -0
  202. package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
  203. package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
  204. package/skills/frontend-security-coder/SKILL.md +170 -0
  205. package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
  206. package/skills/gdpr-data-handling/SKILL.md +33 -0
  207. package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
  208. package/skills/git-advanced-workflows/SKILL.md +412 -0
  209. package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
  210. package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
  211. package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
  212. package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
  213. package/skills/github-actions-templates/SKILL.md +345 -0
  214. package/skills/gitlab-ci-patterns/SKILL.md +283 -0
  215. package/skills/gitops-workflow/SKILL.md +303 -0
  216. package/skills/gitops-workflow/references/argocd-setup.md +134 -0
  217. package/skills/gitops-workflow/references/sync-policies.md +131 -0
  218. package/skills/go-concurrency-patterns/SKILL.md +33 -0
  219. package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
  220. package/skills/godot-gdscript-patterns/SKILL.md +33 -0
  221. package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
  222. package/skills/golang-pro/SKILL.md +179 -0
  223. package/skills/grafana-dashboards/SKILL.md +381 -0
  224. package/skills/graphql-architect/SKILL.md +182 -0
  225. package/skills/haskell-pro/SKILL.md +56 -0
  226. package/skills/helm-chart-scaffolding/SKILL.md +34 -0
  227. package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
  228. package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
  229. package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
  230. package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
  231. package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
  232. package/skills/hr-pro/SKILL.md +126 -0
  233. package/skills/hybrid-cloud-architect/SKILL.md +168 -0
  234. package/skills/hybrid-cloud-networking/SKILL.md +238 -0
  235. package/skills/hybrid-search-implementation/SKILL.md +32 -0
  236. package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
  237. package/skills/incident-responder/SKILL.md +213 -0
  238. package/skills/incident-response-incident-response/SKILL.md +168 -0
  239. package/skills/incident-response-smart-fix/SKILL.md +29 -0
  240. package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
  241. package/skills/incident-runbook-templates/SKILL.md +395 -0
  242. package/skills/ios-developer/SKILL.md +219 -0
  243. package/skills/istio-traffic-management/SKILL.md +337 -0
  244. package/skills/java-pro/SKILL.md +177 -0
  245. package/skills/javascript-pro/SKILL.md +57 -0
  246. package/skills/javascript-testing-patterns/SKILL.md +35 -0
  247. package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
  248. package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
  249. package/skills/julia-pro/SKILL.md +209 -0
  250. package/skills/k8s-manifest-generator/SKILL.md +35 -0
  251. package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  252. package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  253. package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  254. package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
  255. package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
  256. package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
  257. package/skills/k8s-security-policies/SKILL.md +346 -0
  258. package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
  259. package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
  260. package/skills/kpi-dashboard-design/SKILL.md +440 -0
  261. package/skills/kubernetes-architect/SKILL.md +170 -0
  262. package/skills/langchain-architecture/SKILL.md +350 -0
  263. package/skills/legacy-modernizer/SKILL.md +53 -0
  264. package/skills/legal-advisor/SKILL.md +70 -0
  265. package/skills/linkerd-patterns/SKILL.md +321 -0
  266. package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
  267. package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
  268. package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
  269. package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
  270. package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
  271. package/skills/llm-evaluation/SKILL.md +483 -0
  272. package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
  273. package/skills/malware-analyst/SKILL.md +247 -0
  274. package/skills/market-sizing-analysis/SKILL.md +425 -0
  275. package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
  276. package/skills/market-sizing-analysis/references/data-sources.md +360 -0
  277. package/skills/memory-forensics/SKILL.md +491 -0
  278. package/skills/memory-safety-patterns/SKILL.md +33 -0
  279. package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
  280. package/skills/mermaid-expert/SKILL.md +59 -0
  281. package/skills/microservices-patterns/SKILL.md +35 -0
  282. package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
  283. package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
  284. package/skills/ml-engineer/SKILL.md +168 -0
  285. package/skills/ml-pipeline-workflow/SKILL.md +257 -0
  286. package/skills/mlops-engineer/SKILL.md +219 -0
  287. package/skills/mobile-developer/SKILL.md +205 -0
  288. package/skills/mobile-security-coder/SKILL.md +184 -0
  289. package/skills/modern-javascript-patterns/SKILL.md +35 -0
  290. package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
  291. package/skills/monorepo-architect/SKILL.md +61 -0
  292. package/skills/monorepo-management/SKILL.md +35 -0
  293. package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
  294. package/skills/mtls-configuration/SKILL.md +359 -0
  295. package/skills/multi-cloud-architecture/SKILL.md +189 -0
  296. package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
  297. package/skills/network-engineer/SKILL.md +169 -0
  298. package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
  299. package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
  300. package/skills/nft-standards/SKILL.md +395 -0
  301. package/skills/node-expert/SKILL.md +23 -0
  302. package/skills/nodejs-backend-patterns/SKILL.md +35 -0
  303. package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
  304. package/skills/nx-workspace-patterns/SKILL.md +464 -0
  305. package/skills/observability-engineer/SKILL.md +237 -0
  306. package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
  307. package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
  308. package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
  309. package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
  310. package/skills/on-call-handoff-patterns/SKILL.md +453 -0
  311. package/skills/openapi-spec-generation/SKILL.md +33 -0
  312. package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
  313. package/skills/payment-integration/SKILL.md +77 -0
  314. package/skills/paypal-integration/SKILL.md +479 -0
  315. package/skills/pci-compliance/SKILL.md +478 -0
  316. package/skills/performance-engineer/SKILL.md +180 -0
  317. package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
  318. package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
  319. package/skills/php-pro/SKILL.md +63 -0
  320. package/skills/posix-shell-pro/SKILL.md +304 -0
  321. package/skills/postgresql/SKILL.md +230 -0
  322. package/skills/postmortem-writing/SKILL.md +386 -0
  323. package/skills/projection-patterns/SKILL.md +33 -0
  324. package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
  325. package/skills/prometheus-configuration/SKILL.md +404 -0
  326. package/skills/prompt-engineer/SKILL.md +272 -0
  327. package/skills/prompt-engineering-patterns/SKILL.md +213 -0
  328. package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  329. package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
  330. package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
  331. package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
  332. package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
  333. package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
  334. package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
  335. package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  336. package/skills/protocol-reverse-engineering/SKILL.md +29 -0
  337. package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
  338. package/skills/python-development-python-scaffold/SKILL.md +331 -0
  339. package/skills/python-packaging/SKILL.md +36 -0
  340. package/skills/python-packaging/resources/implementation-playbook.md +869 -0
  341. package/skills/python-performance-optimization/SKILL.md +36 -0
  342. package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
  343. package/skills/python-pro/SKILL.md +158 -0
  344. package/skills/python-testing-patterns/SKILL.md +37 -0
  345. package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
  346. package/skills/quant-analyst/SKILL.md +53 -0
  347. package/skills/rag-implementation/SKILL.md +421 -0
  348. package/skills/react-modernization/SKILL.md +34 -0
  349. package/skills/react-modernization/resources/implementation-playbook.md +512 -0
  350. package/skills/react-native-architecture/SKILL.md +33 -0
  351. package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
  352. package/skills/react-state-management/SKILL.md +441 -0
  353. package/skills/reference-builder/SKILL.md +188 -0
  354. package/skills/reverse-engineer/SKILL.md +173 -0
  355. package/skills/risk-manager/SKILL.md +61 -0
  356. package/skills/risk-metrics-calculation/SKILL.md +33 -0
  357. package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
  358. package/skills/ruby-pro/SKILL.md +56 -0
  359. package/skills/rust-async-patterns/SKILL.md +33 -0
  360. package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
  361. package/skills/rust-pro/SKILL.md +178 -0
  362. package/skills/saga-orchestration/SKILL.md +496 -0
  363. package/skills/sales-automator/SKILL.md +55 -0
  364. package/skills/sast-configuration/SKILL.md +212 -0
  365. package/skills/scala-pro/SKILL.md +82 -0
  366. package/skills/screen-reader-testing/SKILL.md +33 -0
  367. package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
  368. package/skills/search-specialist/SKILL.md +80 -0
  369. package/skills/secrets-management/SKILL.md +364 -0
  370. package/skills/security-auditor/SKILL.md +169 -0
  371. package/skills/security-compliance-compliance-check/SKILL.md +55 -0
  372. package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
  373. package/skills/security-requirement-extraction/SKILL.md +33 -0
  374. package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
  375. package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
  376. package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
  377. package/skills/security-scanning-security-hardening/SKILL.md +147 -0
  378. package/skills/security-scanning-security-sast/SKILL.md +495 -0
  379. package/skills/seo-authority-builder/SKILL.md +136 -0
  380. package/skills/seo-cannibalization-detector/SKILL.md +123 -0
  381. package/skills/seo-content-auditor/SKILL.md +83 -0
  382. package/skills/seo-content-planner/SKILL.md +108 -0
  383. package/skills/seo-content-refresher/SKILL.md +118 -0
  384. package/skills/seo-content-writer/SKILL.md +96 -0
  385. package/skills/seo-keyword-strategist/SKILL.md +95 -0
  386. package/skills/seo-meta-optimizer/SKILL.md +92 -0
  387. package/skills/seo-snippet-hunter/SKILL.md +114 -0
  388. package/skills/seo-structure-architect/SKILL.md +108 -0
  389. package/skills/service-mesh-expert/SKILL.md +58 -0
  390. package/skills/service-mesh-observability/SKILL.md +395 -0
  391. package/skills/shellcheck-configuration/SKILL.md +466 -0
  392. package/skills/similarity-search-patterns/SKILL.md +33 -0
  393. package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
  394. package/skills/slo-implementation/SKILL.md +341 -0
  395. package/skills/solidity-security/SKILL.md +34 -0
  396. package/skills/solidity-security/resources/implementation-playbook.md +524 -0
  397. package/skills/spark-optimization/SKILL.md +427 -0
  398. package/skills/sql-optimization-patterns/SKILL.md +35 -0
  399. package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
  400. package/skills/sql-pro/SKILL.md +173 -0
  401. package/skills/startup-analyst/SKILL.md +328 -0
  402. package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
  403. package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
  404. package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
  405. package/skills/startup-financial-modeling/SKILL.md +467 -0
  406. package/skills/startup-metrics-framework/SKILL.md +34 -0
  407. package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
  408. package/skills/stride-analysis-patterns/SKILL.md +33 -0
  409. package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
  410. package/skills/stripe-integration/SKILL.md +454 -0
  411. package/skills/systems-programming-rust-project/SKILL.md +440 -0
  412. package/skills/tailwind-design-system/SKILL.md +33 -0
  413. package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
  414. package/skills/tdd-orchestrator/SKILL.md +205 -0
  415. package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
  416. package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
  417. package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
  418. package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
  419. package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
  420. package/skills/team-collaboration-issue/SKILL.md +37 -0
  421. package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
  422. package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
  423. package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
  424. package/skills/team-composition-analysis/SKILL.md +413 -0
  425. package/skills/temporal-python-pro/SKILL.md +370 -0
  426. package/skills/temporal-python-testing/SKILL.md +170 -0
  427. package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
  428. package/skills/temporal-python-testing/resources/local-setup.md +553 -0
  429. package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
  430. package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
  431. package/skills/terraform-module-library/SKILL.md +261 -0
  432. package/skills/terraform-module-library/references/aws-modules.md +63 -0
  433. package/skills/terraform-specialist/SKILL.md +166 -0
  434. package/skills/test-automator/SKILL.md +224 -0
  435. package/skills/threat-mitigation-mapping/SKILL.md +33 -0
  436. package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
  437. package/skills/threat-modeling-expert/SKILL.md +60 -0
  438. package/skills/track-management/SKILL.md +38 -0
  439. package/skills/track-management/resources/implementation-playbook.md +591 -0
  440. package/skills/turborepo-caching/SKILL.md +419 -0
  441. package/skills/tutorial-engineer/SKILL.md +139 -0
  442. package/skills/typescript-advanced-types/SKILL.md +35 -0
  443. package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
  444. package/skills/typescript-pro/SKILL.md +55 -0
  445. package/skills/ui-minimal/SKILL.md +23 -0
  446. package/skills/ui-ux-designer/SKILL.md +209 -0
  447. package/skills/ui-visual-validator/SKILL.md +214 -0
  448. package/skills/unit-testing-test-generate/SKILL.md +319 -0
  449. package/skills/unity-developer/SKILL.md +230 -0
  450. package/skills/unity-ecs-patterns/SKILL.md +33 -0
  451. package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
  452. package/skills/uv-package-manager/SKILL.md +37 -0
  453. package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
  454. package/skills/vector-database-engineer/SKILL.md +60 -0
  455. package/skills/vector-index-tuning/SKILL.md +42 -0
  456. package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
  457. package/skills/wcag-audit-patterns/SKILL.md +41 -0
  458. package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
  459. package/skills/web3-testing/SKILL.md +427 -0
  460. package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
  461. package/skills/workflow-patterns/SKILL.md +38 -0
  462. package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
@@ -0,0 +1,566 @@
1
+ # FastAPI Project Templates Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ # FastAPI Project Templates
6
+
7
+ Production-ready FastAPI project structures with async patterns, dependency injection, middleware, and best practices for building high-performance APIs.
8
+
9
+ ## When to Use This Skill
10
+
11
+ - Starting new FastAPI projects from scratch
12
+ - Implementing async REST APIs with Python
13
+ - Building high-performance web services and microservices
14
+ - Creating async applications with PostgreSQL, MongoDB
15
+ - Setting up API projects with proper structure and testing
16
+
17
+ ## Core Concepts
18
+
19
+ ### 1. Project Structure
20
+
21
+ **Recommended Layout:**
22
+
23
+ ```
24
+ app/
25
+ ├── api/ # API routes
26
+ │ ├── v1/
27
+ │ │ ├── endpoints/
28
+ │ │ │ ├── users.py
29
+ │ │ │ ├── auth.py
30
+ │ │ │ └── items.py
31
+ │ │ └── router.py
32
+ │ └── dependencies.py # Shared dependencies
33
+ ├── core/ # Core configuration
34
+ │ ├── config.py
35
+ │ ├── security.py
36
+ │ └── database.py
37
+ ├── models/ # Database models
38
+ │ ├── user.py
39
+ │ └── item.py
40
+ ├── schemas/ # Pydantic schemas
41
+ │ ├── user.py
42
+ │ └── item.py
43
+ ├── services/ # Business logic
44
+ │ ├── user_service.py
45
+ │ └── auth_service.py
46
+ ├── repositories/ # Data access
47
+ │ ├── user_repository.py
48
+ │ └── item_repository.py
49
+ └── main.py # Application entry
50
+ ```
51
+
52
+ ### 2. Dependency Injection
53
+
54
+ FastAPI's built-in DI system using `Depends`:
55
+
56
+ - Database session management
57
+ - Authentication/authorization
58
+ - Shared business logic
59
+ - Configuration injection
60
+
61
+ ### 3. Async Patterns
62
+
63
+ Proper async/await usage:
64
+
65
+ - Async route handlers
66
+ - Async database operations
67
+ - Async background tasks
68
+ - Async middleware
69
+
70
+ ## Implementation Patterns
71
+
72
+ ### Pattern 1: Complete FastAPI Application
73
+
74
+ ```python
75
+ # main.py
76
+ from fastapi import FastAPI, Depends
77
+ from fastapi.middleware.cors import CORSMiddleware
78
+ from contextlib import asynccontextmanager
79
+
80
+ @asynccontextmanager
81
+ async def lifespan(app: FastAPI):
82
+ """Application lifespan events."""
83
+ # Startup
84
+ await database.connect()
85
+ yield
86
+ # Shutdown
87
+ await database.disconnect()
88
+
89
+ app = FastAPI(
90
+ title="API Template",
91
+ version="1.0.0",
92
+ lifespan=lifespan
93
+ )
94
+
95
+ # CORS middleware
96
+ app.add_middleware(
97
+ CORSMiddleware,
98
+ allow_origins=["*"],
99
+ allow_credentials=True,
100
+ allow_methods=["*"],
101
+ allow_headers=["*"],
102
+ )
103
+
104
+ # Include routers
105
+ from app.api.v1.router import api_router
106
+ app.include_router(api_router, prefix="/api/v1")
107
+
108
+ # core/config.py
109
+ from pydantic_settings import BaseSettings
110
+ from functools import lru_cache
111
+
112
+ class Settings(BaseSettings):
113
+ """Application settings."""
114
+ DATABASE_URL: str
115
+ SECRET_KEY: str
116
+ ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
117
+ API_V1_STR: str = "/api/v1"
118
+
119
+ class Config:
120
+ env_file = ".env"
121
+
122
+ @lru_cache()
123
+ def get_settings() -> Settings:
124
+ return Settings()
125
+
126
+ # core/database.py
127
+ from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
128
+ from sqlalchemy.ext.declarative import declarative_base
129
+ from sqlalchemy.orm import sessionmaker
130
+ from app.core.config import get_settings
131
+
132
+ settings = get_settings()
133
+
134
+ engine = create_async_engine(
135
+ settings.DATABASE_URL,
136
+ echo=True,
137
+ future=True
138
+ )
139
+
140
+ AsyncSessionLocal = sessionmaker(
141
+ engine,
142
+ class_=AsyncSession,
143
+ expire_on_commit=False
144
+ )
145
+
146
+ Base = declarative_base()
147
+
148
+ async def get_db() -> AsyncSession:
149
+ """Dependency for database session."""
150
+ async with AsyncSessionLocal() as session:
151
+ try:
152
+ yield session
153
+ await session.commit()
154
+ except Exception:
155
+ await session.rollback()
156
+ raise
157
+ finally:
158
+ await session.close()
159
+ ```
160
+
161
+ ### Pattern 2: CRUD Repository Pattern
162
+
163
+ ```python
164
+ # repositories/base_repository.py
165
+ from typing import Generic, TypeVar, Type, Optional, List
166
+ from sqlalchemy.ext.asyncio import AsyncSession
167
+ from sqlalchemy import select
168
+ from pydantic import BaseModel
169
+
170
+ ModelType = TypeVar("ModelType")
171
+ CreateSchemaType = TypeVar("CreateSchemaType", bound=BaseModel)
172
+ UpdateSchemaType = TypeVar("UpdateSchemaType", bound=BaseModel)
173
+
174
+ class BaseRepository(Generic[ModelType, CreateSchemaType, UpdateSchemaType]):
175
+ """Base repository for CRUD operations."""
176
+
177
+ def __init__(self, model: Type[ModelType]):
178
+ self.model = model
179
+
180
+ async def get(self, db: AsyncSession, id: int) -> Optional[ModelType]:
181
+ """Get by ID."""
182
+ result = await db.execute(
183
+ select(self.model).where(self.model.id == id)
184
+ )
185
+ return result.scalars().first()
186
+
187
+ async def get_multi(
188
+ self,
189
+ db: AsyncSession,
190
+ skip: int = 0,
191
+ limit: int = 100
192
+ ) -> List[ModelType]:
193
+ """Get multiple records."""
194
+ result = await db.execute(
195
+ select(self.model).offset(skip).limit(limit)
196
+ )
197
+ return result.scalars().all()
198
+
199
+ async def create(
200
+ self,
201
+ db: AsyncSession,
202
+ obj_in: CreateSchemaType
203
+ ) -> ModelType:
204
+ """Create new record."""
205
+ db_obj = self.model(**obj_in.dict())
206
+ db.add(db_obj)
207
+ await db.flush()
208
+ await db.refresh(db_obj)
209
+ return db_obj
210
+
211
+ async def update(
212
+ self,
213
+ db: AsyncSession,
214
+ db_obj: ModelType,
215
+ obj_in: UpdateSchemaType
216
+ ) -> ModelType:
217
+ """Update record."""
218
+ update_data = obj_in.dict(exclude_unset=True)
219
+ for field, value in update_data.items():
220
+ setattr(db_obj, field, value)
221
+ await db.flush()
222
+ await db.refresh(db_obj)
223
+ return db_obj
224
+
225
+ async def delete(self, db: AsyncSession, id: int) -> bool:
226
+ """Delete record."""
227
+ obj = await self.get(db, id)
228
+ if obj:
229
+ await db.delete(obj)
230
+ return True
231
+ return False
232
+
233
+ # repositories/user_repository.py
234
+ from app.repositories.base_repository import BaseRepository
235
+ from app.models.user import User
236
+ from app.schemas.user import UserCreate, UserUpdate
237
+
238
+ class UserRepository(BaseRepository[User, UserCreate, UserUpdate]):
239
+ """User-specific repository."""
240
+
241
+ async def get_by_email(self, db: AsyncSession, email: str) -> Optional[User]:
242
+ """Get user by email."""
243
+ result = await db.execute(
244
+ select(User).where(User.email == email)
245
+ )
246
+ return result.scalars().first()
247
+
248
+ async def is_active(self, db: AsyncSession, user_id: int) -> bool:
249
+ """Check if user is active."""
250
+ user = await self.get(db, user_id)
251
+ return user.is_active if user else False
252
+
253
+ user_repository = UserRepository(User)
254
+ ```
255
+
256
+ ### Pattern 3: Service Layer
257
+
258
+ ```python
259
+ # services/user_service.py
260
+ from typing import Optional
261
+ from sqlalchemy.ext.asyncio import AsyncSession
262
+ from app.repositories.user_repository import user_repository
263
+ from app.schemas.user import UserCreate, UserUpdate, User
264
+ from app.core.security import get_password_hash, verify_password
265
+
266
+ class UserService:
267
+ """Business logic for users."""
268
+
269
+ def __init__(self):
270
+ self.repository = user_repository
271
+
272
+ async def create_user(
273
+ self,
274
+ db: AsyncSession,
275
+ user_in: UserCreate
276
+ ) -> User:
277
+ """Create new user with hashed password."""
278
+ # Check if email exists
279
+ existing = await self.repository.get_by_email(db, user_in.email)
280
+ if existing:
281
+ raise ValueError("Email already registered")
282
+
283
+ # Hash password
284
+ user_in_dict = user_in.dict()
285
+ user_in_dict["hashed_password"] = get_password_hash(user_in_dict.pop("password"))
286
+
287
+ # Create user
288
+ user = await self.repository.create(db, UserCreate(**user_in_dict))
289
+ return user
290
+
291
+ async def authenticate(
292
+ self,
293
+ db: AsyncSession,
294
+ email: str,
295
+ password: str
296
+ ) -> Optional[User]:
297
+ """Authenticate user."""
298
+ user = await self.repository.get_by_email(db, email)
299
+ if not user:
300
+ return None
301
+ if not verify_password(password, user.hashed_password):
302
+ return None
303
+ return user
304
+
305
+ async def update_user(
306
+ self,
307
+ db: AsyncSession,
308
+ user_id: int,
309
+ user_in: UserUpdate
310
+ ) -> Optional[User]:
311
+ """Update user."""
312
+ user = await self.repository.get(db, user_id)
313
+ if not user:
314
+ return None
315
+
316
+ if user_in.password:
317
+ user_in_dict = user_in.dict(exclude_unset=True)
318
+ user_in_dict["hashed_password"] = get_password_hash(
319
+ user_in_dict.pop("password")
320
+ )
321
+ user_in = UserUpdate(**user_in_dict)
322
+
323
+ return await self.repository.update(db, user, user_in)
324
+
325
+ user_service = UserService()
326
+ ```
327
+
328
+ ### Pattern 4: API Endpoints with Dependencies
329
+
330
+ ```python
331
+ # api/v1/endpoints/users.py
332
+ from fastapi import APIRouter, Depends, HTTPException, status
333
+ from sqlalchemy.ext.asyncio import AsyncSession
334
+ from typing import List
335
+
336
+ from app.core.database import get_db
337
+ from app.schemas.user import User, UserCreate, UserUpdate
338
+ from app.services.user_service import user_service
339
+ from app.api.dependencies import get_current_user
340
+
341
+ router = APIRouter()
342
+
343
+ @router.post("/", response_model=User, status_code=status.HTTP_201_CREATED)
344
+ async def create_user(
345
+ user_in: UserCreate,
346
+ db: AsyncSession = Depends(get_db)
347
+ ):
348
+ """Create new user."""
349
+ try:
350
+ user = await user_service.create_user(db, user_in)
351
+ return user
352
+ except ValueError as e:
353
+ raise HTTPException(status_code=400, detail=str(e))
354
+
355
+ @router.get("/me", response_model=User)
356
+ async def read_current_user(
357
+ current_user: User = Depends(get_current_user)
358
+ ):
359
+ """Get current user."""
360
+ return current_user
361
+
362
+ @router.get("/{user_id}", response_model=User)
363
+ async def read_user(
364
+ user_id: int,
365
+ db: AsyncSession = Depends(get_db),
366
+ current_user: User = Depends(get_current_user)
367
+ ):
368
+ """Get user by ID."""
369
+ user = await user_service.repository.get(db, user_id)
370
+ if not user:
371
+ raise HTTPException(status_code=404, detail="User not found")
372
+ return user
373
+
374
+ @router.patch("/{user_id}", response_model=User)
375
+ async def update_user(
376
+ user_id: int,
377
+ user_in: UserUpdate,
378
+ db: AsyncSession = Depends(get_db),
379
+ current_user: User = Depends(get_current_user)
380
+ ):
381
+ """Update user."""
382
+ if current_user.id != user_id:
383
+ raise HTTPException(status_code=403, detail="Not authorized")
384
+
385
+ user = await user_service.update_user(db, user_id, user_in)
386
+ if not user:
387
+ raise HTTPException(status_code=404, detail="User not found")
388
+ return user
389
+
390
+ @router.delete("/{user_id}", status_code=status.HTTP_204_NO_CONTENT)
391
+ async def delete_user(
392
+ user_id: int,
393
+ db: AsyncSession = Depends(get_db),
394
+ current_user: User = Depends(get_current_user)
395
+ ):
396
+ """Delete user."""
397
+ if current_user.id != user_id:
398
+ raise HTTPException(status_code=403, detail="Not authorized")
399
+
400
+ deleted = await user_service.repository.delete(db, user_id)
401
+ if not deleted:
402
+ raise HTTPException(status_code=404, detail="User not found")
403
+ ```
404
+
405
+ ### Pattern 5: Authentication & Authorization
406
+
407
+ ```python
408
+ # core/security.py
409
+ from datetime import datetime, timedelta
410
+ from typing import Optional
411
+ from jose import JWTError, jwt
412
+ from passlib.context import CryptContext
413
+ from app.core.config import get_settings
414
+
415
+ settings = get_settings()
416
+ pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
417
+
418
+ ALGORITHM = "HS256"
419
+
420
+ def create_access_token(data: dict, expires_delta: Optional[timedelta] = None):
421
+ """Create JWT access token."""
422
+ to_encode = data.copy()
423
+ if expires_delta:
424
+ expire = datetime.utcnow() + expires_delta
425
+ else:
426
+ expire = datetime.utcnow() + timedelta(minutes=15)
427
+ to_encode.update({"exp": expire})
428
+ encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=ALGORITHM)
429
+ return encoded_jwt
430
+
431
+ def verify_password(plain_password: str, hashed_password: str) -> bool:
432
+ """Verify password against hash."""
433
+ return pwd_context.verify(plain_password, hashed_password)
434
+
435
+ def get_password_hash(password: str) -> str:
436
+ """Hash password."""
437
+ return pwd_context.hash(password)
438
+
439
+ # api/dependencies.py
440
+ from fastapi import Depends, HTTPException, status
441
+ from fastapi.security import OAuth2PasswordBearer
442
+ from jose import JWTError, jwt
443
+ from sqlalchemy.ext.asyncio import AsyncSession
444
+
445
+ from app.core.database import get_db
446
+ from app.core.security import ALGORITHM
447
+ from app.core.config import get_settings
448
+ from app.repositories.user_repository import user_repository
449
+
450
+ oauth2_scheme = OAuth2PasswordBearer(tokenUrl=f"{settings.API_V1_STR}/auth/login")
451
+
452
+ async def get_current_user(
453
+ db: AsyncSession = Depends(get_db),
454
+ token: str = Depends(oauth2_scheme)
455
+ ):
456
+ """Get current authenticated user."""
457
+ credentials_exception = HTTPException(
458
+ status_code=status.HTTP_401_UNAUTHORIZED,
459
+ detail="Could not validate credentials",
460
+ headers={"WWW-Authenticate": "Bearer"},
461
+ )
462
+
463
+ try:
464
+ payload = jwt.decode(token, settings.SECRET_KEY, algorithms=[ALGORITHM])
465
+ user_id: int = payload.get("sub")
466
+ if user_id is None:
467
+ raise credentials_exception
468
+ except JWTError:
469
+ raise credentials_exception
470
+
471
+ user = await user_repository.get(db, user_id)
472
+ if user is None:
473
+ raise credentials_exception
474
+
475
+ return user
476
+ ```
477
+
478
+ ## Testing
479
+
480
+ ```python
481
+ # tests/conftest.py
482
+ import pytest
483
+ import asyncio
484
+ from httpx import AsyncClient
485
+ from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
486
+ from sqlalchemy.orm import sessionmaker
487
+
488
+ from app.main import app
489
+ from app.core.database import get_db, Base
490
+
491
+ TEST_DATABASE_URL = "sqlite+aiosqlite:///:memory:"
492
+
493
+ @pytest.fixture(scope="session")
494
+ def event_loop():
495
+ loop = asyncio.get_event_loop_policy().new_event_loop()
496
+ yield loop
497
+ loop.close()
498
+
499
+ @pytest.fixture
500
+ async def db_session():
501
+ engine = create_async_engine(TEST_DATABASE_URL, echo=True)
502
+ async with engine.begin() as conn:
503
+ await conn.run_sync(Base.metadata.create_all)
504
+
505
+ AsyncSessionLocal = sessionmaker(
506
+ engine, class_=AsyncSession, expire_on_commit=False
507
+ )
508
+
509
+ async with AsyncSessionLocal() as session:
510
+ yield session
511
+
512
+ @pytest.fixture
513
+ async def client(db_session):
514
+ async def override_get_db():
515
+ yield db_session
516
+
517
+ app.dependency_overrides[get_db] = override_get_db
518
+
519
+ async with AsyncClient(app=app, base_url="http://test") as client:
520
+ yield client
521
+
522
+ # tests/test_users.py
523
+ import pytest
524
+
525
+ @pytest.mark.asyncio
526
+ async def test_create_user(client):
527
+ response = await client.post(
528
+ "/api/v1/users/",
529
+ json={
530
+ "email": "test@example.com",
531
+ "password": "testpass123",
532
+ "name": "Test User"
533
+ }
534
+ )
535
+ assert response.status_code == 201
536
+ data = response.json()
537
+ assert data["email"] == "test@example.com"
538
+ assert "id" in data
539
+ ```
540
+
541
+ ## Resources
542
+
543
+ - **references/fastapi-architecture.md**: Detailed architecture guide
544
+ - **references/async-best-practices.md**: Async/await patterns
545
+ - **references/testing-strategies.md**: Comprehensive testing guide
546
+ - **assets/project-template/**: Complete FastAPI project
547
+ - **assets/docker-compose.yml**: Development environment setup
548
+
549
+ ## Best Practices
550
+
551
+ 1. **Async All The Way**: Use async for database, external APIs
552
+ 2. **Dependency Injection**: Leverage FastAPI's DI system
553
+ 3. **Repository Pattern**: Separate data access from business logic
554
+ 4. **Service Layer**: Keep business logic out of routes
555
+ 5. **Pydantic Schemas**: Strong typing for request/response
556
+ 6. **Error Handling**: Consistent error responses
557
+ 7. **Testing**: Test all layers independently
558
+
559
+ ## Common Pitfalls
560
+
561
+ - **Blocking Code in Async**: Using synchronous database drivers
562
+ - **No Service Layer**: Business logic in route handlers
563
+ - **Missing Type Hints**: Loses FastAPI's benefits
564
+ - **Ignoring Sessions**: Not properly managing database sessions
565
+ - **No Testing**: Skipping integration tests
566
+ - **Tight Coupling**: Direct database access in routes
@@ -0,0 +1,5 @@
1
+ ---
2
+ name: final-test
3
+ description: A vibe specifically for verification.
4
+ ---
5
+ # Final Test Vibe