moai-adk 0.25.4__py3-none-any.whl → 0.32.8__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.

Potentially problematic release.


This version of moai-adk might be problematic. Click here for more details.

Files changed (378) hide show
  1. moai_adk/__init__.py +2 -5
  2. moai_adk/__main__.py +114 -82
  3. moai_adk/cli/__init__.py +6 -1
  4. moai_adk/cli/commands/__init__.py +1 -3
  5. moai_adk/cli/commands/analyze.py +5 -16
  6. moai_adk/cli/commands/doctor.py +6 -18
  7. moai_adk/cli/commands/init.py +56 -125
  8. moai_adk/cli/commands/language.py +14 -35
  9. moai_adk/cli/commands/status.py +9 -15
  10. moai_adk/cli/commands/update.py +1555 -190
  11. moai_adk/cli/prompts/init_prompts.py +112 -56
  12. moai_adk/cli/spec_status.py +263 -0
  13. moai_adk/cli/ui/__init__.py +44 -0
  14. moai_adk/cli/ui/progress.py +422 -0
  15. moai_adk/cli/ui/prompts.py +389 -0
  16. moai_adk/cli/ui/theme.py +129 -0
  17. moai_adk/cli/worktree/__init__.py +27 -0
  18. moai_adk/cli/worktree/__main__.py +31 -0
  19. moai_adk/cli/worktree/cli.py +672 -0
  20. moai_adk/cli/worktree/exceptions.py +89 -0
  21. moai_adk/cli/worktree/manager.py +490 -0
  22. moai_adk/cli/worktree/models.py +65 -0
  23. moai_adk/cli/worktree/registry.py +128 -0
  24. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  25. moai_adk/core/analysis/session_analyzer.py +17 -56
  26. moai_adk/core/claude_integration.py +26 -54
  27. moai_adk/core/command_helpers.py +10 -10
  28. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  29. moai_adk/core/config/auto_spec_config.py +5 -11
  30. moai_adk/core/config/migration.py +19 -9
  31. moai_adk/core/config/unified.py +436 -0
  32. moai_adk/core/context_manager.py +6 -12
  33. moai_adk/core/enterprise_features.py +1404 -0
  34. moai_adk/core/error_recovery_system.py +725 -112
  35. moai_adk/core/event_driven_hook_system.py +1371 -0
  36. moai_adk/core/git/__init__.py +8 -0
  37. moai_adk/core/git/branch_manager.py +3 -11
  38. moai_adk/core/git/checkpoint.py +1 -3
  39. moai_adk/core/git/conflict_detector.py +413 -0
  40. moai_adk/core/git/manager.py +91 -1
  41. moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
  42. moai_adk/core/input_validation_middleware.py +1006 -0
  43. moai_adk/core/integration/engine.py +6 -18
  44. moai_adk/core/integration/integration_tester.py +10 -9
  45. moai_adk/core/integration/utils.py +1 -1
  46. moai_adk/core/issue_creator.py +10 -28
  47. moai_adk/core/jit_context_loader.py +956 -0
  48. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  49. moai_adk/core/language_config_resolver.py +485 -0
  50. moai_adk/core/language_validator.py +28 -41
  51. moai_adk/core/mcp/setup.py +15 -12
  52. moai_adk/core/merge/__init__.py +9 -0
  53. moai_adk/core/merge/analyzer.py +481 -0
  54. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  55. moai_adk/core/migration/backup_manager.py +78 -9
  56. moai_adk/core/migration/custom_element_scanner.py +358 -0
  57. moai_adk/core/migration/file_migrator.py +8 -17
  58. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  59. moai_adk/core/migration/selective_restorer.py +470 -0
  60. moai_adk/core/migration/template_utils.py +74 -0
  61. moai_adk/core/migration/user_selection_ui.py +338 -0
  62. moai_adk/core/migration/version_detector.py +6 -10
  63. moai_adk/core/migration/version_migrator.py +3 -3
  64. moai_adk/core/performance/cache_system.py +8 -10
  65. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  66. moai_adk/core/project/checker.py +2 -4
  67. moai_adk/core/project/detector.py +1 -3
  68. moai_adk/core/project/initializer.py +135 -23
  69. moai_adk/core/project/phase_executor.py +54 -81
  70. moai_adk/core/project/validator.py +6 -12
  71. moai_adk/core/quality/trust_checker.py +9 -27
  72. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  73. moai_adk/core/robust_json_parser.py +611 -0
  74. moai_adk/core/rollback_manager.py +73 -148
  75. moai_adk/core/session_manager.py +10 -26
  76. moai_adk/core/skill_loading_system.py +579 -0
  77. moai_adk/core/spec/confidence_scoring.py +31 -100
  78. moai_adk/core/spec/ears_template_engine.py +351 -286
  79. moai_adk/core/spec/quality_validator.py +35 -69
  80. moai_adk/core/spec_status_manager.py +64 -74
  81. moai_adk/core/template/backup.py +45 -20
  82. moai_adk/core/template/config.py +112 -39
  83. moai_adk/core/template/merger.py +11 -19
  84. moai_adk/core/template/processor.py +253 -149
  85. moai_adk/core/template_engine.py +73 -40
  86. moai_adk/core/template_variable_synchronizer.py +417 -0
  87. moai_adk/core/unified_permission_manager.py +745 -0
  88. moai_adk/core/user_behavior_analytics.py +851 -0
  89. moai_adk/core/version_sync.py +429 -0
  90. moai_adk/foundation/__init__.py +56 -0
  91. moai_adk/foundation/backend.py +1027 -0
  92. moai_adk/foundation/database.py +1115 -0
  93. moai_adk/foundation/devops.py +1585 -0
  94. moai_adk/foundation/ears.py +431 -0
  95. moai_adk/foundation/frontend.py +870 -0
  96. moai_adk/foundation/git/commit_templates.py +4 -12
  97. moai_adk/foundation/git.py +376 -0
  98. moai_adk/foundation/langs.py +484 -0
  99. moai_adk/foundation/ml_ops.py +1162 -0
  100. moai_adk/foundation/testing.py +1524 -0
  101. moai_adk/foundation/trust/trust_principles.py +23 -72
  102. moai_adk/foundation/trust/validation_checklist.py +57 -162
  103. moai_adk/project/__init__.py +0 -0
  104. moai_adk/project/configuration.py +1084 -0
  105. moai_adk/project/documentation.py +566 -0
  106. moai_adk/project/schema.py +447 -0
  107. moai_adk/statusline/alfred_detector.py +1 -3
  108. moai_adk/statusline/config.py +13 -4
  109. moai_adk/statusline/enhanced_output_style_detector.py +23 -15
  110. moai_adk/statusline/main.py +51 -15
  111. moai_adk/statusline/renderer.py +104 -48
  112. moai_adk/statusline/update_checker.py +3 -9
  113. moai_adk/statusline/version_reader.py +140 -46
  114. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  115. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  116. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  117. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  118. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  119. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  120. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  121. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  122. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  123. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  124. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  125. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  126. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  127. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  128. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  129. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  130. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  131. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  132. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  133. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  134. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  135. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  136. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  137. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  138. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  139. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  140. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  141. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  142. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  143. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  144. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  145. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  146. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  147. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  148. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  149. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  150. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  151. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  152. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  153. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  154. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  155. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  156. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  157. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  158. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  159. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  160. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  161. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  162. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  163. moai_adk/templates/.claude/settings.json +172 -0
  164. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  165. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  166. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  167. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  168. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  169. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  170. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
  171. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
  172. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  173. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  174. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  175. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  176. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
  177. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  178. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  179. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  180. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  181. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  182. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  183. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  184. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  185. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  186. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  187. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  188. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  189. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  190. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  191. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  192. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  193. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  196. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  199. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  201. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  204. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  205. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  206. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  207. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  208. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  209. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  210. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  211. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  212. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  213. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  214. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  215. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  229. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  230. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  231. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  232. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  233. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  234. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  235. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  236. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  237. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  238. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  239. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  240. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  241. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  242. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  243. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  244. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  245. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  246. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  247. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  248. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  249. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  250. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  251. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  252. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  253. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  254. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  255. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  256. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  257. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  258. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  259. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  260. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  261. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  262. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  263. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  264. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  265. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  266. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  267. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  268. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  269. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  270. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  271. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  272. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  273. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  274. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  275. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  276. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  277. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  278. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  279. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  280. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  281. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  282. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  283. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  284. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  285. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  286. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  287. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  288. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  289. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  290. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  291. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  323. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  324. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  325. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  326. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  327. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  328. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  329. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  330. moai_adk/templates/.git-hooks/pre-commit +103 -41
  331. moai_adk/templates/.git-hooks/pre-push +116 -21
  332. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  333. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  334. moai_adk/templates/.gitignore +184 -44
  335. moai_adk/templates/.mcp.json +7 -9
  336. moai_adk/templates/.moai/cache/personalization.json +10 -0
  337. moai_adk/templates/.moai/config/config.yaml +344 -0
  338. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  339. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  340. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  341. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  342. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  343. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  344. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  345. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  346. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  347. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  348. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  349. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  350. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  351. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  352. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  353. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  354. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  355. moai_adk/templates/CLAUDE.md +382 -501
  356. moai_adk/utils/__init__.py +24 -1
  357. moai_adk/utils/banner.py +7 -10
  358. moai_adk/utils/common.py +16 -30
  359. moai_adk/utils/link_validator.py +4 -12
  360. moai_adk/utils/safe_file_reader.py +2 -6
  361. moai_adk/utils/timeout.py +160 -0
  362. moai_adk/utils/toon_utils.py +256 -0
  363. moai_adk/version.py +22 -0
  364. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  365. moai_adk-0.32.8.dist-info/RECORD +396 -0
  366. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  367. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  368. moai_adk/cli/commands/backup.py +0 -82
  369. moai_adk/cli/commands/improve_user_experience.py +0 -348
  370. moai_adk/cli/commands/migrate.py +0 -158
  371. moai_adk/cli/commands/validate_links.py +0 -118
  372. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
  373. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  374. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  375. moai_adk/utils/user_experience.py +0 -531
  376. moai_adk-0.25.4.dist-info/METADATA +0 -2279
  377. moai_adk-0.25.4.dist-info/RECORD +0 -112
  378. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
@@ -19,7 +19,7 @@ Project initialization command (interactive/non-interactive):
19
19
  - Run `Skill("moai-foundation-langs")` to validate detected language stack
20
20
 
21
21
  2. **Before first SPEC creation**:
22
- - Use `Skill("moai-alfred-language-detection")` to confirm language selection
22
+ - Use `Skill("moai-core-language-detection")` to confirm language selection
23
23
 
24
24
  3. **Project reinitialization** (`--force`):
25
25
  - Skills automatically adapt to new project structure
@@ -31,14 +31,17 @@ from pathlib import Path
31
31
  from typing import Sequence
32
32
 
33
33
  import click
34
+ import yaml
34
35
  from rich.console import Console
35
36
  from rich.progress import BarColumn, Progress, SpinnerColumn, TaskID, TextColumn
36
37
 
37
38
  from moai_adk import __version__
38
39
  from moai_adk.cli.prompts import prompt_project_setup
39
- from moai_adk.core.mcp.setup import MCPSetupManager
40
40
  from moai_adk.core.project.initializer import ProjectInitializer
41
- from moai_adk.statusline.version_reader import VersionConfig, VersionReader
41
+ from moai_adk.statusline.version_reader import (
42
+ VersionConfig,
43
+ VersionReader,
44
+ )
42
45
  from moai_adk.utils.banner import print_banner, print_welcome_message
43
46
 
44
47
  console = Console()
@@ -96,17 +99,6 @@ def create_progress_callback(progress: Progress, task_ids: Sequence[TaskID]):
96
99
  default=None,
97
100
  help="Programming language (auto-detect if not specified)",
98
101
  )
99
- @click.option(
100
- "--with-mcp",
101
- multiple=True,
102
- type=click.Choice(["context7", "figma", "playwright", "sequential-thinking"]),
103
- help="Install MCP servers automatically (can be used multiple times)",
104
- )
105
- @click.option(
106
- "--mcp-auto",
107
- is_flag=True,
108
- help="Auto-install all recommended MCP servers",
109
- )
110
102
  @click.option(
111
103
  "--force",
112
104
  is_flag=True,
@@ -118,8 +110,6 @@ def init(
118
110
  mode: str,
119
111
  locale: str,
120
112
  language: str | None,
121
- with_mcp: tuple,
122
- mcp_auto: bool,
123
113
  force: bool,
124
114
  ) -> None:
125
115
  """Initialize a new MoAI-ADK project
@@ -163,38 +153,17 @@ def init(
163
153
  # 3. Interactive vs Non-Interactive
164
154
  if non_interactive:
165
155
  # Non-Interactive Mode
166
- console.print(
167
- f"\n[cyan]🚀 Initializing project at {project_path}...[/cyan]\n"
168
- )
156
+ console.print(f"\n[cyan]🚀 Initializing project at {project_path}...[/cyan]\n")
169
157
  project_name = project_path.name if is_current_dir else path
170
158
  locale = locale or "en"
171
- # Language detection happens in /alfred:0-project, so default to None here
159
+ # Language detection happens in /moai:0-project, so default to None here
172
160
  # This will become "generic" internally, but Summary will show more helpful message
173
161
  if not language:
174
162
  language = None
175
-
176
- # Handle MCP options in non-interactive mode
177
- if mcp_auto:
178
- mcp_servers = ["context7", "playwright", "sequential-thinking"]
179
- console.print(
180
- "[cyan]🔧 MCP servers:[/cyan] Auto-installing all recommended servers"
181
- )
182
- elif with_mcp:
183
- mcp_servers = list(with_mcp)
184
- console.print(f"[cyan]🔧 MCP servers:[/cyan] {', '.join(mcp_servers)}")
185
- else:
186
- mcp_servers = []
187
163
  else:
188
164
  # Interactive Mode
189
165
  print_welcome_message()
190
166
 
191
- # Check for MCP CLI options in interactive mode (warn user)
192
- if mcp_auto or with_mcp:
193
- console.print(
194
- "[yellow]⚠️ MCP options ignored in interactive mode[/yellow]"
195
- )
196
- console.print(" Please use the interactive prompts instead.\n")
197
-
198
167
  # Interactive prompt
199
168
  answers = prompt_project_setup(
200
169
  project_name=None if is_current_dir else path,
@@ -208,7 +177,6 @@ def init(
208
177
  locale = answers["locale"]
209
178
  language = answers["language"]
210
179
  project_name = answers["project_name"]
211
- mcp_servers = answers.get("mcp_servers", [])
212
180
  custom_language = answers.get("custom_language")
213
181
 
214
182
  console.print("\n[cyan]🚀 Starting installation...[/cyan]\n")
@@ -222,9 +190,7 @@ def init(
222
190
  if initializer.is_initialized():
223
191
  # Always reinitialize without confirmation (force mode by default)
224
192
  if non_interactive:
225
- console.print(
226
- "\n[green]🔄 Reinitializing project (force mode)...[/green]\n"
227
- )
193
+ console.print("\n[green]🔄 Reinitializing project (force mode)...[/green]\n")
228
194
  else:
229
195
  # Interactive mode: Simple notification
230
196
  console.print("\n[cyan]🔄 Reinitializing project...[/cyan]")
@@ -248,11 +214,20 @@ def init(
248
214
  except Exception:
249
215
  pass # Ignore removal failures
250
216
 
251
- config_path = project_path / ".moai" / "config" / "config.json"
217
+ # Support both YAML (v0.32.5+) and JSON (legacy) config files
218
+ config_yaml_path = project_path / ".moai" / "config" / "config.yaml"
219
+ config_json_path = project_path / ".moai" / "config" / "config.json"
220
+
221
+ config_path = config_yaml_path if config_yaml_path.exists() else config_json_path
222
+ is_yaml = config_path.suffix in (".yaml", ".yml")
223
+
252
224
  if config_path.exists():
253
225
  try:
254
226
  with open(config_path, "r", encoding="utf-8") as f:
255
- config_data = json.load(f)
227
+ if is_yaml:
228
+ config_data = yaml.safe_load(f) or {}
229
+ else:
230
+ config_data = json.load(f)
256
231
 
257
232
  # Update version and optimization flags
258
233
  if "moai" not in config_data:
@@ -277,9 +252,14 @@ def init(
277
252
  config_data["project"]["optimized"] = False
278
253
 
279
254
  with open(config_path, "w", encoding="utf-8") as f:
280
- json.dump(config_data, f, indent=2, ensure_ascii=False)
255
+ if is_yaml:
256
+ yaml.safe_dump(
257
+ config_data, f, default_flow_style=False, allow_unicode=True, sort_keys=False
258
+ )
259
+ else:
260
+ json.dump(config_data, f, indent=2, ensure_ascii=False)
281
261
  except Exception:
282
- # Ignore read/write failures; config.json is regenerated during initialization
262
+ # Ignore read/write failures; config is regenerated during initialization
283
263
  pass
284
264
 
285
265
  with Progress(
@@ -313,103 +293,56 @@ def init(
313
293
  # 6. Output results
314
294
  if result.success:
315
295
  separator = "[dim]" + ("─" * 60) + "[/dim]"
316
- console.print(
317
- "\n[green bold]✅ Initialization Completed Successfully![/green bold]"
318
- )
296
+ console.print("\n[green bold]✅ Initialization Completed Successfully![/green bold]")
319
297
  console.print(separator)
320
298
  console.print("\n[cyan]📊 Summary:[/cyan]")
321
299
  console.print(f" [dim]📁 Location:[/dim] {result.project_path}")
322
300
  # Show language more clearly - "generic" means auto-detect
323
- language_display = (
324
- "Auto-detect (use /alfred:0-project)"
325
- if result.language == "generic"
326
- else result.language
327
- )
301
+ language_display = "Auto-detect (use /moai:0-project)" if result.language == "generic" else result.language
328
302
  console.print(f" [dim]🌐 Language:[/dim] {language_display}")
329
- console.print(f" [dim]🔧 Mode:[/dim] {result.mode}")
303
+ # Show Git Strategy (default: manual = local-only, no auto-branch)
304
+ console.print(" [dim]🔀 Git:[/dim] manual (github-flow, branch: manual)")
330
305
  console.print(f" [dim]🌍 Locale:[/dim] {result.locale}")
331
- console.print(
332
- f" [dim]📄 Files:[/dim] {len(result.created_files)} created"
333
- )
306
+ console.print(f" [dim]📄 Files:[/dim] {len(result.created_files)} created")
334
307
  console.print(f" [dim]⏱️ Duration:[/dim] {result.duration}ms")
335
308
 
336
- # Show MCP setup info
337
- if mcp_servers:
338
- console.print(f" [dim]🔧 MCP Servers:[/dim] {', '.join(mcp_servers)}")
339
-
340
- # MCP Setup (if servers selected)
341
- if mcp_servers:
342
- console.print("\n[cyan]🔧 Setting up MCP servers...[/cyan]")
343
- mcp_manager = MCPSetupManager(project_path)
344
- mcp_success = mcp_manager.setup_mcp_servers(mcp_servers)
345
- if not mcp_success:
346
- console.print(
347
- "[yellow]⚠️ MCP setup completed with warnings[/yellow]"
348
- )
349
-
350
309
  # Show backup info if reinitialized
351
310
  if is_reinit:
352
311
  backup_dir = project_path / ".moai-backups"
353
312
  if backup_dir.exists():
354
- latest_backup = max(
355
- backup_dir.iterdir(), key=lambda p: p.stat().st_mtime
356
- )
313
+ latest_backup = max(backup_dir.iterdir(), key=lambda p: p.stat().st_mtime)
357
314
  console.print(f" [dim]💾 Backup:[/dim] {latest_backup.name}/")
358
315
 
359
316
  console.print(f"\n{separator}")
360
317
 
361
318
  # Show config merge notice if reinitialized
362
319
  if is_reinit:
363
- console.print("\n[yellow]⚠️ Configuration Notice:[/yellow]")
364
- console.print(
365
- " All template files have been [bold]force overwritten[/bold]"
366
- )
367
- console.print(
368
- " Previous files are backed up in [cyan].moai-backups/backup/[/cyan]"
369
- )
370
- console.print("\n [cyan]To merge your previous config:[/cyan]")
371
- console.print(
372
- " Run [bold]/alfred:0-project[/bold] command in Claude Code"
373
- )
374
- console.print(
375
- " It will merge backup config when [dim]optimized=false[/dim]\n"
376
- )
320
+ console.print("\n[yellow]⚠️ Configuration Status: optimized=false (merge required)[/yellow]")
321
+ console.print()
322
+ console.print("[cyan]What Happened:[/cyan]")
323
+ console.print(" ✅ Template files updated to latest version")
324
+ console.print(" 💾 Your previous settings backed up in: [cyan].moai-backups/backup/[/cyan]")
325
+ console.print(" Configuration merge required")
326
+ console.print()
327
+ console.print("[cyan]What is optimized=false?[/cyan]")
328
+ console.print(" • Template version changed (you get new features)")
329
+ console.print(" Your previous settings are safe (backed up)")
330
+ console.print(" • Next: Run /moai:0-project to merge")
331
+ console.print()
332
+ console.print("[cyan]What Happens Next:[/cyan]")
333
+ console.print(" 1. Run [bold]/moai:0-project[/bold] in Claude Code")
334
+ console.print(" 2. System intelligently merges old settings + new template")
335
+ console.print(" 3. After successful merge → optimized becomes true")
336
+ console.print(" 4. You're ready to continue developing\n")
377
337
 
378
338
  console.print("\n[cyan]🚀 Next Steps:[/cyan]")
379
339
  if not is_current_dir:
380
- console.print(
381
- f" [blue]1.[/blue] Run [bold]cd {project_name}[/bold] to enter the project"
382
- )
383
- console.print(
384
- " [blue]2.[/blue] Run [bold]/alfred:0-project[/bold] in Claude Code for full setup"
385
- )
386
- console.print(
387
- " (Configure: mode, language, report generation, etc.)"
388
- )
340
+ console.print(f" [blue]1.[/blue] Run [bold]cd {project_name}[/bold] to enter the project")
341
+ console.print(" [blue]2.[/blue] Run [bold]/moai:0-project[/bold] in Claude Code for full setup")
342
+ console.print(" (Configure: mode, language, report generation, etc.)")
389
343
  else:
390
- console.print(
391
- " [blue]1.[/blue] Run [bold]/alfred:0-project[/bold] in Claude Code for full setup"
392
- )
393
- console.print(
394
- " (Configure: mode, language, report generation, etc.)"
395
- )
396
-
397
- # Figma token setup guidance
398
- if mcp_servers and "figma" in mcp_servers:
399
- console.print("\n[yellow]🔐 Figma Access Token Setup:[/yellow]")
400
- console.print(
401
- " [dim]Figma MCP requires an access token to function:[/dim]"
402
- )
403
- console.print(
404
- " 1. Visit: https://www.figma.com/developers/api#access-tokens"
405
- )
406
- console.print(" 2. Create a new access token")
407
- console.print(
408
- " 3. Run [bold]/alfred:0-project[/bold] and follow the Figma setup prompts"
409
- )
410
- console.print(
411
- " 4. The token will be securely stored in your environment\n"
412
- )
344
+ console.print(" [blue]1.[/blue] Run [bold]/moai:0-project[/bold] in Claude Code for full setup")
345
+ console.print(" (Configure: mode, language, report generation, etc.)")
413
346
 
414
347
  if not is_current_dir:
415
348
  console.print(" [blue]3.[/blue] Start developing with MoAI-ADK!\n")
@@ -429,9 +362,7 @@ def init(
429
362
  raise click.Abort()
430
363
  except FileExistsError as e:
431
364
  console.print("\n[yellow]⚠ Project already initialized[/yellow]")
432
- console.print(
433
- "[dim] Use 'python -m moai_adk status' to check configuration[/dim]\n"
434
- )
365
+ console.print("[dim] Use 'python -m moai_adk status' to check configuration[/dim]\n")
435
366
  raise click.Abort() from e
436
367
  except Exception as e:
437
368
  console.print(f"\n[red]✗ Initialization failed: {e}[/red]\n")
@@ -94,9 +94,7 @@ def render_template(template_path, variables_file, output, language):
94
94
  template_path_obj = Path(template_path)
95
95
  output_path_obj = Path(output) if output else None
96
96
 
97
- rendered = template_engine.render_file(
98
- template_path_obj, variables, output_path_obj
99
- )
97
+ rendered = template_engine.render_file(template_path_obj, variables, output_path_obj)
100
98
 
101
99
  if not output:
102
100
  console.print("[bold]Rendered Template:[/bold]")
@@ -121,9 +119,7 @@ def translate_descriptions(base_description, target_languages, output):
121
119
  languages = ["en", "ko", "ja", "es", "fr", "de"]
122
120
 
123
121
  claude_integration = ClaudeCLIIntegration()
124
- descriptions = claude_integration.generate_multilingual_descriptions(
125
- {"base": base_description}, languages
126
- )
122
+ descriptions = claude_integration.generate_multilingual_descriptions({"base": base_description}, languages)
127
123
 
128
124
  if output:
129
125
  with open(output, "w", encoding="utf-8") as f:
@@ -139,13 +135,9 @@ def translate_descriptions(base_description, target_languages, output):
139
135
 
140
136
  @language.command()
141
137
  @click.argument("prompt_template")
142
- @click.option(
143
- "--variables", "-v", type=click.Path(exists=True), help="Variables JSON file"
144
- )
138
+ @click.option("--variables", "-v", type=click.Path(exists=True), help="Variables JSON file")
145
139
  @click.option("--language", "-l", help="Target language code")
146
- @click.option(
147
- "--output-format", default="json", help="Output format (text, json, stream-json)"
148
- )
140
+ @click.option("--output-format", default="json", help="Output format (text, json, stream-json)")
149
141
  @click.option("--dry-run", is_flag=True, help="Show command without executing")
150
142
  def execute(prompt_template, variables, language, output_format, dry_run):
151
143
  """Execute Claude CLI with template variables and language support."""
@@ -166,9 +158,7 @@ def execute(prompt_template, variables, language, output_format, dry_run):
166
158
 
167
159
  if dry_run:
168
160
  console.print("[bold]Dry Run - Command that would be executed:[/bold]")
169
- console.print(
170
- f"claude --print --output-format {output_format} '{processed_prompt}'"
171
- )
161
+ console.print(f"claude --print --output-format {output_format} '{processed_prompt}'")
172
162
  console.print("[bold]Variables used:[/bold]")
173
163
  console.print(json.dumps(template_vars, indent=2, ensure_ascii=False))
174
164
  return
@@ -202,9 +192,7 @@ def execute(prompt_template, variables, language, output_format, dry_run):
202
192
 
203
193
  @language.command()
204
194
  @click.argument("config_file", type=click.Path(exists=True))
205
- @click.option(
206
- "--validate-languages", is_flag=True, help="Validate language codes in config"
207
- )
195
+ @click.option("--validate-languages", is_flag=True, help="Validate language codes in config")
208
196
  def validate_config(config_file, validate_languages):
209
197
  """Validate language configuration in MoAI-ADK config file."""
210
198
  try:
@@ -227,30 +215,23 @@ def validate_config(config_file, validate_languages):
227
215
  conv_lang = lang_config.get("conversation_language")
228
216
  if conv_lang:
229
217
  if conv_lang in get_all_supported_codes():
230
- console.print(
231
- f"[green]✓ conversation_language '{conv_lang}' is supported[/green]"
232
- )
218
+ console.print(f"[green]✓ conversation_language '{conv_lang}' is supported[/green]")
233
219
  else:
234
- console.print(
235
- f"[red]✗ conversation_language '{conv_lang}' is not supported[/red]"
236
- )
220
+ console.print(f"[red]✗ conversation_language '{conv_lang}' is not supported[/red]")
237
221
  else:
238
- console.print(
239
- "[yellow]⚠ No conversation_language specified[/yellow]"
240
- )
222
+ console.print("[yellow]⚠ No conversation_language specified[/yellow]")
241
223
 
242
224
  # Check conversation_language_name
243
225
  conv_lang_name = lang_config.get("conversation_language_name")
244
226
  if conv_lang_name and conv_lang:
245
227
  expected_name = get_native_name(conv_lang)
246
228
  if conv_lang_name == expected_name:
247
- console.print(
248
- "[green]✓ conversation_language_name matches[/green]"
249
- )
229
+ console.print("[green]✓ conversation_language_name matches[/green]")
250
230
  else:
251
- console.print(
252
- f"[yellow]⚠ conversation_language_name '{conv_lang_name}' doesn't match expected '{expected_name}'[/yellow]"
231
+ warning_msg = (
232
+ f"⚠ conversation_language_name '{conv_lang_name}' doesn't match expected '{expected_name}'"
253
233
  )
234
+ console.print(f"[yellow]{warning_msg}[/yellow]")
254
235
 
255
236
  if validate_languages:
256
237
  # Scan entire config for language codes
@@ -261,9 +242,7 @@ def validate_config(config_file, validate_languages):
261
242
  found_codes.append(code)
262
243
 
263
244
  if found_codes:
264
- console.print(
265
- f"[blue]Found language codes in config: {', '.join(found_codes)}[/blue]"
266
- )
245
+ console.print(f"[blue]Found language codes in config: {', '.join(found_codes)}[/blue]")
267
246
 
268
247
  except Exception as e:
269
248
  console.print(f"[red]Error validating config: {e}[/red]")
@@ -1,7 +1,7 @@
1
1
  """MoAI-ADK status command
2
2
 
3
3
  Project status display:
4
- - Read project information from config.json
4
+ - Read project information from config.yaml
5
5
  - Show the number of SPEC documents
6
6
  - Summarize the Git status
7
7
 
@@ -30,10 +30,10 @@ Project status display:
30
30
  - When SPEC count grows, verify with `Skill("moai-foundation-trust")`
31
31
  """
32
32
 
33
- import json
34
33
  from pathlib import Path
35
34
 
36
35
  import click
36
+ import yaml
37
37
  from rich.console import Console
38
38
  from rich.panel import Panel
39
39
  from rich.table import Table
@@ -52,23 +52,19 @@ def status() -> None:
52
52
  - Git branch and status
53
53
  """
54
54
  try:
55
- # Read config.json
56
- config_path = Path.cwd() / ".moai" / "config" / "config.json"
55
+ # Read config.yaml
56
+ config_path = Path.cwd() / ".moai" / "config" / "config.yaml"
57
57
  if not config_path.exists():
58
- console.print("[yellow]⚠ No .moai/config/config.json found[/yellow]")
59
- console.print(
60
- "[dim]Run [cyan]python -m moai_adk init .[/cyan] to initialize the project[/dim]"
61
- )
58
+ console.print("[yellow]⚠ No .moai/config/config.yaml found[/yellow]")
59
+ console.print("[dim]Run [cyan]python -m moai_adk init .[/cyan] to initialize the project[/dim]")
62
60
  raise click.Abort()
63
61
 
64
62
  with open(config_path) as f:
65
- config = json.load(f)
63
+ config = yaml.safe_load(f) or {}
66
64
 
67
65
  # Count SPEC documents
68
66
  specs_dir = Path.cwd() / ".moai" / "specs"
69
- spec_count = (
70
- len(list(specs_dir.glob("SPEC-*/spec.md"))) if specs_dir.exists() else 0
71
- )
67
+ spec_count = len(list(specs_dir.glob("SPEC-*/spec.md"))) if specs_dir.exists() else 0
72
68
 
73
69
  # Build the status table
74
70
  table = Table(show_header=False, box=None, padding=(0, 2))
@@ -78,9 +74,7 @@ def status() -> None:
78
74
  # Read from project section (with legacy fallback)
79
75
  project = config.get("project", {})
80
76
  table.add_row("Mode", project.get("mode") or config.get("mode", "unknown"))
81
- table.add_row(
82
- "Locale", project.get("locale") or config.get("locale", "unknown")
83
- )
77
+ table.add_row("Locale", project.get("locale") or config.get("locale", "unknown"))
84
78
  table.add_row("SPECs", str(spec_count))
85
79
 
86
80
  # Optionally include Git information