moai-adk 0.34.0__py3-none-any.whl → 1.1.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 (524) hide show
  1. moai_adk/__main__.py +136 -5
  2. moai_adk/astgrep/__init__.py +37 -0
  3. moai_adk/astgrep/analyzer.py +522 -0
  4. moai_adk/astgrep/models.py +124 -0
  5. moai_adk/astgrep/rules.py +179 -0
  6. moai_adk/cli/commands/analyze.py +11 -2
  7. moai_adk/cli/commands/doctor.py +7 -1
  8. moai_adk/cli/commands/init.py +321 -11
  9. moai_adk/cli/commands/language.py +7 -1
  10. moai_adk/cli/commands/rank.py +449 -0
  11. moai_adk/cli/commands/status.py +7 -1
  12. moai_adk/cli/commands/switch.py +325 -0
  13. moai_adk/cli/commands/update.py +296 -23
  14. moai_adk/cli/prompts/init_prompts.py +362 -66
  15. moai_adk/cli/prompts/translations/__init__.py +573 -0
  16. moai_adk/cli/ui/prompts.py +61 -2
  17. moai_adk/cli/worktree/cli.py +106 -1
  18. moai_adk/cli/worktree/manager.py +155 -0
  19. moai_adk/core/config/unified.py +244 -63
  20. moai_adk/core/credentials.py +264 -0
  21. moai_adk/core/error_recovery_system.py +22 -4
  22. moai_adk/core/git/conflict_detector.py +10 -1
  23. moai_adk/core/git/event_detector.py +16 -5
  24. moai_adk/core/integration/engine.py +2 -2
  25. moai_adk/core/integration/integration_tester.py +5 -5
  26. moai_adk/core/language_config_resolver.py +9 -3
  27. moai_adk/core/merge/analyzer.py +509 -324
  28. moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
  29. moai_adk/core/migration/backup_manager.py +54 -4
  30. moai_adk/core/migration/file_migrator.py +174 -2
  31. moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
  32. moai_adk/core/migration/version_detector.py +123 -19
  33. moai_adk/core/migration/version_migrator.py +44 -9
  34. moai_adk/core/model_allocator.py +241 -0
  35. moai_adk/core/project/backup_utils.py +12 -2
  36. moai_adk/core/project/initializer.py +44 -87
  37. moai_adk/core/project/phase_executor.py +95 -33
  38. moai_adk/core/project/validator.py +16 -1
  39. moai_adk/core/quality/trust_checker.py +30 -10
  40. moai_adk/core/rollback_manager.py +60 -25
  41. moai_adk/core/template/backup.py +88 -6
  42. moai_adk/core/template/config.py +33 -9
  43. moai_adk/core/template/merger.py +34 -8
  44. moai_adk/core/template/processor.py +334 -11
  45. moai_adk/core/template_engine.py +10 -1
  46. moai_adk/core/template_variable_synchronizer.py +16 -2
  47. moai_adk/core/version_sync.py +54 -6
  48. moai_adk/foundation/__init__.py +1 -20
  49. moai_adk/foundation/testing.py +1 -1
  50. moai_adk/loop/__init__.py +54 -0
  51. moai_adk/loop/controller.py +305 -0
  52. moai_adk/loop/feedback.py +230 -0
  53. moai_adk/loop/state.py +209 -0
  54. moai_adk/loop/storage.py +220 -0
  55. moai_adk/lsp/__init__.py +70 -0
  56. moai_adk/lsp/client.py +320 -0
  57. moai_adk/lsp/models.py +261 -0
  58. moai_adk/lsp/protocol.py +404 -0
  59. moai_adk/lsp/server_manager.py +248 -0
  60. moai_adk/project/configuration.py +8 -1
  61. moai_adk/py.typed +0 -0
  62. moai_adk/ralph/__init__.py +37 -0
  63. moai_adk/ralph/engine.py +307 -0
  64. moai_adk/rank/__init__.py +21 -0
  65. moai_adk/rank/auth.py +425 -0
  66. moai_adk/rank/client.py +557 -0
  67. moai_adk/rank/config.py +147 -0
  68. moai_adk/rank/hook.py +1503 -0
  69. moai_adk/rank/py.typed +0 -0
  70. moai_adk/statusline/__init__.py +3 -0
  71. moai_adk/statusline/enhanced_output_style_detector.py +5 -5
  72. moai_adk/statusline/main.py +20 -1
  73. moai_adk/statusline/memory_collector.py +268 -0
  74. moai_adk/statusline/renderer.py +54 -38
  75. moai_adk/tag_system/__init__.py +48 -0
  76. moai_adk/tag_system/atomic_ops.py +117 -0
  77. moai_adk/tag_system/linkage.py +335 -0
  78. moai_adk/tag_system/parser.py +176 -0
  79. moai_adk/tag_system/validator.py +200 -0
  80. moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
  81. moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
  82. moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
  83. moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
  84. moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
  85. moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
  86. moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
  87. moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
  88. moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
  89. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
  90. moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
  91. moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
  92. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
  93. moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
  94. moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
  95. moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
  96. moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
  97. moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
  98. moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
  99. moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
  100. moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
  101. moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
  102. moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
  103. moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
  104. moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
  105. moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
  106. moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
  107. moai_adk/templates/.claude/commands/moai/fix.md +264 -0
  108. moai_adk/templates/.claude/commands/moai/loop.md +363 -0
  109. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  110. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
  111. moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
  112. moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
  113. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
  114. moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
  115. moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
  116. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
  117. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
  118. moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
  119. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  120. moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
  121. moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
  122. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
  123. moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
  124. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
  125. moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
  126. moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
  127. moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
  128. moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
  129. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
  130. moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
  131. moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
  132. moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
  133. moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
  134. moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
  135. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
  136. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
  137. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
  138. moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
  139. moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
  140. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
  141. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
  142. moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
  143. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
  144. moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
  145. moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
  146. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
  147. moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
  148. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
  149. moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
  150. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
  151. moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
  152. moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
  153. moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
  154. moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
  155. moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
  156. moai_adk/templates/.claude/settings.json +154 -77
  157. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
  158. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
  159. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
  160. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
  161. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
  162. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
  163. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
  164. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
  165. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
  166. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
  167. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
  168. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  169. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  170. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  171. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  172. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  173. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  174. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
  175. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
  176. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
  177. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
  178. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  179. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  180. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
  181. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  182. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  183. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  184. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
  185. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  186. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
  187. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  188. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
  189. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  190. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
  191. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
  192. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
  193. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
  196. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
  199. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
  201. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
  204. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
  205. moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
  206. moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
  207. moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
  208. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
  209. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
  210. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  211. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
  212. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
  213. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  214. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  215. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  216. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  217. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  218. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  219. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  220. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
  221. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
  222. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  223. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
  224. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
  225. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
  226. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
  227. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
  228. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  229. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  230. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
  231. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
  232. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
  233. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  234. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
  235. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
  236. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
  237. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
  238. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  239. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
  240. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
  241. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
  242. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  243. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  244. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
  245. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
  246. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
  247. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  248. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  249. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  250. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  251. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  252. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
  253. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  254. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  255. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  256. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  257. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
  258. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
  259. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
  260. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
  261. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
  262. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
  263. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
  264. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  265. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  266. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  267. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  268. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  269. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  270. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  271. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  272. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  273. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  274. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  275. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  276. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  277. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  278. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  279. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  280. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  281. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  282. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  283. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  284. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  285. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  286. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  287. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  288. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  289. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  290. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  291. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  292. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  293. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  294. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  295. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  296. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  297. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
  298. moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
  299. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  300. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  301. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
  302. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  303. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  304. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  305. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  306. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  307. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  308. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
  309. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  310. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  311. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  312. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  313. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  314. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
  315. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  316. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  317. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  318. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  319. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  320. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  321. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
  322. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  323. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  324. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  325. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  326. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  327. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  328. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
  329. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  330. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  331. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  332. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  333. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  334. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  335. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
  336. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  337. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  338. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  339. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  340. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  341. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  342. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  343. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  344. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  345. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
  346. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  347. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  348. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  349. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  350. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  351. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  352. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  353. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
  354. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  355. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  356. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  357. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  358. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  359. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  360. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  361. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  362. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  363. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  364. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  365. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  366. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  367. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  368. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  369. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
  370. moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
  371. moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
  372. moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
  373. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
  374. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
  375. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
  376. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  377. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
  378. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
  379. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
  380. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
  381. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  382. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  383. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  384. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  385. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  386. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  387. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  388. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  390. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
  391. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
  404. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  429. moai_adk/templates/.git-hooks/pre-push +162 -59
  430. moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
  431. moai_adk/templates/.gitignore +65 -107
  432. moai_adk/templates/.lsp.json +152 -0
  433. moai_adk/templates/.mcp.json +2 -20
  434. moai_adk/templates/.moai/announcements/en.json +18 -0
  435. moai_adk/templates/.moai/announcements/ja.json +18 -0
  436. moai_adk/templates/.moai/announcements/ko.json +18 -0
  437. moai_adk/templates/.moai/announcements/zh.json +18 -0
  438. moai_adk/templates/.moai/config/config.yaml +8 -2
  439. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  440. moai_adk/templates/.moai/config/sections/language.yaml +2 -2
  441. moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
  442. moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
  443. moai_adk/templates/.moai/config/sections/project.yaml +2 -2
  444. moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
  445. moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
  446. moai_adk/templates/.moai/config/sections/system.yaml +46 -1
  447. moai_adk/templates/.moai/config/sections/user.yaml +1 -1
  448. moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
  449. moai_adk/templates/.moai/llm-configs/glm.json +22 -0
  450. moai_adk/templates/CLAUDE.ja.md +343 -0
  451. moai_adk/templates/CLAUDE.ko.md +343 -0
  452. moai_adk/templates/CLAUDE.md +200 -499
  453. moai_adk/templates/CLAUDE.zh.md +343 -0
  454. moai_adk/utils/common.py +37 -0
  455. moai_adk/version.py +1 -1
  456. moai_adk-1.1.0.dist-info/METADATA +2443 -0
  457. moai_adk-1.1.0.dist-info/RECORD +701 -0
  458. {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
  459. moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
  460. moai_adk/core/config/auto_spec_config.py +0 -340
  461. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
  462. moai_adk/core/spec/confidence_scoring.py +0 -680
  463. moai_adk/core/spec/ears_template_engine.py +0 -1247
  464. moai_adk/core/spec/quality_validator.py +0 -687
  465. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
  466. moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
  467. moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
  468. moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
  469. moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
  470. moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
  471. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
  472. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
  473. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
  474. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
  475. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
  476. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
  477. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
  478. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
  479. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
  480. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
  481. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
  482. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
  483. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
  484. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
  485. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
  486. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
  487. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
  488. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
  489. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
  490. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
  491. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
  492. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
  493. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
  494. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
  495. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
  496. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
  497. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
  498. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
  499. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
  500. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
  501. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
  502. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
  503. moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
  504. moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
  505. moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
  506. moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
  507. moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
  508. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
  509. moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
  510. moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
  511. moai_adk-0.34.0.dist-info/METADATA +0 -2999
  512. moai_adk-0.34.0.dist-info/RECORD +0 -463
  513. moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
  514. /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
  515. /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  516. /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
  517. /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
  518. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  519. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
  520. /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  521. /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
  522. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
  523. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
  524. {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,889 @@
1
+ # Elixir 1.17+ Complete Reference
2
+
3
+ ## Language Features Reference
4
+
5
+ ### Elixir 1.17 Feature Matrix
6
+
7
+ | Feature | Status | Release | Production Ready |
8
+ | ---------------------- | ------ | ------- | ---------------- |
9
+ | set_theoretic_types | Stable | 1.17 | Yes |
10
+ | Duration module | Stable | 1.17 | Yes |
11
+ | Process.info/1 default | Stable | 1.17 | Yes |
12
+ | Improved Documentation | Stable | 1.17 | Yes |
13
+ | Pattern Matching | Stable | 1.0+ | Yes |
14
+ | Protocols | Stable | 1.0+ | Yes |
15
+ | Metaprogramming | Stable | 1.0+ | Yes |
16
+ | OTP Integration | Stable | 1.0+ | Yes |
17
+
18
+ ### Set-Theoretic Types (Elixir 1.17+)
19
+
20
+ Type System Improvements:
21
+
22
+ ```elixir
23
+ # Better type inference for guards
24
+ defmodule TypeExample do
25
+ @spec check_value(integer() | binary()) :: :number | :string
26
+ def check_value(value) when is_integer(value), do: :number
27
+ def check_value(value) when is_binary(value), do: :string
28
+
29
+ # Compiler now understands type narrowing
30
+ @spec process(integer() | binary()) :: integer()
31
+ def process(value) when is_integer(value) do
32
+ value * 2
33
+ end
34
+
35
+ def process(value) when is_binary(value) do
36
+ String.length(value)
37
+ end
38
+ end
39
+ ```
40
+
41
+ ### Duration Module
42
+
43
+ New Duration type for time calculations:
44
+
45
+ ```elixir
46
+ # Create durations
47
+ duration = Duration.new!(hour: 2, minute: 30, second: 15)
48
+
49
+ # Duration arithmetic
50
+ start_time = ~U[2024-01-01 10:00:00Z]
51
+ end_time = DateTime.add(start_time, duration)
52
+
53
+ # Duration components
54
+ duration.hour # 2
55
+ duration.minute # 30
56
+ duration.second # 15
57
+
58
+ # Negative durations
59
+ negative_duration = Duration.new!(hour: -1, minute: -30)
60
+
61
+ # Duration comparison
62
+ Duration.compare(duration, negative_duration) # :gt
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Phoenix Framework Reference
68
+
69
+ ### Phoenix 1.7 Architecture
70
+
71
+ Application Structure:
72
+
73
+ ```
74
+ lib/
75
+ ├── my_app/ # Business logic context
76
+ │ ├── application.ex
77
+ │ ├── repo.ex
78
+ │ └── accounts/
79
+ │ └── user.ex
80
+ └── my_app_web/ # Web interface
81
+ ├── endpoint.ex
82
+ ├── router.ex
83
+ ├── components/ # New in 1.7
84
+ │ ├── core_components.ex
85
+ │ └── layouts.ex
86
+ ├── controllers/
87
+ └── live/
88
+ ```
89
+
90
+ ### Phoenix.Component (Function Components)
91
+
92
+ Core Components Pattern:
93
+
94
+ ```elixir
95
+ defmodule MyAppWeb.CoreComponents do
96
+ use Phoenix.Component
97
+ alias Phoenix.LiveView.JS
98
+
99
+ @doc """
100
+ Renders a button.
101
+ """
102
+ attr :type, :string, default: "button"
103
+ attr :class, :string, default: nil
104
+ attr :rest, :global, include: ~w(disabled form name value)
105
+
106
+ slot :inner_block, required: true
107
+
108
+ def button(assigns) do
109
+ ~H"""
110
+ <button
111
+ type={@type}
112
+ class={[
113
+ "phx-submit-loading:opacity-75 rounded-lg bg-zinc-900 hover:bg-zinc-700",
114
+ "py-2 px-3 text-sm font-semibold leading-6 text-white",
115
+ @class
116
+ ]}
117
+ {@rest}
118
+ >
119
+ <%= render_slot(@inner_block) %>
120
+ </button>
121
+ """
122
+ end
123
+
124
+ @doc """
125
+ Renders a table with sortable columns.
126
+ """
127
+ attr :id, :string, required: true
128
+ attr :rows, :list, required: true
129
+ attr :row_id, :any, default: nil, doc: "function or key to get row ID"
130
+ attr :row_click, :any, default: nil
131
+ attr :row_item, :any, default: &Function.identity/1
132
+
133
+ slot :col, required: true do
134
+ attr :label, :string
135
+ attr :sortable, :boolean
136
+ end
137
+
138
+ slot :action, doc: "actions for each row"
139
+
140
+ def table(assigns) do
141
+ assigns =
142
+ with %{rows: %Phoenix.LiveView.LiveStream{}} <- assigns do
143
+ assign(assigns, row_id: assigns.row_id || fn {id, _item} -> id end)
144
+ end
145
+
146
+ ~H"""
147
+ <div class="overflow-y-auto px-4 sm:overflow-visible sm:px-0">
148
+ <table class="w-[40rem] mt-11 sm:w-full">
149
+ <thead class="text-sm text-left leading-6 text-zinc-500">
150
+ <tr>
151
+ <th :for={col <- @col} class="p-0 pb-4 pr-6 font-normal"><%= col[:label] %></th>
152
+ <th :if={@action != []} class="relative p-0 pb-4">
153
+ <span class="sr-only">Actions</span>
154
+ </th>
155
+ </tr>
156
+ </thead>
157
+ <tbody class="relative divide-y divide-zinc-100 border-t border-zinc-200">
158
+ <tr :for={row <- @rows} id={@row_id && @row_id.(row)} class="group hover:bg-zinc-50">
159
+ <td
160
+ :for={{col, i} <- Enum.with_index(@col)}
161
+ phx-click={@row_click && @row_click.(row)}
162
+ class={["relative p-0", @row_click && "hover:cursor-pointer"]}
163
+ >
164
+ <div class="block py-4 pr-6">
165
+ <span class="absolute -inset-y-px right-0 -left-4 group-hover:bg-zinc-50 sm:rounded-l-xl" />
166
+ <span class={["relative", i == 0 && "font-semibold text-zinc-900"]}>
167
+ <%= render_slot(col, @row_item.(row)) %>
168
+ </span>
169
+ </div>
170
+ </td>
171
+ <td :if={@action != []} class="relative w-14 p-0">
172
+ <div class="relative whitespace-nowrap py-4 text-right text-sm font-medium">
173
+ <span class="absolute -inset-y-px -right-4 left-0 group-hover:bg-zinc-50 sm:rounded-r-xl" />
174
+ <span :for={action <- @action} class="relative ml-4 font-semibold leading-6 text-zinc-900 hover:text-zinc-700">
175
+ <%= render_slot(action, @row_item.(row)) %>
176
+ </span>
177
+ </div>
178
+ </td>
179
+ </tr>
180
+ </tbody>
181
+ </table>
182
+ </div>
183
+ """
184
+ end
185
+ end
186
+ ```
187
+
188
+ ### Verified Routes
189
+
190
+ Route Helpers Replacement:
191
+
192
+ ```elixir
193
+ # router.ex
194
+ scope "/", MyAppWeb do
195
+ pipe_through :browser
196
+
197
+ get "/", PageController, :home
198
+ live "/users", UserLive.Index, :index
199
+ live "/users/:id", UserLive.Show, :show
200
+
201
+ resources "/posts", PostController
202
+ end
203
+
204
+ # Usage with ~p sigil (compile-time verification)
205
+ ~p"/" # "/"
206
+ ~p"/users" # "/users"
207
+ ~p"/users/#{user}" # "/users/123"
208
+ ~p"/users/#{user}/edit" # "/users/123/edit"
209
+ ~p"/posts/#{post}" # "/posts/42"
210
+
211
+ # Path with query params
212
+ ~p"/search?#{[q: "elixir", page: 2]}" # "/search?q=elixir&page=2"
213
+
214
+ # Fragment
215
+ ~p"/docs#installation" # "/docs#installation"
216
+
217
+ # External URLs (requires uri_info configuration)
218
+ url(~p"/users") # "https://example.com/users"
219
+ ```
220
+
221
+ ### Phoenix.LiveView Streams
222
+
223
+ Efficient List Updates:
224
+
225
+ ```elixir
226
+ defmodule MyAppWeb.UserLive.Index do
227
+ use MyAppWeb, :live_view
228
+
229
+ @impl true
230
+ def mount(_params, _session, socket) do
231
+ {:ok, stream(socket, :users, Accounts.list_users())}
232
+ end
233
+
234
+ @impl true
235
+ def handle_event("delete", %{"id" => id}, socket) do
236
+ user = Accounts.get_user!(id)
237
+ {:ok, _} = Accounts.delete_user(user)
238
+
239
+ # Remove from stream (efficient DOM update)
240
+ {:noreply, stream_delete(socket, :users, user)}
241
+ end
242
+
243
+ @impl true
244
+ def handle_info({:user_created, user}, socket) do
245
+ # Insert at beginning of stream
246
+ {:noreply, stream_insert(socket, :users, user, at: 0)}
247
+ end
248
+
249
+ @impl true
250
+ def handle_info({:user_updated, user}, socket) do
251
+ # Update existing item in stream
252
+ {:noreply, stream_insert(socket, :users, user)}
253
+ end
254
+
255
+ @impl true
256
+ def render(assigns) do
257
+ ~H"""
258
+ <.table id="users" rows={@streams.users}>
259
+ <:col :let={{_id, user}} label="Name"><%= user.name %></:col>
260
+ <:col :let={{_id, user}} label="Email"><%= user.email %></:col>
261
+ <:action :let={{id, user}}>
262
+ <.link phx-click={JS.push("delete", value: %{id: user.id}) |> hide("##{id}")}>
263
+ Delete
264
+ </.link>
265
+ </:action>
266
+ </.table>
267
+ """
268
+ end
269
+ end
270
+ ```
271
+
272
+ ---
273
+
274
+ ## Ecto Reference
275
+
276
+ ### Ecto 3.12 Query API
277
+
278
+ Query Composition Patterns:
279
+
280
+ ```elixir
281
+ import Ecto.Query
282
+
283
+ # Basic queries
284
+ from u in User, select: u
285
+ from u in User, where: u.age > 18
286
+
287
+ # Join queries
288
+ from u in User,
289
+ join: p in assoc(u, :posts),
290
+ where: p.published == true,
291
+ select: {u, count(p.id)},
292
+ group_by: u.id
293
+
294
+ # Subqueries
295
+ popular_posts_query = from p in Post, where: p.views > 1000
296
+
297
+ from u in User,
298
+ join: p in subquery(popular_posts_query),
299
+ on: p.user_id == u.id
300
+
301
+ # Dynamic queries
302
+ def filter_users(query, filters) do
303
+ Enum.reduce(filters, query, fn
304
+ {:name, name}, query ->
305
+ from q in query, where: ilike(q.name, ^"%#{name}%")
306
+
307
+ {:min_age, age}, query ->
308
+ from q in query, where: q.age >= ^age
309
+
310
+ {:verified, true}, query ->
311
+ from q in query, where: not is_nil(q.verified_at)
312
+
313
+ _, query ->
314
+ query
315
+ end)
316
+ end
317
+
318
+ # Window functions
319
+ from p in Post,
320
+ select: %{
321
+ id: p.id,
322
+ title: p.title,
323
+ row_number: over(row_number(), :posts_partition)
324
+ },
325
+ windows: [posts_partition: [partition_by: p.user_id, order_by: p.inserted_at]]
326
+
327
+ # Common Table Expressions (CTE)
328
+ initial_query = from p in Post, where: p.published == true
329
+ recursive_query = from p in Post, where: p.parent_id in subquery(initial_query)
330
+
331
+ from p in Post,
332
+ recursive_ctes: true,
333
+ with_cte: "published_posts",
334
+ as: ^union_all(initial_query, ^recursive_query)
335
+ ```
336
+
337
+ ### Ecto.Multi for Transactions
338
+
339
+ Complex Transaction Patterns:
340
+
341
+ ```elixir
342
+ defmodule MyApp.Transfers do
343
+ import Ecto.Query
344
+ alias Ecto.Multi
345
+ alias MyApp.{Repo, Account, Transaction}
346
+
347
+ def transfer_money(from_account_id, to_account_id, amount) do
348
+ Multi.new()
349
+ |> Multi.run(:validate_amount, fn _repo, _changes ->
350
+ if amount > 0, do: {:ok, amount}, else: {:error, :invalid_amount}
351
+ end)
352
+ |> Multi.run(:from_account, fn repo, _changes ->
353
+ case repo.get(Account, from_account_id) do
354
+ nil -> {:error, :from_account_not_found}
355
+ account -> {:ok, account}
356
+ end
357
+ end)
358
+ |> Multi.run(:to_account, fn repo, _changes ->
359
+ case repo.get(Account, to_account_id) do
360
+ nil -> {:error, :to_account_not_found}
361
+ account -> {:ok, account}
362
+ end
363
+ end)
364
+ |> Multi.run(:check_balance, fn _repo, %{from_account: account} ->
365
+ if account.balance >= amount do
366
+ {:ok, :sufficient_balance}
367
+ else
368
+ {:error, :insufficient_funds}
369
+ end
370
+ end)
371
+ |> Multi.update(:withdraw, fn %{from_account: account} ->
372
+ Account.changeset(account, %{balance: account.balance - amount})
373
+ end)
374
+ |> Multi.update(:deposit, fn %{to_account: account} ->
375
+ Account.changeset(account, %{balance: account.balance + amount})
376
+ end)
377
+ |> Multi.insert(:transaction, fn %{from_account: from, to_account: to} ->
378
+ Transaction.changeset(%Transaction{}, %{
379
+ from_account_id: from.id,
380
+ to_account_id: to.id,
381
+ amount: amount,
382
+ status: :completed
383
+ })
384
+ end)
385
+ |> Multi.run(:notify, fn _repo, %{transaction: txn} ->
386
+ # Send notifications
387
+ MyApp.Notifications.send_transfer_notification(txn)
388
+ {:ok, :notified}
389
+ end)
390
+ |> Repo.transaction()
391
+ end
392
+ end
393
+ ```
394
+
395
+ ### Ecto Schema Types
396
+
397
+ Custom Type Definition:
398
+
399
+ ```elixir
400
+ defmodule MyApp.Encrypted.Binary do
401
+ use Ecto.Type
402
+
403
+ def type, do: :binary
404
+
405
+ def cast(value) when is_binary(value), do: {:ok, value}
406
+ def cast(_), do: :error
407
+
408
+ def load(value) when is_binary(value) do
409
+ {:ok, decrypt(value)}
410
+ end
411
+
412
+ def dump(value) when is_binary(value) do
413
+ {:ok, encrypt(value)}
414
+ end
415
+
416
+ defp encrypt(value) do
417
+ # Implement encryption
418
+ :crypto.strong_rand_bytes(16)
419
+ |> then(&:crypto.crypto_one_time(:aes_256_cbc, key(), &1, value, true))
420
+ end
421
+
422
+ defp decrypt(value) do
423
+ # Implement decryption
424
+ <<iv::binary-16, ciphertext::binary>> = value
425
+ :crypto.crypto_one_time(:aes_256_cbc, key(), iv, ciphertext, false)
426
+ end
427
+
428
+ defp key do
429
+ Application.get_env(:my_app, :encryption_key)
430
+ end
431
+ end
432
+
433
+ # Usage in schema
434
+ defmodule MyApp.Secret do
435
+ use Ecto.Schema
436
+
437
+ schema "secrets" do
438
+ field :name, :string
439
+ field :value, MyApp.Encrypted.Binary
440
+
441
+ timestamps()
442
+ end
443
+ end
444
+ ```
445
+
446
+ ---
447
+
448
+ ## OTP Behaviors Reference
449
+
450
+ ### GenServer Complete API
451
+
452
+ ```elixir
453
+ defmodule MyApp.Cache do
454
+ use GenServer
455
+
456
+ # Client API
457
+
458
+ def start_link(opts) do
459
+ name = Keyword.get(opts, :name, __MODULE__)
460
+ GenServer.start_link(__MODULE__, opts, name: name)
461
+ end
462
+
463
+ def get(server \\ __MODULE__, key) do
464
+ GenServer.call(server, {:get, key})
465
+ end
466
+
467
+ def put(server \\ __MODULE__, key, value) do
468
+ GenServer.cast(server, {:put, key, value})
469
+ end
470
+
471
+ def delete(server \\ __MODULE__, key) do
472
+ GenServer.call(server, {:delete, key})
473
+ end
474
+
475
+ def clear(server \\ __MODULE__) do
476
+ GenServer.cast(server, :clear)
477
+ end
478
+
479
+ # Server Callbacks
480
+
481
+ @impl true
482
+ def init(opts) do
483
+ max_size = Keyword.get(opts, :max_size, 1000)
484
+ ttl = Keyword.get(opts, :ttl, :timer.hours(1))
485
+
486
+ state = %{
487
+ cache: %{},
488
+ max_size: max_size,
489
+ ttl: ttl,
490
+ access_order: []
491
+ }
492
+
493
+ {:ok, state}
494
+ end
495
+
496
+ @impl true
497
+ def handle_call({:get, key}, _from, state) do
498
+ case Map.get(state.cache, key) do
499
+ nil ->
500
+ {:reply, nil, state}
501
+
502
+ {value, timestamp} ->
503
+ if expired?(timestamp, state.ttl) do
504
+ new_cache = Map.delete(state.cache, key)
505
+ {:reply, nil, %{state | cache: new_cache}}
506
+ else
507
+ # Update access order (LRU)
508
+ new_access_order = [key | List.delete(state.access_order, key)]
509
+ {:reply, value, %{state | access_order: new_access_order}}
510
+ end
511
+ end
512
+ end
513
+
514
+ def handle_call({:delete, key}, _from, state) do
515
+ new_cache = Map.delete(state.cache, key)
516
+ new_access_order = List.delete(state.access_order, key)
517
+ {:reply, :ok, %{state | cache: new_cache, access_order: new_access_order}}
518
+ end
519
+
520
+ @impl true
521
+ def handle_cast({:put, key, value}, state) do
522
+ timestamp = System.monotonic_time(:millisecond)
523
+ new_cache = Map.put(state.cache, key, {value, timestamp})
524
+ new_access_order = [key | List.delete(state.access_order, key)]
525
+
526
+ state = %{state | cache: new_cache, access_order: new_access_order}
527
+
528
+ # Evict oldest if over max_size
529
+ state =
530
+ if map_size(state.cache) > state.max_size do
531
+ evict_oldest(state)
532
+ else
533
+ state
534
+ end
535
+
536
+ {:noreply, state}
537
+ end
538
+
539
+ def handle_cast(:clear, state) do
540
+ {:noreply, %{state | cache: %{}, access_order: []}}
541
+ end
542
+
543
+ @impl true
544
+ def handle_info(:cleanup, state) do
545
+ now = System.monotonic_time(:millisecond)
546
+
547
+ new_cache =
548
+ state.cache
549
+ |> Enum.reject(fn {_key, {_value, timestamp}} ->
550
+ expired?(timestamp, state.ttl)
551
+ end)
552
+ |> Map.new()
553
+
554
+ schedule_cleanup()
555
+ {:noreply, %{state | cache: new_cache}}
556
+ end
557
+
558
+ # Private Functions
559
+
560
+ defp expired?(timestamp, ttl) do
561
+ System.monotonic_time(:millisecond) - timestamp > ttl
562
+ end
563
+
564
+ defp evict_oldest(state) do
565
+ oldest_key = List.last(state.access_order)
566
+ new_cache = Map.delete(state.cache, oldest_key)
567
+ new_access_order = List.delete_at(state.access_order, -1)
568
+ %{state | cache: new_cache, access_order: new_access_order}
569
+ end
570
+
571
+ defp schedule_cleanup do
572
+ Process.send_after(self(), :cleanup, :timer.minutes(5))
573
+ end
574
+ end
575
+ ```
576
+
577
+ ### Supervisor Strategies
578
+
579
+ ```elixir
580
+ defmodule MyApp.Supervisor do
581
+ use Supervisor
582
+
583
+ def start_link(init_arg) do
584
+ Supervisor.start_link(__MODULE__, init_arg, name: __MODULE__)
585
+ end
586
+
587
+ @impl true
588
+ def init(_init_arg) do
589
+ children = [
590
+ # One-for-one: Only restart failed child
591
+ {MyApp.Cache, name: MyApp.Cache, strategy: :one_for_one},
592
+
593
+ # Rest-for-one: Restart failed child and all started after it
594
+ Supervisor.child_spec({MyApp.DatabaseWorker, []}, restart: :permanent),
595
+ Supervisor.child_spec({MyApp.ApiClient, []}, restart: :permanent),
596
+
597
+ # One-for-all: Restart all children if one fails (use separate supervisor)
598
+ {MyApp.ClusterSupervisor, strategy: :one_for_all}
599
+ ]
600
+
601
+ # Strategy options:
602
+ # - :one_for_one - only restart failed process
603
+ # - :one_for_all - restart all children if one fails
604
+ # - :rest_for_one - restart failed and all started after it
605
+ Supervisor.init(children, strategy: :one_for_one, max_restarts: 3, max_seconds: 5)
606
+ end
607
+ end
608
+ ```
609
+
610
+ ---
611
+
612
+ ## Mix Tasks Reference
613
+
614
+ ### Common Mix Commands
615
+
616
+ ```bash
617
+ # Project management
618
+ mix new my_app # Create new Mix project
619
+ mix new my_app --sup # Create with supervision tree
620
+ mix phoenix.new my_app_web # Create Phoenix project
621
+ mix phoenix.new my_app_web --no-ecto # Without database
622
+
623
+ # Dependencies
624
+ mix deps.get # Fetch dependencies
625
+ mix deps.update <package> # Update specific package
626
+ mix deps.clean <package> # Clean compiled package
627
+ mix deps.tree # Show dependency tree
628
+
629
+ # Database (Ecto)
630
+ mix ecto.create # Create database
631
+ mix ecto.drop # Drop database
632
+ mix ecto.migrate # Run migrations
633
+ mix ecto.rollback # Rollback last migration
634
+ mix ecto.rollback --step 3 # Rollback 3 migrations
635
+ mix ecto.reset # Drop, create, migrate
636
+ mix ecto.gen.migration add_users_table # Generate migration
637
+
638
+ # Testing
639
+ mix test # Run all tests
640
+ mix test test/my_app_test.exs # Run specific file
641
+ mix test --only slow # Run tagged tests
642
+ mix test --cover # With coverage report
643
+ mix test --trace # Detailed test output
644
+
645
+ # Code quality
646
+ mix format # Format code
647
+ mix format --check-formatted # Check formatting
648
+ mix credo # Static code analysis
649
+ mix dialyzer # Type checking
650
+
651
+ # Phoenix-specific
652
+ mix phx.server # Start Phoenix server
653
+ mix phx.gen.html Accounts User users name:string email:string # Generate HTML resources
654
+ mix phx.gen.live Blog Post posts title:string body:text # Generate LiveView resources
655
+ mix phx.gen.json Api User users name:string # Generate JSON API
656
+ mix phx.gen.context Accounts User users name:string # Generate context only
657
+ mix phx.routes # List all routes
658
+
659
+ # Release
660
+ mix release # Build release
661
+ mix release.init # Initialize release config
662
+ MIX_ENV=prod mix release # Production release
663
+ ```
664
+
665
+ ### Custom Mix Task
666
+
667
+ ```elixir
668
+ defmodule Mix.Tasks.MyApp.DatabaseReport do
669
+ use Mix.Task
670
+
671
+ @shortdoc "Generate database report"
672
+ @moduledoc """
673
+ Generate a report of database statistics.
674
+
675
+ mix my_app.database_report
676
+
677
+ Options:
678
+ --format - Output format (json, csv, table). Default: table
679
+ --output - Output file path
680
+ """
681
+
682
+ @impl Mix.Task
683
+ def run(args) do
684
+ Mix.Task.run("app.start")
685
+
686
+ {opts, _args, _invalid} =
687
+ OptionParser.parse(args,
688
+ strict: [format: :string, output: :string],
689
+ aliases: [f: :format, o: :output]
690
+ )
691
+
692
+ format = Keyword.get(opts, :format, "table")
693
+ output_file = Keyword.get(opts, :output)
694
+
695
+ report = generate_report()
696
+
697
+ formatted_output =
698
+ case format do
699
+ "json" -> Jason.encode!(report, pretty: true)
700
+ "csv" -> to_csv(report)
701
+ _ -> to_table(report)
702
+ end
703
+
704
+ if output_file do
705
+ File.write!(output_file, formatted_output)
706
+ Mix.shell().info("Report written to #{output_file}")
707
+ else
708
+ Mix.shell().info(formatted_output)
709
+ end
710
+ end
711
+
712
+ defp generate_report do
713
+ alias MyApp.Repo
714
+
715
+ %{
716
+ total_users: Repo.aggregate(MyApp.Accounts.User, :count, :id),
717
+ total_posts: Repo.aggregate(MyApp.Blog.Post, :count, :id),
718
+ database_size: get_database_size()
719
+ }
720
+ end
721
+
722
+ defp get_database_size do
723
+ result = Repo.query!("SELECT pg_size_pretty(pg_database_size(current_database()))")
724
+ result.rows |> List.first() |> List.first()
725
+ end
726
+
727
+ defp to_csv(report) do
728
+ report
729
+ |> Enum.map(fn {key, value} -> "#{key},#{value}" end)
730
+ |> Enum.join("\n")
731
+ end
732
+
733
+ defp to_table(report) do
734
+ report
735
+ |> Enum.map(fn {key, value} ->
736
+ " #{String.pad_trailing(to_string(key), 20)} | #{value}"
737
+ end)
738
+ |> Enum.join("\n")
739
+ end
740
+ end
741
+ ```
742
+
743
+ ---
744
+
745
+ ## Configuration Patterns
746
+
747
+ ### Runtime Configuration
748
+
749
+ ```elixir
750
+ # config/runtime.exs
751
+ import Config
752
+
753
+ if config_env() == :prod do
754
+ # Database configuration
755
+ database_url =
756
+ System.get_env("DATABASE_URL") ||
757
+ raise """
758
+ environment variable DATABASE_URL is missing.
759
+ """
760
+
761
+ maybe_ipv6 = if System.get_env("ECTO_IPV6") in ~w(true 1), do: [:inet6], else: []
762
+
763
+ config :my_app, MyApp.Repo,
764
+ url: database_url,
765
+ pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10"),
766
+ socket_options: maybe_ipv6
767
+
768
+ # Phoenix Endpoint configuration
769
+ secret_key_base =
770
+ System.get_env("SECRET_KEY_BASE") ||
771
+ raise """
772
+ environment variable SECRET_KEY_BASE is missing.
773
+ """
774
+
775
+ host = System.get_env("PHX_HOST") || "example.com"
776
+ port = String.to_integer(System.get_env("PORT") || "4000")
777
+
778
+ config :my_app, MyAppWeb.Endpoint,
779
+ url: [host: host, port: 443, scheme: "https"],
780
+ http: [
781
+ ip: {0, 0, 0, 0, 0, 0, 0, 0},
782
+ port: port
783
+ ],
784
+ secret_key_base: secret_key_base
785
+
786
+ # Email configuration
787
+ config :my_app, MyApp.Mailer,
788
+ adapter: Swoosh.Adapters.Mailgun,
789
+ api_key: System.get_env("MAILGUN_API_KEY"),
790
+ domain: System.get_env("MAILGUN_DOMAIN")
791
+
792
+ # Oban configuration
793
+ config :my_app, Oban,
794
+ repo: MyApp.Repo,
795
+ queues: [
796
+ default: String.to_integer(System.get_env("OBAN_DEFAULT_QUEUE") || "10"),
797
+ mailers: String.to_integer(System.get_env("OBAN_MAILER_QUEUE") || "20"),
798
+ events: String.to_integer(System.get_env("OBAN_EVENTS_QUEUE") || "50")
799
+ ]
800
+ end
801
+ ```
802
+
803
+ ---
804
+
805
+ ## Performance Optimization
806
+
807
+ ### Query Optimization
808
+
809
+ ```elixir
810
+ # Bad: N+1 queries
811
+ users = Repo.all(User)
812
+ Enum.map(users, fn user ->
813
+ posts = Repo.all(from p in Post, where: p.user_id == ^user.id)
814
+ {user, posts}
815
+ end)
816
+
817
+ # Good: Preloading
818
+ users = User |> Repo.all() |> Repo.preload(:posts)
819
+
820
+ # Good: Join with custom select
821
+ from u in User,
822
+ left_join: p in assoc(u, :posts),
823
+ group_by: u.id,
824
+ select: %{user: u, post_count: count(p.id)}
825
+
826
+ # Use selectinload for has_many associations
827
+ Repo.all(from u in User, preload: [posts: :comments])
828
+
829
+ # Use joinedload for belongs_to associations
830
+ Repo.all(from p in Post, preload: [:user, :category])
831
+ ```
832
+
833
+ ### Process Optimization
834
+
835
+ ```elixir
836
+ # Use Task.async_stream for parallel processing
837
+ 1..100
838
+ |> Task.async_stream(&expensive_operation/1, max_concurrency: 10)
839
+ |> Enum.to_list()
840
+
841
+ # Use ETS for fast in-memory storage
842
+ :ets.new(:my_cache, [:named_table, :public, read_concurrency: true])
843
+ :ets.insert(:my_cache, {:key, "value"})
844
+ :ets.lookup(:my_cache, :key)
845
+
846
+ # Use Registry for process discovery
847
+ {:ok, _} = Registry.start_link(keys: :unique, name: MyApp.Registry)
848
+ Registry.register(MyApp.Registry, "user:123", nil)
849
+ Registry.lookup(MyApp.Registry, "user:123")
850
+ ```
851
+
852
+ ---
853
+
854
+ ## Context7 Integration
855
+
856
+ Library ID Resolution:
857
+
858
+ ```elixir
859
+ # Available Elixir libraries in Context7
860
+
861
+ # Elixir Language
862
+ library_id = "elixir-lang/elixir"
863
+ topics = "pattern matching, protocols, macros, processes"
864
+
865
+ # Phoenix Framework
866
+ library_id = "phoenixframework/phoenix"
867
+ topics = "controllers, LiveView, channels, PubSub, routing"
868
+
869
+ # Phoenix LiveView
870
+ library_id = "phoenixframework/phoenix_live_view"
871
+ topics = "components, hooks, streams, live navigation"
872
+
873
+ # Ecto
874
+ library_id = "elixir-ecto/ecto"
875
+ topics = "schemas, queries, changesets, multi, migrations"
876
+
877
+ # Oban
878
+ library_id = "sorentwo/oban"
879
+ topics = "workers, queues, cron, plugins"
880
+
881
+ # Absinthe (GraphQL)
882
+ library_id = "absinthe-graphql/absinthe"
883
+ topics = "schema, resolvers, subscriptions"
884
+ ```
885
+
886
+ ---
887
+
888
+ Last Updated: 2026-01-10
889
+ Version: 1.0.0