@wazir-dev/cli 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 (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,515 @@
1
+ # Database Query Optimization -- Performance Expertise Module
2
+
3
+ > Database queries are the #1 source of backend latency in most applications. A single unindexed query can turn a 10ms API call into a 10-second timeout. Understanding query execution plans, indexing strategies, and ORM pitfalls is essential for any backend developer.
4
+
5
+ > **Impact:** Critical
6
+ > **Applies to:** Backend
7
+ > **Key metrics:** Query execution time (p50/p95/p99), Rows scanned vs rows returned ratio, Index hit rate, Connection pool utilization
8
+
9
+ ---
10
+
11
+ ## 1. Why Query Optimization Matters
12
+
13
+ Research from the International Journal of Computing and Engineering (2025) found that **inefficient SQL queries account for 63% of database performance issues**, with just **7% of queries consuming over 70% of database resources**. A single unoptimized correlated subquery cost one company $45,000/month in unnecessary infrastructure; a 15-minute rewrite improved response times by 95%.
14
+
15
+ | Scenario | Before | After | Improvement |
16
+ |---|---|---|---|
17
+ | Missing index on WHERE clause | 28s | 32ms | 875x |
18
+ | SELECT * replaced with specific columns | 1.7s | 870ms | 2x |
19
+ | WordPress query optimization | 58,000ms | 20ms | 2,900x |
20
+ | Full table scan to index seek | 10s | 50ms | 200x |
21
+ | Connection pool right-sizing | ~100ms | ~2ms | 50x |
22
+
23
+ **The rows-scanned ratio** is the most important diagnostic metric. A ratio below 10:1 is acceptable. Between 10:1 and 100:1 warrants investigation. Above 100:1 is critical -- the query is doing orders of magnitude more work than necessary.
24
+
25
+ ---
26
+
27
+ ## 2. Reading Query Execution Plans
28
+
29
+ ### 2.1 PostgreSQL: EXPLAIN ANALYZE
30
+
31
+ ```sql
32
+ EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
33
+ SELECT * FROM orders WHERE status = 'pending';
34
+ ```
35
+
36
+ ```
37
+ Seq Scan on orders (cost=0.00..1542.00 rows=5000 width=124)
38
+ (actual time=0.015..12.340 rows=4832 loops=1)
39
+ Filter: (status = 'pending')
40
+ Rows Removed by Filter: 95168
41
+ Buffers: shared hit=542
42
+ Planning Time: 0.085 ms
43
+ Execution Time: 12.892 ms
44
+ ```
45
+
46
+ | Field | Meaning |
47
+ |---|---|
48
+ | `cost=0.00..1542.00` | Startup..total cost in planner units (1.0 = one sequential page read) |
49
+ | `rows=5000` vs `rows=4832` | Estimated vs actual rows -- large discrepancy means stale stats |
50
+ | `Rows Removed by Filter: 95168` | Rows read but discarded -- red flag when large |
51
+ | `Buffers: shared hit=542` | Pages read from buffer cache |
52
+
53
+ **Red flags:** Seq Scan on large tables, large Rows Removed by Filter, estimated vs actual row count mismatch (run `ANALYZE tablename;`), Nested Loop with large outer set, Sort with external merge.
54
+
55
+ #### Example: Before and After Index
56
+
57
+ ```sql
58
+ -- BEFORE: Sequential Scan (190ms)
59
+ EXPLAIN ANALYZE SELECT id, customer_id, total
60
+ FROM orders WHERE created_at > '2025-01-01' AND status = 'shipped';
61
+ -- Seq Scan on orders (actual time=0.031..189.420 rows=11842 loops=1)
62
+ -- Rows Removed by Filter: 988158
63
+
64
+ -- ADD INDEX
65
+ CREATE INDEX idx_orders_status_created ON orders (status, created_at);
66
+
67
+ -- AFTER: Index Scan (4.5ms) -- 42x faster
68
+ -- Index Scan using idx_orders_status_created on orders
69
+ -- (actual time=0.028..3.912 rows=11842 loops=1)
70
+ ```
71
+
72
+ ### 2.2 MySQL: EXPLAIN
73
+
74
+ Key columns: `type` (ALL = full scan, ref/range/const = index use), `key` (index chosen, NULL = none), `rows` (estimated rows), `Extra` (`Using filesort` or `Using temporary` = warning).
75
+
76
+ ### 2.3 MongoDB: explain("executionStats")
77
+
78
+ Key fields: `totalDocsExamined` vs `nReturned` (should be close), `stage: "COLLSCAN"` = no index, `stage: "IXSCAN"` = index used.
79
+
80
+ ---
81
+
82
+ ## 3. Indexing Strategies
83
+
84
+ ### 3.1 B-Tree Indexes (Default)
85
+
86
+ Supports equality (`=`), range (`<`, `>`, `BETWEEN`), and prefix LIKE (`'prefix%'`).
87
+
88
+ ```sql
89
+ -- Composite index -- column order is critical
90
+ CREATE INDEX idx_orders_user_date ON orders (user_id, created_at DESC);
91
+ ```
92
+
93
+ The index supports queries from left to right. `WHERE user_id = 5` uses the index. `WHERE user_id = 5 AND created_at > '2025-01-01'` uses both columns. `WHERE created_at > '2025-01-01'` alone cannot use this index.
94
+
95
+ ### 3.2 GIN Indexes (PostgreSQL)
96
+
97
+ For arrays, JSONB, and full-text search. 3-10x slower writes, but dramatically faster reads on composite data.
98
+
99
+ ```sql
100
+ CREATE INDEX idx_events_payload ON events USING GIN (payload);
101
+ -- Supports: WHERE payload @> '{"type": "purchase"}'
102
+
103
+ CREATE INDEX idx_articles_search ON articles
104
+ USING GIN (to_tsvector('english', title || ' ' || body));
105
+ -- Supports: WHERE to_tsvector(...) @@ to_tsquery('optimization & database')
106
+ ```
107
+
108
+ ### 3.3 Partial Indexes
109
+
110
+ Index only the rows you actually query. Reduces index size and maintenance cost.
111
+
112
+ ```sql
113
+ -- Full index on 10M rows: ~240MB
114
+ CREATE INDEX idx_orders_status ON orders (status);
115
+
116
+ -- Partial index on ~500K pending rows: ~12MB (20x smaller)
117
+ CREATE INDEX idx_orders_pending ON orders (created_at) WHERE status = 'pending';
118
+ ```
119
+
120
+ Heap Engineering benchmark: partial index query time 0.88ms vs non-partial 16.3ms -- **18.5x faster**.
121
+
122
+ ### 3.4 Covering Indexes (Index-Only Scans)
123
+
124
+ Include all columns the query needs so the database never touches the table.
125
+
126
+ ```sql
127
+ CREATE INDEX idx_orders_covering ON orders (user_id, created_at) INCLUDE (total, status);
128
+
129
+ -- Index Only Scan: Heap Fetches: 0 (pure index read, fastest possible)
130
+ SELECT total, status FROM orders WHERE user_id = 42 AND created_at > '2025-01-01';
131
+ ```
132
+
133
+ ### 3.5 MongoDB: ESR Rule for Compound Indexes
134
+
135
+ Order fields as **Equality, Sort, Range**:
136
+
137
+ ```javascript
138
+ // Query pattern
139
+ db.orders.find({ status: "shipped", total: { $gt: 100 } }).sort({ created_at: -1 });
140
+
141
+ // Optimal index: Equality first, Sort second, Range last
142
+ db.orders.createIndex({ status: 1, created_at: -1, total: 1 });
143
+ ```
144
+
145
+ ### 3.6 Index Cardinality
146
+
147
+ High cardinality columns (email, user_id) benefit most from indexes. If a value appears in >10-15% of rows, the planner skips the index and does a sequential scan anyway. Use partial indexes for low-cardinality columns.
148
+
149
+ ---
150
+
151
+ ## 4. Query Anti-Patterns and Fixes
152
+
153
+ ### Anti-Pattern 1: SELECT *
154
+
155
+ ```sql
156
+ -- SLOW: fetches 45 columns, prevents index-only scans
157
+ SELECT * FROM users WHERE department = 'engineering';
158
+ -- FAST: 80% less data transfer, 2x faster
159
+ SELECT id, name, email FROM users WHERE department = 'engineering';
160
+ ```
161
+
162
+ ### Anti-Pattern 2: Functions on Indexed Columns
163
+
164
+ ```sql
165
+ -- SLOW: YEAR() prevents index use, forces full scan (1,200ms on 5M rows)
166
+ SELECT * FROM orders WHERE YEAR(created_at) = 2025;
167
+ -- FAST: sargable range query, uses index (8ms)
168
+ SELECT * FROM orders WHERE created_at >= '2025-01-01' AND created_at < '2026-01-01';
169
+ ```
170
+
171
+ For case-insensitive search, create an expression index:
172
+
173
+ ```sql
174
+ CREATE INDEX idx_users_email_lower ON users (LOWER(email));
175
+ SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
176
+ ```
177
+
178
+ ### Anti-Pattern 3: Leading Wildcards
179
+
180
+ ```sql
181
+ -- SLOW: '%widget%' forces full scan (340ms on 2M rows)
182
+ SELECT * FROM products WHERE name LIKE '%widget%';
183
+ -- FAST: use full-text search with GIN index (4ms)
184
+ SELECT * FROM products
185
+ WHERE to_tsvector('english', name) @@ to_tsquery('widget');
186
+ ```
187
+
188
+ ### Anti-Pattern 4: Implicit Type Conversions
189
+
190
+ ```sql
191
+ -- SLOW: phone_number is VARCHAR but query passes integer -- casts every row
192
+ SELECT * FROM contacts WHERE phone_number = 5551234567;
193
+ -- FAST: match the column type
194
+ SELECT * FROM contacts WHERE phone_number = '5551234567';
195
+ ```
196
+
197
+ ### Anti-Pattern 5: Unbounded Queries
198
+
199
+ ```sql
200
+ -- DANGEROUS: could return millions of rows
201
+ SELECT * FROM logs WHERE level = 'ERROR';
202
+ -- SAFE: keyset pagination (constant performance at any depth)
203
+ SELECT id, message, created_at FROM logs
204
+ WHERE level = 'ERROR' AND created_at < '2025-06-15T10:30:00Z'
205
+ ORDER BY created_at DESC LIMIT 50;
206
+ ```
207
+
208
+ `OFFSET 100000` reads and discards 100,000 rows. Keyset pagination jumps directly via the index.
209
+
210
+ ### Anti-Pattern 6: DISTINCT as Band-Aid
211
+
212
+ ```sql
213
+ -- BAD: DISTINCT masks duplicate rows from incorrect join
214
+ SELECT DISTINCT u.id, u.name FROM users u
215
+ JOIN orders o ON u.id = o.user_id JOIN order_items oi ON o.id = oi.order_id;
216
+ -- GOOD: EXISTS checks relationship without producing duplicates
217
+ SELECT u.id, u.name FROM users u
218
+ WHERE EXISTS (SELECT 1 FROM orders o JOIN order_items oi ON o.id = oi.order_id
219
+ WHERE o.user_id = u.id);
220
+ ```
221
+
222
+ ---
223
+
224
+ ## 5. ORM Pitfalls: N+1 and Beyond
225
+
226
+ ### 5.1 The N+1 Problem
227
+
228
+ Code fetches N parent records, then issues one query per record for related data: N+1 queries instead of 1-2.
229
+
230
+ **Django:**
231
+
232
+ ```python
233
+ # N+1: 501 queries for 500 authors (~1,002ms at 2ms/query)
234
+ authors = Author.objects.all()
235
+ for author in authors:
236
+ books = author.books.all() # 1 query per author
237
+
238
+ # FIX: 2 queries (~4ms) -- 250x fewer round trips
239
+ authors = Author.objects.prefetch_related('books').all()
240
+ ```
241
+
242
+ Measured: without eager loading ~36s, with `prefetch_related` ~2s -- **18x improvement**.
243
+
244
+ **SQLAlchemy:**
245
+
246
+ ```python
247
+ # FIX: selectinload for collections, joinedload for many-to-one
248
+ from sqlalchemy.orm import selectinload, joinedload
249
+ users = session.query(User).options(selectinload(User.orders)).all()
250
+ orders = session.query(Order).options(joinedload(Order.customer)).all()
251
+ ```
252
+
253
+ **Rails ActiveRecord:**
254
+
255
+ ```ruby
256
+ # FIX: includes (auto-strategy), eager_load (JOIN), preload (separate queries)
257
+ posts = Post.includes(:comments).all
258
+
259
+ # PREVENT: strict_loading raises error on lazy load (Rails 6.1+)
260
+ class Post < ApplicationRecord
261
+ self.strict_loading_by_default = true
262
+ end
263
+ ```
264
+
265
+ ### 5.2 Detection Tools
266
+
267
+ | Tool | Framework | Method |
268
+ |---|---|---|
269
+ | Django Debug Toolbar | Django | Shows all SQL per request |
270
+ | `nplusone` | Django/SQLAlchemy | Auto-detects N+1, raises warnings |
271
+ | Bullet gem | Rails | Detects N+1, suggests fixes |
272
+ | `strict_loading` | Rails 6.1+ | Raises exception on lazy load |
273
+ | Sentry / Datadog APM | Any | Identifies repeated query patterns |
274
+
275
+ ### 5.3 More ORM Traps
276
+
277
+ ```python
278
+ # BAD: loads full objects when you need one field
279
+ user_ids = [u.id for u in User.objects.filter(active=True)]
280
+ # GOOD: values_list returns only the column
281
+ user_ids = list(User.objects.filter(active=True).values_list('id', flat=True))
282
+
283
+ # TERRIBLE: filters in Python instead of SQL (fetches 1M rows, keeps 5K)
284
+ active_premium = [u for u in User.objects.all() if u.is_active and u.plan == 'premium']
285
+ # CORRECT: filter in the database
286
+ active_premium = User.objects.filter(is_active=True, plan='premium')
287
+ ```
288
+
289
+ ---
290
+
291
+ ## 6. Join Optimization
292
+
293
+ ### Join Algorithms
294
+
295
+ | Algorithm | Best For | Complexity |
296
+ |---|---|---|
297
+ | Nested Loop | Small outer set, indexed inner | O(n * m) worst |
298
+ | Hash Join | Large unsorted sets, equality joins | O(n + m) |
299
+ | Merge Join | Large pre-sorted sets | O(n + m) |
300
+
301
+ ### Subquery vs JOIN
302
+
303
+ ```sql
304
+ -- SLOW: correlated subquery executes once per outer row
305
+ -- 50K products x 5M order_items: ~45 seconds
306
+ SELECT p.name,
307
+ (SELECT COUNT(*) FROM order_items oi WHERE oi.product_id = p.id)
308
+ FROM products p;
309
+
310
+ -- FAST: JOIN with GROUP BY -- ~800ms (56x faster)
311
+ SELECT p.name, COUNT(oi.id) AS order_count
312
+ FROM products p LEFT JOIN order_items oi ON oi.product_id = p.id
313
+ GROUP BY p.id, p.name;
314
+ ```
315
+
316
+ ### EXISTS vs IN
317
+
318
+ ```sql
319
+ -- EXISTS short-circuits after first match -- faster for large subquery results
320
+ SELECT * FROM users u WHERE EXISTS (
321
+ SELECT 1 FROM orders o WHERE o.user_id = u.id AND o.total > 1000);
322
+ ```
323
+
324
+ ---
325
+
326
+ ## 7. Denormalization and Materialized Views
327
+
328
+ Denormalize when: read-to-write ratio >100:1, fan-out joins (3-5+ tables per request), or repeated aggregation hotspots. **Always exhaust indexing, query rewrites, and caching first.**
329
+
330
+ ### Cached Counter Columns
331
+
332
+ ```sql
333
+ ALTER TABLE authors ADD COLUMN book_count INTEGER DEFAULT 0;
334
+ -- Maintained via trigger on INSERT/DELETE to books table
335
+ -- Before: COUNT(*) query (12ms). After: single column read (0.1ms)
336
+ ```
337
+
338
+ ### Materialized Views
339
+
340
+ ```sql
341
+ CREATE MATERIALIZED VIEW mv_daily_revenue AS
342
+ SELECT DATE(created_at) AS day, COUNT(*) AS orders, SUM(total) AS revenue
343
+ FROM orders WHERE status = 'completed' GROUP BY DATE(created_at)
344
+ WITH DATA;
345
+
346
+ CREATE INDEX idx_mv_revenue_day ON mv_daily_revenue (day);
347
+ REFRESH MATERIALIZED VIEW CONCURRENTLY mv_daily_revenue; -- no read lock
348
+ ```
349
+
350
+ | Refresh Strategy | Freshness | Method |
351
+ |---|---|---|
352
+ | Cron / pg_cron | Minutes-hours | Scheduled `REFRESH` |
353
+ | Trigger-based | Near real-time | Trigger on source tables |
354
+ | CDC / Outbox | Seconds | Change Data Capture pipeline |
355
+
356
+ ---
357
+
358
+ ## 8. Connection Pool Tuning
359
+
360
+ Every PostgreSQL connection uses ~5-10MB of memory. Excessive connections cause context switching that degrades all queries.
361
+
362
+ **HikariCP formula:** `pool_size = (core_count * 2) + effective_spindle_count`
363
+
364
+ For a 4-core server with SSDs and data in RAM: pool_size = 8. The HikariCP wiki documents that **reducing pool size to this formula decreased response times from ~100ms to ~2ms** -- 50x improvement.
365
+
366
+ ### PgBouncer
367
+
368
+ ```ini
369
+ pool_mode = transaction # return connection after each transaction (recommended)
370
+ default_pool_size = 20 # actual PostgreSQL connections
371
+ max_client_conn = 1000 # client connections PgBouncer accepts
372
+ ```
373
+
374
+ **Monitor:** connection wait time (<5ms target), active connections (<80% of pool max), idle ratio (>50% idle = pool too large).
375
+
376
+ ```sql
377
+ -- Check for long-running queries holding connections
378
+ SELECT pid, now() - query_start AS duration, query, state
379
+ FROM pg_stat_activity WHERE state != 'idle' ORDER BY duration DESC LIMIT 10;
380
+ ```
381
+
382
+ ---
383
+
384
+ ## 9. Database-Specific Techniques
385
+
386
+ ### PostgreSQL
387
+
388
+ ```sql
389
+ -- Update stale statistics
390
+ ANALYZE orders;
391
+
392
+ -- Aggressive autovacuum for high-write tables
393
+ ALTER TABLE events SET (
394
+ autovacuum_vacuum_scale_factor = 0.01, -- vacuum after 1% changes (default 20%)
395
+ autovacuum_analyze_scale_factor = 0.005); -- analyze after 0.5% changes
396
+
397
+ -- Concurrent index creation (no table lock)
398
+ CREATE INDEX CONCURRENTLY idx_orders_email ON orders (email);
399
+ ```
400
+
401
+ ### MySQL / InnoDB
402
+
403
+ ```sql
404
+ -- Enable slow query log
405
+ SET GLOBAL slow_query_log = 1;
406
+ SET GLOBAL long_query_time = 0.5;
407
+ SET GLOBAL log_queries_not_using_indexes = 1;
408
+
409
+ -- Check buffer pool hit rate (target: >99%)
410
+ SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read%';
411
+ -- hit_rate = 1 - (reads / read_requests). Below 99% = increase innodb_buffer_pool_size.
412
+
413
+ -- Optimizer hints (8.0+)
414
+ SELECT /*+ INDEX(orders idx_orders_user_date) */ id, total FROM orders WHERE user_id = 42;
415
+ ```
416
+
417
+ ### MongoDB
418
+
419
+ ```javascript
420
+ // Move $match before $lookup to reduce documents entering expensive stages
421
+ db.orders.aggregate([
422
+ { $match: { status: "pending" } }, // filter FIRST
423
+ { $lookup: { from: "customers", localField: "customer_id",
424
+ foreignField: "_id", as: "customer" } }
425
+ ]);
426
+
427
+ // TTL index for automatic cleanup -- prevents table bloat
428
+ db.sessions.createIndex({ "createdAt": 1 }, { expireAfterSeconds: 2592000 });
429
+ ```
430
+
431
+ ---
432
+
433
+ ## 10. Monitoring and Continuous Optimization
434
+
435
+ ### Key Metrics
436
+
437
+ | Metric | Target | Alert |
438
+ |---|---|---|
439
+ | p50 query time | <5ms | >20ms |
440
+ | p95 query time | <50ms | >200ms |
441
+ | p99 query time | <200ms | >1s |
442
+ | Rows scanned / returned | <10:1 | >100:1 |
443
+ | Index hit rate | >99% | <95% |
444
+ | Buffer/cache hit rate | >99% | <95% |
445
+ | Active connections | <80% pool | >90% pool |
446
+
447
+ ### pg_stat_statements (PostgreSQL)
448
+
449
+ ```sql
450
+ CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
451
+
452
+ -- Top queries by total execution time
453
+ SELECT calls, round(total_exec_time::numeric, 2) AS total_ms,
454
+ round(mean_exec_time::numeric, 2) AS mean_ms, query
455
+ FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;
456
+
457
+ -- Tables needing indexes (high sequential scan count)
458
+ SELECT relname, seq_scan, seq_tup_read, idx_scan,
459
+ round(100.0 * idx_scan / GREATEST(seq_scan + idx_scan, 1), 1) AS idx_pct
460
+ FROM pg_stat_user_tables WHERE seq_scan > 100 ORDER BY seq_tup_read DESC LIMIT 20;
461
+
462
+ -- Unused indexes wasting disk and slowing writes
463
+ SELECT indexrelname, idx_scan, pg_size_pretty(pg_relation_size(indexrelid)) AS size
464
+ FROM pg_stat_user_indexes WHERE idx_scan = 0 AND indexrelname NOT LIKE '%_pkey'
465
+ ORDER BY pg_relation_size(indexrelid) DESC LIMIT 20;
466
+ ```
467
+
468
+ ---
469
+
470
+ ## 11. Checklist: Before You Ship a Query
471
+
472
+ - [ ] Run EXPLAIN ANALYZE on production-like data volumes
473
+ - [ ] Rows scanned vs returned ratio below 10:1
474
+ - [ ] Plan shows Index Scan, not Seq Scan on large tables
475
+ - [ ] No N+1 patterns -- related data loaded with eager loading
476
+ - [ ] No SELECT * -- only needed columns projected
477
+ - [ ] Pagination applied -- no unbounded result sets
478
+ - [ ] No functions on indexed columns -- queries are sargable
479
+ - [ ] Connection pool metrics verified under load
480
+ - [ ] Load tested at 2x expected traffic
481
+ - [ ] Monitoring dashboard and latency alerts configured
482
+
483
+ ---
484
+
485
+ ## 12. Sources
486
+
487
+ - [SQL Query Optimization Guide 2025 (AI2sql)](https://ai2sql.io/learn/sql-query-optimization-guide)
488
+ - [High-Performance SQL: 12 Proven Techniques (TXMinds)](https://www.txminds.com/blog/sql-query-optimization-techniques/)
489
+ - [SQL Query Optimization: 15 Techniques (DataCamp)](https://www.datacamp.com/blog/sql-query-optimization)
490
+ - [PostgreSQL EXPLAIN ANALYZE Guide (EDB)](https://www.enterprisedb.com/blog/postgresql-query-optimization-performance-tuning-with-explain-analyze)
491
+ - [PostgreSQL Documentation: Using EXPLAIN](https://www.postgresql.org/docs/current/using-explain.html)
492
+ - [Reading a Postgres EXPLAIN ANALYZE Plan (Thoughtbot)](https://thoughtbot.com/blog/reading-an-explain-analyze-query-plan)
493
+ - [EXPLAIN ANALYZE Guide (Crunchy Data)](https://www.crunchydata.com/blog/get-started-with-explain-analyze)
494
+ - [Postgres Scan Types in EXPLAIN Plans (Crunchy Data)](https://www.crunchydata.com/blog/postgres-scan-types-in-explain-plans)
495
+ - [N+1 Queries (Sentry Documentation)](https://docs.sentry.io/product/issues/issue-details/performance-issues/n-one-queries/)
496
+ - [N+1 Problem Deep Dive (Chaos and Order)](https://www.youngju.dev/blog/database/2026-03-03-n-plus-1-problem-deep-dive.en)
497
+ - [Django N+1 Problem (ScoutAPM)](https://www.scoutapm.com/blog/django-and-the-n1-queries-problem)
498
+ - [Find, Fix, Prevent N+1 on Rails (Doctolib)](https://medium.com/doctolib/how-to-find-fix-and-prevent-n-1-queries-on-rails-6b30d9cfbbaf)
499
+ - [PostgreSQL Indexing: B-Tree vs GIN vs BRIN (Medium)](https://medium.com/@ankush.thavali/postgresql-indexing-strategies-b-tree-vs-gin-vs-brin-38afcfe70d29)
500
+ - [Postgres GIN Indexes (pganalyze)](https://pganalyze.com/blog/gin-index)
501
+ - [Index Types in Aurora/RDS PostgreSQL (AWS)](https://aws.amazon.com/blogs/database/index-types-supported-in-amazon-aurora-postgresql-and-amazon-rds-for-postgresql-gin-gist-hash-brin/)
502
+ - [PostgreSQL Partial Indexes Documentation](https://www.postgresql.org/docs/current/indexes-partial.html)
503
+ - [Speeding Up PostgreSQL With Partial Indexes (Heap)](https://www.heap.io/blog/speeding-up-postgresql-queries-with-partial-indexes)
504
+ - [WordPress Optimization: 1 min to 20ms (WP Bullet)](https://wp-bullet.com/wordpress-database-optimization-case-study-slow-queries-from-1-minute-to-20-ms)
505
+ - [Optimizing 10 Slow SQL Server Queries (C# Corner)](https://www.c-sharpcorner.com/article/performance-tuning-case-study-optimizing-10-slow-sql-server-queries-step-by-ste/)
506
+ - [DBA Guide to Fixing Slow Queries 2025 (Medium)](https://medium.com/@jholt1055/database-query-optimization-the-complete-dba-guide-to-identifying-and-fixing-slow-queries-in-2025-80cf25c1c7bb)
507
+ - [SQL Anti-Patterns (Medium)](https://somnath-dutta.medium.com/sql-anti-patterns-what-not-to-do-in-sql-queries-0a7c5aac2e25)
508
+ - [34+ SQL Antipatterns (Sonra)](https://sonra.io/mastering-sql-how-to-detect-and-avoid-34-common-sql-antipatterns/)
509
+ - [Performance Anti-Patterns in DB Apps (InfoQ)](https://www.infoq.com/articles/Anti-Patterns-Alois-Reitbauer/)
510
+ - [About Pool Sizing (HikariCP Wiki)](https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing)
511
+ - [Optimal Connection Pool Size (Vlad Mihalcea)](https://vladmihalcea.com/optimal-connection-pool-size/)
512
+ - [MySQL Index Cardinality (Lullabot)](https://www.lullabot.com/articles/slow-queries-check-the-cardinality-of-your-mysql-indexes)
513
+ - [MongoDB Query Optimization Docs](https://www.mongodb.com/docs/manual/core/query-optimization/)
514
+ - [Denormalization in Databases (DataCamp)](https://www.datacamp.com/tutorial/denormalization)
515
+ - [Materialized Views in SQL (DEV Community)](https://dev.to/cristiansifuentes/materialized-views-in-sql-supercharging-read-performance-38n8)
@@ -0,0 +1,23 @@
1
+ # Directory Purpose
2
+
3
+ The `backend` performance directory covers techniques for reducing server response times and maximizing throughput.
4
+
5
+ # Key Concepts
6
+
7
+ - Optimizing database interactions
8
+ - Managing concurrency and background tasks
9
+ - Protecting APIs from overload
10
+
11
+ # File Map
12
+
13
+ - `api-latency.md` — identifying and fixing slow endpoints
14
+ - `background-jobs.md` — offloading heavy work from the request cycle
15
+ - `connection-pooling.md` — managing database and network connections
16
+ - `database-query-optimization.md` — indexes, explain plans, and N+1 fixes
17
+ - `rate-limiting-and-throttling.md` — shedding load and protecting resources
18
+
19
+ # Reading Guide
20
+
21
+ If a specific endpoint is slow → read `api-latency.md`
22
+ If the database is bottlenecking → read `database-query-optimization.md` and `connection-pooling.md`
23
+ If a request does too much work → read `background-jobs.md`