@mytechtoday/augment-extensions 0.1.2 → 0.4.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 (316) 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/mcp/README.md +150 -0
  125. package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
  126. package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
  127. package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
  128. package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
  129. package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
  130. package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
  131. package/augment-extensions/domain-rules/mcp/module.json +49 -0
  132. package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
  133. package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
  134. package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
  135. package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
  136. package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
  137. package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
  138. package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
  139. package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
  140. package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
  141. package/augment-extensions/domain-rules/wordpress/README.md +163 -0
  142. package/augment-extensions/domain-rules/wordpress/module.json +32 -0
  143. package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -0
  144. package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -0
  145. package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -0
  146. package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -0
  147. package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -0
  148. package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -0
  149. package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -0
  150. package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -0
  151. package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -0
  152. package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -0
  153. package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -0
  154. package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -0
  155. package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -0
  156. package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -0
  157. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -0
  158. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -0
  159. package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -0
  160. package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -0
  161. package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -0
  162. package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -0
  163. package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -0
  164. package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -0
  165. package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -0
  166. package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -0
  167. package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -0
  168. package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -0
  169. package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -0
  170. package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -0
  171. package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -0
  172. package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -0
  173. package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -0
  174. package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -0
  175. package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -0
  176. package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -0
  177. package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -0
  178. package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -0
  179. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -0
  180. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -0
  181. package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -0
  182. package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -0
  183. package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -0
  184. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -0
  185. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -0
  186. package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -0
  187. package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -0
  188. package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -0
  189. package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -0
  190. package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -0
  191. package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -0
  192. package/augment-extensions/examples/rest-api-plugin/README.md +98 -0
  193. package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -0
  194. package/augment-extensions/examples/rest-api-plugin/module.json +40 -0
  195. package/augment-extensions/examples/woocommerce-extension/README.md +98 -0
  196. package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -0
  197. package/augment-extensions/examples/woocommerce-extension/module.json +40 -0
  198. package/augment-extensions/workflows/beads/module.json +4 -3
  199. package/augment-extensions/workflows/database/README.md +195 -0
  200. package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
  201. package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
  202. package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
  203. package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
  204. package/augment-extensions/workflows/database/module.json +42 -0
  205. package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
  206. package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
  207. package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
  208. package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
  209. package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
  210. package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
  211. package/augment-extensions/workflows/database/rules/workflow.md +458 -0
  212. package/augment-extensions/workflows/openspec/module.json +4 -3
  213. package/augment-extensions/workflows/wordpress-plugin/README.md +232 -0
  214. package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -0
  215. package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -0
  216. package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -0
  217. package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -0
  218. package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -0
  219. package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -0
  220. package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -0
  221. package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -0
  222. package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -0
  223. package/augment-extensions/workflows/wordpress-plugin/module.json +49 -0
  224. package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -0
  225. package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -0
  226. package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -0
  227. package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -0
  228. package/augment-extensions/writing-standards/screenplay/README.md +171 -0
  229. package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
  230. package/augment-extensions/writing-standards/screenplay/module.json +124 -0
  231. package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
  232. package/cli/MODULES.md +302 -0
  233. package/cli/dist/cli.js +142 -9
  234. package/cli/dist/cli.js.map +1 -1
  235. package/cli/dist/commands/catalog.d.ts +13 -0
  236. package/cli/dist/commands/catalog.d.ts.map +1 -0
  237. package/cli/dist/commands/catalog.js +104 -0
  238. package/cli/dist/commands/catalog.js.map +1 -0
  239. package/cli/dist/commands/gui.d.ts +6 -0
  240. package/cli/dist/commands/gui.d.ts.map +1 -0
  241. package/cli/dist/commands/gui.js +211 -0
  242. package/cli/dist/commands/gui.js.map +1 -0
  243. package/cli/dist/commands/init.d.ts.map +1 -1
  244. package/cli/dist/commands/init.js +12 -0
  245. package/cli/dist/commands/init.js.map +1 -1
  246. package/cli/dist/commands/install-rules.d.ts +14 -0
  247. package/cli/dist/commands/install-rules.d.ts.map +1 -0
  248. package/cli/dist/commands/install-rules.js +127 -0
  249. package/cli/dist/commands/install-rules.js.map +1 -0
  250. package/cli/dist/commands/link.d.ts.map +1 -1
  251. package/cli/dist/commands/link.js +9 -11
  252. package/cli/dist/commands/link.js.map +1 -1
  253. package/cli/dist/commands/list.d.ts.map +1 -1
  254. package/cli/dist/commands/list.js +11 -28
  255. package/cli/dist/commands/list.js.map +1 -1
  256. package/cli/dist/commands/mcp.d.ts +48 -0
  257. package/cli/dist/commands/mcp.d.ts.map +1 -0
  258. package/cli/dist/commands/mcp.js +229 -0
  259. package/cli/dist/commands/mcp.js.map +1 -0
  260. package/cli/dist/commands/self-remove.d.ts +7 -0
  261. package/cli/dist/commands/self-remove.d.ts.map +1 -0
  262. package/cli/dist/commands/self-remove.js +179 -0
  263. package/cli/dist/commands/self-remove.js.map +1 -0
  264. package/cli/dist/commands/show.d.ts.map +1 -1
  265. package/cli/dist/commands/show.js +42 -71
  266. package/cli/dist/commands/show.js.map +1 -1
  267. package/cli/dist/commands/skill.d.ts +67 -0
  268. package/cli/dist/commands/skill.d.ts.map +1 -0
  269. package/cli/dist/commands/skill.js +513 -0
  270. package/cli/dist/commands/skill.js.map +1 -0
  271. package/cli/dist/commands/unlink.d.ts +6 -0
  272. package/cli/dist/commands/unlink.d.ts.map +1 -0
  273. package/cli/dist/commands/unlink.js +115 -0
  274. package/cli/dist/commands/unlink.js.map +1 -0
  275. package/cli/dist/commands/validate.d.ts +6 -0
  276. package/cli/dist/commands/validate.d.ts.map +1 -0
  277. package/cli/dist/commands/validate.js +159 -0
  278. package/cli/dist/commands/validate.js.map +1 -0
  279. package/cli/dist/utils/catalog-sync.d.ts +22 -0
  280. package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
  281. package/cli/dist/utils/catalog-sync.js +157 -0
  282. package/cli/dist/utils/catalog-sync.js.map +1 -0
  283. package/cli/dist/utils/character-count.d.ts +56 -0
  284. package/cli/dist/utils/character-count.d.ts.map +1 -0
  285. package/cli/dist/utils/character-count.js +190 -0
  286. package/cli/dist/utils/character-count.js.map +1 -0
  287. package/cli/dist/utils/documentation-validator.d.ts +18 -0
  288. package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
  289. package/cli/dist/utils/documentation-validator.js +233 -0
  290. package/cli/dist/utils/documentation-validator.js.map +1 -0
  291. package/cli/dist/utils/install-rules.d.ts +32 -0
  292. package/cli/dist/utils/install-rules.d.ts.map +1 -0
  293. package/cli/dist/utils/install-rules.js +375 -0
  294. package/cli/dist/utils/install-rules.js.map +1 -0
  295. package/cli/dist/utils/mcp-integration.d.ts +70 -0
  296. package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
  297. package/cli/dist/utils/mcp-integration.js +292 -0
  298. package/cli/dist/utils/mcp-integration.js.map +1 -0
  299. package/cli/dist/utils/module-system.d.ts +153 -0
  300. package/cli/dist/utils/module-system.d.ts.map +1 -0
  301. package/cli/dist/utils/module-system.js +528 -0
  302. package/cli/dist/utils/module-system.js.map +1 -0
  303. package/cli/dist/utils/modules-catalog.d.ts +33 -0
  304. package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
  305. package/cli/dist/utils/modules-catalog.js +163 -0
  306. package/cli/dist/utils/modules-catalog.js.map +1 -0
  307. package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
  308. package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
  309. package/cli/dist/utils/rule-install-hooks.js +224 -0
  310. package/cli/dist/utils/rule-install-hooks.js.map +1 -0
  311. package/cli/dist/utils/skill-system.d.ts +95 -0
  312. package/cli/dist/utils/skill-system.d.ts.map +1 -0
  313. package/cli/dist/utils/skill-system.js +313 -0
  314. package/cli/dist/utils/skill-system.js.map +1 -0
  315. package/modules.md +534 -70
  316. package/package.json +12 -3
@@ -0,0 +1,778 @@
1
+ # NoSQL Graph Databases
2
+
3
+ ## Overview
4
+
5
+ This document covers graph databases (Neo4j, ArangoDB, Amazon Neptune), including node and relationship modeling, Cypher/AQL query languages, traversal optimization, graph algorithms, indexing, schema constraints, and use cases for social networks, recommendation engines, and knowledge graphs.
6
+
7
+ ---
8
+
9
+ ## Graph Database Fundamentals
10
+
11
+ ### What is a Graph Database?
12
+
13
+ **Definition**: Database that stores data as nodes (entities) and relationships (edges) between nodes
14
+
15
+ **Characteristics:**
16
+ - Nodes represent entities (users, products, locations)
17
+ - Relationships connect nodes with direction and properties
18
+ - Properties stored on both nodes and relationships
19
+ - Optimized for traversing relationships
20
+ - Flexible schema
21
+ - Rich query language for graph operations
22
+
23
+ **Core Concepts:**
24
+ ```
25
+ (Node)-[RELATIONSHIP]->(Node)
26
+
27
+ Example:
28
+ (User:Person {name: "Alice"})-[:FOLLOWS]->(User:Person {name: "Bob"})
29
+ ```
30
+
31
+ ### Popular Graph Databases
32
+
33
+ **Neo4j:**
34
+ - Most popular graph database
35
+ - Cypher query language
36
+ - ACID transactions
37
+ - Native graph storage and processing
38
+ - Rich ecosystem and tooling
39
+ - Community and Enterprise editions
40
+
41
+ **ArangoDB:**
42
+ - Multi-model database (document, graph, key-value)
43
+ - AQL query language
44
+ - Distributed architecture
45
+ - Horizontal scalability
46
+ - ACID transactions
47
+ - Open source
48
+
49
+ **Amazon Neptune:**
50
+ - Fully managed graph database
51
+ - Supports Gremlin and SPARQL
52
+ - High availability and durability
53
+ - Automatic backups
54
+ - Read replicas
55
+ - AWS integration
56
+
57
+ **JanusGraph:**
58
+ - Open source distributed graph database
59
+ - Supports Gremlin
60
+ - Pluggable storage backends (Cassandra, HBase, BerkeleyDB)
61
+ - Pluggable indexing (Elasticsearch, Solr)
62
+ - Horizontal scalability
63
+
64
+ ---
65
+
66
+ ## Node and Relationship Modeling
67
+
68
+ ### Nodes
69
+
70
+ **Definition**: Entities in the graph (vertices)
71
+
72
+ **Components:**
73
+ - **Labels**: Categories/types (e.g., Person, Product, Location)
74
+ - **Properties**: Key-value pairs (e.g., name, age, email)
75
+ - **ID**: Unique identifier (auto-generated or custom)
76
+
77
+ **Example (Cypher - Neo4j):**
78
+ ```cypher
79
+ // Create node with label and properties
80
+ CREATE (u:User {
81
+ id: "user123",
82
+ name: "Alice Johnson",
83
+ email: "alice@example.com",
84
+ age: 28,
85
+ created_at: datetime()
86
+ })
87
+
88
+ // Multiple labels
89
+ CREATE (p:Person:Employee {
90
+ name: "Bob Smith",
91
+ department: "Engineering"
92
+ })
93
+ ```
94
+
95
+ **Example (AQL - ArangoDB):**
96
+ ```aql
97
+ // Insert document into collection (becomes node)
98
+ INSERT {
99
+ _key: "user123",
100
+ name: "Alice Johnson",
101
+ email: "alice@example.com",
102
+ age: 28,
103
+ created_at: DATE_NOW()
104
+ } INTO users
105
+ ```
106
+
107
+ ### Relationships
108
+
109
+ **Definition**: Connections between nodes (edges)
110
+
111
+ **Components:**
112
+ - **Type**: Relationship category (e.g., FOLLOWS, LIKES, PURCHASED)
113
+ - **Direction**: From source node to target node
114
+ - **Properties**: Key-value pairs (e.g., since, weight, count)
115
+
116
+ **Example (Cypher):**
117
+ ```cypher
118
+ // Create relationship between existing nodes
119
+ MATCH (a:User {name: "Alice"}), (b:User {name: "Bob"})
120
+ CREATE (a)-[:FOLLOWS {since: date(), weight: 1.0}]->(b)
121
+
122
+ // Create nodes and relationship in one statement
123
+ CREATE (a:User {name: "Alice"})-[:FOLLOWS {since: date()}]->(b:User {name: "Bob"})
124
+
125
+ // Bidirectional relationships (create two)
126
+ MATCH (a:User {name: "Alice"}), (b:User {name: "Bob"})
127
+ CREATE (a)-[:FRIENDS_WITH {since: date()}]->(b),
128
+ (b)-[:FRIENDS_WITH {since: date()}]->(a)
129
+ ```
130
+
131
+ **Example (AQL):**
132
+ ```aql
133
+ // Insert edge document
134
+ INSERT {
135
+ _from: "users/alice",
136
+ _to: "users/bob",
137
+ type: "follows",
138
+ since: DATE_NOW(),
139
+ weight: 1.0
140
+ } INTO follows
141
+ ```
142
+
143
+ ### Modeling Patterns
144
+
145
+ #### Pattern 1: Direct Relationships
146
+
147
+ **Use for**: Simple connections between entities
148
+
149
+ ```cypher
150
+ // Social network
151
+ (User)-[:FOLLOWS]->(User)
152
+ (User)-[:LIKES]->(Post)
153
+ (User)-[:COMMENTED_ON]->(Post)
154
+
155
+ // E-commerce
156
+ (User)-[:PURCHASED]->(Product)
157
+ (Product)-[:BELONGS_TO]->(Category)
158
+ (User)-[:REVIEWED]->(Product)
159
+ ```
160
+
161
+ #### Pattern 2: Intermediate Nodes
162
+
163
+ **Use for**: Complex relationships with rich metadata
164
+
165
+ ```cypher
166
+ // ❌ BAD: Too many properties on relationship
167
+ (User)-[:PURCHASED {
168
+ order_id: "order123",
169
+ quantity: 2,
170
+ price: 29.99,
171
+ shipping_address: "123 Main St",
172
+ payment_method: "credit_card",
173
+ status: "shipped"
174
+ }]->(Product)
175
+
176
+ // ✅ GOOD: Use intermediate node
177
+ (User)-[:PLACED]->(Order {
178
+ id: "order123",
179
+ total: 59.98,
180
+ status: "shipped",
181
+ shipping_address: "123 Main St"
182
+ })-[:CONTAINS {quantity: 2, price: 29.99}]->(Product)
183
+ ```
184
+
185
+ #### Pattern 3: Hyperedges (Multi-way Relationships)
186
+
187
+ **Use for**: Relationships involving more than two nodes
188
+
189
+ ```cypher
190
+ // Meeting with multiple participants
191
+ (User1)-[:ATTENDED]->(Meeting)<-[:ATTENDED]-(User2)
192
+ (User1)-[:ATTENDED]->(Meeting)<-[:ATTENDED]-(User3)
193
+ (Meeting)-[:HELD_AT]->(Location)
194
+ (Meeting)-[:SCHEDULED_BY]->(User1)
195
+ ```
196
+
197
+ ---
198
+
199
+ ## Cypher Query Language (Neo4j)
200
+
201
+ ### Basic Queries
202
+
203
+ **Create:**
204
+ ```cypher
205
+ // Create single node
206
+ CREATE (u:User {name: "Alice", email: "alice@example.com"})
207
+
208
+ // Create multiple nodes
209
+ CREATE (u1:User {name: "Alice"}),
210
+ (u2:User {name: "Bob"}),
211
+ (u1)-[:FOLLOWS]->(u2)
212
+
213
+ // Create and return
214
+ CREATE (u:User {name: "Charlie"})
215
+ RETURN u
216
+ ```
217
+
218
+ **Read (Match):**
219
+ ```cypher
220
+ // Find all users
221
+ MATCH (u:User)
222
+ RETURN u
223
+
224
+ // Find user by property
225
+ MATCH (u:User {name: "Alice"})
226
+ RETURN u
227
+
228
+ // Find with WHERE clause
229
+ MATCH (u:User)
230
+ WHERE u.age > 25
231
+ RETURN u.name, u.age
232
+
233
+ // Find relationships
234
+ MATCH (a:User)-[:FOLLOWS]->(b:User)
235
+ RETURN a.name AS follower, b.name AS following
236
+
237
+ // Find with relationship properties
238
+ MATCH (a:User)-[r:FOLLOWS]->(b:User)
239
+ WHERE r.since > date('2024-01-01')
240
+ RETURN a.name, b.name, r.since
241
+ ```
242
+
243
+ **Update:**
244
+ ```cypher
245
+ // Update properties
246
+ MATCH (u:User {name: "Alice"})
247
+ SET u.age = 29, u.updated_at = datetime()
248
+
249
+ // Add label
250
+ MATCH (u:User {name: "Alice"})
251
+ SET u:Premium
252
+
253
+ // Remove property
254
+ MATCH (u:User {name: "Alice"})
255
+ REMOVE u.age
256
+ ```
257
+
258
+ **Delete:**
259
+ ```cypher
260
+ // Delete node (must delete relationships first)
261
+ MATCH (u:User {name: "Alice"})
262
+ DETACH DELETE u // Deletes node and all relationships
263
+
264
+ // Delete relationship only
265
+ MATCH (a:User)-[r:FOLLOWS]->(b:User)
266
+ WHERE a.name = "Alice" AND b.name = "Bob"
267
+ DELETE r
268
+ ```
269
+
270
+ ### Graph Traversal
271
+
272
+ **Pattern matching:**
273
+ ```cypher
274
+ // Friends of friends
275
+ MATCH (me:User {name: "Alice"})-[:FOLLOWS]->(friend)-[:FOLLOWS]->(fof)
276
+ RETURN DISTINCT fof.name
277
+
278
+ // Variable length paths (1 to 3 hops)
279
+ MATCH (a:User {name: "Alice"})-[:FOLLOWS*1..3]->(b:User)
280
+ RETURN b.name, length(path) AS hops
281
+
282
+ // Shortest path
283
+ MATCH path = shortestPath(
284
+ (a:User {name: "Alice"})-[:FOLLOWS*]-(b:User {name: "Charlie"})
285
+ )
286
+ RETURN path, length(path) AS distance
287
+
288
+ // All paths
289
+ MATCH path = (a:User {name: "Alice"})-[:FOLLOWS*]-(b:User {name: "Charlie"})
290
+ RETURN path
291
+ ```
292
+
293
+ **Aggregation:**
294
+ ```cypher
295
+ // Count followers
296
+ MATCH (u:User)<-[:FOLLOWS]-(follower)
297
+ RETURN u.name, count(follower) AS follower_count
298
+ ORDER BY follower_count DESC
299
+
300
+ // Average age of followers
301
+ MATCH (u:User {name: "Alice"})<-[:FOLLOWS]-(follower)
302
+ RETURN avg(follower.age) AS avg_follower_age
303
+
304
+ // Group by
305
+ MATCH (u:User)-[:LIVES_IN]->(city:City)
306
+ RETURN city.name, count(u) AS user_count
307
+ ORDER BY user_count DESC
308
+ ```
309
+
310
+ ### Advanced Patterns
311
+
312
+ **Recommendations:**
313
+ ```cypher
314
+ // Recommend users to follow (friends of friends not already following)
315
+ MATCH (me:User {name: "Alice"})-[:FOLLOWS]->(friend)-[:FOLLOWS]->(recommendation)
316
+ WHERE NOT (me)-[:FOLLOWS]->(recommendation) AND recommendation <> me
317
+ RETURN recommendation.name, count(*) AS mutual_friends
318
+ ORDER BY mutual_friends DESC
319
+ LIMIT 10
320
+
321
+ // Recommend products (based on similar users' purchases)
322
+ MATCH (me:User {name: "Alice"})-[:PURCHASED]->(p:Product)<-[:PURCHASED]-(other:User)
323
+ MATCH (other)-[:PURCHASED]->(recommendation:Product)
324
+ WHERE NOT (me)-[:PURCHASED]->(recommendation)
325
+ RETURN recommendation.name, count(*) AS score
326
+ ORDER BY score DESC
327
+ LIMIT 10
328
+ ```
329
+
330
+ **Mutual connections:**
331
+ ```cypher
332
+ // Find mutual friends
333
+ MATCH (me:User {name: "Alice"})-[:FOLLOWS]->(mutual)<-[:FOLLOWS]-(other:User {name: "Bob"})
334
+ RETURN mutual.name
335
+
336
+ // Count mutual friends
337
+ MATCH (a:User {name: "Alice"})-[:FOLLOWS]->(mutual)<-[:FOLLOWS]-(b:User {name: "Bob"})
338
+ RETURN count(mutual) AS mutual_count
339
+ ```
340
+
341
+ **Influence/Centrality:**
342
+ ```cypher
343
+ // Find most influential users (most followers)
344
+ MATCH (u:User)<-[:FOLLOWS]-(follower)
345
+ RETURN u.name, count(follower) AS influence
346
+ ORDER BY influence DESC
347
+ LIMIT 10
348
+
349
+ // PageRank-style influence (followers of influential users)
350
+ MATCH (u:User)<-[:FOLLOWS]-(follower)<-[:FOLLOWS]-(fof)
351
+ RETURN u.name, count(DISTINCT fof) AS second_degree_influence
352
+ ORDER BY second_degree_influence DESC
353
+ ```
354
+
355
+ ---
356
+
357
+ ## AQL Query Language (ArangoDB)
358
+
359
+ ### Basic Queries
360
+
361
+ **Create:**
362
+ ```aql
363
+ // Insert document (node)
364
+ INSERT {
365
+ name: "Alice",
366
+ email: "alice@example.com",
367
+ age: 28
368
+ } INTO users
369
+
370
+ // Insert edge (relationship)
371
+ INSERT {
372
+ _from: "users/alice",
373
+ _to: "users/bob",
374
+ type: "follows",
375
+ since: DATE_NOW()
376
+ } INTO follows
377
+ ```
378
+
379
+ **Read:**
380
+ ```aql
381
+ // Find all users
382
+ FOR u IN users
383
+ RETURN u
384
+
385
+ // Find by property
386
+ FOR u IN users
387
+ FILTER u.name == "Alice"
388
+ RETURN u
389
+
390
+ // Find with relationships
391
+ FOR u IN users
392
+ FOR v, e IN 1..1 OUTBOUND u follows
393
+ RETURN {user: u.name, follows: v.name}
394
+ ```
395
+
396
+ **Traversal:**
397
+ ```aql
398
+ // Friends of friends (2 hops)
399
+ FOR u IN users
400
+ FILTER u.name == "Alice"
401
+ FOR v IN 2..2 OUTBOUND u follows
402
+ RETURN DISTINCT v.name
403
+
404
+ // Shortest path
405
+ FOR path IN OUTBOUND SHORTEST_PATH
406
+ "users/alice" TO "users/charlie"
407
+ follows
408
+ RETURN path
409
+
410
+ // All paths with depth limit
411
+ FOR v, e, p IN 1..3 OUTBOUND "users/alice" follows
412
+ RETURN {vertex: v.name, depth: LENGTH(p.edges)}
413
+ ```
414
+
415
+ ---
416
+
417
+ ## Indexing and Performance
418
+
419
+ ### Indexes
420
+
421
+ **Neo4j:**
422
+ ```cypher
423
+ // Create index on property
424
+ CREATE INDEX user_email FOR (u:User) ON (u.email)
425
+
426
+ // Create composite index
427
+ CREATE INDEX user_name_age FOR (u:User) ON (u.name, u.age)
428
+
429
+ // Create unique constraint (creates index automatically)
430
+ CREATE CONSTRAINT user_email_unique FOR (u:User) REQUIRE u.email IS UNIQUE
431
+
432
+ // Full-text index
433
+ CREATE FULLTEXT INDEX user_search FOR (u:User) ON EACH [u.name, u.bio]
434
+
435
+ // List indexes
436
+ SHOW INDEXES
437
+
438
+ // Drop index
439
+ DROP INDEX user_email
440
+ ```
441
+
442
+ **ArangoDB:**
443
+ ```aql
444
+ // Create hash index
445
+ db.users.ensureIndex({ type: "hash", fields: ["email"], unique: true })
446
+
447
+ // Create skiplist index (for range queries)
448
+ db.users.ensureIndex({ type: "skiplist", fields: ["age"] })
449
+
450
+ // Create fulltext index
451
+ db.users.ensureIndex({ type: "fulltext", fields: ["name", "bio"] })
452
+
453
+ // Create geo index
454
+ db.locations.ensureIndex({ type: "geo", fields: ["coordinates"] })
455
+ ```
456
+
457
+ ### Query Optimization
458
+
459
+ **Use indexes:**
460
+ ```cypher
461
+ // ❌ BAD: No index, full scan
462
+ MATCH (u:User)
463
+ WHERE u.email = "alice@example.com"
464
+ RETURN u
465
+
466
+ // ✅ GOOD: Create index first
467
+ CREATE INDEX user_email FOR (u:User) ON (u.email)
468
+
469
+ MATCH (u:User)
470
+ WHERE u.email = "alice@example.com"
471
+ RETURN u
472
+ ```
473
+
474
+ **Limit traversal depth:**
475
+ ```cypher
476
+ // ❌ BAD: Unbounded traversal (can be very slow)
477
+ MATCH (a:User {name: "Alice"})-[:FOLLOWS*]->(b:User)
478
+ RETURN b
479
+
480
+ // ✅ GOOD: Limit depth
481
+ MATCH (a:User {name: "Alice"})-[:FOLLOWS*1..3]->(b:User)
482
+ RETURN b
483
+ ```
484
+
485
+ **Use LIMIT:**
486
+ ```cypher
487
+ // ❌ BAD: Returns all results
488
+ MATCH (u:User)
489
+ RETURN u
490
+ ORDER BY u.created_at DESC
491
+
492
+ // ✅ GOOD: Limit results
493
+ MATCH (u:User)
494
+ RETURN u
495
+ ORDER BY u.created_at DESC
496
+ LIMIT 100
497
+ ```
498
+
499
+ **Profile queries:**
500
+ ```cypher
501
+ // Analyze query performance
502
+ PROFILE
503
+ MATCH (a:User {name: "Alice"})-[:FOLLOWS]->(b:User)
504
+ RETURN b
505
+
506
+ // Explain query plan
507
+ EXPLAIN
508
+ MATCH (a:User {name: "Alice"})-[:FOLLOWS]->(b:User)
509
+ RETURN b
510
+ ```
511
+
512
+ ---
513
+
514
+ ## Graph Algorithms
515
+
516
+ ### Centrality Algorithms
517
+
518
+ **Degree Centrality** (number of connections):
519
+ ```cypher
520
+ // In Neo4j Graph Data Science library
521
+ CALL gds.degree.stream('myGraph')
522
+ YIELD nodeId, score
523
+ RETURN gds.util.asNode(nodeId).name AS user, score AS connections
524
+ ORDER BY score DESC
525
+ LIMIT 10
526
+ ```
527
+
528
+ **PageRank** (importance based on connections):
529
+ ```cypher
530
+ CALL gds.pageRank.stream('myGraph')
531
+ YIELD nodeId, score
532
+ RETURN gds.util.asNode(nodeId).name AS user, score AS pagerank
533
+ ORDER BY score DESC
534
+ LIMIT 10
535
+ ```
536
+
537
+ **Betweenness Centrality** (bridge nodes):
538
+ ```cypher
539
+ CALL gds.betweenness.stream('myGraph')
540
+ YIELD nodeId, score
541
+ RETURN gds.util.asNode(nodeId).name AS user, score AS betweenness
542
+ ORDER BY score DESC
543
+ LIMIT 10
544
+ ```
545
+
546
+ ### Community Detection
547
+
548
+ **Louvain** (find communities):
549
+ ```cypher
550
+ CALL gds.louvain.stream('myGraph')
551
+ YIELD nodeId, communityId
552
+ RETURN communityId, collect(gds.util.asNode(nodeId).name) AS members
553
+ ORDER BY size(members) DESC
554
+ ```
555
+
556
+ **Label Propagation**:
557
+ ```cypher
558
+ CALL gds.labelPropagation.stream('myGraph')
559
+ YIELD nodeId, communityId
560
+ RETURN communityId, count(*) AS size
561
+ ORDER BY size DESC
562
+ ```
563
+
564
+ ### Pathfinding
565
+
566
+ **Shortest Path**:
567
+ ```cypher
568
+ MATCH path = shortestPath(
569
+ (a:User {name: "Alice"})-[:FOLLOWS*]-(b:User {name: "Charlie"})
570
+ )
571
+ RETURN path, length(path) AS distance
572
+ ```
573
+
574
+ **All Shortest Paths**:
575
+ ```cypher
576
+ MATCH path = allShortestPaths(
577
+ (a:User {name: "Alice"})-[:FOLLOWS*]-(b:User {name: "Charlie"})
578
+ )
579
+ RETURN path
580
+ ```
581
+
582
+ **Dijkstra (weighted shortest path)**:
583
+ ```cypher
584
+ CALL gds.shortestPath.dijkstra.stream('myGraph', {
585
+ sourceNode: id(a),
586
+ targetNode: id(b),
587
+ relationshipWeightProperty: 'weight'
588
+ })
589
+ YIELD path, totalCost
590
+ RETURN path, totalCost
591
+ ```
592
+
593
+ ---
594
+
595
+ ## Schema Constraints
596
+
597
+ ### Neo4j Constraints
598
+
599
+ **Unique constraints:**
600
+ ```cypher
601
+ // Ensure email is unique
602
+ CREATE CONSTRAINT user_email_unique FOR (u:User) REQUIRE u.email IS UNIQUE
603
+
604
+ // Composite unique constraint
605
+ CREATE CONSTRAINT user_username_unique FOR (u:User) REQUIRE (u.username, u.domain) IS UNIQUE
606
+ ```
607
+
608
+ **Existence constraints (Enterprise only):**
609
+ ```cypher
610
+ // Require property exists
611
+ CREATE CONSTRAINT user_email_exists FOR (u:User) REQUIRE u.email IS NOT NULL
612
+
613
+ // Require relationship property exists
614
+ CREATE CONSTRAINT follows_since_exists FOR ()-[r:FOLLOWS]-() REQUIRE r.since IS NOT NULL
615
+ ```
616
+
617
+ **Node key constraints:**
618
+ ```cypher
619
+ // Combination of unique and existence
620
+ CREATE CONSTRAINT user_key FOR (u:User) REQUIRE (u.id) IS NODE KEY
621
+ ```
622
+
623
+ ### ArangoDB Validation
624
+
625
+ **Schema validation:**
626
+ ```javascript
627
+ // Define schema for collection
628
+ db._create("users", {
629
+ schema: {
630
+ rule: {
631
+ type: "object",
632
+ properties: {
633
+ name: { type: "string" },
634
+ email: { type: "string", format: "email" },
635
+ age: { type: "integer", minimum: 0 }
636
+ },
637
+ required: ["name", "email"]
638
+ },
639
+ level: "moderate" // none, new, moderate, strict
640
+ }
641
+ })
642
+ ```
643
+
644
+ ---
645
+
646
+ ## Use Cases
647
+
648
+ ### Social Networks
649
+
650
+ **Entities:**
651
+ - Users (nodes)
652
+ - Posts (nodes)
653
+ - Comments (nodes)
654
+
655
+ **Relationships:**
656
+ - FOLLOWS (User → User)
657
+ - LIKES (User → Post)
658
+ - COMMENTED_ON (User → Post)
659
+ - REPLIED_TO (Comment → Comment)
660
+
661
+ **Queries:**
662
+ - Find friends of friends
663
+ - Recommend users to follow
664
+ - Find mutual connections
665
+ - Calculate influence/reach
666
+
667
+ ### Recommendation Engines
668
+
669
+ **Collaborative filtering:**
670
+ ```cypher
671
+ // Recommend products based on similar users
672
+ MATCH (me:User {id: $userId})-[:PURCHASED]->(p:Product)<-[:PURCHASED]-(similar:User)
673
+ MATCH (similar)-[:PURCHASED]->(recommendation:Product)
674
+ WHERE NOT (me)-[:PURCHASED]->(recommendation)
675
+ RETURN recommendation.name, count(*) AS score
676
+ ORDER BY score DESC
677
+ LIMIT 10
678
+ ```
679
+
680
+ **Content-based filtering:**
681
+ ```cypher
682
+ // Recommend similar products
683
+ MATCH (me:User {id: $userId})-[:PURCHASED]->(p:Product)-[:IN_CATEGORY]->(c:Category)
684
+ MATCH (recommendation:Product)-[:IN_CATEGORY]->(c)
685
+ WHERE NOT (me)-[:PURCHASED]->(recommendation)
686
+ RETURN recommendation.name, count(c) AS category_overlap
687
+ ORDER BY category_overlap DESC
688
+ LIMIT 10
689
+ ```
690
+
691
+ ### Knowledge Graphs
692
+
693
+ **Entities:**
694
+ - Concepts (nodes)
695
+ - Documents (nodes)
696
+ - Authors (nodes)
697
+
698
+ **Relationships:**
699
+ - RELATED_TO (Concept → Concept)
700
+ - MENTIONS (Document → Concept)
701
+ - AUTHORED_BY (Document → Author)
702
+ - CITES (Document → Document)
703
+
704
+ **Queries:**
705
+ - Find related concepts
706
+ - Discover connections between topics
707
+ - Trace citation networks
708
+ - Expert finding
709
+
710
+ ### Fraud Detection
711
+
712
+ **Pattern detection:**
713
+ ```cypher
714
+ // Find suspicious transaction patterns
715
+ MATCH (a:Account)-[:TRANSFERRED]->(b:Account)-[:TRANSFERRED]->(c:Account)
716
+ WHERE a.id = $accountId AND c.id = $accountId
717
+ RETURN a, b, c // Circular transfer pattern
718
+
719
+ // Find accounts with shared attributes
720
+ MATCH (a1:Account)-[:HAS_PHONE]->(p:Phone)<-[:HAS_PHONE]-(a2:Account)
721
+ WHERE a1 <> a2
722
+ RETURN a1, a2, p // Multiple accounts with same phone
723
+ ```
724
+
725
+ ---
726
+
727
+ ## Best Practices
728
+
729
+ ### DO
730
+
731
+ ✅ **Model relationships explicitly** (don't hide in properties)
732
+ ✅ **Use meaningful relationship types** (FOLLOWS, LIKES, not RELATED_TO)
733
+ ✅ **Create indexes on frequently queried properties**
734
+ ✅ **Limit traversal depth** to avoid performance issues
735
+ ✅ **Use LIMIT** to restrict result sets
736
+ ✅ **Profile queries** to identify bottlenecks
737
+ ✅ **Use graph algorithms** for complex analysis
738
+ ✅ **Implement constraints** for data integrity
739
+ ✅ **Denormalize when needed** (store computed values)
740
+
741
+ ### DON'T
742
+
743
+ ❌ **Don't use graphs for simple key-value lookups** (use key-value store instead)
744
+ ❌ **Don't create unbounded relationships** (e.g., unlimited followers)
745
+ ❌ **Don't store large binary data in nodes** (use external storage)
746
+ ❌ **Don't use graphs for aggregations** (use OLAP database instead)
747
+ ❌ **Don't create too many relationship types** (keep it simple)
748
+ ❌ **Don't ignore indexes** (critical for performance)
749
+ ❌ **Don't traverse without depth limits** (can cause infinite loops)
750
+
751
+ ---
752
+
753
+ ## Summary
754
+
755
+ **Graph databases excel at:**
756
+ - Relationship-heavy data
757
+ - Complex traversals
758
+ - Pattern matching
759
+ - Recommendation engines
760
+ - Social networks
761
+ - Fraud detection
762
+ - Knowledge graphs
763
+
764
+ **Key concepts:**
765
+ - **Nodes**: Entities with labels and properties
766
+ - **Relationships**: Directed connections with types and properties
767
+ - **Cypher/AQL**: Declarative query languages
768
+ - **Traversal**: Following relationships across nodes
769
+ - **Algorithms**: Centrality, community detection, pathfinding
770
+
771
+ **Performance tips:**
772
+ - Create indexes on queried properties
773
+ - Limit traversal depth
774
+ - Use LIMIT for large result sets
775
+ - Profile queries to identify bottlenecks
776
+ - Use graph algorithms for complex analysis
777
+
778
+