moai-adk 0.15.1__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 (699) hide show
  1. moai_adk/__init__.py +2 -6
  2. moai_adk/__main__.py +136 -21
  3. moai_adk/cli/__init__.py +6 -2
  4. moai_adk/cli/commands/__init__.py +1 -4
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +17 -5
  7. moai_adk/cli/commands/init.py +105 -47
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +8 -13
  10. moai_adk/cli/commands/update.py +1734 -65
  11. moai_adk/cli/main.py +3 -2
  12. moai_adk/cli/prompts/init_prompts.py +144 -91
  13. moai_adk/cli/spec_status.py +263 -0
  14. moai_adk/cli/ui/__init__.py +44 -0
  15. moai_adk/cli/ui/progress.py +422 -0
  16. moai_adk/cli/ui/prompts.py +389 -0
  17. moai_adk/cli/ui/theme.py +129 -0
  18. moai_adk/cli/worktree/__init__.py +27 -0
  19. moai_adk/cli/worktree/__main__.py +31 -0
  20. moai_adk/cli/worktree/cli.py +672 -0
  21. moai_adk/cli/worktree/exceptions.py +89 -0
  22. moai_adk/cli/worktree/manager.py +490 -0
  23. moai_adk/cli/worktree/models.py +65 -0
  24. moai_adk/cli/worktree/registry.py +128 -0
  25. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  26. moai_adk/core/__init__.py +0 -1
  27. moai_adk/core/analysis/__init__.py +9 -0
  28. moai_adk/core/analysis/session_analyzer.py +400 -0
  29. moai_adk/core/claude_integration.py +393 -0
  30. moai_adk/core/command_helpers.py +270 -0
  31. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  32. moai_adk/core/config/__init__.py +6 -0
  33. moai_adk/core/config/auto_spec_config.py +340 -0
  34. moai_adk/core/config/migration.py +147 -16
  35. moai_adk/core/config/unified.py +436 -0
  36. moai_adk/core/context_manager.py +273 -0
  37. moai_adk/core/diagnostics/slash_commands.py +0 -1
  38. moai_adk/core/enterprise_features.py +1404 -0
  39. moai_adk/core/error_recovery_system.py +1902 -0
  40. moai_adk/core/event_driven_hook_system.py +1371 -0
  41. moai_adk/core/git/__init__.py +8 -1
  42. moai_adk/core/git/branch.py +0 -1
  43. moai_adk/core/git/branch_manager.py +2 -10
  44. moai_adk/core/git/checkpoint.py +1 -7
  45. moai_adk/core/git/commit.py +0 -1
  46. moai_adk/core/git/conflict_detector.py +413 -0
  47. moai_adk/core/git/event_detector.py +3 -5
  48. moai_adk/core/git/manager.py +91 -2
  49. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  50. moai_adk/core/input_validation_middleware.py +1006 -0
  51. moai_adk/core/integration/__init__.py +22 -0
  52. moai_adk/core/integration/engine.py +157 -0
  53. moai_adk/core/integration/integration_tester.py +226 -0
  54. moai_adk/core/integration/models.py +88 -0
  55. moai_adk/core/integration/utils.py +211 -0
  56. moai_adk/core/issue_creator.py +20 -28
  57. moai_adk/core/jit_context_loader.py +956 -0
  58. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  59. moai_adk/core/language_config.py +202 -0
  60. moai_adk/core/language_config_resolver.py +485 -0
  61. moai_adk/core/language_validator.py +543 -0
  62. moai_adk/core/mcp/setup.py +116 -0
  63. moai_adk/core/merge/__init__.py +9 -0
  64. moai_adk/core/merge/analyzer.py +481 -0
  65. moai_adk/core/migration/__init__.py +18 -0
  66. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  67. moai_adk/core/migration/backup_manager.py +277 -0
  68. moai_adk/core/migration/custom_element_scanner.py +358 -0
  69. moai_adk/core/migration/file_migrator.py +209 -0
  70. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  71. moai_adk/core/migration/selective_restorer.py +470 -0
  72. moai_adk/core/migration/template_utils.py +74 -0
  73. moai_adk/core/migration/user_selection_ui.py +338 -0
  74. moai_adk/core/migration/version_detector.py +139 -0
  75. moai_adk/core/migration/version_migrator.py +228 -0
  76. moai_adk/core/performance/__init__.py +6 -0
  77. moai_adk/core/performance/cache_system.py +316 -0
  78. moai_adk/core/performance/parallel_processor.py +116 -0
  79. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  80. moai_adk/core/project/__init__.py +0 -1
  81. moai_adk/core/project/backup_utils.py +2 -7
  82. moai_adk/core/project/checker.py +2 -4
  83. moai_adk/core/project/detector.py +17 -39
  84. moai_adk/core/project/initializer.py +170 -33
  85. moai_adk/core/project/phase_executor.py +398 -68
  86. moai_adk/core/project/validator.py +7 -32
  87. moai_adk/core/quality/__init__.py +1 -1
  88. moai_adk/core/quality/trust_checker.py +37 -101
  89. moai_adk/core/quality/validators/__init__.py +1 -1
  90. moai_adk/core/quality/validators/base_validator.py +1 -1
  91. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  92. moai_adk/core/robust_json_parser.py +611 -0
  93. moai_adk/core/rollback_manager.py +918 -0
  94. moai_adk/core/session_manager.py +651 -0
  95. moai_adk/core/skill_loading_system.py +579 -0
  96. moai_adk/core/spec/confidence_scoring.py +680 -0
  97. moai_adk/core/spec/ears_template_engine.py +1247 -0
  98. moai_adk/core/spec/quality_validator.py +687 -0
  99. moai_adk/core/spec_status_manager.py +478 -0
  100. moai_adk/core/template/__init__.py +0 -1
  101. moai_adk/core/template/backup.py +82 -17
  102. moai_adk/core/template/config.py +112 -40
  103. moai_adk/core/template/languages.py +0 -1
  104. moai_adk/core/template/merger.py +75 -26
  105. moai_adk/core/template/processor.py +750 -72
  106. moai_adk/core/template_engine.py +90 -48
  107. moai_adk/core/template_variable_synchronizer.py +417 -0
  108. moai_adk/core/unified_permission_manager.py +745 -0
  109. moai_adk/core/user_behavior_analytics.py +851 -0
  110. moai_adk/core/version_sync.py +429 -0
  111. moai_adk/foundation/__init__.py +56 -0
  112. moai_adk/foundation/backend.py +1027 -0
  113. moai_adk/foundation/database.py +1115 -0
  114. moai_adk/foundation/devops.py +1585 -0
  115. moai_adk/foundation/ears.py +431 -0
  116. moai_adk/foundation/frontend.py +870 -0
  117. moai_adk/foundation/git/commit_templates.py +557 -0
  118. moai_adk/foundation/git.py +376 -0
  119. moai_adk/foundation/langs.py +484 -0
  120. moai_adk/foundation/ml_ops.py +1162 -0
  121. moai_adk/foundation/testing.py +1524 -0
  122. moai_adk/foundation/trust/trust_principles.py +676 -0
  123. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  124. moai_adk/project/__init__.py +0 -0
  125. moai_adk/project/configuration.py +1084 -0
  126. moai_adk/project/documentation.py +566 -0
  127. moai_adk/project/schema.py +447 -0
  128. moai_adk/statusline/__init__.py +38 -0
  129. moai_adk/statusline/alfred_detector.py +105 -0
  130. moai_adk/statusline/config.py +373 -0
  131. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  132. moai_adk/statusline/git_collector.py +190 -0
  133. moai_adk/statusline/main.py +264 -0
  134. moai_adk/statusline/metrics_tracker.py +78 -0
  135. moai_adk/statusline/renderer.py +383 -0
  136. moai_adk/statusline/update_checker.py +129 -0
  137. moai_adk/statusline/version_reader.py +741 -0
  138. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  139. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  140. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  141. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  142. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  143. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  144. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  145. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  146. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  147. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  148. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  149. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  150. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  151. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  152. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  153. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  154. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  155. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  156. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  157. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  158. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  159. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  160. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  161. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  162. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  163. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  164. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  165. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  166. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  167. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  168. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  169. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  170. moai_adk/templates/.claude/hooks/{alfred/shared/core → moai/lib}/checkpoint.py +9 -36
  171. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  172. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  173. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  179. moai_adk/templates/.claude/hooks/{alfred/shared/core → moai/lib}/project.py +63 -44
  180. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  181. moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/timeout.py +40 -16
  182. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  183. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  184. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  185. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  186. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  187. moai_adk/templates/.claude/settings.json +78 -50
  188. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  189. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  190. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  191. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  192. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  193. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  194. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +312 -283
  195. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +291 -94
  196. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  197. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  198. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  199. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  200. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +469 -101
  201. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  202. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  203. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  204. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  205. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  206. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  207. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  208. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  209. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  210. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  211. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  212. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  213. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  214. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  215. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  229. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  253. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  254. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  255. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  256. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  257. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  258. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  259. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  260. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  261. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  262. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  263. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  264. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  265. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  266. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  267. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  268. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  269. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  270. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  271. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  272. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  273. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  274. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  275. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  276. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  277. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  278. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  279. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  280. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  281. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  282. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  283. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  284. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  285. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  286. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  287. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  288. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  289. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  290. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  291. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  323. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  324. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  325. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  326. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  327. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  328. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  329. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  330. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  331. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  332. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  333. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  334. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  335. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  336. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  337. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  338. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  339. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  340. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  341. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  342. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  343. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  344. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  345. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  346. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  347. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  348. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  349. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  350. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  351. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  352. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  353. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  354. moai_adk/templates/.git-hooks/pre-commit +128 -0
  355. moai_adk/templates/.git-hooks/pre-push +220 -13
  356. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  357. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  358. moai_adk/templates/.github/workflows/spec-issue-sync.yml +0 -1
  359. moai_adk/templates/.gitignore +197 -13
  360. moai_adk/templates/.mcp.json +20 -0
  361. moai_adk/templates/.moai/cache/personalization.json +10 -0
  362. moai_adk/templates/.moai/config/config.yaml +344 -0
  363. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  364. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  365. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  366. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  367. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  368. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  369. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  370. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  371. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  372. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  373. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  374. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  375. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  376. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  377. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  378. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  379. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  380. moai_adk/templates/CLAUDE.md +310 -1050
  381. moai_adk/utils/__init__.py +24 -2
  382. moai_adk/utils/banner.py +7 -11
  383. moai_adk/utils/common.py +294 -0
  384. moai_adk/utils/link_validator.py +241 -0
  385. moai_adk/utils/logger.py +4 -9
  386. moai_adk/utils/safe_file_reader.py +206 -0
  387. moai_adk/{templates/.claude/hooks/alfred/utils → utils}/timeout.py +8 -9
  388. moai_adk/utils/toon_utils.py +256 -0
  389. moai_adk/version.py +22 -0
  390. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  391. moai_adk-0.32.8.dist-info/RECORD +396 -0
  392. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  393. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  394. moai_adk/cli/commands/backup.py +0 -80
  395. moai_adk/core/tags/__init__.py +0 -86
  396. moai_adk/core/tags/ci_validator.py +0 -463
  397. moai_adk/core/tags/cli.py +0 -283
  398. moai_adk/core/tags/generator.py +0 -109
  399. moai_adk/core/tags/inserter.py +0 -99
  400. moai_adk/core/tags/mapper.py +0 -126
  401. moai_adk/core/tags/parser.py +0 -76
  402. moai_adk/core/tags/pre_commit_validator.py +0 -393
  403. moai_adk/core/tags/reporter.py +0 -956
  404. moai_adk/core/tags/tags.py +0 -149
  405. moai_adk/core/tags/validator.py +0 -897
  406. moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
  407. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
  408. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
  409. moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
  410. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
  411. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
  412. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
  413. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
  414. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
  415. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
  416. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
  417. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -426
  418. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
  419. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
  420. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
  421. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
  422. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1854
  423. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -880
  424. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -793
  425. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1084
  426. moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
  427. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
  428. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
  429. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
  430. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
  431. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
  432. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
  433. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
  434. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
  435. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
  436. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
  437. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
  438. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
  439. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
  440. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
  441. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
  442. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
  443. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
  444. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
  445. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
  446. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
  447. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
  448. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
  449. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
  450. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
  451. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
  452. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
  453. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
  454. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
  455. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
  456. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
  457. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
  458. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  459. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  460. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  461. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
  462. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
  463. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
  464. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  465. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  466. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  467. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
  468. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
  469. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
  470. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  471. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  472. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  473. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
  474. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
  475. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
  476. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  477. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  478. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  479. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
  480. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
  481. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
  482. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
  483. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
  484. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
  485. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
  486. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
  487. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
  488. moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
  489. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
  490. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
  491. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
  492. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
  493. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
  494. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
  495. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
  496. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
  497. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
  498. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
  499. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
  500. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
  501. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
  502. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
  503. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  504. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  505. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  506. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  507. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  508. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  509. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
  510. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
  511. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
  512. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  513. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  514. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  515. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +0 -288
  516. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  517. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  518. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  519. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  520. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  521. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  522. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  523. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  524. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  525. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  526. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  527. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  528. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  529. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  530. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  531. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  532. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
  533. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
  534. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
  535. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
  536. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
  537. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  538. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
  539. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  540. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  541. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  542. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  543. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
  544. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  545. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
  546. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
  547. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
  548. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
  549. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
  550. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  551. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
  552. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
  553. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
  554. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  555. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  556. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
  557. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
  558. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
  559. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
  560. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
  561. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  562. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  563. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  564. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  565. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  566. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  567. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
  568. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
  569. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  570. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  571. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  572. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
  573. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
  574. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  575. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  576. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  577. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  578. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  579. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  580. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  581. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  582. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  583. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  584. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  585. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  586. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  587. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  588. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  589. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  590. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  591. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  592. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  593. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  594. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  595. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  596. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  597. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  598. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
  599. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  600. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  601. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  602. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  603. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  604. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  605. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  606. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  607. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  608. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  609. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  610. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  611. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  612. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  613. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  614. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  615. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  616. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  617. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  618. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  619. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
  620. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  621. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  622. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
  623. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  624. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  625. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  626. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  627. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  628. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
  629. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
  630. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
  631. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
  632. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
  633. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
  634. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  635. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  636. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  637. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
  638. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
  639. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
  640. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
  641. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  642. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  643. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
  644. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
  645. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
  646. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
  647. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  648. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  649. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
  650. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  651. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  652. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
  653. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
  654. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
  655. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
  656. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
  657. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
  658. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  659. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  660. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  661. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  662. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  663. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  664. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
  665. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
  666. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
  667. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
  668. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
  669. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
  670. moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
  671. moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
  672. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
  673. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
  674. moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
  675. moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
  676. moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
  677. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
  678. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
  679. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -419
  680. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  681. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  682. moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
  683. moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
  684. moai_adk/templates/.github/workflows/release.yml +0 -118
  685. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
  686. moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
  687. moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
  688. moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
  689. moai_adk/templates/.github/workflows/tag-report.yml +0 -269
  690. moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
  691. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
  692. moai_adk/templates/.moai/config.json +0 -115
  693. moai_adk/templates/workflows/go-tag-validation.yml +0 -30
  694. moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
  695. moai_adk/templates/workflows/python-tag-validation.yml +0 -42
  696. moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
  697. moai_adk-0.15.1.dist-info/METADATA +0 -3094
  698. moai_adk-0.15.1.dist-info/RECORD +0 -365
  699. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,901 @@
1
+ """PostToolUse Hook for Automated SPEC Completion System."""
2
+
3
+ import hashlib
4
+ import logging
5
+ import os
6
+ import re
7
+ import time
8
+ from typing import Any, Dict, List
9
+
10
+
11
+ # SpecGenerator: Placeholder for spec generation functionality
12
+ class SpecGenerator:
13
+ """Placeholder SpecGenerator class for auto-spec completion."""
14
+
15
+ def __init__(self):
16
+ self.name = "SpecGenerator"
17
+
18
+ def generate_spec(self, file_path: str, content: str) -> str:
19
+ """Generate a basic SPEC document."""
20
+ return f"SPEC document for {file_path}\n\nContent analysis:\n{content[:200]}..."
21
+
22
+ def analyze(self, file_path: str) -> Dict[str, Any]:
23
+ """Analyze code file for SPEC generation."""
24
+ return {
25
+ "file_path": file_path,
26
+ "structure_info": {},
27
+ "domain_keywords": [],
28
+ }
29
+
30
+
31
+ # BaseHook: Simplified base hook class for auto-spec completion
32
+ class BaseHook:
33
+ """Base hook class for auto-spec completion."""
34
+
35
+ def __init__(self):
36
+ self.name = "PostToolAutoSpecCompletion"
37
+ self.description = "PostToolUse Hook for Automated SPEC Completion System"
38
+
39
+
40
+ # Configure logging
41
+ logger = logging.getLogger(__name__)
42
+
43
+
44
+ class PostToolAutoSpecCompletion(BaseHook):
45
+ """
46
+ PostToolUse Hook for automated SPEC completion.
47
+
48
+ This hook detects code file changes after Write/Edit/MultiEdit tools
49
+ and automatically generates complete SPEC documents in EARS format.
50
+ """
51
+
52
+ def __init__(self):
53
+ super().__init__()
54
+ self.spec_generator = SpecGenerator()
55
+ self.auto_config = self._get_auto_spec_config()
56
+
57
+ # Track processed files to avoid duplicates
58
+ self.processed_files = set()
59
+
60
+ def _get_auto_spec_config(self) -> Dict[str, Any]:
61
+ """Get auto-spec completion configuration."""
62
+ try:
63
+ from moai_adk.core.config.config_manager import ConfigManager
64
+
65
+ config = ConfigManager()
66
+ return config.get_value(
67
+ "auto_spec_completion",
68
+ {
69
+ "enabled": True,
70
+ "min_confidence": 0.7,
71
+ "auto_open_editor": True,
72
+ "supported_languages": ["python", "javascript", "typescript", "go"],
73
+ "excluded_patterns": ["test_", "spec_", "__tests__"],
74
+ },
75
+ )
76
+ except ImportError:
77
+ return {
78
+ "enabled": True,
79
+ "min_confidence": 0.7,
80
+ "auto_open_editor": True,
81
+ "supported_languages": ["python", "javascript", "typescript", "go"],
82
+ "excluded_patterns": ["test_", "spec_", "__tests__"],
83
+ }
84
+
85
+ def should_trigger_spec_completion(self, tool_name: str, tool_args: Dict[str, Any]) -> bool:
86
+ """
87
+ Determine if spec completion should be triggered.
88
+
89
+ Args:
90
+ tool_name: Name of the tool that was executed
91
+ tool_args: Arguments passed to the tool
92
+
93
+ Returns:
94
+ True if spec completion should be triggered
95
+ """
96
+ # Check if auto-spec completion is enabled
97
+ if not self.auto_config.get("enabled", True):
98
+ logger.debug("Auto-spec completion is disabled")
99
+ return False
100
+
101
+ # Only trigger for Write/Edit/MultiEdit tools
102
+ if tool_name not in ["Write", "Edit", "MultiEdit"]:
103
+ logger.debug(f"Tool {tool_name} does not trigger spec completion")
104
+ return False
105
+
106
+ # Extract file paths from tool arguments
107
+ file_paths = self._extract_file_paths(tool_args)
108
+
109
+ if not file_paths:
110
+ logger.debug("No file paths found in tool arguments")
111
+ return False
112
+
113
+ # Check if any file is a supported language
114
+ supported_files = []
115
+ for file_path in file_paths:
116
+ if self._is_supported_file(file_path):
117
+ supported_files.append(file_path)
118
+ else:
119
+ logger.debug(f"File {file_path} is not supported for auto-spec completion")
120
+
121
+ if not supported_files:
122
+ logger.debug("No supported files found")
123
+ return False
124
+
125
+ # Check for excluded patterns
126
+ excluded_files = []
127
+ for file_path in supported_files:
128
+ if self._is_excluded_file(file_path):
129
+ excluded_files.append(file_path)
130
+
131
+ # Filter out excluded files
132
+ target_files = [f for f in supported_files if f not in excluded_files]
133
+
134
+ if not target_files:
135
+ logger.debug("All files are excluded from auto-spec completion")
136
+ return False
137
+
138
+ return True
139
+
140
+ def _extract_file_paths(self, tool_args: Dict[str, Any]) -> List[str]:
141
+ """Extract file paths from tool arguments."""
142
+ file_paths = []
143
+
144
+ # Handle Write tool
145
+ if "file_path" in tool_args:
146
+ file_paths.append(tool_args["file_path"])
147
+
148
+ # Handle Edit tool
149
+ if "file_path" in tool_args:
150
+ file_paths.append(tool_args["file_path"])
151
+
152
+ # Handle MultiEdit tool
153
+ if "edits" in tool_args:
154
+ for edit in tool_args["edits"]:
155
+ if "file_path" in edit:
156
+ file_paths.append(edit["file_path"])
157
+
158
+ # Remove duplicates and resolve relative paths
159
+ unique_paths = []
160
+ for path in file_paths:
161
+ if path not in unique_paths:
162
+ abs_path = os.path.abspath(path)
163
+ unique_paths.append(abs_path)
164
+
165
+ return unique_paths
166
+
167
+ def _is_supported_file(self, file_path: str) -> bool:
168
+ """Check if file is supported for auto-spec completion."""
169
+ # Get file extension
170
+ file_ext = os.path.splitext(file_path)[1].lower()
171
+
172
+ # Map extensions to languages
173
+ supported_extensions = {
174
+ ".py": "python",
175
+ ".js": "javascript",
176
+ ".jsx": "javascript",
177
+ ".ts": "typescript",
178
+ ".tsx": "typescript",
179
+ ".go": "go",
180
+ }
181
+
182
+ if file_ext not in supported_extensions:
183
+ return False
184
+
185
+ # Check if language is supported
186
+ language = supported_extensions[file_ext]
187
+ supported_languages = self.auto_config.get("supported_languages", [])
188
+ return language in supported_languages
189
+
190
+ def _is_excluded_file(self, file_path: str) -> bool:
191
+ """Check if file should be excluded from auto-spec completion."""
192
+ file_name = os.path.basename(file_path)
193
+ file_dir = os.path.basename(os.path.dirname(file_path))
194
+
195
+ excluded_patterns = self.auto_config.get("excluded_patterns", [])
196
+
197
+ for pattern in excluded_patterns:
198
+ # Check filename patterns
199
+ if re.search(pattern, file_name):
200
+ return True
201
+ # Check directory patterns
202
+ if re.search(pattern, file_dir):
203
+ return True
204
+
205
+ return False
206
+
207
+ def detect_code_changes(self, tool_name: str, tool_args: Dict[str, Any], result: Any) -> List[str]:
208
+ """
209
+ Detect code changes from tool execution.
210
+
211
+ Args:
212
+ tool_name: Name of the tool that was executed
213
+ tool_args: Arguments passed to the tool
214
+ result: Result from tool execution
215
+
216
+ Returns:
217
+ List of affected file paths
218
+ """
219
+ file_paths = []
220
+
221
+ # Write tool creates new files
222
+ if tool_name == "Write":
223
+ if "file_path" in tool_args:
224
+ file_paths.append(tool_args["file_path"])
225
+
226
+ # Edit tool modifies existing files
227
+ elif tool_name == "Edit":
228
+ if "file_path" in tool_args:
229
+ file_paths.append(tool_args["file_path"])
230
+
231
+ # MultiEdit tool can modify multiple files
232
+ elif tool_name == "MultiEdit":
233
+ if "edits" in tool_args:
234
+ for edit in tool_args["edits"]:
235
+ if "file_path" in edit:
236
+ file_paths.append(edit["file_path"])
237
+
238
+ # Convert to absolute paths
239
+ abs_paths = [os.path.abspath(path) for path in file_paths]
240
+
241
+ # Filter out already processed files
242
+ new_paths = [path for path in abs_paths if path not in self.processed_files]
243
+
244
+ # Add to processed files
245
+ self.processed_files.update(new_paths)
246
+
247
+ return new_paths
248
+
249
+ def calculate_completion_confidence(self, analysis: Dict[str, Any]) -> float:
250
+ """
251
+ Calculate confidence score for SPEC completion.
252
+
253
+ Args:
254
+ analysis: Code analysis result
255
+
256
+ Returns:
257
+ Confidence score between 0.0 and 1.0
258
+ """
259
+ # Default confidence if analysis is incomplete
260
+ if not analysis:
261
+ return 0.5
262
+
263
+ structure_score = analysis.get("structure_score", 0.5)
264
+ domain_accuracy = analysis.get("domain_accuracy", 0.5)
265
+ documentation_level = analysis.get("documentation_level", 0.5)
266
+
267
+ # Weighted calculation
268
+ # Structure clarity: 30%
269
+ # Domain accuracy: 40%
270
+ # Documentation level: 30%
271
+ confidence = structure_score * 0.3 + domain_accuracy * 0.4 + documentation_level * 0.3
272
+
273
+ return min(max(confidence, 0.0), 1.0)
274
+
275
+ def generate_complete_spec(self, analysis: Dict[str, Any], file_path: str) -> Dict[str, str]:
276
+ """
277
+ Generate complete SPEC documents in EARS format.
278
+
279
+ Args:
280
+ analysis: Code analysis result
281
+ file_path: Path to the analyzed file
282
+
283
+ Returns:
284
+ Dictionary containing spec.md, plan.md, and acceptance.md
285
+ """
286
+ spec_id = self._generate_spec_id(file_path)
287
+ file_name = os.path.basename(file_path)
288
+
289
+ # Generate basic spec content
290
+ spec_md = self._generate_spec_content(analysis, spec_id, file_name)
291
+ plan_md = self._generate_plan_content(analysis, spec_id, file_name)
292
+ acceptance_md = self._generate_acceptance_content(analysis, spec_id, file_name)
293
+
294
+ return {
295
+ "spec_id": spec_id,
296
+ "spec_md": spec_md,
297
+ "plan_md": plan_md,
298
+ "acceptance_md": acceptance_md,
299
+ }
300
+
301
+ def _generate_spec_id(self, file_path: str) -> str:
302
+ """Generate unique SPEC ID from file path."""
303
+ # Extract meaningful name from file path
304
+ file_name = os.path.basename(file_path)
305
+ name_parts = file_name.split("_")
306
+
307
+ # Convert to uppercase and join
308
+ meaningful_name = "".join(part.upper() for part in name_parts if part)
309
+
310
+ # Add hash to ensure uniqueness
311
+ file_hash = hashlib.md5(file_path.encode(), usedforsecurity=False).hexdigest()[:4]
312
+
313
+ return f"{meaningful_name}-{file_hash}"
314
+
315
+ def _generate_spec_content(self, analysis: Dict[str, Any], spec_id: str, file_name: str) -> str:
316
+ """Generate main spec.md content."""
317
+ template = f"""---
318
+ "id": "SPEC-{spec_id}",
319
+ "title": "Auto-generated SPEC for {file_name}",
320
+ "title_en": "Auto-generated SPEC for {file_name}",
321
+ "version": "1.0.0",
322
+ "status": "pending",
323
+ "created": "{time.strftime("%Y-%m-%d")}",
324
+ "author": "@alfred-auto",
325
+ "reviewer": "",
326
+ "category": "FEATURE",
327
+ "priority": "MEDIUM",
328
+ "tags": ["auto-generated", "{spec_id}"],
329
+ "language": "en",
330
+ "estimated_complexity": "auto"
331
+ }}
332
+ ---
333
+
334
+ ## Auto-generated SPEC for {file_name}
335
+
336
+ ### Overview
337
+
338
+ {analysis.get("description", "This spec was auto-generated based on code analysis.")}
339
+
340
+ ### Environment
341
+
342
+ - **Project**: MoAI-ADK Auto-generated SPEC
343
+ - **Language**: {analysis.get("language", "Python")}
344
+ - **File**: {file_name}
345
+ - **Generation Method**: Automatic analysis-based
346
+ - **Status**: Review required
347
+
348
+ ### Assumptions
349
+
350
+ 1. Code structure is clearly defined
351
+ 2. Domain-specific terminology is expected to be used
352
+ 3. Standard development practices are assumed to be followed
353
+ 4. Generated SPEC will be finalized after user review
354
+
355
+ ### Requirements
356
+
357
+ #### Ubiquitous Requirements
358
+
359
+ - **REQ-001**: System must perform the functionality of {file_name}
360
+ - **REQ-002**: Generated functionality must be stable
361
+ - **REQ-003**: Code must be written in a maintainable form
362
+ - **REQ-004**: Tests must satisfy functional requirements
363
+ - **REQ-005**: Code must comply with project coding standards
364
+
365
+ #### State-driven Requirements
366
+
367
+ {analysis.get("state_requirements", "- **REQ-006**: System must transition from initial state to target state")}
368
+
369
+ #### Event-driven Requirements
370
+
371
+ {analysis.get("event_requirements", "- **REQ-007**: System must respond when user input occurs")}
372
+
373
+ ### Specifications
374
+
375
+ {analysis.get("specifications", "- **SPEC-001**: System must implement requirements")}
376
+
377
+ ### Traceability
378
+
379
+
380
+ ### Edit Guide
381
+
382
+ **User Review Recommendations:**
383
+ 1. ✅ Verify technical clarity
384
+ 2. ✅ Specify requirements
385
+ 3. ✅ Review domain-specific terminology
386
+ 4. ✅ Define state and event requirements
387
+ 5. ✅ Detail specifications
388
+
389
+ **Quality Improvement Suggestions:**
390
+ - Add domain-specific terminology
391
+ - Specify user cases
392
+ - Define performance requirements
393
+ - Add security requirements
394
+ """
395
+ return template
396
+
397
+ def _generate_plan_content(self, analysis: Dict[str, Any], spec_id: str, file_name: str) -> str:
398
+ """Generate plan.md content."""
399
+ return f"""---
400
+ "id": "PLAN-{spec_id}",
401
+ "spec_id": "SPEC-{spec_id}",
402
+ "title": "Auto-generated Implementation Plan for {file_name}",
403
+ "version": "1.0.0",
404
+ "status": "pending",
405
+ "created": "{time.strftime("%Y-%m-%d")}",
406
+ "author": "@alfred-auto"
407
+ }}
408
+ ---
409
+
410
+ ## Auto-generated Implementation Plan for {file_name}
411
+
412
+ ### Implementation Phases
413
+
414
+ #### Phase 1: Basic Structure Review (Priority: High)
415
+
416
+ - [ ] Complete code structure analysis
417
+ - [ ] Identify core functionality
418
+ - [ ] Verify dependencies
419
+ - [ ] Set up test environment
420
+
421
+ #### Phase 2: Requirements Specification (Priority: Medium)
422
+
423
+ - [ ] Specify ubiquitous requirements
424
+ - [ ] Define state-driven requirements
425
+ - [ ] Review event-driven requirements
426
+ - [ ] Set performance requirements
427
+
428
+ #### Phase 3: Implementation Planning (Priority: Medium)
429
+
430
+ - [ ] Design module architecture
431
+ - [ ] Define interfaces
432
+ - [ ] Design data structures
433
+ - [ ] Plan error handling
434
+
435
+ #### Phase 4: Test Strategy Development (Priority: High)
436
+
437
+ - [ ] Plan unit tests
438
+ - [ ] Plan integration tests
439
+ - [ ] User story-based testing
440
+ - [ ] Implement test automation
441
+
442
+ ### Technical Approach
443
+
444
+ #### Architecture Design
445
+
446
+ ```
447
+ {analysis.get("architecture", "User Input → Validation → Business Logic → Data Processing → Output")}
448
+
449
+ [Core Components] → [External Services] → [Data Layer]
450
+ ```
451
+
452
+ #### Core Components
453
+
454
+ 1. **{analysis.get("main_component", "Main Class")}**: Handle primary business logic
455
+ 2. **{analysis.get("service_component", "Service Layer")}**: Integrate external services
456
+ 3. **{analysis.get("data_component", "Data Layer")}**: Process and store data
457
+ 4. **{analysis.get("component_4", "Validation Layer")}**: Validate input and check validity
458
+
459
+ #### Dependency Management
460
+
461
+ **Utilize Existing Modules:**
462
+ - {analysis.get("existing_modules", "Utilize standard libraries")}
463
+
464
+ **Add New Modules:**
465
+ - {analysis.get("new_modules", "Add as needed")}
466
+
467
+ ### Success Criteria
468
+
469
+ #### Functional Criteria
470
+
471
+ - ✅ All requirements implemented
472
+ - ✅ Test coverage 85% or higher
473
+ - ✅ Performance targets met
474
+ - ✅ User requirements satisfied
475
+
476
+ #### Performance Criteria
477
+
478
+ - ✅ Response time {analysis.get("performance_target", "within 1 second")}
479
+ - ✅ Memory usage optimized
480
+ - ✅ Parallel processing supported
481
+ - ✅ Scalability verified
482
+
483
+ #### Quality Criteria
484
+
485
+ - ✅ Code quality verification passed
486
+ - ✅ Security scanning passed
487
+ - ✅ Documentation completeness verified
488
+ - ✅ Maintainability validated
489
+
490
+ ### Next Steps
491
+
492
+ 1. **Immediate**: Basic structure review (1-2 days)
493
+ 2. **Weekly Goal**: Requirements specification (3-5 days)
494
+ 3. **2-Week Goal**: Implementation completion (7-14 days)
495
+ 4. **Release Preparation**: Testing and validation (14-16 days)
496
+ """
497
+
498
+ def _generate_acceptance_content(self, analysis: Dict[str, Any], spec_id: str, file_name: str) -> str:
499
+ """Generate acceptance.md content."""
500
+ return f"""---
501
+ "id": "ACCEPT-{spec_id}",
502
+ "spec_id": "SPEC-{spec_id}",
503
+ "title": "Auto-generated Acceptance Criteria for {file_name}",
504
+ "version": "1.0.0",
505
+ "status": "pending",
506
+ "created": "{time.strftime("%Y-%m-%d")}",
507
+ "author": "@alfred-auto"
508
+ }}
509
+ ---
510
+
511
+ ## Auto-generated Acceptance Criteria for {file_name}
512
+
513
+ ### Acceptance Criteria
514
+
515
+ #### Basic Functionality
516
+
517
+ **Must-have:**
518
+ - [ ] {analysis.get("must_have_1", "System must operate normally")}
519
+ - [ ] {analysis.get("must_have_2", "User interface must display correctly")}
520
+ - [ ] {analysis.get("must_have_3", "Data processing logic must function properly")}
521
+
522
+ **Should-have:**
523
+ - [ ] {analysis.get("should_have_1", "User experience must be smooth")}
524
+ - [ ] {analysis.get("should_have_2", "Performance targets must be met")}
525
+
526
+ #### Performance Testing
527
+
528
+ **Performance Requirements:**
529
+ - [ ] Response time: {analysis.get("response_time", "within 1 second")}
530
+ - [ ] Concurrent users: support {analysis.get("concurrent_users", "100 users")} or more
531
+ - [ ] Memory usage: {analysis.get("memory_usage", "100MB or less")}
532
+ - [ ] CPU utilization: {analysis.get("cpu_usage", "50% or less")}
533
+
534
+ **Load Testing:**
535
+ - [ ] Functional load testing passed
536
+ - [ ] Long-term stability testing passed
537
+ - [ ] Recovery testing passed
538
+
539
+ #### Security Testing
540
+
541
+ **Security Requirements:**
542
+ - [ ] {analysis.get("security_req_1", "Authentication and authorization verification passed")}
543
+ - [ ] {analysis.get("security_req_2", "Input validation passed")}
544
+ - [ ] {analysis.get("security_req_3", "SQL injection protection passed")}
545
+
546
+ **Vulnerability Testing:**
547
+ - [ ] OWASP Top 10 inspection passed
548
+ - [ ] Security scanning passed
549
+ - [ ] Permission settings verification passed
550
+
551
+ #### Compatibility Testing
552
+
553
+ **Browser Compatibility:**
554
+ - [ ] Chrome latest version
555
+ - [ ] Firefox latest version
556
+ - [ ] Safari latest version
557
+ - [ ] Edge latest version
558
+
559
+ **Device Compatibility:**
560
+ - [ ] Desktop (1920x1080)
561
+ - [ ] Tablet (768x1024)
562
+ - [ ] Mobile (375x667)
563
+
564
+ #### User Acceptance Testing
565
+
566
+ **User Scenarios:**
567
+ - [ ] {analysis.get("user_scenario_1", "General user scenario testing passed")}
568
+ - [ ] {analysis.get("user_scenario_2", "Administrator scenario testing passed")}
569
+ - [ ] {analysis.get("user_scenario_3", "Error handling scenario testing passed")}
570
+
571
+ **User Feedback:**
572
+ - [ ] User satisfaction 80% or higher
573
+ - [ ] Feature usability evaluation
574
+ - [ ] Design and UI/UX verification
575
+
576
+ ### Validation Process
577
+
578
+ #### Phase 1: Unit Tests
579
+
580
+ - [ ] Developer testing completed
581
+ - [ ] Code review passed
582
+ - [ ] Automated testing passed
583
+ - [ ] Code coverage 85% or higher
584
+
585
+ #### Phase 2: Integration Tests
586
+
587
+ - [ ] Inter-module integration testing
588
+ - [ ] API integration testing
589
+ - [ ] Database integration testing
590
+ - [ ] External service integration testing
591
+
592
+ #### Phase 3: System Tests
593
+
594
+ - [ ] Full system functionality testing
595
+ - [ ] Performance testing
596
+ - [ ] Security testing
597
+ - [ ] Stability testing
598
+
599
+ #### Phase 4: User Tests
600
+
601
+ - [ ] Internal user testing
602
+ - [ ] Actual user testing
603
+ - [ ] Feedback collection and incorporation
604
+ - [ ] Final acceptance approval
605
+
606
+ ### Validation Templates
607
+
608
+ #### Functionality Validation Template
609
+
610
+ | Function ID | Function Name | Expected Result | Actual Result | Status | Notes |
611
+ |-------------|---------------|-----------------|---------------|--------|-------|
612
+ | FUNC-001 | Function 1 | Success | Testing | In Progress | Description |
613
+ | FUNC-002 | Function 2 | Success | Success | Passed | Description |
614
+ | FUNC-003 | Function 3 | Success | Failed | Failed | Description |
615
+
616
+ #### Performance Validation Template
617
+
618
+ | Test Item | Target | Measured | Status | Notes |
619
+ |-----------|--------|----------|--------|-------|
620
+ | Response time | 1s | 0.8s | Passed | Description |
621
+ | Memory usage | 100MB | 85MB | Passed | Description |
622
+ | CPU utilization | 50% | 45% | Passed | Description |
623
+
624
+ ### Completion Criteria
625
+
626
+ #### Pass Criteria
627
+
628
+ - ✅ All required functionality validation passed
629
+ - ✅ Performance requirements met
630
+ - ✅ Security testing passed
631
+ - ✅ User acceptance passed
632
+ - ✅ Documentation validation completed
633
+
634
+ #### Reporting
635
+
636
+ - [ ] Validation report created
637
+ - [ ] Identified issues documented
638
+ - [ ] Improvements defined
639
+ - [ ] Acceptance approval document prepared
640
+
641
+ **Validation Team:**
642
+ - Developer: @developer
643
+ - QA: @qa_engineer
644
+ - Product Owner: @product_owner
645
+ - Final Approver: @stakeholder
646
+ """
647
+
648
+ def validate_generated_spec(self, spec_content: Dict[str, str]) -> Dict[str, Any]:
649
+ """
650
+ Validate quality of generated spec.
651
+
652
+ Args:
653
+ spec_content: Dictionary with spec.md, plan.md, acceptance_md
654
+
655
+ Returns:
656
+ Validation result with quality metrics
657
+ """
658
+ quality_score = 0.0
659
+ suggestions = []
660
+
661
+ # Check EARS format compliance
662
+ ears_compliance = self._check_ears_compliance(spec_content)
663
+ quality_score += ears_compliance * 0.4
664
+
665
+ # Check completeness
666
+ completeness = self._check_completeness(spec_content)
667
+ quality_score += completeness * 0.3
668
+
669
+ # Check content quality
670
+ content_quality = self._check_content_quality(spec_content)
671
+ quality_score += content_quality * 0.3
672
+
673
+ # Generate suggestions
674
+ if ears_compliance < 0.9:
675
+ suggestions.append("Improvement needed to fully comply with EARS format.")
676
+
677
+ if completeness < 0.8:
678
+ suggestions.append("Requirements and specifications need to be more detailed.")
679
+
680
+ if content_quality < 0.7:
681
+ suggestions.append("Domain-specific terminology and technical content need to be added.")
682
+
683
+ return {
684
+ "quality_score": min(max(quality_score, 0.0), 1.0),
685
+ "ears_compliance": ears_compliance,
686
+ "completeness": completeness,
687
+ "content_quality": content_quality,
688
+ "suggestions": suggestions,
689
+ }
690
+
691
+ def _check_ears_compliance(self, spec_content: Dict[str, str]) -> float:
692
+ """Check EARS format compliance."""
693
+ spec_md = spec_content.get("spec_md", "")
694
+
695
+ required_sections = [
696
+ "Overview",
697
+ "Environment",
698
+ "Assumptions",
699
+ "Requirements",
700
+ "Specifications",
701
+ ]
702
+
703
+ found_sections = 0
704
+ for section in required_sections:
705
+ if section in spec_md:
706
+ found_sections += 1
707
+
708
+ return found_sections / len(required_sections)
709
+
710
+ def _check_completeness(self, spec_content: Dict[str, str]) -> float:
711
+ """Check content completeness."""
712
+ spec_md = spec_content.get("spec_md", "")
713
+ plan_md = spec_content.get("plan_md", "")
714
+ acceptance_md = spec_content.get("acceptance_md", "")
715
+
716
+ # Check minimum content length
717
+ total_length = len(spec_md) + len(plan_md) + len(acceptance_md)
718
+ length_score = min(total_length / 2000, 1.0) # 2000 chars as baseline
719
+
720
+ # Check for content diversity
721
+ has_requirements = "Requirements" in spec_md
722
+ has_planning = "Implementation Plan" in plan_md
723
+ has_acceptance = "Acceptance" in acceptance_md
724
+
725
+ diversity_score = 0.0
726
+ if has_requirements:
727
+ diversity_score += 0.3
728
+ if has_planning:
729
+ diversity_score += 0.3
730
+ if has_acceptance:
731
+ diversity_score += 0.4
732
+
733
+ return (length_score + diversity_score) / 2
734
+
735
+ def _check_content_quality(self, spec_content: Dict[str, str]) -> float:
736
+ """Check content quality."""
737
+ spec_md = spec_content.get("spec_md", "")
738
+
739
+ # Check for technical terms
740
+ technical_indicators = [
741
+ "API",
742
+ "data",
743
+ "interface",
744
+ "module",
745
+ "component",
746
+ "architecture",
747
+ ]
748
+ technical_score = sum(1 for term in technical_indicators if term in spec_md) / len(technical_indicators)
749
+
750
+ # Check for specificity
751
+ has_requirements = re.search(r"REQ-\d+", spec_md)
752
+ has_specifications = re.search(r"SPEC-\d+", spec_md)
753
+
754
+ specificity_score = 0.0
755
+ if has_requirements:
756
+ specificity_score += 0.5
757
+ if has_specifications:
758
+ specificity_score += 0.5
759
+
760
+ return (technical_score + specificity_score) / 2
761
+
762
+ def create_spec_files(self, spec_id: str, content: Dict[str, str], base_dir: str = ".moai/specs") -> bool:
763
+ """
764
+ Create SPEC files in the correct directory structure.
765
+
766
+ Args:
767
+ spec_id: SPEC identifier
768
+ content: Dictionary with spec_md, plan_md, acceptance_md
769
+ base_dir: Base directory for specs
770
+
771
+ Returns:
772
+ True if files were created successfully
773
+ """
774
+ try:
775
+ # Create spec directory
776
+ spec_dir = os.path.join(base_dir, f"SPEC-{spec_id}")
777
+ os.makedirs(spec_dir, exist_ok=True)
778
+
779
+ # Create files
780
+ files_to_create = [
781
+ ("spec.md", content.get("spec_md", "")),
782
+ ("plan.md", content.get("plan_md", "")),
783
+ ("acceptance.md", content.get("acceptance_md", "")),
784
+ ]
785
+
786
+ for filename, content_text in files_to_create:
787
+ file_path = os.path.join(spec_dir, filename)
788
+ with open(file_path, "w", encoding="utf-8") as f:
789
+ f.write(content_text)
790
+
791
+ logger.info(f"Created spec file: {file_path}")
792
+
793
+ return True
794
+
795
+ except Exception as e:
796
+ logger.error(f"Failed to create spec files: {e}")
797
+ return False
798
+
799
+ def execute(self, tool_name: str, tool_args: Dict[str, Any], result: Any = None) -> Dict[str, Any]:
800
+ """
801
+ Execute the auto-spec completion hook.
802
+
803
+ Args:
804
+ tool_name: Name of the tool that was executed
805
+ tool_args: Arguments passed to the tool
806
+ result: Result from tool execution
807
+
808
+ Returns:
809
+ Execution result
810
+ """
811
+ start_time = time.time()
812
+
813
+ try:
814
+ # Check if we should trigger spec completion
815
+ if not self.should_trigger_spec_completion(tool_name, tool_args):
816
+ return {
817
+ "success": False,
818
+ "message": "Auto-spec completion not triggered",
819
+ "execution_time": time.time() - start_time,
820
+ }
821
+
822
+ # Detect code changes
823
+ changed_files = self.detect_code_changes(tool_name, tool_args, result)
824
+
825
+ if not changed_files:
826
+ return {
827
+ "success": False,
828
+ "message": "No code changes detected",
829
+ "execution_time": time.time() - start_time,
830
+ }
831
+
832
+ # Process each changed file
833
+ results = []
834
+ for file_path in changed_files:
835
+ try:
836
+ # Analyze the code file
837
+ analysis = self.spec_generator.analyze(file_path)
838
+
839
+ # Calculate confidence
840
+ confidence = self.calculate_completion_confidence(analysis)
841
+
842
+ # Skip if confidence is too low
843
+ min_confidence = self.auto_config.get("min_confidence", 0.7)
844
+ if confidence < min_confidence:
845
+ logger.info(f"Confidence {confidence} below threshold {min_confidence}")
846
+ continue
847
+
848
+ # Generate complete spec
849
+ spec_content = self.generate_complete_spec(analysis, file_path)
850
+
851
+ # Validate quality
852
+ validation = self.validate_generated_spec(spec_content)
853
+
854
+ # Create spec files
855
+ spec_id = spec_content["spec_id"]
856
+ created = self.create_spec_files(spec_id, spec_content)
857
+
858
+ results.append(
859
+ {
860
+ "file_path": file_path,
861
+ "spec_id": spec_id,
862
+ "confidence": confidence,
863
+ "quality_score": validation["quality_score"],
864
+ "created": created,
865
+ }
866
+ )
867
+
868
+ logger.info(f"Auto-generated SPEC for {file_path}: {spec_id}")
869
+
870
+ except Exception as e:
871
+ logger.error(f"Error processing {file_path}: {e}")
872
+ results.append({"file_path": file_path, "error": str(e)})
873
+
874
+ # Generate summary
875
+ successful_creations = [r for r in results if r.get("created", False)]
876
+ failed_creations = [r for r in results if not r.get("created", False)]
877
+
878
+ execution_result = {
879
+ "success": len(successful_creations) > 0,
880
+ "generated_specs": successful_creations,
881
+ "failed_files": failed_creations,
882
+ "execution_time": time.time() - start_time,
883
+ }
884
+
885
+ # Add notification message
886
+ if successful_creations:
887
+ execution_result["message"] = f"Auto-generated {len(successful_creations)} SPEC(s)"
888
+ elif failed_creations:
889
+ execution_result["message"] = "Auto-spec completion attempted but no specs created"
890
+ else:
891
+ execution_result["message"] = "No files required auto-spec completion"
892
+
893
+ return execution_result
894
+
895
+ except Exception as e:
896
+ logger.error(f"Error in auto-spec completion: {e}")
897
+ return {
898
+ "success": False,
899
+ "error": str(e),
900
+ "execution_time": time.time() - start_time,
901
+ }