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,208 @@
1
+ #!/usr/bin/env python3
2
+ """PreToolUse Hook: TDD Enforcement - Check test exists before code write.
3
+
4
+ Enforces test-first development by checking for test files before allowing
5
+ code writes for Python, TypeScript, and JavaScript.
6
+
7
+ Exit Codes:
8
+ - 0: Allow write (test exists or warning mode)
9
+ - 2: Ask user confirmation (enforce mode, no test)
10
+ """
11
+
12
+ import json
13
+ import sys
14
+ from pathlib import Path
15
+
16
+ # Setup import path for shared modules
17
+ HOOKS_DIR = Path(__file__).parent
18
+ LIB_DIR = HOOKS_DIR / "lib"
19
+ if str(LIB_DIR) not in sys.path:
20
+ sys.path.insert(0, str(LIB_DIR))
21
+
22
+ try:
23
+ from language_detector import detect_language, get_test_file_path
24
+ except ImportError:
25
+ # Fallback implementations
26
+ def detect_language(file_path: Path) -> str | None:
27
+ ext = file_path.suffix.lower()
28
+ lang_map = {
29
+ ".py": "Python",
30
+ ".ts": "TypeScript",
31
+ ".tsx": "TypeScript",
32
+ ".js": "JavaScript",
33
+ ".jsx": "JavaScript",
34
+ }
35
+ return lang_map.get(ext)
36
+
37
+ def get_test_file_path(source_file: Path) -> Path | None:
38
+ stem = source_file.stem
39
+ ext = source_file.suffix
40
+
41
+ if ext == ".py":
42
+ return Path("tests") / f"test_{stem}.py"
43
+ elif ext in (".ts", ".tsx", ".js", ".jsx"):
44
+ return source_file.parent / f"{stem}.test{ext}"
45
+ return None
46
+
47
+
48
+ # File patterns to skip (no test needed)
49
+ SKIP_PATTERNS = [
50
+ "/test/",
51
+ "_test.",
52
+ "_spec.",
53
+ ".test.",
54
+ ".spec.",
55
+ "config/",
56
+ "configs/",
57
+ "docs/",
58
+ "doc/",
59
+ ".md",
60
+ ".json",
61
+ ".yaml",
62
+ ".yml",
63
+ ".lock",
64
+ ".min.",
65
+ "__tests__/",
66
+ "__mocks__/",
67
+ ]
68
+
69
+ # Mode configuration
70
+ MODES = ["warn", "enforce", "off"]
71
+
72
+
73
+ def get_tdd_mode() -> str:
74
+ """Get TDD enforcement mode from quality.yaml."""
75
+ config_path = Path(".moai/config/sections/quality.yaml")
76
+ if config_path.exists():
77
+ try:
78
+ import yaml
79
+
80
+ with open(config_path) as f:
81
+ config = yaml.safe_load(f)
82
+ mode = config.get("constitution", {}).get("tdd_mode", "warn")
83
+ if mode in MODES:
84
+ return mode
85
+ except Exception:
86
+ pass
87
+ return "warn"
88
+
89
+
90
+ def should_skip_file(file_path: str) -> bool:
91
+ """Check if file should skip TDD enforcement.
92
+
93
+ Args:
94
+ file_path: Path to the file
95
+
96
+ Returns:
97
+ True if should skip, False otherwise
98
+ """
99
+ path_lower = file_path.lower()
100
+
101
+ for pattern in SKIP_PATTERNS:
102
+ if pattern.lower() in path_lower:
103
+ return True
104
+
105
+ return False
106
+
107
+
108
+ def main():
109
+ """Main hook logic."""
110
+ # Read hook input
111
+ try:
112
+ input_data = json.loads(sys.stdin.read())
113
+ except json.JSONDecodeError:
114
+ # No input or invalid JSON - allow write
115
+ print(json.dumps({}))
116
+ sys.exit(0)
117
+
118
+ tool_name = input_data.get("tool_name", "")
119
+ tool_input = input_data.get("tool_input", {})
120
+
121
+ # Only check Write operations
122
+ if tool_name != "Write":
123
+ print(json.dumps({}))
124
+ sys.exit(0)
125
+
126
+ file_path = tool_input.get("file_path", "")
127
+ if not file_path:
128
+ print(json.dumps({}))
129
+ sys.exit(0)
130
+
131
+ # Check if should skip
132
+ if should_skip_file(file_path):
133
+ print(json.dumps({}))
134
+ sys.exit(0)
135
+
136
+ # Detect language
137
+ language = detect_language(Path(file_path))
138
+ if not language:
139
+ # Unknown language - skip silently
140
+ print(json.dumps({}))
141
+ sys.exit(0)
142
+
143
+ # Only support Python, TypeScript, JavaScript
144
+ if language not in ("Python", "TypeScript", "JavaScript"):
145
+ print(json.dumps({}))
146
+ sys.exit(0)
147
+
148
+ # Get expected test file path
149
+ test_file = get_test_file_path(Path(file_path))
150
+ if not test_file:
151
+ print(json.dumps({}))
152
+ sys.exit(0)
153
+
154
+ # Check if test file exists
155
+ test_path = Path(test_file)
156
+ test_exists = test_path.exists()
157
+
158
+ # Get TDD mode
159
+ mode = get_tdd_mode()
160
+
161
+ if mode == "off":
162
+ print(json.dumps({}))
163
+ sys.exit(0)
164
+
165
+ output = {
166
+ "hookSpecificOutput": {
167
+ "hookEventName": "PreToolUse",
168
+ "permissionDecision": "allow", # Default: allow write
169
+ }
170
+ }
171
+
172
+ if test_exists:
173
+ # Test file exists - allow write
174
+ output["hookSpecificOutput"]["additionalContext"] = f"TDD check passed for {language}: {test_file} exists"
175
+ print(json.dumps(output))
176
+ sys.exit(0)
177
+
178
+ # No test file - handle based on mode
179
+ if mode == "warn":
180
+ output["hookSpecificOutput"]["permissionDecision"] = "allow"
181
+ output["hookSpecificOutput"]["permissionDecisionReason"] = (
182
+ f"TDD Reminder ({language}): Test file not found.\n"
183
+ f"Expected: {test_file}\n"
184
+ f"Best practice: Write test first, then implement code.\n"
185
+ f"Continuing with code write..."
186
+ )
187
+ print(json.dumps(output))
188
+ sys.exit(0)
189
+
190
+ elif mode == "enforce":
191
+ output["hookSpecificOutput"]["permissionDecision"] = "ask"
192
+ output["hookSpecificOutput"]["permissionDecisionReason"] = (
193
+ f"TDD Enforcement ({language}): Test file required.\n\n"
194
+ f"Please create test file first:\n"
195
+ f"1. Create {test_file}\n"
196
+ f"2. Write test cases\n"
197
+ f"3. Then implement code\n\n"
198
+ f"Or configure tdd_mode: warn in quality.yaml to disable enforcement."
199
+ )
200
+ print(json.dumps(output))
201
+ sys.exit(2) # Ask user for confirmation
202
+
203
+ print(json.dumps({}))
204
+ sys.exit(0)
205
+
206
+
207
+ if __name__ == "__main__":
208
+ main()
@@ -18,6 +18,8 @@ Features:
18
18
  - Generate session summary message
19
19
  """
20
20
 
21
+ from __future__ import annotations
22
+
21
23
  import json
22
24
  import logging
23
25
  import shutil
@@ -26,12 +28,29 @@ import sys
26
28
  import time
27
29
  from datetime import datetime, timedelta
28
30
  from pathlib import Path
29
- from typing import Any, Dict, List, Optional
31
+ from typing import Any
32
+
33
+ # =============================================================================
34
+ # Windows UTF-8 Encoding Fix (Issue #249)
35
+ # Ensures emoji characters are properly displayed on Windows terminals
36
+ # =============================================================================
37
+ if sys.platform == "win32":
38
+ try:
39
+ sys.stdout.reconfigure(encoding="utf-8", errors="replace")
40
+ sys.stderr.reconfigure(encoding="utf-8", errors="replace")
41
+ except (AttributeError, OSError):
42
+ # Python < 3.7 or reconfigure not available
43
+ pass
30
44
 
31
45
  # Add module path
32
46
  sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / "src"))
33
47
 
34
- from lib.path_utils import find_project_root # noqa: E402
48
+ from lib.atomic_write import atomic_write_json # noqa: E402
49
+ from lib.path_utils import ( # noqa: E402
50
+ ensure_moai_dir,
51
+ find_project_root,
52
+ get_safe_moai_path,
53
+ )
35
54
 
36
55
  # Import unified timeout manager and Git operations manager
37
56
  try:
@@ -120,40 +139,52 @@ logger = logging.getLogger(__name__)
120
139
 
121
140
 
122
141
  def load_hook_timeout() -> int:
123
- """Load hook timeout from config.json (default: 5000ms)
142
+ """Load hook timeout from config.yaml (default: 5000ms)
143
+
144
+ Uses try/except instead of exists() check to prevent TOCTOU race conditions.
124
145
 
125
146
  Returns:
126
147
  Timeout in milliseconds
127
148
  """
128
149
  try:
129
- config_file = Path(".moai/config/config.yaml")
130
- if config_file.exists():
131
- with open(config_file, "r", encoding="utf-8") as f:
132
- config: Dict[str, Any] = json.load(f)
133
- return config.get("hooks", {}).get("timeout_ms", 5000)
150
+ import yaml
151
+
152
+ config_file = get_safe_moai_path("config/config.yaml")
153
+ # Direct open without exists() check to prevent race condition
154
+ with open(config_file, "r", encoding="utf-8") as f:
155
+ config: dict[str, Any] = yaml.safe_load(f) or {}
156
+ return config.get("hooks", {}).get("timeout_ms", 5000)
157
+ except FileNotFoundError:
158
+ pass # Config file doesn't exist, use default
134
159
  except Exception:
135
- pass
160
+ pass # Config file corrupted or invalid, use default
136
161
  return 5000
137
162
 
138
163
 
139
164
  def get_graceful_degradation() -> bool:
140
- """Load graceful_degradation setting from config.json (default: true)
165
+ """Load graceful_degradation setting from config.yaml (default: true)
166
+
167
+ Uses try/except instead of exists() check to prevent TOCTOU race conditions.
141
168
 
142
169
  Returns:
143
170
  Whether graceful degradation is enabled
144
171
  """
145
172
  try:
146
- config_file = Path(".moai/config/config.yaml")
147
- if config_file.exists():
148
- with open(config_file, "r", encoding="utf-8") as f:
149
- config: Dict[str, Any] = json.load(f)
150
- return config.get("hooks", {}).get("graceful_degradation", True)
173
+ import yaml
174
+
175
+ config_file = get_safe_moai_path("config/config.yaml")
176
+ # Direct open without exists() check to prevent race condition
177
+ with open(config_file, "r", encoding="utf-8") as f:
178
+ config: dict[str, Any] = yaml.safe_load(f) or {}
179
+ return config.get("hooks", {}).get("graceful_degradation", True)
180
+ except FileNotFoundError:
181
+ pass # Config file doesn't exist, use default
151
182
  except Exception:
152
- pass
183
+ pass # Config file corrupted or invalid, use default
153
184
  return True
154
185
 
155
186
 
156
- def cleanup_old_files(config: Dict[str, Any]) -> Dict[str, int]:
187
+ def cleanup_old_files(config: dict[str, Any]) -> dict[str, int]:
157
188
  """Clean up old files
158
189
 
159
190
  Args:
@@ -172,13 +203,13 @@ def cleanup_old_files(config: Dict[str, Any]) -> Dict[str, int]:
172
203
  cleanup_days = cleanup_config.get("cleanup_days", 7)
173
204
  cutoff_date = datetime.now() - timedelta(days=cleanup_days)
174
205
 
175
- # Clean up temporary files
176
- temp_dir = Path(".moai/temp")
206
+ # Clean up temporary files (use safe path to prevent creation in wrong directory)
207
+ temp_dir = get_safe_moai_path("temp")
177
208
  if temp_dir.exists():
178
209
  stats["temp_cleaned"] = cleanup_directory(temp_dir, cutoff_date, None, patterns=["*"])
179
210
 
180
- # Clean up cache files
181
- cache_dir = Path(".moai/cache")
211
+ # Clean up cache files (use safe path to prevent creation in wrong directory)
212
+ cache_dir = get_safe_moai_path("cache")
182
213
  if cache_dir.exists():
183
214
  stats["cache_cleaned"] = cleanup_directory(cache_dir, cutoff_date, None, patterns=["*"])
184
215
 
@@ -193,8 +224,8 @@ def cleanup_old_files(config: Dict[str, Any]) -> Dict[str, int]:
193
224
  def cleanup_directory(
194
225
  directory: Path,
195
226
  cutoff_date: datetime,
196
- max_files: Optional[int],
197
- patterns: List[str],
227
+ max_files: int | None,
228
+ patterns: list[str],
198
229
  ) -> int:
199
230
  """Clean up directory files
200
231
 
@@ -246,7 +277,7 @@ def cleanup_directory(
246
277
  return cleaned_count
247
278
 
248
279
 
249
- def save_session_metrics(payload: Dict[str, Any]) -> bool:
280
+ def save_session_metrics(payload: dict[str, Any]) -> bool:
250
281
  """Save session metrics (P0-1)
251
282
 
252
283
  Args:
@@ -256,9 +287,8 @@ def save_session_metrics(payload: Dict[str, Any]) -> bool:
256
287
  Success status
257
288
  """
258
289
  try:
259
- # Create logs directory
260
- logs_dir = Path(".moai/logs/sessions")
261
- logs_dir.mkdir(parents=True, exist_ok=True)
290
+ # Create logs directory (use ensure_moai_dir for safe creation in project root)
291
+ logs_dir = ensure_moai_dir("logs/sessions")
262
292
 
263
293
  # Collect session information
264
294
  session_metrics = {
@@ -270,10 +300,9 @@ def save_session_metrics(payload: Dict[str, Any]) -> bool:
270
300
  "specs_worked_on": extract_specs_from_memory(),
271
301
  }
272
302
 
273
- # Save session metrics
303
+ # Save session metrics using atomic write (H3)
274
304
  session_file = logs_dir / f"session-{session_metrics['session_id']}.json"
275
- with open(session_file, "w", encoding="utf-8") as f:
276
- json.dump(session_metrics, f, indent=2, ensure_ascii=False)
305
+ atomic_write_json(session_file, session_metrics, indent=2, ensure_ascii=False)
277
306
 
278
307
  logger.info(f"Session metrics saved: {session_file}")
279
308
  return True
@@ -283,7 +312,7 @@ def save_session_metrics(payload: Dict[str, Any]) -> bool:
283
312
  return False
284
313
 
285
314
 
286
- def save_work_state(payload: Dict[str, Any]) -> bool:
315
+ def save_work_state(payload: dict[str, Any]) -> bool:
287
316
  """Save work state snapshot (P0-2)
288
317
 
289
318
  Args:
@@ -293,9 +322,8 @@ def save_work_state(payload: Dict[str, Any]) -> bool:
293
322
  Success status
294
323
  """
295
324
  try:
296
- # Create memory directory
297
- memory_dir = Path(".moai/memory")
298
- memory_dir.mkdir(parents=True, exist_ok=True)
325
+ # Create memory directory (use ensure_moai_dir for safe creation in project root)
326
+ ensure_moai_dir("memory")
299
327
 
300
328
  # Collect work state
301
329
  work_state = {
@@ -306,10 +334,9 @@ def save_work_state(payload: Dict[str, Any]) -> bool:
306
334
  "specs_in_progress": extract_specs_from_memory(),
307
335
  }
308
336
 
309
- # Save state
310
- state_file = memory_dir / "last-session-state.json"
311
- with open(state_file, "w", encoding="utf-8") as f:
312
- json.dump(work_state, f, indent=2, ensure_ascii=False)
337
+ # Save work state using atomic write (H3)
338
+ state_file = get_safe_moai_path("memory/last-session-state.json")
339
+ atomic_write_json(state_file, work_state, indent=2, ensure_ascii=False)
313
340
 
314
341
  logger.info(f"Work state saved: {state_file}")
315
342
  return True
@@ -319,7 +346,7 @@ def save_work_state(payload: Dict[str, Any]) -> bool:
319
346
  return False
320
347
 
321
348
 
322
- def check_uncommitted_changes() -> Optional[str]:
349
+ def check_uncommitted_changes() -> str | None:
323
350
  """Warn uncommitted changes (P0-3) using optimized Git operations
324
351
 
325
352
  Returns:
@@ -367,7 +394,7 @@ def check_uncommitted_changes() -> Optional[str]:
367
394
  return None
368
395
 
369
396
 
370
- def get_current_branch() -> Optional[str]:
397
+ def get_current_branch() -> str | None:
371
398
  """Get current Git branch name using optimized Git operations
372
399
 
373
400
  Returns:
@@ -487,21 +514,28 @@ def count_recent_commits() -> int:
487
514
  return 0
488
515
 
489
516
 
490
- def extract_specs_from_memory() -> List[str]:
491
- """Extract SPEC information from memory"""
492
- specs = []
493
-
494
- try:
495
- # Query recent SPECs from command_execution_state.json
496
- state_file = Path(".moai/memory/command-execution-state.json")
497
- if state_file.exists():
498
- with open(state_file, "r", encoding="utf-8") as f:
499
- state_data = json.load(f)
517
+ def extract_specs_from_memory() -> list[str]:
518
+ """Extract SPEC information from memory
500
519
 
501
- # Extract recent SPEC IDs
502
- if "last_specs" in state_data:
503
- specs = state_data["last_specs"][:3] # Latest 3
520
+ Uses try/except instead of exists() check to prevent TOCTOU race conditions.
521
+ """
522
+ specs: list[str] = []
504
523
 
524
+ try:
525
+ # Query recent SPECs from command_execution_state.json (use safe path)
526
+ state_file = get_safe_moai_path("memory/command-execution-state.json")
527
+ # Direct open without exists() check to prevent race condition
528
+ with open(state_file, "r", encoding="utf-8") as f:
529
+ state_data = json.load(f)
530
+
531
+ # Extract recent SPEC IDs
532
+ if "last_specs" in state_data:
533
+ specs = state_data["last_specs"][:3] # Latest 3
534
+
535
+ except FileNotFoundError:
536
+ pass # State file doesn't exist yet, return empty list
537
+ except (json.JSONDecodeError, KeyError, TypeError) as e:
538
+ logger.warning(f"Failed to parse specs from memory: {e}")
505
539
  except Exception as e:
506
540
  logger.warning(f"Failed to extract specs from memory: {e}")
507
541
 
@@ -512,7 +546,7 @@ def extract_specs_from_memory() -> List[str]:
512
546
  # are now imported from lib.common (consolidated from duplicate implementations)
513
547
 
514
548
 
515
- def scan_root_violations(config: Dict[str, Any]) -> List[Dict[str, str]]:
549
+ def scan_root_violations(config: dict[str, Any]) -> list[dict[str, str]]:
516
550
  """Scan project root for document management violations
517
551
 
518
552
  Args:
@@ -524,10 +558,8 @@ def scan_root_violations(config: Dict[str, Any]) -> List[Dict[str, str]]:
524
558
  violations = []
525
559
 
526
560
  try:
527
- # Get project root
528
- project_root = Path(".moai/config/config.yaml").parent.parent
529
- if not project_root.exists():
530
- project_root = find_project_root()
561
+ # Get project root (always use find_project_root for consistent behavior)
562
+ project_root = find_project_root()
531
563
 
532
564
  # Scan root directory
533
565
  for item in project_root.iterdir():
@@ -563,7 +595,7 @@ def scan_root_violations(config: Dict[str, Any]) -> List[Dict[str, str]]:
563
595
  return violations
564
596
 
565
597
 
566
- def generate_migration_report(violations: List[Dict[str, str]]) -> str:
598
+ def generate_migration_report(violations: list[dict[str, str]]) -> str:
567
599
  """Generate migration suggestions report
568
600
 
569
601
  Args:
@@ -592,7 +624,7 @@ def generate_migration_report(violations: List[Dict[str, str]]) -> str:
592
624
 
593
625
 
594
626
  def generate_session_summary(
595
- cleanup_stats: Dict[str, int], work_state: Dict[str, Any], violations_count: int = 0
627
+ cleanup_stats: dict[str, int], work_state: dict[str, Any], violations_count: int = 0
596
628
  ) -> str:
597
629
  """Generate session summary (P1-3)
598
630
 
@@ -632,7 +664,7 @@ def generate_session_summary(
632
664
  return "\n".join(summary_lines)
633
665
 
634
666
 
635
- def execute_session_end_workflow() -> tuple[Dict[str, Any], str]:
667
+ def execute_session_end_workflow() -> tuple[dict[str, Any], str]:
636
668
  """Execute the session end workflow with proper error handling"""
637
669
  start_time = time.time()
638
670
 
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env python3
2
+ """MoAI Rank Session Hook
3
+
4
+ This hook submits Claude Code session token usage to the MoAI Rank service.
5
+ It is triggered automatically when a session ends.
6
+
7
+ The hook reads session data from stdin and submits it to the rank service
8
+ if the user has registered with MoAI Rank.
9
+
10
+ Requirements:
11
+ - User must be registered: Run `moai-adk rank register` to connect GitHub account
12
+ - API key stored securely in ~/.moai/rank/credentials.json
13
+
14
+ Privacy:
15
+ - Only token counts are submitted (input, output, cache tokens)
16
+ - Project paths are anonymized using one-way hashing
17
+ - No code or conversation content is transmitted
18
+
19
+ Opt-out: Configure ~/.moai/rank/config.yaml to exclude specific projects:
20
+ rank:
21
+ enabled: true
22
+ exclude_projects:
23
+ - "/path/to/private-project"
24
+ - "*/confidential/*"
25
+ """
26
+
27
+ import json
28
+ import sys
29
+
30
+
31
+ def main():
32
+ """Main hook entry point."""
33
+ try:
34
+ # Read session data from stdin
35
+ input_data = sys.stdin.read()
36
+ if not input_data:
37
+ return
38
+
39
+ session_data = json.loads(input_data)
40
+
41
+ # Lazy import to avoid startup delay
42
+ try:
43
+ from moai_adk.rank.hook import is_project_excluded, submit_session_hook
44
+ except ImportError:
45
+ # moai-adk not installed or rank module not available
46
+ return
47
+
48
+ # Check if this project is excluded
49
+ project_path = session_data.get("projectPath") or session_data.get("cwd")
50
+ if is_project_excluded(project_path):
51
+ return # Silently skip excluded projects
52
+
53
+ result = submit_session_hook(session_data)
54
+
55
+ if result["success"]:
56
+ print("Session submitted to MoAI Rank", file=sys.stderr)
57
+ elif result["message"] and result["message"] != "Not registered with MoAI Rank":
58
+ print(f"MoAI Rank: {result['message']}", file=sys.stderr)
59
+
60
+ except json.JSONDecodeError:
61
+ # Invalid JSON input, silently skip
62
+ pass
63
+ except Exception as e:
64
+ # Log errors but don't fail the hook
65
+ print(f"MoAI Rank hook error: {e}", file=sys.stderr)
66
+
67
+
68
+ if __name__ == "__main__":
69
+ main()