moai-adk 0.35.1__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 (502) hide show
  1. moai_adk/__init__.py +10 -0
  2. moai_adk/__main__.py +199 -0
  3. moai_adk/cli/__init__.py +6 -0
  4. moai_adk/cli/commands/__init__.py +17 -0
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +272 -0
  7. moai_adk/cli/commands/init.py +372 -0
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +104 -0
  10. moai_adk/cli/commands/update.py +2686 -0
  11. moai_adk/cli/main.py +13 -0
  12. moai_adk/cli/prompts/__init__.py +5 -0
  13. moai_adk/cli/prompts/init_prompts.py +219 -0
  14. moai_adk/cli/spec_status.py +263 -0
  15. moai_adk/cli/ui/__init__.py +44 -0
  16. moai_adk/cli/ui/progress.py +422 -0
  17. moai_adk/cli/ui/prompts.py +389 -0
  18. moai_adk/cli/ui/theme.py +129 -0
  19. moai_adk/cli/worktree/__init__.py +27 -0
  20. moai_adk/cli/worktree/__main__.py +31 -0
  21. moai_adk/cli/worktree/cli.py +683 -0
  22. moai_adk/cli/worktree/exceptions.py +89 -0
  23. moai_adk/cli/worktree/manager.py +493 -0
  24. moai_adk/cli/worktree/models.py +65 -0
  25. moai_adk/cli/worktree/registry.py +422 -0
  26. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  27. moai_adk/core/__init__.py +1 -0
  28. moai_adk/core/analysis/__init__.py +9 -0
  29. moai_adk/core/analysis/session_analyzer.py +400 -0
  30. moai_adk/core/claude_integration.py +393 -0
  31. moai_adk/core/command_helpers.py +270 -0
  32. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  33. moai_adk/core/config/__init__.py +19 -0
  34. moai_adk/core/config/auto_spec_config.py +340 -0
  35. moai_adk/core/config/migration.py +244 -0
  36. moai_adk/core/config/unified.py +436 -0
  37. moai_adk/core/context_manager.py +273 -0
  38. moai_adk/core/diagnostics/__init__.py +19 -0
  39. moai_adk/core/diagnostics/slash_commands.py +159 -0
  40. moai_adk/core/enterprise_features.py +1404 -0
  41. moai_adk/core/error_recovery_system.py +1902 -0
  42. moai_adk/core/event_driven_hook_system.py +1371 -0
  43. moai_adk/core/git/__init__.py +31 -0
  44. moai_adk/core/git/branch.py +25 -0
  45. moai_adk/core/git/branch_manager.py +129 -0
  46. moai_adk/core/git/checkpoint.py +134 -0
  47. moai_adk/core/git/commit.py +67 -0
  48. moai_adk/core/git/conflict_detector.py +413 -0
  49. moai_adk/core/git/event_detector.py +79 -0
  50. moai_adk/core/git/manager.py +216 -0
  51. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  52. moai_adk/core/input_validation_middleware.py +1006 -0
  53. moai_adk/core/integration/__init__.py +22 -0
  54. moai_adk/core/integration/engine.py +157 -0
  55. moai_adk/core/integration/integration_tester.py +226 -0
  56. moai_adk/core/integration/models.py +88 -0
  57. moai_adk/core/integration/utils.py +211 -0
  58. moai_adk/core/issue_creator.py +305 -0
  59. moai_adk/core/jit_context_loader.py +956 -0
  60. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  61. moai_adk/core/language_config.py +202 -0
  62. moai_adk/core/language_config_resolver.py +572 -0
  63. moai_adk/core/language_validator.py +543 -0
  64. moai_adk/core/mcp/setup.py +116 -0
  65. moai_adk/core/merge/__init__.py +9 -0
  66. moai_adk/core/merge/analyzer.py +605 -0
  67. moai_adk/core/migration/__init__.py +18 -0
  68. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  69. moai_adk/core/migration/backup_manager.py +277 -0
  70. moai_adk/core/migration/custom_element_scanner.py +358 -0
  71. moai_adk/core/migration/file_migrator.py +209 -0
  72. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  73. moai_adk/core/migration/selective_restorer.py +470 -0
  74. moai_adk/core/migration/template_utils.py +74 -0
  75. moai_adk/core/migration/user_selection_ui.py +338 -0
  76. moai_adk/core/migration/version_detector.py +139 -0
  77. moai_adk/core/migration/version_migrator.py +228 -0
  78. moai_adk/core/performance/__init__.py +6 -0
  79. moai_adk/core/performance/cache_system.py +316 -0
  80. moai_adk/core/performance/parallel_processor.py +116 -0
  81. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  82. moai_adk/core/project/__init__.py +1 -0
  83. moai_adk/core/project/backup_utils.py +70 -0
  84. moai_adk/core/project/checker.py +300 -0
  85. moai_adk/core/project/detector.py +293 -0
  86. moai_adk/core/project/initializer.py +387 -0
  87. moai_adk/core/project/phase_executor.py +716 -0
  88. moai_adk/core/project/validator.py +139 -0
  89. moai_adk/core/quality/__init__.py +6 -0
  90. moai_adk/core/quality/trust_checker.py +377 -0
  91. moai_adk/core/quality/validators/__init__.py +6 -0
  92. moai_adk/core/quality/validators/base_validator.py +19 -0
  93. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  94. moai_adk/core/robust_json_parser.py +611 -0
  95. moai_adk/core/rollback_manager.py +918 -0
  96. moai_adk/core/session_manager.py +651 -0
  97. moai_adk/core/skill_loading_system.py +579 -0
  98. moai_adk/core/spec/confidence_scoring.py +680 -0
  99. moai_adk/core/spec/ears_template_engine.py +1247 -0
  100. moai_adk/core/spec/quality_validator.py +687 -0
  101. moai_adk/core/spec_status_manager.py +478 -0
  102. moai_adk/core/template/__init__.py +7 -0
  103. moai_adk/core/template/backup.py +174 -0
  104. moai_adk/core/template/config.py +191 -0
  105. moai_adk/core/template/languages.py +43 -0
  106. moai_adk/core/template/merger.py +233 -0
  107. moai_adk/core/template/processor.py +1200 -0
  108. moai_adk/core/template_engine.py +310 -0
  109. moai_adk/core/template_variable_synchronizer.py +417 -0
  110. moai_adk/core/unified_permission_manager.py +745 -0
  111. moai_adk/core/user_behavior_analytics.py +851 -0
  112. moai_adk/core/version_sync.py +429 -0
  113. moai_adk/foundation/__init__.py +56 -0
  114. moai_adk/foundation/backend.py +1027 -0
  115. moai_adk/foundation/database.py +1115 -0
  116. moai_adk/foundation/devops.py +1585 -0
  117. moai_adk/foundation/ears.py +431 -0
  118. moai_adk/foundation/frontend.py +870 -0
  119. moai_adk/foundation/git/commit_templates.py +557 -0
  120. moai_adk/foundation/git.py +376 -0
  121. moai_adk/foundation/langs.py +484 -0
  122. moai_adk/foundation/ml_ops.py +1162 -0
  123. moai_adk/foundation/testing.py +1524 -0
  124. moai_adk/foundation/trust/trust_principles.py +676 -0
  125. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  126. moai_adk/project/__init__.py +0 -0
  127. moai_adk/project/configuration.py +1084 -0
  128. moai_adk/project/documentation.py +566 -0
  129. moai_adk/project/schema.py +447 -0
  130. moai_adk/statusline/__init__.py +38 -0
  131. moai_adk/statusline/alfred_detector.py +105 -0
  132. moai_adk/statusline/config.py +376 -0
  133. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  134. moai_adk/statusline/git_collector.py +190 -0
  135. moai_adk/statusline/main.py +322 -0
  136. moai_adk/statusline/metrics_tracker.py +78 -0
  137. moai_adk/statusline/renderer.py +343 -0
  138. moai_adk/statusline/update_checker.py +129 -0
  139. moai_adk/statusline/version_reader.py +741 -0
  140. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
  141. moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
  142. moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
  143. moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
  144. moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
  145. moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
  146. moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
  147. moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
  148. moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
  149. moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
  150. moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
  151. moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
  152. moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
  153. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
  154. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
  155. moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
  156. moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
  157. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  158. moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
  159. moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
  160. moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
  161. moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
  162. moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
  163. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
  164. moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
  165. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
  166. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
  167. moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
  168. moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
  169. moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
  170. moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
  171. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  172. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  173. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  179. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  180. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  181. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  182. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  183. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  184. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  185. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  186. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  187. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  188. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  189. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
  190. moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
  191. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  192. moai_adk/templates/.claude/settings.json +172 -0
  193. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
  194. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  195. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  196. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  197. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
  198. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
  199. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  200. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  201. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  202. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  203. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  204. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
  205. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
  206. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  207. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  208. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +323 -0
  209. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  210. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  211. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  212. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  213. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  214. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  215. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
  216. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  217. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  218. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
  219. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  221. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  222. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  223. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  224. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  225. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
  226. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  227. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  228. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  229. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  230. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  231. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  232. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  233. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  280. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  281. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  282. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  283. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  284. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
  285. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
  286. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
  287. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
  288. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  289. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  290. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +376 -0
  291. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  292. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  293. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +385 -0
  294. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  295. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  296. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +382 -0
  297. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  298. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  299. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +644 -0
  300. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -0
  301. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  302. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  303. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +579 -0
  304. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
  305. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -0
  306. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  307. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  308. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +497 -0
  309. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  310. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  311. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
  312. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  313. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  314. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -0
  315. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  316. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  317. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
  318. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  319. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  320. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  321. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  322. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
  323. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  324. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  325. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  326. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  327. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  328. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  329. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  330. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  331. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  332. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  333. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  334. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  335. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
  336. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  337. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  338. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  339. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  340. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  341. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  342. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
  343. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
  344. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
  345. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
  346. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
  347. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
  348. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
  349. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
  350. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
  351. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
  352. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
  353. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
  354. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
  355. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
  356. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  357. moai_adk/templates/.claude/skills/moai-plugin-builder/migration.md +341 -0
  358. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
  359. moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
  360. moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
  361. moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
  362. moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
  363. moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
  364. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
  365. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
  366. moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
  367. moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
  368. moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
  369. moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
  370. moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
  371. moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
  372. moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
  373. moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
  374. moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
  375. moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
  376. moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
  377. moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
  378. moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
  379. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
  380. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
  381. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
  382. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
  383. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
  384. moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
  385. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
  386. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
  387. moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
  388. moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
  389. moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
  390. moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
  391. moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  409. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  429. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
  430. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  431. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  432. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
  433. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  434. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  435. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  436. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  437. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  438. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  439. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
  440. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  441. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  442. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  443. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  444. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  445. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  446. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  447. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  448. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  449. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  450. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  451. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  452. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  453. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  454. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  455. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  456. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  457. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  458. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
  459. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  460. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  461. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  462. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  463. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  464. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  465. moai_adk/templates/.git-hooks/pre-commit +128 -0
  466. moai_adk/templates/.git-hooks/pre-push +365 -0
  467. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  468. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  469. moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
  470. moai_adk/templates/.gitignore +222 -0
  471. moai_adk/templates/.mcp.json +13 -0
  472. moai_adk/templates/.moai/config/config.yaml +58 -0
  473. moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
  474. moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
  475. moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
  476. moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
  477. moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
  478. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
  479. moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
  480. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  481. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  482. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  483. moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
  484. moai_adk/templates/.moai/config/sections/system.yaml +24 -0
  485. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  486. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  487. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  488. moai_adk/templates/CLAUDE.md +642 -0
  489. moai_adk/utils/__init__.py +30 -0
  490. moai_adk/utils/banner.py +38 -0
  491. moai_adk/utils/common.py +294 -0
  492. moai_adk/utils/link_validator.py +241 -0
  493. moai_adk/utils/logger.py +147 -0
  494. moai_adk/utils/safe_file_reader.py +206 -0
  495. moai_adk/utils/timeout.py +160 -0
  496. moai_adk/utils/toon_utils.py +256 -0
  497. moai_adk/version.py +22 -0
  498. moai_adk-0.35.1.dist-info/METADATA +3018 -0
  499. moai_adk-0.35.1.dist-info/RECORD +502 -0
  500. moai_adk-0.35.1.dist-info/WHEEL +4 -0
  501. moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
  502. moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,372 @@
1
+ # SPEC: SPEC-CLI-001.md, SPEC-INIT-003.md
2
+ # TEST: tests/unit/test_cli_commands.py, tests/unit/test_init_reinit.py
3
+ """MoAI-ADK init command
4
+
5
+ Project initialization command (interactive/non-interactive):
6
+ - Interactive Mode: Ask user for project settings
7
+ - Non-Interactive Mode: Use defaults or CLI options
8
+
9
+ ## Skill Invocation Guide (English-Only)
10
+
11
+ ### Related Skills
12
+ - **moai-foundation-langs**: For language detection and stack configuration
13
+ - Trigger: When language parameter is not specified (auto-detection)
14
+ - Invocation: Called implicitly during project initialization for language matrix detection
15
+
16
+ ### When to Invoke Skills in Related Workflows
17
+ 1. **After project initialization**:
18
+ - Run `Skill("moai-foundation-trust")` to verify project structure and toolchain
19
+ - Run `Skill("moai-foundation-langs")` to validate detected language stack
20
+
21
+ 2. **Before first SPEC creation**:
22
+ - Use `Skill("moai-core-language-detection")` to confirm language selection
23
+
24
+ 3. **Project reinitialization** (`--force`):
25
+ - Skills automatically adapt to new project structure
26
+ - No manual intervention required
27
+ """
28
+
29
+ import json
30
+ from pathlib import Path
31
+ from typing import Sequence
32
+
33
+ import click
34
+ import yaml
35
+ from rich.console import Console
36
+ from rich.progress import BarColumn, Progress, SpinnerColumn, TaskID, TextColumn
37
+
38
+ from moai_adk import __version__
39
+ from moai_adk.cli.prompts import prompt_project_setup
40
+ from moai_adk.core.project.initializer import ProjectInitializer
41
+ from moai_adk.statusline.version_reader import (
42
+ VersionConfig,
43
+ VersionReader,
44
+ )
45
+ from moai_adk.utils.banner import print_banner, print_welcome_message
46
+
47
+ console = Console()
48
+
49
+
50
+ def create_progress_callback(progress: Progress, task_ids: Sequence[TaskID]):
51
+ """Create progress callback
52
+
53
+ Args:
54
+ progress: Rich Progress object
55
+ task_ids: List of task IDs (one per phase)
56
+
57
+ Returns:
58
+ Progress callback function
59
+ """
60
+
61
+ def callback(message: str, current: int, total: int) -> None:
62
+ """Update progress
63
+
64
+ Args:
65
+ message: Progress message
66
+ current: Current phase (1-based)
67
+ total: Total phases
68
+ """
69
+ # Complete current phase (1-based index → 0-based)
70
+ if 1 <= current <= len(task_ids):
71
+ progress.update(task_ids[current - 1], completed=1, description=message)
72
+
73
+ return callback
74
+
75
+
76
+ @click.command()
77
+ @click.argument("path", type=click.Path(), default=".")
78
+ @click.option(
79
+ "--non-interactive",
80
+ "-y",
81
+ is_flag=True,
82
+ help="Non-interactive mode (use defaults)",
83
+ )
84
+ @click.option(
85
+ "--mode",
86
+ type=click.Choice(["personal", "team"]),
87
+ default="personal",
88
+ help="Project mode",
89
+ )
90
+ @click.option(
91
+ "--locale",
92
+ type=click.Choice(["ko", "en", "ja", "zh"]),
93
+ default=None,
94
+ help="Preferred language (ko/en/ja/zh, default: en)",
95
+ )
96
+ @click.option(
97
+ "--language",
98
+ type=str,
99
+ default=None,
100
+ help="Programming language (auto-detect if not specified)",
101
+ )
102
+ @click.option(
103
+ "--force",
104
+ is_flag=True,
105
+ help="Force reinitialize without confirmation",
106
+ )
107
+ def init(
108
+ path: str,
109
+ non_interactive: bool,
110
+ mode: str,
111
+ locale: str,
112
+ language: str | None,
113
+ force: bool,
114
+ ) -> None:
115
+ """Initialize a new MoAI-ADK project
116
+
117
+ Args:
118
+ path: Project directory path (default: current directory)
119
+ non_interactive: Skip prompts and use defaults
120
+ mode: Project mode (personal/team)
121
+ locale: Preferred language (ko/en/ja/zh). Interactive mode supports additional languages.
122
+ language: Programming language
123
+ with_mcp: Install specific MCP servers (can be used multiple times)
124
+ mcp_auto: Auto-install all recommended MCP servers
125
+ force: Force reinitialize without confirmation
126
+ """
127
+ try:
128
+ # 1. Print banner with enhanced version info
129
+ print_banner(__version__)
130
+
131
+ # 2. Enhanced version reading with error handling
132
+ try:
133
+ version_config = VersionConfig(
134
+ cache_ttl_seconds=10, # Very short cache for CLI
135
+ fallback_version=__version__,
136
+ debug_mode=False,
137
+ )
138
+ version_reader = VersionReader(version_config)
139
+ current_version = version_reader.get_version()
140
+
141
+ # Log version info for debugging
142
+ console.print(f"[dim]Current MoAI-ADK version: {current_version}[/dim]")
143
+ except Exception as e:
144
+ console.print(f"[yellow]⚠️ Version read error: {e}[/yellow]")
145
+
146
+ # 3. Check current directory mode
147
+ is_current_dir = path == "."
148
+ project_path = Path(path).resolve()
149
+
150
+ # Initialize variables
151
+ custom_language = None
152
+
153
+ # 3. Interactive vs Non-Interactive
154
+ if non_interactive:
155
+ # Non-Interactive Mode
156
+ console.print(f"\n[cyan]🚀 Initializing project at {project_path}...[/cyan]\n")
157
+ project_name = project_path.name if is_current_dir else path
158
+ locale = locale or "en"
159
+ # Language detection happens in /moai:0-project, so default to None here
160
+ # This will become "generic" internally, but Summary will show more helpful message
161
+ if not language:
162
+ language = None
163
+ else:
164
+ # Interactive Mode
165
+ print_welcome_message()
166
+
167
+ # Interactive prompt
168
+ answers = prompt_project_setup(
169
+ project_name=None if is_current_dir else path,
170
+ is_current_dir=is_current_dir,
171
+ project_path=project_path,
172
+ initial_locale=locale,
173
+ )
174
+
175
+ # Override with prompt answers
176
+ mode = answers["mode"]
177
+ locale = answers["locale"]
178
+ language = answers["language"]
179
+ project_name = answers["project_name"]
180
+ custom_language = answers.get("custom_language")
181
+
182
+ console.print("\n[cyan]🚀 Starting installation...[/cyan]\n")
183
+
184
+ if locale is None:
185
+ locale = answers["locale"]
186
+
187
+ # 4. Check for reinitialization (SPEC-INIT-003 v0.3.0) - DEFAULT TO FORCE MODE
188
+ initializer = ProjectInitializer(project_path)
189
+
190
+ if initializer.is_initialized():
191
+ # Always reinitialize without confirmation (force mode by default)
192
+ if non_interactive:
193
+ console.print("\n[green]🔄 Reinitializing project (force mode)...[/green]\n")
194
+ else:
195
+ # Interactive mode: Simple notification
196
+ console.print("\n[cyan]🔄 Reinitializing project...[/cyan]")
197
+ console.print(" Backup will be created at .moai-backups/backup/\n")
198
+
199
+ # 5. Initialize project (Progress Bar with 5 phases)
200
+ # Always allow reinit (force mode by default)
201
+ is_reinit = initializer.is_initialized()
202
+
203
+ # Reinit mode: set config.json optimized to false (v0.3.1+)
204
+ if is_reinit:
205
+ # Migration: Remove old hook files (Issue #163)
206
+ old_hook_files = [
207
+ ".claude/hooks/alfred/session_start__startup.py", # v0.8.0 deprecated
208
+ ]
209
+ for old_file in old_hook_files:
210
+ old_path = project_path / old_file
211
+ if old_path.exists():
212
+ try:
213
+ old_path.unlink() # Remove old file
214
+ except Exception:
215
+ pass # Ignore removal failures
216
+
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
+
224
+ if config_path.exists():
225
+ try:
226
+ with open(config_path, "r", encoding="utf-8") as f:
227
+ if is_yaml:
228
+ config_data = yaml.safe_load(f) or {}
229
+ else:
230
+ config_data = json.load(f)
231
+
232
+ # Update version and optimization flags
233
+ if "moai" not in config_data:
234
+ config_data["moai"] = {}
235
+
236
+ # Use enhanced version reader for consistent version handling
237
+ try:
238
+ version_config = VersionConfig(
239
+ cache_ttl_seconds=5, # Very short cache for config update
240
+ fallback_version=__version__,
241
+ debug_mode=False,
242
+ )
243
+ version_reader = VersionReader(version_config)
244
+ current_version = version_reader.get_version()
245
+ config_data["moai"]["version"] = current_version
246
+ except Exception:
247
+ # Fallback to package version
248
+ config_data["moai"]["version"] = __version__
249
+
250
+ if "project" not in config_data:
251
+ config_data["project"] = {}
252
+ config_data["project"]["optimized"] = False
253
+
254
+ with open(config_path, "w", encoding="utf-8") as f:
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)
261
+ except Exception:
262
+ # Ignore read/write failures; config is regenerated during initialization
263
+ pass
264
+
265
+ with Progress(
266
+ SpinnerColumn(),
267
+ TextColumn("[progress.description]{task.description}"),
268
+ BarColumn(),
269
+ TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
270
+ console=console,
271
+ ) as progress:
272
+ # Create 5 phase tasks
273
+ phase_names = [
274
+ "Phase 1: Preparation and backup...",
275
+ "Phase 2: Creating directory structure...",
276
+ "Phase 3: Installing resources...",
277
+ "Phase 4: Generating configurations...",
278
+ "Phase 5: Validation and finalization...",
279
+ ]
280
+ task_ids = [progress.add_task(name, total=1) for name in phase_names]
281
+ callback = create_progress_callback(progress, task_ids)
282
+
283
+ result = initializer.initialize(
284
+ mode=mode,
285
+ locale=locale,
286
+ language=language,
287
+ custom_language=custom_language,
288
+ backup_enabled=True,
289
+ progress_callback=callback,
290
+ reinit=True, # Always allow reinit (force mode by default)
291
+ )
292
+
293
+ # 6. Output results
294
+ if result.success:
295
+ separator = "[dim]" + ("─" * 60) + "[/dim]"
296
+ console.print("\n[green bold]✅ Initialization Completed Successfully![/green bold]")
297
+ console.print(separator)
298
+ console.print("\n[cyan]📊 Summary:[/cyan]")
299
+ console.print(f" [dim]📁 Location:[/dim] {result.project_path}")
300
+ # Show language more clearly - "generic" means auto-detect
301
+ language_display = "Auto-detect (use /moai:0-project)" if result.language == "generic" else result.language
302
+ console.print(f" [dim]🌐 Language:[/dim] {language_display}")
303
+ # Show Git Strategy (default: manual = local-only, no auto-branch)
304
+ console.print(" [dim]🔀 Git:[/dim] manual (github-flow, branch: manual)")
305
+ console.print(f" [dim]🌍 Locale:[/dim] {result.locale}")
306
+ console.print(f" [dim]📄 Files:[/dim] {len(result.created_files)} created")
307
+ console.print(f" [dim]⏱️ Duration:[/dim] {result.duration}ms")
308
+
309
+ # Show backup info if reinitialized
310
+ if is_reinit:
311
+ backup_dir = project_path / ".moai-backups"
312
+ if backup_dir.exists():
313
+ latest_backup = max(backup_dir.iterdir(), key=lambda p: p.stat().st_mtime)
314
+ console.print(f" [dim]💾 Backup:[/dim] {latest_backup.name}/")
315
+
316
+ console.print(f"\n{separator}")
317
+
318
+ # Show config merge notice if reinitialized
319
+ if is_reinit:
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")
337
+
338
+ console.print("\n[cyan]🚀 Next Steps:[/cyan]")
339
+ if not is_current_dir:
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.)")
343
+ else:
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.)")
346
+
347
+ if not is_current_dir:
348
+ console.print(" [blue]3.[/blue] Start developing with MoAI-ADK!\n")
349
+ else:
350
+ console.print(" [blue]2.[/blue] Start developing with MoAI-ADK!\n")
351
+ else:
352
+ console.print("\n[red bold]❌ Initialization Failed![/red bold]")
353
+ if result.errors:
354
+ console.print("\n[red]Errors:[/red]")
355
+ for error in result.errors:
356
+ console.print(f" [red]•[/red] {error}")
357
+ console.print()
358
+ raise click.ClickException("Installation failed")
359
+
360
+ except KeyboardInterrupt:
361
+ console.print("\n\n[yellow]⚠ Initialization cancelled by user[/yellow]\n")
362
+ raise click.Abort()
363
+ except FileExistsError as e:
364
+ console.print("\n[yellow]⚠ Project already initialized[/yellow]")
365
+ console.print("[dim] Use 'python -m moai_adk status' to check configuration[/dim]\n")
366
+ raise click.Abort() from e
367
+ except Exception as e:
368
+ console.print(f"\n[red]✗ Initialization failed: {e}[/red]\n")
369
+ raise click.ClickException(str(e)) from e
370
+ finally:
371
+ # Explicitly flush output buffer
372
+ console.file.flush()
@@ -0,0 +1,248 @@
1
+ """Language management commands for MoAI-ADK.
2
+
3
+ Provides commands for language configuration, template processing,
4
+ and multilingual content generation.
5
+ """
6
+
7
+ import json
8
+ from pathlib import Path
9
+
10
+ import click
11
+ from rich.console import Console
12
+ from rich.table import Table
13
+
14
+ from ...core.claude_integration import ClaudeCLIIntegration
15
+ from ...core.language_config import (
16
+ LANGUAGE_CONFIG,
17
+ get_all_supported_codes,
18
+ get_native_name,
19
+ get_optimal_model,
20
+ )
21
+ from ...core.template_engine import TemplateEngine
22
+
23
+ console = Console()
24
+
25
+
26
+ @click.group()
27
+ def language():
28
+ """Language management and multilingual support."""
29
+ pass
30
+
31
+
32
+ @language.command()
33
+ @click.option("--json-output", is_flag=True, help="Output as JSON")
34
+ def list(json_output):
35
+ """List all supported languages."""
36
+ if json_output:
37
+ console.print(json.dumps(LANGUAGE_CONFIG, indent=2, ensure_ascii=False))
38
+ return
39
+
40
+ table = Table(title="Supported Languages")
41
+ table.add_column("Code", style="cyan", no_wrap=True)
42
+ table.add_column("English Name", style="green")
43
+ table.add_column("Native Name", style="yellow")
44
+ table.add_column("Family", style="blue")
45
+
46
+ for code, info in LANGUAGE_CONFIG.items():
47
+ table.add_row(code, info["name"], info["native_name"], info["family"])
48
+
49
+ console.print(table)
50
+
51
+
52
+ @language.command()
53
+ @click.argument("language_code")
54
+ @click.option("--detail", is_flag=True, help="Show detailed information")
55
+ def info(language_code, detail):
56
+ """Show information about a specific language."""
57
+ lang_info = LANGUAGE_CONFIG.get(language_code.lower())
58
+
59
+ if not lang_info:
60
+ console.print(f"[red]Language code '{language_code}' not found.[/red]")
61
+ console.print(f"Available codes: {', '.join(get_all_supported_codes())}")
62
+ return
63
+
64
+ console.print("[bold]Language Information:[/bold]")
65
+ console.print(f"Code: {language_code}")
66
+ console.print(f"English Name: {lang_info['name']}")
67
+ console.print(f"Native Name: {lang_info['native_name']}")
68
+ console.print(f"Family: {lang_info['family']}")
69
+
70
+ if detail:
71
+ optimal_model = get_optimal_model(language_code)
72
+ console.print(f"Optimal Claude Model: {optimal_model}")
73
+
74
+
75
+ @language.command()
76
+ @click.argument("template_path", type=click.Path(exists=True))
77
+ @click.argument("variables_file", type=click.Path(exists=True))
78
+ @click.option("--output", "-o", type=click.Path(), help="Output file path")
79
+ @click.option("--language", "-l", help="Target language code")
80
+ def render_template(template_path, variables_file, output, language):
81
+ """Render template with variables and language support."""
82
+ try:
83
+ # Load variables
84
+ with open(variables_file, "r", encoding="utf-8") as f:
85
+ variables = json.load(f)
86
+
87
+ # Add language info if specified
88
+ if language:
89
+ variables["CONVERSATION_LANGUAGE"] = language
90
+ variables["CONVERSATION_LANGUAGE_NAME"] = get_native_name(language)
91
+
92
+ # Render template
93
+ template_engine = TemplateEngine()
94
+ template_path_obj = Path(template_path)
95
+ output_path_obj = Path(output) if output else None
96
+
97
+ rendered = template_engine.render_file(template_path_obj, variables, output_path_obj)
98
+
99
+ if not output:
100
+ console.print("[bold]Rendered Template:[/bold]")
101
+ console.print(rendered)
102
+ else:
103
+ console.print(f"[green]Template rendered to: {output}[/green]")
104
+
105
+ except Exception as e:
106
+ console.print(f"[red]Error rendering template: {e}[/red]")
107
+
108
+
109
+ @language.command()
110
+ @click.argument("base_description")
111
+ @click.option("--target-languages", "-t", help="Comma-separated target language codes")
112
+ @click.option("--output", "-o", type=click.Path(), help="Output JSON file")
113
+ def translate_descriptions(base_description, target_languages, output):
114
+ """Generate multilingual descriptions using Claude CLI."""
115
+ try:
116
+ if target_languages:
117
+ languages = [lang.strip() for lang in target_languages.split(",")]
118
+ else:
119
+ languages = ["en", "ko", "ja", "es", "fr", "de"]
120
+
121
+ claude_integration = ClaudeCLIIntegration()
122
+ descriptions = claude_integration.generate_multilingual_descriptions({"base": base_description}, languages)
123
+
124
+ if output:
125
+ with open(output, "w", encoding="utf-8") as f:
126
+ json.dump(descriptions, f, indent=2, ensure_ascii=False)
127
+ console.print(f"[green]Descriptions saved to: {output}[/green]")
128
+ else:
129
+ console.print("[bold]Multilingual Descriptions:[/bold]")
130
+ console.print(json.dumps(descriptions, indent=2, ensure_ascii=False))
131
+
132
+ except Exception as e:
133
+ console.print(f"[red]Error generating descriptions: {e}[/red]")
134
+
135
+
136
+ @language.command()
137
+ @click.argument("prompt_template")
138
+ @click.option("--variables", "-v", type=click.Path(exists=True), help="Variables JSON file")
139
+ @click.option("--language", "-l", help="Target language code")
140
+ @click.option("--output-format", default="json", help="Output format (text, json, stream-json)")
141
+ @click.option("--dry-run", is_flag=True, help="Show command without executing")
142
+ def execute(prompt_template, variables, language, output_format, dry_run):
143
+ """Execute Claude CLI with template variables and language support."""
144
+ try:
145
+ # Load or create variables
146
+ template_vars = {}
147
+ if variables:
148
+ with open(variables, "r", encoding="utf-8") as f:
149
+ template_vars = json.load(f)
150
+
151
+ if language:
152
+ template_vars["CONVERSATION_LANGUAGE"] = language
153
+ template_vars["CONVERSATION_LANGUAGE_NAME"] = get_native_name(language)
154
+
155
+ # Process template
156
+ template_engine = TemplateEngine()
157
+ processed_prompt = template_engine.render_string(prompt_template, template_vars)
158
+
159
+ if dry_run:
160
+ console.print("[bold]Dry Run - Command that would be executed:[/bold]")
161
+ console.print(f"claude --print --output-format {output_format} '{processed_prompt}'")
162
+ console.print("[bold]Variables used:[/bold]")
163
+ console.print(json.dumps(template_vars, indent=2, ensure_ascii=False))
164
+ return
165
+
166
+ # Execute with Claude integration
167
+ claude_integration = ClaudeCLIIntegration()
168
+ result = claude_integration.process_template_command(
169
+ prompt_template, template_vars, print_mode=True, output_format=output_format
170
+ )
171
+
172
+ if result["success"]:
173
+ console.print("[green]✓ Command executed successfully[/green]")
174
+ if output_format == "json" and result["stdout"]:
175
+ try:
176
+ output_data = json.loads(result["stdout"])
177
+ console.print(json.dumps(output_data, indent=2, ensure_ascii=False))
178
+ except json.JSONDecodeError:
179
+ console.print(result["stdout"])
180
+ else:
181
+ console.print(result["stdout"])
182
+ else:
183
+ console.print("[red]✗ Command execution failed[/red]")
184
+ if "error" in result:
185
+ console.print(f"Error: {result['error']}")
186
+ if result["stderr"]:
187
+ console.print(f"Stderr: {result['stderr']}")
188
+
189
+ except Exception as e:
190
+ console.print(f"[red]Error executing command: {e}[/red]")
191
+
192
+
193
+ @language.command()
194
+ @click.argument("config_file", type=click.Path(exists=True))
195
+ @click.option("--validate-languages", is_flag=True, help="Validate language codes in config")
196
+ def validate_config(config_file, validate_languages):
197
+ """Validate language configuration in MoAI-ADK config file."""
198
+ try:
199
+ with open(config_file, "r", encoding="utf-8") as f:
200
+ config = json.load(f)
201
+
202
+ console.print(f"[bold]Validating config: {config_file}[/bold]")
203
+
204
+ # Basic structure validation
205
+ if "language" not in config:
206
+ console.print("[yellow]⚠ No 'language' section found in config[/yellow]")
207
+ else:
208
+ lang_config = config["language"]
209
+ if not isinstance(lang_config, dict):
210
+ console.print("[red]✗ 'language' section must be an object[/red]")
211
+ else:
212
+ console.print("[green]✓ Language section structure is valid[/green]")
213
+
214
+ # Check conversation_language
215
+ conv_lang = lang_config.get("conversation_language")
216
+ if conv_lang:
217
+ if conv_lang in get_all_supported_codes():
218
+ console.print(f"[green]✓ conversation_language '{conv_lang}' is supported[/green]")
219
+ else:
220
+ console.print(f"[red]✗ conversation_language '{conv_lang}' is not supported[/red]")
221
+ else:
222
+ console.print("[yellow]⚠ No conversation_language specified[/yellow]")
223
+
224
+ # Check conversation_language_name
225
+ conv_lang_name = lang_config.get("conversation_language_name")
226
+ if conv_lang_name and conv_lang:
227
+ expected_name = get_native_name(conv_lang)
228
+ if conv_lang_name == expected_name:
229
+ console.print("[green]✓ conversation_language_name matches[/green]")
230
+ else:
231
+ warning_msg = (
232
+ f"⚠ conversation_language_name '{conv_lang_name}' doesn't match expected '{expected_name}'"
233
+ )
234
+ console.print(f"[yellow]{warning_msg}[/yellow]")
235
+
236
+ if validate_languages:
237
+ # Scan entire config for language codes
238
+ config_str = json.dumps(config)
239
+ found_codes = []
240
+ for code in get_all_supported_codes():
241
+ if code in config_str:
242
+ found_codes.append(code)
243
+
244
+ if found_codes:
245
+ console.print(f"[blue]Found language codes in config: {', '.join(found_codes)}[/blue]")
246
+
247
+ except Exception as e:
248
+ console.print(f"[red]Error validating config: {e}[/red]")