@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,501 @@
1
+ # Projection Patterns Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ # Projection Patterns
6
+
7
+ Comprehensive guide to building projections and read models for event-sourced systems.
8
+
9
+ ## Do not use this skill when
10
+
11
+ - The task is unrelated to projection patterns
12
+ - You need a different domain or tool outside this scope
13
+
14
+ ## Instructions
15
+
16
+ - Clarify goals, constraints, and required inputs.
17
+ - Apply relevant best practices and validate outcomes.
18
+ - Provide actionable steps and verification.
19
+ - If detailed examples are required, open `resources/implementation-playbook.md`.
20
+
21
+ ## Use this skill when
22
+
23
+ - Building CQRS read models
24
+ - Creating materialized views from events
25
+ - Optimizing query performance
26
+ - Implementing real-time dashboards
27
+ - Building search indexes from events
28
+ - Aggregating data across streams
29
+
30
+ ## Core Concepts
31
+
32
+ ### 1. Projection Architecture
33
+
34
+ ```
35
+ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
36
+ │ Event Store │────►│ Projector │────►│ Read Model │
37
+ │ │ │ │ │ (Database) │
38
+ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │
39
+ │ │ Events │ │ │ │ Handler │ │ │ │ Tables │ │
40
+ │ └─────────┘ │ │ │ Logic │ │ │ │ Views │ │
41
+ │ │ │ └─────────┘ │ │ │ Cache │ │
42
+ └─────────────┘ └─────────────┘ └─────────────┘
43
+ ```
44
+
45
+ ### 2. Projection Types
46
+
47
+ | Type | Description | Use Case |
48
+ | -------------- | --------------------------- | ---------------------- |
49
+ | **Live** | Real-time from subscription | Current state queries |
50
+ | **Catchup** | Process historical events | Rebuilding read models |
51
+ | **Persistent** | Stores checkpoint | Resume after restart |
52
+ | **Inline** | Same transaction as write | Strong consistency |
53
+
54
+ ## Templates
55
+
56
+ ### Template 1: Basic Projector
57
+
58
+ ```python
59
+ from abc import ABC, abstractmethod
60
+ from dataclasses import dataclass
61
+ from typing import Dict, Any, Callable, List
62
+ import asyncpg
63
+
64
+ @dataclass
65
+ class Event:
66
+ stream_id: str
67
+ event_type: str
68
+ data: dict
69
+ version: int
70
+ global_position: int
71
+
72
+
73
+ class Projection(ABC):
74
+ """Base class for projections."""
75
+
76
+ @property
77
+ @abstractmethod
78
+ def name(self) -> str:
79
+ """Unique projection name for checkpointing."""
80
+ pass
81
+
82
+ @abstractmethod
83
+ def handles(self) -> List[str]:
84
+ """List of event types this projection handles."""
85
+ pass
86
+
87
+ @abstractmethod
88
+ async def apply(self, event: Event) -> None:
89
+ """Apply event to the read model."""
90
+ pass
91
+
92
+
93
+ class Projector:
94
+ """Runs projections from event store."""
95
+
96
+ def __init__(self, event_store, checkpoint_store):
97
+ self.event_store = event_store
98
+ self.checkpoint_store = checkpoint_store
99
+ self.projections: List[Projection] = []
100
+
101
+ def register(self, projection: Projection):
102
+ self.projections.append(projection)
103
+
104
+ async def run(self, batch_size: int = 100):
105
+ """Run all projections continuously."""
106
+ while True:
107
+ for projection in self.projections:
108
+ await self._run_projection(projection, batch_size)
109
+ await asyncio.sleep(0.1)
110
+
111
+ async def _run_projection(self, projection: Projection, batch_size: int):
112
+ checkpoint = await self.checkpoint_store.get(projection.name)
113
+ position = checkpoint or 0
114
+
115
+ events = await self.event_store.read_all(position, batch_size)
116
+
117
+ for event in events:
118
+ if event.event_type in projection.handles():
119
+ await projection.apply(event)
120
+
121
+ await self.checkpoint_store.save(
122
+ projection.name,
123
+ event.global_position
124
+ )
125
+
126
+ async def rebuild(self, projection: Projection):
127
+ """Rebuild a projection from scratch."""
128
+ await self.checkpoint_store.delete(projection.name)
129
+ # Optionally clear read model tables
130
+ await self._run_projection(projection, batch_size=1000)
131
+ ```
132
+
133
+ ### Template 2: Order Summary Projection
134
+
135
+ ```python
136
+ class OrderSummaryProjection(Projection):
137
+ """Projects order events to a summary read model."""
138
+
139
+ def __init__(self, db_pool: asyncpg.Pool):
140
+ self.pool = db_pool
141
+
142
+ @property
143
+ def name(self) -> str:
144
+ return "order_summary"
145
+
146
+ def handles(self) -> List[str]:
147
+ return [
148
+ "OrderCreated",
149
+ "OrderItemAdded",
150
+ "OrderItemRemoved",
151
+ "OrderShipped",
152
+ "OrderCompleted",
153
+ "OrderCancelled"
154
+ ]
155
+
156
+ async def apply(self, event: Event) -> None:
157
+ handlers = {
158
+ "OrderCreated": self._handle_created,
159
+ "OrderItemAdded": self._handle_item_added,
160
+ "OrderItemRemoved": self._handle_item_removed,
161
+ "OrderShipped": self._handle_shipped,
162
+ "OrderCompleted": self._handle_completed,
163
+ "OrderCancelled": self._handle_cancelled,
164
+ }
165
+
166
+ handler = handlers.get(event.event_type)
167
+ if handler:
168
+ await handler(event)
169
+
170
+ async def _handle_created(self, event: Event):
171
+ async with self.pool.acquire() as conn:
172
+ await conn.execute(
173
+ """
174
+ INSERT INTO order_summaries
175
+ (order_id, customer_id, status, total_amount, item_count, created_at)
176
+ VALUES ($1, $2, $3, $4, $5, $6)
177
+ """,
178
+ event.data['order_id'],
179
+ event.data['customer_id'],
180
+ 'pending',
181
+ 0,
182
+ 0,
183
+ event.data['created_at']
184
+ )
185
+
186
+ async def _handle_item_added(self, event: Event):
187
+ async with self.pool.acquire() as conn:
188
+ await conn.execute(
189
+ """
190
+ UPDATE order_summaries
191
+ SET total_amount = total_amount + $2,
192
+ item_count = item_count + 1,
193
+ updated_at = NOW()
194
+ WHERE order_id = $1
195
+ """,
196
+ event.data['order_id'],
197
+ event.data['price'] * event.data['quantity']
198
+ )
199
+
200
+ async def _handle_item_removed(self, event: Event):
201
+ async with self.pool.acquire() as conn:
202
+ await conn.execute(
203
+ """
204
+ UPDATE order_summaries
205
+ SET total_amount = total_amount - $2,
206
+ item_count = item_count - 1,
207
+ updated_at = NOW()
208
+ WHERE order_id = $1
209
+ """,
210
+ event.data['order_id'],
211
+ event.data['price'] * event.data['quantity']
212
+ )
213
+
214
+ async def _handle_shipped(self, event: Event):
215
+ async with self.pool.acquire() as conn:
216
+ await conn.execute(
217
+ """
218
+ UPDATE order_summaries
219
+ SET status = 'shipped',
220
+ shipped_at = $2,
221
+ updated_at = NOW()
222
+ WHERE order_id = $1
223
+ """,
224
+ event.data['order_id'],
225
+ event.data['shipped_at']
226
+ )
227
+
228
+ async def _handle_completed(self, event: Event):
229
+ async with self.pool.acquire() as conn:
230
+ await conn.execute(
231
+ """
232
+ UPDATE order_summaries
233
+ SET status = 'completed',
234
+ completed_at = $2,
235
+ updated_at = NOW()
236
+ WHERE order_id = $1
237
+ """,
238
+ event.data['order_id'],
239
+ event.data['completed_at']
240
+ )
241
+
242
+ async def _handle_cancelled(self, event: Event):
243
+ async with self.pool.acquire() as conn:
244
+ await conn.execute(
245
+ """
246
+ UPDATE order_summaries
247
+ SET status = 'cancelled',
248
+ cancelled_at = $2,
249
+ cancellation_reason = $3,
250
+ updated_at = NOW()
251
+ WHERE order_id = $1
252
+ """,
253
+ event.data['order_id'],
254
+ event.data['cancelled_at'],
255
+ event.data.get('reason')
256
+ )
257
+ ```
258
+
259
+ ### Template 3: Elasticsearch Search Projection
260
+
261
+ ```python
262
+ from elasticsearch import AsyncElasticsearch
263
+
264
+ class ProductSearchProjection(Projection):
265
+ """Projects product events to Elasticsearch for full-text search."""
266
+
267
+ def __init__(self, es_client: AsyncElasticsearch):
268
+ self.es = es_client
269
+ self.index = "products"
270
+
271
+ @property
272
+ def name(self) -> str:
273
+ return "product_search"
274
+
275
+ def handles(self) -> List[str]:
276
+ return [
277
+ "ProductCreated",
278
+ "ProductUpdated",
279
+ "ProductPriceChanged",
280
+ "ProductDeleted"
281
+ ]
282
+
283
+ async def apply(self, event: Event) -> None:
284
+ if event.event_type == "ProductCreated":
285
+ await self.es.index(
286
+ index=self.index,
287
+ id=event.data['product_id'],
288
+ document={
289
+ 'name': event.data['name'],
290
+ 'description': event.data['description'],
291
+ 'category': event.data['category'],
292
+ 'price': event.data['price'],
293
+ 'tags': event.data.get('tags', []),
294
+ 'created_at': event.data['created_at']
295
+ }
296
+ )
297
+
298
+ elif event.event_type == "ProductUpdated":
299
+ await self.es.update(
300
+ index=self.index,
301
+ id=event.data['product_id'],
302
+ doc={
303
+ 'name': event.data['name'],
304
+ 'description': event.data['description'],
305
+ 'category': event.data['category'],
306
+ 'tags': event.data.get('tags', []),
307
+ 'updated_at': event.data['updated_at']
308
+ }
309
+ )
310
+
311
+ elif event.event_type == "ProductPriceChanged":
312
+ await self.es.update(
313
+ index=self.index,
314
+ id=event.data['product_id'],
315
+ doc={
316
+ 'price': event.data['new_price'],
317
+ 'price_updated_at': event.data['changed_at']
318
+ }
319
+ )
320
+
321
+ elif event.event_type == "ProductDeleted":
322
+ await self.es.delete(
323
+ index=self.index,
324
+ id=event.data['product_id']
325
+ )
326
+ ```
327
+
328
+ ### Template 4: Aggregating Projection
329
+
330
+ ```python
331
+ class DailySalesProjection(Projection):
332
+ """Aggregates sales data by day for reporting."""
333
+
334
+ def __init__(self, db_pool: asyncpg.Pool):
335
+ self.pool = db_pool
336
+
337
+ @property
338
+ def name(self) -> str:
339
+ return "daily_sales"
340
+
341
+ def handles(self) -> List[str]:
342
+ return ["OrderCompleted", "OrderRefunded"]
343
+
344
+ async def apply(self, event: Event) -> None:
345
+ if event.event_type == "OrderCompleted":
346
+ await self._increment_sales(event)
347
+ elif event.event_type == "OrderRefunded":
348
+ await self._decrement_sales(event)
349
+
350
+ async def _increment_sales(self, event: Event):
351
+ date = event.data['completed_at'][:10] # YYYY-MM-DD
352
+ async with self.pool.acquire() as conn:
353
+ await conn.execute(
354
+ """
355
+ INSERT INTO daily_sales (date, total_orders, total_revenue, total_items)
356
+ VALUES ($1, 1, $2, $3)
357
+ ON CONFLICT (date) DO UPDATE SET
358
+ total_orders = daily_sales.total_orders + 1,
359
+ total_revenue = daily_sales.total_revenue + $2,
360
+ total_items = daily_sales.total_items + $3,
361
+ updated_at = NOW()
362
+ """,
363
+ date,
364
+ event.data['total_amount'],
365
+ event.data['item_count']
366
+ )
367
+
368
+ async def _decrement_sales(self, event: Event):
369
+ date = event.data['original_completed_at'][:10]
370
+ async with self.pool.acquire() as conn:
371
+ await conn.execute(
372
+ """
373
+ UPDATE daily_sales SET
374
+ total_orders = total_orders - 1,
375
+ total_revenue = total_revenue - $2,
376
+ total_refunds = total_refunds + $2,
377
+ updated_at = NOW()
378
+ WHERE date = $1
379
+ """,
380
+ date,
381
+ event.data['refund_amount']
382
+ )
383
+ ```
384
+
385
+ ### Template 5: Multi-Table Projection
386
+
387
+ ```python
388
+ class CustomerActivityProjection(Projection):
389
+ """Projects customer activity across multiple tables."""
390
+
391
+ def __init__(self, db_pool: asyncpg.Pool):
392
+ self.pool = db_pool
393
+
394
+ @property
395
+ def name(self) -> str:
396
+ return "customer_activity"
397
+
398
+ def handles(self) -> List[str]:
399
+ return [
400
+ "CustomerCreated",
401
+ "OrderCompleted",
402
+ "ReviewSubmitted",
403
+ "CustomerTierChanged"
404
+ ]
405
+
406
+ async def apply(self, event: Event) -> None:
407
+ async with self.pool.acquire() as conn:
408
+ async with conn.transaction():
409
+ if event.event_type == "CustomerCreated":
410
+ # Insert into customers table
411
+ await conn.execute(
412
+ """
413
+ INSERT INTO customers (customer_id, email, name, tier, created_at)
414
+ VALUES ($1, $2, $3, 'bronze', $4)
415
+ """,
416
+ event.data['customer_id'],
417
+ event.data['email'],
418
+ event.data['name'],
419
+ event.data['created_at']
420
+ )
421
+ # Initialize activity summary
422
+ await conn.execute(
423
+ """
424
+ INSERT INTO customer_activity_summary
425
+ (customer_id, total_orders, total_spent, total_reviews)
426
+ VALUES ($1, 0, 0, 0)
427
+ """,
428
+ event.data['customer_id']
429
+ )
430
+
431
+ elif event.event_type == "OrderCompleted":
432
+ # Update activity summary
433
+ await conn.execute(
434
+ """
435
+ UPDATE customer_activity_summary SET
436
+ total_orders = total_orders + 1,
437
+ total_spent = total_spent + $2,
438
+ last_order_at = $3
439
+ WHERE customer_id = $1
440
+ """,
441
+ event.data['customer_id'],
442
+ event.data['total_amount'],
443
+ event.data['completed_at']
444
+ )
445
+ # Insert into order history
446
+ await conn.execute(
447
+ """
448
+ INSERT INTO customer_order_history
449
+ (customer_id, order_id, amount, completed_at)
450
+ VALUES ($1, $2, $3, $4)
451
+ """,
452
+ event.data['customer_id'],
453
+ event.data['order_id'],
454
+ event.data['total_amount'],
455
+ event.data['completed_at']
456
+ )
457
+
458
+ elif event.event_type == "ReviewSubmitted":
459
+ await conn.execute(
460
+ """
461
+ UPDATE customer_activity_summary SET
462
+ total_reviews = total_reviews + 1,
463
+ last_review_at = $2
464
+ WHERE customer_id = $1
465
+ """,
466
+ event.data['customer_id'],
467
+ event.data['submitted_at']
468
+ )
469
+
470
+ elif event.event_type == "CustomerTierChanged":
471
+ await conn.execute(
472
+ """
473
+ UPDATE customers SET tier = $2, updated_at = NOW()
474
+ WHERE customer_id = $1
475
+ """,
476
+ event.data['customer_id'],
477
+ event.data['new_tier']
478
+ )
479
+ ```
480
+
481
+ ## Best Practices
482
+
483
+ ### Do's
484
+
485
+ - **Make projections idempotent** - Safe to replay
486
+ - **Use transactions** - For multi-table updates
487
+ - **Store checkpoints** - Resume after failures
488
+ - **Monitor lag** - Alert on projection delays
489
+ - **Plan for rebuilds** - Design for reconstruction
490
+
491
+ ### Don'ts
492
+
493
+ - **Don't couple projections** - Each is independent
494
+ - **Don't skip error handling** - Log and alert on failures
495
+ - **Don't ignore ordering** - Events must be processed in order
496
+ - **Don't over-normalize** - Denormalize for query patterns
497
+
498
+ ## Resources
499
+
500
+ - [CQRS Pattern](https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs)
501
+ - [Projection Building Blocks](https://zimarev.com/blog/event-sourcing/projections/)