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

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

Potentially problematic release.


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

Files changed (672) hide show
  1. moai_adk/__init__.py +2 -5
  2. moai_adk/__main__.py +114 -82
  3. moai_adk/cli/__init__.py +6 -1
  4. moai_adk/cli/commands/__init__.py +1 -3
  5. moai_adk/cli/commands/analyze.py +5 -16
  6. moai_adk/cli/commands/doctor.py +6 -18
  7. moai_adk/cli/commands/init.py +60 -126
  8. moai_adk/cli/commands/language.py +14 -35
  9. moai_adk/cli/commands/status.py +9 -15
  10. moai_adk/cli/commands/update.py +1560 -190
  11. moai_adk/cli/prompts/init_prompts.py +112 -56
  12. moai_adk/cli/spec_status.py +263 -0
  13. moai_adk/cli/ui/__init__.py +44 -0
  14. moai_adk/cli/ui/progress.py +422 -0
  15. moai_adk/cli/ui/prompts.py +389 -0
  16. moai_adk/cli/ui/theme.py +129 -0
  17. moai_adk/cli/worktree/__init__.py +27 -0
  18. moai_adk/cli/worktree/__main__.py +31 -0
  19. moai_adk/cli/worktree/cli.py +683 -0
  20. moai_adk/cli/worktree/exceptions.py +89 -0
  21. moai_adk/cli/worktree/manager.py +493 -0
  22. moai_adk/cli/worktree/models.py +65 -0
  23. moai_adk/cli/worktree/registry.py +422 -0
  24. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  25. moai_adk/core/analysis/session_analyzer.py +17 -56
  26. moai_adk/core/claude_integration.py +26 -54
  27. moai_adk/core/command_helpers.py +10 -10
  28. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  29. moai_adk/core/config/migration.py +19 -9
  30. moai_adk/core/config/unified.py +610 -0
  31. moai_adk/core/context_manager.py +6 -12
  32. moai_adk/core/enterprise_features.py +1404 -0
  33. moai_adk/core/error_recovery_system.py +747 -116
  34. moai_adk/core/event_driven_hook_system.py +1371 -0
  35. moai_adk/core/git/__init__.py +8 -0
  36. moai_adk/core/git/branch_manager.py +3 -11
  37. moai_adk/core/git/checkpoint.py +1 -3
  38. moai_adk/core/git/conflict_detector.py +422 -0
  39. moai_adk/core/git/event_detector.py +16 -5
  40. moai_adk/core/git/manager.py +91 -1
  41. moai_adk/core/input_validation_middleware.py +1006 -0
  42. moai_adk/core/integration/engine.py +6 -18
  43. moai_adk/core/integration/integration_tester.py +10 -9
  44. moai_adk/core/integration/utils.py +1 -1
  45. moai_adk/core/issue_creator.py +10 -28
  46. moai_adk/core/jit_context_loader.py +956 -0
  47. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  48. moai_adk/core/language_config_resolver.py +578 -0
  49. moai_adk/core/language_validator.py +28 -41
  50. moai_adk/core/mcp/setup.py +15 -12
  51. moai_adk/core/merge/__init__.py +9 -0
  52. moai_adk/core/merge/analyzer.py +666 -0
  53. moai_adk/core/migration/alfred_to_moai_migrator.py +389 -0
  54. moai_adk/core/migration/backup_manager.py +131 -12
  55. moai_adk/core/migration/custom_element_scanner.py +358 -0
  56. moai_adk/core/migration/file_migrator.py +181 -18
  57. moai_adk/core/migration/interactive_checkbox_ui.py +499 -0
  58. moai_adk/core/migration/selective_restorer.py +470 -0
  59. moai_adk/core/migration/template_utils.py +74 -0
  60. moai_adk/core/migration/user_selection_ui.py +338 -0
  61. moai_adk/core/migration/version_detector.py +127 -27
  62. moai_adk/core/migration/version_migrator.py +47 -12
  63. moai_adk/core/performance/cache_system.py +8 -10
  64. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  65. moai_adk/core/project/backup_utils.py +9 -1
  66. moai_adk/core/project/checker.py +2 -4
  67. moai_adk/core/project/detector.py +1 -3
  68. moai_adk/core/project/initializer.py +142 -93
  69. moai_adk/core/project/phase_executor.py +130 -111
  70. moai_adk/core/project/validator.py +6 -12
  71. moai_adk/core/quality/trust_checker.py +39 -37
  72. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  73. moai_adk/core/robust_json_parser.py +611 -0
  74. moai_adk/core/rollback_manager.py +116 -164
  75. moai_adk/core/session_manager.py +10 -26
  76. moai_adk/core/skill_loading_system.py +579 -0
  77. moai_adk/core/spec_status_manager.py +64 -74
  78. moai_adk/core/template/backup.py +48 -22
  79. moai_adk/core/template/config.py +142 -45
  80. moai_adk/core/template/merger.py +45 -27
  81. moai_adk/core/template/processor.py +391 -152
  82. moai_adk/core/template_engine.py +83 -41
  83. moai_adk/core/template_variable_synchronizer.py +431 -0
  84. moai_adk/core/unified_permission_manager.py +745 -0
  85. moai_adk/core/user_behavior_analytics.py +851 -0
  86. moai_adk/core/version_sync.py +477 -0
  87. moai_adk/foundation/__init__.py +56 -0
  88. moai_adk/foundation/backend.py +1027 -0
  89. moai_adk/foundation/database.py +1115 -0
  90. moai_adk/foundation/devops.py +1585 -0
  91. moai_adk/foundation/ears.py +431 -0
  92. moai_adk/foundation/frontend.py +870 -0
  93. moai_adk/foundation/git/commit_templates.py +4 -12
  94. moai_adk/foundation/git.py +376 -0
  95. moai_adk/foundation/langs.py +484 -0
  96. moai_adk/foundation/ml_ops.py +1162 -0
  97. moai_adk/foundation/testing.py +1524 -0
  98. moai_adk/foundation/trust/trust_principles.py +23 -72
  99. moai_adk/foundation/trust/validation_checklist.py +57 -162
  100. moai_adk/project/__init__.py +0 -0
  101. moai_adk/project/configuration.py +1084 -0
  102. moai_adk/project/documentation.py +566 -0
  103. moai_adk/project/schema.py +447 -0
  104. moai_adk/statusline/alfred_detector.py +1 -3
  105. moai_adk/statusline/config.py +18 -6
  106. moai_adk/statusline/enhanced_output_style_detector.py +23 -15
  107. moai_adk/statusline/main.py +109 -15
  108. moai_adk/statusline/renderer.py +85 -69
  109. moai_adk/statusline/update_checker.py +3 -9
  110. moai_adk/statusline/version_reader.py +140 -46
  111. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +716 -0
  112. moai_adk/templates/.claude/agents/moai/builder-agent.md +480 -0
  113. moai_adk/templates/.claude/agents/moai/builder-command.md +1194 -0
  114. moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
  115. moai_adk/templates/.claude/agents/moai/builder-skill.md +672 -0
  116. moai_adk/templates/.claude/agents/moai/expert-backend.md +903 -0
  117. moai_adk/templates/.claude/agents/moai/expert-database.md +782 -0
  118. moai_adk/templates/.claude/agents/moai/expert-debug.md +407 -0
  119. moai_adk/templates/.claude/agents/moai/expert-devops.md +722 -0
  120. moai_adk/templates/.claude/agents/moai/expert-frontend.md +727 -0
  121. moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
  122. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
  123. moai_adk/templates/.claude/agents/moai/expert-security.md +525 -0
  124. moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
  125. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1047 -0
  126. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +438 -0
  127. moai_adk/templates/.claude/agents/moai/manager-docs.md +578 -0
  128. moai_adk/templates/.claude/agents/moai/manager-git.md +1092 -0
  129. moai_adk/templates/.claude/agents/moai/manager-project.md +897 -0
  130. moai_adk/templates/.claude/agents/moai/manager-quality.md +640 -0
  131. moai_adk/templates/.claude/agents/moai/manager-spec.md +815 -0
  132. moai_adk/templates/.claude/agents/moai/manager-strategy.md +786 -0
  133. moai_adk/templates/.claude/agents/moai/manager-tdd.md +797 -0
  134. moai_adk/templates/.claude/agents/moai/mcp-context7.md +464 -0
  135. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1588 -0
  136. moai_adk/templates/.claude/agents/moai/mcp-notion.md +795 -0
  137. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +475 -0
  138. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1038 -0
  139. moai_adk/templates/.claude/commands/moai/0-project.md +1339 -0
  140. moai_adk/templates/.claude/commands/moai/1-plan.md +1367 -0
  141. moai_adk/templates/.claude/commands/moai/2-run.md +825 -0
  142. moai_adk/templates/.claude/commands/moai/3-sync.md +1358 -0
  143. moai_adk/templates/.claude/commands/moai/9-feedback.md +320 -0
  144. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  145. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  146. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  147. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +104 -0
  148. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +247 -0
  149. moai_adk/templates/.claude/hooks/moai/lib/common.py +161 -0
  150. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +444 -0
  151. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  152. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  153. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  154. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  155. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +407 -0
  156. moai_adk/templates/.claude/hooks/moai/lib/models.py +104 -0
  157. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +219 -0
  158. moai_adk/templates/.claude/hooks/moai/lib/project.py +777 -0
  159. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  160. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  161. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +804 -0
  162. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +542 -0
  163. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
  164. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
  165. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
  166. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
  167. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +866 -0
  168. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1125 -0
  169. moai_adk/templates/.claude/output-styles/moai/r2d2.md +643 -0
  170. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  171. moai_adk/templates/.claude/settings.json +209 -0
  172. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +302 -0
  173. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  174. moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
  175. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  176. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  177. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +302 -0
  178. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
  179. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +56 -0
  180. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +120 -0
  181. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  182. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +185 -0
  183. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +207 -0
  184. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
  185. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +324 -0
  186. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  187. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  188. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +326 -0
  189. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  190. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  191. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  192. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  193. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  194. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  195. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +194 -0
  196. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  197. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  198. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  199. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  200. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  201. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  202. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  203. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  204. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +454 -0
  205. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  206. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  207. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  208. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  209. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  210. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  211. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +280 -0
  212. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  213. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +327 -0
  214. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  215. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  216. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  217. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  218. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  219. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +243 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  229. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +670 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +432 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +467 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +420 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +449 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +414 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +228 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +171 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +239 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +363 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  280. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  281. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  282. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  283. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  284. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  285. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  286. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +430 -0
  287. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -0
  288. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  289. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +17 -0
  290. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +193 -0
  291. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  292. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  293. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  294. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  295. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  296. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  297. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  298. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +394 -0
  299. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -0
  300. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  301. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +17 -0
  302. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +472 -0
  303. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  304. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  305. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +377 -0
  306. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  307. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  308. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +386 -0
  309. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  310. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  311. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +418 -0
  312. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  313. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  314. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +383 -0
  315. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  316. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  317. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +504 -0
  318. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -0
  319. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  320. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +17 -0
  321. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +489 -0
  322. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  323. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  324. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +389 -0
  325. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -0
  326. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  327. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +17 -0
  328. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +432 -0
  329. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -0
  330. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  331. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  332. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +17 -0
  333. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +377 -0
  334. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  335. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  336. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +211 -0
  337. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  338. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  339. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  340. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  341. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  342. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  343. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  344. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +191 -0
  345. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  346. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  347. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  348. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  349. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  350. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  351. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +364 -0
  352. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  353. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  354. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +164 -0
  355. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  356. moai_adk/templates/.claude/skills/moai-library-mermaid/modules/advanced-patterns.md +465 -0
  357. moai_adk/templates/.claude/skills/moai-library-mermaid/modules/optimization.md +440 -0
  358. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  359. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +335 -0
  360. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  361. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  362. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +336 -0
  363. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +350 -0
  364. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  365. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  366. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  367. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  368. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  369. moai_adk/templates/.claude/skills/moai-library-nextra/modules/optimization.md +303 -0
  370. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  371. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +373 -0
  372. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  373. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  374. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  375. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  376. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  377. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  378. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +283 -0
  379. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  380. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  381. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  382. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  383. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  384. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  385. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  386. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  387. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  388. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  389. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  390. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  391. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  392. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  393. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  394. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  395. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  396. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  397. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  398. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  399. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  400. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  401. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  402. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  403. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  404. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  405. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  406. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  407. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  408. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  409. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  410. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  411. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  412. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +425 -0
  413. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  414. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  415. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +228 -0
  416. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  417. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  418. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  419. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  420. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  421. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  422. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +249 -0
  423. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  424. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  425. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  426. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  427. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  428. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +230 -0
  429. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  430. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  431. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  432. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  433. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  434. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  435. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +205 -0
  436. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  437. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  438. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  439. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  440. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  441. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  442. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +223 -0
  443. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  444. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  445. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  446. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  447. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  448. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  449. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +206 -0
  450. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  451. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  452. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  453. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  454. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  455. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  456. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  457. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  458. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  459. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +209 -0
  460. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  461. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  462. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  463. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  464. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  465. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  466. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  467. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +473 -0
  468. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  469. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
  470. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
  471. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
  472. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +306 -0
  473. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  474. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  475. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  476. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  477. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  478. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  479. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  480. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  481. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  482. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  483. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  484. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  485. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  486. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  487. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  488. moai_adk/templates/.claude/skills/moai-tool-opencode/SKILL.md +214 -0
  489. moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
  490. moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
  491. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
  492. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
  493. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
  494. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
  495. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
  496. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
  497. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
  498. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
  499. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
  500. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
  501. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
  502. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
  503. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
  504. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
  505. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
  506. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
  507. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
  508. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
  509. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
  510. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
  511. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
  512. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
  513. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
  514. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
  515. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
  516. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
  517. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
  518. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
  519. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
  520. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
  521. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
  522. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
  523. moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
  524. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +211 -0
  525. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  526. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/advanced-patterns.md +379 -0
  527. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/modules/optimization.md +286 -0
  528. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  529. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  530. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +260 -0
  531. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  532. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  533. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  534. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
  535. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  536. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  537. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  538. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  539. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  540. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  541. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  542. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  543. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  544. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +336 -0
  545. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  546. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  547. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  548. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +386 -0
  549. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  550. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  551. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  552. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  553. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  554. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  555. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +307 -0
  556. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  557. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  558. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  559. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  560. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  561. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +269 -0
  562. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/advanced-patterns.md +576 -0
  563. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +302 -0
  564. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  565. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  566. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  567. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  568. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  569. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  570. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  571. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  572. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  573. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +263 -0
  574. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  575. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  576. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  577. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  578. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  579. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/optimization.md +505 -0
  580. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  581. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  582. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  583. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  584. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  585. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  586. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  587. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +327 -0
  588. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  589. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  590. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  591. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  592. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +313 -0
  593. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  594. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  595. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  596. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  597. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  598. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  599. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +265 -0
  600. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  601. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  602. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  603. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  604. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  605. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  606. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +227 -0
  607. moai_adk/templates/.claude/skills/moai-workflow-worktree/examples.md +606 -0
  608. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  609. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  610. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  611. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  612. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  613. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  614. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  615. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  616. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  617. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  618. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  619. moai_adk/templates/.claude/skills/moai-workflow-worktree/reference.md +357 -0
  620. moai_adk/templates/.git-hooks/pre-commit +103 -41
  621. moai_adk/templates/.git-hooks/pre-push +244 -31
  622. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  623. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  624. moai_adk/templates/.gitignore +181 -44
  625. moai_adk/templates/.lsp.json +152 -0
  626. moai_adk/templates/.mcp.json +6 -15
  627. moai_adk/templates/.moai/config/config.yaml +58 -0
  628. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  629. moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
  630. moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
  631. moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
  632. moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
  633. moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
  634. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +183 -0
  635. moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
  636. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  637. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  638. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  639. moai_adk/templates/.moai/config/sections/quality.yaml +18 -0
  640. moai_adk/templates/.moai/config/sections/system.yaml +24 -0
  641. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  642. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  643. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  644. moai_adk/templates/CLAUDE.md +804 -499
  645. moai_adk/utils/__init__.py +24 -1
  646. moai_adk/utils/banner.py +7 -10
  647. moai_adk/utils/common.py +49 -30
  648. moai_adk/utils/link_validator.py +4 -12
  649. moai_adk/utils/safe_file_reader.py +2 -6
  650. moai_adk/utils/timeout.py +160 -0
  651. moai_adk/utils/toon_utils.py +256 -0
  652. moai_adk/version.py +22 -0
  653. moai_adk-0.41.0.dist-info/METADATA +3274 -0
  654. moai_adk-0.41.0.dist-info/RECORD +683 -0
  655. {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/WHEEL +1 -1
  656. {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/entry_points.txt +1 -0
  657. moai_adk/cli/commands/backup.py +0 -82
  658. moai_adk/cli/commands/improve_user_experience.py +0 -348
  659. moai_adk/cli/commands/migrate.py +0 -158
  660. moai_adk/cli/commands/validate_links.py +0 -118
  661. moai_adk/core/config/auto_spec_config.py +0 -346
  662. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -925
  663. moai_adk/core/spec/confidence_scoring.py +0 -749
  664. moai_adk/core/spec/ears_template_engine.py +0 -1182
  665. moai_adk/core/spec/quality_validator.py +0 -721
  666. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
  667. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  668. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  669. moai_adk/utils/user_experience.py +0 -531
  670. moai_adk-0.25.4.dist-info/METADATA +0 -2279
  671. moai_adk-0.25.4.dist-info/RECORD +0 -112
  672. {moai_adk-0.25.4.dist-info → moai_adk-0.41.0.dist-info}/licenses/LICENSE +0 -0
@@ -12,6 +12,7 @@ Enhanced with:
12
12
 
13
13
  from __future__ import annotations
14
14
 
15
+ import json
15
16
  import logging
16
17
  import re
17
18
  import shutil
@@ -61,23 +62,13 @@ class TemplateProcessorConfig:
61
62
  return cls(
62
63
  version_cache_ttl_seconds=config_dict.get("version_cache_ttl_seconds", 120),
63
64
  version_fallback=config_dict.get("version_fallback", "unknown"),
64
- version_format_regex=config_dict.get(
65
- "version_format_regex", r"^v?(\d+\.\d+\.\d+(-[a-zA-Z0-9]+)?)$"
66
- ),
67
- enable_version_validation=config_dict.get(
68
- "enable_version_validation", True
69
- ),
65
+ version_format_regex=config_dict.get("version_format_regex", r"^v?(\d+\.\d+\.\d+(-[a-zA-Z0-9]+)?)$"),
66
+ enable_version_validation=config_dict.get("enable_version_validation", True),
70
67
  preserve_user_version=config_dict.get("preserve_user_version", True),
71
- validate_template_variables=config_dict.get(
72
- "validate_template_variables", True
73
- ),
68
+ validate_template_variables=config_dict.get("validate_template_variables", True),
74
69
  max_variable_length=config_dict.get("max_variable_length", 50),
75
- allowed_variable_pattern=config_dict.get(
76
- "allowed_variable_pattern", r"^[A-Z_]+$"
77
- ),
78
- enable_substitution_warnings=config_dict.get(
79
- "enable_substitution_warnings", True
80
- ),
70
+ allowed_variable_pattern=config_dict.get("allowed_variable_pattern", r"^[A-Z_]+$"),
71
+ enable_substitution_warnings=config_dict.get("enable_substitution_warnings", True),
81
72
  enable_caching=config_dict.get("enable_caching", True),
82
73
  cache_size=config_dict.get("cache_size", 100),
83
74
  async_operations=config_dict.get("async_operations", False),
@@ -94,8 +85,9 @@ class TemplateProcessor:
94
85
  ".moai/specs/", # User SPEC documents
95
86
  ".moai/reports/", # User reports
96
87
  ".moai/project/", # User project documents (product/structure/tech.md)
97
- # config.json is now FORCE OVERWRITTEN (backup in .moai-backups/)
98
- # Merge via /alfred:0-project when optimized=false
88
+ ".moai/config/sections/", # User configuration section files (YAML)
89
+ # config.json/config.yaml is now FORCE OVERWRITTEN (backup in .moai-backups/)
90
+ # Merge via /moai:0-project when optimized=false
99
91
  ]
100
92
 
101
93
  # Paths excluded from backups
@@ -103,11 +95,10 @@ class TemplateProcessor:
103
95
 
104
96
  # Common template variables with validation hints
105
97
  COMMON_TEMPLATE_VARIABLES = {
106
- "PROJECT_DIR": "Cross-platform project path (run /alfred:0-project to set)",
107
- "HOOK_PROJECT_DIR": "Cross-platform hook path (deprecated, use PROJECT_DIR instead)",
108
- "PROJECT_NAME": "Project name (run /alfred:0-project to set)",
109
- "AUTHOR": "Project author (run /alfred:0-project to set)",
110
- "CONVERSATION_LANGUAGE": "Interface language (run /alfred:0-project to set)",
98
+ "PROJECT_DIR": "Cross-platform project path (run /moai:0-project to set)",
99
+ "PROJECT_NAME": "Project name (run /moai:0-project to set)",
100
+ "AUTHOR": "Project author (run /moai:0-project to set)",
101
+ "CONVERSATION_LANGUAGE": "Interface language (run /moai:0-project to set)",
111
102
  "MOAI_VERSION": "MoAI-ADK version (should be set automatically)",
112
103
  "MOAI_VERSION_SHORT": "Short MoAI-ADK version (without 'v' prefix)",
113
104
  "MOAI_VERSION_DISPLAY": "Display version with proper formatting",
@@ -117,11 +108,10 @@ class TemplateProcessor:
117
108
  "MOAI_VERSION_SOURCE": "Version source information",
118
109
  "MOAI_VERSION_CACHE_AGE": "Cache age for debugging",
119
110
  "CREATION_TIMESTAMP": "Project creation timestamp",
111
+ "STATUSLINE_COMMAND": "Cross-platform statusline command (OS-specific)",
120
112
  }
121
113
 
122
- def __init__(
123
- self, target_path: Path, config: Optional[TemplateProcessorConfig] = None
124
- ) -> None:
114
+ def __init__(self, target_path: Path, config: Optional[TemplateProcessorConfig] = None) -> None:
125
115
  """Initialize the processor with enhanced configuration.
126
116
 
127
117
  Args:
@@ -135,16 +125,14 @@ class TemplateProcessor:
135
125
  self.context: dict[str, str] = {} # Template variable substitution context
136
126
  self._version_reader: VersionReader | None = None
137
127
  self.config = config or TemplateProcessorConfig()
138
- self._substitution_cache: Dict[str, str] = {} # Cache for substitution results
139
- self._variable_validation_cache: Dict[str, bool] = (
140
- {}
141
- ) # Cache for variable validation
128
+ self._substitution_cache: Dict[
129
+ int, tuple[str, list[str]]
130
+ ] = {} # Cache for substitution results (key: hash, value: (content, warnings))
131
+ self._variable_validation_cache: Dict[str, bool] = {} # Cache for variable validation
142
132
  self.logger = logging.getLogger(__name__)
143
133
 
144
134
  if self.config.verbose_logging:
145
- self.logger.info(
146
- f"TemplateProcessor initialized with config: {self.config}"
147
- )
135
+ self.logger.info(f"TemplateProcessor initialized with config: {self.config}")
148
136
 
149
137
  def set_context(self, context: dict[str, str]) -> None:
150
138
  """Set variable substitution context with enhanced validation.
@@ -213,21 +201,15 @@ class TemplateProcessor:
213
201
 
214
202
  # Check variable length
215
203
  if len(var_name) > self.config.max_variable_length:
216
- warning_messages.append(
217
- f"Variable name '{var_name}' exceeds maximum length"
218
- )
204
+ warning_messages.append(f"Variable name '{var_name}' exceeds maximum length")
219
205
 
220
206
  # Check variable value length
221
207
  if len(var_value) > self.config.max_variable_length * 2:
222
- warning_messages.append(
223
- f"Variable value '{var_value[:20]}...' is very long"
224
- )
208
+ warning_messages.append(f"Variable value '{var_value[:20]}...' is very long")
225
209
 
226
210
  # Check for potentially dangerous values
227
211
  if "{{" in var_value or "}}" in var_value:
228
- warning_messages.append(
229
- f"Variable '{var_name}' contains placeholder patterns"
230
- )
212
+ warning_messages.append(f"Variable '{var_name}' contains placeholder patterns")
231
213
 
232
214
  # Check for common variables that should be present
233
215
  missing_common_vars = []
@@ -236,28 +218,20 @@ class TemplateProcessor:
236
218
  missing_common_vars.append(common_var)
237
219
 
238
220
  if missing_common_vars and self.config.enable_substitution_warnings:
239
- warning_messages.append(
240
- f"Common variables missing: {', '.join(missing_common_vars[:3])}"
241
- )
221
+ warning_messages.append(f"Common variables missing: {', '.join(missing_common_vars[:3])}")
242
222
 
243
223
  # Report validation results
244
224
  if validation_errors and not self.config.graceful_degradation:
245
- raise ValueError(
246
- f"Template variable validation failed: {validation_errors}"
247
- )
225
+ raise ValueError(f"Template variable validation failed: {validation_errors}")
248
226
 
249
227
  if validation_errors and self.config.graceful_degradation:
250
- self.logger.warning(
251
- f"Template variable validation warnings: {validation_errors}"
252
- )
228
+ self.logger.warning(f"Template variable validation warnings: {validation_errors}")
253
229
 
254
230
  if warning_messages and self.config.enable_substitution_warnings:
255
231
  self.logger.warning(f"Template variable warnings: {warning_messages}")
256
232
 
257
233
  if self.config.verbose_logging:
258
- self.logger.debug(
259
- f"Template variables validated: {len(context)} variables checked"
260
- )
234
+ self.logger.debug(f"Template variables validated: {len(context)} variables checked")
261
235
 
262
236
  def get_enhanced_version_context(self) -> dict[str, str]:
263
237
  """
@@ -278,28 +252,16 @@ class TemplateProcessor:
278
252
 
279
253
  # Basic version information
280
254
  version_context["MOAI_VERSION"] = moai_version
281
- version_context["MOAI_VERSION_SHORT"] = self._format_short_version(
282
- moai_version
283
- )
284
- version_context["MOAI_VERSION_DISPLAY"] = self._format_display_version(
285
- moai_version
286
- )
255
+ version_context["MOAI_VERSION_SHORT"] = self._format_short_version(moai_version)
256
+ version_context["MOAI_VERSION_DISPLAY"] = self._format_display_version(moai_version)
287
257
 
288
258
  # Enhanced formatting options
289
- version_context["MOAI_VERSION_TRIMMED"] = self._format_trimmed_version(
290
- moai_version, max_length=10
291
- )
292
- version_context["MOAI_VERSION_SEMVER"] = self._format_semver_version(
293
- moai_version
294
- )
259
+ version_context["MOAI_VERSION_TRIMMED"] = self._format_trimmed_version(moai_version, max_length=10)
260
+ version_context["MOAI_VERSION_SEMVER"] = self._format_semver_version(moai_version)
295
261
 
296
262
  # Validation and source information
297
- version_context["MOAI_VERSION_VALID"] = (
298
- "true" if moai_version != "unknown" else "false"
299
- )
300
- version_context["MOAI_VERSION_SOURCE"] = self._get_version_source(
301
- version_reader
302
- )
263
+ version_context["MOAI_VERSION_VALID"] = "true" if moai_version != "unknown" else "false"
264
+ version_context["MOAI_VERSION_SOURCE"] = self._get_version_source(version_reader)
303
265
 
304
266
  # Performance metrics
305
267
  cache_age = version_reader.get_cache_age_seconds()
@@ -311,9 +273,7 @@ class TemplateProcessor:
311
273
  # Additional metadata
312
274
  if self.config.enable_version_validation:
313
275
  is_valid = self._is_valid_version_format(moai_version)
314
- version_context["MOAI_VERSION_FORMAT_VALID"] = (
315
- "true" if is_valid else "false"
316
- )
276
+ version_context["MOAI_VERSION_FORMAT_VALID"] = "true" if is_valid else "false"
317
277
 
318
278
  if self.config.verbose_logging:
319
279
  logger.debug(f"Enhanced version context generated: {version_context}")
@@ -323,21 +283,11 @@ class TemplateProcessor:
323
283
  # Use fallback version with comprehensive formatting
324
284
  fallback_version = self.config.version_fallback
325
285
  version_context["MOAI_VERSION"] = fallback_version
326
- version_context["MOAI_VERSION_SHORT"] = self._format_short_version(
327
- fallback_version
328
- )
329
- version_context["MOAI_VERSION_DISPLAY"] = self._format_display_version(
330
- fallback_version
331
- )
332
- version_context["MOAI_VERSION_TRIMMED"] = self._format_trimmed_version(
333
- fallback_version, max_length=10
334
- )
335
- version_context["MOAI_VERSION_SEMVER"] = self._format_semver_version(
336
- fallback_version
337
- )
338
- version_context["MOAI_VERSION_VALID"] = (
339
- "false" if fallback_version == "unknown" else "true"
340
- )
286
+ version_context["MOAI_VERSION_SHORT"] = self._format_short_version(fallback_version)
287
+ version_context["MOAI_VERSION_DISPLAY"] = self._format_display_version(fallback_version)
288
+ version_context["MOAI_VERSION_TRIMMED"] = self._format_trimmed_version(fallback_version, max_length=10)
289
+ version_context["MOAI_VERSION_SEMVER"] = self._format_semver_version(fallback_version)
290
+ version_context["MOAI_VERSION_VALID"] = "false" if fallback_version == "unknown" else "true"
341
291
  version_context["MOAI_VERSION_SOURCE"] = "fallback_config"
342
292
  version_context["MOAI_VERSION_CACHE_AGE"] = "unavailable"
343
293
  version_context["MOAI_VERSION_FORMAT_VALID"] = "false"
@@ -466,14 +416,6 @@ class TemplateProcessor:
466
416
  package_root = current_file.parent.parent.parent
467
417
  return package_root / "templates"
468
418
 
469
- def set_context(self, context: dict[str, str]) -> None:
470
- """Set variable substitution context.
471
-
472
- Args:
473
- context: Dictionary of template variables.
474
- """
475
- self.context = context
476
-
477
419
  def _substitute_variables(self, content: str) -> tuple[str, list[str]]:
478
420
  """
479
421
  Substitute template variables in content with enhanced validation and caching.
@@ -503,9 +445,7 @@ class TemplateProcessor:
503
445
  if self.config.validate_template_variables:
504
446
  # Validate variable before substitution
505
447
  if not self._is_valid_template_variable(key, value):
506
- warnings.append(
507
- f"Invalid variable {key} - skipped substitution"
508
- )
448
+ warnings.append(f"Invalid variable {key} - skipped substitution")
509
449
  continue
510
450
 
511
451
  safe_value = self._sanitize_value(value)
@@ -527,17 +467,13 @@ class TemplateProcessor:
527
467
  suggestion = self.COMMON_TEMPLATE_VARIABLES[var]
528
468
  warning_parts.append(f"{{{{{var}}}}} → {suggestion}")
529
469
  else:
530
- warning_parts.append(
531
- f"{{{{{var}}}}} → Unknown variable (check template)"
532
- )
470
+ warning_parts.append(f"{{{{{var}}}}} → Unknown variable (check template)")
533
471
 
534
472
  warnings.append("Template variables not substituted:")
535
473
  warnings.extend(f" • {part}" for part in warning_parts)
536
474
 
537
475
  if self.config.enable_substitution_warnings:
538
- warnings.append(
539
- "💡 Run 'uv run moai-adk update' to fix template variables"
540
- )
476
+ warnings.append("💡 Run 'uv run moai-adk update' to fix template variables")
541
477
 
542
478
  # Add performance information if verbose logging is enabled
543
479
  if self.config.verbose_logging:
@@ -668,7 +604,7 @@ class TemplateProcessor:
668
604
  Returns:
669
605
  Content with localized descriptions.
670
606
  """
671
- import yaml
607
+ import yaml # type: ignore[import-untyped]
672
608
 
673
609
  # Pattern to match YAML frontmatter
674
610
  frontmatter_pattern = r"^---\n(.*?)\n---"
@@ -712,6 +648,8 @@ class TemplateProcessor:
712
648
  Returns:
713
649
  List of warnings.
714
650
  """
651
+ import stat
652
+
715
653
  warnings = []
716
654
 
717
655
  # Text files: read, substitute, write
@@ -721,9 +659,7 @@ class TemplateProcessor:
721
659
  content, file_warnings = self._substitute_variables(content)
722
660
 
723
661
  # Apply description localization for command/output-style files
724
- if src.suffix == ".md" and (
725
- "commands/alfred" in str(src) or "output-styles/alfred" in str(src)
726
- ):
662
+ if src.suffix == ".md" and ("commands/alfred" in str(src) or "output-styles/alfred" in str(src)):
727
663
  lang = self.context.get("CONVERSATION_LANGUAGE", "en")
728
664
  content = self._localize_yaml_description(content, lang)
729
665
 
@@ -736,6 +672,12 @@ class TemplateProcessor:
736
672
  # Binary file or no context: simple copy
737
673
  shutil.copy2(src, dst)
738
674
 
675
+ # Ensure executable permission for shell scripts
676
+ if src.suffix == ".sh":
677
+ # Always make shell scripts executable regardless of source permissions
678
+ dst_mode = dst.stat().st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
679
+ dst.chmod(dst_mode)
680
+
739
681
  return warnings
740
682
 
741
683
  def _copy_dir_with_substitution(self, src: Path, dst: Path) -> None:
@@ -781,6 +723,7 @@ class TemplateProcessor:
781
723
  self._copy_github(silent)
782
724
  self._copy_claude_md(silent)
783
725
  self._copy_gitignore(silent)
726
+ self._copy_mcp_json(silent)
784
727
 
785
728
  if not silent:
786
729
  console.print("✅ Templates copied successfully")
@@ -849,16 +792,21 @@ class TemplateProcessor:
849
792
  # Create .claude directory if not exists
850
793
  dst.mkdir(parents=True, exist_ok=True)
851
794
 
852
- # Alfred folders to copy wholesale (overwrite)
853
- alfred_folders = [
795
+ # Alfred and Moai folders to copy wholesale (overwrite)
796
+ # Including both legacy alfred/ and new moai/ structure
797
+ alfred_moai_folders = [
854
798
  "hooks/alfred",
799
+ "hooks/moai",
855
800
  "commands/alfred", # Contains 0-project.md, 1-plan.md, 2-run.md, 3-sync.md
856
- "output-styles/alfred",
801
+ "commands/moai",
802
+ "output-styles/moai",
857
803
  "agents/alfred",
804
+ "agents/moai",
805
+ # NOTE: "skills" handled by _sync_skills_selective() to preserve custom skills
858
806
  ]
859
807
 
860
- # 1. Copy Alfred folders wholesale (backup before delete & overwrite)
861
- for folder in alfred_folders:
808
+ # 1. Copy Alfred and Moai folders wholesale (backup before delete & overwrite)
809
+ for folder in alfred_moai_folders:
862
810
  src_folder = src / folder
863
811
  dst_folder = dst / folder
864
812
 
@@ -873,18 +821,51 @@ class TemplateProcessor:
873
821
  if not silent:
874
822
  console.print(f" ✅ .claude/{folder}/ overwritten")
875
823
 
876
- # 2. Copy other files/folders individually (smart merge for settings.json)
824
+ # 1.5 Copy other subdirectories in parent folders (e.g., output-styles/moai, hooks/shared)
825
+ # This ensures non-alfred subdirectories are also copied
826
+ parent_folders_with_subdirs = ["output-styles", "hooks", "commands", "agents"]
827
+ for parent_name in parent_folders_with_subdirs:
828
+ src_parent = src / parent_name
829
+ if not src_parent.exists():
830
+ continue
831
+
832
+ for subdir in src_parent.iterdir():
833
+ if not subdir.is_dir():
834
+ continue
835
+
836
+ # Skip alfred subdirectories (already handled above)
837
+ if subdir.name == "alfred":
838
+ continue
839
+
840
+ rel_subdir = f"{parent_name}/{subdir.name}"
841
+ dst_subdir = dst / parent_name / subdir.name
842
+
843
+ if dst_subdir.exists():
844
+ # For non-alfred directories, overwrite with merge if necessary
845
+ shutil.rmtree(dst_subdir)
846
+
847
+ # Copy the subdirectory
848
+ shutil.copytree(subdir, dst_subdir)
849
+ if not silent:
850
+ console.print(f" ✅ .claude/{rel_subdir}/ copied")
851
+
852
+ # 1.6 Sync skills selectively (preserve custom skills, update moai-* skills)
853
+ self._sync_skills_selective(src, dst, silent)
854
+
855
+ # 2. Copy other files/folders individually (smart merge for settings.json and config.json)
877
856
  all_warnings = []
878
857
  for item in src.iterdir():
879
858
  rel_path = item.relative_to(src)
880
859
  dst_item = dst / rel_path
881
860
 
882
861
  # Skip Alfred parent folders (already handled above)
862
+ # Also skip "skills" - handled by _sync_skills_selective()
883
863
  if item.is_dir() and item.name in [
884
864
  "hooks",
885
865
  "commands",
886
866
  "output-styles",
887
867
  "agents",
868
+ "skills", # Handled by _sync_skills_selective() to preserve custom skills
888
869
  ]:
889
870
  continue
890
871
 
@@ -899,9 +880,12 @@ class TemplateProcessor:
899
880
  dst_item.write_text(content, encoding="utf-8")
900
881
  all_warnings.extend(file_warnings)
901
882
  if not silent:
902
- console.print(
903
- " 🔄 settings.json merged (Hook paths configured for your OS)"
904
- )
883
+ console.print(" 🔄 settings.json merged (Hook paths configured for your OS)")
884
+ # Smart merge for config.json
885
+ elif item.name == "config.json":
886
+ self._merge_config_json(item, dst_item)
887
+ if not silent:
888
+ console.print(" 🔄 config.json merged (user preferences preserved)")
905
889
  else:
906
890
  # FORCE OVERWRITE: Always copy other files (no skip)
907
891
  warnings = self._copy_file_with_substitution(item, dst_item)
@@ -919,6 +903,54 @@ class TemplateProcessor:
919
903
  if not silent:
920
904
  console.print(" ✅ .claude/ copy complete (variables substituted)")
921
905
 
906
+ def _sync_skills_selective(self, src: Path, dst: Path, silent: bool = False) -> None:
907
+ """Sync only moai-* template skills, preserve custom skills.
908
+
909
+ This method ensures that:
910
+ - Template skills (moai-* prefix) are updated from source
911
+ - Custom skills (any other prefix) are preserved untouched
912
+
913
+ Args:
914
+ src: Source .claude directory from template
915
+ dst: Destination .claude directory in project
916
+ silent: Suppress console output if True
917
+ """
918
+ skills_src = src / "skills"
919
+ skills_dst = dst / "skills"
920
+
921
+ if not skills_src.exists():
922
+ return
923
+
924
+ skills_dst.mkdir(parents=True, exist_ok=True)
925
+
926
+ # Step 1: Identify template skills in source (moai-* prefix)
927
+ template_skills = {d.name for d in skills_src.iterdir() if d.is_dir() and d.name.startswith("moai-")}
928
+
929
+ # Step 2: Delete only template skills in destination
930
+ if skills_dst.exists():
931
+ for skill_dir in list(skills_dst.iterdir()):
932
+ if skill_dir.is_dir() and skill_dir.name.startswith("moai-"):
933
+ shutil.rmtree(skill_dir)
934
+ if not silent:
935
+ console.print(f" [dim]Updating template skill: {skill_dir.name}[/dim]")
936
+
937
+ # Step 3: Copy template skills from source
938
+ for skill_name in sorted(template_skills):
939
+ src_skill = skills_src / skill_name
940
+ dst_skill = skills_dst / skill_name
941
+ shutil.copytree(src_skill, dst_skill)
942
+
943
+ if not silent and template_skills:
944
+ console.print(f" ✅ Synced {len(template_skills)} template skill(s)")
945
+
946
+ # Step 4: Report preserved custom skills
947
+ if skills_dst.exists():
948
+ custom_skills = [d.name for d in skills_dst.iterdir() if d.is_dir() and not d.name.startswith("moai-")]
949
+ if custom_skills and not silent:
950
+ preview = ", ".join(sorted(custom_skills)[:3])
951
+ suffix = "..." if len(custom_skills) > 3 else ""
952
+ console.print(f" ✅ Preserved {len(custom_skills)} custom skill(s): {preview}{suffix}")
953
+
922
954
  def _copy_moai(self, silent: bool = False) -> None:
923
955
  """.moai/ directory copy with variable substitution (excludes protected paths)."""
924
956
  src = self.template_root / ".moai"
@@ -929,11 +961,11 @@ class TemplateProcessor:
929
961
  console.print("⚠️ .moai/ template not found")
930
962
  return
931
963
 
932
- # Paths excluded from template copying (specs/, reports/, .moai/config/config.json)
964
+ # Paths excluded from template copying (specs/, reports/, sections/)
933
965
  template_protected_paths = [
934
966
  "specs",
935
967
  "reports",
936
- ".moai/config/config.json",
968
+ "config/sections", # User section YAML files
937
969
  ]
938
970
 
939
971
  all_warnings = []
@@ -984,12 +1016,10 @@ class TemplateProcessor:
984
1016
  self._copy_dir_with_substitution(src, dst)
985
1017
 
986
1018
  if not silent:
987
- console.print(
988
- " 🔄 .github/ merged (user workflows preserved, variables substituted)"
989
- )
1019
+ console.print(" 🔄 .github/ merged (user workflows preserved, variables substituted)")
990
1020
 
991
1021
  def _copy_claude_md(self, silent: bool = False) -> None:
992
- """Copy CLAUDE.md with smart merge (preserves \"## Project Information\" section)."""
1022
+ """Copy CLAUDE.md with complete replacement (no merge)."""
993
1023
  src = self.template_root / "CLAUDE.md"
994
1024
  dst = self.target_path / "CLAUDE.md"
995
1025
 
@@ -998,27 +1028,11 @@ class TemplateProcessor:
998
1028
  console.print("⚠️ CLAUDE.md template not found")
999
1029
  return
1000
1030
 
1001
- # Smart merge: preserve existing "## Project Information" section
1002
- if dst.exists():
1003
- self._merge_claude_md(src, dst)
1004
- # Substitute variables in the merged content
1005
- if self.context:
1006
- content = dst.read_text(encoding="utf-8")
1007
- content, warnings = self._substitute_variables(content)
1008
- dst.write_text(content, encoding="utf-8")
1009
- if warnings and not silent:
1010
- console.print("[yellow]⚠️ Template warnings:[/yellow]")
1011
- for warning in set(warnings):
1012
- console.print(f" {warning}")
1013
- if not silent:
1014
- console.print(
1015
- " 🔄 CLAUDE.md merged (project information preserved, variables substituted)"
1016
- )
1017
- else:
1018
- # First time: just copy
1019
- self._copy_file_with_substitution(src, dst)
1020
- if not silent:
1021
- console.print(" ✅ CLAUDE.md created")
1031
+ # Simple copy with substitution (no merge)
1032
+ self._copy_file_with_substitution(src, dst)
1033
+
1034
+ if not silent:
1035
+ console.print(" ✅ CLAUDE.md replaced (use CLAUDE.local.md for personal instructions)")
1022
1036
 
1023
1037
  def _merge_claude_md(self, src: Path, dst: Path) -> None:
1024
1038
  """Delegate the smart merge for CLAUDE.md.
@@ -1047,15 +1061,199 @@ class TemplateProcessor:
1047
1061
  """
1048
1062
  # Find the latest backup for user settings extraction
1049
1063
  backup_path = None
1050
- if self.backup.backup_dir.exists():
1051
- backups = sorted(self.backup.backup_dir.iterdir(), reverse=True)
1052
- if backups:
1053
- backup_settings = backups[0] / ".claude" / "settings.json"
1054
- if backup_settings.exists():
1055
- backup_path = backup_settings
1064
+ latest_backup = self.backup.get_latest_backup()
1065
+ if latest_backup:
1066
+ backup_settings = latest_backup / ".claude" / "settings.json"
1067
+ if backup_settings.exists():
1068
+ backup_path = backup_settings
1056
1069
 
1057
1070
  self.merger.merge_settings_json(src, dst, backup_path)
1058
1071
 
1072
+ def _merge_config_json(self, src: Path, dst: Path) -> None:
1073
+ """Smart merge for config using section YAML files with JSON fallback.
1074
+
1075
+ Supports both new section-based YAML files and legacy config.json.
1076
+ Priority: Section YAML files > config.json fallback
1077
+
1078
+ Args:
1079
+ src: Template config file (config.json for legacy projects).
1080
+ dst: Project config file destination.
1081
+ """
1082
+ import json
1083
+ import os
1084
+
1085
+ try:
1086
+ import yaml # noqa: F401
1087
+
1088
+ yaml_available = True
1089
+ except ImportError:
1090
+ yaml_available = False
1091
+
1092
+ # Check for section-based YAML configuration (new approach)
1093
+ sections_dir = self.target_path / ".moai" / "config" / "sections"
1094
+
1095
+ if yaml_available and sections_dir.exists() and sections_dir.is_dir():
1096
+ # Use section YAML files - merge each section individually
1097
+ self._merge_section_yaml_files(sections_dir)
1098
+ return
1099
+
1100
+ # Fallback to legacy config.json merging
1101
+ # Load template config
1102
+ try:
1103
+ template_config = json.loads(src.read_text(encoding="utf-8"))
1104
+ except (json.JSONDecodeError, FileNotFoundError) as e:
1105
+ console.print(f"⚠️ Warning: Could not read template config.json: {e}")
1106
+ return
1107
+
1108
+ # Find latest backup config.json
1109
+ latest_backup = self.backup.get_latest_backup()
1110
+ if latest_backup:
1111
+ backup_config_path = latest_backup / ".moai" / "config" / "config.json"
1112
+ if backup_config_path.exists():
1113
+ try:
1114
+ json.loads(backup_config_path.read_text(encoding="utf-8"))
1115
+ except json.JSONDecodeError as e:
1116
+ console.print(f"⚠️ Warning: Could not read backup config.json: {e}")
1117
+
1118
+ # Load existing project config.json
1119
+ existing_config = {}
1120
+ if dst.exists():
1121
+ try:
1122
+ existing_config = json.loads(dst.read_text(encoding="utf-8"))
1123
+ except json.JSONDecodeError as e:
1124
+ console.print(f"⚠️ Warning: Could not read existing config.json: {e}")
1125
+
1126
+ # Merge with priority system: Environment > Existing User > Template
1127
+ # We'll use LanguageConfigResolver to handle this properly
1128
+ try:
1129
+ # Import LanguageConfigResolver for priority-based merging
1130
+ from moai_adk.core.language_config_resolver import LanguageConfigResolver
1131
+
1132
+ # Create temporary resolver to handle merging
1133
+ temp_project_path = self.target_path / ".moai" / "config"
1134
+ temp_project_path.mkdir(parents=True, exist_ok=True)
1135
+
1136
+ # Start with template config as base
1137
+ merged_config = template_config.copy()
1138
+
1139
+ # Apply existing user config (higher priority than template)
1140
+ for key, value in existing_config.items():
1141
+ if key not in ["config_source"]: # Skip metadata
1142
+ if key in merged_config and isinstance(merged_config[key], dict) and isinstance(value, dict):
1143
+ # Deep merge for nested objects
1144
+ merged_config[key].update(value)
1145
+ else:
1146
+ merged_config[key] = value
1147
+
1148
+ # Apply environment variables (highest priority)
1149
+ env_mappings = {
1150
+ "MOAI_USER_NAME": ("user", "name"),
1151
+ "MOAI_CONVERSATION_LANG": ("language", "conversation_language"),
1152
+ "MOAI_AGENT_PROMPT_LANG": ("language", "agent_prompt_language"),
1153
+ "MOAI_CONVERSATION_LANG_NAME": (
1154
+ "language",
1155
+ "conversation_language_name",
1156
+ ),
1157
+ "MOAI_GIT_COMMIT_MESSAGES_LANG": ("language", "git_commit_messages"),
1158
+ "MOAI_CODE_COMMENTS_LANG": ("language", "code_comments"),
1159
+ "MOAI_DOCUMENTATION_LANG": ("language", "documentation"),
1160
+ "MOAI_ERROR_MESSAGES_LANG": ("language", "error_messages"),
1161
+ }
1162
+
1163
+ for env_var, (section, key) in env_mappings.items():
1164
+ env_value = os.getenv(env_var)
1165
+ if env_value:
1166
+ if section not in merged_config:
1167
+ merged_config[section] = {}
1168
+ merged_config[section][key] = env_value
1169
+
1170
+ # Ensure consistency
1171
+ resolver = LanguageConfigResolver(str(self.target_path))
1172
+ merged_config = resolver._ensure_consistency(merged_config)
1173
+
1174
+ # Write merged config
1175
+ dst.write_text(
1176
+ json.dumps(merged_config, indent=2, ensure_ascii=False) + "\n",
1177
+ encoding="utf-8",
1178
+ )
1179
+
1180
+ except ImportError:
1181
+ # Fallback: simple merge without LanguageConfigResolver
1182
+ merged_config = template_config.copy()
1183
+
1184
+ # Apply existing config
1185
+ for key, value in existing_config.items():
1186
+ if key not in ["config_source"]:
1187
+ merged_config[key] = value
1188
+
1189
+ dst.write_text(
1190
+ json.dumps(merged_config, indent=2, ensure_ascii=False) + "\n",
1191
+ encoding="utf-8",
1192
+ )
1193
+ console.print(" ⚠️ Warning: Using simple merge (LanguageConfigResolver not available)")
1194
+
1195
+ def _merge_section_yaml_files(self, sections_dir: Path) -> None:
1196
+ """Merge section YAML files with user-specific values preserved.
1197
+
1198
+ Args:
1199
+ sections_dir: Path to sections directory (.moai/config/sections/)
1200
+ """
1201
+ import os
1202
+
1203
+ try:
1204
+ import yaml
1205
+ except ImportError:
1206
+ console.print("⚠️ Warning: PyYAML not available, skipping section merge")
1207
+ return
1208
+
1209
+ # Environment variable mappings for each section
1210
+ env_mappings = {
1211
+ "language.yaml": {
1212
+ "MOAI_CONVERSATION_LANG": ["language", "conversation_language"],
1213
+ "MOAI_AGENT_PROMPT_LANG": ["language", "agent_prompt_language"],
1214
+ "MOAI_CONVERSATION_LANG_NAME": ["language", "conversation_language_name"],
1215
+ "MOAI_GIT_COMMIT_MESSAGES_LANG": ["language", "git_commit_messages"],
1216
+ "MOAI_CODE_COMMENTS_LANG": ["language", "code_comments"],
1217
+ "MOAI_DOCUMENTATION_LANG": ["language", "documentation"],
1218
+ "MOAI_ERROR_MESSAGES_LANG": ["language", "error_messages"],
1219
+ },
1220
+ "user.yaml": {
1221
+ "MOAI_USER_NAME": ["user", "name"],
1222
+ },
1223
+ }
1224
+
1225
+ for section_file in sections_dir.glob("*.yaml"):
1226
+ try:
1227
+ # Read existing section content
1228
+ with open(section_file, "r", encoding="utf-8") as f:
1229
+ section_data = yaml.safe_load(f) or {}
1230
+
1231
+ # Apply environment variable overrides if applicable
1232
+ if section_file.name in env_mappings:
1233
+ for env_var, path in env_mappings[section_file.name].items():
1234
+ env_value = os.getenv(env_var)
1235
+ if env_value:
1236
+ # Navigate to the correct nested location
1237
+ current = section_data
1238
+ for key in path[:-1]:
1239
+ if key not in current:
1240
+ current[key] = {}
1241
+ current = current[key]
1242
+ current[path[-1]] = env_value
1243
+
1244
+ # Write back if environment variables were applied
1245
+ with open(section_file, "w", encoding="utf-8") as f:
1246
+ yaml.safe_dump(
1247
+ section_data,
1248
+ f,
1249
+ default_flow_style=False,
1250
+ allow_unicode=True,
1251
+ sort_keys=False,
1252
+ )
1253
+
1254
+ except Exception as e:
1255
+ console.print(f"⚠️ Warning: Failed to merge {section_file.name}: {e}")
1256
+
1059
1257
  def _copy_gitignore(self, silent: bool = False) -> None:
1060
1258
  """.gitignore copy (optional)."""
1061
1259
  src = self.template_root / ".gitignore"
@@ -1083,6 +1281,47 @@ class TemplateProcessor:
1083
1281
  """
1084
1282
  self.merger.merge_gitignore(src, dst)
1085
1283
 
1284
+ def _copy_mcp_json(self, silent: bool = False) -> None:
1285
+ """.mcp.json copy (smart merge with existing MCP server configuration)."""
1286
+ src = self.template_root / ".mcp.json"
1287
+ dst = self.target_path / ".mcp.json"
1288
+
1289
+ if not src.exists():
1290
+ return
1291
+
1292
+ # Merge with existing .mcp.json when present (preserve user-added MCP servers)
1293
+ if dst.exists():
1294
+ self._merge_mcp_json(src, dst)
1295
+ if not silent:
1296
+ console.print(" 🔄 .mcp.json merged (user MCP servers preserved)")
1297
+ else:
1298
+ shutil.copy2(src, dst)
1299
+ if not silent:
1300
+ console.print(" ✅ .mcp.json copy complete")
1301
+
1302
+ def _merge_mcp_json(self, src: Path, dst: Path) -> None:
1303
+ """Smart merge for .mcp.json (preserve user-added MCP servers).
1304
+
1305
+ Args:
1306
+ src: Template .mcp.json.
1307
+ dst: Project .mcp.json.
1308
+ """
1309
+ try:
1310
+ src_data = json.loads(src.read_text(encoding="utf-8"))
1311
+ dst_data = json.loads(dst.read_text(encoding="utf-8"))
1312
+
1313
+ # Merge mcpServers: preserve user servers, update template servers
1314
+ if "mcpServers" in src_data:
1315
+ if "mcpServers" not in dst_data:
1316
+ dst_data["mcpServers"] = {}
1317
+ # Update with template servers (preserves existing user servers)
1318
+ dst_data["mcpServers"].update(src_data["mcpServers"])
1319
+
1320
+ # Write merged result back
1321
+ dst.write_text(json.dumps(dst_data, indent=2, ensure_ascii=False), encoding="utf-8")
1322
+ except json.JSONDecodeError as e:
1323
+ console.print(f"[yellow]⚠️ Failed to merge .mcp.json: {e}[/yellow]")
1324
+
1086
1325
  def merge_config(self, detected_language: str | None = None) -> dict[str, str]:
1087
1326
  """Delegate the smart merge for config.json.
1088
1327