@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,544 @@
1
+ # Dapper Patterns and Best Practices
2
+
3
+ Advanced patterns for high-performance data access with Dapper in .NET.
4
+
5
+ ## Why Dapper?
6
+
7
+ | Aspect | Dapper | EF Core |
8
+ |--------|--------|---------|
9
+ | Performance | ~10x faster for simple queries | Good with optimization |
10
+ | Control | Full SQL control | Abstracted |
11
+ | Learning curve | Low (just SQL) | Higher |
12
+ | Complex mappings | Manual | Automatic |
13
+ | Change tracking | None | Built-in |
14
+ | Migrations | External tools | Built-in |
15
+
16
+ **Use Dapper when:**
17
+ - Performance is critical (hot paths)
18
+ - You need complex SQL (CTEs, window functions)
19
+ - Read-heavy workloads
20
+ - Legacy database schemas
21
+
22
+ **Use EF Core when:**
23
+ - Rich domain models with relationships
24
+ - Need change tracking
25
+ - Want LINQ-to-SQL translation
26
+ - Complex object graphs
27
+
28
+ ## Connection Management
29
+
30
+ ### 1. Proper Connection Handling
31
+
32
+ ```csharp
33
+ // Register connection factory
34
+ services.AddScoped<IDbConnection>(sp =>
35
+ {
36
+ var connectionString = sp.GetRequiredService<IConfiguration>()
37
+ .GetConnectionString("Default");
38
+ return new SqlConnection(connectionString);
39
+ });
40
+
41
+ // Or use a factory for more control
42
+ public interface IDbConnectionFactory
43
+ {
44
+ IDbConnection CreateConnection();
45
+ }
46
+
47
+ public class SqlConnectionFactory : IDbConnectionFactory
48
+ {
49
+ private readonly string _connectionString;
50
+
51
+ public SqlConnectionFactory(IConfiguration configuration)
52
+ {
53
+ _connectionString = configuration.GetConnectionString("Default")
54
+ ?? throw new InvalidOperationException("Connection string not found");
55
+ }
56
+
57
+ public IDbConnection CreateConnection() => new SqlConnection(_connectionString);
58
+ }
59
+ ```
60
+
61
+ ### 2. Connection Lifecycle
62
+
63
+ ```csharp
64
+ public class ProductRepository
65
+ {
66
+ private readonly IDbConnectionFactory _factory;
67
+
68
+ public ProductRepository(IDbConnectionFactory factory)
69
+ {
70
+ _factory = factory;
71
+ }
72
+
73
+ public async Task<Product?> GetByIdAsync(string id, CancellationToken ct)
74
+ {
75
+ // Connection opens automatically, closes on dispose
76
+ using var connection = _factory.CreateConnection();
77
+
78
+ return await connection.QueryFirstOrDefaultAsync<Product>(
79
+ new CommandDefinition(
80
+ "SELECT * FROM Products WHERE Id = @Id",
81
+ new { Id = id },
82
+ cancellationToken: ct));
83
+ }
84
+ }
85
+ ```
86
+
87
+ ## Query Patterns
88
+
89
+ ### 3. Basic CRUD Operations
90
+
91
+ ```csharp
92
+ // SELECT single
93
+ var product = await connection.QueryFirstOrDefaultAsync<Product>(
94
+ "SELECT * FROM Products WHERE Id = @Id",
95
+ new { Id = id });
96
+
97
+ // SELECT multiple
98
+ var products = await connection.QueryAsync<Product>(
99
+ "SELECT * FROM Products WHERE CategoryId = @CategoryId",
100
+ new { CategoryId = categoryId });
101
+
102
+ // INSERT with identity return
103
+ var newId = await connection.QuerySingleAsync<int>(
104
+ """
105
+ INSERT INTO Products (Name, Price, CategoryId)
106
+ VALUES (@Name, @Price, @CategoryId);
107
+ SELECT CAST(SCOPE_IDENTITY() AS INT);
108
+ """,
109
+ product);
110
+
111
+ // INSERT with OUTPUT clause (returns full entity)
112
+ var inserted = await connection.QuerySingleAsync<Product>(
113
+ """
114
+ INSERT INTO Products (Name, Price, CategoryId)
115
+ OUTPUT INSERTED.*
116
+ VALUES (@Name, @Price, @CategoryId);
117
+ """,
118
+ product);
119
+
120
+ // UPDATE
121
+ var rowsAffected = await connection.ExecuteAsync(
122
+ """
123
+ UPDATE Products
124
+ SET Name = @Name, Price = @Price, UpdatedAt = @UpdatedAt
125
+ WHERE Id = @Id
126
+ """,
127
+ new { product.Id, product.Name, product.Price, UpdatedAt = DateTime.UtcNow });
128
+
129
+ // DELETE
130
+ await connection.ExecuteAsync(
131
+ "DELETE FROM Products WHERE Id = @Id",
132
+ new { Id = id });
133
+ ```
134
+
135
+ ### 4. Dynamic Query Building
136
+
137
+ ```csharp
138
+ public async Task<IReadOnlyList<Product>> SearchAsync(ProductSearchCriteria criteria)
139
+ {
140
+ var sql = new StringBuilder("SELECT * FROM Products WHERE 1=1");
141
+ var parameters = new DynamicParameters();
142
+
143
+ if (!string.IsNullOrWhiteSpace(criteria.SearchTerm))
144
+ {
145
+ sql.Append(" AND (Name LIKE @SearchTerm OR Sku LIKE @SearchTerm)");
146
+ parameters.Add("SearchTerm", $"%{criteria.SearchTerm}%");
147
+ }
148
+
149
+ if (criteria.CategoryId.HasValue)
150
+ {
151
+ sql.Append(" AND CategoryId = @CategoryId");
152
+ parameters.Add("CategoryId", criteria.CategoryId.Value);
153
+ }
154
+
155
+ if (criteria.MinPrice.HasValue)
156
+ {
157
+ sql.Append(" AND Price >= @MinPrice");
158
+ parameters.Add("MinPrice", criteria.MinPrice.Value);
159
+ }
160
+
161
+ if (criteria.MaxPrice.HasValue)
162
+ {
163
+ sql.Append(" AND Price <= @MaxPrice");
164
+ parameters.Add("MaxPrice", criteria.MaxPrice.Value);
165
+ }
166
+
167
+ // Pagination
168
+ sql.Append(" ORDER BY Name");
169
+ sql.Append(" OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY");
170
+ parameters.Add("Offset", (criteria.Page - 1) * criteria.PageSize);
171
+ parameters.Add("PageSize", criteria.PageSize);
172
+
173
+ using var connection = _factory.CreateConnection();
174
+ var results = await connection.QueryAsync<Product>(sql.ToString(), parameters);
175
+ return results.ToList();
176
+ }
177
+ ```
178
+
179
+ ### 5. Multi-Mapping (Joins)
180
+
181
+ ```csharp
182
+ // One-to-One mapping
183
+ public async Task<Product?> GetProductWithCategoryAsync(string id)
184
+ {
185
+ const string sql = """
186
+ SELECT p.*, c.*
187
+ FROM Products p
188
+ INNER JOIN Categories c ON p.CategoryId = c.Id
189
+ WHERE p.Id = @Id
190
+ """;
191
+
192
+ using var connection = _factory.CreateConnection();
193
+
194
+ var result = await connection.QueryAsync<Product, Category, Product>(
195
+ sql,
196
+ (product, category) =>
197
+ {
198
+ product.Category = category;
199
+ return product;
200
+ },
201
+ new { Id = id },
202
+ splitOn: "Id"); // Column where split occurs
203
+
204
+ return result.FirstOrDefault();
205
+ }
206
+
207
+ // One-to-Many mapping
208
+ public async Task<Order?> GetOrderWithItemsAsync(int orderId)
209
+ {
210
+ const string sql = """
211
+ SELECT o.*, oi.*, p.*
212
+ FROM Orders o
213
+ LEFT JOIN OrderItems oi ON o.Id = oi.OrderId
214
+ LEFT JOIN Products p ON oi.ProductId = p.Id
215
+ WHERE o.Id = @OrderId
216
+ """;
217
+
218
+ var orderDictionary = new Dictionary<int, Order>();
219
+
220
+ using var connection = _factory.CreateConnection();
221
+
222
+ await connection.QueryAsync<Order, OrderItem, Product, Order>(
223
+ sql,
224
+ (order, item, product) =>
225
+ {
226
+ if (!orderDictionary.TryGetValue(order.Id, out var existingOrder))
227
+ {
228
+ existingOrder = order;
229
+ existingOrder.Items = new List<OrderItem>();
230
+ orderDictionary.Add(order.Id, existingOrder);
231
+ }
232
+
233
+ if (item != null)
234
+ {
235
+ item.Product = product;
236
+ existingOrder.Items.Add(item);
237
+ }
238
+
239
+ return existingOrder;
240
+ },
241
+ new { OrderId = orderId },
242
+ splitOn: "Id,Id");
243
+
244
+ return orderDictionary.Values.FirstOrDefault();
245
+ }
246
+ ```
247
+
248
+ ### 6. Multiple Result Sets
249
+
250
+ ```csharp
251
+ public async Task<(IReadOnlyList<Product> Products, int TotalCount)> SearchWithCountAsync(
252
+ ProductSearchCriteria criteria)
253
+ {
254
+ const string sql = """
255
+ -- First result set: count
256
+ SELECT COUNT(*) FROM Products WHERE CategoryId = @CategoryId;
257
+
258
+ -- Second result set: data
259
+ SELECT * FROM Products
260
+ WHERE CategoryId = @CategoryId
261
+ ORDER BY Name
262
+ OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY;
263
+ """;
264
+
265
+ using var connection = _factory.CreateConnection();
266
+ using var multi = await connection.QueryMultipleAsync(sql, new
267
+ {
268
+ CategoryId = criteria.CategoryId,
269
+ Offset = (criteria.Page - 1) * criteria.PageSize,
270
+ PageSize = criteria.PageSize
271
+ });
272
+
273
+ var totalCount = await multi.ReadSingleAsync<int>();
274
+ var products = (await multi.ReadAsync<Product>()).ToList();
275
+
276
+ return (products, totalCount);
277
+ }
278
+ ```
279
+
280
+ ## Advanced Patterns
281
+
282
+ ### 7. Table-Valued Parameters (Bulk Operations)
283
+
284
+ ```csharp
285
+ // SQL Server TVP for bulk operations
286
+ public async Task<IReadOnlyList<Product>> GetByIdsAsync(IEnumerable<string> ids)
287
+ {
288
+ // Create DataTable matching TVP structure
289
+ var table = new DataTable();
290
+ table.Columns.Add("Id", typeof(string));
291
+
292
+ foreach (var id in ids)
293
+ {
294
+ table.Rows.Add(id);
295
+ }
296
+
297
+ using var connection = _factory.CreateConnection();
298
+
299
+ var results = await connection.QueryAsync<Product>(
300
+ "SELECT p.* FROM Products p INNER JOIN @Ids i ON p.Id = i.Id",
301
+ new { Ids = table.AsTableValuedParameter("dbo.StringIdList") });
302
+
303
+ return results.ToList();
304
+ }
305
+
306
+ // SQL to create the TVP type:
307
+ // CREATE TYPE dbo.StringIdList AS TABLE (Id NVARCHAR(40));
308
+ ```
309
+
310
+ ### 8. Stored Procedures
311
+
312
+ ```csharp
313
+ public async Task<IReadOnlyList<Product>> GetTopProductsAsync(int categoryId, int count)
314
+ {
315
+ using var connection = _factory.CreateConnection();
316
+
317
+ var results = await connection.QueryAsync<Product>(
318
+ "dbo.GetTopProductsByCategory",
319
+ new { CategoryId = categoryId, TopN = count },
320
+ commandType: CommandType.StoredProcedure);
321
+
322
+ return results.ToList();
323
+ }
324
+
325
+ // With output parameters
326
+ public async Task<(Order Order, string ConfirmationCode)> CreateOrderAsync(Order order)
327
+ {
328
+ var parameters = new DynamicParameters(new
329
+ {
330
+ order.CustomerId,
331
+ order.Total
332
+ });
333
+ parameters.Add("OrderId", dbType: DbType.Int32, direction: ParameterDirection.Output);
334
+ parameters.Add("ConfirmationCode", dbType: DbType.String, size: 20, direction: ParameterDirection.Output);
335
+
336
+ using var connection = _factory.CreateConnection();
337
+
338
+ await connection.ExecuteAsync(
339
+ "dbo.CreateOrder",
340
+ parameters,
341
+ commandType: CommandType.StoredProcedure);
342
+
343
+ order.Id = parameters.Get<int>("OrderId");
344
+ var confirmationCode = parameters.Get<string>("ConfirmationCode");
345
+
346
+ return (order, confirmationCode);
347
+ }
348
+ ```
349
+
350
+ ### 9. Transactions
351
+
352
+ ```csharp
353
+ public async Task<Order> CreateOrderWithItemsAsync(Order order, List<OrderItem> items)
354
+ {
355
+ using var connection = _factory.CreateConnection();
356
+ await connection.OpenAsync();
357
+
358
+ using var transaction = await connection.BeginTransactionAsync();
359
+
360
+ try
361
+ {
362
+ // Insert order
363
+ order.Id = await connection.QuerySingleAsync<int>(
364
+ """
365
+ INSERT INTO Orders (CustomerId, Total, CreatedAt)
366
+ OUTPUT INSERTED.Id
367
+ VALUES (@CustomerId, @Total, @CreatedAt)
368
+ """,
369
+ order,
370
+ transaction);
371
+
372
+ // Insert items
373
+ foreach (var item in items)
374
+ {
375
+ item.OrderId = order.Id;
376
+ }
377
+
378
+ await connection.ExecuteAsync(
379
+ """
380
+ INSERT INTO OrderItems (OrderId, ProductId, Quantity, UnitPrice)
381
+ VALUES (@OrderId, @ProductId, @Quantity, @UnitPrice)
382
+ """,
383
+ items,
384
+ transaction);
385
+
386
+ await transaction.CommitAsync();
387
+
388
+ order.Items = items;
389
+ return order;
390
+ }
391
+ catch
392
+ {
393
+ await transaction.RollbackAsync();
394
+ throw;
395
+ }
396
+ }
397
+ ```
398
+
399
+ ### 10. Custom Type Handlers
400
+
401
+ ```csharp
402
+ // Register custom type handler for JSON columns
403
+ public class JsonTypeHandler<T> : SqlMapper.TypeHandler<T>
404
+ {
405
+ public override T Parse(object value)
406
+ {
407
+ if (value is string json)
408
+ {
409
+ return JsonSerializer.Deserialize<T>(json)!;
410
+ }
411
+ return default!;
412
+ }
413
+
414
+ public override void SetValue(IDbDataParameter parameter, T value)
415
+ {
416
+ parameter.Value = JsonSerializer.Serialize(value);
417
+ parameter.DbType = DbType.String;
418
+ }
419
+ }
420
+
421
+ // Register at startup
422
+ SqlMapper.AddTypeHandler(new JsonTypeHandler<ProductMetadata>());
423
+
424
+ // Now you can query directly
425
+ var product = await connection.QueryFirstAsync<Product>(
426
+ "SELECT Id, Name, Metadata FROM Products WHERE Id = @Id",
427
+ new { Id = id });
428
+ // product.Metadata is automatically deserialized from JSON
429
+ ```
430
+
431
+ ## Performance Tips
432
+
433
+ ### 11. Use CommandDefinition for Cancellation
434
+
435
+ ```csharp
436
+ // Always use CommandDefinition for async operations
437
+ var result = await connection.QueryAsync<Product>(
438
+ new CommandDefinition(
439
+ commandText: "SELECT * FROM Products WHERE CategoryId = @CategoryId",
440
+ parameters: new { CategoryId = categoryId },
441
+ cancellationToken: ct,
442
+ commandTimeout: 30));
443
+ ```
444
+
445
+ ### 12. Buffered vs Unbuffered Queries
446
+
447
+ ```csharp
448
+ // Buffered (default) - loads all results into memory
449
+ var products = await connection.QueryAsync<Product>(sql); // Returns list
450
+
451
+ // Unbuffered - streams results (lower memory for large result sets)
452
+ var products = await connection.QueryUnbufferedAsync<Product>(sql); // Returns IAsyncEnumerable
453
+
454
+ await foreach (var product in products)
455
+ {
456
+ // Process one at a time
457
+ }
458
+ ```
459
+
460
+ ### 13. Connection Pooling Settings
461
+
462
+ ```json
463
+ {
464
+ "ConnectionStrings": {
465
+ "Default": "Server=localhost;Database=MyDb;User Id=sa;Password=xxx;TrustServerCertificate=True;Min Pool Size=5;Max Pool Size=100;Connection Timeout=30;"
466
+ }
467
+ }
468
+ ```
469
+
470
+ ## Common Patterns
471
+
472
+ ### Repository Base Class
473
+
474
+ ```csharp
475
+ public abstract class DapperRepositoryBase<T> where T : class
476
+ {
477
+ protected readonly IDbConnectionFactory ConnectionFactory;
478
+ protected readonly ILogger Logger;
479
+ protected abstract string TableName { get; }
480
+
481
+ protected DapperRepositoryBase(IDbConnectionFactory factory, ILogger logger)
482
+ {
483
+ ConnectionFactory = factory;
484
+ Logger = logger;
485
+ }
486
+
487
+ protected async Task<T?> GetByIdAsync<TId>(TId id, CancellationToken ct = default)
488
+ {
489
+ var sql = $"SELECT * FROM {TableName} WHERE Id = @Id";
490
+
491
+ using var connection = ConnectionFactory.CreateConnection();
492
+ return await connection.QueryFirstOrDefaultAsync<T>(
493
+ new CommandDefinition(sql, new { Id = id }, cancellationToken: ct));
494
+ }
495
+
496
+ protected async Task<IReadOnlyList<T>> GetAllAsync(CancellationToken ct = default)
497
+ {
498
+ var sql = $"SELECT * FROM {TableName}";
499
+
500
+ using var connection = ConnectionFactory.CreateConnection();
501
+ var results = await connection.QueryAsync<T>(
502
+ new CommandDefinition(sql, cancellationToken: ct));
503
+
504
+ return results.ToList();
505
+ }
506
+
507
+ protected async Task<int> ExecuteAsync(
508
+ string sql,
509
+ object? parameters = null,
510
+ CancellationToken ct = default)
511
+ {
512
+ using var connection = ConnectionFactory.CreateConnection();
513
+ return await connection.ExecuteAsync(
514
+ new CommandDefinition(sql, parameters, cancellationToken: ct));
515
+ }
516
+ }
517
+ ```
518
+
519
+ ## Anti-Patterns to Avoid
520
+
521
+ ```csharp
522
+ // ❌ Bad - SQL injection risk
523
+ var sql = $"SELECT * FROM Products WHERE Name = '{userInput}'";
524
+
525
+ // ✅ Good - Parameterized query
526
+ var sql = "SELECT * FROM Products WHERE Name = @Name";
527
+ await connection.QueryAsync<Product>(sql, new { Name = userInput });
528
+
529
+ // ❌ Bad - Not disposing connection
530
+ var connection = new SqlConnection(connectionString);
531
+ var result = await connection.QueryAsync<Product>(sql);
532
+ // Connection leak!
533
+
534
+ // ✅ Good - Using statement
535
+ using var connection = new SqlConnection(connectionString);
536
+ var result = await connection.QueryAsync<Product>(sql);
537
+
538
+ // ❌ Bad - Opening connection manually when not needed
539
+ await connection.OpenAsync(); // Dapper does this automatically
540
+ var result = await connection.QueryAsync<Product>(sql);
541
+
542
+ // ✅ Good - Let Dapper manage connection
543
+ var result = await connection.QueryAsync<Product>(sql);
544
+ ```