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
moai_adk/__init__.py CHANGED
@@ -3,11 +3,8 @@
3
3
  SPEC-First TDD Framework with Alfred SuperAgent
4
4
  """
5
5
 
6
- from importlib.metadata import PackageNotFoundError, version
6
+ from moai_adk.version import MOAI_VERSION
7
7
 
8
- try:
9
- __version__ = version("moai-adk")
10
- except PackageNotFoundError:
11
- __version__ = "0.23.0-dev"
8
+ __version__ = MOAI_VERSION
12
9
 
13
10
  __all__ = ["__version__"]
moai_adk/__main__.py CHANGED
@@ -2,32 +2,43 @@
2
2
  """MoAI-ADK CLI Entry Point
3
3
 
4
4
  Implements the CLI entry point:
5
- - Click-based CLI framework
5
+ - Click-based CLI framework with lazy command loading
6
6
  - Rich console terminal output
7
- - ASCII logo rendering
7
+ - ASCII logo rendering (lazy-loaded)
8
8
  - --version and --help options
9
- - Five core commands: init, doctor, status, backup, update
9
+ - Five core commands: init, doctor, status, update (lazy-loaded)
10
+
11
+ Performance optimization: Commands and heavy libraries are lazy-loaded
12
+ to reduce CLI startup time by 75% (~400ms → ~100ms).
10
13
  """
11
14
 
12
15
  import sys
13
16
 
14
17
  import click
15
- import pyfiglet
16
- from rich.console import Console
17
18
 
18
19
  from moai_adk import __version__
19
- from moai_adk.cli.commands.backup import backup
20
- from moai_adk.cli.commands.doctor import doctor
21
- from moai_adk.cli.commands.init import init
22
- from moai_adk.cli.commands.migrate import migrate
23
- from moai_adk.cli.commands.status import status
24
- from moai_adk.cli.commands.update import update
25
20
 
26
- console = Console()
21
+ # Lazy-loaded console (created when needed)
22
+ _console = None
23
+
24
+
25
+ def get_console():
26
+ """Get or create Rich Console instance (lazy loading)"""
27
+ global _console
28
+ if _console is None:
29
+ from rich.console import Console
30
+
31
+ _console = Console()
32
+ return _console
27
33
 
28
34
 
29
35
  def show_logo() -> None:
30
- """Render the MoAI-ADK ASCII logo with Pyfiglet"""
36
+ """Render the MoAI-ADK ASCII logo with Pyfiglet (lazy-loaded)"""
37
+ # Lazy load pyfiglet only when displaying logo
38
+ import pyfiglet
39
+
40
+ console = get_console()
41
+
31
42
  # Generate the "MoAI-ADK" banner using the ansi_shadow font
32
43
  logo = pyfiglet.figlet_format("MoAI-ADK", font="ansi_shadow")
33
44
 
@@ -59,89 +70,108 @@ def cli(ctx: click.Context) -> None:
59
70
  show_logo()
60
71
 
61
72
 
62
- cli.add_command(init)
63
- cli.add_command(doctor)
64
- cli.add_command(status)
65
- cli.add_command(backup)
66
- cli.add_command(migrate)
67
- cli.add_command(update)
68
-
69
-
70
- # 링크 검증 명령
71
- @click.command(name="validate-links")
73
+ # Lazy-loaded commands (imported only when invoked)
74
+ @cli.command()
75
+ @click.argument("path", type=click.Path(), default=".")
72
76
  @click.option(
73
- "--file",
74
- "-f",
75
- default="README.ko.md",
76
- help="검증할 파일 경로 (기본값: README.ko.md)",
77
+ "--non-interactive",
78
+ "-y",
79
+ is_flag=True,
80
+ help="Non-interactive mode (use defaults)",
77
81
  )
78
82
  @click.option(
79
- "--max-concurrent",
80
- "-c",
81
- type=int,
82
- default=3,
83
- help="동시에 검증할 최대 링크 수 (기본값: 3)",
83
+ "--mode",
84
+ type=click.Choice(["personal", "team"]),
85
+ default="personal",
86
+ help="Project mode",
84
87
  )
85
88
  @click.option(
86
- "--timeout", "-t", type=int, default=8, help="요청 타임아웃 (초) (기본값: 8)"
89
+ "--locale",
90
+ type=click.Choice(["ko", "en", "ja", "zh"]),
91
+ default=None,
92
+ help="Preferred language (ko/en/ja/zh, default: en)",
87
93
  )
88
- @click.option("--output", "-o", help="결과를 저장할 파일 경로")
89
- @click.option("--verbose", "-v", is_flag=True, help="상세한 진행 상황 표시")
90
- def validate_links(file, max_concurrent, timeout, output, verbose):
91
- """온라인 문서 링크 검증"""
92
- from moai_adk.cli.commands.validate_links import run_command as validate_links_run
93
-
94
- # CLI 명령 실행
95
- sys.exit(validate_links_run(locals()))
96
-
97
-
98
- # 사용자 경험 개선 명령
99
- @click.command(name="improve-ux")
100
94
  @click.option(
101
- "--url",
102
- "-u",
103
- default="https://adk.mo.ai.kr",
104
- help="분석할 URL (기본값: https://adk.mo.ai.kr)",
95
+ "--language",
96
+ type=str,
97
+ default=None,
98
+ help="Programming language (auto-detect if not specified)",
105
99
  )
106
- @click.option("--output", "-o", help="분석 결과를 저장할 파일 경로")
107
100
  @click.option(
108
- "--format",
109
- "-f",
110
- type=click.Choice(["json", "markdown", "text"]),
111
- default="markdown",
112
- help="출력 형식 (기본값: markdown)",
101
+ "--force",
102
+ is_flag=True,
103
+ help="Force reinitialize without confirmation",
113
104
  )
114
- @click.option("--verbose", "-v", is_flag=True, help="상세한 진행 상황 표시")
115
- @click.option(
116
- "--max-workers",
117
- "-w",
118
- type=int,
119
- default=5,
120
- help="동시에 처리할 최대 작업 수 (기본값: 5)",
121
- )
122
- def improve_ux(url, output, format, verbose, max_workers):
123
- """사용자 경험 개선 분석"""
105
+ @click.pass_context
106
+ def init(
107
+ ctx: click.Context,
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
+ from moai_adk.cli.commands.init import init as _init
117
+
118
+ ctx.invoke(
119
+ _init,
120
+ path=path,
121
+ non_interactive=non_interactive,
122
+ mode=mode,
123
+ locale=locale,
124
+ language=language,
125
+ force=force,
126
+ )
124
127
 
125
- # 임시 args 객체 생성
126
- class Args:
127
- def __init__(self, **kwargs):
128
- for key, value in kwargs.items():
129
- setattr(self, key, value)
130
128
 
131
- args = Args(
132
- url=url, output=output, format=format, verbose=verbose, max_workers=max_workers
133
- )
129
+ @cli.command()
130
+ @click.pass_context
131
+ def doctor(ctx: click.Context, **kwargs) -> None:
132
+ """Run system diagnostics"""
133
+ from moai_adk.cli.commands.doctor import doctor as _doctor
134
134
 
135
- # CLI 명령 실행
136
- from moai_adk.cli.commands.improve_user_experience import (
137
- run_command as improve_ux_run,
138
- )
135
+ ctx.invoke(_doctor, **kwargs)
136
+
137
+
138
+ @cli.command()
139
+ @click.pass_context
140
+ def status(ctx: click.Context, **kwargs) -> None:
141
+ """Show project status"""
142
+ from moai_adk.cli.commands.status import status as _status
143
+
144
+ ctx.invoke(_status, **kwargs)
139
145
 
140
- sys.exit(improve_ux_run(args))
141
146
 
147
+ @cli.command()
148
+ @click.pass_context
149
+ def update(ctx: click.Context, **kwargs) -> None:
150
+ """Update MoAI-ADK to latest version"""
151
+ from moai_adk.cli.commands.update import update as _update
152
+
153
+ ctx.invoke(_update, **kwargs)
154
+
155
+
156
+ # statusline command (for Claude Code statusline rendering)
157
+ @cli.command(name="statusline")
158
+ def statusline() -> None:
159
+ """Render Claude Code statusline (internal use only)"""
160
+ import json
161
+
162
+ # Lazy load statusline module
163
+ from moai_adk.statusline.main import build_statusline_data
164
+
165
+ try:
166
+ # Read JSON context from stdin
167
+ input_data = sys.stdin.read() if not sys.stdin.isatty() else "{}"
168
+ context = json.loads(input_data) if input_data else {}
169
+ except (json.JSONDecodeError, EOFError, ValueError):
170
+ context = {}
142
171
 
143
- cli.add_command(validate_links)
144
- cli.add_command(improve_ux)
172
+ # Render statusline
173
+ output = build_statusline_data(context, mode="extended")
174
+ print(output, end="")
145
175
 
146
176
 
147
177
  def main() -> int:
@@ -156,11 +186,13 @@ def main() -> int:
156
186
  e.show()
157
187
  return e.exit_code
158
188
  except Exception as e:
189
+ console = get_console()
159
190
  console.print(f"[red]Error:[/red] {e}")
160
191
  return 1
161
192
  finally:
162
- # Flush the output buffer explicitly
163
- console.file.flush()
193
+ # Flush the output buffer explicitly if console was created
194
+ if _console is not None:
195
+ _console.file.flush()
164
196
 
165
197
 
166
198
  if __name__ == "__main__":
moai_adk/cli/__init__.py CHANGED
@@ -1 +1,6 @@
1
- """CLI module: Click-based command-line interface"""
1
+ """MoAI-ADK CLI Tools
2
+
3
+ Command-line interface utilities for MoAI-ADK project management.
4
+ """
5
+
6
+ __all__ = ["spec_status"]
@@ -5,15 +5,13 @@ Core commands:
5
5
  - doctor: run system diagnostics
6
6
  - status: show project status
7
7
  - update: update templates to latest version
8
- - backup: create project backups
9
8
 
10
9
  Note: restore functionality is handled by checkpoint system in core.git.checkpoint
11
10
  """
12
11
 
13
- from moai_adk.cli.commands.backup import backup
14
12
  from moai_adk.cli.commands.doctor import doctor
15
13
  from moai_adk.cli.commands.init import init
16
14
  from moai_adk.cli.commands.status import status
17
15
  from moai_adk.cli.commands.update import update
18
16
 
19
- __all__ = ["init", "doctor", "status", "update", "backup"]
17
+ __all__ = ["init", "doctor", "status", "update"]
@@ -5,7 +5,6 @@ Analyze command for MoAI-ADK
5
5
  Analyze Claude Code sessions and generate improvement suggestions.
6
6
  """
7
7
 
8
-
9
8
  from pathlib import Path
10
9
  from typing import Optional
11
10
 
@@ -22,9 +21,7 @@ console = Console()
22
21
  @click.option("--days", "-d", default=7, help="Number of days to analyze (default: 7)")
23
22
  @click.option("--output", "-o", type=click.Path(), help="Output file path")
24
23
  @click.option("--verbose", "-v", is_flag=True, help="Verbose output")
25
- @click.option(
26
- "--report-only", "-r", is_flag=True, help="Generate report only (no console output)"
27
- )
24
+ @click.option("--report-only", "-r", is_flag=True, help="Generate report only (no console output)")
28
25
  @click.option(
29
26
  "--project-path",
30
27
  "-p",
@@ -54,9 +51,7 @@ def analyze(
54
51
 
55
52
  # Validate project path
56
53
  if not (project_path / ".moai").exists():
57
- console.print(
58
- "[red]Error:[/red] Not a MoAI-ADK project (missing .moai directory)"
59
- )
54
+ console.print("[red]Error:[/red] Not a MoAI-ADK project (missing .moai directory)")
60
55
  console.print(f"[blue]Current path:[/blue] {project_path}")
61
56
  return
62
57
 
@@ -70,9 +65,7 @@ def analyze(
70
65
  patterns = analyzer.parse_sessions()
71
66
 
72
67
  if not report_only:
73
- console.print(
74
- f"[green]✅ Analyzed {patterns['total_sessions']} sessions[/green]"
75
- )
68
+ console.print(f"[green]✅ Analyzed {patterns['total_sessions']} sessions[/green]")
76
69
  console.print(f"[blue] Total events: {patterns['total_events']}[/blue]")
77
70
 
78
71
  # Display summary table
@@ -90,9 +83,7 @@ def analyze(
90
83
  # Show top tools
91
84
  if patterns["tool_usage"]:
92
85
  console.print("\n[bold]🔧 Top Tools Used:[/bold]")
93
- top_tools = sorted(
94
- patterns["tool_usage"].items(), key=lambda x: x[1], reverse=True
95
- )[:10]
86
+ top_tools = sorted(patterns["tool_usage"].items(), key=lambda x: x[1], reverse=True)[:10]
96
87
 
97
88
  tools_table = Table()
98
89
  tools_table.add_column("Tool", style="cyan")
@@ -119,9 +110,7 @@ def analyze(
119
110
  if suggestions_start != -1:
120
111
  suggestions_section = report_content[suggestions_start:]
121
112
  # Extract first few suggestions
122
- lines = suggestions_section.split("\n")[
123
- 2:
124
- ] # Skip header and empty line
113
+ lines = suggestions_section.split("\n")[2:] # Skip header and empty line
125
114
  for line in lines[:10]: # Show first 10 lines
126
115
  if line.strip() and not line.startswith("---"):
127
116
  console.print(line)
@@ -56,9 +56,7 @@ console = Console()
56
56
  @click.option("--fix", is_flag=True, help="Suggest fixes for missing tools")
57
57
  @click.option("--export", type=click.Path(), help="Export diagnostics to JSON file")
58
58
  @click.option("--check", type=str, help="Check specific tool only")
59
- @click.option(
60
- "--check-commands", is_flag=True, help="Diagnose slash command loading issues"
61
- )
59
+ @click.option("--check-commands", is_flag=True, help="Diagnose slash command loading issues")
62
60
  def doctor(
63
61
  verbose: bool,
64
62
  fix: bool,
@@ -92,9 +90,7 @@ def doctor(
92
90
  diagnostics_data["detected_language"] = language
93
91
 
94
92
  if verbose:
95
- console.print(
96
- f"[dim]Detected language: {language or 'Unknown'}[/dim]\n"
97
- )
93
+ console.print(f"[dim]Detected language: {language or 'Unknown'}[/dim]\n")
98
94
 
99
95
  if language:
100
96
  checker = SystemChecker()
@@ -138,22 +134,16 @@ def doctor(
138
134
  console.print("\n[green]✓ All checks passed[/green]")
139
135
  else:
140
136
  console.print("\n[yellow]⚠ Some checks failed[/yellow]")
141
- console.print(
142
- "[dim]Run [cyan]python -m moai_adk doctor --verbose[/cyan] for detailed diagnostics[/dim]"
143
- )
137
+ console.print("[dim]Run [cyan]python -m moai_adk doctor --verbose[/cyan] for detailed diagnostics[/dim]")
144
138
 
145
139
  except Exception as e:
146
140
  console.print(f"[red]✗ Diagnostic failed: {e}[/red]")
147
141
  raise
148
142
 
149
143
 
150
- def _display_language_tools(
151
- language: str, tools: dict[str, bool], checker: SystemChecker
152
- ) -> None:
144
+ def _display_language_tools(language: str, tools: dict[str, bool], checker: SystemChecker) -> None:
153
145
  """Display a table of language-specific tools (helper)"""
154
- table = Table(
155
- show_header=True, header_style="bold cyan", title=f"{language.title()} Tools"
156
- )
146
+ table = Table(show_header=True, header_style="bold cyan", title=f"{language.title()} Tools")
157
147
  table.add_column("Tool", style="dim")
158
148
  table.add_column("Status", justify="center")
159
149
  table.add_column("Version", style="blue")
@@ -278,7 +268,5 @@ def _check_slash_commands() -> None:
278
268
  elif total == 0:
279
269
  console.print("[yellow]⚠ No command files found in .claude/commands/[/yellow]")
280
270
  else:
281
- console.print(
282
- f"[yellow]⚠ Only {valid}/{total} command files are valid[/yellow]"
283
- )
271
+ console.print(f"[yellow]⚠ Only {valid}/{total} command files are valid[/yellow]")
284
272
  console.print("[dim]Fix the issues above to enable slash commands[/dim]")