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
@@ -2,8 +2,8 @@
2
2
 
3
3
  Purpose: Specification-driven test-driven development workflow ensuring clear requirements before implementation through EARS format and RED-GREEN-REFACTOR cycles.
4
4
 
5
- Version: 1.0.0
6
- Last Updated: 2025-11-25
5
+ Version: 2.0.0 (Modular Split)
6
+ Last Updated: 2026-01-06
7
7
 
8
8
  ---
9
9
 
@@ -18,7 +18,7 @@ SPEC-First TDD is MoAI-ADK's development methodology combining:
18
18
  Three-Phase Workflow:
19
19
  ```
20
20
  Phase 1: SPEC → spec-builder → .moai/specs/SPEC-XXX/spec.md
21
- Phase 2: TDD → tdd-implementer → Code + Tests (≥85% coverage)
21
+ Phase 2: TDD → tdd-implementer → Code + Tests (≥85% coverage)
22
22
  Phase 3: Docs → docs-manager → API docs + diagrams
23
23
  ```
24
24
 
@@ -33,6 +33,10 @@ EARS Patterns:
33
33
  - Unwanted: System SHALL NOT...
34
34
  - Optional: WHERE possible, system SHOULD...
35
35
 
36
+ Extended Documentation:
37
+ - [EARS Format Reference](spec-ears-format.md) - Detailed EARS patterns and examples
38
+ - [TDD Implementation](spec-tdd-implementation.md) - RED-GREEN-REFACTOR workflows
39
+
36
40
  ---
37
41
 
38
42
  ## Implementation Guide (5 minutes)
@@ -48,12 +52,12 @@ Workflow:
48
52
 
49
53
  # 2. spec-builder creates:
50
54
  .moai/specs/SPEC-001/
51
- spec.md # EARS format requirements
52
- acceptance.md # Acceptance criteria
53
- complexity.yaml # Complexity analysis
55
+ spec.md # EARS format requirements
56
+ acceptance.md # Acceptance criteria
57
+ complexity.yaml # Complexity analysis
54
58
 
55
59
  # 3. Execute /clear (mandatory)
56
- /clear # Saves 45-50K tokens, prepares clean context
60
+ /clear # Saves 45-50K tokens, prepares clean context
57
61
  ```
58
62
 
59
63
  EARS Format Structure:
@@ -80,342 +84,44 @@ Acceptance Criteria:
80
84
  - Success returns user ID and confirmation email sent
81
85
 
82
86
  Test Coverage Target: ≥90%
83
-
84
- ---
85
-
86
- ### SPEC-001-REQ-02: JWT Token Generation (Event-driven)
87
- Pattern: Event-driven
88
- Statement: WHEN a user successfully authenticates, the system SHALL generate a JWT token with 1-hour expiry.
89
-
90
- Acceptance Criteria:
91
- - Token includes user ID, email, role claims
92
- - Token signed with RS256 algorithm
93
- - Expiry set to 1 hour from generation
94
- - Refresh token generated with 7-day expiry
95
-
96
- Test Coverage Target: ≥95%
97
-
98
- ---
99
-
100
- ### SPEC-001-REQ-03: Token Validation (State-driven)
101
- Pattern: State-driven
102
- Statement: WHILE a request includes Authorization header, the system SHALL validate JWT token before processing.
103
-
104
- Acceptance Criteria:
105
- - Expired tokens rejected with 401 Unauthorized
106
- - Invalid signature rejected with 401 Unauthorized
107
- - Valid token extracts user claims successfully
108
- - Token blacklist checked (revoked tokens)
109
-
110
- Test Coverage Target: ≥95%
111
-
112
- ---
113
-
114
- ### SPEC-001-REQ-04: Weak Password Prevention (Unwanted)
115
- Pattern: Unwanted
116
- Statement: The system SHALL NOT allow passwords from common password lists (top 10K).
117
-
118
- Acceptance Criteria:
119
- - Common passwords rejected (e.g., "password123")
120
- - Sequential patterns rejected (e.g., "abc123")
121
- - User-specific patterns rejected (e.g., email prefix)
122
- - Clear error message with improvement suggestions
123
-
124
- Test Coverage Target: ≥85%
125
-
126
- ---
127
-
128
- ### SPEC-001-REQ-05: OAuth2 Integration (Optional)
129
- Pattern: Optional
130
- Statement: WHERE user chooses, the system SHOULD support OAuth2 authentication via Google and GitHub.
131
-
132
- Acceptance Criteria:
133
- - OAuth2 providers configurable
134
- - User can link multiple providers to one account
135
- - Provider-specific profile data merged
136
- - Graceful fallback if provider unavailable
137
-
138
- Test Coverage Target: ≥80%
139
- ```
140
-
141
- Complexity Analysis:
142
-
143
- ```yaml
144
- # .moai/specs/SPEC-001/complexity.yaml
145
- complexity_metrics:
146
- total_requirements: 5
147
- critical_requirements: 3
148
-
149
- complexity_breakdown:
150
- SPEC-001-REQ-01: Medium # Standard CRUD + validation
151
- SPEC-001-REQ-02: Medium # JWT library integration
152
- SPEC-001-REQ-03: High # Security validation logic
153
- SPEC-001-REQ-04: Low # Lookup validation
154
- SPEC-001-REQ-05: High # External API integration
155
-
156
- estimated_effort:
157
- development: 8 hours
158
- testing: 4 hours
159
- total: 12 hours
160
-
161
- risk_factors:
162
- - Security-critical functionality
163
- - External OAuth2 provider dependencies
164
- - Token expiry edge cases
165
-
166
- dependencies:
167
- - PyJWT library
168
- - bcrypt library
169
- - OAuth2 client libraries
170
87
  ```
171
88
 
172
89
  ---
173
90
 
174
91
  ### Phase 2: Test-Driven Development
175
92
 
176
- Purpose: Implement requirements through RED-GREEN-REFACTOR cycles with ≥85% coverage.
177
-
178
93
  RED-GREEN-REFACTOR Cycle:
179
94
 
180
95
  ```python
181
- # ====================================
182
- # RED PHASE: Write failing test first
183
- # ====================================
184
-
185
- import pytest
186
- from src.auth.registration import register_user
187
- from src.models.user import User
188
- from src.exceptions import ValidationError
189
-
190
- def test_register_user_with_valid_data():
191
- """SPEC-001-REQ-01: User registration with valid data."""
192
- # Arrange
193
- email = "user@example.com"
194
- password = "SecureP@ssw0rd"
195
-
196
- # Act
197
- result = register_user(email=email, password=password)
198
-
199
- # Assert
200
- assert result.success is True
201
- assert result.user.email == email
202
- assert result.user.id is not None
203
- assert result.confirmation_sent is True
204
-
205
- # Run test → FAILS (functions don't exist yet)
206
-
207
- # ====================================
208
- # GREEN PHASE: Minimal implementation
209
- # ====================================
210
-
211
- # src/auth/registration.py
212
- from dataclasses import dataclass
213
- from src.models.user import User
214
- import bcrypt
215
- import re
216
-
217
- @dataclass
218
- class RegistrationResult:
219
- success: bool
220
- user: User
221
- confirmation_sent: bool
96
+ # RED: Write failing test first
97
+ def test_register_user():
98
+ result = register_user("user@example.com", "SecureP@ssw0rd")
99
+ assert result.success is True # Fails - function doesn't exist
222
100
 
223
- def register_user(email: str, password: str) -> RegistrationResult:
224
- """Register new user with email and password."""
225
- # Minimal code to pass test
226
- user = User(id=1, email=email, password_hash=password)
227
- return RegistrationResult(
228
- success=True,
229
- user=user,
230
- confirmation_sent=True
231
- )
232
-
233
- # Run test → PASSES (test now passes)
234
-
235
- # ====================================
236
- # REFACTOR PHASE: Improve quality
237
- # ====================================
238
-
239
- # src/auth/registration.py (refactored)
240
- from dataclasses import dataclass
241
- from typing import Optional
242
- from src.models.user import User
243
- from src.database import db_session
244
- from src.email import send_confirmation_email
245
- from src.exceptions import ValidationError
246
- import bcrypt
247
- import re
248
-
249
- EMAIL_REGEX = re.compile(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$')
250
- PASSWORD_MIN_LENGTH = 8
251
-
252
- @dataclass
253
- class RegistrationResult:
254
- """Result of user registration attempt."""
255
- success: bool
256
- user: Optional[User]
257
- confirmation_sent: bool
258
- error: Optional[str] = None
101
+ # GREEN: Minimal implementation
102
+ def register_user(email, password):
103
+ return RegistrationResult(success=True, user=User())
259
104
 
105
+ # REFACTOR: Improve quality
260
106
  def register_user(email: str, password: str) -> RegistrationResult:
261
- """Register new user with email and password.
262
-
263
- Implements SPEC-001-REQ-01: User Registration (Ubiquitous)
264
-
265
- Args:
266
- email: User email address (must be valid format)
267
- password: User password (≥8 chars, mixed case, numbers, symbols)
268
-
269
- Returns:
270
- RegistrationResult with user data or error
271
-
272
- Raises:
273
- ValidationError: If email or password invalid
274
-
275
- Example:
276
- >>> result = register_user("user@example.com", "SecureP@ssw0rd")
277
- >>> result.success
278
- True
279
- >>> result.user.email
280
- 'user@example.com'
281
- """
282
- # Validate email format (RFC 5322 compliant)
283
- if not EMAIL_REGEX.match(email):
284
- raise ValidationError("Invalid email format")
285
-
286
- # Check for duplicate email
287
- existing_user = User.query.filter_by(email=email).first()
288
- if existing_user:
289
- raise ValidationError("Email already registered")
290
-
291
- # Validate password strength
292
- if not _is_password_strong(password):
293
- raise ValidationError(
294
- "Password must be ≥8 characters with mixed case, numbers, and symbols"
295
- )
296
-
297
- # Hash password securely
298
- password_hash = bcrypt.hashpw(
299
- password.encode('utf-8'),
300
- bcrypt.gensalt(rounds=12)
301
- ).decode('utf-8')
302
-
303
- # Create user
304
- user = User(email=email, password_hash=password_hash)
305
- db_session.add(user)
306
- db_session.commit()
307
-
308
- # Send confirmation email
309
- confirmation_sent = send_confirmation_email(user.email, user.id)
310
-
311
- return RegistrationResult(
312
- success=True,
313
- user=user,
314
- confirmation_sent=confirmation_sent
315
- )
316
-
317
- def _is_password_strong(password: str) -> bool:
318
- """Validate password strength.
319
-
320
- Requirements:
321
- - At least 8 characters
322
- - Contains uppercase letter
323
- - Contains lowercase letter
324
- - Contains digit
325
- - Contains special symbol
326
- """
327
- if len(password) < PASSWORD_MIN_LENGTH:
328
- return False
329
-
330
- has_upper = any(c.isupper() for c in password)
331
- has_lower = any(c.islower() for c in password)
332
- has_digit = any(c.isdigit() for c in password)
333
- has_symbol = any(not c.isalnum() for c in password)
334
-
335
- return all([has_upper, has_lower, has_digit, has_symbol])
336
-
337
- # Run test → PASSES (with improved implementation)
338
- # Coverage: 95% (meets ≥90% target)
339
- ```
340
-
341
- Comprehensive Test Suite:
107
+ """Register new user with email and password.
342
108
 
343
- ```python
344
- # tests/auth/test_registration.py
345
- import pytest
346
- from src.auth.registration import register_user
347
- from src.exceptions import ValidationError
348
-
349
- class TestUserRegistration:
350
- """Test suite for SPEC-001-REQ-01: User Registration."""
351
-
352
- def test_register_user_success(self):
353
- """Test successful registration with valid data."""
354
- result = register_user("user@example.com", "SecureP@ssw0rd")
355
- assert result.success is True
356
- assert result.user.email == "user@example.com"
357
- assert result.confirmation_sent is True
358
-
359
- def test_register_user_invalid_email(self):
360
- """Test registration fails with invalid email format."""
361
- with pytest.raises(ValidationError, match="Invalid email format"):
362
- register_user("invalid-email", "SecureP@ssw0rd")
363
-
364
- def test_register_user_duplicate_email(self):
365
- """Test registration fails with duplicate email."""
366
- register_user("user@example.com", "SecureP@ssw0rd")
367
-
368
- with pytest.raises(ValidationError, match="Email already registered"):
369
- register_user("user@example.com", "AnotherP@ssw0rd")
370
-
371
- def test_register_user_weak_password(self):
372
- """Test registration fails with weak password."""
373
- weak_passwords = [
374
- "short", # Too short
375
- "alllowercase1", # No uppercase
376
- "ALLUPPERCASE1", # No lowercase
377
- "NoNumbersHere!", # No digits
378
- "NoSymbols123" # No symbols
379
- ]
380
-
381
- for weak_pwd in weak_passwords:
382
- with pytest.raises(ValidationError, match="Password must be"):
383
- register_user("user@example.com", weak_pwd)
384
-
385
- def test_register_user_password_hashing(self):
386
- """Test password is properly hashed (not stored plain text)."""
387
- result = register_user("user@example.com", "SecureP@ssw0rd")
388
-
389
- # Password hash should not equal plain text
390
- assert result.user.password_hash != "SecureP@ssw0rd"
391
-
392
- # Hash should be bcrypt format (starts with $2b$)
393
- assert result.user.password_hash.startswith("$2b$")
109
+ Implements SPEC-001-REQ-01
110
+ """
111
+ # Validation, hashing, database operations
112
+ return RegistrationResult(success=True, user=user)
394
113
  ```
395
114
 
396
- Coverage Report:
397
-
115
+ Coverage Validation:
398
116
  ```bash
399
117
  # Run tests with coverage
400
118
  pytest tests/auth/test_registration.py --cov=src/auth/registration --cov-report=html
401
-
402
- # Output:
403
- ---------- coverage: platform darwin, python 3.13.0 -----------
404
- Name Stmts Miss Cover Missing
405
- -------------------------------------------------------
406
- src/auth/registration.py 42 2 95% 87, 92
407
- -------------------------------------------------------
408
- TOTAL 42 2 95%
409
-
410
- # Coverage meets ≥90% target
411
119
  ```
412
120
 
413
121
  ---
414
122
 
415
123
  ### Phase 3: Documentation Synchronization
416
124
 
417
- Purpose: Auto-generate comprehensive documentation from implementation.
418
-
419
125
  Workflow:
420
126
  ```bash
421
127
  # 1. Generate documentation
@@ -423,414 +129,21 @@ Workflow:
423
129
 
424
130
  # 2. docs-manager creates:
425
131
  .moai/specs/SPEC-001/
426
- docs/
427
- api.md # API reference
428
- architecture.md # Architecture diagram
429
- testing.md # Test report
430
- report.md # Implementation summary
431
- ```
432
-
433
- Auto-Generated API Documentation:
434
-
435
- ```markdown
436
- # API Documentation - User Authentication
437
-
438
- ## Endpoints
439
-
440
- ### POST /api/auth/register
441
- Register new user account.
442
-
443
- Request:
444
- ```json
445
- {
446
- "email": "user@example.com",
447
- "password": "SecureP@ssw0rd"
448
- }
449
- ```
450
-
451
- Response (201 Created):
452
- ```json
453
- {
454
- "success": true,
455
- "user": {
456
- "id": 123,
457
- "email": "user@example.com",
458
- "created_at": "2025-11-25T10:30:00Z"
459
- },
460
- "message": "Confirmation email sent"
461
- }
462
- ```
463
-
464
- Errors:
465
- - `400 Bad Request`: Invalid email or weak password
466
- - `409 Conflict`: Email already registered
467
-
468
- Coverage: 95% (meets ≥90% target)
469
-
470
- Implementation: `SPEC-001-REQ-01`
132
+ docs/
133
+ api.md # API reference
134
+ architecture.md # Architecture diagram
135
+ testing.md # Test report
136
+ report.md # Implementation summary
471
137
  ```
472
138
 
473
139
  ---
474
140
 
475
- ## Advanced Implementation (10+ minutes)
141
+ ## Advanced Patterns
476
142
 
477
- ### EARS Pattern Advanced Usage
143
+ For comprehensive implementation patterns including MFA examples, iterative SPEC refinement, and CI/CD integration, see:
478
144
 
479
- Complex Event-Driven Requirements:
480
-
481
- ```markdown
482
- ### SPEC-002-REQ-03: Multi-Factor Authentication (Event-driven + State-driven)
483
- Pattern: Event-driven + State-driven
484
- Statement:
485
- - WHEN a user attempts login with MFA enabled (Event)
486
- - WHILE the MFA verification is pending (State)
487
- - The system SHALL send TOTP code and require verification within 5 minutes
488
-
489
- Acceptance Criteria:
490
- 1. Event trigger: Login attempt detected
491
- 2. State check: User has MFA enabled
492
- 3. Action: Generate TOTP code (6 digits, 30s validity)
493
- 4. Notification: Send code via SMS or email
494
- 5. Verification: User submits code within 5 minutes
495
- 6. Expiry: Code expires after 5 minutes
496
- 7. Rate limiting: Max 3 failed attempts, then 15-minute lockout
497
-
498
- Test Scenarios:
499
- - Happy path: User submits valid code within time
500
- - Expired code: User submits code after 5 minutes
501
- - Invalid code: User submits incorrect code
502
- - Rate limit: User exceeds 3 failed attempts
503
- - Disabled MFA: User without MFA enabled
504
- ```
505
-
506
- Implementation:
507
-
508
- ```python
509
- # RED PHASE: Complex test scenario
510
- def test_mfa_verification_with_valid_code():
511
- """SPEC-002-REQ-03: MFA verification happy path."""
512
- # Arrange
513
- user = create_user_with_mfa_enabled()
514
- login_attempt = initiate_login(user.email, user.password)
515
-
516
- # System generates TOTP code
517
- totp_code = get_pending_totp_code(user.id)
518
-
519
- # Act
520
- result = verify_mfa(
521
- user.id,
522
- code=totp_code,
523
- timestamp=datetime.now()
524
- )
525
-
526
- # Assert
527
- assert result.success is True
528
- assert result.token is not None # JWT issued
529
- assert result.mfa_verified is True
530
-
531
- def test_mfa_verification_with_expired_code():
532
- """SPEC-002-REQ-03: MFA code expiry."""
533
- user = create_user_with_mfa_enabled()
534
- login_attempt = initiate_login(user.email, user.password)
535
- totp_code = get_pending_totp_code(user.id)
536
-
537
- # Act - submit code after 6 minutes (expired)
538
- result = verify_mfa(
539
- user.id,
540
- code=totp_code,
541
- timestamp=datetime.now() + timedelta(minutes=6)
542
- )
543
-
544
- # Assert
545
- assert result.success is False
546
- assert result.error == "Code expired"
547
-
548
- def test_mfa_rate_limiting():
549
- """SPEC-002-REQ-03: Rate limiting after failed attempts."""
550
- user = create_user_with_mfa_enabled()
551
- login_attempt = initiate_login(user.email, user.password)
552
-
553
- # 3 failed attempts
554
- for _ in range(3):
555
- verify_mfa(user.id, code="000000") # Invalid code
556
-
557
- # Act - 4th attempt should be blocked
558
- result = verify_mfa(user.id, code="123456")
559
-
560
- # Assert
561
- assert result.success is False
562
- assert result.error == "Too many failed attempts. Try again in 15 minutes."
563
-
564
- # GREEN + REFACTOR PHASE
565
- from datetime import datetime, timedelta
566
- from typing import Optional
567
- import pyotp
568
-
569
- @dataclass
570
- class MFAVerificationResult:
571
- success: bool
572
- token: Optional[str]
573
- mfa_verified: bool
574
- error: Optional[str] = None
575
-
576
- class MFAManager:
577
- """Manage multi-factor authentication."""
578
-
579
- TOTP_VALIDITY_SECONDS = 300 # 5 minutes
580
- MAX_FAILED_ATTEMPTS = 3
581
- LOCKOUT_MINUTES = 15
582
-
583
- def verify_mfa(
584
- self,
585
- user_id: int,
586
- code: str,
587
- timestamp: datetime = None
588
- ) -> MFAVerificationResult:
589
- """Verify MFA code.
590
-
591
- Implements SPEC-002-REQ-03: Multi-Factor Authentication
592
-
593
- Args:
594
- user_id: User ID attempting verification
595
- code: 6-digit TOTP code
596
- timestamp: Verification timestamp (default: now)
597
-
598
- Returns:
599
- MFAVerificationResult with verification status
600
- """
601
- timestamp = timestamp or datetime.now()
602
-
603
- # Get user and pending verification
604
- user = User.query.get(user_id)
605
- pending_mfa = PendingMFA.query.filter_by(
606
- user_id=user_id,
607
- verified=False
608
- ).first()
609
-
610
- if not pending_mfa:
611
- return MFAVerificationResult(
612
- success=False,
613
- token=None,
614
- mfa_verified=False,
615
- error="No pending MFA verification"
616
- )
617
-
618
- # Check rate limiting
619
- if self._is_rate_limited(user_id):
620
- return MFAVerificationResult(
621
- success=False,
622
- token=None,
623
- mfa_verified=False,
624
- error=f"Too many failed attempts. Try again in {self.LOCKOUT_MINUTES} minutes."
625
- )
626
-
627
- # Check expiry (5 minutes from generation)
628
- if timestamp - pending_mfa.created_at > timedelta(seconds=self.TOTP_VALIDITY_SECONDS):
629
- return MFAVerificationResult(
630
- success=False,
631
- token=None,
632
- mfa_verified=False,
633
- error="Code expired"
634
- )
635
-
636
- # Verify TOTP code
637
- totp = pyotp.TOTP(user.mfa_secret)
638
- if not totp.verify(code, valid_window=1):
639
- self._record_failed_attempt(user_id)
640
- return MFAVerificationResult(
641
- success=False,
642
- token=None,
643
- mfa_verified=False,
644
- error="Invalid code"
645
- )
646
-
647
- # Success - mark verified and generate JWT
648
- pending_mfa.verified = True
649
- pending_mfa.verified_at = timestamp
650
- db_session.commit()
651
-
652
- jwt_token = self._generate_jwt_token(user)
653
-
654
- return MFAVerificationResult(
655
- success=True,
656
- token=jwt_token,
657
- mfa_verified=True
658
- )
659
-
660
- def _is_rate_limited(self, user_id: int) -> bool:
661
- """Check if user is rate limited."""
662
- recent_failures = FailedMFAAttempt.query.filter(
663
- FailedMFAAttempt.user_id == user_id,
664
- FailedMFAAttempt.timestamp > datetime.now() - timedelta(minutes=self.LOCKOUT_MINUTES)
665
- ).count()
666
-
667
- return recent_failures >= self.MAX_FAILED_ATTEMPTS
668
-
669
- def _record_failed_attempt(self, user_id: int):
670
- """Record failed MFA attempt for rate limiting."""
671
- attempt = FailedMFAAttempt(
672
- user_id=user_id,
673
- timestamp=datetime.now()
674
- )
675
- db_session.add(attempt)
676
- db_session.commit()
677
- ```
678
-
679
- ### SPEC-TDD Integration Patterns
680
-
681
- Pattern 1: Iterative SPEC Refinement:
682
-
683
- ```python
684
- # Initial SPEC (v1.0.0)
685
- SPEC-003-REQ-01: File upload with size limit (10MB)
686
-
687
- # Implementation reveals edge case
688
- # → User uploads 9.9MB file successfully
689
- # → But total storage exceeds user quota
690
-
691
- # Refined SPEC (v1.1.0)
692
- SPEC-003-REQ-01: File upload with size and quota validation
693
- - Single file limit: 10MB
694
- - User quota limit: 100MB total
695
- - Validation: Check both limits before accepting upload
696
-
697
- # Updated tests
698
- def test_file_upload_exceeds_quota():
699
- """SPEC-003-REQ-01 v1.1.0: Quota validation."""
700
- user = create_user(quota_limit_mb=100)
701
- upload_files(user, total_size_mb=95) # Existing files
702
-
703
- # Attempt upload within file limit but exceeds quota
704
- result = upload_file(user, file_size_mb=8)
705
-
706
- assert result.success is False
707
- assert result.error == "Upload would exceed storage quota"
708
- ```
709
-
710
- Pattern 2: SPEC-Driven Test Generation:
711
-
712
- ```python
713
- # Automated test generation from SPEC
714
-
715
- class SPECTestGenerator:
716
- """Generate tests automatically from SPEC requirements."""
717
-
718
- def generate_tests_for_requirement(self, requirement: dict) -> str:
719
- """Generate test code from SPEC requirement."""
720
-
721
- spec_id = requirement['id']
722
- pattern = requirement['pattern']
723
- acceptance_criteria = requirement['acceptance_criteria']
724
-
725
- if pattern == 'Event-driven':
726
- return self._generate_event_driven_tests(spec_id, acceptance_criteria)
727
- elif pattern == 'State-driven':
728
- return self._generate_state_driven_tests(spec_id, acceptance_criteria)
729
- elif pattern == 'Unwanted':
730
- return self._generate_unwanted_tests(spec_id, acceptance_criteria)
731
- else:
732
- return self._generate_standard_tests(spec_id, acceptance_criteria)
733
-
734
- def _generate_event_driven_tests(self, spec_id: str, criteria: list) -> str:
735
- """Generate tests for event-driven requirements."""
736
-
737
- test_template = f'''
738
- def test_{spec_id.lower().replace('-', '_')}_event_triggered():
739
- """{spec_id}: Event-driven requirement test."""
740
- # Arrange
741
- {{setup_code}}
742
-
743
- # Act - Trigger event
744
- {{trigger_event}}
745
-
746
- # Assert - Verify system response
747
- {{assertions}}
748
-
749
- def test_{spec_id.lower().replace('-', '_')}_no_event():
750
- """{spec_id}: No action when event not triggered."""
751
- # Arrange
752
- {{setup_code}}
753
-
754
- # Act - No event triggered
755
- {{no_event_code}}
756
-
757
- # Assert - System remains unchanged
758
- {{no_change_assertions}}
759
- '''
760
- return test_template
761
-
762
- # Usage
763
- generator = SPECTestGenerator()
764
- requirement = {
765
- 'id': 'SPEC-001-REQ-02',
766
- 'pattern': 'Event-driven',
767
- 'acceptance_criteria': [...]
768
- }
769
- test_code = generator.generate_tests_for_requirement(requirement)
770
- ```
771
-
772
- ### Continuous SPEC-TDD Workflow
773
-
774
- Automated Pipeline:
775
-
776
- ```yaml
777
- # .github/workflows/spec-tdd-pipeline.yml
778
- name: SPEC-First TDD Pipeline
779
-
780
- on:
781
- push:
782
- paths:
783
- - '.moai/specs/'
784
- - 'src/'
785
- - 'tests/'
786
-
787
- jobs:
788
- spec-validation:
789
- name: "Phase 1: SPEC Validation"
790
- runs-on: ubuntu-latest
791
- steps:
792
- - uses: actions/checkout@v4
793
-
794
- - name: Validate SPEC format
795
- run: python .moai/scripts/validate_spec.py
796
-
797
- - name: Check requirement traceability
798
- run: python .moai/scripts/check_traceability.py
799
-
800
- - name: Generate test scaffolding
801
- run: python .moai/scripts/generate_test_scaffolding.py
802
-
803
- tdd-implementation:
804
- name: "Phase 2: TDD Implementation"
805
- needs: spec-validation
806
- runs-on: ubuntu-latest
807
- steps:
808
- - uses: actions/checkout@v4
809
-
810
- - name: Run RED phase tests
811
- run: |
812
- pytest tests/ -v --tb=short || true # Allow failures
813
- echo "RED phase: Expected failures "
814
-
815
- - name: Verify tests exist for all requirements
816
- run: python .moai/scripts/verify_test_coverage_mapping.py
817
-
818
- quality-gates:
819
- name: "Phase 3: Quality Gates"
820
- needs: tdd-implementation
821
- runs-on: ubuntu-latest
822
- steps:
823
- - uses: actions/checkout@v4
824
-
825
- - name: Run tests with coverage
826
- run: pytest --cov=src --cov-fail-under=85
827
-
828
- - name: Validate TRUST 5
829
- run: python .moai/scripts/validate_trust5.py
830
-
831
- - name: Generate documentation
832
- run: python .moai/scripts/generate_docs.py
833
- ```
145
+ - [EARS Format Reference](spec-ears-format.md) - All EARS patterns with examples
146
+ - [TDD Implementation](spec-tdd-implementation.md) - Advanced TDD workflows
834
147
 
835
148
  ---
836
149
 
@@ -843,9 +156,7 @@ Agents:
843
156
  - docs-manager - Documentation generation
844
157
 
845
158
  Skills:
846
- - moai-foundation-ears - EARS format patterns
847
- - moai-foundation-trust - Quality framework
848
- - moai-essentials-testing-integration - Test frameworks
159
+ - moai-workflow-testing - Test frameworks
849
160
 
850
161
  Commands:
851
162
  - /moai:1-plan - SPEC generation (Phase 1)
@@ -853,12 +164,8 @@ Commands:
853
164
  - /moai:3-sync - Documentation sync (Phase 3)
854
165
  - /clear - Token optimization between phases
855
166
 
856
- Memory:
857
- - Skill("moai-foundation-core") modules/execution-rules.md - SPEC decision criteria
858
- - @.moai/specs/ - SPEC storage location
859
-
860
167
  ---
861
168
 
862
- Version: 1.0.0
863
- Last Updated: 2025-11-25
169
+ Version: 2.0.0
170
+ Last Updated: 2026-01-06
864
171
  Status: Production Ready