moai-adk 0.32.8__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 (545) hide show
  1. moai_adk/cli/commands/init.py +4 -1
  2. moai_adk/cli/commands/update.py +31 -26
  3. moai_adk/cli/worktree/cli.py +54 -43
  4. moai_adk/cli/worktree/manager.py +17 -14
  5. moai_adk/cli/worktree/registry.py +313 -19
  6. moai_adk/core/config/unified.py +237 -63
  7. moai_adk/core/error_recovery_system.py +22 -4
  8. moai_adk/core/git/conflict_detector.py +10 -1
  9. moai_adk/core/git/event_detector.py +16 -5
  10. moai_adk/core/language_config_resolver.py +96 -3
  11. moai_adk/core/merge/analyzer.py +509 -324
  12. moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
  13. moai_adk/core/migration/backup_manager.py +54 -4
  14. moai_adk/core/migration/file_migrator.py +174 -2
  15. moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
  16. moai_adk/core/migration/version_detector.py +123 -19
  17. moai_adk/core/migration/version_migrator.py +44 -9
  18. moai_adk/core/project/backup_utils.py +9 -1
  19. moai_adk/core/project/initializer.py +33 -96
  20. moai_adk/core/project/phase_executor.py +79 -33
  21. moai_adk/core/quality/trust_checker.py +30 -10
  22. moai_adk/core/realtime_monitoring_dashboard.py +3 -3
  23. moai_adk/core/rollback_manager.py +46 -19
  24. moai_adk/core/template/backup.py +4 -3
  25. moai_adk/core/template/config.py +33 -9
  26. moai_adk/core/template/merger.py +34 -8
  27. moai_adk/core/template/processor.py +144 -9
  28. moai_adk/core/template_engine.py +10 -1
  29. moai_adk/core/template_variable_synchronizer.py +16 -2
  30. moai_adk/core/version_sync.py +54 -6
  31. moai_adk/project/configuration.py +1 -1
  32. moai_adk/statusline/config.py +5 -2
  33. moai_adk/statusline/main.py +58 -0
  34. moai_adk/statusline/renderer.py +38 -78
  35. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +218 -51
  36. moai_adk/templates/.claude/agents/moai/builder-agent.md +46 -11
  37. moai_adk/templates/.claude/agents/moai/builder-command.md +88 -26
  38. moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
  39. moai_adk/templates/.claude/agents/moai/builder-skill.md +79 -8
  40. moai_adk/templates/.claude/agents/moai/expert-backend.md +100 -28
  41. moai_adk/templates/.claude/agents/moai/expert-database.md +20 -12
  42. moai_adk/templates/.claude/agents/moai/expert-debug.md +19 -8
  43. moai_adk/templates/.claude/agents/moai/expert-devops.md +36 -25
  44. moai_adk/templates/.claude/agents/moai/expert-frontend.md +99 -38
  45. moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
  46. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
  47. moai_adk/templates/.claude/agents/moai/expert-security.md +55 -4
  48. moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
  49. moai_adk/templates/.claude/agents/moai/expert-uiux.md +20 -11
  50. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +13 -4
  51. moai_adk/templates/.claude/agents/moai/manager-docs.md +15 -7
  52. moai_adk/templates/.claude/agents/moai/manager-git.md +192 -37
  53. moai_adk/templates/.claude/agents/moai/manager-project.md +13 -7
  54. moai_adk/templates/.claude/agents/moai/manager-quality.md +48 -6
  55. moai_adk/templates/.claude/agents/moai/manager-spec.md +110 -8
  56. moai_adk/templates/.claude/agents/moai/manager-strategy.md +203 -17
  57. moai_adk/templates/.claude/agents/moai/manager-tdd.md +217 -23
  58. moai_adk/templates/.claude/agents/moai/mcp-context7.md +102 -7
  59. moai_adk/templates/.claude/agents/moai/mcp-figma.md +107 -86
  60. moai_adk/templates/.claude/agents/moai/mcp-notion.md +50 -4
  61. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +52 -4
  62. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +49 -5
  63. moai_adk/templates/.claude/commands/moai/0-project.md +503 -307
  64. moai_adk/templates/.claude/commands/moai/1-plan.md +255 -323
  65. moai_adk/templates/.claude/commands/moai/2-run.md +257 -315
  66. moai_adk/templates/.claude/commands/moai/3-sync.md +421 -56
  67. moai_adk/templates/.claude/commands/moai/9-feedback.md +40 -34
  68. moai_adk/templates/.claude/hooks/moai/__init__.py +0 -0
  69. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  70. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +19 -0
  71. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
  72. moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
  73. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +12 -14
  74. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  75. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +1 -1
  76. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +104 -14
  77. moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
  78. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
  79. moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
  80. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +804 -0
  81. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +14 -2
  82. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
  83. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
  84. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
  85. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
  86. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +28 -24
  87. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +236 -32
  88. moai_adk/templates/.claude/output-styles/moai/r2d2.md +265 -2
  89. moai_adk/templates/.claude/output-styles/moai/yoda.md +23 -2
  90. moai_adk/templates/.claude/settings.json +43 -6
  91. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +302 -0
  92. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  93. moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
  94. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  95. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  96. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +251 -196
  97. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
  98. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
  99. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
  100. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
  101. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
  102. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
  103. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
  104. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +18 -13
  105. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  106. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  107. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +20 -14
  108. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  109. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  110. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +123 -425
  111. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  112. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  113. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  114. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  115. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  116. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  117. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  118. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  119. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +16 -15
  120. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +104 -315
  121. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  122. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
  123. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +6 -6
  124. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  125. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +196 -154
  126. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  127. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  128. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  129. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  130. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  131. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  132. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
  133. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +2 -2
  134. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  135. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +432 -0
  136. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  137. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
  138. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  139. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
  140. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  141. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +12 -1
  142. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  143. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  144. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +33 -134
  145. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  146. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +31 -18
  147. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +30 -30
  148. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  149. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  150. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
  151. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  152. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  153. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
  154. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  155. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
  156. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  157. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  158. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  159. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
  160. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  161. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  162. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  163. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  164. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  165. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  166. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +17 -16
  167. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +430 -0
  168. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -0
  169. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  170. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +17 -0
  171. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +193 -0
  172. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  173. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  174. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  175. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  176. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  177. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  178. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  179. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +394 -0
  180. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -0
  181. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  182. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +17 -0
  183. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +472 -0
  184. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  185. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  186. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +377 -0
  187. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  188. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  189. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +386 -0
  190. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  191. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  192. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +418 -0
  193. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  194. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  195. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +383 -0
  196. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  197. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  198. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +504 -0
  199. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -0
  200. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  201. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +17 -0
  202. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +489 -0
  203. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  204. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  205. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +389 -0
  206. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -0
  207. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  208. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +17 -0
  209. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +432 -0
  210. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -0
  211. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  212. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  213. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +17 -0
  214. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +377 -0
  215. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  216. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  217. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +211 -0
  218. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  219. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  220. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  221. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  222. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  223. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  224. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  225. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +191 -0
  226. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  227. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  228. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  229. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  230. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  231. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  232. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +364 -0
  233. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  234. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  235. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +93 -227
  236. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +25 -6
  237. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  238. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
  239. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
  240. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  241. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +16 -13
  242. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +1 -1
  243. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +283 -0
  244. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  245. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  246. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  247. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  248. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  249. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  250. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  251. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  252. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  253. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  254. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  255. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  256. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  257. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  258. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  259. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  260. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  261. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  262. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  263. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  264. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  265. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  266. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  267. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  268. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  269. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  270. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  271. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  272. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  273. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  274. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  275. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  276. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  277. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +425 -0
  278. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  279. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  280. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +228 -0
  281. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  282. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  283. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  284. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  285. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  286. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  287. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +249 -0
  288. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  289. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  290. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  291. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  292. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  293. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +230 -0
  294. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  295. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  296. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  297. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  298. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  299. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  300. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +205 -0
  301. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  302. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  303. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  304. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  305. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  306. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  307. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +223 -0
  308. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  309. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  310. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  311. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  312. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  313. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  314. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +206 -0
  315. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  316. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  317. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  318. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  319. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  320. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  321. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  322. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  323. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  324. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +209 -0
  325. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  326. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  327. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  328. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  329. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  330. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  331. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  332. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +473 -0
  333. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  334. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
  335. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
  336. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
  337. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +306 -0
  338. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  339. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  340. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  341. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  342. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  343. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  344. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  345. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  346. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  347. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  348. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  349. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  350. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  351. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  352. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  353. moai_adk/templates/.claude/skills/moai-tool-opencode/SKILL.md +214 -0
  354. moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
  355. moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
  356. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
  357. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
  358. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
  359. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
  360. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
  361. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
  362. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
  363. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
  364. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
  365. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
  366. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
  367. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
  368. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
  369. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
  370. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
  371. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
  372. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
  373. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
  374. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
  375. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
  376. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
  377. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
  378. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
  379. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
  380. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
  381. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
  382. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
  383. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
  384. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
  385. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
  386. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
  387. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
  388. moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +189 -424
  390. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  391. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +187 -314
  393. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +284 -212
  396. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +2 -2
  397. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +1 -1
  398. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +22 -1
  399. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +336 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +12 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +221 -367
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
  420. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  429. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  430. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  431. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  432. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
  433. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  434. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  435. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  436. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  437. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
  438. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  439. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  440. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  441. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  442. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  443. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  444. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
  445. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  446. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  447. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +227 -0
  448. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  449. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  450. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  451. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  452. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  453. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  454. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  455. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  456. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  457. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  458. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  459. moai_adk/templates/.git-hooks/pre-push +168 -50
  460. moai_adk/templates/.gitignore +0 -3
  461. moai_adk/templates/.lsp.json +152 -0
  462. moai_adk/templates/.mcp.json +5 -12
  463. moai_adk/templates/.moai/config/config.yaml +20 -306
  464. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  465. moai_adk/templates/.moai/config/questions/_schema.yaml +105 -10
  466. moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
  467. moai_adk/templates/.moai/config/questions/tab1-user.yaml +4 -5
  468. moai_adk/templates/.moai/config/questions/tab2-project.yaml +12 -55
  469. moai_adk/templates/.moai/config/questions/tab3-git.yaml +111 -21
  470. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +34 -18
  471. moai_adk/templates/.moai/config/questions/tab5-system.yaml +19 -75
  472. moai_adk/templates/.moai/config/sections/git-strategy.yaml +83 -7
  473. moai_adk/templates/.moai/config/sections/language.yaml +7 -7
  474. moai_adk/templates/.moai/config/sections/project.yaml +1 -1
  475. moai_adk/templates/.moai/config/sections/quality.yaml +7 -4
  476. moai_adk/templates/.moai/config/sections/system.yaml +11 -1
  477. moai_adk/templates/.moai/config/statusline-config.yaml +19 -13
  478. moai_adk/templates/.moai/scripts/setup-glm.py +4 -4
  479. moai_adk/templates/CLAUDE.md +578 -154
  480. moai_adk/utils/common.py +33 -0
  481. moai_adk/version.py +1 -1
  482. {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/METADATA +905 -109
  483. moai_adk-0.41.0.dist-info/RECORD +683 -0
  484. moai_adk/core/config/auto_spec_config.py +0 -340
  485. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
  486. moai_adk/core/spec/confidence_scoring.py +0 -680
  487. moai_adk/core/spec/ears_template_engine.py +0 -1247
  488. moai_adk/core/spec/quality_validator.py +0 -687
  489. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
  490. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +0 -352
  491. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +0 -52
  492. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +0 -334
  493. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +0 -310
  494. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +0 -256
  495. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +0 -253
  496. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +0 -133
  497. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +0 -296
  498. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +0 -1269
  499. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +0 -331
  500. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
  501. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +0 -186
  502. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +0 -290
  503. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +0 -1225
  504. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +0 -567
  505. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +0 -323
  506. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +0 -204
  507. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
  508. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
  509. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
  510. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
  511. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
  512. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -135
  513. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
  514. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
  515. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
  516. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
  517. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
  518. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
  519. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
  520. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
  521. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
  522. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
  523. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
  524. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -410
  525. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
  526. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
  527. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
  528. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
  529. moai_adk/templates/.moai/cache/personalization.json +0 -10
  530. moai_adk/templates/.moai/config/presets/manual.yaml +0 -28
  531. moai_adk/templates/.moai/config/presets/personal.yaml +0 -30
  532. moai_adk/templates/.moai/config/presets/team.yaml +0 -33
  533. moai_adk-0.32.8.dist-info/RECORD +0 -396
  534. /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  535. /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
  536. /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
  537. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  538. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
  539. /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  540. /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
  541. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
  542. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
  543. {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/WHEEL +0 -0
  544. {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/entry_points.txt +0 -0
  545. {moai_adk-0.32.8.dist-info → moai_adk-0.41.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,919 @@
1
+ # Go Production Examples
2
+
3
+ Production-ready code examples for Go 1.23+ applications.
4
+
5
+ ---
6
+
7
+ ## REST API: Complete Fiber Application
8
+
9
+ ```go
10
+ // main.go
11
+ package main
12
+
13
+ import (
14
+ "context"
15
+ "log"
16
+ "os"
17
+ "os/signal"
18
+ "syscall"
19
+ "time"
20
+
21
+ "github.com/gofiber/fiber/v3"
22
+ "github.com/gofiber/fiber/v3/middleware/cors"
23
+ "github.com/gofiber/fiber/v3/middleware/limiter"
24
+ "github.com/gofiber/fiber/v3/middleware/logger"
25
+ "github.com/gofiber/fiber/v3/middleware/recover"
26
+ "github.com/jackc/pgx/v5/pgxpool"
27
+ )
28
+
29
+ type Config struct {
30
+ Port string
31
+ DatabaseURL string
32
+ }
33
+
34
+ type App struct {
35
+ fiber *fiber.App
36
+ db *pgxpool.Pool
37
+ config Config
38
+ }
39
+
40
+ func main() {
41
+ config := Config{
42
+ Port: getEnv("PORT", "3000"),
43
+ DatabaseURL: getEnv("DATABASE_URL", "postgres://localhost/myapp"),
44
+ }
45
+
46
+ app, err := NewApp(config)
47
+ if err != nil {
48
+ log.Fatal(err)
49
+ }
50
+
51
+ // Graceful shutdown
52
+ go func() {
53
+ if err := app.Start(); err != nil {
54
+ log.Printf("Server error: %v", err)
55
+ }
56
+ }()
57
+
58
+ quit := make(chan os.Signal, 1)
59
+ signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
60
+ <-quit
61
+
62
+ log.Println("Shutting down server...")
63
+ app.Shutdown()
64
+ }
65
+
66
+ func NewApp(config Config) (*App, error) {
67
+ pool, err := pgxpool.New(context.Background(), config.DatabaseURL)
68
+ if err != nil {
69
+ return nil, err
70
+ }
71
+
72
+ f := fiber.New(fiber.Config{
73
+ ErrorHandler: errorHandler,
74
+ ReadTimeout: 10 * time.Second,
75
+ WriteTimeout: 10 * time.Second,
76
+ })
77
+
78
+ app := &App{fiber: f, db: pool, config: config}
79
+ app.setupMiddleware()
80
+ app.setupRoutes()
81
+
82
+ return app, nil
83
+ }
84
+
85
+ func (a *App) setupMiddleware() {
86
+ a.fiber.Use(recover.New())
87
+ a.fiber.Use(logger.New())
88
+ a.fiber.Use(cors.New())
89
+ a.fiber.Use(limiter.New(limiter.Config{
90
+ Max: 100,
91
+ Expiration: time.Minute,
92
+ }))
93
+ }
94
+
95
+ func (a *App) setupRoutes() {
96
+ a.fiber.Get("/health", func(c fiber.Ctx) error {
97
+ return c.JSON(fiber.Map{"status": "ok"})
98
+ })
99
+
100
+ api := a.fiber.Group("/api/v1")
101
+ users := api.Group("/users")
102
+ users.Get("/", a.listUsers)
103
+ users.Get("/:id", a.getUser)
104
+ users.Post("/", a.createUser)
105
+ users.Put("/:id", a.updateUser)
106
+ users.Delete("/:id", a.deleteUser)
107
+ }
108
+
109
+ func (a *App) Start() error {
110
+ return a.fiber.Listen(":" + a.config.Port)
111
+ }
112
+
113
+ func (a *App) Shutdown() {
114
+ a.db.Close()
115
+ a.fiber.Shutdown()
116
+ }
117
+
118
+ // Models
119
+ type User struct {
120
+ ID int64 `json:"id"`
121
+ Name string `json:"name"`
122
+ Email string `json:"email"`
123
+ CreatedAt time.Time `json:"created_at"`
124
+ }
125
+
126
+ type CreateUserRequest struct {
127
+ Name string `json:"name"`
128
+ Email string `json:"email"`
129
+ }
130
+
131
+ // Handlers
132
+ func (a *App) listUsers(c fiber.Ctx) error {
133
+ limit := c.QueryInt("limit", 10)
134
+ offset := c.QueryInt("offset", 0)
135
+
136
+ rows, err := a.db.Query(c.Context(),
137
+ "SELECT id, name, email, created_at FROM users ORDER BY created_at DESC LIMIT $1 OFFSET $2",
138
+ limit, offset)
139
+ if err != nil {
140
+ return err
141
+ }
142
+ defer rows.Close()
143
+
144
+ var users []User
145
+ for rows.Next() {
146
+ var u User
147
+ if err := rows.Scan(&u.ID, &u.Name, &u.Email, &u.CreatedAt); err != nil {
148
+ return err
149
+ }
150
+ users = append(users, u)
151
+ }
152
+
153
+ return c.JSON(users)
154
+ }
155
+
156
+ func (a *App) getUser(c fiber.Ctx) error {
157
+ id, err := c.ParamsInt("id")
158
+ if err != nil {
159
+ return fiber.NewError(fiber.StatusBadRequest, "Invalid user ID")
160
+ }
161
+
162
+ var u User
163
+ err = a.db.QueryRow(c.Context(),
164
+ "SELECT id, name, email, created_at FROM users WHERE id = $1", id).
165
+ Scan(&u.ID, &u.Name, &u.Email, &u.CreatedAt)
166
+ if err != nil {
167
+ return fiber.NewError(fiber.StatusNotFound, "User not found")
168
+ }
169
+
170
+ return c.JSON(u)
171
+ }
172
+
173
+ func (a *App) createUser(c fiber.Ctx) error {
174
+ var req CreateUserRequest
175
+ if err := c.BodyParser(&req); err != nil {
176
+ return fiber.NewError(fiber.StatusBadRequest, "Invalid request body")
177
+ }
178
+
179
+ var u User
180
+ err := a.db.QueryRow(c.Context(),
181
+ "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id, name, email, created_at",
182
+ req.Name, req.Email).
183
+ Scan(&u.ID, &u.Name, &u.Email, &u.CreatedAt)
184
+ if err != nil {
185
+ return err
186
+ }
187
+
188
+ return c.Status(fiber.StatusCreated).JSON(u)
189
+ }
190
+
191
+ func (a *App) updateUser(c fiber.Ctx) error {
192
+ id, err := c.ParamsInt("id")
193
+ if err != nil {
194
+ return fiber.NewError(fiber.StatusBadRequest, "Invalid user ID")
195
+ }
196
+
197
+ var req CreateUserRequest
198
+ if err := c.BodyParser(&req); err != nil {
199
+ return fiber.NewError(fiber.StatusBadRequest, "Invalid request body")
200
+ }
201
+
202
+ var u User
203
+ err = a.db.QueryRow(c.Context(),
204
+ "UPDATE users SET name = $2, email = $3 WHERE id = $1 RETURNING id, name, email, created_at",
205
+ id, req.Name, req.Email).
206
+ Scan(&u.ID, &u.Name, &u.Email, &u.CreatedAt)
207
+ if err != nil {
208
+ return fiber.NewError(fiber.StatusNotFound, "User not found")
209
+ }
210
+
211
+ return c.JSON(u)
212
+ }
213
+
214
+ func (a *App) deleteUser(c fiber.Ctx) error {
215
+ id, err := c.ParamsInt("id")
216
+ if err != nil {
217
+ return fiber.NewError(fiber.StatusBadRequest, "Invalid user ID")
218
+ }
219
+
220
+ result, err := a.db.Exec(c.Context(), "DELETE FROM users WHERE id = $1", id)
221
+ if err != nil {
222
+ return err
223
+ }
224
+
225
+ if result.RowsAffected() == 0 {
226
+ return fiber.NewError(fiber.StatusNotFound, "User not found")
227
+ }
228
+
229
+ return c.SendStatus(fiber.StatusNoContent)
230
+ }
231
+
232
+ func errorHandler(c fiber.Ctx, err error) error {
233
+ code := fiber.StatusInternalServerError
234
+ message := "Internal Server Error"
235
+
236
+ if e, ok := err.(*fiber.Error); ok {
237
+ code = e.Code
238
+ message = e.Message
239
+ }
240
+
241
+ return c.Status(code).JSON(fiber.Map{"error": message})
242
+ }
243
+
244
+ func getEnv(key, defaultValue string) string {
245
+ if value := os.Getenv(key); value != "" {
246
+ return value
247
+ }
248
+ return defaultValue
249
+ }
250
+ ```
251
+
252
+ ---
253
+
254
+ ## REST API: Complete Gin Application
255
+
256
+ ```go
257
+ // main.go
258
+ package main
259
+
260
+ import (
261
+ "context"
262
+ "log"
263
+ "net/http"
264
+ "os"
265
+ "os/signal"
266
+ "syscall"
267
+ "time"
268
+
269
+ "github.com/gin-gonic/gin"
270
+ "github.com/gin-contrib/cors"
271
+ "github.com/jackc/pgx/v5/pgxpool"
272
+ )
273
+
274
+ type App struct {
275
+ router *gin.Engine
276
+ db *pgxpool.Pool
277
+ server *http.Server
278
+ }
279
+
280
+ func main() {
281
+ pool, err := pgxpool.New(context.Background(),
282
+ os.Getenv("DATABASE_URL"))
283
+ if err != nil {
284
+ log.Fatal(err)
285
+ }
286
+
287
+ app := NewApp(pool)
288
+
289
+ // Graceful shutdown
290
+ go func() {
291
+ if err := app.server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
292
+ log.Fatalf("listen: %s\n", err)
293
+ }
294
+ }()
295
+
296
+ quit := make(chan os.Signal, 1)
297
+ signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
298
+ <-quit
299
+
300
+ log.Println("Shutting down server...")
301
+
302
+ ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
303
+ defer cancel()
304
+
305
+ if err := app.server.Shutdown(ctx); err != nil {
306
+ log.Fatal("Server forced to shutdown:", err)
307
+ }
308
+ pool.Close()
309
+
310
+ log.Println("Server exiting")
311
+ }
312
+
313
+ func NewApp(db *pgxpool.Pool) *App {
314
+ gin.SetMode(gin.ReleaseMode)
315
+ router := gin.New()
316
+ router.Use(gin.Logger())
317
+ router.Use(gin.Recovery())
318
+ router.Use(cors.Default())
319
+
320
+ app := &App{
321
+ router: router,
322
+ db: db,
323
+ server: &http.Server{
324
+ Addr: ":3000",
325
+ Handler: router,
326
+ ReadTimeout: 10 * time.Second,
327
+ WriteTimeout: 10 * time.Second,
328
+ },
329
+ }
330
+
331
+ app.setupRoutes()
332
+ return app
333
+ }
334
+
335
+ func (a *App) setupRoutes() {
336
+ a.router.GET("/health", func(c *gin.Context) {
337
+ c.JSON(http.StatusOK, gin.H{"status": "ok"})
338
+ })
339
+
340
+ api := a.router.Group("/api/v1")
341
+ {
342
+ users := api.Group("/users")
343
+ {
344
+ users.GET("", a.listUsers)
345
+ users.GET("/:id", a.getUser)
346
+ users.POST("", a.createUser)
347
+ users.PUT("/:id", a.updateUser)
348
+ users.DELETE("/:id", a.deleteUser)
349
+ }
350
+ }
351
+ }
352
+
353
+ // Models
354
+ type User struct {
355
+ ID int64 `json:"id"`
356
+ Name string `json:"name"`
357
+ Email string `json:"email"`
358
+ CreatedAt time.Time `json:"created_at"`
359
+ }
360
+
361
+ type CreateUserRequest struct {
362
+ Name string `json:"name" binding:"required,min=2"`
363
+ Email string `json:"email" binding:"required,email"`
364
+ }
365
+
366
+ // Handlers
367
+ func (a *App) listUsers(c *gin.Context) {
368
+ rows, err := a.db.Query(c.Request.Context(),
369
+ "SELECT id, name, email, created_at FROM users ORDER BY created_at DESC LIMIT 10")
370
+ if err != nil {
371
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
372
+ return
373
+ }
374
+ defer rows.Close()
375
+
376
+ var users []User
377
+ for rows.Next() {
378
+ var u User
379
+ if err := rows.Scan(&u.ID, &u.Name, &u.Email, &u.CreatedAt); err != nil {
380
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
381
+ return
382
+ }
383
+ users = append(users, u)
384
+ }
385
+
386
+ c.JSON(http.StatusOK, users)
387
+ }
388
+
389
+ func (a *App) getUser(c *gin.Context) {
390
+ id := c.Param("id")
391
+
392
+ var u User
393
+ err := a.db.QueryRow(c.Request.Context(),
394
+ "SELECT id, name, email, created_at FROM users WHERE id = $1", id).
395
+ Scan(&u.ID, &u.Name, &u.Email, &u.CreatedAt)
396
+ if err != nil {
397
+ c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
398
+ return
399
+ }
400
+
401
+ c.JSON(http.StatusOK, u)
402
+ }
403
+
404
+ func (a *App) createUser(c *gin.Context) {
405
+ var req CreateUserRequest
406
+ if err := c.ShouldBindJSON(&req); err != nil {
407
+ c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
408
+ return
409
+ }
410
+
411
+ var u User
412
+ err := a.db.QueryRow(c.Request.Context(),
413
+ "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id, name, email, created_at",
414
+ req.Name, req.Email).
415
+ Scan(&u.ID, &u.Name, &u.Email, &u.CreatedAt)
416
+ if err != nil {
417
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
418
+ return
419
+ }
420
+
421
+ c.JSON(http.StatusCreated, u)
422
+ }
423
+
424
+ func (a *App) updateUser(c *gin.Context) {
425
+ id := c.Param("id")
426
+
427
+ var req CreateUserRequest
428
+ if err := c.ShouldBindJSON(&req); err != nil {
429
+ c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
430
+ return
431
+ }
432
+
433
+ var u User
434
+ err := a.db.QueryRow(c.Request.Context(),
435
+ "UPDATE users SET name = $2, email = $3 WHERE id = $1 RETURNING id, name, email, created_at",
436
+ id, req.Name, req.Email).
437
+ Scan(&u.ID, &u.Name, &u.Email, &u.CreatedAt)
438
+ if err != nil {
439
+ c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
440
+ return
441
+ }
442
+
443
+ c.JSON(http.StatusOK, u)
444
+ }
445
+
446
+ func (a *App) deleteUser(c *gin.Context) {
447
+ id := c.Param("id")
448
+
449
+ result, err := a.db.Exec(c.Request.Context(), "DELETE FROM users WHERE id = $1", id)
450
+ if err != nil {
451
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
452
+ return
453
+ }
454
+
455
+ if result.RowsAffected() == 0 {
456
+ c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
457
+ return
458
+ }
459
+
460
+ c.Status(http.StatusNoContent)
461
+ }
462
+ ```
463
+
464
+ ---
465
+
466
+ ## CLI Tool: Complete Cobra Application
467
+
468
+ ```go
469
+ // main.go
470
+ package main
471
+
472
+ import (
473
+ "fmt"
474
+ "os"
475
+
476
+ "github.com/spf13/cobra"
477
+ "github.com/spf13/viper"
478
+ )
479
+
480
+ var (
481
+ cfgFile string
482
+ verbose bool
483
+ )
484
+
485
+ func main() {
486
+ if err := rootCmd.Execute(); err != nil {
487
+ fmt.Fprintln(os.Stderr, err)
488
+ os.Exit(1)
489
+ }
490
+ }
491
+
492
+ var rootCmd = &cobra.Command{
493
+ Use: "myctl",
494
+ Short: "A CLI tool for managing resources",
495
+ Long: `myctl is a comprehensive CLI tool for managing cloud resources.`,
496
+ PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
497
+ return initConfig()
498
+ },
499
+ }
500
+
501
+ func init() {
502
+ rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file")
503
+ rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output")
504
+
505
+ rootCmd.AddCommand(serveCmd)
506
+ rootCmd.AddCommand(migrateCmd)
507
+ rootCmd.AddCommand(userCmd)
508
+ }
509
+
510
+ // Serve command
511
+ var serveCmd = &cobra.Command{
512
+ Use: "serve",
513
+ Short: "Start the API server",
514
+ RunE: func(cmd *cobra.Command, args []string) error {
515
+ port, _ := cmd.Flags().GetInt("port")
516
+ fmt.Printf("Starting server on port %d...\n", port)
517
+ return nil
518
+ },
519
+ }
520
+
521
+ func init() {
522
+ serveCmd.Flags().IntP("port", "p", 3000, "Port to listen on")
523
+ viper.BindPFlag("server.port", serveCmd.Flags().Lookup("port"))
524
+ }
525
+
526
+ // Migrate command
527
+ var migrateCmd = &cobra.Command{
528
+ Use: "migrate",
529
+ Short: "Run database migrations",
530
+ }
531
+
532
+ var migrateUpCmd = &cobra.Command{
533
+ Use: "up",
534
+ Short: "Run all pending migrations",
535
+ RunE: func(cmd *cobra.Command, args []string) error {
536
+ fmt.Println("Running migrations...")
537
+ return nil
538
+ },
539
+ }
540
+
541
+ var migrateDownCmd = &cobra.Command{
542
+ Use: "down",
543
+ Short: "Rollback last migration",
544
+ RunE: func(cmd *cobra.Command, args []string) error {
545
+ steps, _ := cmd.Flags().GetInt("steps")
546
+ fmt.Printf("Rolling back %d migrations...\n", steps)
547
+ return nil
548
+ },
549
+ }
550
+
551
+ func init() {
552
+ migrateDownCmd.Flags().IntP("steps", "n", 1, "Number of migrations to rollback")
553
+ migrateCmd.AddCommand(migrateUpCmd)
554
+ migrateCmd.AddCommand(migrateDownCmd)
555
+ }
556
+
557
+ // User command
558
+ var userCmd = &cobra.Command{
559
+ Use: "user",
560
+ Short: "Manage users",
561
+ }
562
+
563
+ var userListCmd = &cobra.Command{
564
+ Use: "list",
565
+ Short: "List all users",
566
+ RunE: func(cmd *cobra.Command, args []string) error {
567
+ limit, _ := cmd.Flags().GetInt("limit")
568
+ fmt.Printf("Listing %d users...\n", limit)
569
+ return nil
570
+ },
571
+ }
572
+
573
+ var userCreateCmd = &cobra.Command{
574
+ Use: "create [name] [email]",
575
+ Short: "Create a new user",
576
+ Args: cobra.ExactArgs(2),
577
+ RunE: func(cmd *cobra.Command, args []string) error {
578
+ name, email := args[0], args[1]
579
+ fmt.Printf("Creating user: %s <%s>\n", name, email)
580
+ return nil
581
+ },
582
+ }
583
+
584
+ func init() {
585
+ userListCmd.Flags().IntP("limit", "l", 10, "Limit results")
586
+ userCmd.AddCommand(userListCmd)
587
+ userCmd.AddCommand(userCreateCmd)
588
+ }
589
+
590
+ func initConfig() error {
591
+ if cfgFile != "" {
592
+ viper.SetConfigFile(cfgFile)
593
+ } else {
594
+ home, err := os.UserHomeDir()
595
+ if err != nil {
596
+ return err
597
+ }
598
+ viper.AddConfigPath(home)
599
+ viper.SetConfigName(".myctl")
600
+ }
601
+
602
+ viper.SetEnvPrefix("MYCTL")
603
+ viper.AutomaticEnv()
604
+
605
+ if err := viper.ReadInConfig(); err == nil {
606
+ if verbose {
607
+ fmt.Fprintln(os.Stderr, "Using config file:", viper.ConfigFileUsed())
608
+ }
609
+ }
610
+
611
+ return nil
612
+ }
613
+ ```
614
+
615
+ ---
616
+
617
+ ## Concurrency: Worker Pool
618
+
619
+ ```go
620
+ package main
621
+
622
+ import (
623
+ "context"
624
+ "fmt"
625
+ "sync"
626
+ "time"
627
+
628
+ "golang.org/x/sync/errgroup"
629
+ "golang.org/x/sync/semaphore"
630
+ )
631
+
632
+ type Job struct {
633
+ ID int
634
+ Data string
635
+ }
636
+
637
+ type Result struct {
638
+ JobID int
639
+ Data string
640
+ Error error
641
+ }
642
+
643
+ // Worker pool with fixed number of workers
644
+ func workerPool(ctx context.Context, jobs <-chan Job, numWorkers int) <-chan Result {
645
+ results := make(chan Result, 100)
646
+
647
+ var wg sync.WaitGroup
648
+ for i := 0; i < numWorkers; i++ {
649
+ wg.Add(1)
650
+ go func(workerID int) {
651
+ defer wg.Done()
652
+ for job := range jobs {
653
+ select {
654
+ case <-ctx.Done():
655
+ return
656
+ default:
657
+ result := processJob(job)
658
+ results <- result
659
+ }
660
+ }
661
+ }(i)
662
+ }
663
+
664
+ go func() {
665
+ wg.Wait()
666
+ close(results)
667
+ }()
668
+
669
+ return results
670
+ }
671
+
672
+ func processJob(job Job) Result {
673
+ time.Sleep(100 * time.Millisecond)
674
+ return Result{JobID: job.ID, Data: fmt.Sprintf("Processed: %s", job.Data)}
675
+ }
676
+
677
+ // Rate-limited concurrent operations with semaphore
678
+ func rateLimitedOperations(ctx context.Context, items []string, maxConcurrent int64) error {
679
+ sem := semaphore.NewWeighted(maxConcurrent)
680
+ g, ctx := errgroup.WithContext(ctx)
681
+
682
+ for _, item := range items {
683
+ item := item
684
+ g.Go(func() error {
685
+ if err := sem.Acquire(ctx, 1); err != nil {
686
+ return err
687
+ }
688
+ defer sem.Release(1)
689
+ return processItem(ctx, item)
690
+ })
691
+ }
692
+
693
+ return g.Wait()
694
+ }
695
+
696
+ func processItem(ctx context.Context, item string) error {
697
+ select {
698
+ case <-ctx.Done():
699
+ return ctx.Err()
700
+ case <-time.After(100 * time.Millisecond):
701
+ fmt.Printf("Processed: %s\n", item)
702
+ return nil
703
+ }
704
+ }
705
+
706
+ // Fan-out/fan-in pattern
707
+ func fanOutFanIn(ctx context.Context, input <-chan int, workers int) <-chan int {
708
+ channels := make([]<-chan int, workers)
709
+ for i := 0; i < workers; i++ {
710
+ channels[i] = worker(ctx, input)
711
+ }
712
+ return merge(ctx, channels...)
713
+ }
714
+
715
+ func worker(ctx context.Context, input <-chan int) <-chan int {
716
+ output := make(chan int)
717
+ go func() {
718
+ defer close(output)
719
+ for n := range input {
720
+ select {
721
+ case <-ctx.Done():
722
+ return
723
+ case output <- n * 2:
724
+ }
725
+ }
726
+ }()
727
+ return output
728
+ }
729
+
730
+ func merge(ctx context.Context, channels ...<-chan int) <-chan int {
731
+ output := make(chan int)
732
+ var wg sync.WaitGroup
733
+
734
+ for _, ch := range channels {
735
+ wg.Add(1)
736
+ go func(c <-chan int) {
737
+ defer wg.Done()
738
+ for n := range c {
739
+ select {
740
+ case <-ctx.Done():
741
+ return
742
+ case output <- n:
743
+ }
744
+ }
745
+ }(ch)
746
+ }
747
+
748
+ go func() {
749
+ wg.Wait()
750
+ close(output)
751
+ }()
752
+
753
+ return output
754
+ }
755
+ ```
756
+
757
+ ---
758
+
759
+ ## Docker Deployment
760
+
761
+ ### Dockerfile (Minimal ~10-20MB)
762
+
763
+ ```dockerfile
764
+ FROM golang:1.23-alpine AS builder
765
+ WORKDIR /app
766
+ COPY go.mod go.sum ./
767
+ RUN go mod download
768
+ COPY . .
769
+ RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o main .
770
+
771
+ FROM scratch
772
+ COPY --from=builder /app/main /main
773
+ EXPOSE 3000
774
+ ENTRYPOINT ["/main"]
775
+ ```
776
+
777
+ ### Docker Compose
778
+
779
+ ```yaml
780
+ version: "3.9"
781
+
782
+ services:
783
+ api:
784
+ build:
785
+ context: .
786
+ dockerfile: Dockerfile
787
+ ports:
788
+ - "3000:3000"
789
+ environment:
790
+ - DATABASE_URL=postgres://postgres:password@db:5432/myapp
791
+ depends_on:
792
+ db:
793
+ condition: service_healthy
794
+ deploy:
795
+ replicas: 2
796
+ resources:
797
+ limits:
798
+ cpus: "0.5"
799
+ memory: 256M
800
+
801
+ db:
802
+ image: postgres:16-alpine
803
+ environment:
804
+ - POSTGRES_USER=postgres
805
+ - POSTGRES_PASSWORD=password
806
+ - POSTGRES_DB=myapp
807
+ volumes:
808
+ - postgres_data:/var/lib/postgresql/data
809
+ healthcheck:
810
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
811
+ interval: 5s
812
+ timeout: 5s
813
+ retries: 5
814
+
815
+ volumes:
816
+ postgres_data:
817
+ ```
818
+
819
+ ---
820
+
821
+ ## Integration Tests
822
+
823
+ ```go
824
+ package main
825
+
826
+ import (
827
+ "context"
828
+ "encoding/json"
829
+ "fmt"
830
+ "net/http/httptest"
831
+ "strings"
832
+ "testing"
833
+
834
+ "github.com/gofiber/fiber/v3"
835
+ "github.com/stretchr/testify/assert"
836
+ "github.com/stretchr/testify/require"
837
+ "github.com/testcontainers/testcontainers-go"
838
+ "github.com/testcontainers/testcontainers-go/modules/postgres"
839
+ "github.com/jackc/pgx/v5/pgxpool"
840
+ )
841
+
842
+ func setupTestDB(t *testing.T) (*pgxpool.Pool, func()) {
843
+ ctx := context.Background()
844
+
845
+ container, err := postgres.Run(ctx, "postgres:16-alpine",
846
+ postgres.WithDatabase("test"),
847
+ postgres.WithUsername("test"),
848
+ postgres.WithPassword("test"),
849
+ )
850
+ require.NoError(t, err)
851
+
852
+ connStr, err := container.ConnectionString(ctx, "sslmode=disable")
853
+ require.NoError(t, err)
854
+
855
+ pool, err := pgxpool.New(ctx, connStr)
856
+ require.NoError(t, err)
857
+
858
+ _, err = pool.Exec(ctx, `
859
+ CREATE TABLE users (
860
+ id BIGSERIAL PRIMARY KEY,
861
+ name VARCHAR(255) NOT NULL,
862
+ email VARCHAR(255) UNIQUE NOT NULL,
863
+ created_at TIMESTAMP DEFAULT NOW()
864
+ )
865
+ `)
866
+ require.NoError(t, err)
867
+
868
+ cleanup := func() {
869
+ pool.Close()
870
+ container.Terminate(ctx)
871
+ }
872
+
873
+ return pool, cleanup
874
+ }
875
+
876
+ func TestUserAPI(t *testing.T) {
877
+ pool, cleanup := setupTestDB(t)
878
+ defer cleanup()
879
+
880
+ app, _ := NewApp(Config{Port: "3000", DatabaseURL: ""})
881
+ app.db = pool
882
+
883
+ t.Run("create and get user", func(t *testing.T) {
884
+ body := `{"name": "John Doe", "email": "john@example.com"}`
885
+ req := httptest.NewRequest("POST", "/api/v1/users", strings.NewReader(body))
886
+ req.Header.Set("Content-Type", "application/json")
887
+
888
+ resp, err := app.fiber.Test(req)
889
+ require.NoError(t, err)
890
+ assert.Equal(t, 201, resp.StatusCode)
891
+
892
+ var created User
893
+ json.NewDecoder(resp.Body).Decode(&created)
894
+ assert.Equal(t, "John Doe", created.Name)
895
+ assert.NotZero(t, created.ID)
896
+
897
+ req = httptest.NewRequest("GET", fmt.Sprintf("/api/v1/users/%d", created.ID), nil)
898
+ resp, err = app.fiber.Test(req)
899
+ require.NoError(t, err)
900
+ assert.Equal(t, 200, resp.StatusCode)
901
+
902
+ var fetched User
903
+ json.NewDecoder(resp.Body).Decode(&fetched)
904
+ assert.Equal(t, created.ID, fetched.ID)
905
+ })
906
+
907
+ t.Run("get non-existent user", func(t *testing.T) {
908
+ req := httptest.NewRequest("GET", "/api/v1/users/99999", nil)
909
+ resp, err := app.fiber.Test(req)
910
+ require.NoError(t, err)
911
+ assert.Equal(t, 404, resp.StatusCode)
912
+ })
913
+ }
914
+ ```
915
+
916
+ ---
917
+
918
+ Last Updated: 2025-12-07
919
+ Version: 1.0.0