@mytechtoday/augment-extensions 0.2.0 → 0.5.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 (420) hide show
  1. package/README.md +614 -39
  2. package/augment-extensions/coding-standards/bash/README.md +196 -0
  3. package/augment-extensions/coding-standards/bash/module.json +163 -0
  4. package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
  5. package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
  6. package/augment-extensions/coding-standards/css/README.md +40 -0
  7. package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
  8. package/augment-extensions/coding-standards/css/module.json +44 -0
  9. package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
  10. package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
  11. package/augment-extensions/coding-standards/html/README.md +40 -0
  12. package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
  13. package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
  14. package/augment-extensions/coding-standards/html/module.json +44 -0
  15. package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
  16. package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
  17. package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
  18. package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
  19. package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
  20. package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
  21. package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
  22. package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
  23. package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
  24. package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
  25. package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
  26. package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
  27. package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
  28. package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
  29. package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
  30. package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
  31. package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
  32. package/augment-extensions/coding-standards/js/README.md +46 -0
  33. package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
  34. package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
  35. package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
  36. package/augment-extensions/coding-standards/js/module.json +49 -0
  37. package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
  38. package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
  39. package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
  40. package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
  41. package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
  42. package/augment-extensions/coding-standards/php/README.md +248 -0
  43. package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
  44. package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
  45. package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
  46. package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
  47. package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
  48. package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
  49. package/augment-extensions/coding-standards/php/module.json +166 -0
  50. package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
  51. package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
  52. package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
  53. package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
  54. package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
  55. package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
  56. package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
  57. package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
  58. package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
  59. package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
  60. package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
  61. package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
  62. package/augment-extensions/coding-standards/php/rules/security.md +358 -0
  63. package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
  64. package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
  65. package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
  66. package/augment-extensions/coding-standards/powershell/README.md +154 -0
  67. package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
  68. package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
  69. package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
  70. package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
  71. package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
  72. package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
  73. package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
  74. package/augment-extensions/coding-standards/powershell/module.json +165 -0
  75. package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
  76. package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
  77. package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
  78. package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
  79. package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
  80. package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
  81. package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
  82. package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
  83. package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
  84. package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
  85. package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
  86. package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
  87. package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
  88. package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
  89. package/augment-extensions/coding-standards/python/README.md +12 -8
  90. package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
  91. package/augment-extensions/coding-standards/python/module.json +8 -4
  92. package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
  93. package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
  94. package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
  95. package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
  96. package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
  97. package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
  98. package/augment-extensions/collections/html-css-js/README.md +82 -0
  99. package/augment-extensions/collections/html-css-js/collection.json +41 -0
  100. package/augment-extensions/domain-rules/database/README.md +161 -0
  101. package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
  102. package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
  103. package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
  104. package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
  105. package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
  106. package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
  107. package/augment-extensions/domain-rules/database/module.json +28 -0
  108. package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
  109. package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
  110. package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
  111. package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
  112. package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
  113. package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
  114. package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
  115. package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
  116. package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
  117. package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
  118. package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
  119. package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
  120. package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
  121. package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
  122. package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
  123. package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
  124. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -0
  125. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -0
  126. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -0
  127. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -0
  128. package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -0
  129. package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -0
  130. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -0
  131. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -0
  132. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -0
  133. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -0
  134. package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -0
  135. package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -0
  136. package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -0
  137. package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -0
  138. package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -0
  139. package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -0
  140. package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -0
  141. package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -0
  142. package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -0
  143. package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -0
  144. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -0
  145. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -0
  146. package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -0
  147. package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -0
  148. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -0
  149. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -0
  150. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/README.md +136 -0
  151. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/SCHEMA-VALIDATION-REPORT.md +216 -0
  152. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/brand-kit-example.yaml +292 -0
  153. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/campaign-brief-example.yaml +389 -0
  154. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/content-calendar-example.yaml +643 -0
  155. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/email-newsletter-example.md +376 -0
  156. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/landing-page-example.md +934 -0
  157. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/ppc-ad-copy-example.md +301 -0
  158. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/seo-blog-post-example.md +347 -0
  159. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/social-media-campaign-example.md +606 -0
  160. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/module.json +50 -0
  161. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/affiliate-influencer-marketing.md +593 -0
  162. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/asset-management.md +418 -0
  163. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/brand-consistency.md +210 -0
  164. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/content-marketing.md +337 -0
  165. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/conversion-optimization.md +455 -0
  166. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/direct-sales.md +499 -0
  167. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/email-marketing.md +439 -0
  168. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/legal-compliance.md +227 -0
  169. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/ppc-advertising.md +569 -0
  170. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/seo-optimization.md +470 -0
  171. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/social-media-marketing.md +414 -0
  172. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/universal-marketing.md +177 -0
  173. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/asset-inventory.schema.json +247 -0
  174. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/brand-kit.schema.json +326 -0
  175. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/campaign-brief.schema.json +342 -0
  176. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/color-palette.schema.json +223 -0
  177. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/content-template.schema.json +383 -0
  178. package/augment-extensions/domain-rules/mcp/README.md +150 -0
  179. package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
  180. package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
  181. package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
  182. package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
  183. package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
  184. package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
  185. package/augment-extensions/domain-rules/mcp/module.json +49 -0
  186. package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
  187. package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
  188. package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
  189. package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
  190. package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
  191. package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
  192. package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
  193. package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
  194. package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
  195. package/augment-extensions/workflows/beads/module.json +4 -3
  196. package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -0
  197. package/augment-extensions/workflows/beads-integration/README.md +143 -0
  198. package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -0
  199. package/augment-extensions/workflows/beads-integration/config/schema.json +140 -0
  200. package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -0
  201. package/augment-extensions/workflows/beads-integration/module.json +75 -0
  202. package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -0
  203. package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -0
  204. package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -0
  205. package/augment-extensions/workflows/database/README.md +195 -0
  206. package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
  207. package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
  208. package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
  209. package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
  210. package/augment-extensions/workflows/database/module.json +42 -0
  211. package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
  212. package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
  213. package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
  214. package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
  215. package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
  216. package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
  217. package/augment-extensions/workflows/database/rules/workflow.md +458 -0
  218. package/augment-extensions/workflows/openspec/module.json +4 -3
  219. package/augment-extensions/writing-standards/screenplay/README.md +300 -0
  220. package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -0
  221. package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -0
  222. package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -0
  223. package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -0
  224. package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
  225. package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -0
  226. package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -0
  227. package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -0
  228. package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -0
  229. package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -0
  230. package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -0
  231. package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -0
  232. package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -0
  233. package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -0
  234. package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -0
  235. package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -0
  236. package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -0
  237. package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -0
  238. package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -0
  239. package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -0
  240. package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -0
  241. package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -0
  242. package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -0
  243. package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -0
  244. package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -0
  245. package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -0
  246. package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -0
  247. package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -0
  248. package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -0
  249. package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -0
  250. package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -0
  251. package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -0
  252. package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -0
  253. package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -0
  254. package/augment-extensions/writing-standards/screenplay/module.json +124 -0
  255. package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -0
  256. package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -0
  257. package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -0
  258. package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -0
  259. package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -0
  260. package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -0
  261. package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -0
  262. package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -0
  263. package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -0
  264. package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -0
  265. package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -0
  266. package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -0
  267. package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -0
  268. package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -0
  269. package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -0
  270. package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -0
  271. package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -0
  272. package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -0
  273. package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -0
  274. package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -0
  275. package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
  276. package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -0
  277. package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -0
  278. package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -0
  279. package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -0
  280. package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -0
  281. package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -0
  282. package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -0
  283. package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -0
  284. package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -0
  285. package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -0
  286. package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -0
  287. package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -0
  288. package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -0
  289. package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -0
  290. package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -0
  291. package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -0
  292. package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -0
  293. package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -0
  294. package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -0
  295. package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -0
  296. package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -0
  297. package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -0
  298. package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -0
  299. package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -0
  300. package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -0
  301. package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -0
  302. package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -0
  303. package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -0
  304. package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -0
  305. package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -0
  306. package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -0
  307. package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -0
  308. package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -0
  309. package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -0
  310. package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -0
  311. package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -0
  312. package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -0
  313. package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -0
  314. package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -0
  315. package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -0
  316. package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -0
  317. package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -0
  318. package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -0
  319. package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -0
  320. package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -0
  321. package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -0
  322. package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -0
  323. package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -0
  324. package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -0
  325. package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -0
  326. package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -0
  327. package/cli/MODULES.md +302 -0
  328. package/cli/dist/cli.js +168 -10
  329. package/cli/dist/cli.js.map +1 -1
  330. package/cli/dist/commands/catalog.d.ts +13 -0
  331. package/cli/dist/commands/catalog.d.ts.map +1 -0
  332. package/cli/dist/commands/catalog.js +104 -0
  333. package/cli/dist/commands/catalog.js.map +1 -0
  334. package/cli/dist/commands/gui.d.ts +6 -0
  335. package/cli/dist/commands/gui.d.ts.map +1 -0
  336. package/cli/dist/commands/gui.js +211 -0
  337. package/cli/dist/commands/gui.js.map +1 -0
  338. package/cli/dist/commands/init.d.ts.map +1 -1
  339. package/cli/dist/commands/init.js +12 -0
  340. package/cli/dist/commands/init.js.map +1 -1
  341. package/cli/dist/commands/install-rules.d.ts +14 -0
  342. package/cli/dist/commands/install-rules.d.ts.map +1 -0
  343. package/cli/dist/commands/install-rules.js +127 -0
  344. package/cli/dist/commands/install-rules.js.map +1 -0
  345. package/cli/dist/commands/link.d.ts.map +1 -1
  346. package/cli/dist/commands/link.js +9 -11
  347. package/cli/dist/commands/link.js.map +1 -1
  348. package/cli/dist/commands/list.d.ts.map +1 -1
  349. package/cli/dist/commands/list.js +11 -28
  350. package/cli/dist/commands/list.js.map +1 -1
  351. package/cli/dist/commands/mcp.d.ts +48 -0
  352. package/cli/dist/commands/mcp.d.ts.map +1 -0
  353. package/cli/dist/commands/mcp.js +229 -0
  354. package/cli/dist/commands/mcp.js.map +1 -0
  355. package/cli/dist/commands/self-remove.d.ts +7 -0
  356. package/cli/dist/commands/self-remove.d.ts.map +1 -0
  357. package/cli/dist/commands/self-remove.js +179 -0
  358. package/cli/dist/commands/self-remove.js.map +1 -0
  359. package/cli/dist/commands/show.d.ts +19 -0
  360. package/cli/dist/commands/show.d.ts.map +1 -1
  361. package/cli/dist/commands/show.js +478 -63
  362. package/cli/dist/commands/show.js.map +1 -1
  363. package/cli/dist/commands/skill.d.ts +67 -0
  364. package/cli/dist/commands/skill.d.ts.map +1 -0
  365. package/cli/dist/commands/skill.js +513 -0
  366. package/cli/dist/commands/skill.js.map +1 -0
  367. package/cli/dist/commands/unlink.d.ts +6 -0
  368. package/cli/dist/commands/unlink.d.ts.map +1 -0
  369. package/cli/dist/commands/unlink.js +115 -0
  370. package/cli/dist/commands/unlink.js.map +1 -0
  371. package/cli/dist/commands/validate.d.ts +6 -0
  372. package/cli/dist/commands/validate.d.ts.map +1 -0
  373. package/cli/dist/commands/validate.js +159 -0
  374. package/cli/dist/commands/validate.js.map +1 -0
  375. package/cli/dist/types/gui.d.ts +62 -0
  376. package/cli/dist/types/gui.d.ts.map +1 -0
  377. package/cli/dist/types/gui.js +30 -0
  378. package/cli/dist/types/gui.js.map +1 -0
  379. package/cli/dist/utils/catalog-sync.d.ts +22 -0
  380. package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
  381. package/cli/dist/utils/catalog-sync.js +157 -0
  382. package/cli/dist/utils/catalog-sync.js.map +1 -0
  383. package/cli/dist/utils/character-count.d.ts +56 -0
  384. package/cli/dist/utils/character-count.d.ts.map +1 -0
  385. package/cli/dist/utils/character-count.js +190 -0
  386. package/cli/dist/utils/character-count.js.map +1 -0
  387. package/cli/dist/utils/documentation-validator.d.ts +18 -0
  388. package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
  389. package/cli/dist/utils/documentation-validator.js +233 -0
  390. package/cli/dist/utils/documentation-validator.js.map +1 -0
  391. package/cli/dist/utils/gui-helpers.d.ts +23 -0
  392. package/cli/dist/utils/gui-helpers.d.ts.map +1 -0
  393. package/cli/dist/utils/gui-helpers.js +159 -0
  394. package/cli/dist/utils/gui-helpers.js.map +1 -0
  395. package/cli/dist/utils/install-rules.d.ts +32 -0
  396. package/cli/dist/utils/install-rules.d.ts.map +1 -0
  397. package/cli/dist/utils/install-rules.js +375 -0
  398. package/cli/dist/utils/install-rules.js.map +1 -0
  399. package/cli/dist/utils/mcp-integration.d.ts +70 -0
  400. package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
  401. package/cli/dist/utils/mcp-integration.js +292 -0
  402. package/cli/dist/utils/mcp-integration.js.map +1 -0
  403. package/cli/dist/utils/module-system.d.ts +232 -0
  404. package/cli/dist/utils/module-system.d.ts.map +1 -0
  405. package/cli/dist/utils/module-system.js +900 -0
  406. package/cli/dist/utils/module-system.js.map +1 -0
  407. package/cli/dist/utils/modules-catalog.d.ts +33 -0
  408. package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
  409. package/cli/dist/utils/modules-catalog.js +163 -0
  410. package/cli/dist/utils/modules-catalog.js.map +1 -0
  411. package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
  412. package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
  413. package/cli/dist/utils/rule-install-hooks.js +224 -0
  414. package/cli/dist/utils/rule-install-hooks.js.map +1 -0
  415. package/cli/dist/utils/skill-system.d.ts +95 -0
  416. package/cli/dist/utils/skill-system.d.ts.map +1 -0
  417. package/cli/dist/utils/skill-system.js +313 -0
  418. package/cli/dist/utils/skill-system.js.map +1 -0
  419. package/modules.md +559 -105
  420. package/package.json +17 -6
@@ -0,0 +1,671 @@
1
+ # Relational Database Indexing
2
+
3
+ ## Overview
4
+
5
+ This document covers relational database indexing strategies, including index types (B-tree, hash, GiST, GIN), when to create indexes, composite indexes, covering indexes, partial indexes, index maintenance, query plan analysis, and database-specific indexing features.
6
+
7
+ ---
8
+
9
+ ## Index Fundamentals
10
+
11
+ ### What is an Index?
12
+
13
+ **Definition**: A data structure that improves the speed of data retrieval operations
14
+
15
+ **Analogy**: Like an index in a book - helps you find information quickly without reading every page
16
+
17
+ **Trade-offs:**
18
+ - ✅ **Faster reads**: Queries using indexed columns are faster
19
+ - ❌ **Slower writes**: INSERT, UPDATE, DELETE operations are slower
20
+ - ❌ **Storage overhead**: Indexes consume disk space
21
+ - ❌ **Maintenance overhead**: Indexes need to be updated
22
+
23
+ ### When to Create Indexes
24
+
25
+ **Create indexes for:**
26
+ - ✅ Primary keys (automatic in most databases)
27
+ - ✅ Foreign keys
28
+ - ✅ Columns used in WHERE clauses
29
+ - ✅ Columns used in JOIN conditions
30
+ - ✅ Columns used in ORDER BY clauses
31
+ - ✅ Columns used in GROUP BY clauses
32
+ - ✅ Columns with high cardinality (many unique values)
33
+
34
+ **Avoid indexes for:**
35
+ - ❌ Small tables (< 1000 rows)
36
+ - ❌ Columns with low cardinality (few unique values)
37
+ - ❌ Columns that are frequently updated
38
+ - ❌ Tables with high write-to-read ratio
39
+ - ❌ Columns rarely used in queries
40
+
41
+ ---
42
+
43
+ ## Index Types
44
+
45
+ ### B-Tree Indexes (Default)
46
+
47
+ **Best for:** Equality and range queries
48
+
49
+ **Characteristics:**
50
+ - Default index type in most databases
51
+ - Balanced tree structure
52
+ - Supports <, <=, =, >=, >, BETWEEN, IN
53
+ - Supports ORDER BY
54
+ - Supports prefix matching (LIKE 'prefix%')
55
+
56
+ **Example:**
57
+ ```sql
58
+ -- PostgreSQL: Create B-tree index (default)
59
+ CREATE INDEX idx_users_email ON users(email);
60
+ CREATE INDEX idx_orders_created_at ON orders(created_at);
61
+
62
+ -- Queries that benefit from B-tree index
63
+ SELECT * FROM users WHERE email = 'user@example.com';
64
+ SELECT * FROM orders WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';
65
+ SELECT * FROM orders ORDER BY created_at DESC;
66
+ SELECT * FROM users WHERE email LIKE 'user%';
67
+ ```
68
+
69
+ **When to use:**
70
+ - ✅ Most common use case
71
+ - ✅ Range queries
72
+ - ✅ Sorting
73
+ - ✅ Prefix matching
74
+
75
+ ### Hash Indexes
76
+
77
+ **Best for:** Equality comparisons only
78
+
79
+ **Characteristics:**
80
+ - Faster than B-tree for equality comparisons
81
+ - Does NOT support range queries
82
+ - Does NOT support ORDER BY
83
+ - Smaller than B-tree indexes
84
+
85
+ **Example:**
86
+ ```sql
87
+ -- PostgreSQL: Create hash index
88
+ CREATE INDEX idx_users_email_hash ON users USING HASH(email);
89
+
90
+ -- Query that benefits from hash index
91
+ SELECT * FROM users WHERE email = 'user@example.com';
92
+
93
+ -- Queries that do NOT benefit from hash index
94
+ SELECT * FROM users WHERE email > 'a@example.com'; -- Range query
95
+ SELECT * FROM users ORDER BY email; -- Sorting
96
+ ```
97
+
98
+ **When to use:**
99
+ - ✅ Equality comparisons only
100
+ - ✅ High cardinality columns
101
+ - ❌ Not widely used (B-tree is usually sufficient)
102
+
103
+ ### GiST Indexes (Generalized Search Tree)
104
+
105
+ **Best for:** Geometric data, full-text search, custom data types
106
+
107
+ **Characteristics:**
108
+ - Supports complex data types
109
+ - Extensible (custom operators)
110
+ - Used by PostGIS for geospatial data
111
+
112
+ **Example:**
113
+ ```sql
114
+ -- PostgreSQL: GiST index for geometric data
115
+ CREATE INDEX idx_locations_point ON locations USING GIST(point);
116
+
117
+ -- Query geometric data
118
+ SELECT * FROM locations
119
+ WHERE point <-> '(0,0)'::point < 10; -- Within 10 units of origin
120
+
121
+ -- GiST index for full-text search
122
+ CREATE INDEX idx_articles_content_gist ON articles USING GIST(to_tsvector('english', content));
123
+ ```
124
+
125
+ **When to use:**
126
+ - ✅ Geospatial queries (PostGIS)
127
+ - ✅ Full-text search
128
+ - ✅ Range types
129
+ - ✅ Custom data types
130
+
131
+ ### GIN Indexes (Generalized Inverted Index)
132
+
133
+ **Best for:** Array, JSONB, full-text search
134
+
135
+ **Characteristics:**
136
+ - Optimized for multi-value columns
137
+ - Larger than B-tree indexes
138
+ - Slower writes, faster reads
139
+ - Ideal for JSONB and array queries
140
+
141
+ **Example:**
142
+ ```sql
143
+ -- PostgreSQL: GIN index for JSONB
144
+ CREATE INDEX idx_products_attributes ON products USING GIN(attributes);
145
+
146
+ -- Query JSONB
147
+ SELECT * FROM products WHERE attributes @> '{"brand": "Dell"}';
148
+
149
+ -- GIN index for arrays
150
+ CREATE INDEX idx_posts_tags ON posts USING GIN(tags);
151
+
152
+ -- Query arrays
153
+ SELECT * FROM posts WHERE tags @> ARRAY['postgresql'];
154
+
155
+ -- GIN index for full-text search
156
+ CREATE INDEX idx_articles_content_gin ON articles USING GIN(to_tsvector('english', content));
157
+
158
+ -- Full-text search
159
+ SELECT * FROM articles
160
+ WHERE to_tsvector('english', content) @@ to_tsquery('english', 'database & optimization');
161
+ ```
162
+
163
+ **When to use:**
164
+ - ✅ JSONB queries
165
+ - ✅ Array queries
166
+ - ✅ Full-text search
167
+ - ✅ Multi-value columns
168
+
169
+ ### BRIN Indexes (Block Range Index)
170
+
171
+ **Best for:** Very large tables with naturally ordered data
172
+
173
+ **Characteristics:**
174
+ - Extremely small index size
175
+ - Fast index creation
176
+ - Best for time-series data
177
+ - Only effective if data is physically ordered
178
+
179
+ **Example:**
180
+ ```sql
181
+ -- PostgreSQL: BRIN index for time-series data
182
+ CREATE INDEX idx_logs_created_at_brin ON logs USING BRIN(created_at);
183
+
184
+ -- Query time-series data
185
+ SELECT * FROM logs WHERE created_at > '2024-01-01';
186
+ ```
187
+
188
+ **When to use:**
189
+ - ✅ Very large tables (millions of rows)
190
+ - ✅ Time-series data
191
+ - ✅ Naturally ordered data
192
+ - ✅ Range queries on ordered columns
193
+ - ❌ Not for randomly distributed data
194
+
195
+ ---
196
+
197
+ ## Composite Indexes
198
+
199
+ ### Definition
200
+
201
+ **Composite index**: Index on multiple columns
202
+
203
+ **Example:**
204
+ ```sql
205
+ -- Create composite index
206
+ CREATE INDEX idx_orders_user_status ON orders(user_id, status);
207
+
208
+ -- Query benefits from composite index
209
+ SELECT * FROM orders
210
+ WHERE user_id = 123 AND status = 'pending';
211
+
212
+ -- Query partially benefits (uses user_id only)
213
+ SELECT * FROM orders WHERE user_id = 123;
214
+
215
+ -- Query does NOT benefit (status is not leftmost column)
216
+ SELECT * FROM orders WHERE status = 'pending';
217
+ ```
218
+
219
+ ### Column Order Matters
220
+
221
+ **Rule**: Leftmost prefix rule
222
+
223
+ **Best Practices:**
224
+ - ✅ Put most selective column first
225
+ - ✅ Put columns used in equality comparisons before range comparisons
226
+ - ✅ Consider query patterns
227
+
228
+ **Example:**
229
+ ```sql
230
+ -- Good: Most selective column first
231
+ CREATE INDEX idx_orders_user_status_date ON orders(user_id, status, created_at);
232
+
233
+ -- Queries that benefit:
234
+ -- 1. All three columns
235
+ SELECT * FROM orders WHERE user_id = 123 AND status = 'pending' AND created_at > '2024-01-01';
236
+
237
+ -- 2. First two columns
238
+ SELECT * FROM orders WHERE user_id = 123 AND status = 'pending';
239
+
240
+ -- 3. First column only
241
+ SELECT * FROM orders WHERE user_id = 123;
242
+
243
+ -- Queries that do NOT benefit:
244
+ -- 1. Second column only
245
+ SELECT * FROM orders WHERE status = 'pending';
246
+
247
+ -- 2. Third column only
248
+ SELECT * FROM orders WHERE created_at > '2024-01-01';
249
+ ```
250
+
251
+ ### When to Use Composite Indexes
252
+
253
+ **Use composite indexes when:**
254
+ - ✅ Queries filter on multiple columns together
255
+ - ✅ Columns are frequently queried together
256
+ - ✅ Single-column indexes are not selective enough
257
+
258
+ **Example:**
259
+ ```sql
260
+ -- Instead of two separate indexes:
261
+ CREATE INDEX idx_orders_user ON orders(user_id);
262
+ CREATE INDEX idx_orders_status ON orders(status);
263
+
264
+ -- Use one composite index:
265
+ CREATE INDEX idx_orders_user_status ON orders(user_id, status);
266
+ ```
267
+
268
+ ---
269
+
270
+ ## Covering Indexes
271
+
272
+ ### Definition
273
+
274
+ **Covering index**: Index that includes all columns needed by a query
275
+
276
+ **Benefit**: Query can be satisfied entirely from the index (index-only scan)
277
+
278
+ **Example:**
279
+ ```sql
280
+ -- PostgreSQL: Create covering index with INCLUDE
281
+ CREATE INDEX idx_users_email_covering ON users(email) INCLUDE (name, created_at);
282
+
283
+ -- Query uses index-only scan (no table access needed)
284
+ SELECT name, created_at FROM users WHERE email = 'user@example.com';
285
+
286
+ -- EXPLAIN output shows "Index Only Scan"
287
+ EXPLAIN SELECT name, created_at FROM users WHERE email = 'user@example.com';
288
+ ```
289
+
290
+ **MySQL: Covering index**
291
+ ```sql
292
+ -- MySQL: Add columns to index to create covering index
293
+ CREATE INDEX idx_users_email_name_created ON users(email, name, created_at);
294
+
295
+ -- Query uses covering index
296
+ SELECT name, created_at FROM users WHERE email = 'user@example.com';
297
+ ```
298
+
299
+ **When to use:**
300
+ - ✅ Frequently executed queries
301
+ - ✅ Queries selecting few columns
302
+ - ✅ Performance-critical queries
303
+ - ❌ Don't include too many columns (index bloat)
304
+
305
+ ---
306
+
307
+ ## Partial Indexes
308
+
309
+ ### Definition
310
+
311
+ **Partial index**: Index on subset of rows
312
+
313
+ **Benefit**: Smaller, more efficient index
314
+
315
+ **Example:**
316
+ ```sql
317
+ -- PostgreSQL: Create partial index
318
+ CREATE INDEX idx_orders_pending ON orders(created_at)
319
+ WHERE status = 'pending';
320
+
321
+ -- Query benefits from smaller, more efficient index
322
+ SELECT * FROM orders
323
+ WHERE status = 'pending' AND created_at > '2024-01-01';
324
+
325
+ -- Another example: Index only active users
326
+ CREATE INDEX idx_users_active_email ON users(email)
327
+ WHERE deleted_at IS NULL;
328
+
329
+ -- Query benefits
330
+ SELECT * FROM users
331
+ WHERE email = 'user@example.com' AND deleted_at IS NULL;
332
+ ```
333
+
334
+ **When to use:**
335
+ - ✅ Queries frequently filter on specific values
336
+ - ✅ Large tables with subset of active rows
337
+ - ✅ Soft-delete patterns
338
+ - ✅ Status-based filtering
339
+
340
+ **Database support:**
341
+ - ✅ PostgreSQL: Full support
342
+ - ❌ MySQL: No support (use filtered index workaround)
343
+ - ✅ SQL Server: Filtered indexes
344
+
345
+ ---
346
+
347
+ ## Unique Indexes
348
+
349
+ ### Definition
350
+
351
+ **Unique index**: Enforces uniqueness constraint
352
+
353
+ **Example:**
354
+ ```sql
355
+ -- Create unique index
356
+ CREATE UNIQUE INDEX idx_users_email_unique ON users(email);
357
+
358
+ -- Composite unique index
359
+ CREATE UNIQUE INDEX idx_user_prefs_unique ON user_preferences(user_id, preference_key);
360
+
361
+ -- Partial unique index (PostgreSQL)
362
+ CREATE UNIQUE INDEX idx_users_username_active ON users(username)
363
+ WHERE deleted_at IS NULL;
364
+ ```
365
+
366
+ **When to use:**
367
+ - ✅ Enforce uniqueness constraints
368
+ - ✅ Prevent duplicate data
369
+ - ✅ Faster than CHECK constraint
370
+
371
+ ---
372
+
373
+ ## Index Maintenance
374
+
375
+ ### Analyzing Index Usage
376
+
377
+ **PostgreSQL: Check index usage**
378
+ ```sql
379
+ -- Find unused indexes
380
+ SELECT
381
+ schemaname,
382
+ tablename,
383
+ indexname,
384
+ idx_scan,
385
+ idx_tup_read,
386
+ idx_tup_fetch
387
+ FROM pg_stat_user_indexes
388
+ WHERE idx_scan = 0
389
+ AND indexname NOT LIKE 'pg_toast%'
390
+ ORDER BY pg_relation_size(indexrelid) DESC;
391
+
392
+ -- Find index size
393
+ SELECT
394
+ schemaname,
395
+ tablename,
396
+ indexname,
397
+ pg_size_pretty(pg_relation_size(indexrelid)) AS index_size
398
+ FROM pg_stat_user_indexes
399
+ ORDER BY pg_relation_size(indexrelid) DESC;
400
+
401
+ -- Find duplicate indexes
402
+ SELECT
403
+ pg_size_pretty(SUM(pg_relation_size(idx))::BIGINT) AS size,
404
+ (array_agg(idx))[1] AS idx1,
405
+ (array_agg(idx))[2] AS idx2,
406
+ (array_agg(idx))[3] AS idx3,
407
+ (array_agg(idx))[4] AS idx4
408
+ FROM (
409
+ SELECT
410
+ indexrelid::regclass AS idx,
411
+ (indrelid::text ||E'\n'|| indclass::text ||E'\n'|| indkey::text ||E'\n'||
412
+ COALESCE(indexprs::text,'')||E'\n' || COALESCE(indpred::text,'')) AS key
413
+ FROM pg_index
414
+ ) sub
415
+ GROUP BY key
416
+ HAVING COUNT(*) > 1
417
+ ORDER BY SUM(pg_relation_size(idx)) DESC;
418
+ ```
419
+
420
+ **MySQL: Check index usage**
421
+ ```sql
422
+ -- Find unused indexes
423
+ SELECT
424
+ t.TABLE_SCHEMA,
425
+ t.TABLE_NAME,
426
+ s.INDEX_NAME,
427
+ s.COLUMN_NAME
428
+ FROM information_schema.TABLES t
429
+ LEFT JOIN information_schema.STATISTICS s
430
+ ON t.TABLE_SCHEMA = s.TABLE_SCHEMA
431
+ AND t.TABLE_NAME = s.TABLE_NAME
432
+ WHERE t.TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema')
433
+ AND s.INDEX_NAME IS NOT NULL
434
+ ORDER BY t.TABLE_SCHEMA, t.TABLE_NAME, s.INDEX_NAME;
435
+ ```
436
+
437
+ ### Index Bloat
438
+
439
+ **Definition**: Wasted space in indexes due to updates and deletes
440
+
441
+ **PostgreSQL: Check index bloat**
442
+ ```sql
443
+ -- Estimate index bloat
444
+ SELECT
445
+ schemaname,
446
+ tablename,
447
+ indexname,
448
+ pg_size_pretty(pg_relation_size(indexrelid)) AS index_size,
449
+ ROUND(100 * (pg_relation_size(indexrelid) - pg_relation_size(indexrelid, 'main')) /
450
+ NULLIF(pg_relation_size(indexrelid), 0), 2) AS bloat_pct
451
+ FROM pg_stat_user_indexes
452
+ ORDER BY pg_relation_size(indexrelid) DESC;
453
+ ```
454
+
455
+ **Fix index bloat:**
456
+ ```sql
457
+ -- PostgreSQL: Rebuild index concurrently
458
+ REINDEX INDEX CONCURRENTLY idx_users_email;
459
+
460
+ -- Or recreate index
461
+ DROP INDEX CONCURRENTLY idx_users_email;
462
+ CREATE INDEX CONCURRENTLY idx_users_email ON users(email);
463
+
464
+ -- MySQL: Rebuild index
465
+ ALTER TABLE users DROP INDEX idx_users_email, ADD INDEX idx_users_email(email);
466
+ ```
467
+
468
+ ### Vacuuming (PostgreSQL)
469
+
470
+ **Purpose**: Reclaim space and update statistics
471
+
472
+ ```sql
473
+ -- Vacuum table (reclaim space)
474
+ VACUUM users;
475
+
476
+ -- Vacuum and analyze (reclaim space + update statistics)
477
+ VACUUM ANALYZE users;
478
+
479
+ -- Full vacuum (locks table, reclaims more space)
480
+ VACUUM FULL users;
481
+
482
+ -- Autovacuum settings (postgresql.conf)
483
+ autovacuum = on
484
+ autovacuum_vacuum_scale_factor = 0.2
485
+ autovacuum_analyze_scale_factor = 0.1
486
+ ```
487
+
488
+ ---
489
+
490
+ ## Analyzing Query Plans
491
+
492
+ ### EXPLAIN Command
493
+
494
+ **PostgreSQL:**
495
+ ```sql
496
+ -- Show query plan
497
+ EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';
498
+
499
+ -- Show query plan with actual execution
500
+ EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'user@example.com';
501
+
502
+ -- Show query plan with more details
503
+ EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT * FROM users WHERE email = 'user@example.com';
504
+ ```
505
+
506
+ **MySQL:**
507
+ ```sql
508
+ -- Show query plan
509
+ EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';
510
+
511
+ -- Show query plan with more details
512
+ EXPLAIN FORMAT=JSON SELECT * FROM users WHERE email = 'user@example.com';
513
+ ```
514
+
515
+ ### Reading Query Plans
516
+
517
+ **Key metrics:**
518
+ - **Seq Scan**: Full table scan (slow for large tables)
519
+ - **Index Scan**: Using index (good)
520
+ - **Index Only Scan**: Using covering index (best)
521
+ - **Bitmap Index Scan**: Using multiple indexes
522
+ - **Cost**: Estimated cost (lower is better)
523
+ - **Rows**: Estimated rows returned
524
+ - **Actual Time**: Actual execution time (EXPLAIN ANALYZE)
525
+
526
+ **Example:**
527
+ ```sql
528
+ -- Bad: Sequential scan
529
+ EXPLAIN SELECT * FROM users WHERE name = 'John';
530
+ -- Output: Seq Scan on users (cost=0.00..1000.00 rows=100)
531
+
532
+ -- Good: Index scan
533
+ EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';
534
+ -- Output: Index Scan using idx_users_email on users (cost=0.29..8.30 rows=1)
535
+
536
+ -- Best: Index only scan
537
+ EXPLAIN SELECT name FROM users WHERE email = 'user@example.com';
538
+ -- Output: Index Only Scan using idx_users_email_covering on users (cost=0.29..8.30 rows=1)
539
+ ```
540
+
541
+ ---
542
+
543
+ ## Database-Specific Indexing Features
544
+
545
+ ### PostgreSQL
546
+
547
+ **Expression Indexes:**
548
+ ```sql
549
+ -- Index on expression
550
+ CREATE INDEX idx_users_lower_email ON users(LOWER(email));
551
+
552
+ -- Query uses expression index
553
+ SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
554
+ ```
555
+
556
+ **Concurrent Index Creation:**
557
+ ```sql
558
+ -- Create index without locking table
559
+ CREATE INDEX CONCURRENTLY idx_users_email ON users(email);
560
+ ```
561
+
562
+ **Index-Only Scans:**
563
+ ```sql
564
+ -- Covering index for index-only scans
565
+ CREATE INDEX idx_users_email_covering ON users(email) INCLUDE (name, created_at);
566
+ ```
567
+
568
+ ### MySQL
569
+
570
+ **Prefix Indexes:**
571
+ ```sql
572
+ -- Index first 10 characters of column
573
+ CREATE INDEX idx_users_email_prefix ON users(email(10));
574
+ ```
575
+
576
+ **Fulltext Indexes:**
577
+ ```sql
578
+ -- Create fulltext index
579
+ CREATE FULLTEXT INDEX idx_articles_content ON articles(content);
580
+
581
+ -- Fulltext search
582
+ SELECT * FROM articles WHERE MATCH(content) AGAINST('database optimization');
583
+ ```
584
+
585
+ ### SQL Server
586
+
587
+ **Columnstore Indexes:**
588
+ ```sql
589
+ -- Create columnstore index for analytics
590
+ CREATE COLUMNSTORE INDEX idx_sales_columnstore ON sales(product_id, sale_date, amount);
591
+ ```
592
+
593
+ **Filtered Indexes:**
594
+ ```sql
595
+ -- Create filtered index (like PostgreSQL partial index)
596
+ CREATE INDEX idx_orders_pending ON orders(created_at)
597
+ WHERE status = 'pending';
598
+ ```
599
+
600
+ ---
601
+
602
+ ## Indexing Best Practices
603
+
604
+ ### DO
605
+
606
+ - ✅ Index primary keys (automatic)
607
+ - ✅ Index foreign keys
608
+ - ✅ Index columns used in WHERE clauses
609
+ - ✅ Index columns used in JOIN conditions
610
+ - ✅ Index columns used in ORDER BY
611
+ - ✅ Use composite indexes for multi-column queries
612
+ - ✅ Use covering indexes for frequently executed queries
613
+ - ✅ Use partial indexes for filtered queries
614
+ - ✅ Monitor index usage and remove unused indexes
615
+ - ✅ Rebuild indexes periodically to reduce bloat
616
+ - ✅ Use EXPLAIN to verify index usage
617
+
618
+ ### DON'T
619
+
620
+ - ❌ Index every column
621
+ - ❌ Create duplicate indexes
622
+ - ❌ Index small tables (< 1000 rows)
623
+ - ❌ Index columns with low cardinality
624
+ - ❌ Index columns that are frequently updated
625
+ - ❌ Create indexes without testing
626
+ - ❌ Ignore index maintenance
627
+ - ❌ Create indexes during peak hours (without CONCURRENTLY)
628
+
629
+ ---
630
+
631
+ ## Indexing Checklist
632
+
633
+ ### Planning Phase
634
+
635
+ - [ ] Identify frequently executed queries
636
+ - [ ] Identify columns used in WHERE clauses
637
+ - [ ] Identify columns used in JOIN conditions
638
+ - [ ] Identify columns used in ORDER BY
639
+ - [ ] Identify columns used in GROUP BY
640
+ - [ ] Consider composite indexes for multi-column queries
641
+ - [ ] Consider covering indexes for frequently executed queries
642
+ - [ ] Consider partial indexes for filtered queries
643
+
644
+ ### Implementation Phase
645
+
646
+ - [ ] Create indexes on foreign keys
647
+ - [ ] Create indexes on frequently queried columns
648
+ - [ ] Use appropriate index type (B-tree, hash, GIN, GiST, BRIN)
649
+ - [ ] Use CONCURRENTLY in PostgreSQL (no table lock)
650
+ - [ ] Test index creation in staging first
651
+ - [ ] Verify index usage with EXPLAIN
652
+
653
+ ### Maintenance Phase
654
+
655
+ - [ ] Monitor index usage
656
+ - [ ] Remove unused indexes
657
+ - [ ] Rebuild bloated indexes
658
+ - [ ] Update statistics (ANALYZE)
659
+ - [ ] Vacuum tables (PostgreSQL)
660
+ - [ ] Review query plans regularly
661
+
662
+ ---
663
+
664
+ ## Related Documentation
665
+
666
+ - **relational-databases.md**: Relational database fundamentals
667
+ - **relational-schema-design.md**: Schema design and normalization
668
+ - **relational-query-optimization.md**: Query optimization
669
+ - **performance-optimization.md**: General performance optimization
670
+ - **universal-best-practices.md**: General database best practices
671
+