moai-adk 0.8.0__py3-none-any.whl → 0.34.0__py3-none-any.whl

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 (654) hide show
  1. moai_adk/__init__.py +2 -6
  2. moai_adk/__main__.py +136 -21
  3. moai_adk/cli/__init__.py +6 -2
  4. moai_adk/cli/commands/__init__.py +1 -4
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +17 -5
  7. moai_adk/cli/commands/init.py +118 -48
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +8 -13
  10. moai_adk/cli/commands/update.py +1978 -149
  11. moai_adk/cli/main.py +3 -2
  12. moai_adk/cli/prompts/init_prompts.py +144 -91
  13. moai_adk/cli/spec_status.py +263 -0
  14. moai_adk/cli/ui/__init__.py +44 -0
  15. moai_adk/cli/ui/progress.py +422 -0
  16. moai_adk/cli/ui/prompts.py +389 -0
  17. moai_adk/cli/ui/theme.py +129 -0
  18. moai_adk/cli/worktree/__init__.py +27 -0
  19. moai_adk/cli/worktree/__main__.py +31 -0
  20. moai_adk/cli/worktree/cli.py +683 -0
  21. moai_adk/cli/worktree/exceptions.py +89 -0
  22. moai_adk/cli/worktree/manager.py +493 -0
  23. moai_adk/cli/worktree/models.py +65 -0
  24. moai_adk/cli/worktree/registry.py +422 -0
  25. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  26. moai_adk/core/__init__.py +0 -1
  27. moai_adk/core/analysis/__init__.py +9 -0
  28. moai_adk/core/analysis/session_analyzer.py +400 -0
  29. moai_adk/core/claude_integration.py +393 -0
  30. moai_adk/core/command_helpers.py +270 -0
  31. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  32. moai_adk/core/config/__init__.py +6 -0
  33. moai_adk/core/config/auto_spec_config.py +340 -0
  34. moai_adk/core/config/migration.py +148 -17
  35. moai_adk/core/config/unified.py +436 -0
  36. moai_adk/core/context_manager.py +273 -0
  37. moai_adk/core/diagnostics/slash_commands.py +0 -1
  38. moai_adk/core/enterprise_features.py +1404 -0
  39. moai_adk/core/error_recovery_system.py +1902 -0
  40. moai_adk/core/event_driven_hook_system.py +1371 -0
  41. moai_adk/core/git/__init__.py +8 -1
  42. moai_adk/core/git/branch.py +0 -1
  43. moai_adk/core/git/branch_manager.py +2 -10
  44. moai_adk/core/git/checkpoint.py +1 -7
  45. moai_adk/core/git/commit.py +0 -1
  46. moai_adk/core/git/conflict_detector.py +413 -0
  47. moai_adk/core/git/event_detector.py +3 -5
  48. moai_adk/core/git/manager.py +91 -2
  49. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  50. moai_adk/core/input_validation_middleware.py +1006 -0
  51. moai_adk/core/integration/__init__.py +22 -0
  52. moai_adk/core/integration/engine.py +157 -0
  53. moai_adk/core/integration/integration_tester.py +226 -0
  54. moai_adk/core/integration/models.py +88 -0
  55. moai_adk/core/integration/utils.py +211 -0
  56. moai_adk/core/issue_creator.py +305 -0
  57. moai_adk/core/jit_context_loader.py +956 -0
  58. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  59. moai_adk/core/language_config.py +202 -0
  60. moai_adk/core/language_config_resolver.py +572 -0
  61. moai_adk/core/language_validator.py +543 -0
  62. moai_adk/core/mcp/setup.py +116 -0
  63. moai_adk/core/merge/__init__.py +9 -0
  64. moai_adk/core/merge/analyzer.py +481 -0
  65. moai_adk/core/migration/__init__.py +18 -0
  66. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  67. moai_adk/core/migration/backup_manager.py +277 -0
  68. moai_adk/core/migration/custom_element_scanner.py +358 -0
  69. moai_adk/core/migration/file_migrator.py +209 -0
  70. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  71. moai_adk/core/migration/selective_restorer.py +470 -0
  72. moai_adk/core/migration/template_utils.py +74 -0
  73. moai_adk/core/migration/user_selection_ui.py +338 -0
  74. moai_adk/core/migration/version_detector.py +139 -0
  75. moai_adk/core/migration/version_migrator.py +228 -0
  76. moai_adk/core/performance/__init__.py +6 -0
  77. moai_adk/core/performance/cache_system.py +316 -0
  78. moai_adk/core/performance/parallel_processor.py +116 -0
  79. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  80. moai_adk/core/project/__init__.py +0 -1
  81. moai_adk/core/project/backup_utils.py +2 -7
  82. moai_adk/core/project/checker.py +2 -4
  83. moai_adk/core/project/detector.py +189 -22
  84. moai_adk/core/project/initializer.py +218 -27
  85. moai_adk/core/project/phase_executor.py +416 -44
  86. moai_adk/core/project/validator.py +7 -32
  87. moai_adk/core/quality/__init__.py +1 -1
  88. moai_adk/core/quality/trust_checker.py +37 -101
  89. moai_adk/core/quality/validators/__init__.py +1 -1
  90. moai_adk/core/quality/validators/base_validator.py +1 -1
  91. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  92. moai_adk/core/robust_json_parser.py +611 -0
  93. moai_adk/core/rollback_manager.py +918 -0
  94. moai_adk/core/session_manager.py +651 -0
  95. moai_adk/core/skill_loading_system.py +579 -0
  96. moai_adk/core/spec/confidence_scoring.py +680 -0
  97. moai_adk/core/spec/ears_template_engine.py +1247 -0
  98. moai_adk/core/spec/quality_validator.py +687 -0
  99. moai_adk/core/spec_status_manager.py +478 -0
  100. moai_adk/core/template/__init__.py +0 -1
  101. moai_adk/core/template/backup.py +82 -17
  102. moai_adk/core/template/config.py +112 -40
  103. moai_adk/core/template/languages.py +0 -1
  104. moai_adk/core/template/merger.py +75 -26
  105. moai_adk/core/template/processor.py +750 -72
  106. moai_adk/core/template_engine.py +310 -0
  107. moai_adk/core/template_variable_synchronizer.py +417 -0
  108. moai_adk/core/unified_permission_manager.py +745 -0
  109. moai_adk/core/user_behavior_analytics.py +851 -0
  110. moai_adk/core/version_sync.py +429 -0
  111. moai_adk/foundation/__init__.py +56 -0
  112. moai_adk/foundation/backend.py +1027 -0
  113. moai_adk/foundation/database.py +1115 -0
  114. moai_adk/foundation/devops.py +1585 -0
  115. moai_adk/foundation/ears.py +431 -0
  116. moai_adk/foundation/frontend.py +870 -0
  117. moai_adk/foundation/git/commit_templates.py +557 -0
  118. moai_adk/foundation/git.py +376 -0
  119. moai_adk/foundation/langs.py +484 -0
  120. moai_adk/foundation/ml_ops.py +1162 -0
  121. moai_adk/foundation/testing.py +1524 -0
  122. moai_adk/foundation/trust/trust_principles.py +676 -0
  123. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  124. moai_adk/project/__init__.py +0 -0
  125. moai_adk/project/configuration.py +1084 -0
  126. moai_adk/project/documentation.py +566 -0
  127. moai_adk/project/schema.py +447 -0
  128. moai_adk/statusline/__init__.py +38 -0
  129. moai_adk/statusline/alfred_detector.py +105 -0
  130. moai_adk/statusline/config.py +376 -0
  131. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  132. moai_adk/statusline/git_collector.py +190 -0
  133. moai_adk/statusline/main.py +322 -0
  134. moai_adk/statusline/metrics_tracker.py +78 -0
  135. moai_adk/statusline/renderer.py +343 -0
  136. moai_adk/statusline/update_checker.py +129 -0
  137. moai_adk/statusline/version_reader.py +741 -0
  138. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +670 -0
  139. moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
  140. moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
  141. moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
  142. moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
  143. moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
  144. moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
  145. moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
  146. moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
  147. moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
  148. moai_adk/templates/.claude/agents/moai/expert-security.md +509 -0
  149. moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
  150. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
  151. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
  152. moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
  153. moai_adk/templates/.claude/agents/moai/manager-git.md +1020 -0
  154. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  155. moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
  156. moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
  157. moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
  158. moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
  159. moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
  160. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
  161. moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
  162. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
  163. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
  164. moai_adk/templates/.claude/commands/moai/0-project.md +1384 -0
  165. moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
  166. moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
  167. moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
  168. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  169. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  170. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  171. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  172. moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/checkpoint.py +10 -37
  173. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  179. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  180. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  181. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  182. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  183. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  184. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  185. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  186. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1075 -0
  187. moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
  188. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  189. moai_adk/templates/.claude/settings.json +78 -50
  190. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +438 -0
  191. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  192. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
  193. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
  194. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  195. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  196. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  197. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  198. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  199. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
  200. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +313 -283
  201. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +610 -1525
  202. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +423 -619
  203. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +295 -95
  204. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +817 -16
  205. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  206. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  207. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  208. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  209. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +532 -17
  210. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +470 -97
  211. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +955 -16
  212. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +651 -18
  213. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
  214. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  215. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  216. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  217. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  218. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  219. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  220. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  221. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
  222. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  223. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  224. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  225. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  226. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  227. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  228. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  229. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  280. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +618 -93
  281. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +446 -91
  282. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
  283. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
  284. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  285. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  286. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +346 -94
  287. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +906 -16
  288. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +721 -15
  289. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +352 -91
  290. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +851 -16
  291. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +278 -18
  292. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +344 -86
  293. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +993 -16
  294. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +549 -18
  295. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +617 -96
  296. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +364 -314
  297. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +849 -496
  298. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +731 -243
  299. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +545 -89
  300. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +650 -87
  301. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +341 -93
  302. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +646 -16
  303. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +491 -18
  304. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +463 -89
  305. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +620 -16
  306. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +410 -17
  307. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +486 -112
  308. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +905 -16
  309. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +659 -17
  310. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +333 -92
  311. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1076 -16
  312. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +718 -21
  313. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
  314. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  315. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  316. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  317. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  318. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
  319. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  320. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  321. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  322. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  323. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  324. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  325. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  326. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  327. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  328. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  329. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  330. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  331. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
  332. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  333. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  334. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  335. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  336. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  337. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  338. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
  339. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
  340. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
  341. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
  342. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +290 -0
  343. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
  344. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
  345. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
  346. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
  347. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
  348. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
  349. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
  350. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
  351. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
  352. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  353. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  354. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  355. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  356. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  357. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
  358. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  359. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  360. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  361. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  362. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  363. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
  364. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  365. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  366. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  367. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  368. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  369. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  370. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  371. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  372. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  373. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  374. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  375. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  376. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  377. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1462 -0
  378. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  379. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  380. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  381. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  382. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  383. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  384. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  385. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  386. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  387. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  388. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  390. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  391. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  417. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
  418. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  419. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  420. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  421. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  422. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  423. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  424. moai_adk/templates/.git-hooks/pre-commit +128 -0
  425. moai_adk/templates/.git-hooks/pre-push +365 -0
  426. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  427. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  428. moai_adk/templates/.github/workflows/spec-issue-sync.yml +206 -36
  429. moai_adk/templates/.gitignore +194 -13
  430. moai_adk/templates/.mcp.json +31 -0
  431. moai_adk/templates/.moai/config/config.yaml +58 -0
  432. moai_adk/templates/.moai/config/questions/_schema.yaml +151 -0
  433. moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
  434. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  435. moai_adk/templates/.moai/config/questions/tab2-project.yaml +81 -0
  436. moai_adk/templates/.moai/config/questions/tab3-git.yaml +634 -0
  437. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +170 -0
  438. moai_adk/templates/.moai/config/questions/tab5-system.yaml +87 -0
  439. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  440. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  441. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  442. moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
  443. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  444. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  445. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  446. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  447. moai_adk/templates/CLAUDE.md +571 -244
  448. moai_adk/utils/__init__.py +24 -2
  449. moai_adk/utils/banner.py +9 -13
  450. moai_adk/utils/common.py +294 -0
  451. moai_adk/utils/link_validator.py +241 -0
  452. moai_adk/utils/logger.py +4 -9
  453. moai_adk/utils/safe_file_reader.py +206 -0
  454. moai_adk/utils/timeout.py +160 -0
  455. moai_adk/utils/toon_utils.py +256 -0
  456. moai_adk/version.py +22 -0
  457. moai_adk-0.34.0.dist-info/METADATA +2999 -0
  458. moai_adk-0.34.0.dist-info/RECORD +463 -0
  459. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/WHEEL +1 -1
  460. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/entry_points.txt +1 -0
  461. moai_adk/cli/commands/backup.py +0 -80
  462. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -293
  463. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -196
  464. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -207
  465. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -375
  466. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -343
  467. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -246
  468. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -320
  469. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -837
  470. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -272
  471. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -265
  472. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -311
  473. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -352
  474. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1184
  475. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -665
  476. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -488
  477. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -623
  478. moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +0 -313
  479. moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
  480. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -174
  481. moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -170
  482. moai_adk/templates/.claude/hooks/alfred/core/context.py +0 -67
  483. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -416
  484. moai_adk/templates/.claude/hooks/alfred/core/tags.py +0 -198
  485. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -21
  486. moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
  487. moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -161
  488. moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -90
  489. moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -42
  490. moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +0 -175
  491. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -640
  492. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -696
  493. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -474
  494. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  495. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  496. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  497. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  498. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  499. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  500. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  501. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  502. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  503. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  504. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  505. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  506. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  507. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  508. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  509. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  510. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  511. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  512. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  513. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  514. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  515. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  516. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  517. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  518. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  519. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  520. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  521. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  522. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  523. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  524. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  525. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  526. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  527. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  528. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  529. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  530. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  531. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  532. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  533. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  534. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  535. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  536. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  537. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  538. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  539. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  540. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  541. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  542. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  543. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  544. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  545. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  546. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  547. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  548. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  549. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  550. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  551. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  552. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  553. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  554. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  555. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  556. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  557. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  558. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  559. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  560. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  561. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  562. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  563. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  564. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  565. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  566. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -113
  567. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  568. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  569. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  570. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  571. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  572. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  573. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  574. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  575. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  576. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  577. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  578. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  579. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  580. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  581. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  582. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  583. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  584. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  585. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  586. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  587. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  588. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  589. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  590. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  591. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  592. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  593. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  594. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  595. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  596. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  597. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  598. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  599. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  600. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  601. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  602. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  603. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  604. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  605. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  606. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  607. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  608. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  609. moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +0 -482
  610. moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +0 -278
  611. moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  612. moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +0 -477
  613. moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  614. moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  615. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  616. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  617. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +0 -271
  618. moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  619. moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +0 -583
  620. moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +0 -526
  621. moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +0 -465
  622. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +0 -328
  623. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +0 -312
  624. moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  625. moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +0 -285
  626. moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +0 -278
  627. moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +0 -303
  628. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -137
  629. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -218
  630. moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +0 -161
  631. moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -541
  632. moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -622
  633. moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -176
  634. moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
  635. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -256
  636. moai_adk/templates/.moai/config.json +0 -96
  637. moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +0 -208
  638. moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +0 -369
  639. moai_adk/templates/.moai/memory/CLAUDE-RULES.md +0 -539
  640. moai_adk/templates/.moai/memory/CONFIG-SCHEMA.md +0 -444
  641. moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -344
  642. moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +0 -220
  643. moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +0 -218
  644. moai_adk/templates/.moai/memory/SPEC-METADATA.md +0 -356
  645. moai_adk/templates/.moai/memory/config-schema.md +0 -444
  646. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
  647. moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
  648. moai_adk/templates/.moai/project/product.md +0 -161
  649. moai_adk/templates/.moai/project/structure.md +0 -156
  650. moai_adk/templates/.moai/project/tech.md +0 -227
  651. moai_adk/templates/__init__.py +0 -2
  652. moai_adk-0.8.0.dist-info/METADATA +0 -1722
  653. moai_adk-0.8.0.dist-info/RECORD +0 -282
  654. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,29 +1,830 @@
1
- # moai-domain-database - Working Examples
1
+ # Database Domain Examples
2
2
 
3
- _Last updated: 2025-10-22_
3
+ Multishot prompting examples demonstrating practical database patterns covering PostgreSQL, MongoDB, Redis, and multi-database architectures.
4
4
 
5
- ## Example 1: Basic Setup
5
+ ---
6
+
7
+ ## Example 1: PostgreSQL Advanced Query Optimization
8
+
9
+ **Scenario**: Optimize a slow query for user analytics with proper indexing.
10
+
11
+ **Input**:
12
+ ```sql
13
+ -- Slow query: Full table scan
14
+ SELECT u.id, u.name, u.email, COUNT(o.id) as order_count, SUM(o.total) as total_spent
15
+ FROM users u
16
+ LEFT JOIN orders o ON u.id = o.user_id
17
+ WHERE u.created_at > '2024-01-01'
18
+ AND u.status = 'active'
19
+ GROUP BY u.id
20
+ ORDER BY total_spent DESC
21
+ LIMIT 100;
22
+
23
+ -- Query takes 15+ seconds on 1M users, 5M orders
24
+ ```
25
+
26
+ **Output**:
27
+ ```sql
28
+ -- Step 1: Create optimized indexes
29
+ CREATE INDEX CONCURRENTLY idx_users_status_created
30
+ ON users (status, created_at DESC)
31
+ WHERE status = 'active';
32
+
33
+ CREATE INDEX CONCURRENTLY idx_orders_user_total
34
+ ON orders (user_id, total)
35
+ INCLUDE (id);
36
+
37
+ -- Step 2: Use materialized view for frequent analytics
38
+ CREATE MATERIALIZED VIEW user_order_stats AS
39
+ SELECT
40
+ u.id,
41
+ u.name,
42
+ u.email,
43
+ COUNT(o.id) as order_count,
44
+ COALESCE(SUM(o.total), 0) as total_spent,
45
+ MAX(o.created_at) as last_order_date
46
+ FROM users u
47
+ LEFT JOIN orders o ON u.id = o.user_id
48
+ WHERE u.status = 'active'
49
+ GROUP BY u.id, u.name, u.email;
50
+
51
+ CREATE UNIQUE INDEX idx_user_order_stats_id ON user_order_stats(id);
52
+ CREATE INDEX idx_user_order_stats_total ON user_order_stats(total_spent DESC);
53
+
54
+ -- Step 3: Refresh strategy
55
+ REFRESH MATERIALIZED VIEW CONCURRENTLY user_order_stats;
56
+
57
+ -- Step 4: Optimized query (now < 100ms)
58
+ SELECT id, name, email, order_count, total_spent
59
+ FROM user_order_stats
60
+ WHERE total_spent > 0
61
+ ORDER BY total_spent DESC
62
+ LIMIT 100;
63
+ ```
64
+
65
+ **Explanation**: The optimization combines partial indexes, materialized views, and covering indexes to reduce query time from 15 seconds to under 100ms.
66
+
67
+ ---
68
+
69
+ ## Example 2: MongoDB Aggregation Pipeline for Analytics
70
+
71
+ **Scenario**: Build an analytics pipeline for e-commerce order analysis.
72
+
73
+ **Input**:
74
+ ```python
75
+ from motor.motor_asyncio import AsyncIOMotorClient
76
+ from datetime import datetime, timedelta
77
+
78
+ # Sample order document structure
79
+ order_doc = {
80
+ "_id": "order_123",
81
+ "user_id": "user_456",
82
+ "status": "completed",
83
+ "items": [
84
+ {"product_id": "prod_1", "quantity": 2, "price": 29.99},
85
+ {"product_id": "prod_2", "quantity": 1, "price": 49.99}
86
+ ],
87
+ "total": 109.97,
88
+ "created_at": datetime.utcnow(),
89
+ "shipping_address": {"city": "Seoul", "country": "KR"}
90
+ }
91
+ ```
92
+
93
+ **Output**:
94
+ ```python
95
+ from motor.motor_asyncio import AsyncIOMotorClient
96
+ from datetime import datetime, timedelta
97
+ from typing import List, Dict
98
+
99
+ class OrderAnalytics:
100
+ def __init__(self, client: AsyncIOMotorClient):
101
+ self.db = client.ecommerce
102
+ self.orders = self.db.orders
103
+
104
+ async def setup_indexes(self):
105
+ """Create optimized indexes for analytics queries."""
106
+ await self.orders.create_indexes([
107
+ {"keys": [("created_at", -1)]},
108
+ {"keys": [("user_id", 1), ("created_at", -1)]},
109
+ {"keys": [("status", 1), ("created_at", -1)]},
110
+ {"keys": [("shipping_address.country", 1), ("created_at", -1)]}
111
+ ])
112
+
113
+ async def get_daily_revenue(
114
+ self,
115
+ start_date: datetime,
116
+ end_date: datetime
117
+ ) -> List[Dict]:
118
+ """Get daily revenue breakdown."""
119
+ pipeline = [
120
+ {
121
+ "$match": {
122
+ "status": "completed",
123
+ "created_at": {
124
+ "$gte": start_date,
125
+ "$lte": end_date
126
+ }
127
+ }
128
+ },
129
+ {
130
+ "$group": {
131
+ "_id": {
132
+ "year": {"$year": "$created_at"},
133
+ "month": {"$month": "$created_at"},
134
+ "day": {"$dayOfMonth": "$created_at"}
135
+ },
136
+ "total_revenue": {"$sum": "$total"},
137
+ "order_count": {"$sum": 1},
138
+ "avg_order_value": {"$avg": "$total"}
139
+ }
140
+ },
141
+ {
142
+ "$sort": {"_id.year": 1, "_id.month": 1, "_id.day": 1}
143
+ },
144
+ {
145
+ "$project": {
146
+ "_id": 0,
147
+ "date": {
148
+ "$dateFromParts": {
149
+ "year": "$_id.year",
150
+ "month": "$_id.month",
151
+ "day": "$_id.day"
152
+ }
153
+ },
154
+ "total_revenue": {"$round": ["$total_revenue", 2]},
155
+ "order_count": 1,
156
+ "avg_order_value": {"$round": ["$avg_order_value", 2]}
157
+ }
158
+ }
159
+ ]
160
+ return await self.orders.aggregate(pipeline).to_list(None)
161
+
162
+ async def get_top_products(
163
+ self,
164
+ limit: int = 10,
165
+ days: int = 30
166
+ ) -> List[Dict]:
167
+ """Get top selling products."""
168
+ start_date = datetime.utcnow() - timedelta(days=days)
169
+
170
+ pipeline = [
171
+ {
172
+ "$match": {
173
+ "status": "completed",
174
+ "created_at": {"$gte": start_date}
175
+ }
176
+ },
177
+ {"$unwind": "$items"},
178
+ {
179
+ "$group": {
180
+ "_id": "$items.product_id",
181
+ "total_quantity": {"$sum": "$items.quantity"},
182
+ "total_revenue": {
183
+ "$sum": {
184
+ "$multiply": ["$items.quantity", "$items.price"]
185
+ }
186
+ },
187
+ "order_count": {"$sum": 1}
188
+ }
189
+ },
190
+ {"$sort": {"total_revenue": -1}},
191
+ {"$limit": limit},
192
+ {
193
+ "$lookup": {
194
+ "from": "products",
195
+ "localField": "_id",
196
+ "foreignField": "_id",
197
+ "as": "product_info"
198
+ }
199
+ },
200
+ {
201
+ "$project": {
202
+ "product_id": "$_id",
203
+ "product_name": {"$arrayElemAt": ["$product_info.name", 0]},
204
+ "total_quantity": 1,
205
+ "total_revenue": {"$round": ["$total_revenue", 2]},
206
+ "order_count": 1
207
+ }
208
+ }
209
+ ]
210
+ return await self.orders.aggregate(pipeline).to_list(None)
211
+
212
+ async def get_customer_segments(self) -> List[Dict]:
213
+ """Segment customers by order frequency and value."""
214
+ pipeline = [
215
+ {"$match": {"status": "completed"}},
216
+ {
217
+ "$group": {
218
+ "_id": "$user_id",
219
+ "total_orders": {"$sum": 1},
220
+ "total_spent": {"$sum": "$total"},
221
+ "avg_order_value": {"$avg": "$total"},
222
+ "first_order": {"$min": "$created_at"},
223
+ "last_order": {"$max": "$created_at"}
224
+ }
225
+ },
226
+ {
227
+ "$addFields": {
228
+ "segment": {
229
+ "$switch": {
230
+ "branches": [
231
+ {
232
+ "case": {
233
+ "$and": [
234
+ {"$gte": ["$total_orders", 10]},
235
+ {"$gte": ["$total_spent", 1000]}
236
+ ]
237
+ },
238
+ "then": "VIP"
239
+ },
240
+ {
241
+ "case": {
242
+ "$and": [
243
+ {"$gte": ["$total_orders", 5]},
244
+ {"$gte": ["$total_spent", 500]}
245
+ ]
246
+ },
247
+ "then": "Loyal"
248
+ },
249
+ {
250
+ "case": {"$gte": ["$total_orders", 2]},
251
+ "then": "Repeat"
252
+ }
253
+ ],
254
+ "default": "New"
255
+ }
256
+ }
257
+ }
258
+ },
259
+ {
260
+ "$group": {
261
+ "_id": "$segment",
262
+ "customer_count": {"$sum": 1},
263
+ "total_revenue": {"$sum": "$total_spent"},
264
+ "avg_orders": {"$avg": "$total_orders"},
265
+ "avg_spent": {"$avg": "$total_spent"}
266
+ }
267
+ },
268
+ {"$sort": {"total_revenue": -1}}
269
+ ]
270
+ return await self.orders.aggregate(pipeline).to_list(None)
271
+ ```
272
+
273
+ **Explanation**: This pattern demonstrates MongoDB aggregation pipelines for complex analytics with proper indexing, customer segmentation, and revenue analysis.
274
+
275
+ ---
276
+
277
+ ## Example 3: Redis Multi-Layer Caching Strategy
278
+
279
+ **Scenario**: Implement a sophisticated caching strategy with different TTLs and cache invalidation.
280
+
281
+ **Input**:
282
+ ```python
283
+ import redis.asyncio as redis
284
+ from typing import Optional, Any
285
+ from dataclasses import dataclass
286
+
287
+ @dataclass
288
+ class CacheConfig:
289
+ host: str = "localhost"
290
+ port: int = 6379
291
+ db: int = 0
292
+ default_ttl: int = 3600
293
+ ```
294
+
295
+ **Output**:
296
+ ```python
297
+ import redis.asyncio as redis
298
+ from typing import Optional, Any, Callable
299
+ from dataclasses import dataclass
300
+ from functools import wraps
301
+ import json
302
+ import hashlib
303
+ import logging
304
+
305
+ logger = logging.getLogger(__name__)
306
+
307
+ @dataclass
308
+ class CacheConfig:
309
+ host: str = "localhost"
310
+ port: int = 6379
311
+ db: int = 0
312
+ default_ttl: int = 3600
313
+
314
+ class CacheLayer:
315
+ """Multi-layer caching with different TTL strategies."""
316
+
317
+ # Cache TTL by layer
318
+ LAYER_TTL = {
319
+ "hot": 60, # 1 minute - frequently accessed
320
+ "warm": 300, # 5 minutes - moderately accessed
321
+ "cold": 3600, # 1 hour - rarely accessed
322
+ "persistent": 86400 # 24 hours - static data
323
+ }
324
+
325
+ def __init__(self, config: CacheConfig):
326
+ self.redis = redis.Redis(
327
+ host=config.host,
328
+ port=config.port,
329
+ db=config.db,
330
+ decode_responses=True
331
+ )
332
+ self.default_ttl = config.default_ttl
333
+
334
+ def _generate_key(
335
+ self,
336
+ prefix: str,
337
+ *args,
338
+ **kwargs
339
+ ) -> str:
340
+ """Generate consistent cache key."""
341
+ key_data = f"{args}:{sorted(kwargs.items())}"
342
+ key_hash = hashlib.md5(key_data.encode()).hexdigest()[:8]
343
+ return f"{prefix}:{key_hash}"
344
+
345
+ async def get(self, key: str) -> Optional[Any]:
346
+ """Get value from cache."""
347
+ value = await self.redis.get(key)
348
+ if value:
349
+ return json.loads(value)
350
+ return None
351
+
352
+ async def set(
353
+ self,
354
+ key: str,
355
+ value: Any,
356
+ layer: str = "warm"
357
+ ):
358
+ """Set value in cache with layer-specific TTL."""
359
+ ttl = self.LAYER_TTL.get(layer, self.default_ttl)
360
+ await self.redis.setex(
361
+ key,
362
+ ttl,
363
+ json.dumps(value, default=str)
364
+ )
365
+
366
+ async def delete(self, key: str):
367
+ """Delete specific key."""
368
+ await self.redis.delete(key)
369
+
370
+ async def delete_pattern(self, pattern: str):
371
+ """Delete all keys matching pattern."""
372
+ cursor = 0
373
+ while True:
374
+ cursor, keys = await self.redis.scan(
375
+ cursor=cursor,
376
+ match=pattern,
377
+ count=100
378
+ )
379
+ if keys:
380
+ await self.redis.delete(*keys)
381
+ if cursor == 0:
382
+ break
383
+
384
+ def cached(
385
+ self,
386
+ prefix: str,
387
+ layer: str = "warm"
388
+ ):
389
+ """Decorator for caching function results."""
390
+ def decorator(func: Callable):
391
+ @wraps(func)
392
+ async def wrapper(*args, **kwargs):
393
+ cache_key = self._generate_key(prefix, *args, **kwargs)
394
+
395
+ # Try cache first
396
+ cached_value = await self.get(cache_key)
397
+ if cached_value is not None:
398
+ logger.debug(f"Cache hit: {cache_key}")
399
+ return cached_value
400
+
401
+ # Execute function
402
+ result = await func(*args, **kwargs)
403
+
404
+ # Cache result
405
+ if result is not None:
406
+ await self.set(cache_key, result, layer)
407
+ logger.debug(f"Cache set: {cache_key}")
408
+
409
+ return result
410
+ return wrapper
411
+ return decorator
412
+
413
+
414
+ class UserCacheService:
415
+ """User-specific caching with invalidation patterns."""
416
+
417
+ def __init__(self, cache: CacheLayer, db_session):
418
+ self.cache = cache
419
+ self.db = db_session
420
+
421
+ @property
422
+ def _prefix(self) -> str:
423
+ return "user"
424
+
425
+ async def get_user(self, user_id: int) -> Optional[dict]:
426
+ """Get user with caching."""
427
+ cache_key = f"{self._prefix}:{user_id}"
428
+
429
+ # Check cache
430
+ cached = await self.cache.get(cache_key)
431
+ if cached:
432
+ return cached
433
+
434
+ # Query database
435
+ user = await self.db.get_user(user_id)
436
+ if user:
437
+ await self.cache.set(cache_key, user.to_dict(), "warm")
438
+
439
+ return user.to_dict() if user else None
440
+
441
+ async def get_user_profile(self, user_id: int) -> Optional[dict]:
442
+ """Get full user profile (cold cache for expensive queries)."""
443
+ cache_key = f"{self._prefix}:profile:{user_id}"
444
+
445
+ cached = await self.cache.get(cache_key)
446
+ if cached:
447
+ return cached
448
+
449
+ # Expensive query with joins
450
+ profile = await self.db.get_full_profile(user_id)
451
+ if profile:
452
+ await self.cache.set(cache_key, profile, "cold")
453
+
454
+ return profile
455
+
456
+ async def update_user(self, user_id: int, data: dict) -> dict:
457
+ """Update user and invalidate related caches."""
458
+ # Update database
459
+ user = await self.db.update_user(user_id, data)
460
+
461
+ # Invalidate caches
462
+ await self.cache.delete(f"{self._prefix}:{user_id}")
463
+ await self.cache.delete(f"{self._prefix}:profile:{user_id}")
464
+ await self.cache.delete_pattern(f"users:list:*")
465
+
466
+ return user.to_dict()
467
+
468
+ async def get_active_users_count(self) -> int:
469
+ """Get count with hot cache (frequently accessed)."""
470
+ cache_key = "users:count:active"
471
+
472
+ cached = await self.cache.get(cache_key)
473
+ if cached is not None:
474
+ return cached
475
+
476
+ count = await self.db.count_active_users()
477
+ await self.cache.set(cache_key, count, "hot")
478
+
479
+ return count
480
+
481
+
482
+ class DistributedLock:
483
+ """Redis-based distributed locking."""
484
+
485
+ def __init__(self, redis_client: redis.Redis):
486
+ self.redis = redis_client
487
+
488
+ async def acquire(
489
+ self,
490
+ lock_name: str,
491
+ timeout: int = 10,
492
+ blocking: bool = True,
493
+ block_timeout: int = 5
494
+ ) -> Optional[str]:
495
+ """Acquire a distributed lock."""
496
+ import uuid
497
+ lock_id = str(uuid.uuid4())
498
+ lock_key = f"lock:{lock_name}"
6
499
 
7
- ```bash
8
- # Setup commands
9
- # ...
500
+ if blocking:
501
+ end_time = asyncio.get_event_loop().time() + block_timeout
502
+ while asyncio.get_event_loop().time() < end_time:
503
+ acquired = await self.redis.set(
504
+ lock_key,
505
+ lock_id,
506
+ nx=True,
507
+ ex=timeout
508
+ )
509
+ if acquired:
510
+ return lock_id
511
+ await asyncio.sleep(0.1)
512
+ return None
513
+ else:
514
+ acquired = await self.redis.set(
515
+ lock_key,
516
+ lock_id,
517
+ nx=True,
518
+ ex=timeout
519
+ )
520
+ return lock_id if acquired else None
521
+
522
+ async def release(self, lock_name: str, lock_id: str) -> bool:
523
+ """Release a distributed lock."""
524
+ lock_key = f"lock:{lock_name}"
525
+
526
+ # Lua script for atomic check-and-delete
527
+ script = """
528
+ if redis.call("get", KEYS[1]) == ARGV[1] then
529
+ return redis.call("del", KEYS[1])
530
+ else
531
+ return 0
532
+ end
533
+ """
534
+ result = await self.redis.eval(script, 1, lock_key, lock_id)
535
+ return result == 1
536
+ ```
537
+
538
+ **Explanation**: This pattern demonstrates multi-layer caching with different TTLs, cache invalidation strategies, and distributed locking for concurrent access control.
539
+
540
+ ---
541
+
542
+ ## Common Patterns
543
+
544
+ ### Pattern 1: Polyglot Persistence
545
+
546
+ Use the right database for each use case:
547
+
548
+ ```python
549
+ class DataRouter:
550
+ """Route data to appropriate database based on access pattern."""
551
+
552
+ def __init__(
553
+ self,
554
+ postgres: AsyncSession,
555
+ mongodb: AsyncIOMotorClient,
556
+ redis: redis.Redis
557
+ ):
558
+ self.postgres = postgres # Relational data
559
+ self.mongodb = mongodb # Document data
560
+ self.redis = redis # Real-time data
561
+
562
+ async def get_user_complete(self, user_id: int) -> dict:
563
+ """Aggregate data from multiple databases."""
564
+
565
+ # Structured user data from PostgreSQL
566
+ user = await self.postgres.execute(
567
+ select(User).where(User.id == user_id)
568
+ )
569
+ user_data = user.scalar_one_or_none()
570
+
571
+ if not user_data:
572
+ return None
573
+
574
+ # Flexible profile from MongoDB
575
+ profile = await self.mongodb.profiles.find_one(
576
+ {"user_id": str(user_id)}
577
+ )
578
+
579
+ # Real-time status from Redis
580
+ status = await self.redis.hgetall(f"user:status:{user_id}")
581
+
582
+ return {
583
+ "user": user_data.to_dict(),
584
+ "profile": profile,
585
+ "status": status
586
+ }
587
+
588
+ async def save_activity(self, user_id: int, activity: dict):
589
+ """Save activity to appropriate store."""
590
+
591
+ # High-frequency real-time counter in Redis
592
+ await self.redis.hincrby(
593
+ f"user:activity:{user_id}",
594
+ "page_views",
595
+ 1
596
+ )
597
+
598
+ # Activity log in MongoDB (flexible schema)
599
+ await self.mongodb.activities.insert_one({
600
+ "user_id": str(user_id),
601
+ **activity,
602
+ "timestamp": datetime.utcnow()
603
+ })
604
+ ```
605
+
606
+ ### Pattern 2: Connection Pool Management
607
+
608
+ ```python
609
+ from sqlalchemy.ext.asyncio import create_async_engine
610
+ from motor.motor_asyncio import AsyncIOMotorClient
611
+ import redis.asyncio as redis
612
+
613
+ class DatabasePool:
614
+ """Manage database connection pools."""
615
+
616
+ _instance = None
617
+
618
+ def __new__(cls):
619
+ if cls._instance is None:
620
+ cls._instance = super().__new__(cls)
621
+ return cls._instance
622
+
623
+ def __init__(self):
624
+ if hasattr(self, '_initialized'):
625
+ return
626
+ self._initialized = True
627
+
628
+ # PostgreSQL pool
629
+ self.postgres = create_async_engine(
630
+ DATABASE_URL,
631
+ pool_size=20,
632
+ max_overflow=30,
633
+ pool_pre_ping=True,
634
+ pool_recycle=3600
635
+ )
636
+
637
+ # MongoDB connection
638
+ self.mongodb = AsyncIOMotorClient(
639
+ MONGODB_URL,
640
+ maxPoolSize=50,
641
+ minPoolSize=10
642
+ )
643
+
644
+ # Redis pool
645
+ self.redis = redis.ConnectionPool.from_url(
646
+ REDIS_URL,
647
+ max_connections=100
648
+ )
649
+
650
+ async def health_check(self) -> dict:
651
+ """Check all database connections."""
652
+ results = {}
653
+
654
+ # PostgreSQL
655
+ try:
656
+ async with self.postgres.connect() as conn:
657
+ await conn.execute("SELECT 1")
658
+ results["postgres"] = "healthy"
659
+ except Exception as e:
660
+ results["postgres"] = f"unhealthy: {e}"
661
+
662
+ # MongoDB
663
+ try:
664
+ await self.mongodb.admin.command("ping")
665
+ results["mongodb"] = "healthy"
666
+ except Exception as e:
667
+ results["mongodb"] = f"unhealthy: {e}"
668
+
669
+ # Redis
670
+ try:
671
+ r = redis.Redis(connection_pool=self.redis)
672
+ await r.ping()
673
+ results["redis"] = "healthy"
674
+ except Exception as e:
675
+ results["redis"] = f"unhealthy: {e}"
676
+
677
+ return results
678
+ ```
679
+
680
+ ### Pattern 3: Database Migration Strategy
681
+
682
+ ```python
683
+ from alembic import command
684
+ from alembic.config import Config
685
+
686
+ class MigrationManager:
687
+ """Manage database migrations safely."""
688
+
689
+ def __init__(self, alembic_cfg_path: str):
690
+ self.alembic_cfg = Config(alembic_cfg_path)
691
+
692
+ def upgrade(self, revision: str = "head"):
693
+ """Apply pending migrations."""
694
+ command.upgrade(self.alembic_cfg, revision)
695
+
696
+ def downgrade(self, revision: str):
697
+ """Rollback to specific revision."""
698
+ command.downgrade(self.alembic_cfg, revision)
699
+
700
+ def create_migration(self, message: str):
701
+ """Auto-generate migration from model changes."""
702
+ command.revision(
703
+ self.alembic_cfg,
704
+ message=message,
705
+ autogenerate=True
706
+ )
707
+
708
+ def current(self) -> str:
709
+ """Get current migration revision."""
710
+ return command.current(self.alembic_cfg)
711
+ ```
712
+
713
+ ---
714
+
715
+ ## Anti-Patterns (Patterns to Avoid)
716
+
717
+ ### Anti-Pattern 1: Missing Database Indexes
718
+
719
+ **Problem**: Queries without proper indexes cause full table scans.
720
+
721
+ ```python
722
+ # Incorrect approach - no index consideration
723
+ async def find_users_by_email(email: str):
724
+ return await session.execute(
725
+ select(User).where(User.email == email)
726
+ )
727
+ ```
728
+
729
+ **Solution**: Create appropriate indexes.
730
+
731
+ ```sql
732
+ -- Correct approach - add index
733
+ CREATE UNIQUE INDEX idx_users_email ON users (email);
734
+ ```
735
+
736
+ ```python
737
+ # And verify query uses index
738
+ async def find_users_by_email(email: str):
739
+ # This will now use the index
740
+ return await session.execute(
741
+ select(User).where(User.email == email)
742
+ )
743
+ ```
744
+
745
+ ### Anti-Pattern 2: Ignoring Connection Limits
746
+
747
+ **Problem**: Opening unlimited database connections.
748
+
749
+ ```python
750
+ # Incorrect approach - new connection per request
751
+ async def get_data():
752
+ engine = create_async_engine(DATABASE_URL)
753
+ async with engine.connect() as conn:
754
+ return await conn.execute(query)
755
+ ```
756
+
757
+ **Solution**: Use connection pooling.
758
+
759
+ ```python
760
+ # Correct approach - shared connection pool
761
+ engine = create_async_engine(
762
+ DATABASE_URL,
763
+ pool_size=20,
764
+ max_overflow=10
765
+ )
766
+
767
+ async def get_data():
768
+ async with engine.connect() as conn:
769
+ return await conn.execute(query)
10
770
  ```
11
771
 
12
- ## Example 2: TDD Workflow
772
+ ### Anti-Pattern 3: Caching Without Invalidation
773
+
774
+ **Problem**: Stale data in cache after updates.
13
775
 
14
- ```bash
15
- # RED: Write failing test
16
- # GREEN: Implement feature
17
- # REFACTOR: Improve code
776
+ ```python
777
+ # Incorrect approach - cache without invalidation
778
+ async def update_user(user_id: int, data: dict):
779
+ await db.update_user(user_id, data)
780
+ # Cache still has old data!
18
781
  ```
19
782
 
20
- ## Example 3: Quality Gate
783
+ **Solution**: Always invalidate cache on updates.
784
+
785
+ ```python
786
+ # Correct approach - invalidate on update
787
+ async def update_user(user_id: int, data: dict):
788
+ await db.update_user(user_id, data)
789
+
790
+ # Invalidate related caches
791
+ await cache.delete(f"user:{user_id}")
792
+ await cache.delete(f"user:profile:{user_id}")
793
+ await cache.delete_pattern("users:list:*")
794
+ ```
795
+
796
+ ---
797
+
798
+ ## Performance Benchmarks
799
+
800
+ ### Query Performance Comparison
801
+
802
+ ```python
803
+ # Before optimization: 15,000ms
804
+ # After indexing: 150ms
805
+ # With materialized view: 15ms
806
+ # With Redis cache: 1ms
807
+
808
+ async def benchmark_user_analytics():
809
+ import time
810
+
811
+ # Cold query (no cache)
812
+ start = time.time()
813
+ result = await get_user_analytics_no_cache(user_id=1)
814
+ cold_time = time.time() - start
815
+
816
+ # Warm query (cached)
817
+ start = time.time()
818
+ result = await get_user_analytics_cached(user_id=1)
819
+ warm_time = time.time() - start
21
820
 
22
- ```bash
23
- # Run quality checks
24
- # Verify coverage ≥85%
821
+ return {
822
+ "cold_query_ms": cold_time * 1000,
823
+ "warm_query_ms": warm_time * 1000,
824
+ "speedup_factor": cold_time / warm_time
825
+ }
25
826
  ```
26
827
 
27
828
  ---
28
829
 
29
- _For more examples, see SKILL.md reference section_
830
+ *For additional patterns and database-specific optimizations, see the `modules/` directory.*