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
@@ -0,0 +1,218 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Start one or more servers, wait for them to be ready, run a command, then clean up.
4
+
5
+ Usage:
6
+ # Single server
7
+ python scripts/with_server.py --server "npm run dev" --port 5173 -- python automation.py
8
+ python scripts/with_server.py --server "npm start" --port 3000 -- python test.py
9
+
10
+ # Multiple servers with working directories
11
+ python scripts/with_server.py \
12
+ --server "python server.py" --port 3000 --cwd backend \
13
+ --server "npm run dev" --port 5173 --cwd frontend \
14
+ -- python test.py
15
+
16
+ Security Note:
17
+ This script uses shell=False to prevent command injection attacks (CWE-78).
18
+ Use --cwd to specify working directories instead of shell operators like 'cd'.
19
+ """
20
+
21
+ import argparse
22
+ import shlex
23
+ import socket
24
+ import subprocess
25
+ import sys
26
+ import time
27
+ from pathlib import Path
28
+
29
+
30
+ def is_server_ready(port, timeout=30):
31
+ """Wait for server to be ready by polling the port."""
32
+ start_time = time.time()
33
+ while time.time() - start_time < timeout:
34
+ try:
35
+ with socket.create_connection(("localhost", port), timeout=1):
36
+ return True
37
+ except (socket.error, ConnectionRefusedError):
38
+ time.sleep(0.5)
39
+ return False
40
+
41
+
42
+ def parse_command_safely(cmd_string):
43
+ """
44
+ Parse a command string into a list for subprocess execution.
45
+
46
+ Uses shlex.split() for safe command parsing to prevent shell injection.
47
+ This handles quoted arguments properly but does NOT support shell operators
48
+ like &&, ||, |, ;, or redirections.
49
+
50
+ Args:
51
+ cmd_string: Command string to parse
52
+
53
+ Returns:
54
+ List of command arguments suitable for subprocess with shell=False
55
+
56
+ Raises:
57
+ ValueError: If command contains unsupported shell operators
58
+ """
59
+ # Check for shell operators that are not supported
60
+ shell_operators = ["&&", "||", "|", ";", ">", "<", ">>", "<<"]
61
+ for op in shell_operators:
62
+ if op in cmd_string:
63
+ raise ValueError(
64
+ f"Shell operator '{op}' is not supported for security reasons. "
65
+ f"Use --cwd to change working directory instead of 'cd &&'."
66
+ )
67
+
68
+ try:
69
+ return shlex.split(cmd_string)
70
+ except ValueError as e:
71
+ raise ValueError(f"Failed to parse command '{cmd_string}': {e}") from e
72
+
73
+
74
+ def main():
75
+ parser = argparse.ArgumentParser(
76
+ description="Run command with one or more servers",
77
+ formatter_class=argparse.RawDescriptionHelpFormatter,
78
+ epilog="""
79
+ Security:
80
+ This script uses shell=False to prevent command injection attacks (CWE-78).
81
+ Shell operators (&&, ||, |, ;) are not supported for security reasons.
82
+ Use --cwd to specify working directories instead of 'cd &&' patterns.
83
+
84
+ Examples:
85
+ # Single server
86
+ python with_server.py --server "npm run dev" --port 3000 -- pytest
87
+
88
+ # Multiple servers with different working directories
89
+ python with_server.py \\
90
+ --server "python server.py" --port 3000 --cwd backend \\
91
+ --server "npm run dev" --port 5173 --cwd frontend \\
92
+ -- pytest tests/
93
+ """,
94
+ )
95
+ parser.add_argument(
96
+ "--server",
97
+ action="append",
98
+ dest="servers",
99
+ required=True,
100
+ help="Server command (can be repeated)",
101
+ )
102
+ parser.add_argument(
103
+ "--port",
104
+ action="append",
105
+ dest="ports",
106
+ type=int,
107
+ required=True,
108
+ help="Port for each server (must match --server count)",
109
+ )
110
+ parser.add_argument(
111
+ "--cwd",
112
+ action="append",
113
+ dest="cwds",
114
+ default=None,
115
+ help="Working directory for each server (optional, defaults to current directory)",
116
+ )
117
+ parser.add_argument(
118
+ "--timeout",
119
+ type=int,
120
+ default=30,
121
+ help="Timeout in seconds per server (default: 30)",
122
+ )
123
+ parser.add_argument("command", nargs=argparse.REMAINDER, help="Command to run after server(s) ready")
124
+
125
+ args = parser.parse_args()
126
+
127
+ # Remove the '--' separator if present
128
+ if args.command and args.command[0] == "--":
129
+ args.command = args.command[1:]
130
+
131
+ if not args.command:
132
+ print("Error: No command specified to run")
133
+ sys.exit(1)
134
+
135
+ # Parse server configurations
136
+ if len(args.servers) != len(args.ports):
137
+ print("Error: Number of --server and --port arguments must match")
138
+ sys.exit(1)
139
+
140
+ # Handle working directories - default to None (current dir) for each server
141
+ cwds = args.cwds or []
142
+ while len(cwds) < len(args.servers):
143
+ cwds.append(None)
144
+
145
+ if len(cwds) > len(args.servers):
146
+ print("Error: Too many --cwd arguments (must not exceed number of --server arguments)")
147
+ sys.exit(1)
148
+
149
+ servers = []
150
+ for cmd, port, cwd in zip(args.servers, args.ports, cwds):
151
+ # Validate and resolve working directory
152
+ resolved_cwd = None
153
+ if cwd:
154
+ cwd_path = Path(cwd)
155
+ if not cwd_path.exists():
156
+ print(f"Error: Working directory '{cwd}' does not exist")
157
+ sys.exit(1)
158
+ if not cwd_path.is_dir():
159
+ print(f"Error: '{cwd}' is not a directory")
160
+ sys.exit(1)
161
+ resolved_cwd = str(cwd_path.resolve())
162
+
163
+ # Parse command safely
164
+ try:
165
+ cmd_list = parse_command_safely(cmd)
166
+ except ValueError as e:
167
+ print(f"Error: {e}")
168
+ sys.exit(1)
169
+
170
+ servers.append({"cmd": cmd, "cmd_list": cmd_list, "port": port, "cwd": resolved_cwd})
171
+
172
+ server_processes = []
173
+
174
+ try:
175
+ # Start all servers
176
+ for i, server in enumerate(servers):
177
+ cwd_info = f" (cwd: {server['cwd']})" if server["cwd"] else ""
178
+ print(f"Starting server {i + 1}/{len(servers)}: {server['cmd']}{cwd_info}")
179
+
180
+ # Use shell=False with parsed command list to prevent command injection (CWE-78)
181
+ process = subprocess.Popen(
182
+ server["cmd_list"],
183
+ stdout=subprocess.PIPE,
184
+ stderr=subprocess.PIPE,
185
+ cwd=server["cwd"],
186
+ )
187
+ server_processes.append(process)
188
+
189
+ # Wait for this server to be ready
190
+ print(f"Waiting for server on port {server['port']}...")
191
+ if not is_server_ready(server["port"], timeout=args.timeout):
192
+ raise RuntimeError(f"Server failed to start on port {server['port']} within {args.timeout}s")
193
+
194
+ print(f"Server ready on port {server['port']}")
195
+
196
+ print(f"\nAll {len(servers)} server(s) ready")
197
+
198
+ # Run the command
199
+ print(f"Running: {' '.join(args.command)}\n")
200
+ result = subprocess.run(args.command)
201
+ sys.exit(result.returncode)
202
+
203
+ finally:
204
+ # Clean up all servers
205
+ print(f"\nStopping {len(server_processes)} server(s)...")
206
+ for i, process in enumerate(server_processes):
207
+ try:
208
+ process.terminate()
209
+ process.wait(timeout=5)
210
+ except subprocess.TimeoutExpired:
211
+ process.kill()
212
+ process.wait()
213
+ print(f"Server {i + 1} stopped")
214
+ print("All servers stopped")
215
+
216
+
217
+ if __name__ == "__main__":
218
+ main()
@@ -0,0 +1,376 @@
1
+ # Alfred Agent Integration Template
2
+
3
+ ## 4-Step Workflow Integration
4
+
5
+ ### Step 1: Intent Understanding (User Requirement Analysis)
6
+ ```python
7
+ # Pattern for Alfred agent to analyze user requests
8
+ def analyze_user_intent(request: str) -> TestIntent:
9
+ """
10
+ Analyze user's test request to establish AI test strategy
11
+
12
+ Parameters:
13
+ - request: User request ("Test this web app", "Cross-browser testing needed")
14
+
15
+ Returns:
16
+ - TestIntent: Analyzed test intent and strategy
17
+ """
18
+
19
+ intent_patterns = {
20
+ 'comprehensive_testing': [' ', ' ', ' '],
21
+ 'regression_testing': [' ', ' ', ' '],
22
+ 'cross_browser': [' ', ' ', ''],
23
+ 'performance_testing': [' ', ' ', ''],
24
+ 'visual_regression': ['UI ', ' ', ' ']
25
+ }
26
+
27
+ # AI
28
+ analyzed_intent = ai_intent_analyzer.analyze(request, intent_patterns)
29
+
30
+ return TestIntent(
31
+ primary_goal=analyzed_intent['goal'],
32
+ test_types=analyzed_intent['types'],
33
+ priority=analyzed_intent['priority'],
34
+ context=analyzed_intent['context']
35
+ )
36
+ ```
37
+
38
+ ### Step 2: Plan Creation (AI )
39
+ ```python
40
+ # Context7 MCP AI
41
+ async def create_ai_test_plan(intent: TestIntent) -> TestPlan:
42
+ """
43
+ Context7 MCP AI
44
+
45
+ :
46
+ - Playwright
47
+ - AI
48
+ -
49
+ """
50
+
51
+ # Context7 Playwright
52
+ latest_patterns = await context7_client.get_library_docs(
53
+ context7_library_id="/microsoft/playwright",
54
+ topic="enterprise testing automation patterns 2025",
55
+ tokens=5000
56
+ )
57
+
58
+ # AI
59
+ ai_strategy = ai_test_generator.create_strategy(
60
+ intent=intent,
61
+ context7_patterns=latest_patterns,
62
+ best_practices=enterprise_patterns
63
+ )
64
+
65
+ return TestPlan(
66
+ strategy=ai_strategy,
67
+ context7_integration=True,
68
+ ai_enhancements=True,
69
+ enterprise_ready=True
70
+ )
71
+ ```
72
+
73
+ ### Step 3: Task Execution (AI )
74
+ ```python
75
+ # AI
76
+ class AITestExecutor:
77
+ """AI """
78
+
79
+ def __init__(self):
80
+ self.context7_client = Context7Client()
81
+ self.ai_orchestrator = AITestOrchestrator()
82
+
83
+ async def execute_comprehensive_testing(self, test_plan: TestPlan) -> TestResults:
84
+ """
85
+ Context7 MCP AI
86
+
87
+ :
88
+ 1. AI
89
+ 2. Context7
90
+ 3.
91
+ 4. AI
92
+ 5.
93
+ """
94
+
95
+ # Step 1: AI-powered test generation
96
+ smart_tests = await self.ai_orchestrator.generate_smart_tests(test_plan)
97
+
98
+ # Step 2: Context7 pattern application
99
+ enhanced_tests = self.apply_context7_patterns(smart_tests)
100
+
101
+ # Step 3: Execute across browsers
102
+ cross_browser_results = await self.execute_cross_browser(enhanced_tests)
103
+
104
+ # Step 4: Visual regression with AI
105
+ visual_results = await self.ai_visual_regression_test(cross_browser_results)
106
+
107
+ # Step 5: Performance analysis
108
+ performance_results = await self.ai_performance_analysis(visual_results)
109
+
110
+ return TestResults(
111
+ functional=cross_browser_results,
112
+ visual=visual_results,
113
+ performance=performance_results,
114
+ ai_insights=self.generate_ai_insights(performance_results)
115
+ )
116
+ ```
117
+
118
+ ### Step 4: Report & Analysis (AI )
119
+ ```python
120
+ # AI
121
+ async def generate_ai_test_report(results: TestResults) -> AIReport:
122
+ """
123
+ AI Context7
124
+
125
+ :
126
+ - AI
127
+ - Context7
128
+ -
129
+ -
130
+ """
131
+
132
+ # AI
133
+ ai_analysis = await ai_analyzer.analyze_test_results(results)
134
+
135
+ # Context7
136
+ context7_validation = await validate_context7_application(results)
137
+
138
+ #
139
+ recommendations = await ai_recommender.generate_recommendations(
140
+ test_results=results,
141
+ ai_analysis=ai_analysis,
142
+ context7_validation=context7_validation
143
+ )
144
+
145
+ return AIReport(
146
+ summary=create_executive_summary(results),
147
+ detailed_analysis=ai_analysis,
148
+ context7_insights=context7_validation,
149
+ action_items=recommendations,
150
+ next_steps=generate_next_steps(recommendations)
151
+ )
152
+ ```
153
+
154
+ ## Alfred Multi-Agent Coordination
155
+
156
+ ###
157
+ ```python
158
+ # Alfred
159
+ class AlfredAgentCoordinator:
160
+ """Alfred """
161
+
162
+ def __init__(self):
163
+ self.debug_agent = "moai-essentials-debug"
164
+ self.perf_agent = "moai-essentials-perf"
165
+ self.review_agent = "moai-essentials-review"
166
+ self.trust_agent = "moai-foundation-trust"
167
+
168
+ async def coordinate_with_debug_agent(self, test_failures: List[TestFailure]) -> DebugAnalysis:
169
+ """
170
+
171
+
172
+ :
173
+ - AI
174
+ - Context7
175
+ -
176
+ """
177
+
178
+ debug_request = {
179
+ 'failures': test_failures,
180
+ 'context': 'webapp_testing',
181
+ 'ai_enhanced': True,
182
+ 'context7_patterns': True
183
+ }
184
+
185
+ #
186
+ debug_result = await call_agent(self.debug_agent, debug_request)
187
+
188
+ return DebugAnalysis(
189
+ root_causes=debug_result['root_causes'],
190
+ suggested_fixes=debug_result['fixes'],
191
+ confidence_score=debug_result['confidence']
192
+ )
193
+
194
+ async def coordinate_with_performance_agent(self, performance_data: Dict) -> PerformanceOptimization:
195
+ """
196
+
197
+
198
+ :
199
+ -
200
+ -
201
+ -
202
+ """
203
+
204
+ perf_request = {
205
+ 'performance_data': performance_data,
206
+ 'optimization_goals': ['speed', 'efficiency', 'ux'],
207
+ 'context7_best_practices': True
208
+ }
209
+
210
+ optimization_result = await call_agent(self.perf_agent, perf_request)
211
+
212
+ return PerformanceOptimization(
213
+ identified_bottlenecks=optimization_result['bottlenecks'],
214
+ optimization_strategies=optimization_result['strategies'],
215
+ expected_improvements=optimization_result['improvements']
216
+ )
217
+ ```
218
+
219
+ ## Perfect Gentleman
220
+
221
+ ### UX
222
+ ```python
223
+ class KoreanUXOptimizer:
224
+ """Perfect Gentleman UX """
225
+
226
+ def __init__(self, conversation_language="ko"):
227
+ self.conversation_language = conversation_language
228
+ self.style_templates = self.load_style_templates()
229
+
230
+ def generate_korean_response(self, test_results: TestResults) -> KoreanResponse:
231
+ """
232
+
233
+
234
+ :
235
+ -
236
+ -
237
+ -
238
+ """
239
+
240
+ if self.conversation_language == "ko":
241
+ response_template = self.style_templates['korean_formal']
242
+
243
+ return KoreanResponse(
244
+ greeting=response_template['greeting'],
245
+ summary=self.create_korean_summary(test_results),
246
+ detailed_findings=self.create_korean_findings(test_results),
247
+ recommendations=self.create_korean_recommendations(test_results),
248
+ closing=response_template['closing']
249
+ )
250
+ else:
251
+ return self.generate_english_response(test_results)
252
+
253
+ def create_korean_summary(self, results: TestResults) -> str:
254
+ """ """
255
+
256
+ pass_rate = results.calculate_pass_rate()
257
+ status = "" if pass_rate >= 90 else " " if pass_rate >= 70 else ""
258
+
259
+ summary = f"""
260
+
261
+
262
+ : {pass_rate:.1f}%
263
+ : {status}
264
+
265
+ :
266
+ • {len(results.tests)}
267
+ • : {len(results.passed_tests)}
268
+ • : {len(results.failed_tests)}
269
+ • : {len(results.performance_issues)}
270
+
271
+ AI : {self.get_ai_status_description(results.ai_insights)}
272
+ """
273
+
274
+ return summary.strip()
275
+ ```
276
+
277
+ ## TRUST 5
278
+
279
+ ###
280
+ ```python
281
+ class TRUST5QualityAssurance:
282
+ """TRUST 5 """
283
+
284
+ async def validate_test_quality(self, test_results: TestResults) -> QualityReport:
285
+ """
286
+ TRUST 5
287
+
288
+ TRUST 5:
289
+ - Test First:
290
+ - Readable:
291
+ - Unified:
292
+ - Secured:
293
+ - Trackable:
294
+ """
295
+
296
+ quality_scores = {
297
+ 'test_first': self.validate_test_first_principle(test_results),
298
+ 'readable': self.validate_test_readability(test_results),
299
+ 'unified': self.validate_test_unification(test_results),
300
+ 'secured': self.validate_test_security(test_results),
301
+ 'trackable': self.validate_test_traceability(test_results)
302
+ }
303
+
304
+ overall_score = sum(quality_scores.values()) / len(quality_scores)
305
+
306
+ return QualityReport(
307
+ individual_scores=quality_scores,
308
+ overall_score=overall_score,
309
+ compliance_level=self.determine_compliance_level(overall_score),
310
+ improvement_recommendations=self.generate_improvement_recommendations(quality_scores)
311
+ )
312
+ ```
313
+
314
+ ## : Alfred
315
+
316
+ ```python
317
+ # Alfred
318
+ async def alfred_complete_testing_workflow(user_request: str):
319
+ """
320
+ Alfred 4-step AI
321
+
322
+
323
+ """
324
+
325
+ # Step 1: Intent Understanding
326
+ intent = analyze_user_intent(user_request)
327
+
328
+ # Step 2: Plan Creation (with Context7 + AI)
329
+ test_plan = await create_ai_test_plan(intent)
330
+
331
+ # Step 3: Task Execution (AI-orchestrated)
332
+ test_executor = AITestExecutor()
333
+ results = await test_executor.execute_comprehensive_testing(test_plan)
334
+
335
+ # Step 4: Report & Analysis
336
+ report = await generate_ai_test_report(results)
337
+
338
+ # Multi-agent coordination
339
+ coordinator = AlfredAgentCoordinator()
340
+
341
+ if results.has_failures():
342
+ debug_analysis = await coordinator.coordinate_with_debug_agent(results.failures)
343
+ report.debug_insights = debug_analysis
344
+
345
+ if results.has_performance_issues():
346
+ perf_optimization = await coordinator.coordinate_with_performance_agent(results.performance_data)
347
+ report.performance_optimization = perf_optimization
348
+
349
+ # Quality assurance
350
+ qa_validator = TRUST5QualityAssurance()
351
+ quality_report = await qa_validator.validate_test_quality(results)
352
+ report.quality_assurance = quality_report
353
+
354
+ # Korean UX optimization
355
+ ux_optimizer = KoreanUXOptimizer()
356
+ korean_report = ux_optimizer.generate_korean_response(results)
357
+
358
+ return {
359
+ 'technical_report': report,
360
+ 'user_friendly_report': korean_report,
361
+ 'next_actions': generate_next_actions(report),
362
+ 'alfred_workflow_completed': True
363
+ }
364
+
365
+ #
366
+ if __name__ == "__main__":
367
+ #
368
+ user_input = " "
369
+
370
+ # Alfred
371
+ result = await alfred_complete_testing_workflow(user_input)
372
+
373
+ #
374
+ print(" Alfred AI ")
375
+ print(result['user_friendly_report'].summary)
376
+ ```