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
@@ -1,413 +0,0 @@
1
- name: MoAI-ADK GitFlow Automation
2
-
3
- # MoAI-ADK 3-stage pipeline: spec → build → sync
4
- # Full GitFlow transparency — no Git expertise needed
5
-
6
- on:
7
- push:
8
- branches: [develop, "feature/**"]
9
- pull_request:
10
- types: [opened, ready_for_review, converted_to_draft]
11
-
12
- jobs:
13
- moai-pipeline:
14
- name: 🗿 MoAI-ADK Pipeline
15
- runs-on: ubuntu-latest
16
-
17
- strategy:
18
- matrix:
19
- python-version: ["3.11", "3.12", "3.13"]
20
-
21
- steps:
22
- - name: Checkout
23
- uses: actions/checkout@v4
24
-
25
- # Multi-language toolchains (conditional)
26
- - name: Setup Python
27
- if: ${{ hashFiles('requirements.txt') != '' || hashFiles('pyproject.toml') != '' || hashFiles('setup.py') != '' }}
28
- uses: actions/setup-python@v5
29
- with:
30
- python-version: ${{ matrix.python-version }}
31
-
32
- - name: Setup Node.js
33
- if: ${{ hashFiles('package.json') != '' }}
34
- uses: actions/setup-node@v4
35
- with:
36
- node-version: "22"
37
-
38
- - name: Setup Bun
39
- if: ${{ hashFiles('bun.lockb') != '' }}
40
- uses: oven-sh/setup-bun@v2
41
- with:
42
- bun-version: "latest"
43
-
44
- - name: Setup Go
45
- if: ${{ hashFiles('go.mod') != '' }}
46
- uses: actions/setup-go@v5
47
- with:
48
- go-version: "1.23"
49
-
50
- - name: Setup Rust
51
- if: ${{ hashFiles('Cargo.toml') != '' }}
52
- uses: dtolnay/rust-toolchain@stable
53
-
54
- - name: Setup Java
55
- if: ${{ hashFiles('pom.xml') != '' || hashFiles('build.gradle') != '' || hashFiles('build.gradle.kts') != '' }}
56
- uses: actions/setup-java@v4
57
- with:
58
- distribution: "temurin"
59
- java-version: "21"
60
-
61
- - name: Setup .NET
62
- if: ${{ hashFiles('**/*.sln') != '' || hashFiles('**/*.csproj') != '' }}
63
- uses: actions/setup-dotnet@v4
64
- with:
65
- dotnet-version: "8.0.x"
66
-
67
- - name: Setup Ruby
68
- if: ${{ hashFiles('Gemfile') != '' }}
69
- uses: ruby/setup-ruby@v1
70
- with:
71
- ruby-version: "3.3"
72
- bundler-cache: true
73
-
74
- - name: Setup Flutter
75
- if: ${{ hashFiles('pubspec.yaml') != '' }}
76
- uses: subosito/flutter-action@v2
77
- with:
78
- flutter-version: "3.24.x"
79
- channel: "stable"
80
-
81
- - name: Setup Swift (Xcode)
82
- if: ${{ hashFiles('Package.swift') != '' || hashFiles('**/*.xcodeproj') != '' || hashFiles('**/*.xcworkspace') != '' }}
83
- uses: maxim-lobanov/setup-xcode@v1
84
- with:
85
- xcode-version: "latest-stable"
86
-
87
- - name: Setup Kotlin
88
- if: ${{ hashFiles('build.gradle.kts') != '' || hashFiles('settings.gradle.kts') != '' }}
89
- uses: actions/setup-java@v4
90
- with:
91
- distribution: "temurin"
92
- java-version: "21"
93
-
94
- # TRUST 5 Principles — automated validation
95
- # Note: Validation is handled by TypeScript-based tools
96
- - name: 🧭 TRUST 5 Principles Check
97
- run: |
98
- echo "✅ TRUST validation is performed by TypeScript-based tools"
99
- echo " - Uses @agent-trust-checker"
100
- echo " - Leverages TypeScript hook system"
101
-
102
- # Ignore test failures on Draft PRs; fail CI on Ready PRs
103
- - name: Run language-aware tests
104
- run: |
105
- set -e
106
- ALLOW_FAILURE="${{ github.event.pull_request.draft == true }}"
107
- echo "🔎 Running language-aware tests (Draft PR: allow failure = $ALLOW_FAILURE)"
108
-
109
- # Python tests
110
- if [ -f "requirements.txt" ] || [ -f "pyproject.toml" ] || [ -f "setup.py" ]; then
111
- echo "➡️ Python tests"
112
- pip install -q pytest pytest-cov 2>/dev/null || true
113
- pip install -e . 2>/dev/null || pip install -e .[dev] || true
114
- if [ "$ALLOW_FAILURE" = "true" ]; then
115
- pytest --cov --cov-report=term-missing --no-cov-fail-under || true
116
- else
117
- pytest --cov --cov-report=term-missing --no-cov-fail-under || true
118
- fi
119
- fi
120
-
121
- # Node.js/Bun tests
122
- if [ -f "package.json" ]; then
123
- echo "➡️ Node.js/Bun tests"
124
- if [ -f "bun.lockb" ]; then
125
- bun install --frozen-lockfile || bun install
126
- if [ "$ALLOW_FAILURE" = "true" ]; then
127
- bun test || true
128
- else
129
- bun test
130
- fi
131
- else
132
- npm ci --prefer-offline || npm install
133
- if [ "$ALLOW_FAILURE" = "true" ]; then
134
- npm test --if-present -- --coverage || true
135
- else
136
- npm test --if-present -- --coverage
137
- fi
138
- fi
139
- fi
140
-
141
- # Go tests
142
- if [ -f "go.mod" ]; then
143
- echo "➡️ Go tests"
144
- if [ "$ALLOW_FAILURE" = "true" ]; then
145
- go test -v -cover ./... || true
146
- else
147
- go test -v -cover ./...
148
- fi
149
- fi
150
-
151
- # Rust tests
152
- if [ -f "Cargo.toml" ]; then
153
- echo "➡️ Rust tests"
154
- if [ "$ALLOW_FAILURE" = "true" ]; then
155
- cargo test --all --locked || cargo test || true
156
- else
157
- cargo test --all --locked || cargo test
158
- fi
159
- fi
160
-
161
- # Java tests (Maven)
162
- if [ -f "pom.xml" ]; then
163
- echo "➡️ Java tests (Maven)"
164
- if [ "$ALLOW_FAILURE" = "true" ]; then
165
- mvn -q -DskipTests=false test || true
166
- else
167
- mvn -q -DskipTests=false test
168
- fi
169
- fi
170
-
171
- # Java/Kotlin tests (Gradle)
172
- if [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
173
- echo "➡️ Java/Kotlin tests (Gradle)"
174
- if [ "$ALLOW_FAILURE" = "true" ]; then
175
- ./gradlew test || gradle test || true
176
- else
177
- ./gradlew test || gradle test
178
- fi
179
- fi
180
-
181
- # .NET tests
182
- if compgen -G "**/*.sln" > /dev/null || compgen -G "**/*.csproj" > /dev/null; then
183
- echo "➡️ .NET tests"
184
- if [ "$ALLOW_FAILURE" = "true" ]; then
185
- dotnet test || true
186
- else
187
- dotnet test
188
- fi
189
- fi
190
-
191
- # Ruby tests
192
- if [ -f "Gemfile" ]; then
193
- echo "➡️ Ruby tests"
194
- if [ "$ALLOW_FAILURE" = "true" ]; then
195
- bundle exec rspec || bundle exec rake test || true
196
- else
197
- bundle exec rspec || bundle exec rake test
198
- fi
199
- fi
200
-
201
- # Flutter tests
202
- if [ -f "pubspec.yaml" ]; then
203
- echo "➡️ Flutter tests"
204
- flutter pub get
205
- if [ "$ALLOW_FAILURE" = "true" ]; then
206
- flutter test || true
207
- else
208
- flutter test
209
- fi
210
- fi
211
-
212
- # Swift tests
213
- if [ -f "Package.swift" ]; then
214
- echo "➡️ Swift tests (SPM)"
215
- if [ "$ALLOW_FAILURE" = "true" ]; then
216
- swift test || true
217
- else
218
- swift test
219
- fi
220
- elif compgen -G "**/*.xcodeproj" > /dev/null || compgen -G "**/*.xcworkspace" > /dev/null; then
221
- echo "➡️ Swift tests (Xcode)"
222
- # Xcode projects require a scheme; run conditionally
223
- if [ "$ALLOW_FAILURE" = "true" ]; then
224
- echo "⚠️ Xcode tests require a configured scheme"
225
- else
226
- echo "⚠️ Xcode tests require a configured scheme"
227
- fi
228
- fi
229
-
230
-
231
- # Run per-branch stages
232
- - name: 📝 SPEC Stage (feature branch)
233
- if: startsWith(github.ref, 'refs/heads/feature/')
234
- run: |
235
- echo "🌿 Feature branch: SPEC validation stage"
236
- echo "- spec-builder agent authors EARS spec"
237
- echo "- Draft PR is created automatically"
238
-
239
- - name: 🔴🟢🔄 BUILD Stage (Draft PR)
240
- if: github.event.pull_request.draft == true
241
- run: |
242
- echo "📝 Draft PR: TDD implementation stage"
243
- echo "- code-builder agent runs RED-GREEN-REFACTOR"
244
- echo "- Validate TRUST 5 Principles compliance"
245
-
246
- - name: 📚 SYNC Stage (Ready PR)
247
- if: github.event.pull_request.draft == false && github.event.action == 'ready_for_review'
248
- run: |
249
- echo "✅ Ready PR: documentation sync stage"
250
- echo "- doc-syncer agent synchronizes Living Documents"
251
- echo "- PR is ready for review"
252
-
253
- # Final result report
254
- - name: 📊 MoAI Pipeline Complete
255
- run: |
256
- echo "🗿 MoAI-ADK GitFlow automation complete"
257
- echo "✨ Professional workflow without needing to know Git"
258
-
259
- # ==============================================================================
260
- # PowerShell Cross-Platform Testing (Windows)
261
- # ==============================================================================
262
-
263
- powershell-tests:
264
- name: 🪟 PowerShell Cross-Platform Tests
265
- runs-on: windows-latest
266
- if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/heads/develop') || startsWith(github.ref, 'refs/heads/feature/')
267
-
268
- strategy:
269
- matrix:
270
- python-version: ["3.11", "3.12", "3.13"]
271
-
272
- steps:
273
- - name: Checkout
274
- uses: actions/checkout@v4
275
-
276
- - name: Setup Python
277
- uses: actions/setup-python@v5
278
- with:
279
- python-version: ${{ matrix.python-version }}
280
-
281
- - name: Install PowerShell Core
282
- shell: powershell
283
- run: |
284
- # PowerShell Core already installed on Windows runner
285
- pwsh -NoProfile -Command "Write-Host 'PowerShell Version:' (pwsh --version)"
286
-
287
- - name: Install Package Dependencies
288
- shell: powershell
289
- run: |
290
- python -m pip install --upgrade pip
291
- pip install -e ".[dev]" --quiet
292
-
293
- - name: Run PowerShell Package Validation Tests
294
- shell: powershell
295
- run: |
296
-
297
- $ErrorActionPreference = "Continue"
298
- $testResults = @{}
299
-
300
- Write-Host "🔧 PowerShell Cross-Platform Test Suite" -ForegroundColor Cyan
301
- Write-Host "Timestamp: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor Gray
302
- Write-Host ""
303
-
304
- # Test 1: Package Installation
305
- Write-Host "[TEST] Package Installation" -ForegroundColor Yellow
306
- try {
307
- if (python -c "import moai_adk; print('OK')" 2>&1 | Select-String "OK") {
308
- Write-Host "✓ Package installation verified" -ForegroundColor Green
309
- $testResults["Package Installation"] = $true
310
- } else {
311
- Write-Host "✗ Package installation failed" -ForegroundColor Red
312
- $testResults["Package Installation"] = $false
313
- }
314
- } catch {
315
- Write-Host "✗ Package test error: $_" -ForegroundColor Red
316
- $testResults["Package Installation"] = $false
317
- }
318
-
319
- # Test 2: Module Loading
320
- Write-Host "[TEST] Module Loading" -ForegroundColor Yellow
321
- try {
322
- python @"
323
- import moai_adk
324
- from moai_adk import cli, core, templates
325
- modules = ['cli', 'core', 'templates']
326
- for mod in modules:
327
- print(f'✓ {mod} module loaded')
328
- "@ 2>&1 | Out-Null
329
- Write-Host "✓ All modules loaded successfully" -ForegroundColor Green
330
- $testResults["Module Loading"] = $true
331
- } catch {
332
- Write-Host "✗ Module loading failed: $_" -ForegroundColor Red
333
- $testResults["Module Loading"] = $false
334
- }
335
-
336
- # Test 3: Command Availability (Windows-specific)
337
- Write-Host "[TEST] Command Availability" -ForegroundColor Yellow
338
- $commands = @("python", "pip", "pytest")
339
- $allAvailable = $true
340
- foreach ($cmd in $commands) {
341
- if ((Get-Command $cmd -ErrorAction SilentlyContinue) -ne $null) {
342
- Write-Host "✓ $cmd available" -ForegroundColor Green
343
- } else {
344
- Write-Host "✗ $cmd not found" -ForegroundColor Red
345
- $allAvailable = $false
346
- }
347
- }
348
- $testResults["Command Availability"] = $allAvailable
349
-
350
- # Test 4: Cross-Platform Script Compatibility
351
- Write-Host "[TEST] Script Compatibility Check" -ForegroundColor Yellow
352
- try {
353
- # Test JSON parsing (Windows PowerShell compatibility)
354
- $testJson = @{
355
- "version" = "0.7.0"
356
- "language" = "python"
357
- "platform" = "windows"
358
- } | ConvertTo-Json
359
-
360
- $parsed = $testJson | ConvertFrom-Json
361
- if ($parsed.version -eq "0.7.0") {
362
- Write-Host "✓ JSON parsing works (Windows compatibility)" -ForegroundColor Green
363
- $testResults["Script Compatibility"] = $true
364
- } else {
365
- Write-Host "✗ JSON parsing failed" -ForegroundColor Red
366
- $testResults["Script Compatibility"] = $false
367
- }
368
- } catch {
369
- Write-Host "✗ Script compatibility test error: $_" -ForegroundColor Red
370
- $testResults["Script Compatibility"] = $false
371
- }
372
-
373
- # Final Report
374
- Write-Host ""
375
- Write-Host ("=" * 70) -ForegroundColor Cyan
376
- Write-Host "Test Results Summary" -ForegroundColor Cyan
377
- Write-Host ("=" * 70) -ForegroundColor Cyan
378
-
379
- $passed = 0
380
- $failed = 0
381
-
382
- foreach ($test in $testResults.GetEnumerator()) {
383
- $status = if ($test.Value) { "✓ PASS" } else { "✗ FAIL" }
384
- $color = if ($test.Value) { "Green" } else { "Red" }
385
- Write-Host "$($test.Name): $status" -ForegroundColor $color
386
-
387
- if ($test.Value) { $passed++ } else { $failed++ }
388
- }
389
-
390
- Write-Host ""
391
- Write-Host "Results: $passed passed, $failed failed"
392
-
393
- if ($failed -gt 0) {
394
- Write-Host ""
395
- Write-Host "Some tests failed! ✗" -ForegroundColor Red
396
- exit 1
397
- } else {
398
- Write-Host ""
399
- Write-Host "All tests passed! ✓" -ForegroundColor Green
400
- exit 0
401
- }
402
-
403
- - name: Run pytest Tests (Windows)
404
- shell: powershell
405
- run: |
406
- pytest tests/ -v --tb=short --cov=src/moai_adk --cov-report=term-missing
407
- continue-on-error: ${{ github.event.pull_request.draft == true }}
408
-
409
- - name: 📊 PowerShell Tests Complete
410
- run: |
411
- Write-Host "🪟 PowerShell cross-platform tests complete" -ForegroundColor Green
412
- shell: powershell
413
-
@@ -1,100 +0,0 @@
1
- name: MoAI-ADK Auto Release
2
-
3
- # main 브랜치에 릴리즈 커밋이 푸시되었을 때 자동으로 Release 생성
4
- on:
5
- push:
6
- branches:
7
- - main
8
- # 버전 태그가 푸시될 때만 실행 (e.g., v0.6.0)
9
- tags:
10
- - "v*.*.*"
11
-
12
- jobs:
13
- create-release:
14
- name: 🚀 Create GitHub Release
15
- runs-on: ubuntu-latest
16
- # Release는 이미 태그되었을 때만 생성하도록 가드
17
- if: startsWith(github.ref, 'refs/tags/v')
18
-
19
- steps:
20
- - name: 📥 Checkout code
21
- uses: actions/checkout@v4
22
- with:
23
- fetch-depth: 0 # 전체 히스토리 필요 (changelog 생성용)
24
-
25
- - name: 📖 Generate release notes from commits
26
- id: release_notes
27
- run: |
28
- # 마지막 두 태그 사이의 변경사항 추출
29
- PREV_TAG=$(git describe --tags --abbrev=0 "${{ github.ref }}"^ 2>/dev/null || echo "")
30
- CURRENT_TAG="${{ github.ref }}"
31
- CURRENT_TAG=${CURRENT_TAG#refs/tags/}
32
-
33
- if [ -z "$PREV_TAG" ]; then
34
- echo "📝 첫 릴리즈입니다"
35
- COMMITS=$(git log --oneline | head -50)
36
- else
37
- echo "📝 $PREV_TAG 이후 변경사항:"
38
- COMMITS=$(git log $PREV_TAG..$CURRENT_TAG --oneline)
39
- fi
40
-
41
- # Release notes 생성
42
- RELEASE_NOTES=$(cat << EOF
43
- ## 🚀 MoAI-ADK Release $CURRENT_TAG
44
-
45
- ### 📝 변경사항
46
-
47
- \`\`\`
48
- $COMMITS
49
- \`\`\`
50
-
51
- ### 🧪 품질 검증
52
- ✅ 테스트 통과
53
- ✅ 린트 검사 통과
54
- ✅ 타입 체크 통과
55
- ✅ 보안 검사 통과
56
-
57
- ### 📥 설치 방법
58
-
59
- #### uv 사용 (권장)
60
- \`\`\`bash
61
- uv tool install moai-adk==${CURRENT_TAG#v}
62
- \`\`\`
63
-
64
- #### pip 사용
65
- \`\`\`bash
66
- pip install moai-adk==${CURRENT_TAG#v}
67
- \`\`\`
68
-
69
- ---
70
-
71
- 🤖 Generated with [Claude Code](https://claude.com/claude-code)
72
-
73
- Co-Authored-By: Claude <noreply@anthropic.com>
74
- EOF
75
- )
76
-
77
- # 줄바꿈이 있는 환경변수 처리 (GitHub Actions)
78
- {
79
- echo "notes<<RELEASE_EOF"
80
- echo "$RELEASE_NOTES"
81
- echo "RELEASE_EOF"
82
- } >> $GITHUB_OUTPUT
83
-
84
- - name: 🎯 Create GitHub Release
85
- uses: actions/create-release@v1
86
- id: create_release
87
- env:
88
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
89
- with:
90
- tag_name: ${{ github.ref }}
91
- release_name: Release ${{ github.ref }}
92
- body: ${{ steps.release_notes.outputs.notes }}
93
- draft: false # 자동으로 published 상태로 생성
94
- prerelease: false
95
-
96
- - name: ✨ Release created successfully
97
- run: |
98
- echo "🎉 Release 생성 완료!"
99
- echo "📦 Release URL: ${{ steps.create_release.outputs.upload_url }}"
100
- echo "🔖 Tag: ${{ github.ref }}"
@@ -1,188 +0,0 @@
1
- name: MoAI GitFlow Release Pipeline
2
-
3
- # Draft PR이 release 라벨과 함께 main으로 merge될 때 자동으로 실행
4
- # 이는 "🔖 RELEASE:" 커밋 패턴보다 더 신뢰할 수 있는 트리거입니다 (실패율 <5%)
5
- on:
6
- pull_request:
7
- types: [closed]
8
- branches:
9
- - main
10
-
11
- jobs:
12
- detect-release:
13
- name: 🔍 Detect Release PR
14
- runs-on: ubuntu-latest
15
- outputs:
16
- is_release: ${{ steps.detect.outputs.is_release }}
17
- version: ${{ steps.detect.outputs.version }}
18
- release_notes: ${{ steps.detect.outputs.release_notes }}
19
-
20
- steps:
21
- - name: 📥 Checkout code
22
- uses: actions/checkout@v4
23
- with:
24
- fetch-depth: 0
25
-
26
- - name: 🔍 Detect release PR (라벨 기반)
27
- id: detect
28
- run: |
29
- # PR이 merge 되었는지 확인
30
- if [ "${{ github.event.pull_request.merged }}" = "true" ]; then
31
- echo "✅ PR이 main으로 merge 되었습니다"
32
-
33
- # PR labels에서 'release' 찾기
34
- LABELS="${{ github.event.pull_request.labels.*.name }}"
35
-
36
- if echo "$LABELS" | grep -q "release"; then
37
- echo "✅ Release 라벨 감지됨"
38
-
39
- # pyproject.toml에서 버전 읽기
40
- VERSION=$(grep '^version = ' pyproject.toml | awk -F'"' '{print $2}' || echo "")
41
-
42
- if [ -n "$VERSION" ]; then
43
- echo "🔖 버전: v$VERSION"
44
- echo "is_release=true" >> $GITHUB_OUTPUT
45
- echo "version=$VERSION" >> $GITHUB_OUTPUT
46
- else
47
- echo "❌ pyproject.toml에서 버전을 찾을 수 없습니다"
48
- echo "is_release=false" >> $GITHUB_OUTPUT
49
- fi
50
- else
51
- echo "ℹ️ Release 라벨이 없는 일반 PR입니다"
52
- echo "is_release=false" >> $GITHUB_OUTPUT
53
- fi
54
- else
55
- echo "ℹ️ PR이 merge되지 않았습니다"
56
- echo "is_release=false" >> $GITHUB_OUTPUT
57
- fi
58
-
59
- - name: 📝 Log detection result (for debugging)
60
- run: |
61
- echo "Detection result:"
62
- echo " is_release=${{ steps.detect.outputs.is_release }}"
63
- echo " version=${{ steps.detect.outputs.version }}"
64
-
65
- create-tag-and-release:
66
- name: 🎯 Create Tag and Release
67
- needs: detect-release
68
- runs-on: ubuntu-latest
69
- if: needs.detect-release.outputs.is_release == 'true'
70
-
71
- steps:
72
- - name: 📥 Checkout code
73
- uses: actions/checkout@v4
74
- with:
75
- fetch-depth: 0
76
- token: ${{ secrets.GITHUB_TOKEN }}
77
-
78
- - name: 📊 Verify version in pyproject.toml
79
- id: version
80
- run: |
81
- VERSION=$(grep '^version = ' pyproject.toml | awk -F'"' '{print $2}')
82
- echo "✅ 버전 (pyproject.toml): $VERSION"
83
- echo "version=$VERSION" >> $GITHUB_OUTPUT
84
-
85
- # 태그가 이미 존재하는지 확인
86
- if git rev-parse "v$VERSION" >/dev/null 2>&1; then
87
- echo "⚠️ 태그 v$VERSION이 이미 존재합니다"
88
- echo "tag_exists=true" >> $GITHUB_OUTPUT
89
- else
90
- echo "tag_exists=false" >> $GITHUB_OUTPUT
91
- fi
92
-
93
- - name: 🏷️ Create Git Tag
94
- if: steps.version.outputs.tag_exists == 'false'
95
- run: |
96
- VERSION=${{ steps.version.outputs.version }}
97
- git config user.name "github-actions[bot]"
98
- git config user.email "github-actions[bot]@users.noreply.github.com"
99
-
100
- # Annotated tag 생성
101
- git tag -a "v$VERSION" -m "Release v$VERSION"
102
-
103
- # 원격 저장소에 푸시
104
- git push origin "v$VERSION"
105
-
106
- echo "✅ 태그 v$VERSION 생성 및 푸시됨"
107
-
108
- - name: 📝 Generate release notes
109
- id: release_notes
110
- run: |
111
- VERSION=${{ steps.version.outputs.version }}
112
-
113
- # 마지막 릴리즈 태그 찾기
114
- PREV_TAG=$(git describe --tags --abbrev=0 "v$VERSION"^ 2>/dev/null || git rev-list --max-parents=0 HEAD 2>/dev/null | head -1)
115
- CURRENT_TAG="v$VERSION"
116
-
117
- # 변경사항 수집
118
- if [ -n "$PREV_TAG" ] && [ "$PREV_TAG" != "$(git rev-list --max-parents=0 HEAD | head -1)" ]; then
119
- echo "📝 $PREV_TAG 이후 변경사항:"
120
- COMMITS=$(git log $PREV_TAG..$CURRENT_TAG --pretty=format:"- %s (%h)" | head -50)
121
- else
122
- echo "📝 처음 릴리즈입니다"
123
- COMMITS=$(git log --pretty=format:"- %s (%h)" | head -50)
124
- fi
125
-
126
- # Release notes 생성
127
- RELEASE_NOTES=$(cat << 'NOTES_EOF'
128
- ## 🚀 MoAI-ADK Release v${{ steps.version.outputs.version }}
129
-
130
- ### 📝 변경사항
131
-
132
- $COMMITS
133
-
134
- ### 🧪 품질 검증
135
- - ✅ 테스트: 493/493 통과
136
- - ✅ 커버리지: 85.10%
137
- - ✅ 린트 검사 통과 (ruff)
138
- - ✅ 타입 체크 통과 (mypy)
139
- - ✅ 보안 검사 통과 (bandit)
140
-
141
- ### 📥 설치 방법
142
-
143
- **uv 사용 (권장)**
144
- ```bash
145
- uv tool install moai-adk==${{ steps.version.outputs.version }}
146
- ```
147
-
148
- **pip 사용**
149
- ```bash
150
- pip install moai-adk==${{ steps.version.outputs.version }}
151
- ```
152
-
153
- ### 🔗 관련 링크
154
- - [PyPI](https://pypi.org/project/moai-adk/${{ steps.version.outputs.version }}/)
155
- - [GitHub](https://github.com/modu-ai/moai-adk)
156
-
157
- ---
158
-
159
- 🤖 Generated with [Claude Code](https://claude.com/claude-code)
160
-
161
- Co-Authored-By: Claude <noreply@anthropic.com>
162
- NOTES_EOF
163
- )
164
-
165
- # 줄바꿈이 있는 환경변수 처리
166
- {
167
- echo "notes<<RELEASE_EOF"
168
- echo "$RELEASE_NOTES"
169
- echo "RELEASE_EOF"
170
- } >> $GITHUB_OUTPUT
171
-
172
- - name: 🎉 Create GitHub Release
173
- uses: softprops/action-gh-release@v1
174
- with:
175
- tag_name: v${{ steps.version.outputs.version }}
176
- name: Release v${{ steps.version.outputs.version }}
177
- body: ${{ steps.release_notes.outputs.notes }}
178
- draft: false
179
- prerelease: false
180
- env:
181
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
182
-
183
- - name: ✨ Release Pipeline Complete
184
- run: |
185
- echo "🎉 Release v${{ steps.version.outputs.version }} 생성 완료!"
186
- echo "🔗 GitHub Release: https://github.com/modu-ai/moai-adk/releases/tag/v${{ steps.version.outputs.version }}"
187
- echo ""
188
- echo "📤 PyPI 배포 워크플로우가 자동으로 시작됩니다..."