moai-adk 0.25.4__py3-none-any.whl → 0.32.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of moai-adk might be problematic. Click here for more details.

Files changed (378) hide show
  1. moai_adk/__init__.py +2 -5
  2. moai_adk/__main__.py +114 -82
  3. moai_adk/cli/__init__.py +6 -1
  4. moai_adk/cli/commands/__init__.py +1 -3
  5. moai_adk/cli/commands/analyze.py +5 -16
  6. moai_adk/cli/commands/doctor.py +6 -18
  7. moai_adk/cli/commands/init.py +56 -125
  8. moai_adk/cli/commands/language.py +14 -35
  9. moai_adk/cli/commands/status.py +9 -15
  10. moai_adk/cli/commands/update.py +1555 -190
  11. moai_adk/cli/prompts/init_prompts.py +112 -56
  12. moai_adk/cli/spec_status.py +263 -0
  13. moai_adk/cli/ui/__init__.py +44 -0
  14. moai_adk/cli/ui/progress.py +422 -0
  15. moai_adk/cli/ui/prompts.py +389 -0
  16. moai_adk/cli/ui/theme.py +129 -0
  17. moai_adk/cli/worktree/__init__.py +27 -0
  18. moai_adk/cli/worktree/__main__.py +31 -0
  19. moai_adk/cli/worktree/cli.py +672 -0
  20. moai_adk/cli/worktree/exceptions.py +89 -0
  21. moai_adk/cli/worktree/manager.py +490 -0
  22. moai_adk/cli/worktree/models.py +65 -0
  23. moai_adk/cli/worktree/registry.py +128 -0
  24. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  25. moai_adk/core/analysis/session_analyzer.py +17 -56
  26. moai_adk/core/claude_integration.py +26 -54
  27. moai_adk/core/command_helpers.py +10 -10
  28. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  29. moai_adk/core/config/auto_spec_config.py +5 -11
  30. moai_adk/core/config/migration.py +19 -9
  31. moai_adk/core/config/unified.py +436 -0
  32. moai_adk/core/context_manager.py +6 -12
  33. moai_adk/core/enterprise_features.py +1404 -0
  34. moai_adk/core/error_recovery_system.py +725 -112
  35. moai_adk/core/event_driven_hook_system.py +1371 -0
  36. moai_adk/core/git/__init__.py +8 -0
  37. moai_adk/core/git/branch_manager.py +3 -11
  38. moai_adk/core/git/checkpoint.py +1 -3
  39. moai_adk/core/git/conflict_detector.py +413 -0
  40. moai_adk/core/git/manager.py +91 -1
  41. moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
  42. moai_adk/core/input_validation_middleware.py +1006 -0
  43. moai_adk/core/integration/engine.py +6 -18
  44. moai_adk/core/integration/integration_tester.py +10 -9
  45. moai_adk/core/integration/utils.py +1 -1
  46. moai_adk/core/issue_creator.py +10 -28
  47. moai_adk/core/jit_context_loader.py +956 -0
  48. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  49. moai_adk/core/language_config_resolver.py +485 -0
  50. moai_adk/core/language_validator.py +28 -41
  51. moai_adk/core/mcp/setup.py +15 -12
  52. moai_adk/core/merge/__init__.py +9 -0
  53. moai_adk/core/merge/analyzer.py +481 -0
  54. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  55. moai_adk/core/migration/backup_manager.py +78 -9
  56. moai_adk/core/migration/custom_element_scanner.py +358 -0
  57. moai_adk/core/migration/file_migrator.py +8 -17
  58. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  59. moai_adk/core/migration/selective_restorer.py +470 -0
  60. moai_adk/core/migration/template_utils.py +74 -0
  61. moai_adk/core/migration/user_selection_ui.py +338 -0
  62. moai_adk/core/migration/version_detector.py +6 -10
  63. moai_adk/core/migration/version_migrator.py +3 -3
  64. moai_adk/core/performance/cache_system.py +8 -10
  65. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  66. moai_adk/core/project/checker.py +2 -4
  67. moai_adk/core/project/detector.py +1 -3
  68. moai_adk/core/project/initializer.py +135 -23
  69. moai_adk/core/project/phase_executor.py +54 -81
  70. moai_adk/core/project/validator.py +6 -12
  71. moai_adk/core/quality/trust_checker.py +9 -27
  72. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  73. moai_adk/core/robust_json_parser.py +611 -0
  74. moai_adk/core/rollback_manager.py +73 -148
  75. moai_adk/core/session_manager.py +10 -26
  76. moai_adk/core/skill_loading_system.py +579 -0
  77. moai_adk/core/spec/confidence_scoring.py +31 -100
  78. moai_adk/core/spec/ears_template_engine.py +351 -286
  79. moai_adk/core/spec/quality_validator.py +35 -69
  80. moai_adk/core/spec_status_manager.py +64 -74
  81. moai_adk/core/template/backup.py +45 -20
  82. moai_adk/core/template/config.py +112 -39
  83. moai_adk/core/template/merger.py +11 -19
  84. moai_adk/core/template/processor.py +253 -149
  85. moai_adk/core/template_engine.py +73 -40
  86. moai_adk/core/template_variable_synchronizer.py +417 -0
  87. moai_adk/core/unified_permission_manager.py +745 -0
  88. moai_adk/core/user_behavior_analytics.py +851 -0
  89. moai_adk/core/version_sync.py +429 -0
  90. moai_adk/foundation/__init__.py +56 -0
  91. moai_adk/foundation/backend.py +1027 -0
  92. moai_adk/foundation/database.py +1115 -0
  93. moai_adk/foundation/devops.py +1585 -0
  94. moai_adk/foundation/ears.py +431 -0
  95. moai_adk/foundation/frontend.py +870 -0
  96. moai_adk/foundation/git/commit_templates.py +4 -12
  97. moai_adk/foundation/git.py +376 -0
  98. moai_adk/foundation/langs.py +484 -0
  99. moai_adk/foundation/ml_ops.py +1162 -0
  100. moai_adk/foundation/testing.py +1524 -0
  101. moai_adk/foundation/trust/trust_principles.py +23 -72
  102. moai_adk/foundation/trust/validation_checklist.py +57 -162
  103. moai_adk/project/__init__.py +0 -0
  104. moai_adk/project/configuration.py +1084 -0
  105. moai_adk/project/documentation.py +566 -0
  106. moai_adk/project/schema.py +447 -0
  107. moai_adk/statusline/alfred_detector.py +1 -3
  108. moai_adk/statusline/config.py +13 -4
  109. moai_adk/statusline/enhanced_output_style_detector.py +23 -15
  110. moai_adk/statusline/main.py +51 -15
  111. moai_adk/statusline/renderer.py +104 -48
  112. moai_adk/statusline/update_checker.py +3 -9
  113. moai_adk/statusline/version_reader.py +140 -46
  114. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  115. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  116. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  117. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  118. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  119. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  120. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  121. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  122. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  123. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  124. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  125. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  126. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  127. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  128. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  129. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  130. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  131. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  132. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  133. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  134. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  135. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  136. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  137. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  138. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  139. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  140. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  141. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  142. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  143. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  144. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  145. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  146. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  147. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  148. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  149. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  150. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  151. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  152. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  153. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  154. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  155. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  156. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  157. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  158. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  159. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  160. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  161. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  162. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  163. moai_adk/templates/.claude/settings.json +172 -0
  164. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  165. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  166. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  167. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  168. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  169. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  170. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
  171. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
  172. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  173. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  174. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  175. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  176. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
  177. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  178. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  179. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  180. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  181. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  182. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  183. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  184. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  185. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  186. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  187. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  188. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  189. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  190. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  191. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  192. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  193. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  196. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  199. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  201. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  204. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  205. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  206. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  207. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  208. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  209. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  210. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  211. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  212. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  213. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  214. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  215. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  229. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  230. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  231. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  232. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  233. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  234. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  235. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  236. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  237. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  238. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  239. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  240. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  241. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  242. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  243. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  244. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  245. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  246. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  247. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  248. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  249. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  250. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  251. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  252. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  253. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  254. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  255. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  256. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  257. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  258. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  259. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  260. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  261. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  262. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  263. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  264. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  265. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  266. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  267. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  268. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  269. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  270. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  271. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  272. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  273. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  274. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  275. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  276. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  277. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  278. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  279. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  280. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  281. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  282. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  283. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  284. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  285. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  286. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  287. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  288. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  289. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  290. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  291. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  323. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  324. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  325. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  326. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  327. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  328. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  329. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  330. moai_adk/templates/.git-hooks/pre-commit +103 -41
  331. moai_adk/templates/.git-hooks/pre-push +116 -21
  332. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  333. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  334. moai_adk/templates/.gitignore +184 -44
  335. moai_adk/templates/.mcp.json +7 -9
  336. moai_adk/templates/.moai/cache/personalization.json +10 -0
  337. moai_adk/templates/.moai/config/config.yaml +344 -0
  338. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  339. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  340. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  341. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  342. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  343. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  344. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  345. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  346. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  347. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  348. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  349. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  350. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  351. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  352. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  353. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  354. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  355. moai_adk/templates/CLAUDE.md +382 -501
  356. moai_adk/utils/__init__.py +24 -1
  357. moai_adk/utils/banner.py +7 -10
  358. moai_adk/utils/common.py +16 -30
  359. moai_adk/utils/link_validator.py +4 -12
  360. moai_adk/utils/safe_file_reader.py +2 -6
  361. moai_adk/utils/timeout.py +160 -0
  362. moai_adk/utils/toon_utils.py +256 -0
  363. moai_adk/version.py +22 -0
  364. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  365. moai_adk-0.32.8.dist-info/RECORD +396 -0
  366. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  367. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  368. moai_adk/cli/commands/backup.py +0 -82
  369. moai_adk/cli/commands/improve_user_experience.py +0 -348
  370. moai_adk/cli/commands/migrate.py +0 -158
  371. moai_adk/cli/commands/validate_links.py +0 -118
  372. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
  373. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  374. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  375. moai_adk/utils/user_experience.py +0 -531
  376. moai_adk-0.25.4.dist-info/METADATA +0 -2279
  377. moai_adk-0.25.4.dist-info/RECORD +0 -112
  378. {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,982 @@
1
+ # Integration Patterns Module
2
+
3
+ Purpose: Comprehensive integration patterns for moai-worktree with MoAI-ADK workflow, development tools, and external systems.
4
+
5
+ Version: 1.0.0
6
+ Last Updated: 2025-11-29
7
+
8
+ ---
9
+
10
+ ## Quick Reference (30 seconds)
11
+
12
+ Integration Points:
13
+ - MoAI-ADK Workflow: Seamless integration with `/moai:1-plan`, `/moai:2-run`, `/moai:3-sync`
14
+ - Development Tools: IDEs, editors, terminal emulators, and development servers
15
+ - Git Workflows: Branch management, CI/CD pipelines, and code review processes
16
+ - Team Collaboration: Shared worktrees, code sharing, and coordination patterns
17
+
18
+ Core Integration Pattern:
19
+ ```bash
20
+ # Plan Phase - Automatic worktree creation
21
+ /moai:1-plan "User Authentication" → auto-creates SPEC-001 worktree
22
+
23
+ # Development Phase - Isolated development
24
+ cd $(moai-worktree go SPEC-001)
25
+ /moai:2-run SPEC-001
26
+
27
+ # Sync Phase - Clean integration
28
+ moai-worktree sync SPEC-001
29
+ /moai:3-sync SPEC-001
30
+ ```
31
+
32
+ ---
33
+
34
+ ## MoAI-ADK Workflow Integration
35
+
36
+ ### Plan Phase Integration (`/moai:1-plan`)
37
+
38
+ Automatic Worktree Creation:
39
+
40
+ ```python
41
+ # Integration in /moai:1-plan command
42
+ def create_worktree_after_spec(spec_id: str, spec_title: str) -> None:
43
+ """Create worktree automatically after SPEC creation."""
44
+
45
+ try:
46
+ # Create worktree with automatic branching
47
+ branch_name = f"feature/SPEC-{spec_id}-{spec_title.lower().replace(' ', '-')}"
48
+
49
+ result = subprocess.run([
50
+ "moai-worktree", "new", spec_id, spec_title,
51
+ "--branch", branch_name,
52
+ "--template", "spec-development"
53
+ ], capture_output=True, text=True)
54
+
55
+ if result.returncode == 0:
56
+ print(f" Created worktree: {spec_id}")
57
+ print(f" Branch: {branch_name}")
58
+ print(f" Path: {extract_worktree_path(result.stdout)}")
59
+
60
+ print("\nNext steps:")
61
+ print(f"1. Switch to worktree: moai-worktree switch {spec_id}")
62
+ print(f"2. Or use shell eval: eval $(moai-worktree go {spec_id})")
63
+ print(f"3. Start development: /moai:2-run {spec_id}")
64
+ else:
65
+ print(f" Worktree creation failed: {result.stderr}")
66
+
67
+ except Exception as e:
68
+ print(f" Error creating worktree: {e}")
69
+
70
+ # Enhanced /moai:1-plan output with worktree information
71
+ def display_worktree_integration_info(spec_id: str, spec_title: str) -> None:
72
+ """Display comprehensive worktree integration guidance."""
73
+
74
+ print(f"""
75
+ Worktree Integration for SPEC-{spec_id}
76
+
77
+ Worktree Information:
78
+ SPEC ID: {spec_id}
79
+ Title: {spec_title}
80
+ Branch: feature/SPEC-{spec_id}-{spec_title.lower().replace(' ', '-')}
81
+ Path: ~/workflows/{os.path.basename(os.getcwd())}/SPEC-{spec_id}
82
+
83
+ Quick Start Options:
84
+ 1. Switch to worktree: moai-worktree switch SPEC-{spec_id}
85
+ 2. Shell integration: eval $(moai-worktree go SPEC-{spec_id})
86
+ 3. Start development: cd $(moai-worktree go SPEC-{spec_id}) && /moai:2-run SPEC-{spec_id}
87
+
88
+ Development Workflow:
89
+ Phase 1: SPEC created
90
+ Phase 2: → Worktree ready for development
91
+ Phase 3: → Implement with /moai:2-run
92
+ Phase 4: → Sync with /moai:3-sync
93
+ Phase 5: → Clean up with moai-worktree clean
94
+
95
+ Advanced Options:
96
+ • Create with custom template: moai-worktree new {spec_id} "{spec_title}" --template <template>
97
+ • Create from develop branch: moai-worktree new {spec_id} "{spec_title}" --base develop
98
+ • Create with shallow clone: moai-worktree new {spec_id} "{spec_title}" --shallow
99
+ """)
100
+ ```
101
+
102
+ Template-Based SPEC Development:
103
+
104
+ ```python
105
+ # SPEC development template configuration
106
+ SPEC_DEVELOPMENT_TEMPLATE = {
107
+ "setup_commands": [
108
+ "echo 'Setting up SPEC development environment...'",
109
+ "npm run setup:spec 2>/dev/null || echo 'No npm setup required'",
110
+ "python -m pip install -r requirements-dev.txt 2>/dev/null || echo 'No Python requirements'",
111
+ "echo 'Environment ready for SPEC development'"
112
+ ],
113
+ "files": {
114
+ ".spec-config": """
115
+ # SPEC Development Configuration
116
+ SPEC_ID={spec_id}
117
+ SPEC_TITLE={spec_title}
118
+ DEV_MODE=spec
119
+ LOG_LEVEL=debug
120
+ """,
121
+ ".vscode/tasks.json": """{
122
+ "version": "2.0.0",
123
+ "tasks": [
124
+ {{
125
+ "label": "Run SPEC Tests",
126
+ "type": "shell",
127
+ "command": "/moai:2-run {spec_id}",
128
+ "group": "test",
129
+ "presentation": {{
130
+ "echo": true,
131
+ "reveal": "always",
132
+ "focus": false,
133
+ "panel": "shared"
134
+ }}
135
+ }}
136
+ ]
137
+ }}"""
138
+ },
139
+ "env_vars": {
140
+ "SPEC_MODE": "true",
141
+ "DEVELOPMENT_SPEC": spec_id,
142
+ "SPEC_BRANCH": f"feature/SPEC-{spec_id}"
143
+ }
144
+ }
145
+ ```
146
+
147
+ ### Development Phase Integration (`/moai:2-run`)
148
+
149
+ Worktree-Aware TDD Implementation:
150
+
151
+ ```python
152
+ # Enhanced manager-tdd for worktree environments
153
+ class WorktreeAwareTDDManager:
154
+ def __init__(self, spec_id: str):
155
+ self.spec_id = spec_id
156
+ self.worktree_path = self._detect_worktree_path()
157
+ self.is_worktree_env = self._is_in_worktree()
158
+
159
+ def _detect_worktree_path(self) -> Optional[Path]:
160
+ """Detect if running in worktree environment."""
161
+ current_path = Path.cwd()
162
+
163
+ # Check if current directory is a worktree
164
+ if current_path.name.startswith("SPEC-"):
165
+ return current_path
166
+
167
+ # Check if parent is worktrees directory
168
+ if "worktrees" in current_path.parts:
169
+ for i, part in enumerate(current_path.parts):
170
+ if part == "worktrees" and i + 1 < len(current_path.parts):
171
+ spec_part = current_path.parts[i + 1]
172
+ if spec_part.startswith("SPEC-"):
173
+ return current_path / spec_part
174
+
175
+ return None
176
+
177
+ def execute_tdd_in_worktree(self) -> TDDResult:
178
+ """Execute TDD cycle in worktree context."""
179
+
180
+ if not self.is_worktree_env:
181
+ print(f" Not in worktree environment. Consider running in worktree:")
182
+ print(f" moai-worktree switch {self.spec_id}")
183
+ print(f" or: eval $(moai-worktree go {self.spec_id})")
184
+
185
+ # TDD execution with worktree awareness
186
+ result = self._run_tdd_cycle()
187
+
188
+ # Update worktree metadata
189
+ if self.worktree_path:
190
+ self._update_worktree_metadata(result)
191
+
192
+ return result
193
+
194
+ def _update_worktree_metadata(self, tdd_result: TDDResult) -> None:
195
+ """Update worktree metadata after TDD execution."""
196
+
197
+ try:
198
+ # Update registry with TDD results
199
+ subprocess.run([
200
+ "moai-worktree", "config", "set",
201
+ f"last_tdd_result.{self.spec_id}",
202
+ json.dumps(tdd_result.to_dict())
203
+ ], check=False)
204
+
205
+ # Update last access time
206
+ subprocess.run([
207
+ "moai-worktree", "status", self.spec_id, "--update-access"
208
+ ], check=False)
209
+
210
+ except Exception as e:
211
+ print(f" Failed to update worktree metadata: {e}")
212
+ ```
213
+
214
+ ### Sync Phase Integration (`/moai:3-sync`)
215
+
216
+ Automated Worktree Synchronization:
217
+
218
+ ```python
219
+ # Enhanced /moai:3-sync with worktree integration
220
+ class WorktreeSyncManager:
221
+ def sync_spec_with_worktree(self, spec_id: str) -> SyncResult:
222
+ """Synchronize SPEC development with main repository."""
223
+
224
+ # Check if worktree exists
225
+ worktree_info = self._get_worktree_info(spec_id)
226
+ if not worktree_info:
227
+ print(f" No worktree found for {spec_id}")
228
+ print(f" Create with: moai-worktree new {spec_id}")
229
+ return SyncResult(skipped=True, reason="No worktree")
230
+
231
+ # Sync worktree with base branch
232
+ print(f" Syncing worktree {spec_id}...")
233
+
234
+ try:
235
+ sync_result = subprocess.run([
236
+ "moai-worktree", "sync", spec_id,
237
+ "--auto-resolve",
238
+ "--include", "src/", "docs/", "tests/"
239
+ ], capture_output=True, text=True)
240
+
241
+ if sync_result.returncode == 0:
242
+ print(f" Worktree {spec_id} synchronized successfully")
243
+
244
+ # Continue with regular sync process
245
+ return self._perform_regular_sync(spec_id, worktree_info)
246
+ else:
247
+ print(f" Worktree sync failed: {sync_result.stderr}")
248
+ return SyncResult(success=False, error=sync_result.stderr)
249
+
250
+ except Exception as e:
251
+ print(f" Error syncing worktree: {e}")
252
+ return SyncResult(success=False, error=str(e))
253
+
254
+ def _perform_regular_sync(self, spec_id: str, worktree_info: dict) -> SyncResult:
255
+ """Perform regular documentation sync after worktree sync."""
256
+
257
+ # Collect changes from worktree
258
+ worktree_path = worktree_info['path']
259
+
260
+ # Extract documentation updates
261
+ docs_updates = self._extract_documentation_updates(worktree_path)
262
+
263
+ # Generate updated documentation
264
+ updated_docs = self._generate_updated_documentation(spec_id, docs_updates)
265
+
266
+ # Create pull request if needed
267
+ if worktree_info.get('git_info', {}).get('commits_ahead', 0) > 0:
268
+ self._create_pull_request_for_spec(spec_id, worktree_info)
269
+
270
+ return SyncResult(
271
+ success=True,
272
+ worktree_synced=True,
273
+ documentation_updated=updated_docs
274
+ )
275
+ ```
276
+
277
+ ### Automated Cleanup Integration
278
+
279
+ Post-PR Cleanup Workflow:
280
+
281
+ ```python
282
+ # Automatic cleanup after successful integration
283
+ def cleanup_completed_spec(spec_id: str, merge_status: str) -> None:
284
+ """Clean up worktree after successful SPEC integration."""
285
+
286
+ if merge_status == "merged":
287
+ print(f" SPEC {spec_id} successfully merged!")
288
+
289
+ # Offer cleanup options
290
+ cleanup_choice = input("""
291
+ Clean up worktree options:
292
+ 1. Remove worktree (recommended)
293
+ 2. Keep worktree for reference
294
+ 3. Archive worktree
295
+ 4. Skip cleanup
296
+
297
+ Choice [1-4]: """)
298
+
299
+ if cleanup_choice == "1":
300
+ # Remove worktree
301
+ result = subprocess.run([
302
+ "moai-worktree", "remove", spec_id, "--force"
303
+ ], capture_output=True, text=True)
304
+
305
+ if result.returncode == 0:
306
+ print(f" Worktree {spec_id} removed successfully")
307
+ else:
308
+ print(f" Error removing worktree: {result.stderr}")
309
+
310
+ elif cleanup_choice == "3":
311
+ # Archive worktree
312
+ archive_path = f"~/workflows/archives/{spec_id}-{datetime.now().strftime('%Y%m%d')}"
313
+ subprocess.run([
314
+ "moai-worktree", "remove", spec_id, "--backup"
315
+ ], capture_output=True, text=True)
316
+
317
+ print(f" Worktree {spec_id} archived to {archive_path}")
318
+
319
+ # Update registry
320
+ subprocess.run([
321
+ "moai-worktree", "config", "set",
322
+ f"completed_specs.{spec_id}", json.dumps({
323
+ "merged_at": datetime.utcnow().isoformat(),
324
+ "cleanup_action": cleanup_choice
325
+ })
326
+ ], check=False)
327
+ ```
328
+
329
+ ---
330
+
331
+ ## Development Tools Integration
332
+
333
+ ### IDE Integration
334
+
335
+ VS Code Multi-Root Workspace:
336
+
337
+ ```json
338
+ // .vscode/workspaces.json - Auto-generated
339
+ {
340
+ "version": "0.1.0",
341
+ "folders": [
342
+ {
343
+ "name": "Main Repository",
344
+ "path": "."
345
+ }
346
+ ],
347
+ "extensions": {
348
+ "recommendations": [
349
+ "ms-vscode.vscode-typescript-next",
350
+ "ms-python.python",
351
+ "bradlc.vscode-tailwindcss"
352
+ ]
353
+ },
354
+ "launch": {
355
+ "version": "0.2.0",
356
+ "configurations": []
357
+ }
358
+ }
359
+ ```
360
+
361
+ Dynamic Workspace Generator:
362
+
363
+ ```python
364
+ # generate_vscode_workspace.py
365
+ def generate_workspace_with_worktrees():
366
+ """Generate VS Code workspace including all active worktrees."""
367
+
368
+ worktrees = get_active_worktrees()
369
+ workspace_config = {
370
+ "version": "0.1.0",
371
+ "folders": [
372
+ {
373
+ "name": "Main Repository",
374
+ "path": "."
375
+ }
376
+ ],
377
+ "extensions": {
378
+ "recommendations": get_workspace_extensions()
379
+ },
380
+ "launch": {
381
+ "version": "0.2.0",
382
+ "configurations": []
383
+ },
384
+ "tasks": {
385
+ "version": "2.0.0",
386
+ "tasks": []
387
+ }
388
+ }
389
+
390
+ # Add worktree folders
391
+ for worktree in worktrees:
392
+ workspace_config["folders"].append({
393
+ "name": f"SPEC-{worktree['id']}",
394
+ "path": worktree['path']
395
+ })
396
+
397
+ # Add worktree-specific tasks
398
+ workspace_config["tasks"]["tasks"].extend(
399
+ generate_worktree_tasks(worktree)
400
+ )
401
+
402
+ # Write workspace file
403
+ with open(".vscode/workspaces.json", "w") as f:
404
+ json.dump(workspace_config, f, indent=2)
405
+
406
+ print(" VS Code workspace updated with worktrees")
407
+
408
+ def generate_worktree_tasks(worktree: dict) -> List[dict]:
409
+ """Generate VS Code tasks for specific worktree."""
410
+
411
+ spec_id = worktree['id']
412
+ worktree_path = worktree['path']
413
+
414
+ return [
415
+ {
416
+ "label": f"Run SPEC-{spec_id} Tests",
417
+ "type": "shell",
418
+ "command": f"cd {worktree_path} && /moai:2-run {spec_id}",
419
+ "group": "test",
420
+ "presentation": {
421
+ "echo": true,
422
+ "reveal": "always",
423
+ "focus": false,
424
+ "panel": "shared"
425
+ }
426
+ },
427
+ {
428
+ "label": f"Sync SPEC-{spec_id}",
429
+ "type": "shell",
430
+ "command": f"moai-worktree sync {spec_id}",
431
+ "group": "build"
432
+ },
433
+ {
434
+ "label": f"Switch to SPEC-{spec_id}",
435
+ "type": "shell",
436
+ "command": f"moai-worktree switch {spec_id}",
437
+ "group": "navigation"
438
+ }
439
+ ]
440
+ ```
441
+
442
+ ### Terminal Integration
443
+
444
+ Enhanced Shell Profile:
445
+
446
+ ```bash
447
+ # ~/.bashrc or ~/.zshrc - Worktree integration
448
+
449
+ # Worktree completion
450
+ _moai_worktree_completion() {
451
+ local worktrees=($(moai-worktree list --format json 2>/dev/null | jq -r '.worktrees[].id' 2>/dev/null))
452
+ COMPREPLY=($(compgen -W "${worktrees[*]}" "${COMP_WORDS[COMP_CWORD]}"))
453
+ }
454
+
455
+ complete -F _moai_worktree_completion moai-worktree
456
+
457
+ # Worktree-aware prompt
458
+ update_prompt_with_worktree() {
459
+ if [ -f "../.moai-worktree-registry.json" ]; then
460
+ local spec_id=$(basename $(pwd) 2>/dev/null | grep '^SPEC-' || echo "")
461
+ if [ -n "$spec_id" ]; then
462
+ export WORKTREE_SPEC=$spec_id
463
+ export PS1="\[\033[36m\]$spec_id\[\033[0m\]:$PS1"
464
+ fi
465
+ else
466
+ unset WORKTREE_SPEC
467
+ fi
468
+ }
469
+
470
+ PROMPT_COMMAND=update_prompt_with_worktree
471
+
472
+ # Worktree navigation aliases
473
+ alias mw='moai-worktree'
474
+ alias mwl='moai-worktree list'
475
+ alias mws='moai-worktree switch'
476
+ alias mwg='eval $(moai-worktree go'
477
+ alias mwsync='moai-worktree sync'
478
+ alias mwclean='moai-worktree clean'
479
+
480
+ # Quick worktree functions
481
+ mwnew() {
482
+ local spec_id="$1"
483
+ local description="$2"
484
+ moai-worktree new "$spec_id" "$description"
485
+ moai-worktree switch "$spec_id"
486
+ }
487
+
488
+ mwdev() {
489
+ local spec_id="$1"
490
+ moai-worktree switch "$spec_id"
491
+ /moai:2-run "$spec_id"
492
+ }
493
+
494
+ mwpush() {
495
+ local spec_id="${1:-$WORKTREE_SPEC}"
496
+ if [ -n "$spec_id" ]; then
497
+ moai-worktree sync "$spec_id"
498
+ cd $(moai-worktree go "$spec_id")
499
+ git push origin "feature/SPEC-$spec_id"
500
+ else
501
+ echo "No SPEC ID provided or detected"
502
+ fi
503
+ }
504
+ ```
505
+
506
+ ### Git Integration
507
+
508
+ Enhanced Git Hooks:
509
+
510
+ ```bash
511
+ # .git/hooks/post-checkout
512
+ #!/bin/bash
513
+ echo "Post-checkout hook: Checking worktree status"
514
+
515
+ # Check if we're in a worktree
516
+ if [ -f "../.moai-worktree-registry.json" ]; then
517
+ SPEC_ID=$(basename $(pwd))
518
+ echo "Switched to worktree: $SPEC_ID"
519
+
520
+ # Update last access time
521
+ moai-worktree status "$SPEC_ID" --update-access 2>/dev/null || true
522
+
523
+ # Check if sync is needed
524
+ SYNC_STATUS=$(moai-worktree status "$SPEC_ID" --sync-check 2>/dev/null || echo "unknown")
525
+ if echo "$SYNC_STATUS" | grep -q "needs sync"; then
526
+ echo " Worktree needs synchronization"
527
+ echo " Run: moai-worktree sync $SPEC_ID"
528
+ fi
529
+
530
+ # Load worktree-specific environment
531
+ if [ -f ".worktree-env" ]; then
532
+ echo "Loading worktree environment..."
533
+ source .worktree-env
534
+ fi
535
+ fi
536
+
537
+ # .git/hooks/pre-push
538
+ #!/bin/bash
539
+ echo "Pre-push hook: Validating worktree state"
540
+
541
+ # Check if we're pushing from a worktree
542
+ if [ -f "../.moai-worktree-registry.json" ]; then
543
+ SPEC_ID=$(basename $(pwd))
544
+ echo "Pushing from worktree: $SPEC_ID"
545
+
546
+ # Check for uncommitted changes
547
+ if ! git diff --quiet || ! git diff --cached --quiet; then
548
+ echo " Uncommitted changes detected"
549
+ echo " Commit changes before pushing or use --force"
550
+ exit 1
551
+ fi
552
+
553
+ # Check if worktree is synced with base
554
+ SYNC_STATUS=$(moai-worktree status "$SPEC_ID" --sync-check 2>/dev/null || echo "unknown")
555
+ if echo "$SYNC_STATUS" | grep -q "behind"; then
556
+ echo " Worktree is behind base branch"
557
+ echo " Run: moai-worktree sync $SPEC_ID"
558
+ echo " Continue anyway? (y/N)"
559
+ read -r response
560
+ if [[ ! "$response" =~ ^[Yy]$ ]]; then
561
+ exit 1
562
+ fi
563
+ fi
564
+
565
+ # Update worktree metadata
566
+ moai-worktree config set "last_push.$SPEC_ID" "$(date -Iseconds)" 2>/dev/null || true
567
+ fi
568
+ ```
569
+
570
+ ---
571
+
572
+ ## Team Collaboration Integration
573
+
574
+ ### Shared Worktree Patterns
575
+
576
+ Team Worktree Registry:
577
+
578
+ ```python
579
+ # Shared registry configuration
580
+ class TeamWorktreeRegistry:
581
+ def __init__(self, team_name: str, shared_registry_path: str):
582
+ self.team_name = team_name
583
+ self.shared_registry_path = Path(shared_registry_path)
584
+ self.local_registry_path = Path.home() / "worktrees" / team_name / ".moai-worktree-registry.json"
585
+
586
+ def sync_with_team_registry(self) -> None:
587
+ """Synchronize local registry with team shared registry."""
588
+
589
+ try:
590
+ # Fetch latest team registry
591
+ if self.shared_registry_path.exists():
592
+ team_registry = self.load_registry(self.shared_registry_path)
593
+ local_registry = self.load_registry(self.local_registry_path)
594
+
595
+ # Merge registries
596
+ merged_registry = self.merge_registries(team_registry, local_registry)
597
+
598
+ # Save merged registry
599
+ self.save_registry(merged_registry, self.local_registry_path)
600
+
601
+ print(f" Synced with team registry: {self.team_name}")
602
+
603
+ except Exception as e:
604
+ print(f" Failed to sync with team registry: {e}")
605
+
606
+ def share_worktree_with_team(self, spec_id: str, share_config: dict) -> None:
607
+ """Share worktree configuration with team."""
608
+
609
+ # Update team registry
610
+ team_registry = self.load_registry(self.shared_registry_path)
611
+
612
+ worktree_info = team_registry['worktrees'].get(spec_id, {})
613
+ worktree_info.update({
614
+ 'shared_with': share_config.get('team_members', []),
615
+ 'share_level': share_config.get('level', 'read-only'),
616
+ 'shared_at': datetime.utcnow().isoformat(),
617
+ 'shared_by': os.getenv('USER', 'unknown')
618
+ })
619
+
620
+ team_registry['worktrees'][spec_id] = worktree_info
621
+ self.save_registry(team_registry, self.shared_registry_path)
622
+
623
+ print(f" Worktree {spec_id} shared with team")
624
+ ```
625
+
626
+ Collaborative Development Workflow:
627
+
628
+ ```bash
629
+ # Team collaboration script
630
+ collaborative_development() {
631
+ local spec_id="$1"
632
+ local team_members="$2" # Comma-separated list
633
+
634
+ echo "Setting up collaborative development for $spec_id..."
635
+
636
+ # Create shared worktree
637
+ moai-worktree new "$spec_id" "Team Collaborative Development" --template collaborative
638
+
639
+ # Configure team access
640
+ IFS=',' read -ra MEMBERS <<< "$team_members"
641
+ for member in "${MEMBERS[@]}"; do
642
+ moai-worktree config set "team_access.$spec_id.$member" "read-write"
643
+ echo " Granted read-write access to $member"
644
+ done
645
+
646
+ # Create shared configuration
647
+ cd $(moai-worktree go "$spec_id")
648
+
649
+ cat > .team-config << EOF
650
+ team_members: [$(echo "$team_members" | sed 's/,/, /g')]
651
+ collaboration_mode: active
652
+ shared_branch: feature/SPEC-$spec_id-collaborative
653
+ review_required: true
654
+ EOF
655
+
656
+ echo " Team collaboration setup completed"
657
+ echo "Team members can now join with:"
658
+ echo " moai-worktree join $spec_id --team-member <name>"
659
+ }
660
+ ```
661
+
662
+ ---
663
+
664
+ ## External System Integration
665
+
666
+ ### CI/CD Pipeline Integration
667
+
668
+ GitHub Actions Worktree Integration:
669
+
670
+ ```yaml
671
+ # .github/workflows/worktree-integration.yml
672
+ name: Worktree Integration CI
673
+
674
+ on:
675
+ push:
676
+ branches: [ "feature/SPEC-*" ]
677
+ pull_request:
678
+ branches: [ "main", "develop" ]
679
+
680
+ jobs:
681
+ detect-spec:
682
+ runs-on: ubuntu-latest
683
+ outputs:
684
+ spec-id: ${{ steps.spec.outputs.id }}
685
+ spec-title: ${{ steps.spec.outputs.title }}
686
+ is-worktree-branch: ${{ steps.spec.outputs.is-worktree }}
687
+ steps:
688
+ - uses: actions/checkout@v3
689
+
690
+ - name: Detect SPEC information
691
+ id: spec
692
+ run: |
693
+ if [[ "${{ github.ref }}" == refs/heads/feature/SPEC-* ]]; then
694
+ SPEC_ID=$(echo "${{ github.ref }}" | sed 's/.*feature\/SPEC-\([0-9]*\).*/SPEC-\1/')
695
+ SPEC_TITLE=$(echo "${{ github.ref }}" | sed 's/.*feature\/SPEC-[0-9]*-\(.*\)/\1/')
696
+ echo "id=$SPEC_ID" >> $GITHUB_OUTPUT
697
+ echo "title=$SPEC_TITLE" >> $GITHUB_OUTPUT
698
+ echo "is-worktree=true" >> $GITHUB_OUTPUT
699
+ else
700
+ echo "id=none" >> $GITHUB_OUTPUT
701
+ echo "title=none" >> $GITHUB_OUTPUT
702
+ echo "is-worktree=false" >> $GITHUB_OUTPUT
703
+ fi
704
+
705
+ worktree-tests:
706
+ needs: detect-spec
707
+ if: needs.detect-spec.outputs.is-worktree == 'true'
708
+ runs-on: ubuntu-latest
709
+ strategy:
710
+ matrix:
711
+ test-type: [unit, integration, e2e]
712
+ steps:
713
+ - uses: actions/checkout@v3
714
+ with:
715
+ fetch-depth: 0
716
+
717
+ - name: Setup worktree environment
718
+ run: |
719
+ SPEC_ID="${{ needs.detect-spec.outputs.spec-id }}"
720
+ echo "Setting up worktree for $SPEC_ID"
721
+
722
+ # Create worktree directory structure
723
+ mkdir -p ./worktrees/$SPEC_ID
724
+
725
+ # Checkout worktree branch
726
+ git checkout "feature/SPEC-${SPEC_ID#SPEC-}-*" 2>/dev/null || git checkout main
727
+
728
+ # Copy source files to simulate worktree
729
+ mkdir -p ./worktrees/$SPEC_ID/src
730
+ cp -r src/* ./worktrees/$SPEC_ID/src/
731
+
732
+ # Setup test environment
733
+ cd ./worktrees/$SPEC_ID
734
+
735
+ if [ -f "../requirements.txt" ]; then
736
+ pip install -r ../requirements.txt
737
+ fi
738
+
739
+ if [ -f "../package.json" ]; then
740
+ npm install
741
+ fi
742
+
743
+ - name: Run ${{ matrix.test-type }} tests
744
+ run: |
745
+ cd ./worktrees/${{ needs.detect-spec.outputs.spec-id }}
746
+
747
+ case "${{ matrix.test-type }}" in
748
+ unit)
749
+ python -m pytest tests/unit/ -v || npm test -- --coverage
750
+ ;;
751
+ integration)
752
+ python -m pytest tests/integration/ -v || npm run test:integration
753
+ ;;
754
+ e2e)
755
+ npm run test:e2e || python -m pytest tests/e2e/ -v
756
+ ;;
757
+ esac
758
+
759
+ - name: Upload test results
760
+ uses: actions/upload-artifact@v3
761
+ if: always()
762
+ with:
763
+ name: test-results-${{ matrix.test-type }}-${{ needs.detect-spec.outputs.spec-id }}
764
+ path: |
765
+ ./worktrees/${{ needs.detect-spec.outputs.spec-id }}/test-results/
766
+ ./worktrees/${{ needs.detect-spec.outputs.spec-id }}/coverage/
767
+ ```
768
+
769
+ ### Monitoring and Analytics Integration
770
+
771
+ Worktree Usage Analytics:
772
+
773
+ ```python
774
+ # Worktree analytics collector
775
+ class WorktreeAnalytics:
776
+ def __init__(self, registry_path: Path):
777
+ self.registry_path = registry_path
778
+
779
+ def collect_usage_metrics(self) -> dict:
780
+ """Collect comprehensive usage metrics."""
781
+
782
+ registry = self.load_registry()
783
+ worktrees = registry.get('worktrees', {})
784
+
785
+ metrics = {
786
+ 'timestamp': datetime.utcnow().isoformat(),
787
+ 'total_worktrees': len(worktrees),
788
+ 'active_worktrees': len([w for w in worktrees.values() if w.get('status') == 'active']),
789
+ 'disk_usage': self.calculate_total_disk_usage(worktrees),
790
+ 'sync_frequency': self.calculate_sync_frequency(worktrees),
791
+ 'developer_activity': self.analyze_developer_activity(worktrees),
792
+ 'performance_metrics': self.collect_performance_metrics(worktrees)
793
+ }
794
+
795
+ return metrics
796
+
797
+ def export_analytics(self, output_format: str = 'json') -> str:
798
+ """Export analytics in specified format."""
799
+
800
+ metrics = self.collect_usage_metrics()
801
+
802
+ if output_format == 'json':
803
+ return json.dumps(metrics, indent=2)
804
+ elif output_format == 'csv':
805
+ return self.convert_to_csv(metrics)
806
+ elif output_format == 'prometheus':
807
+ return self.convert_to_prometheus(metrics)
808
+ else:
809
+ raise ValueError(f"Unsupported format: {output_format}")
810
+
811
+ def send_to_monitoring_system(self, metrics: dict) -> None:
812
+ """Send metrics to external monitoring system."""
813
+
814
+ # Example: Send to Prometheus Pushgateway
815
+ import requests
816
+
817
+ pushgateway_url = os.getenv('PROMETHEUS_PUSHGATEWAY_URL')
818
+ if pushgateway_url:
819
+ try:
820
+ response = requests.post(
821
+ f"{pushgateway_url}/metrics/job/worktree-analytics",
822
+ data=self.convert_to_prometheus(metrics),
823
+ headers={'Content-Type': 'text/plain'}
824
+ )
825
+
826
+ if response.status_code == 200:
827
+ print(" Metrics sent to monitoring system")
828
+ else:
829
+ print(f" Failed to send metrics: {response.status_code}")
830
+
831
+ except Exception as e:
832
+ print(f" Error sending metrics: {e}")
833
+ ```
834
+
835
+ ---
836
+
837
+ ## Performance Optimization
838
+
839
+ ### Resource Management Integration
840
+
841
+ Intelligent Resource Allocation:
842
+
843
+ ```python
844
+ # Resource manager for parallel worktree operations
845
+ class WorktreeResourceManager:
846
+ def __init__(self):
847
+ self.cpu_count = os.cpu_count()
848
+ self.memory_gb = self.get_available_memory_gb()
849
+ self.max_concurrent_worktrees = min(self.cpu_count, 4)
850
+
851
+ def optimize_parallel_operations(self, worktrees: List[str]) -> List[str]:
852
+ """Optimize worktree operations based on available resources."""
853
+
854
+ # Sort worktrees by priority and size
855
+ prioritized_worktrees = self.prioritize_worktrees(worktrees)
856
+
857
+ # Group worktrees for parallel execution
858
+ operation_groups = self.group_worktrees_for_parallel_execution(
859
+ prioritized_worktrees
860
+ )
861
+
862
+ return operation_groups
863
+
864
+ def execute_with_resource_limits(self, operations: List[Callable]) -> List[Any]:
865
+ """Execute operations with resource limits."""
866
+
867
+ import concurrent.futures
868
+
869
+ results = []
870
+
871
+ with concurrent.futures.ThreadPoolExecutor(
872
+ max_workers=self.max_concurrent_worktrees
873
+ ) as executor:
874
+ # Submit all operations
875
+ future_to_operation = {
876
+ executor.submit(op): op for op in operations
877
+ }
878
+
879
+ # Collect results as they complete
880
+ for future in concurrent.futures.as_completed(future_to_operation):
881
+ operation = future_to_operation[future]
882
+ try:
883
+ result = future.result()
884
+ results.append(result)
885
+ except Exception as e:
886
+ print(f" Operation failed: {e}")
887
+ results.append(None)
888
+
889
+ return results
890
+ ```
891
+
892
+ ---
893
+
894
+ ## Error Handling and Recovery
895
+
896
+ ### Integration Error Recovery
897
+
898
+ Comprehensive Error Handling:
899
+
900
+ ```python
901
+ # Integration error recovery system
902
+ class IntegrationErrorHandler:
903
+ def __init__(self):
904
+ self.error_log = []
905
+ self.recovery_strategies = {
906
+ 'worktree_not_found': self.recover_missing_worktree,
907
+ 'sync_conflict': self.recover_sync_conflict,
908
+ 'permission_denied': self.recover_permission_error,
909
+ 'disk_space': self.recover_disk_space_error,
910
+ 'network_error': self.recover_network_error
911
+ }
912
+
913
+ def handle_integration_error(self, error: Exception, context: dict) -> bool:
914
+ """Handle integration error with appropriate recovery strategy."""
915
+
916
+ error_type = self.classify_error(error)
917
+
918
+ if error_type in self.recovery_strategies:
919
+ try:
920
+ recovery_result = self.recovery_strategies[error_type](error, context)
921
+
922
+ if recovery_result.success:
923
+ print(f" Recovered from {error_type}: {recovery_result.message}")
924
+ return True
925
+ else:
926
+ print(f" Recovery failed for {error_type}: {recovery_result.message}")
927
+ return False
928
+
929
+ except Exception as recovery_error:
930
+ print(f" Recovery failed with exception: {recovery_error}")
931
+ return False
932
+ else:
933
+ print(f" No recovery strategy for error type: {error_type}")
934
+ return False
935
+
936
+ def recover_missing_worktree(self, error: Exception, context: dict) -> RecoveryResult:
937
+ """Recover from missing worktree error."""
938
+
939
+ spec_id = context.get('spec_id')
940
+ if not spec_id:
941
+ return RecoveryResult(success=False, message="No SPEC ID in context")
942
+
943
+ try:
944
+ # Offer to recreate worktree
945
+ print(f"Worktree {spec_id} not found. Recreating...")
946
+
947
+ # Attempt recreation with backup if available
948
+ backup_path = self.find_worktree_backup(spec_id)
949
+
950
+ if backup_path:
951
+ print(f"Found backup: {backup_path}")
952
+ restore_result = self.restore_worktree_from_backup(spec_id, backup_path)
953
+
954
+ if restore_result:
955
+ return RecoveryResult(
956
+ success=True,
957
+ message=f"Worktree {spec_id} restored from backup"
958
+ )
959
+
960
+ # Create new worktree
961
+ subprocess.run([
962
+ "moai-worktree", "new", spec_id,
963
+ "Auto-recreated after error"
964
+ ], check=True)
965
+
966
+ return RecoveryResult(
967
+ success=True,
968
+ message=f"Worktree {spec_id} recreated successfully"
969
+ )
970
+
971
+ except Exception as e:
972
+ return RecoveryResult(
973
+ success=False,
974
+ message=f"Failed to recreate worktree: {e}"
975
+ )
976
+ ```
977
+
978
+ ---
979
+
980
+ Version: 1.0.0
981
+ Last Updated: 2025-11-29
982
+ Module: Comprehensive integration patterns for moai-worktree with MoAI-ADK workflow, development tools, and external systems