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

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

Potentially problematic release.


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

Files changed (699) hide show
  1. moai_adk/__init__.py +2 -6
  2. moai_adk/__main__.py +136 -21
  3. moai_adk/cli/__init__.py +6 -2
  4. moai_adk/cli/commands/__init__.py +1 -4
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +17 -5
  7. moai_adk/cli/commands/init.py +105 -47
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +8 -13
  10. moai_adk/cli/commands/update.py +1734 -65
  11. moai_adk/cli/main.py +3 -2
  12. moai_adk/cli/prompts/init_prompts.py +144 -91
  13. moai_adk/cli/spec_status.py +263 -0
  14. moai_adk/cli/ui/__init__.py +44 -0
  15. moai_adk/cli/ui/progress.py +422 -0
  16. moai_adk/cli/ui/prompts.py +389 -0
  17. moai_adk/cli/ui/theme.py +129 -0
  18. moai_adk/cli/worktree/__init__.py +27 -0
  19. moai_adk/cli/worktree/__main__.py +31 -0
  20. moai_adk/cli/worktree/cli.py +672 -0
  21. moai_adk/cli/worktree/exceptions.py +89 -0
  22. moai_adk/cli/worktree/manager.py +490 -0
  23. moai_adk/cli/worktree/models.py +65 -0
  24. moai_adk/cli/worktree/registry.py +128 -0
  25. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  26. moai_adk/core/__init__.py +0 -1
  27. moai_adk/core/analysis/__init__.py +9 -0
  28. moai_adk/core/analysis/session_analyzer.py +400 -0
  29. moai_adk/core/claude_integration.py +393 -0
  30. moai_adk/core/command_helpers.py +270 -0
  31. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  32. moai_adk/core/config/__init__.py +6 -0
  33. moai_adk/core/config/auto_spec_config.py +340 -0
  34. moai_adk/core/config/migration.py +147 -16
  35. moai_adk/core/config/unified.py +436 -0
  36. moai_adk/core/context_manager.py +273 -0
  37. moai_adk/core/diagnostics/slash_commands.py +0 -1
  38. moai_adk/core/enterprise_features.py +1404 -0
  39. moai_adk/core/error_recovery_system.py +1902 -0
  40. moai_adk/core/event_driven_hook_system.py +1371 -0
  41. moai_adk/core/git/__init__.py +8 -1
  42. moai_adk/core/git/branch.py +0 -1
  43. moai_adk/core/git/branch_manager.py +2 -10
  44. moai_adk/core/git/checkpoint.py +1 -7
  45. moai_adk/core/git/commit.py +0 -1
  46. moai_adk/core/git/conflict_detector.py +413 -0
  47. moai_adk/core/git/event_detector.py +3 -5
  48. moai_adk/core/git/manager.py +91 -2
  49. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  50. moai_adk/core/input_validation_middleware.py +1006 -0
  51. moai_adk/core/integration/__init__.py +22 -0
  52. moai_adk/core/integration/engine.py +157 -0
  53. moai_adk/core/integration/integration_tester.py +226 -0
  54. moai_adk/core/integration/models.py +88 -0
  55. moai_adk/core/integration/utils.py +211 -0
  56. moai_adk/core/issue_creator.py +20 -28
  57. moai_adk/core/jit_context_loader.py +956 -0
  58. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  59. moai_adk/core/language_config.py +202 -0
  60. moai_adk/core/language_config_resolver.py +485 -0
  61. moai_adk/core/language_validator.py +543 -0
  62. moai_adk/core/mcp/setup.py +116 -0
  63. moai_adk/core/merge/__init__.py +9 -0
  64. moai_adk/core/merge/analyzer.py +481 -0
  65. moai_adk/core/migration/__init__.py +18 -0
  66. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  67. moai_adk/core/migration/backup_manager.py +277 -0
  68. moai_adk/core/migration/custom_element_scanner.py +358 -0
  69. moai_adk/core/migration/file_migrator.py +209 -0
  70. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  71. moai_adk/core/migration/selective_restorer.py +470 -0
  72. moai_adk/core/migration/template_utils.py +74 -0
  73. moai_adk/core/migration/user_selection_ui.py +338 -0
  74. moai_adk/core/migration/version_detector.py +139 -0
  75. moai_adk/core/migration/version_migrator.py +228 -0
  76. moai_adk/core/performance/__init__.py +6 -0
  77. moai_adk/core/performance/cache_system.py +316 -0
  78. moai_adk/core/performance/parallel_processor.py +116 -0
  79. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  80. moai_adk/core/project/__init__.py +0 -1
  81. moai_adk/core/project/backup_utils.py +2 -7
  82. moai_adk/core/project/checker.py +2 -4
  83. moai_adk/core/project/detector.py +17 -39
  84. moai_adk/core/project/initializer.py +170 -33
  85. moai_adk/core/project/phase_executor.py +398 -68
  86. moai_adk/core/project/validator.py +7 -32
  87. moai_adk/core/quality/__init__.py +1 -1
  88. moai_adk/core/quality/trust_checker.py +37 -101
  89. moai_adk/core/quality/validators/__init__.py +1 -1
  90. moai_adk/core/quality/validators/base_validator.py +1 -1
  91. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  92. moai_adk/core/robust_json_parser.py +611 -0
  93. moai_adk/core/rollback_manager.py +918 -0
  94. moai_adk/core/session_manager.py +651 -0
  95. moai_adk/core/skill_loading_system.py +579 -0
  96. moai_adk/core/spec/confidence_scoring.py +680 -0
  97. moai_adk/core/spec/ears_template_engine.py +1247 -0
  98. moai_adk/core/spec/quality_validator.py +687 -0
  99. moai_adk/core/spec_status_manager.py +478 -0
  100. moai_adk/core/template/__init__.py +0 -1
  101. moai_adk/core/template/backup.py +82 -17
  102. moai_adk/core/template/config.py +112 -40
  103. moai_adk/core/template/languages.py +0 -1
  104. moai_adk/core/template/merger.py +75 -26
  105. moai_adk/core/template/processor.py +750 -72
  106. moai_adk/core/template_engine.py +90 -48
  107. moai_adk/core/template_variable_synchronizer.py +417 -0
  108. moai_adk/core/unified_permission_manager.py +745 -0
  109. moai_adk/core/user_behavior_analytics.py +851 -0
  110. moai_adk/core/version_sync.py +429 -0
  111. moai_adk/foundation/__init__.py +56 -0
  112. moai_adk/foundation/backend.py +1027 -0
  113. moai_adk/foundation/database.py +1115 -0
  114. moai_adk/foundation/devops.py +1585 -0
  115. moai_adk/foundation/ears.py +431 -0
  116. moai_adk/foundation/frontend.py +870 -0
  117. moai_adk/foundation/git/commit_templates.py +557 -0
  118. moai_adk/foundation/git.py +376 -0
  119. moai_adk/foundation/langs.py +484 -0
  120. moai_adk/foundation/ml_ops.py +1162 -0
  121. moai_adk/foundation/testing.py +1524 -0
  122. moai_adk/foundation/trust/trust_principles.py +676 -0
  123. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  124. moai_adk/project/__init__.py +0 -0
  125. moai_adk/project/configuration.py +1084 -0
  126. moai_adk/project/documentation.py +566 -0
  127. moai_adk/project/schema.py +447 -0
  128. moai_adk/statusline/__init__.py +38 -0
  129. moai_adk/statusline/alfred_detector.py +105 -0
  130. moai_adk/statusline/config.py +373 -0
  131. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  132. moai_adk/statusline/git_collector.py +190 -0
  133. moai_adk/statusline/main.py +264 -0
  134. moai_adk/statusline/metrics_tracker.py +78 -0
  135. moai_adk/statusline/renderer.py +383 -0
  136. moai_adk/statusline/update_checker.py +129 -0
  137. moai_adk/statusline/version_reader.py +741 -0
  138. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  139. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  140. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  141. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  142. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  143. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  144. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  145. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  146. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  147. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  148. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  149. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  150. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  151. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  152. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  153. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  154. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  155. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  156. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  157. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  158. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  159. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  160. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  161. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  162. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  163. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  164. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  165. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  166. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  167. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  168. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  169. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  170. moai_adk/templates/.claude/hooks/{alfred/shared/core → moai/lib}/checkpoint.py +9 -36
  171. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  172. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  173. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  179. moai_adk/templates/.claude/hooks/{alfred/shared/core → moai/lib}/project.py +63 -44
  180. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  181. moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/timeout.py +40 -16
  182. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  183. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  184. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  185. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  186. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  187. moai_adk/templates/.claude/settings.json +78 -50
  188. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  189. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  190. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  191. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  192. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  193. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  194. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +312 -283
  195. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +291 -94
  196. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  197. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  198. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  199. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  200. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +469 -101
  201. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  202. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  203. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  204. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  205. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  206. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  207. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  208. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  209. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  210. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  211. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  212. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  213. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  214. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  215. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  229. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  253. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  254. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  255. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  256. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  257. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  258. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  259. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  260. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  261. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  262. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  263. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  264. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  265. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  266. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  267. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  268. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  269. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  270. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  271. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  272. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  273. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  274. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  275. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  276. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  277. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  278. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  279. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  280. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  281. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  282. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  283. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  284. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  285. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  286. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  287. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  288. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  289. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  290. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  291. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  323. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  324. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  325. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  326. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  327. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  328. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  329. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  330. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  331. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  332. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  333. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  334. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  335. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  336. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  337. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  338. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  339. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  340. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  341. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  342. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  343. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  344. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  345. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  346. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  347. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  348. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  349. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  350. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  351. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  352. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  353. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  354. moai_adk/templates/.git-hooks/pre-commit +128 -0
  355. moai_adk/templates/.git-hooks/pre-push +220 -13
  356. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  357. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  358. moai_adk/templates/.github/workflows/spec-issue-sync.yml +0 -1
  359. moai_adk/templates/.gitignore +197 -13
  360. moai_adk/templates/.mcp.json +20 -0
  361. moai_adk/templates/.moai/cache/personalization.json +10 -0
  362. moai_adk/templates/.moai/config/config.yaml +344 -0
  363. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  364. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  365. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  366. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  367. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  368. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  369. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  370. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  371. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  372. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  373. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  374. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  375. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  376. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  377. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  378. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  379. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  380. moai_adk/templates/CLAUDE.md +310 -1050
  381. moai_adk/utils/__init__.py +24 -2
  382. moai_adk/utils/banner.py +7 -11
  383. moai_adk/utils/common.py +294 -0
  384. moai_adk/utils/link_validator.py +241 -0
  385. moai_adk/utils/logger.py +4 -9
  386. moai_adk/utils/safe_file_reader.py +206 -0
  387. moai_adk/{templates/.claude/hooks/alfred/utils → utils}/timeout.py +8 -9
  388. moai_adk/utils/toon_utils.py +256 -0
  389. moai_adk/version.py +22 -0
  390. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  391. moai_adk-0.32.8.dist-info/RECORD +396 -0
  392. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  393. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  394. moai_adk/cli/commands/backup.py +0 -80
  395. moai_adk/core/tags/__init__.py +0 -86
  396. moai_adk/core/tags/ci_validator.py +0 -463
  397. moai_adk/core/tags/cli.py +0 -283
  398. moai_adk/core/tags/generator.py +0 -109
  399. moai_adk/core/tags/inserter.py +0 -99
  400. moai_adk/core/tags/mapper.py +0 -126
  401. moai_adk/core/tags/parser.py +0 -76
  402. moai_adk/core/tags/pre_commit_validator.py +0 -393
  403. moai_adk/core/tags/reporter.py +0 -956
  404. moai_adk/core/tags/tags.py +0 -149
  405. moai_adk/core/tags/validator.py +0 -897
  406. moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
  407. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
  408. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
  409. moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
  410. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
  411. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
  412. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
  413. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
  414. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
  415. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
  416. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
  417. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -426
  418. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
  419. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
  420. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
  421. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
  422. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1854
  423. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -880
  424. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -793
  425. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1084
  426. moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
  427. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
  428. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
  429. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
  430. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
  431. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
  432. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
  433. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
  434. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
  435. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
  436. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
  437. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
  438. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
  439. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
  440. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
  441. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
  442. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
  443. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
  444. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
  445. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
  446. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
  447. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
  448. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
  449. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
  450. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
  451. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
  452. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
  453. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
  454. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
  455. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
  456. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
  457. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
  458. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  459. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  460. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  461. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
  462. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
  463. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
  464. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  465. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  466. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  467. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
  468. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
  469. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
  470. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  471. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  472. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  473. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
  474. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
  475. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
  476. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  477. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  478. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  479. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
  480. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
  481. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
  482. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
  483. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
  484. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
  485. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
  486. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
  487. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
  488. moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
  489. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
  490. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
  491. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
  492. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
  493. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
  494. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
  495. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
  496. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
  497. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
  498. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
  499. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
  500. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
  501. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
  502. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
  503. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  504. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  505. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  506. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  507. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  508. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  509. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
  510. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
  511. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
  512. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  513. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  514. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  515. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +0 -288
  516. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  517. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  518. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  519. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  520. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  521. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  522. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  523. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  524. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  525. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  526. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  527. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  528. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  529. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  530. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  531. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  532. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
  533. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
  534. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
  535. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
  536. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
  537. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  538. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
  539. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  540. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  541. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  542. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  543. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
  544. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  545. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
  546. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
  547. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
  548. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
  549. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
  550. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  551. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
  552. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
  553. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
  554. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  555. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  556. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
  557. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
  558. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
  559. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
  560. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
  561. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  562. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  563. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  564. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  565. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  566. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  567. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
  568. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
  569. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  570. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  571. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  572. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
  573. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
  574. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  575. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  576. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  577. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  578. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  579. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  580. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  581. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  582. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  583. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  584. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  585. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  586. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  587. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  588. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  589. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  590. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  591. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  592. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  593. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  594. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  595. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  596. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  597. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  598. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
  599. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  600. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  601. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  602. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  603. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  604. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  605. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  606. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  607. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  608. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  609. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  610. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  611. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  612. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  613. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  614. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  615. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  616. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  617. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  618. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  619. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
  620. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  621. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  622. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
  623. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  624. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  625. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  626. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  627. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  628. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
  629. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
  630. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
  631. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
  632. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
  633. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
  634. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  635. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  636. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  637. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
  638. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
  639. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
  640. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
  641. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  642. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  643. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
  644. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
  645. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
  646. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
  647. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  648. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  649. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
  650. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  651. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  652. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
  653. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
  654. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
  655. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
  656. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
  657. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
  658. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  659. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  660. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  661. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  662. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  663. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  664. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
  665. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
  666. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
  667. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
  668. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
  669. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
  670. moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
  671. moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
  672. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
  673. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
  674. moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
  675. moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
  676. moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
  677. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
  678. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
  679. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -419
  680. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  681. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  682. moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
  683. moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
  684. moai_adk/templates/.github/workflows/release.yml +0 -118
  685. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
  686. moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
  687. moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
  688. moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
  689. moai_adk/templates/.github/workflows/tag-report.yml +0 -269
  690. moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
  691. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
  692. moai_adk/templates/.moai/config.json +0 -115
  693. moai_adk/templates/workflows/go-tag-validation.yml +0 -30
  694. moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
  695. moai_adk/templates/workflows/python-tag-validation.yml +0 -42
  696. moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
  697. moai_adk-0.15.1.dist-info/METADATA +0 -3094
  698. moai_adk-0.15.1.dist-info/RECORD +0 -365
  699. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,782 @@
1
+ # Worktree Management Module
2
+
3
+ Purpose: Core architecture and management patterns for Git worktree operations including registry management, lifecycle control, and resource optimization.
4
+
5
+ Version: 1.0.0
6
+ Last Updated: 2025-11-29
7
+
8
+ ---
9
+
10
+ ## Quick Reference (30 seconds)
11
+
12
+ Core Components:
13
+ - Registry - Central worktree database and metadata tracking
14
+ - Manager - Core operations (create, sync, remove, cleanup)
15
+ - Models - Data structures for worktree metadata
16
+ - Lifecycle - Worktree creation, maintenance, and removal patterns
17
+
18
+ Key Patterns:
19
+ - Automatic registration and tracking
20
+ - Atomic operations with rollback
21
+ - Resource optimization and cleanup
22
+ - Conflict detection and resolution
23
+
24
+ ---
25
+
26
+ ## Registry Architecture
27
+
28
+ ### Worktree Registry Structure
29
+
30
+ The registry is the central database that tracks all worktrees and their metadata.
31
+
32
+ Registry File: `~/.worktrees/{PROJECT_NAME}/.moai-worktree-registry.json`
33
+
34
+ Complete Registry Schema:
35
+ ```json
36
+ {
37
+ "version": "1.0.0",
38
+ "created_at": "2025-11-29T20:00:00Z",
39
+ "last_updated": "2025-11-29T22:00:00Z",
40
+ "config": {
41
+ "worktree_root": "/Users/goos/worktrees/MoAI-ADK",
42
+ "auto_sync": true,
43
+ "cleanup_merged": true,
44
+ "default_base": "main",
45
+ "sync_strategy": "merge",
46
+ "registry_type": "local",
47
+ "max_worktrees": 50
48
+ },
49
+ "worktrees": {
50
+ "SPEC-001": {
51
+ "id": "SPEC-001",
52
+ "description": "User Authentication System",
53
+ "path": "/Users/goos/worktrees/MoAI-ADK/SPEC-001",
54
+ "branch": "feature/SPEC-001-user-auth",
55
+ "base_branch": "main",
56
+ "status": "active",
57
+ "created_at": "2025-11-29T20:00:00Z",
58
+ "last_accessed": "2025-11-29T22:00:00Z",
59
+ "last_sync": "2025-11-29T22:30:00Z",
60
+ "git_info": {
61
+ "commits_ahead": 5,
62
+ "commits_behind": 0,
63
+ "uncommitted_changes": true,
64
+ "branch_status": "ahead",
65
+ "merge_conflicts": false
66
+ },
67
+ "metadata": {
68
+ "template": "backend",
69
+ "developer": "alice",
70
+ "priority": "high",
71
+ "estimated_size": "125MB",
72
+ "tags": ["authentication", "security", "api"]
73
+ },
74
+ "operations": {
75
+ "total_syncs": 15,
76
+ "total_conflicts": 2,
77
+ "last_operation": "sync",
78
+ "last_operation_status": "success"
79
+ }
80
+ }
81
+ },
82
+ "statistics": {
83
+ "total_worktrees": 3,
84
+ "active_worktrees": 2,
85
+ "merged_worktrees": 1,
86
+ "total_disk_usage": "500MB",
87
+ "last_cleanup": "2025-11-28T10:00:00Z"
88
+ }
89
+ }
90
+ ```
91
+
92
+ ### Registry Management Patterns
93
+
94
+ Atomic Registry Operations:
95
+ ```python
96
+ class RegistryManager:
97
+ def update_worktree(self, spec_id: str, updates: dict) -> bool:
98
+ """Atomic registry update with backup and rollback."""
99
+
100
+ # 1. Create backup
101
+ backup_path = self.registry_path.with_suffix('.backup.json')
102
+ shutil.copy2(self.registry_path, backup_path)
103
+
104
+ try:
105
+ # 2. Load current registry
106
+ registry = self.load_registry()
107
+
108
+ # 3. Validate updates
109
+ self.validate_worktree_updates(registry, spec_id, updates)
110
+
111
+ # 4. Apply updates atomically
112
+ registry['worktrees'][spec_id].update(updates)
113
+ registry['last_updated'] = datetime.utcnow().isoformat()
114
+
115
+ # 5. Write to temporary file first
116
+ temp_path = self.registry_path.with_suffix('.tmp.json')
117
+ self.save_registry(registry, temp_path)
118
+
119
+ # 6. Atomic rename
120
+ temp_path.replace(self.registry_path)
121
+
122
+ # 7. Cleanup backup
123
+ backup_path.unlink()
124
+
125
+ return True
126
+
127
+ except Exception as e:
128
+ # Rollback on failure
129
+ if backup_path.exists():
130
+ backup_path.replace(self.registry_path)
131
+ raise RegistryError(f"Failed to update registry: {e}")
132
+ ```
133
+
134
+ Concurrent Access Protection:
135
+ ```python
136
+ import fcntl
137
+ import time
138
+
139
+ class ConcurrentRegistryManager:
140
+ def with_registry_lock(self, operation_func):
141
+ """Execute operation with file-based locking."""
142
+
143
+ lock_path = self.registry_path.with_suffix('.lock')
144
+
145
+ with open(lock_path, 'w') as lock_file:
146
+ # Acquire exclusive lock (with timeout)
147
+ try:
148
+ fcntl.flock(lock_file.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
149
+ except IOError:
150
+ # Lock held by another process, wait with timeout
151
+ for _ in range(30): # 30 second timeout
152
+ time.sleep(1)
153
+ try:
154
+ fcntl.flock(lock_file.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
155
+ break
156
+ except IOError:
157
+ continue
158
+ else:
159
+ raise RegistryError("Registry lock timeout")
160
+
161
+ try:
162
+ # Execute operation with lock held
163
+ return operation_func()
164
+ finally:
165
+ # Release lock
166
+ fcntl.flock(lock_file.fileno(), fcntl.LOCK_UN)
167
+ lock_path.unlink()
168
+ ```
169
+
170
+ ### Registry Validation and Integrity
171
+
172
+ Schema Validation:
173
+ ```python
174
+ import jsonschema
175
+ from typing import Dict, Any
176
+
177
+ class RegistryValidator:
178
+ REGISTRY_SCHEMA = {
179
+ "type": "object",
180
+ "required": ["version", "created_at", "last_updated", "config", "worktrees"],
181
+ "properties": {
182
+ "version": {"type": "string"},
183
+ "config": {
184
+ "type": "object",
185
+ "required": ["worktree_root", "default_base"],
186
+ "properties": {
187
+ "worktree_root": {"type": "string"},
188
+ "auto_sync": {"type": "boolean"},
189
+ "cleanup_merged": {"type": "boolean"},
190
+ "default_base": {"type": "string"}
191
+ }
192
+ },
193
+ "worktrees": {
194
+ "type": "object",
195
+ "patternProperties": {
196
+ "^SPEC-[0-9]+$": {
197
+ "type": "object",
198
+ "required": ["id", "path", "branch", "status", "created_at"],
199
+ "properties": {
200
+ "id": {"type": "string"},
201
+ "path": {"type": "string"},
202
+ "branch": {"type": "string"},
203
+ "status": {"enum": ["active", "merged", "stale", "error"]},
204
+ "created_at": {"type": "string", "format": "date-time"}
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ }
211
+
212
+ def validate_registry(self, registry: Dict[str, Any]) -> bool:
213
+ """Validate registry schema and integrity."""
214
+
215
+ try:
216
+ jsonschema.validate(registry, self.REGISTRY_SCHEMA)
217
+ except jsonschema.ValidationError as e:
218
+ raise RegistryError(f"Registry schema validation failed: {e}")
219
+
220
+ # Additional integrity checks
221
+ self._validate_worktree_paths(registry)
222
+ self._validate_unique_paths(registry)
223
+ self._validate_git_repositories(registry)
224
+
225
+ return True
226
+
227
+ def _validate_worktree_paths(self, registry: Dict[str, Any]) -> None:
228
+ """Validate that all worktree paths exist and are Git repositories."""
229
+
230
+ for spec_id, worktree in registry['worktrees'].items():
231
+ path = Path(worktree['path'])
232
+
233
+ if not path.exists():
234
+ raise RegistryError(f"Worktree path does not exist: {path}")
235
+
236
+ if not (path / '.git').exists():
237
+ raise RegistryError(f"Worktree is not a Git repository: {path}")
238
+
239
+ def _validate_unique_paths(self, registry: Dict[str, Any]) -> None:
240
+ """Ensure no duplicate worktree paths."""
241
+
242
+ paths = [wt['path'] for wt in registry['worktrees'].values()]
243
+ duplicates = set([p for p in paths if paths.count(p) > 1])
244
+
245
+ if duplicates:
246
+ raise RegistryError(f"Duplicate worktree paths detected: {duplicates}")
247
+ ```
248
+
249
+ ---
250
+
251
+ ## Manager Architecture
252
+
253
+ ### WorktreeManager Core Operations
254
+
255
+ Manager Class Structure:
256
+ ```python
257
+ class WorktreeManager:
258
+ def __init__(self, repo_path: Path, worktree_root: Path):
259
+ self.repo_path = Path(repo_path).resolve()
260
+ self.worktree_root = Path(worktree_root).resolve()
261
+ self.registry = RegistryManager(self.worktree_root)
262
+ self.git_manager = GitManager(self.repo_path)
263
+
264
+ # Core Operations
265
+ def create_worktree(self, spec_id: str, description: str = "", options) -> WorktreeInfo
266
+ def sync_worktree(self, spec_id: str, options) -> SyncResult
267
+ def remove_worktree(self, spec_id: str, options) -> RemoveResult
268
+ def switch_worktree(self, spec_id: str, options) -> SwitchResult
269
+ def cleanup_worktrees(self, options) -> CleanupResult
270
+
271
+ # Query Operations
272
+ def list_worktrees(self, filters) -> List[WorktreeInfo]
273
+ def get_worktree(self, spec_id: str) -> Optional[WorktreeInfo]
274
+ def get_current_worktree(self) -> Optional[WorktreeInfo]
275
+ def get_worktree_status(self, spec_id: str) -> WorktreeStatus
276
+ ```
277
+
278
+ ### Worktree Creation Patterns
279
+
280
+ Complete Creation Workflow:
281
+ ```python
282
+ def create_worktree(self, spec_id: str, description: str = "", options) -> WorktreeInfo:
283
+ """Create a new worktree with comprehensive validation and setup."""
284
+
285
+ # 1. Validate input
286
+ self._validate_spec_id(spec_id)
287
+ self._validate_worktree_doesnt_exist(spec_id)
288
+
289
+ # 2. Determine configuration
290
+ branch = options.get('branch') or self._generate_branch_name(spec_id, description)
291
+ base_branch = options.get('base') or self.config.default_base
292
+ template = options.get('template')
293
+
294
+ # 3. Create worktree path
295
+ worktree_path = self.worktree_root / spec_id
296
+
297
+ try:
298
+ # 4. Create Git worktree
299
+ self.git_manager.create_worktree(
300
+ worktree_path=worktree_path,
301
+ branch=branch,
302
+ base_branch=base_branch,
303
+ force=options.get('force', False)
304
+ )
305
+
306
+ # 5. Apply template if specified
307
+ if template:
308
+ self._apply_template(worktree_path, template)
309
+
310
+ # 6. Register worktree
311
+ worktree_info = WorktreeInfo(
312
+ id=spec_id,
313
+ description=description,
314
+ path=str(worktree_path),
315
+ branch=branch,
316
+ base_branch=base_branch,
317
+ status=WorktreeStatus.ACTIVE,
318
+ created_at=datetime.utcnow(),
319
+ metadata=options.get('metadata', {})
320
+ )
321
+
322
+ self.registry.register_worktree(worktree_info)
323
+
324
+ # 7. Post-creation hooks
325
+ self._run_creation_hooks(worktree_info)
326
+
327
+ return worktree_info
328
+
329
+ except Exception as e:
330
+ # Cleanup on failure
331
+ if worktree_path.exists():
332
+ shutil.rmtree(worktree_path, ignore_errors=True)
333
+ raise WorktreeCreationError(f"Failed to create worktree {spec_id}: {e}")
334
+
335
+ def _apply_template(self, worktree_path: Path, template_name: str) -> None:
336
+ """Apply worktree template for initial setup."""
337
+ import shlex
338
+
339
+ template_config = self._load_template_config(template_name)
340
+
341
+ # Execute setup commands safely (shell=False to prevent command injection CWE-78)
342
+ for command in template_config.get('setup_commands', []):
343
+ # Parse command string into list for safe execution
344
+ cmd_list = shlex.split(command) if isinstance(command, str) else command
345
+ result = subprocess.run(
346
+ cmd_list,
347
+ cwd=worktree_path,
348
+ capture_output=True,
349
+ text=True
350
+ )
351
+
352
+ if result.returncode != 0:
353
+ raise TemplateError(f"Template command failed: {command}\n{result.stderr}")
354
+
355
+ # Create template files
356
+ for file_path, content in template_config.get('files', {}).items():
357
+ full_path = worktree_path / file_path
358
+ full_path.parent.mkdir(parents=True, exist_ok=True)
359
+ full_path.write_text(content)
360
+
361
+ # Set environment variables
362
+ for key, value in template_config.get('env_vars', {}).items():
363
+ env_file = worktree_path / '.env.local'
364
+ with open(env_file, 'a') as f:
365
+ f.write(f"{key}={value}\n")
366
+ ```
367
+
368
+ ### Synchronization Patterns
369
+
370
+ Smart Synchronization Strategy:
371
+ ```python
372
+ def sync_worktree(self, spec_id: str, options) -> SyncResult:
373
+ """Synchronize worktree with base branch using intelligent strategies."""
374
+
375
+ worktree = self.get_worktree(spec_id)
376
+ if not worktree:
377
+ raise WorktreeNotFoundError(f"Worktree not found: {spec_id}")
378
+
379
+ sync_strategy = options.get('strategy', self.config.sync_strategy)
380
+
381
+ try:
382
+ # 1. Check for uncommitted changes
383
+ if self._has_uncommitted_changes(worktree.path) and not options.get('force'):
384
+ raise UncommittedChangesError("Worktree has uncommitted changes")
385
+
386
+ # 2. Fetch latest changes
387
+ self.git_manager.fetch_updates(worktree.path)
388
+
389
+ # 3. Analyze synchronization needs
390
+ sync_analysis = self._analyze_sync_needs(worktree)
391
+
392
+ if not sync_analysis.needs_sync:
393
+ return SyncResult(skipped=True, reason="Already up to date")
394
+
395
+ # 4. Execute synchronization based on strategy
396
+ if sync_strategy == "merge":
397
+ result = self._merge_sync(worktree, sync_analysis, options)
398
+ elif sync_strategy == "rebase":
399
+ result = self._rebase_sync(worktree, sync_analysis, options)
400
+ elif sync_strategy == "squash":
401
+ result = self._squash_sync(worktree, sync_analysis, options)
402
+ else:
403
+ raise ValueError(f"Unknown sync strategy: {sync_strategy}")
404
+
405
+ # 5. Update registry
406
+ self._update_sync_timestamp(spec_id)
407
+
408
+ # 6. Post-sync hooks
409
+ self._run_sync_hooks(worktree, result)
410
+
411
+ return result
412
+
413
+ except Exception as e:
414
+ self._update_sync_timestamp(spec_id, status="error")
415
+ raise SynchronizationError(f"Sync failed for {spec_id}: {e}")
416
+
417
+ def _merge_sync(self, worktree: WorktreeInfo, analysis: SyncAnalysis, options: dict) -> SyncResult:
418
+ """Perform merge-based synchronization."""
419
+
420
+ worktree_path = Path(worktree.path)
421
+
422
+ # Check for conflicts
423
+ if analysis.has_conflicts:
424
+ if options.get('auto_resolve'):
425
+ self._auto_resolve_conflicts(worktree_path, analysis.conflicts)
426
+ elif options.get('interactive'):
427
+ self._interactive_resolve_conflicts(worktree_path, analysis.conflicts)
428
+ else:
429
+ raise MergeConflictError(f"Merge conflicts detected in {worktree.id}")
430
+
431
+ # Perform merge
432
+ merge_result = self.git_manager.merge_branch(
433
+ worktree_path=worktree_path,
434
+ source_branch=worktree.base_branch,
435
+ target_branch=worktree.branch,
436
+ strategy=options.get('merge_strategy', 'recursive')
437
+ )
438
+
439
+ return SyncResult(
440
+ strategy="merge",
441
+ files_changed=merge_result.files_changed,
442
+ conflicts_resolved=len(analysis.conflicts) if analysis.has_conflicts else 0,
443
+ commits_merged=analysis.commits_behind
444
+ )
445
+ ```
446
+
447
+ ### Cleanup and Optimization Patterns
448
+
449
+ Intelligent Cleanup Strategy:
450
+ ```python
451
+ def cleanup_worktrees(self, options) -> CleanupResult:
452
+ """Perform intelligent cleanup of worktrees based on various criteria."""
453
+
454
+ cleanup_candidates = []
455
+
456
+ # 1. Find merged worktrees
457
+ if options.get('merged_only', False):
458
+ merged_worktrees = self._find_merged_worktrees()
459
+ cleanup_candidates.extend(merged_worktrees)
460
+
461
+ # 2. Find stale worktrees
462
+ if options.get('stale', False):
463
+ stale_threshold = options.get('days', 30)
464
+ stale_worktrees = self._find_stale_worktrees(stale_threshold)
465
+ cleanup_candidates.extend(stale_worktrees)
466
+
467
+ # 3. Find large worktrees
468
+ if options.get('large_only', False):
469
+ size_threshold = options.get('size_threshold', '1GB')
470
+ large_worktrees = self._find_large_worktrees(size_threshold)
471
+ cleanup_candidates.extend(large_worktrees)
472
+
473
+ # 4. Remove duplicates and sort by priority
474
+ cleanup_candidates = list(set(cleanup_candidates))
475
+ cleanup_candidates.sort(key=lambda w: self._cleanup_priority(w), reverse=True)
476
+
477
+ # 5. Interactive selection if requested
478
+ if options.get('interactive'):
479
+ cleanup_candidates = self._interactive_cleanup_selection(cleanup_candidates)
480
+
481
+ # 6. Perform cleanup
482
+ removed_count = 0
483
+ total_size_freed = 0
484
+
485
+ for worktree in cleanup_candidates:
486
+ try:
487
+ result = self.remove_worktree(
488
+ worktree.id,
489
+ backup=options.get('backup', False),
490
+ force=options.get('force', False)
491
+ )
492
+
493
+ removed_count += 1
494
+ total_size_freed += result.size_freed
495
+
496
+ except Exception as e:
497
+ logger.warning(f"Failed to remove worktree {worktree.id}: {e}")
498
+
499
+ return CleanupResult(
500
+ worktrees_removed=removed_count,
501
+ size_freed=total_size_freed,
502
+ candidates=len(cleanup_candidates)
503
+ )
504
+
505
+ def _find_merged_worktrees(self) -> List[WorktreeInfo]:
506
+ """Find worktrees whose branches have been merged to base."""
507
+
508
+ merged_worktrees = []
509
+
510
+ for worktree in self.list_worktrees(status='active'):
511
+ if self.git_manager.is_branch_merged(
512
+ branch=worktree.branch,
513
+ into=worktree.base_branch,
514
+ repo_path=worktree.path
515
+ ):
516
+ merged_worktrees.append(worktree)
517
+
518
+ return merged_worktrees
519
+
520
+ def _find_stale_worktrees(self, days_threshold: int) -> List[WorktreeInfo]:
521
+ """Find worktrees not accessed in specified days."""
522
+
523
+ threshold_date = datetime.utcnow() - timedelta(days=days_threshold)
524
+ stale_worktrees = []
525
+
526
+ for worktree in self.list_worktrees():
527
+ last_accessed = datetime.fromisoformat(worktree.last_accessed)
528
+ if last_accessed < threshold_date:
529
+ stale_worktrees.append(worktree)
530
+
531
+ return stale_worktrees
532
+ ```
533
+
534
+ ---
535
+
536
+ ## Resource Optimization
537
+
538
+ ### Disk Space Management
539
+
540
+ Disk Usage Analysis:
541
+ ```python
542
+ def analyze_disk_usage(self) -> DiskUsageReport:
543
+ """Analyze disk usage of all worktrees."""
544
+
545
+ total_size = 0
546
+ worktree_sizes = {}
547
+
548
+ for worktree in self.list_worktrees():
549
+ size = self._calculate_worktree_size(worktree.path)
550
+ worktree_sizes[worktree.id] = size
551
+ total_size += size
552
+
553
+ # Find size anomalies
554
+ large_worktrees = [
555
+ (wid, size) for wid, size in worktree_sizes.items()
556
+ if size > self._get_size_threshold(wid)
557
+ ]
558
+
559
+ return DiskUsageReport(
560
+ total_size=total_size,
561
+ worktree_sizes=worktree_sizes,
562
+ large_worktrees=large_worktrees,
563
+ optimization_suggestions=self._generate_optimization_suggestions(worktree_sizes)
564
+ )
565
+
566
+ def _calculate_worktree_size(self, worktree_path: str) -> int:
567
+ """Calculate total size of worktree in bytes."""
568
+
569
+ total_size = 0
570
+ worktree_path = Path(worktree_path)
571
+
572
+ for file_path in worktree_path.rglob('*'):
573
+ if file_path.is_file():
574
+ total_size += file_path.stat().st_size
575
+
576
+ return total_size
577
+
578
+ def optimize_disk_usage(self, aggressive: bool = False) -> OptimizationResult:
579
+ """Optimize disk usage across worktrees."""
580
+
581
+ optimizations = []
582
+ total_freed = 0
583
+
584
+ # 1. Remove unnecessary files
585
+ for worktree in self.list_worktrees():
586
+ worktree_path = Path(worktree.path)
587
+
588
+ # Remove build artifacts
589
+ build_artifacts = self._find_build_artifacts(worktree_path)
590
+ if build_artifacts:
591
+ freed = self._remove_files(build_artifacts)
592
+ optimizations.append(f"Removed {len(build_artifacts)} build artifacts from {worktree.id}")
593
+ total_freed += freed
594
+
595
+ # Clean Git garbage
596
+ if aggressive:
597
+ git_freed = self._git_gc(worktree_path)
598
+ optimizations.append(f"Git GC freed {git_freed} from {worktree.id}")
599
+ total_freed += git_freed
600
+
601
+ # 2. Compress old worktrees
602
+ if aggressive:
603
+ old_worktrees = self._find_old_worktrees(days=90)
604
+ for worktree in old_worktrees:
605
+ compressed = self._compress_worktree(worktree)
606
+ if compressed:
607
+ optimizations.append(f"Compressed {worktree.id}")
608
+ total_freed += compressed
609
+
610
+ return OptimizationResult(
611
+ optimizations=optimizations,
612
+ total_freed=total_freed
613
+ )
614
+ ```
615
+
616
+ ### Memory and Performance Optimization
617
+
618
+ Memory-Efficient Operations:
619
+ ```python
620
+ class MemoryOptimizedManager:
621
+ def __init__(self, repo_path: Path, worktree_root: Path):
622
+ self.repo_path = repo_path
623
+ self.worktree_root = worktree_root
624
+ self._registry_cache = None
625
+ self._cache_timestamp = None
626
+ self._cache_ttl = timedelta(minutes=5)
627
+
628
+ @property
629
+ def registry(self) -> Dict[str, Any]:
630
+ """Lazy-loaded registry with caching."""
631
+
632
+ now = datetime.utcnow()
633
+
634
+ if (self._registry_cache is None or
635
+ self._cache_timestamp is None or
636
+ now - self._cache_timestamp > self._cache_ttl):
637
+
638
+ self._registry_cache = self._load_registry()
639
+ self._cache_timestamp = now
640
+
641
+ return self._registry_cache
642
+
643
+ def list_worktrees_streaming(self, filters: Dict[str, Any] = None) -> Iterator[WorktreeInfo]:
644
+ """Stream worktrees without loading entire registry."""
645
+
646
+ registry_path = self.worktree_root / ".moai-worktree-registry.json"
647
+
648
+ if not registry_path.exists():
649
+ return
650
+
651
+ # Stream JSON parsing for large registries
652
+ import ijson
653
+
654
+ with open(registry_path, 'rb') as f:
655
+ worktrees = ijson.items(f, 'worktrees.item')
656
+
657
+ for worktree_data in worktrees:
658
+ worktree = WorktreeInfo.from_dict(worktree_data)
659
+
660
+ if self._matches_filters(worktree, filters):
661
+ yield worktree
662
+ ```
663
+
664
+ ---
665
+
666
+ ## Error Handling and Recovery
667
+
668
+ ### Comprehensive Error Handling
669
+
670
+ Error Hierarchy and Recovery:
671
+ ```python
672
+ class WorktreeError(Exception):
673
+ """Base class for worktree-related errors."""
674
+ pass
675
+
676
+ class WorktreeCreationError(WorktreeError):
677
+ """Errors during worktree creation."""
678
+ def __init__(self, message: str, partial_worktree: Optional[Path] = None):
679
+ super().__init__(message)
680
+ self.partial_worktree = partial_worktree
681
+
682
+ class SynchronizationError(WorktreeError):
683
+ """Errors during synchronization."""
684
+ def __init__(self, message: str, sync_state: Optional[Dict] = None):
685
+ super().__init__(message)
686
+ self.sync_state = sync_state
687
+
688
+ class RecoveryManager:
689
+ def recover_from_creation_failure(self, error: WorktreeCreationError) -> RecoveryResult:
690
+ """Recover from worktree creation failure."""
691
+
692
+ if error.partial_worktree:
693
+ # Clean up partial worktree
694
+ if error.partial_worktree.exists():
695
+ shutil.rmtree(error.partial_worktree, ignore_errors=True)
696
+
697
+ # Remove any registry entries
698
+ self.registry.remove_worktree(error.spec_id, ignore_missing=True)
699
+
700
+ return RecoveryResult(success=True, message="Cleanup completed")
701
+
702
+ def recover_from_sync_failure(self, error: SynchronizationError) -> RecoveryResult:
703
+ """Recover from synchronization failure."""
704
+
705
+ worktree_id = error.worktree_id
706
+
707
+ # Reset worktree to last known good state
708
+ if error.sync_state and 'backup_ref' in error.sync_state:
709
+ self.git_manager.reset_to_ref(
710
+ worktree_id=worktree_id,
711
+ ref=error.sync_state['backup_ref']
712
+ )
713
+
714
+ # Mark worktree as needing manual intervention
715
+ self.registry.update_worktree(worktree_id, {
716
+ 'status': 'error',
717
+ 'last_error': str(error),
718
+ 'needs_manual_intervention': True
719
+ })
720
+
721
+ return RecoveryResult(
722
+ success=True,
723
+ message=f"Worktree {worktree_id} reset to safe state"
724
+ )
725
+ ```
726
+
727
+ ---
728
+
729
+ ## Monitoring and Analytics
730
+
731
+ ### Worktree Analytics
732
+
733
+ Usage Analytics:
734
+ ```python
735
+ class WorktreeAnalytics:
736
+ def generate_usage_report(self, period: timedelta = timedelta(days=30)) -> UsageReport:
737
+ """Generate comprehensive usage report."""
738
+
739
+ end_date = datetime.utcnow()
740
+ start_date = end_date - period
741
+
742
+ worktrees = self.list_worktrees()
743
+
744
+ # Calculate metrics
745
+ metrics = {
746
+ 'total_worktrees_created': len([
747
+ w for w in worktrees
748
+ if datetime.fromisoformat(w.created_at) >= start_date
749
+ ]),
750
+ 'average_sync_frequency': self._calculate_average_sync_frequency(worktrees, period),
751
+ 'most_active_worktree': self._find_most_active_worktree(worktrees, period),
752
+ 'conflict_rate': self._calculate_conflict_rate(worktrees, period),
753
+ 'storage_growth': self._calculate_storage_growth(worktrees, period)
754
+ }
755
+
756
+ # Generate recommendations
757
+ recommendations = self._generate_recommendations(metrics, worktrees)
758
+
759
+ return UsageReport(
760
+ period=period,
761
+ metrics=metrics,
762
+ recommendations=recommendations,
763
+ generated_at=end_date
764
+ )
765
+
766
+ def _calculate_average_sync_frequency(self, worktrees: List[WorktreeInfo], period: timedelta) -> float:
767
+ """Calculate average sync frequency per worktree."""
768
+
769
+ if not worktrees:
770
+ return 0.0
771
+
772
+ total_syncs = sum(w.operations.total_syncs for w in worktrees)
773
+ days_in_period = period.days
774
+
775
+ return total_syncs / (len(worktrees) * days_in_period)
776
+ ```
777
+
778
+ ---
779
+
780
+ Version: 1.0.0
781
+ Last Updated: 2025-11-29
782
+ Module: Core worktree management architecture with registry, lifecycle, and optimization patterns