moai-adk 0.25.4__py3-none-any.whl → 0.41.0__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 (672) 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 +60 -126
  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 +1560 -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 +683 -0
  20. moai_adk/cli/worktree/exceptions.py +89 -0
  21. moai_adk/cli/worktree/manager.py +493 -0
  22. moai_adk/cli/worktree/models.py +65 -0
  23. moai_adk/cli/worktree/registry.py +422 -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/migration.py +19 -9
  30. moai_adk/core/config/unified.py +610 -0
  31. moai_adk/core/context_manager.py +6 -12
  32. moai_adk/core/enterprise_features.py +1404 -0
  33. moai_adk/core/error_recovery_system.py +747 -116
  34. moai_adk/core/event_driven_hook_system.py +1371 -0
  35. moai_adk/core/git/__init__.py +8 -0
  36. moai_adk/core/git/branch_manager.py +3 -11
  37. moai_adk/core/git/checkpoint.py +1 -3
  38. moai_adk/core/git/conflict_detector.py +422 -0
  39. moai_adk/core/git/event_detector.py +16 -5
  40. moai_adk/core/git/manager.py +91 -1
  41. moai_adk/core/input_validation_middleware.py +1006 -0
  42. moai_adk/core/integration/engine.py +6 -18
  43. moai_adk/core/integration/integration_tester.py +10 -9
  44. moai_adk/core/integration/utils.py +1 -1
  45. moai_adk/core/issue_creator.py +10 -28
  46. moai_adk/core/jit_context_loader.py +956 -0
  47. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  48. moai_adk/core/language_config_resolver.py +578 -0
  49. moai_adk/core/language_validator.py +28 -41
  50. moai_adk/core/mcp/setup.py +15 -12
  51. moai_adk/core/merge/__init__.py +9 -0
  52. moai_adk/core/merge/analyzer.py +666 -0
  53. moai_adk/core/migration/alfred_to_moai_migrator.py +389 -0
  54. moai_adk/core/migration/backup_manager.py +131 -12
  55. moai_adk/core/migration/custom_element_scanner.py +358 -0
  56. moai_adk/core/migration/file_migrator.py +181 -18
  57. moai_adk/core/migration/interactive_checkbox_ui.py +499 -0
  58. moai_adk/core/migration/selective_restorer.py +470 -0
  59. moai_adk/core/migration/template_utils.py +74 -0
  60. moai_adk/core/migration/user_selection_ui.py +338 -0
  61. moai_adk/core/migration/version_detector.py +127 -27
  62. moai_adk/core/migration/version_migrator.py +47 -12
  63. moai_adk/core/performance/cache_system.py +8 -10
  64. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  65. moai_adk/core/project/backup_utils.py +9 -1
  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 +142 -93
  69. moai_adk/core/project/phase_executor.py +130 -111
  70. moai_adk/core/project/validator.py +6 -12
  71. moai_adk/core/quality/trust_checker.py +39 -37
  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 +116 -164
  75. moai_adk/core/session_manager.py +10 -26
  76. moai_adk/core/skill_loading_system.py +579 -0
  77. moai_adk/core/spec_status_manager.py +64 -74
  78. moai_adk/core/template/backup.py +48 -22
  79. moai_adk/core/template/config.py +142 -45
  80. moai_adk/core/template/merger.py +45 -27
  81. moai_adk/core/template/processor.py +391 -152
  82. moai_adk/core/template_engine.py +83 -41
  83. moai_adk/core/template_variable_synchronizer.py +431 -0
  84. moai_adk/core/unified_permission_manager.py +745 -0
  85. moai_adk/core/user_behavior_analytics.py +851 -0
  86. moai_adk/core/version_sync.py +477 -0
  87. moai_adk/foundation/__init__.py +56 -0
  88. moai_adk/foundation/backend.py +1027 -0
  89. moai_adk/foundation/database.py +1115 -0
  90. moai_adk/foundation/devops.py +1585 -0
  91. moai_adk/foundation/ears.py +431 -0
  92. moai_adk/foundation/frontend.py +870 -0
  93. moai_adk/foundation/git/commit_templates.py +4 -12
  94. moai_adk/foundation/git.py +376 -0
  95. moai_adk/foundation/langs.py +484 -0
  96. moai_adk/foundation/ml_ops.py +1162 -0
  97. moai_adk/foundation/testing.py +1524 -0
  98. moai_adk/foundation/trust/trust_principles.py +23 -72
  99. moai_adk/foundation/trust/validation_checklist.py +57 -162
  100. moai_adk/project/__init__.py +0 -0
  101. moai_adk/project/configuration.py +1084 -0
  102. moai_adk/project/documentation.py +566 -0
  103. moai_adk/project/schema.py +447 -0
  104. moai_adk/statusline/alfred_detector.py +1 -3
  105. moai_adk/statusline/config.py +18 -6
  106. moai_adk/statusline/enhanced_output_style_detector.py +23 -15
  107. moai_adk/statusline/main.py +109 -15
  108. moai_adk/statusline/renderer.py +85 -69
  109. moai_adk/statusline/update_checker.py +3 -9
  110. moai_adk/statusline/version_reader.py +140 -46
  111. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +716 -0
  112. moai_adk/templates/.claude/agents/moai/builder-agent.md +480 -0
  113. moai_adk/templates/.claude/agents/moai/builder-command.md +1194 -0
  114. moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
  115. moai_adk/templates/.claude/agents/moai/builder-skill.md +672 -0
  116. moai_adk/templates/.claude/agents/moai/expert-backend.md +903 -0
  117. moai_adk/templates/.claude/agents/moai/expert-database.md +782 -0
  118. moai_adk/templates/.claude/agents/moai/expert-debug.md +407 -0
  119. moai_adk/templates/.claude/agents/moai/expert-devops.md +722 -0
  120. moai_adk/templates/.claude/agents/moai/expert-frontend.md +727 -0
  121. moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
  122. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
  123. moai_adk/templates/.claude/agents/moai/expert-security.md +525 -0
  124. moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
  125. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1047 -0
  126. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +438 -0
  127. moai_adk/templates/.claude/agents/moai/manager-docs.md +578 -0
  128. moai_adk/templates/.claude/agents/moai/manager-git.md +1092 -0
  129. moai_adk/templates/.claude/agents/moai/manager-project.md +897 -0
  130. moai_adk/templates/.claude/agents/moai/manager-quality.md +640 -0
  131. moai_adk/templates/.claude/agents/moai/manager-spec.md +815 -0
  132. moai_adk/templates/.claude/agents/moai/manager-strategy.md +786 -0
  133. moai_adk/templates/.claude/agents/moai/manager-tdd.md +797 -0
  134. moai_adk/templates/.claude/agents/moai/mcp-context7.md +464 -0
  135. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1588 -0
  136. moai_adk/templates/.claude/agents/moai/mcp-notion.md +795 -0
  137. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +475 -0
  138. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1038 -0
  139. moai_adk/templates/.claude/commands/moai/0-project.md +1339 -0
  140. moai_adk/templates/.claude/commands/moai/1-plan.md +1367 -0
  141. moai_adk/templates/.claude/commands/moai/2-run.md +825 -0
  142. moai_adk/templates/.claude/commands/moai/3-sync.md +1358 -0
  143. moai_adk/templates/.claude/commands/moai/9-feedback.md +320 -0
  144. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  145. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  146. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  147. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +104 -0
  148. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +247 -0
  149. moai_adk/templates/.claude/hooks/moai/lib/common.py +161 -0
  150. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +444 -0
  151. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  152. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  153. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  154. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  155. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +407 -0
  156. moai_adk/templates/.claude/hooks/moai/lib/models.py +104 -0
  157. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +219 -0
  158. moai_adk/templates/.claude/hooks/moai/lib/project.py +777 -0
  159. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  160. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  161. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +804 -0
  162. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +542 -0
  163. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
  164. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
  165. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
  166. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
  167. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +866 -0
  168. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1125 -0
  169. moai_adk/templates/.claude/output-styles/moai/r2d2.md +643 -0
  170. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  171. moai_adk/templates/.claude/settings.json +209 -0
  172. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +302 -0
  173. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  174. moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
  175. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  176. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  177. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +302 -0
  178. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
  179. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +56 -0
  180. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +120 -0
  181. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  182. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +185 -0
  183. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +207 -0
  184. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
  185. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +324 -0
  186. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  187. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  188. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +326 -0
  189. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  190. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  191. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  192. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  193. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  194. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  195. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +194 -0
  196. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  197. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  198. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  199. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  200. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  201. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  202. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  203. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  204. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +454 -0
  205. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  206. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  207. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  208. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  209. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  210. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  211. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +280 -0
  212. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  213. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +327 -0
  214. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  215. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  216. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  217. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  218. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  219. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +243 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  229. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +670 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +432 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +467 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +420 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +449 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +414 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +228 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +171 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +239 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +363 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  280. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  281. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  282. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  283. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  284. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  285. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  286. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +430 -0
  287. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -0
  288. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  289. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +17 -0
  290. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +193 -0
  291. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  292. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  293. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  294. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  295. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  296. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  297. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  298. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +394 -0
  299. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -0
  300. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  301. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +17 -0
  302. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +472 -0
  303. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  304. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  305. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +377 -0
  306. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  307. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  308. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +386 -0
  309. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  310. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  311. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +418 -0
  312. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  313. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  314. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +383 -0
  315. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  316. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  317. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +504 -0
  318. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -0
  319. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  320. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +17 -0
  321. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +489 -0
  322. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  323. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  324. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +389 -0
  325. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -0
  326. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  327. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +17 -0
  328. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +432 -0
  329. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -0
  330. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  331. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  332. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +17 -0
  333. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +377 -0
  334. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  335. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  336. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +211 -0
  337. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  338. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  339. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  340. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  341. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  342. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  343. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  344. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +191 -0
  345. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  346. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  347. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  348. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  349. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  350. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  351. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +364 -0
  352. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  353. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  354. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +164 -0
  355. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  356. moai_adk/templates/.claude/skills/moai-library-mermaid/modules/advanced-patterns.md +465 -0
  357. moai_adk/templates/.claude/skills/moai-library-mermaid/modules/optimization.md +440 -0
  358. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  359. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +335 -0
  360. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  361. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  362. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +336 -0
  363. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +350 -0
  364. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  365. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  366. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  367. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  368. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  369. moai_adk/templates/.claude/skills/moai-library-nextra/modules/optimization.md +303 -0
  370. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  371. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +373 -0
  372. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  373. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  374. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  375. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  376. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  377. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  378. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +283 -0
  379. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  380. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  381. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  382. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  383. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  384. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  385. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  386. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  387. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  388. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  389. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  390. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  391. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  392. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  393. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  394. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  395. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  396. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  397. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  398. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  399. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  400. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  401. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  402. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  403. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  404. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  405. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  406. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  407. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  408. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  409. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  410. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  411. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  412. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +425 -0
  413. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  414. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  415. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +228 -0
  416. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  417. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  418. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  419. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  420. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  421. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  422. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +249 -0
  423. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  424. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  425. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  426. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  427. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  428. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +230 -0
  429. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  430. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  431. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  432. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  433. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  434. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  435. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +205 -0
  436. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  437. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  438. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  439. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  440. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  441. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  442. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +223 -0
  443. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  444. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  445. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  446. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  447. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  448. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  449. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +206 -0
  450. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  451. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  452. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  453. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  454. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  455. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  456. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  457. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  458. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  459. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +209 -0
  460. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  461. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  462. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  463. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  464. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  465. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  466. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  467. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +473 -0
  468. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  469. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
  470. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
  471. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
  472. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +306 -0
  473. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  474. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  475. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  476. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  477. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  478. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  479. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  480. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  481. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  482. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  483. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  484. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  485. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  486. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  487. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  488. moai_adk/templates/.claude/skills/moai-tool-opencode/SKILL.md +214 -0
  489. moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
  490. moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
  491. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
  492. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
  493. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
  494. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
  495. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
  496. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
  497. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
  498. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
  499. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
  500. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
  501. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
  502. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
  503. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
  504. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
  505. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
  506. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
  507. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
  508. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
  509. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
  510. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
  511. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
  512. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
  513. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
  514. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
  515. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
  516. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
  517. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
  518. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
  519. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
  520. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
  521. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
  522. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
  523. moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
  524. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +211 -0
  525. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  526. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/advanced-patterns.md +379 -0
  527. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/optimization.md +286 -0
  528. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  529. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  530. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +260 -0
  531. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  532. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  533. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  534. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
  535. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  536. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  537. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  538. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  539. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  540. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  541. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  542. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  543. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  544. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +336 -0
  545. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  546. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  547. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  548. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +386 -0
  549. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  550. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  551. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  552. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  553. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  554. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  555. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +307 -0
  556. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  557. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  558. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  559. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  560. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  561. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +269 -0
  562. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/advanced-patterns.md +576 -0
  563. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +302 -0
  564. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  565. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  566. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  567. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  568. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  569. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  570. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  571. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  572. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  573. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +263 -0
  574. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  575. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  576. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  577. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  578. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  579. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/optimization.md +505 -0
  580. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  581. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  582. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  583. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  584. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  585. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  586. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  587. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +327 -0
  588. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  589. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  590. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  591. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  592. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +313 -0
  593. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  594. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  595. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  596. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  597. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  598. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  599. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +265 -0
  600. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  601. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  602. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  603. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  604. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  605. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  606. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +227 -0
  607. moai_adk/templates/.claude/skills/moai-workflow-worktree/examples.md +606 -0
  608. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  609. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  610. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  611. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  612. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  613. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  614. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  615. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  616. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  617. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  618. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  619. moai_adk/templates/.claude/skills/moai-workflow-worktree/reference.md +357 -0
  620. moai_adk/templates/.git-hooks/pre-commit +103 -41
  621. moai_adk/templates/.git-hooks/pre-push +244 -31
  622. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  623. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  624. moai_adk/templates/.gitignore +181 -44
  625. moai_adk/templates/.lsp.json +152 -0
  626. moai_adk/templates/.mcp.json +6 -15
  627. moai_adk/templates/.moai/config/config.yaml +58 -0
  628. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  629. moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
  630. moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
  631. moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
  632. moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
  633. moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
  634. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +183 -0
  635. moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
  636. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  637. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  638. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  639. moai_adk/templates/.moai/config/sections/quality.yaml +18 -0
  640. moai_adk/templates/.moai/config/sections/system.yaml +24 -0
  641. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  642. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  643. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  644. moai_adk/templates/CLAUDE.md +804 -499
  645. moai_adk/utils/__init__.py +24 -1
  646. moai_adk/utils/banner.py +7 -10
  647. moai_adk/utils/common.py +49 -30
  648. moai_adk/utils/link_validator.py +4 -12
  649. moai_adk/utils/safe_file_reader.py +2 -6
  650. moai_adk/utils/timeout.py +160 -0
  651. moai_adk/utils/toon_utils.py +256 -0
  652. moai_adk/version.py +22 -0
  653. moai_adk-0.41.0.dist-info/METADATA +3274 -0
  654. moai_adk-0.41.0.dist-info/RECORD +683 -0
  655. {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/WHEEL +1 -1
  656. {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/entry_points.txt +1 -0
  657. moai_adk/cli/commands/backup.py +0 -82
  658. moai_adk/cli/commands/improve_user_experience.py +0 -348
  659. moai_adk/cli/commands/migrate.py +0 -158
  660. moai_adk/cli/commands/validate_links.py +0 -118
  661. moai_adk/core/config/auto_spec_config.py +0 -346
  662. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -925
  663. moai_adk/core/spec/confidence_scoring.py +0 -749
  664. moai_adk/core/spec/ears_template_engine.py +0 -1182
  665. moai_adk/core/spec/quality_validator.py +0 -721
  666. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
  667. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  668. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  669. moai_adk/utils/user_experience.py +0 -531
  670. moai_adk-0.25.4.dist-info/METADATA +0 -2279
  671. moai_adk-0.25.4.dist-info/RECORD +0 -112
  672. {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,866 @@
1
+ #!/usr/bin/env python3
2
+
3
+ """SessionEnd Hook: Cleanup and state saving on session end
4
+
5
+ Performs the following tasks on session end:
6
+ - Clean up temporary files and cache
7
+ - Save session metrics (for productivity analysis)
8
+ - Save work state snapshot (ensure work continuity)
9
+ - Warn uncommitted changes
10
+ - Generate session summary
11
+
12
+ Features:
13
+ - Clean up old temporary files
14
+ - Clean up cache files
15
+ - Collect and save session metrics
16
+ - Work state snapshot (current SPEC, TodoWrite items, etc.)
17
+ - Detect uncommitted Git changes
18
+ - Generate session summary message
19
+ """
20
+
21
+ import json
22
+ import logging
23
+ import shutil
24
+ import subprocess
25
+ import sys
26
+ import time
27
+ from datetime import datetime, timedelta
28
+ from pathlib import Path
29
+ from typing import Any, Dict, List, Optional
30
+
31
+ # Add module path
32
+ sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / "src"))
33
+
34
+ from lib.path_utils import ( # noqa: E402
35
+ ensure_moai_dir,
36
+ find_project_root,
37
+ get_safe_moai_path,
38
+ )
39
+
40
+ # Import unified timeout manager and Git operations manager
41
+ try:
42
+ from lib.common import ( # noqa: E402
43
+ format_duration,
44
+ get_summary_stats,
45
+ is_root_whitelisted,
46
+ suggest_moai_location,
47
+ )
48
+ from lib.config_manager import ConfigManager # noqa: E402
49
+ from lib.config_validator import ValidationIssue, get_config_validator
50
+ from lib.git_operations_manager import GitOperationType, get_git_manager
51
+ from lib.unified_timeout_manager import (
52
+ HookTimeoutConfig,
53
+ HookTimeoutError,
54
+ TimeoutPolicy,
55
+ get_timeout_manager,
56
+ hook_timeout_context,
57
+ )
58
+ except ImportError:
59
+ # Fallback implementations if new modules not available
60
+ def get_timeout_manager():
61
+ return None
62
+
63
+ def hook_timeout_context(hook_name, config=None):
64
+ import contextlib
65
+
66
+ @contextlib.contextmanager
67
+ def dummy_context():
68
+ yield
69
+
70
+ return dummy_context()
71
+
72
+ class HookTimeoutConfig: # type: ignore[no-redef]
73
+ def __init__(self, **kwargs):
74
+ pass
75
+
76
+ class TimeoutPolicy: # type: ignore[no-redef]
77
+ FAST = "fast"
78
+ NORMAL = "normal"
79
+ SLOW = "slow"
80
+
81
+ class HookTimeoutError(Exception): # type: ignore[no-redef]
82
+ pass
83
+
84
+ def get_git_manager():
85
+ return None
86
+
87
+ class GitOperationType: # type: ignore[no-redef]
88
+ STATUS = "status"
89
+ LOG = "log"
90
+
91
+ def get_config_validator():
92
+ return None
93
+
94
+ class ValidationIssue: # type: ignore[no-redef]
95
+ pass
96
+
97
+ ConfigManager = None # type: ignore
98
+ # Fallback implementations if module not found
99
+ import statistics
100
+
101
+ def format_duration(seconds):
102
+ """Format duration in seconds to readable string"""
103
+ if seconds < 60:
104
+ return f"{seconds:.1f}s"
105
+ minutes = seconds / 60
106
+ if minutes < 60:
107
+ return f"{minutes:.1f}m"
108
+ hours = minutes / 60
109
+ return f"{hours:.1f}h"
110
+
111
+ def get_summary_stats(values):
112
+ """Get summary statistics for a list of values"""
113
+ if not values:
114
+ return {"mean": 0, "min": 0, "max": 0, "std": 0}
115
+ return {
116
+ "mean": statistics.mean(values),
117
+ "min": min(values),
118
+ "max": max(values),
119
+ "std": statistics.stdev(values) if len(values) > 1 else 0,
120
+ }
121
+
122
+
123
+ logger = logging.getLogger(__name__)
124
+
125
+
126
+ def load_hook_timeout() -> int:
127
+ """Load hook timeout from config.yaml (default: 5000ms)
128
+
129
+ Returns:
130
+ Timeout in milliseconds
131
+ """
132
+ try:
133
+ import yaml
134
+
135
+ config_file = get_safe_moai_path("config/config.yaml")
136
+ if config_file.exists():
137
+ with open(config_file, "r", encoding="utf-8") as f:
138
+ config: Dict[str, Any] = yaml.safe_load(f) or {}
139
+ return config.get("hooks", {}).get("timeout_ms", 5000)
140
+ except Exception:
141
+ pass
142
+ return 5000
143
+
144
+
145
+ def get_graceful_degradation() -> bool:
146
+ """Load graceful_degradation setting from config.yaml (default: true)
147
+
148
+ Returns:
149
+ Whether graceful degradation is enabled
150
+ """
151
+ try:
152
+ import yaml
153
+
154
+ config_file = get_safe_moai_path("config/config.yaml")
155
+ if config_file.exists():
156
+ with open(config_file, "r", encoding="utf-8") as f:
157
+ config: Dict[str, Any] = yaml.safe_load(f) or {}
158
+ return config.get("hooks", {}).get("graceful_degradation", True)
159
+ except Exception:
160
+ pass
161
+ return True
162
+
163
+
164
+ def cleanup_old_files(config: Dict[str, Any]) -> Dict[str, int]:
165
+ """Clean up old files
166
+
167
+ Args:
168
+ config: Configuration dictionary
169
+
170
+ Returns:
171
+ Statistics of cleaned files
172
+ """
173
+ stats = {"temp_cleaned": 0, "cache_cleaned": 0, "total_cleaned": 0}
174
+
175
+ try:
176
+ cleanup_config = config.get("auto_cleanup", {})
177
+ if not cleanup_config.get("enabled", True):
178
+ return stats
179
+
180
+ cleanup_days = cleanup_config.get("cleanup_days", 7)
181
+ cutoff_date = datetime.now() - timedelta(days=cleanup_days)
182
+
183
+ # Clean up temporary files (use safe path to prevent creation in wrong directory)
184
+ temp_dir = get_safe_moai_path("temp")
185
+ if temp_dir.exists():
186
+ stats["temp_cleaned"] = cleanup_directory(temp_dir, cutoff_date, None, patterns=["*"])
187
+
188
+ # Clean up cache files (use safe path to prevent creation in wrong directory)
189
+ cache_dir = get_safe_moai_path("cache")
190
+ if cache_dir.exists():
191
+ stats["cache_cleaned"] = cleanup_directory(cache_dir, cutoff_date, None, patterns=["*"])
192
+
193
+ stats["total_cleaned"] = stats["temp_cleaned"] + stats["cache_cleaned"]
194
+
195
+ except Exception as e:
196
+ logger.error(f"File cleanup failed: {e}")
197
+
198
+ return stats
199
+
200
+
201
+ def cleanup_directory(
202
+ directory: Path,
203
+ cutoff_date: datetime,
204
+ max_files: Optional[int],
205
+ patterns: List[str],
206
+ ) -> int:
207
+ """Clean up directory files
208
+
209
+ Args:
210
+ directory: Target directory
211
+ cutoff_date: Cutoff date threshold
212
+ max_files: Maximum number of files to keep
213
+ patterns: List of file patterns to delete
214
+
215
+ Returns:
216
+ Number of deleted files
217
+ """
218
+ if not directory.exists():
219
+ return 0
220
+
221
+ cleaned_count = 0
222
+
223
+ try:
224
+ # Collect files matching patterns
225
+ files_to_check: list[Path] = []
226
+ for pattern in patterns:
227
+ files_to_check.extend(directory.glob(pattern))
228
+
229
+ # Sort by date (oldest first)
230
+ files_to_check.sort(key=lambda f: f.stat().st_mtime)
231
+
232
+ # Delete files
233
+ for file_path in files_to_check:
234
+ try:
235
+ # Check file modification time
236
+ file_mtime = datetime.fromtimestamp(file_path.stat().st_mtime)
237
+
238
+ # Delete if before cutoff date
239
+ if file_mtime < cutoff_date:
240
+ if file_path.is_file():
241
+ file_path.unlink()
242
+ cleaned_count += 1
243
+ elif file_path.is_dir():
244
+ shutil.rmtree(file_path)
245
+ cleaned_count += 1
246
+
247
+ except Exception as e:
248
+ logger.warning(f"Failed to delete {file_path}: {e}")
249
+ continue
250
+
251
+ except Exception as e:
252
+ logger.error(f"Directory cleanup failed for {directory}: {e}")
253
+
254
+ return cleaned_count
255
+
256
+
257
+ def save_session_metrics(payload: Dict[str, Any]) -> bool:
258
+ """Save session metrics (P0-1)
259
+
260
+ Args:
261
+ payload: Hook payload
262
+
263
+ Returns:
264
+ Success status
265
+ """
266
+ try:
267
+ # Create logs directory (use ensure_moai_dir for safe creation in project root)
268
+ logs_dir = ensure_moai_dir("logs/sessions")
269
+
270
+ # Collect session information
271
+ session_metrics = {
272
+ "session_id": datetime.now().strftime("%Y-%m-%d-%H%M%S"),
273
+ "end_time": datetime.now().isoformat(),
274
+ "cwd": str(find_project_root()),
275
+ "files_modified": count_modified_files(),
276
+ "git_commits": count_recent_commits(),
277
+ "specs_worked_on": extract_specs_from_memory(),
278
+ }
279
+
280
+ # Save session metrics
281
+ session_file = logs_dir / f"session-{session_metrics['session_id']}.json"
282
+ with open(session_file, "w", encoding="utf-8") as f:
283
+ json.dump(session_metrics, f, indent=2, ensure_ascii=False)
284
+
285
+ logger.info(f"Session metrics saved: {session_file}")
286
+ return True
287
+
288
+ except Exception as e:
289
+ logger.error(f"Failed to save session metrics: {e}")
290
+ return False
291
+
292
+
293
+ def save_work_state(payload: Dict[str, Any]) -> bool:
294
+ """Save work state snapshot (P0-2)
295
+
296
+ Args:
297
+ payload: Hook payload
298
+
299
+ Returns:
300
+ Success status
301
+ """
302
+ try:
303
+ # Create memory directory (use ensure_moai_dir for safe creation in project root)
304
+ ensure_moai_dir("memory")
305
+
306
+ # Collect work state
307
+ work_state = {
308
+ "last_updated": datetime.now().isoformat(),
309
+ "current_branch": get_current_branch(),
310
+ "uncommitted_changes": check_uncommitted_changes(),
311
+ "uncommitted_files": count_uncommitted_files(),
312
+ "specs_in_progress": extract_specs_from_memory(),
313
+ }
314
+
315
+ # Save state
316
+ state_file = get_safe_moai_path("memory/last-session-state.json")
317
+ with open(state_file, "w", encoding="utf-8") as f:
318
+ json.dump(work_state, f, indent=2, ensure_ascii=False)
319
+
320
+ logger.info(f"Work state saved: {state_file}")
321
+ return True
322
+
323
+ except Exception as e:
324
+ logger.error(f"Failed to save work state: {e}")
325
+ return False
326
+
327
+
328
+ def check_uncommitted_changes() -> Optional[str]:
329
+ """Warn uncommitted changes (P0-3) using optimized Git operations
330
+
331
+ Returns:
332
+ Warning message or None
333
+ """
334
+ git_manager = get_git_manager()
335
+ if git_manager:
336
+ try:
337
+ # Use optimized Git manager
338
+ from lib.git_operations_manager import GitCommand
339
+
340
+ status_result = git_manager.execute_git_command(
341
+ GitCommand(
342
+ operation_type=GitOperationType.STATUS,
343
+ args=["status", "--porcelain"],
344
+ cache_ttl_seconds=5, # Short TTL for status
345
+ timeout_seconds=3,
346
+ )
347
+ )
348
+
349
+ if status_result.success:
350
+ uncommitted = status_result.stdout.strip()
351
+ if uncommitted:
352
+ line_count = len(uncommitted.split("\n"))
353
+ return f"⚠️ {line_count} uncommitted files detected - Consider committing or stashing changes"
354
+
355
+ except Exception as e:
356
+ logger.warning(f"Git manager failed for uncommitted changes check: {e}")
357
+
358
+ # Fallback to direct Git command
359
+ try:
360
+ result = subprocess.run(["git", "status", "--porcelain"], capture_output=True, text=True, timeout=1)
361
+
362
+ if result.returncode == 0:
363
+ uncommitted = result.stdout.strip()
364
+ if uncommitted:
365
+ line_count = len(uncommitted.split("\n"))
366
+ return f"⚠️ {line_count} uncommitted files detected - Consider committing or stashing changes"
367
+
368
+ except (subprocess.TimeoutExpired, FileNotFoundError):
369
+ pass
370
+ except Exception as e:
371
+ logger.warning(f"Failed to check uncommitted changes: {e}")
372
+
373
+ return None
374
+
375
+
376
+ def get_current_branch() -> Optional[str]:
377
+ """Get current Git branch name using optimized Git operations
378
+
379
+ Returns:
380
+ Branch name or None if query fails
381
+ """
382
+ git_manager = get_git_manager()
383
+ if git_manager:
384
+ try:
385
+ from lib.git_operations_manager import GitCommand
386
+
387
+ branch_result = git_manager.execute_git_command(
388
+ GitCommand(
389
+ operation_type=GitOperationType.BRANCH,
390
+ args=["rev-parse", "--abbrev-ref", "HEAD"],
391
+ cache_ttl_seconds=30,
392
+ timeout_seconds=3,
393
+ )
394
+ )
395
+
396
+ if branch_result.success:
397
+ return branch_result.stdout.strip()
398
+
399
+ except Exception as e:
400
+ logger.warning(f"Git manager failed for branch query: {e}")
401
+
402
+ # Fallback to direct Git command
403
+ try:
404
+ result = subprocess.run(
405
+ ["git", "rev-parse", "--abbrev-ref", "HEAD"],
406
+ capture_output=True,
407
+ text=True,
408
+ timeout=1,
409
+ )
410
+ if result.returncode == 0:
411
+ return result.stdout.strip()
412
+ except Exception:
413
+ pass
414
+
415
+ return None
416
+
417
+
418
+ def count_modified_files() -> int:
419
+ """Count number of modified files using optimized Git operations"""
420
+ git_manager = get_git_manager()
421
+ if git_manager:
422
+ try:
423
+ from lib.git_operations_manager import GitCommand
424
+
425
+ status_result = git_manager.execute_git_command(
426
+ GitCommand(
427
+ operation_type=GitOperationType.STATUS,
428
+ args=["status", "--porcelain"],
429
+ cache_ttl_seconds=5,
430
+ timeout_seconds=3,
431
+ )
432
+ )
433
+
434
+ if status_result.success:
435
+ return len([line for line in status_result.stdout.strip().split("\n") if line])
436
+
437
+ except Exception as e:
438
+ logger.warning(f"Git manager failed for file count: {e}")
439
+
440
+ # Fallback to direct Git command
441
+ try:
442
+ result = subprocess.run(["git", "status", "--porcelain"], capture_output=True, text=True, timeout=1)
443
+ if result.returncode == 0:
444
+ return len([line for line in result.stdout.strip().split("\n") if line])
445
+ except Exception:
446
+ pass
447
+
448
+ return 0
449
+
450
+
451
+ def count_uncommitted_files() -> int:
452
+ """Count number of uncommitted files"""
453
+ return count_modified_files()
454
+
455
+
456
+ def count_recent_commits() -> int:
457
+ """Count recent commits (during this session) using optimized Git operations"""
458
+ git_manager = get_git_manager()
459
+ if git_manager:
460
+ try:
461
+ from lib.git_operations_manager import GitCommand
462
+
463
+ log_result = git_manager.execute_git_command(
464
+ GitCommand(
465
+ operation_type=GitOperationType.LOG,
466
+ args=["rev-list", "--since=1 hour", "HEAD"],
467
+ cache_ttl_seconds=60, # Cache for 1 minute
468
+ timeout_seconds=5,
469
+ )
470
+ )
471
+
472
+ if log_result.success:
473
+ commits = [line for line in log_result.stdout.strip().split("\n") if line]
474
+ return len(commits)
475
+
476
+ except Exception as e:
477
+ logger.warning(f"Git manager failed for recent commits: {e}")
478
+
479
+ # Fallback to direct Git command
480
+ try:
481
+ result = subprocess.run(
482
+ ["git", "rev-list", "--since=1 hour", "HEAD"],
483
+ capture_output=True,
484
+ text=True,
485
+ timeout=1,
486
+ )
487
+ if result.returncode == 0:
488
+ commits = [line for line in result.stdout.strip().split("\n") if line]
489
+ return len(commits)
490
+ except Exception:
491
+ pass
492
+
493
+ return 0
494
+
495
+
496
+ def extract_specs_from_memory() -> List[str]:
497
+ """Extract SPEC information from memory"""
498
+ specs = []
499
+
500
+ try:
501
+ # Query recent SPECs from command_execution_state.json (use safe path)
502
+ state_file = get_safe_moai_path("memory/command-execution-state.json")
503
+ if state_file.exists():
504
+ with open(state_file, "r", encoding="utf-8") as f:
505
+ state_data = json.load(f)
506
+
507
+ # Extract recent SPEC IDs
508
+ if "last_specs" in state_data:
509
+ specs = state_data["last_specs"][:3] # Latest 3
510
+
511
+ except Exception as e:
512
+ logger.warning(f"Failed to extract specs from memory: {e}")
513
+
514
+ return specs
515
+
516
+
517
+ # Note: is_root_whitelisted, get_file_pattern_category, and suggest_moai_location
518
+ # are now imported from lib.common (consolidated from duplicate implementations)
519
+
520
+
521
+ def scan_root_violations(config: Dict[str, Any]) -> List[Dict[str, str]]:
522
+ """Scan project root for document management violations
523
+
524
+ Args:
525
+ config: Configuration dictionary
526
+
527
+ Returns:
528
+ List of violation dictionaries with file info and suggested location
529
+ """
530
+ violations = []
531
+
532
+ try:
533
+ # Get project root (always use find_project_root for consistent behavior)
534
+ project_root = find_project_root()
535
+
536
+ # Scan root directory
537
+ for item in project_root.iterdir():
538
+ # Skip directories (except backup directories)
539
+ if item.is_dir():
540
+ # Check for backup directories
541
+ if item.name.endswith("-backup") or item.name.endswith("_backup") or "_backup_" in item.name:
542
+ suggested = suggest_moai_location(item.name, config)
543
+ violations.append(
544
+ {
545
+ "file": item.name + "/",
546
+ "type": "directory",
547
+ "suggested": suggested,
548
+ }
549
+ )
550
+ continue
551
+
552
+ # Skip hidden files and directories
553
+ if item.name.startswith("."):
554
+ continue
555
+
556
+ # Check if whitelisted
557
+ if is_root_whitelisted(item.name, config):
558
+ continue
559
+
560
+ # Not whitelisted - add to violations
561
+ suggested = suggest_moai_location(item.name, config)
562
+ violations.append({"file": item.name, "type": "file", "suggested": suggested})
563
+
564
+ except Exception as e:
565
+ logger.warning(f"Failed to scan root violations: {e}")
566
+
567
+ return violations
568
+
569
+
570
+ def generate_migration_report(violations: List[Dict[str, str]]) -> str:
571
+ """Generate migration suggestions report
572
+
573
+ Args:
574
+ violations: List of violations
575
+
576
+ Returns:
577
+ Formatted report string
578
+ """
579
+ if not violations:
580
+ return ""
581
+
582
+ report_lines = [
583
+ "\n⚠️ Document Management Violations Detected",
584
+ f" Found {len(violations)} misplaced file(s) in project root:\n",
585
+ ]
586
+
587
+ for idx, violation in enumerate(violations, 1):
588
+ file_display = violation["file"]
589
+ suggested = violation["suggested"]
590
+ report_lines.append(f" {idx}. {file_display} → {suggested}")
591
+
592
+ report_lines.append("\n Action: Move files to suggested locations or update root_whitelist")
593
+ report_lines.append(' Guide: Skill("moai-core-document-management")')
594
+
595
+ return "\n".join(report_lines)
596
+
597
+
598
+ def generate_session_summary(
599
+ cleanup_stats: Dict[str, int], work_state: Dict[str, Any], violations_count: int = 0
600
+ ) -> str:
601
+ """Generate session summary (P1-3)
602
+
603
+ Args:
604
+ cleanup_stats: Cleanup statistics
605
+ work_state: Work state
606
+ violations_count: Number of document management violations
607
+
608
+ Returns:
609
+ Summary message
610
+ """
611
+ summary_lines = ["✅ Session Ended"]
612
+
613
+ try:
614
+ # Work information
615
+ specs = work_state.get("specs_in_progress", [])
616
+ if specs:
617
+ summary_lines.append(f" • Worked on: {', '.join(specs)}")
618
+
619
+ # File modification information
620
+ files_modified = work_state.get("uncommitted_files", 0)
621
+ if files_modified > 0:
622
+ summary_lines.append(f" • Files modified: {files_modified}")
623
+
624
+ # Cleanup information
625
+ total_cleaned = cleanup_stats.get("total_cleaned", 0)
626
+ if total_cleaned > 0:
627
+ summary_lines.append(f" • Cleaned: {total_cleaned} temp files")
628
+
629
+ # Document management violations
630
+ if violations_count > 0:
631
+ summary_lines.append(f" ⚠️ {violations_count} root violations detected (see below)")
632
+
633
+ except Exception as e:
634
+ logger.warning(f"Failed to generate session summary: {e}")
635
+
636
+ return "\n".join(summary_lines)
637
+
638
+
639
+ def execute_session_end_workflow() -> tuple[Dict[str, Any], str]:
640
+ """Execute the session end workflow with proper error handling"""
641
+ start_time = time.time()
642
+
643
+ # Load configuration
644
+ if ConfigManager:
645
+ config = ConfigManager().load_config()
646
+ else:
647
+ config = {}
648
+
649
+ # Generate hook payload (simple version)
650
+ payload = {"cwd": str(find_project_root())}
651
+
652
+ results = {
653
+ "hook": "session_end__auto_cleanup",
654
+ "success": True,
655
+ "execution_time_seconds": 0,
656
+ "cleanup_stats": {"total_cleaned": 0},
657
+ "work_state_saved": False,
658
+ "session_metrics_saved": False,
659
+ "uncommitted_warning": None,
660
+ "session_summary": "",
661
+ "timestamp": datetime.now().isoformat(),
662
+ "performance": {
663
+ "git_manager_used": get_git_manager() is not None,
664
+ "timeout_manager_used": get_timeout_manager() is not None,
665
+ "config_validator_used": get_config_validator() is not None,
666
+ },
667
+ }
668
+
669
+ try:
670
+ # P0-1: Save session metrics
671
+ if save_session_metrics(payload):
672
+ results["session_metrics_saved"] = True
673
+
674
+ # P0-2: Save work state snapshot
675
+ work_state = {}
676
+ if save_work_state(payload):
677
+ results["work_state_saved"] = True
678
+ work_state = {
679
+ "uncommitted_files": count_uncommitted_files(),
680
+ "specs_in_progress": extract_specs_from_memory(),
681
+ }
682
+
683
+ # P0-3: Warn uncommitted changes
684
+ uncommitted_warning = check_uncommitted_changes()
685
+ if uncommitted_warning:
686
+ results["uncommitted_warning"] = uncommitted_warning
687
+
688
+ # P1-1: Clean up temporary files
689
+ cleanup_stats = cleanup_old_files(config)
690
+ results["cleanup_stats"] = cleanup_stats
691
+
692
+ # P1-2: Document Management - Scan root violations
693
+ violations = []
694
+ migration_report = ""
695
+ doc_mgmt = config.get("document_management", {})
696
+ if doc_mgmt.get("enabled", True):
697
+ violations = scan_root_violations(config)
698
+ if violations:
699
+ migration_report = generate_migration_report(violations)
700
+ results["document_violations"] = {
701
+ "count": len(violations),
702
+ "violations": violations,
703
+ }
704
+
705
+ # P1-3: Generate session summary
706
+ session_summary = generate_session_summary(cleanup_stats, work_state, len(violations))
707
+ results["session_summary"] = session_summary
708
+
709
+ # Add migration report to summary if violations exist
710
+ if migration_report:
711
+ results["migration_report"] = migration_report
712
+
713
+ # Record execution time
714
+ execution_time = time.time() - start_time
715
+ results["execution_time_seconds"] = round(execution_time, 2)
716
+
717
+ return results, migration_report
718
+
719
+ except Exception as e:
720
+ results["success"] = False
721
+ results["error"] = str(e)
722
+ results["execution_time_seconds"] = round(time.time() - start_time, 2)
723
+ return results, ""
724
+
725
+
726
+ def main() -> None:
727
+ """Main function
728
+
729
+ SessionEnd Hook entry point for cleanup and work state tracking.
730
+ Cleans up temporary files, saves session metrics, and warns uncommitted changes.
731
+
732
+ Features:
733
+ - Optimized timeout handling with unified manager
734
+ - Enhanced error handling with graceful degradation
735
+ - Resource monitoring and cleanup
736
+ - Performance optimization with Git operations manager
737
+
738
+ Returns:
739
+ None
740
+ """
741
+ # Configure timeout for session end hook
742
+ timeout_config = HookTimeoutConfig(
743
+ policy=TimeoutPolicy.NORMAL,
744
+ custom_timeout_ms=5000, # 5 seconds
745
+ retry_count=1,
746
+ retry_delay_ms=500,
747
+ graceful_degradation=True,
748
+ memory_limit_mb=150, # Higher memory limit for cleanup operations
749
+ )
750
+
751
+ # Use unified timeout manager if available
752
+ timeout_manager = get_timeout_manager()
753
+ if timeout_manager:
754
+ try:
755
+ results, migration_report = timeout_manager.execute_with_timeout(
756
+ "session_end__auto_cleanup",
757
+ execute_session_end_workflow,
758
+ config=timeout_config,
759
+ )
760
+
761
+ # Print results
762
+ output_lines = [json.dumps(results, ensure_ascii=False, indent=2)]
763
+
764
+ # Print migration report separately for visibility
765
+ if migration_report:
766
+ output_lines.append(migration_report)
767
+
768
+ print("\n".join(output_lines))
769
+
770
+ except HookTimeoutError as e:
771
+ # Enhanced timeout error handling
772
+ timeout_response = {
773
+ "hook": "session_end__auto_cleanup",
774
+ "success": False,
775
+ "error": f"Hook execution timeout: {str(e)}",
776
+ "error_details": {
777
+ "hook_id": e.hook_id,
778
+ "timeout_seconds": e.timeout_seconds,
779
+ "execution_time": e.execution_time,
780
+ "will_retry": e.will_retry,
781
+ },
782
+ "graceful_degradation": True,
783
+ "timestamp": datetime.now().isoformat(),
784
+ }
785
+ timeout_response["message"] = "Hook timeout but continuing due to graceful degradation"
786
+ print(json.dumps(timeout_response, ensure_ascii=False, indent=2))
787
+
788
+ except Exception as e:
789
+ # Enhanced error handling with context
790
+ error_response = {
791
+ "hook": "session_end__auto_cleanup",
792
+ "success": False,
793
+ "error": f"Hook execution failed: {str(e)}",
794
+ "error_details": {
795
+ "error_type": type(e).__name__,
796
+ "message": str(e),
797
+ "graceful_degradation": True,
798
+ },
799
+ "timestamp": datetime.now().isoformat(),
800
+ }
801
+ error_response["message"] = "Hook failed but continuing due to graceful degradation"
802
+ print(json.dumps(error_response, ensure_ascii=False, indent=2))
803
+
804
+ else:
805
+ # Fallback to legacy timeout handling
806
+ try:
807
+ timeout_seconds = load_hook_timeout() / 1000
808
+ graceful_degradation = get_graceful_degradation()
809
+
810
+ # Legacy timeout implementation
811
+ import signal
812
+
813
+ def timeout_handler(signum, frame):
814
+ raise TimeoutError("Hook execution timeout")
815
+
816
+ signal.signal(signal.SIGALRM, timeout_handler)
817
+ signal.alarm(int(timeout_seconds))
818
+
819
+ try:
820
+ results, migration_report = execute_session_end_workflow()
821
+
822
+ # Print results
823
+ output_lines = [json.dumps(results, ensure_ascii=False, indent=2)]
824
+
825
+ # Print migration report separately for visibility
826
+ if migration_report:
827
+ output_lines.append(migration_report)
828
+
829
+ print("\n".join(output_lines))
830
+
831
+ finally:
832
+ signal.alarm(0) # Clear timeout
833
+
834
+ except TimeoutError as e:
835
+ # Handle timeout with graceful degradation
836
+ result = {
837
+ "hook": "session_end__auto_cleanup",
838
+ "success": False,
839
+ "error": f"Hook execution timeout: {str(e)}",
840
+ "graceful_degradation": graceful_degradation,
841
+ "timestamp": datetime.now().isoformat(),
842
+ }
843
+
844
+ if graceful_degradation:
845
+ result["message"] = "Hook timeout but continuing due to graceful degradation"
846
+
847
+ print(json.dumps(result, ensure_ascii=False, indent=2))
848
+
849
+ except Exception as e:
850
+ # Handle exceptions with graceful degradation
851
+ result = {
852
+ "hook": "session_end__auto_cleanup",
853
+ "success": False,
854
+ "error": f"Hook execution failed: {str(e)}",
855
+ "graceful_degradation": graceful_degradation,
856
+ "timestamp": datetime.now().isoformat(),
857
+ }
858
+
859
+ if graceful_degradation:
860
+ result["message"] = "Hook failed but continuing due to graceful degradation"
861
+
862
+ print(json.dumps(result, ensure_ascii=False, indent=2))
863
+
864
+
865
+ if __name__ == "__main__":
866
+ main()