moai-adk 0.8.0__py3-none-any.whl → 1.1.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.
Files changed (881) hide show
  1. moai_adk/__init__.py +2 -6
  2. moai_adk/__main__.py +267 -21
  3. moai_adk/astgrep/__init__.py +37 -0
  4. moai_adk/astgrep/analyzer.py +522 -0
  5. moai_adk/astgrep/models.py +124 -0
  6. moai_adk/astgrep/rules.py +179 -0
  7. moai_adk/cli/__init__.py +6 -2
  8. moai_adk/cli/commands/__init__.py +1 -4
  9. moai_adk/cli/commands/analyze.py +125 -0
  10. moai_adk/cli/commands/doctor.py +24 -6
  11. moai_adk/cli/commands/init.py +437 -57
  12. moai_adk/cli/commands/language.py +254 -0
  13. moai_adk/cli/commands/rank.py +449 -0
  14. moai_adk/cli/commands/status.py +15 -14
  15. moai_adk/cli/commands/switch.py +325 -0
  16. moai_adk/cli/commands/update.py +2195 -93
  17. moai_adk/cli/main.py +3 -2
  18. moai_adk/cli/prompts/init_prompts.py +457 -108
  19. moai_adk/cli/prompts/translations/__init__.py +573 -0
  20. moai_adk/cli/spec_status.py +263 -0
  21. moai_adk/cli/ui/__init__.py +44 -0
  22. moai_adk/cli/ui/progress.py +422 -0
  23. moai_adk/cli/ui/prompts.py +448 -0
  24. moai_adk/cli/ui/theme.py +129 -0
  25. moai_adk/cli/worktree/__init__.py +27 -0
  26. moai_adk/cli/worktree/__main__.py +31 -0
  27. moai_adk/cli/worktree/cli.py +788 -0
  28. moai_adk/cli/worktree/exceptions.py +89 -0
  29. moai_adk/cli/worktree/manager.py +648 -0
  30. moai_adk/cli/worktree/models.py +65 -0
  31. moai_adk/cli/worktree/registry.py +422 -0
  32. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  33. moai_adk/core/__init__.py +0 -1
  34. moai_adk/core/analysis/__init__.py +9 -0
  35. moai_adk/core/analysis/session_analyzer.py +400 -0
  36. moai_adk/core/claude_integration.py +393 -0
  37. moai_adk/core/command_helpers.py +270 -0
  38. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  39. moai_adk/core/config/__init__.py +6 -0
  40. moai_adk/core/config/migration.py +148 -17
  41. moai_adk/core/config/unified.py +617 -0
  42. moai_adk/core/context_manager.py +273 -0
  43. moai_adk/core/credentials.py +264 -0
  44. moai_adk/core/diagnostics/slash_commands.py +0 -1
  45. moai_adk/core/enterprise_features.py +1404 -0
  46. moai_adk/core/error_recovery_system.py +1920 -0
  47. moai_adk/core/event_driven_hook_system.py +1371 -0
  48. moai_adk/core/git/__init__.py +8 -1
  49. moai_adk/core/git/branch.py +0 -1
  50. moai_adk/core/git/branch_manager.py +2 -10
  51. moai_adk/core/git/checkpoint.py +1 -7
  52. moai_adk/core/git/commit.py +0 -1
  53. moai_adk/core/git/conflict_detector.py +422 -0
  54. moai_adk/core/git/event_detector.py +16 -7
  55. moai_adk/core/git/manager.py +91 -2
  56. moai_adk/core/input_validation_middleware.py +1006 -0
  57. moai_adk/core/integration/__init__.py +22 -0
  58. moai_adk/core/integration/engine.py +157 -0
  59. moai_adk/core/integration/integration_tester.py +226 -0
  60. moai_adk/core/integration/models.py +88 -0
  61. moai_adk/core/integration/utils.py +211 -0
  62. moai_adk/core/issue_creator.py +305 -0
  63. moai_adk/core/jit_context_loader.py +956 -0
  64. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  65. moai_adk/core/language_config.py +202 -0
  66. moai_adk/core/language_config_resolver.py +578 -0
  67. moai_adk/core/language_validator.py +543 -0
  68. moai_adk/core/mcp/setup.py +116 -0
  69. moai_adk/core/merge/__init__.py +9 -0
  70. moai_adk/core/merge/analyzer.py +666 -0
  71. moai_adk/core/migration/__init__.py +18 -0
  72. moai_adk/core/migration/alfred_to_moai_migrator.py +389 -0
  73. moai_adk/core/migration/backup_manager.py +327 -0
  74. moai_adk/core/migration/custom_element_scanner.py +358 -0
  75. moai_adk/core/migration/file_migrator.py +381 -0
  76. moai_adk/core/migration/interactive_checkbox_ui.py +499 -0
  77. moai_adk/core/migration/selective_restorer.py +470 -0
  78. moai_adk/core/migration/template_utils.py +74 -0
  79. moai_adk/core/migration/user_selection_ui.py +338 -0
  80. moai_adk/core/migration/version_detector.py +243 -0
  81. moai_adk/core/migration/version_migrator.py +263 -0
  82. moai_adk/core/model_allocator.py +241 -0
  83. moai_adk/core/performance/__init__.py +6 -0
  84. moai_adk/core/performance/cache_system.py +316 -0
  85. moai_adk/core/performance/parallel_processor.py +116 -0
  86. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  87. moai_adk/core/project/__init__.py +0 -1
  88. moai_adk/core/project/backup_utils.py +13 -8
  89. moai_adk/core/project/checker.py +2 -4
  90. moai_adk/core/project/detector.py +189 -22
  91. moai_adk/core/project/initializer.py +177 -29
  92. moai_adk/core/project/phase_executor.py +482 -48
  93. moai_adk/core/project/validator.py +22 -32
  94. moai_adk/core/quality/__init__.py +1 -1
  95. moai_adk/core/quality/trust_checker.py +66 -110
  96. moai_adk/core/quality/validators/__init__.py +1 -1
  97. moai_adk/core/quality/validators/base_validator.py +1 -1
  98. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  99. moai_adk/core/robust_json_parser.py +611 -0
  100. moai_adk/core/rollback_manager.py +953 -0
  101. moai_adk/core/session_manager.py +651 -0
  102. moai_adk/core/skill_loading_system.py +579 -0
  103. moai_adk/core/spec_status_manager.py +478 -0
  104. moai_adk/core/template/__init__.py +0 -1
  105. moai_adk/core/template/backup.py +168 -21
  106. moai_adk/core/template/config.py +141 -45
  107. moai_adk/core/template/languages.py +0 -1
  108. moai_adk/core/template/merger.py +107 -32
  109. moai_adk/core/template/processor.py +1075 -74
  110. moai_adk/core/template_engine.py +319 -0
  111. moai_adk/core/template_variable_synchronizer.py +431 -0
  112. moai_adk/core/unified_permission_manager.py +745 -0
  113. moai_adk/core/user_behavior_analytics.py +851 -0
  114. moai_adk/core/version_sync.py +477 -0
  115. moai_adk/foundation/__init__.py +37 -0
  116. moai_adk/foundation/backend.py +1027 -0
  117. moai_adk/foundation/database.py +1115 -0
  118. moai_adk/foundation/devops.py +1585 -0
  119. moai_adk/foundation/ears.py +431 -0
  120. moai_adk/foundation/frontend.py +870 -0
  121. moai_adk/foundation/git/__init__.py +376 -0
  122. moai_adk/foundation/git/commit_templates.py +557 -0
  123. moai_adk/foundation/langs.py +484 -0
  124. moai_adk/foundation/ml_ops.py +1162 -0
  125. moai_adk/foundation/testing.py +1524 -0
  126. moai_adk/foundation/trust/trust_principles.py +676 -0
  127. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  128. moai_adk/loop/__init__.py +54 -0
  129. moai_adk/loop/controller.py +305 -0
  130. moai_adk/loop/feedback.py +230 -0
  131. moai_adk/loop/state.py +209 -0
  132. moai_adk/loop/storage.py +220 -0
  133. moai_adk/lsp/__init__.py +70 -0
  134. moai_adk/lsp/client.py +320 -0
  135. moai_adk/lsp/models.py +261 -0
  136. moai_adk/lsp/protocol.py +404 -0
  137. moai_adk/lsp/server_manager.py +248 -0
  138. moai_adk/project/__init__.py +0 -0
  139. moai_adk/project/configuration.py +1091 -0
  140. moai_adk/project/documentation.py +566 -0
  141. moai_adk/project/schema.py +447 -0
  142. moai_adk/py.typed +0 -0
  143. moai_adk/ralph/__init__.py +37 -0
  144. moai_adk/ralph/engine.py +307 -0
  145. moai_adk/rank/__init__.py +21 -0
  146. moai_adk/rank/auth.py +425 -0
  147. moai_adk/rank/client.py +557 -0
  148. moai_adk/rank/config.py +147 -0
  149. moai_adk/rank/hook.py +1503 -0
  150. moai_adk/rank/py.typed +0 -0
  151. moai_adk/statusline/__init__.py +41 -0
  152. moai_adk/statusline/alfred_detector.py +105 -0
  153. moai_adk/statusline/config.py +376 -0
  154. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  155. moai_adk/statusline/git_collector.py +190 -0
  156. moai_adk/statusline/main.py +341 -0
  157. moai_adk/statusline/memory_collector.py +268 -0
  158. moai_adk/statusline/metrics_tracker.py +78 -0
  159. moai_adk/statusline/renderer.py +359 -0
  160. moai_adk/statusline/update_checker.py +129 -0
  161. moai_adk/statusline/version_reader.py +741 -0
  162. moai_adk/tag_system/__init__.py +48 -0
  163. moai_adk/tag_system/atomic_ops.py +117 -0
  164. moai_adk/tag_system/linkage.py +335 -0
  165. moai_adk/tag_system/parser.py +176 -0
  166. moai_adk/tag_system/validator.py +200 -0
  167. moai_adk/templates/.claude/agents/moai/builder-agent.md +490 -0
  168. moai_adk/templates/.claude/agents/moai/builder-command.md +1218 -0
  169. moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
  170. moai_adk/templates/.claude/agents/moai/builder-skill.md +682 -0
  171. moai_adk/templates/.claude/agents/moai/expert-backend.md +963 -0
  172. moai_adk/templates/.claude/agents/moai/expert-debug.md +407 -0
  173. moai_adk/templates/.claude/agents/moai/expert-devops.md +722 -0
  174. moai_adk/templates/.claude/agents/moai/expert-frontend.md +748 -0
  175. moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
  176. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
  177. moai_adk/templates/.claude/agents/moai/expert-security.md +525 -0
  178. moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
  179. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +438 -0
  180. moai_adk/templates/.claude/agents/moai/manager-docs.md +578 -0
  181. moai_adk/templates/.claude/agents/moai/manager-git.md +1092 -0
  182. moai_adk/templates/.claude/agents/moai/manager-project.md +971 -0
  183. moai_adk/templates/.claude/agents/moai/manager-quality.md +641 -0
  184. moai_adk/templates/.claude/agents/moai/manager-spec.md +815 -0
  185. moai_adk/templates/.claude/agents/moai/manager-strategy.md +811 -0
  186. moai_adk/templates/.claude/agents/moai/manager-tdd.md +797 -0
  187. moai_adk/templates/.claude/commands/moai/0-project.md +438 -0
  188. moai_adk/templates/.claude/commands/moai/1-plan.md +1447 -0
  189. moai_adk/templates/.claude/commands/moai/2-run.md +850 -0
  190. moai_adk/templates/.claude/commands/moai/3-sync.md +1398 -0
  191. moai_adk/templates/.claude/commands/moai/9-feedback.md +330 -0
  192. moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
  193. moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
  194. moai_adk/templates/.claude/commands/moai/fix.md +264 -0
  195. moai_adk/templates/.claude/commands/moai/loop.md +363 -0
  196. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  197. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  198. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  199. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +41 -0
  200. moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
  201. moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
  202. moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/checkpoint.py +13 -37
  203. moai_adk/templates/.claude/hooks/moai/lib/common.py +161 -0
  204. moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
  205. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +442 -0
  206. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  207. moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
  208. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  209. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  210. moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
  211. moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
  212. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +592 -0
  213. moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
  214. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +417 -0
  215. moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
  216. moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
  217. moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
  218. moai_adk/templates/.claude/hooks/moai/lib/models.py +104 -0
  219. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +219 -0
  220. moai_adk/templates/.claude/hooks/moai/lib/project.py +777 -0
  221. moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
  222. moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
  223. moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
  224. moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
  225. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  226. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  227. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
  228. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +542 -0
  229. moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
  230. moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
  231. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
  232. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
  233. moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
  234. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
  235. moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
  236. moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
  237. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
  238. moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
  239. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +894 -0
  240. moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
  241. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1170 -0
  242. moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
  243. moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
  244. moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
  245. moai_adk/templates/.claude/output-styles/moai/r2d2.md +643 -0
  246. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  247. moai_adk/templates/.claude/settings.json +177 -72
  248. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +303 -0
  249. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
  250. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +56 -0
  251. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +120 -0
  252. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  253. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +185 -0
  254. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +207 -0
  255. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
  256. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +132 -281
  257. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +610 -1525
  258. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +423 -619
  259. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +133 -77
  260. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +817 -16
  261. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  262. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  263. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  264. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  265. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +532 -17
  266. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +91 -78
  267. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +955 -16
  268. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  269. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  270. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  271. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  272. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  273. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  274. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +651 -18
  275. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +234 -0
  276. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  277. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  278. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  279. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  280. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  281. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  282. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +189 -0
  283. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  284. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +327 -0
  285. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  286. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  287. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  288. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  289. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  290. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  291. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +225 -0
  292. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  293. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  294. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  295. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  296. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +739 -0
  297. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  298. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  299. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  300. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +670 -0
  301. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  302. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  303. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  304. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
  305. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  306. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  307. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +467 -0
  308. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  309. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +420 -0
  310. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  311. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  312. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  313. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  314. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  315. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  316. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  317. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +221 -0
  318. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  319. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  320. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +242 -0
  321. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  322. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  323. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  324. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  325. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  326. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  327. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +228 -0
  328. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  329. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  330. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  331. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  332. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  333. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +171 -0
  334. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  335. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  336. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +239 -0
  337. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  338. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  339. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  340. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
  341. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  342. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  343. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  344. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  345. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  346. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  347. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +180 -0
  348. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  349. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  350. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  351. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  352. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  353. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  354. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  355. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  356. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  357. moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
  358. moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
  359. moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
  360. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +96 -77
  361. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1226 -16
  362. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  363. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1119 -14
  364. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +80 -79
  365. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +572 -16
  366. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  367. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  368. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  369. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  370. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  371. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +388 -15
  372. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +135 -0
  373. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
  374. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  375. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
  376. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +104 -0
  377. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  378. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  379. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +153 -80
  380. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +906 -16
  381. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +721 -15
  382. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +117 -80
  383. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +851 -16
  384. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +278 -18
  385. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +133 -79
  386. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +960 -16
  387. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1528 -17
  388. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +100 -79
  389. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +993 -16
  390. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +549 -18
  391. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +135 -76
  392. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1595 -16
  393. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  394. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1309 -16
  395. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +141 -341
  396. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +849 -496
  397. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +731 -243
  398. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +134 -76
  399. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1141 -16
  400. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  401. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1074 -17
  402. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +136 -77
  403. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1093 -16
  404. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  405. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  406. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1010 -17
  407. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +112 -78
  408. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +646 -16
  409. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +491 -18
  410. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +113 -75
  411. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +620 -16
  412. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  413. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  414. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  415. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  416. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  417. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +410 -17
  418. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -83
  419. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +905 -16
  420. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  421. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  422. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  423. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  424. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +659 -17
  425. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +115 -82
  426. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1076 -16
  427. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +718 -21
  428. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +145 -0
  429. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  430. moai_adk/templates/.claude/skills/moai-library-mermaid/modules/advanced-patterns.md +465 -0
  431. moai_adk/templates/.claude/skills/moai-library-mermaid/modules/optimization.md +440 -0
  432. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  433. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +143 -0
  434. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  435. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  436. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +336 -0
  437. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +350 -0
  438. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  439. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  440. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  441. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  442. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  443. moai_adk/templates/.claude/skills/moai-library-nextra/modules/optimization.md +303 -0
  444. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  445. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +175 -0
  446. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  447. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  448. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  449. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  450. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  451. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  452. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +284 -0
  453. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  454. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  455. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  456. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  457. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  458. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  459. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  460. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  461. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  462. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  463. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  464. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  465. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  466. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  467. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  468. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  469. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  470. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  471. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  472. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  473. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  474. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  475. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  476. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  477. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  478. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  479. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  480. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  481. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  482. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  483. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  484. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  485. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  486. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +135 -0
  487. moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
  488. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  489. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  490. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +158 -0
  491. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  492. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  493. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  494. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  495. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  496. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  497. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +166 -0
  498. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  499. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  500. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  501. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  502. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  503. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +127 -0
  504. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  505. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  506. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  507. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  508. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  509. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  510. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +156 -0
  511. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  512. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  513. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  514. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  515. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  516. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  517. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +146 -0
  518. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  519. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  520. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  521. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  522. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  523. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  524. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +141 -0
  525. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  526. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  527. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  528. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  529. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  530. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  531. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  532. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  533. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  534. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +132 -0
  535. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  536. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  537. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  538. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  539. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  540. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  541. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  542. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
  543. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  544. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  545. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  546. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  547. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  548. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  549. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  550. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  551. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  552. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  553. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  554. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  555. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  556. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  557. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  558. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +251 -0
  559. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  560. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/advanced-patterns.md +379 -0
  561. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/optimization.md +286 -0
  562. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  563. moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
  564. moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
  565. moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
  566. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  567. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +287 -0
  568. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  569. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  570. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  571. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
  572. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  573. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  574. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  575. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  576. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  577. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  578. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  579. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  580. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  581. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +337 -0
  582. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  583. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  584. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  585. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +270 -0
  586. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  587. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  588. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  589. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  590. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  591. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  592. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +269 -0
  593. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  594. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  595. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  596. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  597. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  598. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +269 -0
  599. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/advanced-patterns.md +576 -0
  600. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +302 -0
  601. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  602. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  603. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  604. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  605. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  606. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  607. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  608. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  609. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  610. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +263 -0
  611. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  612. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  613. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  614. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  615. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  616. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/optimization.md +505 -0
  617. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  618. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  619. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  620. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  621. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  622. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  623. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  624. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +327 -0
  625. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  626. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  627. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  628. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  629. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +313 -0
  630. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  631. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  632. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  633. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  634. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  635. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  636. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +265 -0
  637. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  638. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  639. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  640. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  641. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  642. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  643. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
  644. moai_adk/templates/.claude/skills/moai-workflow-worktree/examples.md +606 -0
  645. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  646. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  647. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  648. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  649. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  650. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  651. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  652. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  653. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  654. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  655. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  656. moai_adk/templates/.claude/skills/moai-workflow-worktree/reference.md +357 -0
  657. moai_adk/templates/.git-hooks/pre-commit +128 -0
  658. moai_adk/templates/.git-hooks/pre-push +468 -0
  659. moai_adk/templates/.github/workflows/ci-universal.yml +1314 -0
  660. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  661. moai_adk/templates/.github/workflows/spec-issue-sync.yml +206 -36
  662. moai_adk/templates/.gitignore +152 -13
  663. moai_adk/templates/.lsp.json +152 -0
  664. moai_adk/templates/.mcp.json +13 -0
  665. moai_adk/templates/.moai/announcements/en.json +18 -0
  666. moai_adk/templates/.moai/announcements/ja.json +18 -0
  667. moai_adk/templates/.moai/announcements/ko.json +18 -0
  668. moai_adk/templates/.moai/announcements/zh.json +18 -0
  669. moai_adk/templates/.moai/config/config.yaml +64 -0
  670. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  671. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  672. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  673. moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
  674. moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
  675. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  676. moai_adk/templates/.moai/config/sections/quality.yaml +55 -0
  677. moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
  678. moai_adk/templates/.moai/config/sections/system.yaml +59 -0
  679. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  680. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  681. moai_adk/templates/.moai/llm-configs/glm.json +22 -0
  682. moai_adk/templates/CLAUDE.ja.md +343 -0
  683. moai_adk/templates/CLAUDE.ko.md +343 -0
  684. moai_adk/templates/CLAUDE.md +274 -246
  685. moai_adk/templates/CLAUDE.zh.md +343 -0
  686. moai_adk/utils/__init__.py +24 -2
  687. moai_adk/utils/banner.py +9 -13
  688. moai_adk/utils/common.py +331 -0
  689. moai_adk/utils/link_validator.py +241 -0
  690. moai_adk/utils/logger.py +4 -9
  691. moai_adk/utils/safe_file_reader.py +206 -0
  692. moai_adk/utils/timeout.py +160 -0
  693. moai_adk/utils/toon_utils.py +256 -0
  694. moai_adk/version.py +22 -0
  695. moai_adk-1.1.0.dist-info/METADATA +2443 -0
  696. moai_adk-1.1.0.dist-info/RECORD +701 -0
  697. {moai_adk-0.8.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +1 -1
  698. moai_adk-1.1.0.dist-info/entry_points.txt +5 -0
  699. moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
  700. moai_adk/cli/commands/backup.py +0 -80
  701. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -293
  702. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -196
  703. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -207
  704. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -375
  705. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -343
  706. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -246
  707. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -320
  708. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -837
  709. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -272
  710. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -265
  711. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -311
  712. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -352
  713. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1184
  714. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -665
  715. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -488
  716. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -623
  717. moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +0 -313
  718. moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
  719. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -174
  720. moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -170
  721. moai_adk/templates/.claude/hooks/alfred/core/context.py +0 -67
  722. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -416
  723. moai_adk/templates/.claude/hooks/alfred/core/tags.py +0 -198
  724. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -21
  725. moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
  726. moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -161
  727. moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -90
  728. moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -42
  729. moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +0 -175
  730. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -640
  731. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -696
  732. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -474
  733. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  734. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  735. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  736. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  737. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  738. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  739. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  740. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  741. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  742. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  743. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  744. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  745. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  746. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  747. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  748. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  749. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  750. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  751. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  752. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  753. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  754. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  755. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  756. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  757. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  758. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  759. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  760. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  761. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  762. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  763. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  764. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  765. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  766. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  767. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  768. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  769. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  770. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  771. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  772. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  773. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  774. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  775. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  776. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  777. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  778. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  779. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  780. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  781. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  782. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  783. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  784. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  785. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  786. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  787. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  788. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  789. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  790. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  791. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  792. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  793. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  794. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  795. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  796. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  797. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  798. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  799. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  800. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  801. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  802. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  803. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  804. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  805. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -113
  806. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  807. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  808. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  809. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  810. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  811. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  812. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  813. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  814. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  815. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  816. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  817. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  818. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  819. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  820. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  821. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  822. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  823. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  824. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  825. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  826. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  827. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  828. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  829. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  830. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  831. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  832. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  833. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  834. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  835. moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +0 -482
  836. moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +0 -278
  837. moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  838. moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +0 -477
  839. moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  840. moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  841. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  842. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  843. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +0 -271
  844. moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  845. moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +0 -583
  846. moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +0 -526
  847. moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +0 -465
  848. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +0 -328
  849. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +0 -312
  850. moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  851. moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +0 -285
  852. moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +0 -278
  853. moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +0 -303
  854. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -137
  855. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -218
  856. moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +0 -161
  857. moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -541
  858. moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -622
  859. moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -176
  860. moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
  861. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -256
  862. moai_adk/templates/.moai/config.json +0 -96
  863. moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +0 -208
  864. moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +0 -369
  865. moai_adk/templates/.moai/memory/CLAUDE-RULES.md +0 -539
  866. moai_adk/templates/.moai/memory/CONFIG-SCHEMA.md +0 -444
  867. moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -344
  868. moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +0 -220
  869. moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +0 -218
  870. moai_adk/templates/.moai/memory/SPEC-METADATA.md +0 -356
  871. moai_adk/templates/.moai/memory/config-schema.md +0 -444
  872. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
  873. moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
  874. moai_adk/templates/.moai/project/product.md +0 -161
  875. moai_adk/templates/.moai/project/structure.md +0 -156
  876. moai_adk/templates/.moai/project/tech.md +0 -227
  877. moai_adk/templates/__init__.py +0 -2
  878. moai_adk-0.8.0.dist-info/METADATA +0 -1722
  879. moai_adk-0.8.0.dist-info/RECORD +0 -282
  880. moai_adk-0.8.0.dist-info/entry_points.txt +0 -2
  881. moai_adk-0.8.0.dist-info/licenses/LICENSE +0 -21
@@ -0,0 +1,953 @@
1
+ """
2
+ Rollback Manager for Research Integration Changes
3
+
4
+ Provides comprehensive rollback system for:
5
+ - Configuration backup and restore
6
+ - Version management
7
+ - Safe rollback procedures
8
+ - Integration with existing MoAI-ADK backup systems
9
+ - Research-specific rollback operations
10
+
11
+ Supports:
12
+ - Full system rollback
13
+ - Component-specific rollback
14
+ - Incremental rollback
15
+ - Emergency rollback
16
+ - Rollback validation and verification
17
+ """
18
+
19
+ import hashlib
20
+ import json
21
+ import logging
22
+ import os
23
+ import shutil
24
+ import sys
25
+ from dataclasses import asdict, dataclass
26
+ from datetime import datetime, timezone
27
+ from pathlib import Path
28
+ from typing import Any, Dict, List, Tuple
29
+
30
+ # Configure logging
31
+ logging.basicConfig(level=logging.INFO)
32
+ logger = logging.getLogger(__name__)
33
+
34
+
35
+ @dataclass
36
+ class RollbackPoint:
37
+ """Represents a rollback point with metadata"""
38
+
39
+ id: str
40
+ timestamp: datetime
41
+ description: str
42
+ changes: List[str]
43
+ backup_path: str
44
+ checksum: str
45
+ metadata: Dict[str, Any]
46
+
47
+
48
+ @dataclass
49
+ class RollbackResult:
50
+ """Result of a rollback operation"""
51
+
52
+ success: bool
53
+ rollback_point_id: str
54
+ message: str
55
+ restored_files: List[str]
56
+ failed_files: List[str] = None
57
+ validation_results: Dict[str, Any] = None
58
+
59
+
60
+ class RollbackManager:
61
+ """Comprehensive rollback management system"""
62
+
63
+ def __init__(self, project_root: Path = None):
64
+ self.project_root = project_root or Path.cwd()
65
+ self.backup_root = self.project_root / ".moai" / "rollbacks"
66
+ self.config_backup_dir = self.backup_root / "config"
67
+ self.code_backup_dir = self.backup_root / "code"
68
+ self.docs_backup_dir = self.backup_root / "docs"
69
+ self.registry_file = self.backup_root / "rollback_registry.json"
70
+
71
+ # Create backup directories
72
+ self.backup_root.mkdir(parents=True, exist_ok=True)
73
+ self.config_backup_dir.mkdir(parents=True, exist_ok=True)
74
+ self.code_backup_dir.mkdir(parents=True, exist_ok=True)
75
+ self.docs_backup_dir.mkdir(parents=True, exist_ok=True)
76
+
77
+ # Load existing registry
78
+ self.registry = self._load_registry()
79
+
80
+ # Research-specific paths
81
+ self.research_dirs = [
82
+ self.project_root / ".claude" / "skills",
83
+ self.project_root / ".claude" / "agents",
84
+ self.project_root / ".claude" / "commands",
85
+ self.project_root / ".claude" / "hooks",
86
+ ]
87
+
88
+ def create_rollback_point(self, description: str, changes: List[str] = None) -> str:
89
+ """
90
+ Create a rollback point before making changes
91
+
92
+ Args:
93
+ description: Description of the changes being made
94
+ changes: List of specific changes (files modified, components updated)
95
+
96
+ Returns:
97
+ Rollback point ID
98
+ """
99
+ rollback_id = self._generate_rollback_id()
100
+ timestamp = datetime.now(timezone.utc)
101
+
102
+ logger.info(f"Creating rollback point {rollback_id}: {description}")
103
+
104
+ try:
105
+ # Create backup directory for this rollback point
106
+ rollback_dir = self.backup_root / rollback_id
107
+ rollback_dir.mkdir(parents=True, exist_ok=True)
108
+
109
+ # Backup configuration files
110
+ config_backup_path = self._backup_configuration(rollback_dir)
111
+
112
+ # Backup research components
113
+ research_backup_path = self._backup_research_components(rollback_dir)
114
+
115
+ # Backup project files
116
+ code_backup_path = self._backup_code_files(rollback_dir)
117
+
118
+ # Create checksum for integrity verification
119
+ checksum = self._calculate_backup_checksum(rollback_dir)
120
+
121
+ # Create rollback point record
122
+ rollback_point = RollbackPoint(
123
+ id=rollback_id,
124
+ timestamp=timestamp,
125
+ description=description,
126
+ changes=changes or [],
127
+ backup_path=str(rollback_dir),
128
+ checksum=checksum,
129
+ metadata={
130
+ "config_backup": config_backup_path,
131
+ "research_backup": research_backup_path,
132
+ "code_backup": code_backup_path,
133
+ "project_root": str(self.project_root),
134
+ "created_by": "rollback_manager",
135
+ "version": "1.0.0",
136
+ },
137
+ )
138
+
139
+ # Register rollback point
140
+ self.registry[rollback_id] = asdict(rollback_point)
141
+ self._save_registry()
142
+
143
+ logger.info(f"Rollback point {rollback_id} created successfully")
144
+ return rollback_id
145
+
146
+ except Exception as e:
147
+ logger.error(f"Failed to create rollback point: {str(e)}")
148
+ # Cleanup partial backup
149
+ self._cleanup_partial_backup(rollback_id)
150
+ raise
151
+
152
+ def rollback_to_point(
153
+ self,
154
+ rollback_id: str,
155
+ validate_before: bool = True,
156
+ validate_after: bool = True,
157
+ ) -> RollbackResult:
158
+ """
159
+ Rollback to a specific rollback point
160
+
161
+ Args:
162
+ rollback_id: ID of rollback point to restore
163
+ validate_before: Validate rollback point before restoration
164
+ validate_after: Validate system after restoration
165
+
166
+ Returns:
167
+ RollbackResult with operation details
168
+ """
169
+ if rollback_id not in self.registry:
170
+ return RollbackResult(
171
+ success=False,
172
+ rollback_point_id=rollback_id,
173
+ message=f"Rollback point {rollback_id} not found",
174
+ restored_files=[],
175
+ )
176
+
177
+ logger.info(f"Rolling back to point {rollback_id}")
178
+
179
+ try:
180
+ rollback_point = RollbackPoint(**self.registry[rollback_id])
181
+
182
+ # Pre-rollback validation
183
+ if validate_before:
184
+ validation_result = self._validate_rollback_point(rollback_point)
185
+ if not validation_result["valid"]:
186
+ return RollbackResult(
187
+ success=False,
188
+ rollback_point_id=rollback_id,
189
+ message=f"Rollback point validation failed: {validation_result['message']}",
190
+ restored_files=[],
191
+ )
192
+
193
+ # Perform rollback
194
+ restored_files, failed_files = self._perform_rollback(rollback_point)
195
+
196
+ # Post-rollback validation
197
+ validation_results = {}
198
+ if validate_after:
199
+ validation_results = self._validate_system_after_rollback()
200
+
201
+ # Update registry with rollback info
202
+ self._mark_rollback_as_used(rollback_id)
203
+
204
+ success = len(failed_files) == 0
205
+
206
+ result = RollbackResult(
207
+ success=success,
208
+ rollback_point_id=rollback_id,
209
+ message=f"Rollback {'completed successfully' if success else 'completed with errors'}",
210
+ restored_files=restored_files,
211
+ failed_files=failed_files or [],
212
+ validation_results=validation_results,
213
+ )
214
+
215
+ logger.info(f"Rollback {rollback_id} completed. Success: {success}")
216
+ return result
217
+
218
+ except Exception as e:
219
+ logger.error(f"Rollback failed: {str(e)}")
220
+ return RollbackResult(
221
+ success=False,
222
+ rollback_point_id=rollback_id,
223
+ message=f"Rollback failed with error: {str(e)}",
224
+ restored_files=[],
225
+ )
226
+
227
+ def rollback_research_integration(self, component_type: str = None, component_name: str = None) -> RollbackResult:
228
+ """
229
+ Specialized rollback for research integration changes
230
+
231
+ Args:
232
+ component_type: Type of component (skills, agents, commands, hooks)
233
+ component_name: Specific component name to rollback
234
+
235
+ Returns:
236
+ RollbackResult with operation details
237
+ """
238
+ logger.info(f"Rolling back research integration: {component_type}:{component_name}")
239
+
240
+ try:
241
+ # Find relevant rollback points for research integration
242
+ research_rollback_points = self._find_research_rollback_points(component_type, component_name)
243
+
244
+ if not research_rollback_points:
245
+ return RollbackResult(
246
+ success=False,
247
+ rollback_point_id="",
248
+ message="No suitable rollback points found for research integration",
249
+ restored_files=[],
250
+ )
251
+
252
+ # Use the most recent suitable rollback point
253
+ latest_rollback = max(research_rollback_points, key=lambda x: x["timestamp"])
254
+
255
+ # Perform targeted rollback
256
+ restored_files, failed_files = self._perform_research_rollback(
257
+ latest_rollback, component_type, component_name
258
+ )
259
+
260
+ # Validate research components
261
+ validation_results = self._validate_research_components()
262
+
263
+ success = len(failed_files) == 0
264
+
265
+ return RollbackResult(
266
+ success=success,
267
+ rollback_point_id=latest_rollback["id"],
268
+ message=f"Research integration rollback "
269
+ f"{'completed successfully' if success else 'completed with errors'}",
270
+ restored_files=restored_files,
271
+ failed_files=failed_files or [],
272
+ validation_results=validation_results,
273
+ )
274
+
275
+ except Exception as e:
276
+ logger.error(f"Research integration rollback failed: {str(e)}")
277
+ return RollbackResult(
278
+ success=False,
279
+ rollback_point_id="",
280
+ message=f"Research integration rollback failed: {str(e)}",
281
+ restored_files=[],
282
+ )
283
+
284
+ def list_rollback_points(self, limit: int = 10) -> List[Dict[str, Any]]:
285
+ """
286
+ List available rollback points
287
+
288
+ Args:
289
+ limit: Maximum number of rollback points to return
290
+
291
+ Returns:
292
+ List of rollback point information
293
+ """
294
+ rollback_points = []
295
+
296
+ for rollback_id, rollback_data in self.registry.items():
297
+ rollback_points.append(
298
+ {
299
+ "id": rollback_id,
300
+ "timestamp": rollback_data["timestamp"],
301
+ "description": rollback_data["description"],
302
+ "changes_count": len(rollback_data.get("changes", [])),
303
+ "used": rollback_data.get("used", False),
304
+ }
305
+ )
306
+
307
+ # Sort by timestamp (newest first) and limit
308
+ rollback_points.sort(key=lambda x: x["timestamp"], reverse=True)
309
+ return rollback_points[:limit]
310
+
311
+ def validate_rollback_system(self) -> Dict[str, Any]:
312
+ """
313
+ Validate the rollback system integrity
314
+
315
+ Returns:
316
+ Validation results with system health information
317
+ """
318
+ issues: List[str] = []
319
+ recommendations: List[str] = []
320
+ validation_results = {
321
+ "system_healthy": True,
322
+ "issues": issues,
323
+ "recommendations": recommendations,
324
+ "rollback_points_count": len(self.registry),
325
+ "backup_size": self._calculate_backup_size(),
326
+ "last_rollback": None,
327
+ }
328
+
329
+ try:
330
+ # Check backup directories exist
331
+ required_dirs = [
332
+ self.backup_root,
333
+ self.config_backup_dir,
334
+ self.code_backup_dir,
335
+ self.docs_backup_dir,
336
+ ]
337
+
338
+ for dir_path in required_dirs:
339
+ if not dir_path.exists():
340
+ issues.append(f"Missing backup directory: {dir_path}")
341
+ validation_results["system_healthy"] = False
342
+
343
+ # Validate rollback points
344
+ invalid_rollback_points: List[str] = []
345
+ for rollback_id, rollback_data in self.registry.items():
346
+ backup_path = Path(rollback_data["backup_path"])
347
+ if not backup_path.exists():
348
+ invalid_rollback_points.append(rollback_id)
349
+
350
+ if invalid_rollback_points:
351
+ issues.append(f"Invalid rollback points: {invalid_rollback_points}")
352
+ validation_results["system_healthy"] = False
353
+
354
+ # Check available disk space
355
+ backup_size: int = validation_results["backup_size"] # type: ignore[assignment]
356
+ free_space = shutil.disk_usage(self.backup_root).free
357
+ if backup_size > free_space * 0.8: # Using more than 80% of free space
358
+ recommendations.append("Consider cleaning up old rollback points")
359
+
360
+ # Check last rollback
361
+ if self.registry:
362
+ last_rollback = max(self.registry.values(), key=lambda x: x["timestamp"])
363
+ validation_results["last_rollback"] = last_rollback["timestamp"]
364
+
365
+ except Exception as e:
366
+ validation_results["system_healthy"] = False
367
+ issues.append(f"Validation error: {str(e)}")
368
+
369
+ return validation_results
370
+
371
+ def cleanup_old_rollbacks(self, keep_count: int = 10, dry_run: bool = True) -> Dict[str, Any]:
372
+ """
373
+ Clean up old rollback points
374
+
375
+ Args:
376
+ keep_count: Number of recent rollback points to keep
377
+ dry_run: If True, only show what would be deleted
378
+
379
+ Returns:
380
+ Cleanup operation results
381
+ """
382
+ rollback_points = list(self.registry.values())
383
+ rollback_points.sort(key=lambda x: x["timestamp"], reverse=True)
384
+
385
+ # Keep the most recent rollback points
386
+ to_keep = rollback_points[:keep_count]
387
+ to_delete = rollback_points[keep_count:]
388
+
389
+ if dry_run:
390
+ return {
391
+ "dry_run": True,
392
+ "would_delete_count": len(to_delete),
393
+ "would_keep_count": len(to_keep),
394
+ "would_free_space": sum(self._get_directory_size(Path(rp["backup_path"])) for rp in to_delete),
395
+ }
396
+
397
+ # Perform actual cleanup
398
+ deleted_count = 0
399
+ freed_space = 0
400
+
401
+ for rollback_point in to_delete:
402
+ try:
403
+ backup_path = Path(rollback_point["backup_path"])
404
+ if backup_path.exists():
405
+ size = self._get_directory_size(backup_path)
406
+ shutil.rmtree(backup_path)
407
+ freed_space += size
408
+
409
+ # Remove from registry
410
+ del self.registry[rollback_point["id"]]
411
+ deleted_count += 1
412
+
413
+ except Exception as e:
414
+ logger.warning(f"Failed to delete rollback point {rollback_point['id']}: {str(e)}")
415
+
416
+ # Save updated registry
417
+ self._save_registry()
418
+
419
+ return {
420
+ "dry_run": False,
421
+ "deleted_count": deleted_count,
422
+ "kept_count": len(to_keep),
423
+ "freed_space": freed_space,
424
+ }
425
+
426
+ def _generate_rollback_id(self) -> str:
427
+ """Generate unique rollback point ID"""
428
+ timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
429
+ random_suffix = hashlib.md5(os.urandom(4), usedforsecurity=False).hexdigest()[:8]
430
+ return f"rollback_{timestamp}_{random_suffix}"
431
+
432
+ def _load_registry(self) -> Dict[str, Any]:
433
+ """Load rollback registry from file"""
434
+ if self.registry_file.exists():
435
+ try:
436
+ with open(self.registry_file, "r", encoding="utf-8") as f:
437
+ return json.load(f)
438
+ except Exception as e:
439
+ logger.warning(f"Failed to load rollback registry: {str(e)}")
440
+
441
+ return {}
442
+
443
+ def _save_registry(self):
444
+ """Save rollback registry to file"""
445
+ try:
446
+ with open(self.registry_file, "w", encoding="utf-8") as f:
447
+ json.dump(self.registry, f, indent=2, default=str, ensure_ascii=False)
448
+ except Exception as e:
449
+ logger.error(f"Failed to save rollback registry: {str(e)}")
450
+ raise
451
+
452
+ def _backup_configuration(self, rollback_dir: Path) -> str:
453
+ """Backup configuration files (both legacy and section-based)"""
454
+ config_backup_path = rollback_dir / "config"
455
+ config_backup_path.mkdir(parents=True, exist_ok=True)
456
+
457
+ # Skip backing up actual project files during pytest execution
458
+ # to prevent modification of user's working directory
459
+ is_pytest_env = os.getenv("PYTEST_CURRENT_TEST") is not None
460
+
461
+ # Backup legacy monolithic config files
462
+ for config_name in ["config.json", "config.yaml"]:
463
+ config_file = self.project_root / ".moai" / "config" / config_name
464
+ if config_file.exists():
465
+ shutil.copy2(config_file, config_backup_path / config_name)
466
+
467
+ # Backup section-based config directory
468
+ sections_dir = self.project_root / ".moai" / "config" / "sections"
469
+ if sections_dir.exists():
470
+ sections_backup_path = config_backup_path / "sections"
471
+ shutil.copytree(sections_dir, sections_backup_path, dirs_exist_ok=True)
472
+
473
+ # Backup .claude/settings.json
474
+ # Skip during pytest to prevent creating .backup files in user's project
475
+ if not is_pytest_env:
476
+ settings_file = self.project_root / ".claude" / "settings.json"
477
+ if settings_file.exists():
478
+ shutil.copy2(settings_file, config_backup_path / "settings.json")
479
+
480
+ # Backup .claude/settings.local.json
481
+ # Skip during pytest to prevent creating .backup files in user's project
482
+ if not is_pytest_env:
483
+ local_settings_file = self.project_root / ".claude" / "settings.local.json"
484
+ if local_settings_file.exists():
485
+ shutil.copy2(local_settings_file, config_backup_path / "settings.local.json")
486
+
487
+ return str(config_backup_path)
488
+
489
+ def _backup_research_components(self, rollback_dir: Path) -> str:
490
+ """Backup research-specific components"""
491
+ research_backup_path = rollback_dir / "research"
492
+ research_backup_path.mkdir(parents=True, exist_ok=True)
493
+
494
+ for research_dir in self.research_dirs:
495
+ if research_dir.exists():
496
+ dir_name = research_dir.name
497
+ target_dir = research_backup_path / dir_name
498
+ shutil.copytree(research_dir, target_dir, dirs_exist_ok=True)
499
+
500
+ return str(research_backup_path)
501
+
502
+ def _backup_code_files(self, rollback_dir: Path) -> str:
503
+ """Backup important code files"""
504
+ code_backup_path = rollback_dir / "code"
505
+ code_backup_path.mkdir(parents=True, exist_ok=True)
506
+
507
+ # Backup source code
508
+ src_dir = self.project_root / "src"
509
+ if src_dir.exists():
510
+ shutil.copytree(src_dir, code_backup_path / "src", dirs_exist_ok=True)
511
+
512
+ # Backup tests
513
+ tests_dir = self.project_root / "tests"
514
+ if tests_dir.exists():
515
+ shutil.copytree(tests_dir, code_backup_path / "tests", dirs_exist_ok=True)
516
+
517
+ # Backup documentation
518
+ docs_dir = self.project_root / "docs"
519
+ if docs_dir.exists():
520
+ shutil.copytree(docs_dir, code_backup_path / "docs", dirs_exist_ok=True)
521
+
522
+ return str(code_backup_path)
523
+
524
+ def _calculate_backup_checksum(self, backup_dir: Path) -> str:
525
+ """Calculate checksum for backup integrity verification"""
526
+ checksum_hash = hashlib.sha256()
527
+
528
+ for file_path in backup_dir.rglob("*"):
529
+ if file_path.is_file():
530
+ with open(file_path, "rb") as f:
531
+ # Update hash with file content and path
532
+ checksum_hash.update(f.read())
533
+ checksum_hash.update(str(file_path.relative_to(backup_dir)).encode())
534
+
535
+ return checksum_hash.hexdigest()
536
+
537
+ def _validate_rollback_point(self, rollback_point: RollbackPoint) -> Dict[str, Any]:
538
+ """Validate rollback point before restoration"""
539
+ warnings: List[str] = []
540
+ validation_result = {
541
+ "valid": True,
542
+ "message": "Rollback point is valid",
543
+ "warnings": warnings,
544
+ }
545
+
546
+ try:
547
+ # Check backup directory exists
548
+ backup_path = Path(rollback_point.backup_path)
549
+ if not backup_path.exists():
550
+ validation_result["valid"] = False
551
+ validation_result["message"] = "Backup directory not found"
552
+ return validation_result
553
+
554
+ # Verify checksum
555
+ current_checksum = self._calculate_backup_checksum(backup_path)
556
+ if current_checksum != rollback_point.checksum:
557
+ warnings.append("Backup checksum mismatch - possible corruption")
558
+
559
+ # Check essential files exist (check for either legacy or section-based config)
560
+ config_exists = (
561
+ (backup_path / "config" / "config.json").exists()
562
+ or (backup_path / "config" / "config.yaml").exists()
563
+ or (backup_path / "config" / "sections").exists()
564
+ )
565
+
566
+ if not config_exists:
567
+ warnings.append("No configuration backup found (expected config.json, config.yaml, or sections/)")
568
+
569
+ if not (backup_path / "research").exists():
570
+ warnings.append("Missing research component backup")
571
+
572
+ except Exception as e:
573
+ validation_result["valid"] = False
574
+ validation_result["message"] = f"Validation error: {str(e)}"
575
+
576
+ return validation_result
577
+
578
+ def _perform_rollback(self, rollback_point: RollbackPoint) -> Tuple[List[str], List[str]]:
579
+ """Perform the actual rollback operation"""
580
+ backup_path = Path(rollback_point.backup_path)
581
+ restored_files: List[str] = []
582
+ failed_files: List[str] = []
583
+
584
+ try:
585
+ # Restore configuration
586
+ config_backup = backup_path / "config"
587
+ if config_backup.exists():
588
+ for config_file in config_backup.rglob("*"):
589
+ if config_file.is_file():
590
+ target_path = self.project_root / ".moai" / config_file.relative_to(config_backup)
591
+ target_path.parent.mkdir(parents=True, exist_ok=True)
592
+ try:
593
+ shutil.copy2(config_file, target_path)
594
+ restored_files.append(str(target_path))
595
+ except Exception as e:
596
+ failed_files.append(f"{target_path}: {str(e)}")
597
+
598
+ # Restore research components
599
+ research_backup = backup_path / "research"
600
+ if research_backup.exists():
601
+ for research_file in research_backup.rglob("*"):
602
+ if research_file.is_file():
603
+ target_path = self.project_root / research_file.relative_to(research_backup)
604
+ target_path.parent.mkdir(parents=True, exist_ok=True)
605
+ try:
606
+ shutil.copy2(research_file, target_path)
607
+ restored_files.append(str(target_path))
608
+ except Exception as e:
609
+ failed_files.append(f"{target_path}: {str(e)}")
610
+
611
+ # Restore code files
612
+ code_backup = backup_path / "code"
613
+ if code_backup.exists():
614
+ for code_file in code_backup.rglob("*"):
615
+ if code_file.is_file():
616
+ target_path = self.project_root / code_file.relative_to(code_backup)
617
+ target_path.parent.mkdir(parents=True, exist_ok=True)
618
+ try:
619
+ shutil.copy2(code_file, target_path)
620
+ restored_files.append(str(target_path))
621
+ except Exception as e:
622
+ failed_files.append(f"{target_path}: {str(e)}")
623
+
624
+ except Exception as e:
625
+ logger.error(f"Rollback operation failed: {str(e)}")
626
+ failed_files.append(f"rollback_operation: {str(e)}")
627
+
628
+ return restored_files, failed_files
629
+
630
+ def _perform_research_rollback(
631
+ self,
632
+ rollback_point: Dict[str, Any],
633
+ component_type: str = None,
634
+ component_name: str = None,
635
+ ) -> Tuple[List[str], List[str]]:
636
+ """Perform targeted research component rollback"""
637
+ backup_path = Path(rollback_point["backup_path"])
638
+ research_backup = backup_path / "research"
639
+
640
+ restored_files: List[str] = []
641
+ failed_files: List[str] = []
642
+
643
+ if not research_backup.exists():
644
+ failed_files.append("research_backup: Research backup not found")
645
+ return restored_files, failed_files
646
+
647
+ try:
648
+ # Restore specific component or all research components
649
+ if component_type:
650
+ component_backup_dir = research_backup / component_type
651
+ if component_backup_dir.exists():
652
+ target_dir = self.project_root / ".claude" / component_type
653
+
654
+ if component_name:
655
+ # Restore specific component
656
+ component_file = component_backup_dir / f"{component_name}.md"
657
+ if component_file.exists():
658
+ target_file = target_dir / f"{component_name}.md"
659
+ target_file.parent.mkdir(parents=True, exist_ok=True)
660
+ shutil.copy2(component_file, target_file)
661
+ restored_files.append(str(target_file))
662
+ else:
663
+ failed_files.append(f"{component_name}: Component file not found in backup")
664
+ else:
665
+ # Restore entire component type
666
+ if target_dir.exists():
667
+ shutil.rmtree(target_dir)
668
+ shutil.copytree(component_backup_dir, target_dir)
669
+ restored_files.append(str(target_dir))
670
+ else:
671
+ failed_files.append(f"{component_type}: Component type not found in backup")
672
+ else:
673
+ # Restore all research components
674
+ for research_dir in research_backup.iterdir():
675
+ if research_dir.is_dir():
676
+ target_dir = self.project_root / ".claude" / research_dir.name
677
+ if target_dir.exists():
678
+ shutil.rmtree(target_dir)
679
+ shutil.copytree(research_dir, target_dir)
680
+ restored_files.append(str(target_dir))
681
+
682
+ except Exception as e:
683
+ logger.error(f"Research rollback failed: {str(e)}")
684
+ failed_files.append(f"research_rollback: {str(e)}")
685
+
686
+ return restored_files, failed_files
687
+
688
+ def _validate_system_after_rollback(self) -> Dict[str, Any]:
689
+ """Validate system state after rollback"""
690
+ issues: List[str] = []
691
+ validation_results = {
692
+ "config_valid": True,
693
+ "research_valid": True,
694
+ "issues": issues,
695
+ }
696
+
697
+ try:
698
+ # Validate configuration (check for both legacy and section-based)
699
+ config_json = self.project_root / ".moai" / "config" / "config.json"
700
+ config_yaml = self.project_root / ".moai" / "config" / "config.yaml"
701
+ sections_dir = self.project_root / ".moai" / "config" / "sections"
702
+
703
+ config_found = False
704
+
705
+ # Validate legacy JSON config
706
+ if config_json.exists():
707
+ config_found = True
708
+ try:
709
+ with open(config_json, "r", encoding="utf-8") as f:
710
+ json.load(f) # Validate JSON syntax
711
+ except json.JSONDecodeError:
712
+ validation_results["config_valid"] = False
713
+ issues.append("Invalid JSON in config.json")
714
+
715
+ # Validate legacy YAML config
716
+ if config_yaml.exists():
717
+ config_found = True
718
+ # YAML validation would require PyYAML, skip for now
719
+
720
+ # Check for section-based config
721
+ if sections_dir.exists() and sections_dir.is_dir():
722
+ config_found = True
723
+
724
+ if not config_found:
725
+ validation_results["config_valid"] = False
726
+ issues.append("No configuration found (expected config.json, config.yaml, or sections/)")
727
+
728
+ # Validate research components
729
+ for research_dir in self.research_dirs:
730
+ if research_dir.exists():
731
+ # Check for readable files
732
+ for file_path in research_dir.rglob("*.md"):
733
+ try:
734
+ with open(file_path, "r", encoding="utf-8") as f:
735
+ f.read() # Validate file can be read
736
+ except Exception as e:
737
+ validation_results["research_valid"] = False
738
+ issues.append(f"Cannot read {file_path}: {str(e)}")
739
+
740
+ except Exception as e:
741
+ issues.append(f"Validation error: {str(e)}")
742
+
743
+ return validation_results
744
+
745
+ def _validate_research_components(self) -> Dict[str, Any]:
746
+ """Validate research components after rollback"""
747
+ issues: List[str] = []
748
+ validation_results = {
749
+ "skills_valid": True,
750
+ "agents_valid": True,
751
+ "commands_valid": True,
752
+ "hooks_valid": True,
753
+ "issues": issues,
754
+ }
755
+
756
+ component_checks = [
757
+ ("skills", "Skills", self.project_root / ".claude" / "skills"),
758
+ ("agents", "Agents", self.project_root / ".claude" / "agents"),
759
+ ("commands", "Commands", self.project_root / ".claude" / "commands"),
760
+ ("hooks", "Hooks", self.project_root / ".claude" / "hooks"),
761
+ ]
762
+
763
+ for component_key, component_name, component_path in component_checks:
764
+ if component_path.exists():
765
+ # Check component structure
766
+ files = list(component_path.rglob("*.md"))
767
+ if not files:
768
+ validation_results[f"{component_key}_valid"] = False
769
+ issues.append(f"{component_name} directory is empty")
770
+
771
+ # Validate file content
772
+ for file_path in files[:5]: # Check first 5 files
773
+ try:
774
+ with open(file_path, "r", encoding="utf-8") as f:
775
+ content = f.read()
776
+ if not content.strip():
777
+ validation_results[f"{component_key}_valid"] = False
778
+ issues.append(f"Empty file: {file_path}")
779
+ except Exception as e:
780
+ validation_results[f"{component_key}_valid"] = False
781
+ issues.append(f"Cannot read {file_path}: {str(e)}")
782
+ else:
783
+ validation_results[f"{component_key}_valid"] = False
784
+ issues.append(f"{component_name} directory not found")
785
+
786
+ return validation_results
787
+
788
+ def _find_research_rollback_points(
789
+ self, component_type: str = None, component_name: str = None
790
+ ) -> List[Dict[str, Any]]:
791
+ """Find rollback points related to research integration"""
792
+ research_rollback_points = []
793
+
794
+ for rollback_id, rollback_data in self.registry.items():
795
+ # Check if rollback point has research backup
796
+ backup_path = Path(rollback_data["backup_path"])
797
+ research_backup = backup_path / "research"
798
+
799
+ if not research_backup.exists():
800
+ continue
801
+
802
+ # Check for specific component match
803
+ if component_type:
804
+ component_backup = research_backup / component_type
805
+ if component_backup.exists():
806
+ if component_name:
807
+ component_file = component_backup / f"{component_name}.md"
808
+ if component_file.exists():
809
+ research_rollback_points.append(rollback_data)
810
+ else:
811
+ research_rollback_points.append(rollback_data)
812
+ else:
813
+ # Include any rollback with research components
814
+ research_rollback_points.append(rollback_data)
815
+
816
+ return research_rollback_points
817
+
818
+ def _mark_rollback_as_used(self, rollback_id: str):
819
+ """Mark rollback point as used in registry"""
820
+ if rollback_id in self.registry:
821
+ self.registry[rollback_id]["used"] = True
822
+ self.registry[rollback_id]["used_timestamp"] = datetime.now(timezone.utc).isoformat()
823
+ self._save_registry()
824
+
825
+ def _cleanup_partial_backup(self, rollback_id: str):
826
+ """Clean up partial backup if creation failed"""
827
+ try:
828
+ backup_dir = self.backup_root / rollback_id
829
+ if backup_dir.exists():
830
+ shutil.rmtree(backup_dir)
831
+ except Exception as e:
832
+ logger.warning(f"Failed to cleanup partial backup {rollback_id}: {str(e)}")
833
+
834
+ def _calculate_backup_size(self) -> int:
835
+ """Calculate total size of all backups"""
836
+ total_size = 0
837
+ for rollback_id, rollback_data in self.registry.items():
838
+ backup_path = Path(rollback_data["backup_path"])
839
+ if backup_path.exists():
840
+ total_size += self._get_directory_size(backup_path)
841
+ return total_size
842
+
843
+ def _get_directory_size(self, directory: Path) -> int:
844
+ """Get total size of directory in bytes"""
845
+ total_size = 0
846
+ try:
847
+ for file_path in directory.rglob("*"):
848
+ if file_path.is_file():
849
+ total_size += file_path.stat().st_size
850
+ except Exception:
851
+ pass # Ignore errors in size calculation
852
+ return total_size
853
+
854
+
855
+ # Command-line interface for rollback manager
856
+ def main():
857
+ """Command-line interface for rollback operations"""
858
+ import argparse
859
+
860
+ parser = argparse.ArgumentParser(description="MoAI-ADK Rollback Manager")
861
+ subparsers = parser.add_subparsers(dest="command", help="Available commands")
862
+
863
+ # Create rollback point
864
+ create_parser = subparsers.add_parser("create", help="Create rollback point")
865
+ create_parser.add_argument("description", help="Description of changes")
866
+ create_parser.add_argument("--changes", nargs="*", help="List of changes")
867
+
868
+ # List rollback points
869
+ list_parser = subparsers.add_parser("list", help="List rollback points")
870
+ list_parser.add_argument("--limit", type=int, default=10, help="Maximum number to show")
871
+
872
+ # Perform rollback
873
+ rollback_parser = subparsers.add_parser("rollback", help="Rollback to point")
874
+ rollback_parser.add_argument("rollback_id", help="Rollback point ID")
875
+ rollback_parser.add_argument("--no-validate", action="store_true", help="Skip validation")
876
+
877
+ # Research rollback
878
+ research_parser = subparsers.add_parser("research-rollback", help="Rollback research components")
879
+ research_parser.add_argument("--type", help="Component type (skills, agents, commands, hooks)")
880
+ research_parser.add_argument("--name", help="Component name")
881
+
882
+ # Validate system
883
+ subparsers.add_parser("validate", help="Validate rollback system")
884
+
885
+ # Cleanup
886
+ cleanup_parser = subparsers.add_parser("cleanup", help="Cleanup old rollback points")
887
+ cleanup_parser.add_argument("--keep", type=int, default=10, help="Number to keep")
888
+ cleanup_parser.add_argument("--execute", action="store_true", help="Execute cleanup (default: dry run)")
889
+
890
+ args = parser.parse_args()
891
+
892
+ if not args.command:
893
+ parser.print_help()
894
+ return
895
+
896
+ # Initialize rollback manager
897
+ rollback_manager = RollbackManager()
898
+
899
+ try:
900
+ if args.command == "create":
901
+ rollback_id = rollback_manager.create_rollback_point(args.description, args.changes)
902
+ print(f"Rollback point created: {rollback_id}")
903
+
904
+ elif args.command == "list":
905
+ rollback_points = rollback_manager.list_rollback_points(args.limit)
906
+ print(f"Available rollback points (showing {len(rollback_points)}):")
907
+ for rp in rollback_points:
908
+ status = "USED" if rp["used"] else "AVAILABLE"
909
+ print(f" {rp['id']} - {rp['description']} ({status})")
910
+
911
+ elif args.command == "rollback":
912
+ result = rollback_manager.rollback_to_point(args.rollback_id, validate_before=not args.no_validate)
913
+ if result.success:
914
+ print("Rollback completed successfully")
915
+ print(f"Restored {len(result.restored_files)} files")
916
+ else:
917
+ print(f"Rollback failed: {result.message}")
918
+
919
+ elif args.command == "research-rollback":
920
+ result = rollback_manager.rollback_research_integration(args.type, args.name)
921
+ if result.success:
922
+ print("Research rollback completed successfully")
923
+ else:
924
+ print(f"Research rollback failed: {result.message}")
925
+
926
+ elif args.command == "validate":
927
+ validation = rollback_manager.validate_rollback_system()
928
+ print(f"Rollback system health: {'HEALTHY' if validation['system_healthy'] else 'UNHEALTHY'}")
929
+ if validation["issues"]:
930
+ print("Issues found:")
931
+ for issue in validation["issues"]:
932
+ print(f" - {issue}")
933
+ if validation["recommendations"]:
934
+ print("Recommendations:")
935
+ for rec in validation["recommendations"]:
936
+ print(f" - {rec}")
937
+
938
+ elif args.command == "cleanup":
939
+ result = rollback_manager.cleanup_old_rollbacks(args.keep, dry_run=not args.execute)
940
+ if result["dry_run"]:
941
+ print(f"Dry run: Would delete {result['would_delete_count']} rollback points")
942
+ print(f"Would free {result['would_free_space'] / 1024 / 1024:.1f} MB")
943
+ else:
944
+ print(f"Deleted {result['deleted_count']} rollback points")
945
+ print(f"Freed {result['freed_space'] / 1024 / 1024:.1f} MB")
946
+
947
+ except Exception as e:
948
+ print(f"Error: {str(e)}")
949
+ sys.exit(1)
950
+
951
+
952
+ if __name__ == "__main__":
953
+ main()