moai-adk 0.8.0__py3-none-any.whl → 0.34.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. moai_adk/__init__.py +2 -6
  2. moai_adk/__main__.py +136 -21
  3. moai_adk/cli/__init__.py +6 -2
  4. moai_adk/cli/commands/__init__.py +1 -4
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +17 -5
  7. moai_adk/cli/commands/init.py +118 -48
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +8 -13
  10. moai_adk/cli/commands/update.py +1978 -149
  11. moai_adk/cli/main.py +3 -2
  12. moai_adk/cli/prompts/init_prompts.py +144 -91
  13. moai_adk/cli/spec_status.py +263 -0
  14. moai_adk/cli/ui/__init__.py +44 -0
  15. moai_adk/cli/ui/progress.py +422 -0
  16. moai_adk/cli/ui/prompts.py +389 -0
  17. moai_adk/cli/ui/theme.py +129 -0
  18. moai_adk/cli/worktree/__init__.py +27 -0
  19. moai_adk/cli/worktree/__main__.py +31 -0
  20. moai_adk/cli/worktree/cli.py +683 -0
  21. moai_adk/cli/worktree/exceptions.py +89 -0
  22. moai_adk/cli/worktree/manager.py +493 -0
  23. moai_adk/cli/worktree/models.py +65 -0
  24. moai_adk/cli/worktree/registry.py +422 -0
  25. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  26. moai_adk/core/__init__.py +0 -1
  27. moai_adk/core/analysis/__init__.py +9 -0
  28. moai_adk/core/analysis/session_analyzer.py +400 -0
  29. moai_adk/core/claude_integration.py +393 -0
  30. moai_adk/core/command_helpers.py +270 -0
  31. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  32. moai_adk/core/config/__init__.py +6 -0
  33. moai_adk/core/config/auto_spec_config.py +340 -0
  34. moai_adk/core/config/migration.py +148 -17
  35. moai_adk/core/config/unified.py +436 -0
  36. moai_adk/core/context_manager.py +273 -0
  37. moai_adk/core/diagnostics/slash_commands.py +0 -1
  38. moai_adk/core/enterprise_features.py +1404 -0
  39. moai_adk/core/error_recovery_system.py +1902 -0
  40. moai_adk/core/event_driven_hook_system.py +1371 -0
  41. moai_adk/core/git/__init__.py +8 -1
  42. moai_adk/core/git/branch.py +0 -1
  43. moai_adk/core/git/branch_manager.py +2 -10
  44. moai_adk/core/git/checkpoint.py +1 -7
  45. moai_adk/core/git/commit.py +0 -1
  46. moai_adk/core/git/conflict_detector.py +413 -0
  47. moai_adk/core/git/event_detector.py +3 -5
  48. moai_adk/core/git/manager.py +91 -2
  49. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  50. moai_adk/core/input_validation_middleware.py +1006 -0
  51. moai_adk/core/integration/__init__.py +22 -0
  52. moai_adk/core/integration/engine.py +157 -0
  53. moai_adk/core/integration/integration_tester.py +226 -0
  54. moai_adk/core/integration/models.py +88 -0
  55. moai_adk/core/integration/utils.py +211 -0
  56. moai_adk/core/issue_creator.py +305 -0
  57. moai_adk/core/jit_context_loader.py +956 -0
  58. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  59. moai_adk/core/language_config.py +202 -0
  60. moai_adk/core/language_config_resolver.py +572 -0
  61. moai_adk/core/language_validator.py +543 -0
  62. moai_adk/core/mcp/setup.py +116 -0
  63. moai_adk/core/merge/__init__.py +9 -0
  64. moai_adk/core/merge/analyzer.py +481 -0
  65. moai_adk/core/migration/__init__.py +18 -0
  66. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  67. moai_adk/core/migration/backup_manager.py +277 -0
  68. moai_adk/core/migration/custom_element_scanner.py +358 -0
  69. moai_adk/core/migration/file_migrator.py +209 -0
  70. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  71. moai_adk/core/migration/selective_restorer.py +470 -0
  72. moai_adk/core/migration/template_utils.py +74 -0
  73. moai_adk/core/migration/user_selection_ui.py +338 -0
  74. moai_adk/core/migration/version_detector.py +139 -0
  75. moai_adk/core/migration/version_migrator.py +228 -0
  76. moai_adk/core/performance/__init__.py +6 -0
  77. moai_adk/core/performance/cache_system.py +316 -0
  78. moai_adk/core/performance/parallel_processor.py +116 -0
  79. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  80. moai_adk/core/project/__init__.py +0 -1
  81. moai_adk/core/project/backup_utils.py +2 -7
  82. moai_adk/core/project/checker.py +2 -4
  83. moai_adk/core/project/detector.py +189 -22
  84. moai_adk/core/project/initializer.py +218 -27
  85. moai_adk/core/project/phase_executor.py +416 -44
  86. moai_adk/core/project/validator.py +7 -32
  87. moai_adk/core/quality/__init__.py +1 -1
  88. moai_adk/core/quality/trust_checker.py +37 -101
  89. moai_adk/core/quality/validators/__init__.py +1 -1
  90. moai_adk/core/quality/validators/base_validator.py +1 -1
  91. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  92. moai_adk/core/robust_json_parser.py +611 -0
  93. moai_adk/core/rollback_manager.py +918 -0
  94. moai_adk/core/session_manager.py +651 -0
  95. moai_adk/core/skill_loading_system.py +579 -0
  96. moai_adk/core/spec/confidence_scoring.py +680 -0
  97. moai_adk/core/spec/ears_template_engine.py +1247 -0
  98. moai_adk/core/spec/quality_validator.py +687 -0
  99. moai_adk/core/spec_status_manager.py +478 -0
  100. moai_adk/core/template/__init__.py +0 -1
  101. moai_adk/core/template/backup.py +82 -17
  102. moai_adk/core/template/config.py +112 -40
  103. moai_adk/core/template/languages.py +0 -1
  104. moai_adk/core/template/merger.py +75 -26
  105. moai_adk/core/template/processor.py +750 -72
  106. moai_adk/core/template_engine.py +310 -0
  107. moai_adk/core/template_variable_synchronizer.py +417 -0
  108. moai_adk/core/unified_permission_manager.py +745 -0
  109. moai_adk/core/user_behavior_analytics.py +851 -0
  110. moai_adk/core/version_sync.py +429 -0
  111. moai_adk/foundation/__init__.py +56 -0
  112. moai_adk/foundation/backend.py +1027 -0
  113. moai_adk/foundation/database.py +1115 -0
  114. moai_adk/foundation/devops.py +1585 -0
  115. moai_adk/foundation/ears.py +431 -0
  116. moai_adk/foundation/frontend.py +870 -0
  117. moai_adk/foundation/git/commit_templates.py +557 -0
  118. moai_adk/foundation/git.py +376 -0
  119. moai_adk/foundation/langs.py +484 -0
  120. moai_adk/foundation/ml_ops.py +1162 -0
  121. moai_adk/foundation/testing.py +1524 -0
  122. moai_adk/foundation/trust/trust_principles.py +676 -0
  123. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  124. moai_adk/project/__init__.py +0 -0
  125. moai_adk/project/configuration.py +1084 -0
  126. moai_adk/project/documentation.py +566 -0
  127. moai_adk/project/schema.py +447 -0
  128. moai_adk/statusline/__init__.py +38 -0
  129. moai_adk/statusline/alfred_detector.py +105 -0
  130. moai_adk/statusline/config.py +376 -0
  131. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  132. moai_adk/statusline/git_collector.py +190 -0
  133. moai_adk/statusline/main.py +322 -0
  134. moai_adk/statusline/metrics_tracker.py +78 -0
  135. moai_adk/statusline/renderer.py +343 -0
  136. moai_adk/statusline/update_checker.py +129 -0
  137. moai_adk/statusline/version_reader.py +741 -0
  138. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +670 -0
  139. moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
  140. moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
  141. moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
  142. moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
  143. moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
  144. moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
  145. moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
  146. moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
  147. moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
  148. moai_adk/templates/.claude/agents/moai/expert-security.md +509 -0
  149. moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
  150. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
  151. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
  152. moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
  153. moai_adk/templates/.claude/agents/moai/manager-git.md +1020 -0
  154. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  155. moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
  156. moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
  157. moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
  158. moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
  159. moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
  160. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
  161. moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
  162. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
  163. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
  164. moai_adk/templates/.claude/commands/moai/0-project.md +1384 -0
  165. moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
  166. moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
  167. moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
  168. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  169. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  170. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  171. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  172. moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/checkpoint.py +10 -37
  173. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  179. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  180. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  181. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  182. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  183. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  184. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  185. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  186. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1075 -0
  187. moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
  188. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  189. moai_adk/templates/.claude/settings.json +78 -50
  190. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +438 -0
  191. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  192. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
  193. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
  194. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  195. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  196. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  197. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  198. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  199. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
  200. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +313 -283
  201. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +610 -1525
  202. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +423 -619
  203. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +295 -95
  204. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +817 -16
  205. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  206. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  207. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  208. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  209. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +532 -17
  210. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +470 -97
  211. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +955 -16
  212. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +651 -18
  213. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
  214. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  215. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  216. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  217. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  218. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  219. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  220. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  221. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
  222. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  223. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  224. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  225. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  226. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  227. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  228. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  229. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  280. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +618 -93
  281. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +446 -91
  282. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
  283. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
  284. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  285. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  286. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +346 -94
  287. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +906 -16
  288. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +721 -15
  289. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +352 -91
  290. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +851 -16
  291. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +278 -18
  292. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +344 -86
  293. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +993 -16
  294. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +549 -18
  295. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +617 -96
  296. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +364 -314
  297. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +849 -496
  298. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +731 -243
  299. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +545 -89
  300. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +650 -87
  301. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +341 -93
  302. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +646 -16
  303. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +491 -18
  304. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +463 -89
  305. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +620 -16
  306. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +410 -17
  307. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +486 -112
  308. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +905 -16
  309. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +659 -17
  310. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +333 -92
  311. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1076 -16
  312. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +718 -21
  313. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
  314. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  315. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  316. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  317. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  318. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
  319. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  320. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  321. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  322. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  323. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  324. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  325. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  326. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  327. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  328. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  329. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  330. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  331. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
  332. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  333. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  334. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  335. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  336. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  337. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  338. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
  339. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
  340. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
  341. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
  342. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +290 -0
  343. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
  344. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
  345. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
  346. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
  347. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
  348. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
  349. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
  350. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
  351. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
  352. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  353. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  354. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  355. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  356. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  357. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
  358. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  359. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  360. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  361. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  362. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  363. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
  364. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  365. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  366. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  367. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  368. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  369. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  370. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  371. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  372. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  373. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  374. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  375. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  376. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  377. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1462 -0
  378. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  379. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  380. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  381. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  382. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  383. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  384. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  385. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  386. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  387. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  388. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  390. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  391. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  417. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
  418. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  419. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  420. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  421. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  422. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  423. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  424. moai_adk/templates/.git-hooks/pre-commit +128 -0
  425. moai_adk/templates/.git-hooks/pre-push +365 -0
  426. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  427. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  428. moai_adk/templates/.github/workflows/spec-issue-sync.yml +206 -36
  429. moai_adk/templates/.gitignore +194 -13
  430. moai_adk/templates/.mcp.json +31 -0
  431. moai_adk/templates/.moai/config/config.yaml +58 -0
  432. moai_adk/templates/.moai/config/questions/_schema.yaml +151 -0
  433. moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
  434. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  435. moai_adk/templates/.moai/config/questions/tab2-project.yaml +81 -0
  436. moai_adk/templates/.moai/config/questions/tab3-git.yaml +634 -0
  437. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +170 -0
  438. moai_adk/templates/.moai/config/questions/tab5-system.yaml +87 -0
  439. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  440. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  441. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  442. moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
  443. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  444. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  445. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  446. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  447. moai_adk/templates/CLAUDE.md +571 -244
  448. moai_adk/utils/__init__.py +24 -2
  449. moai_adk/utils/banner.py +9 -13
  450. moai_adk/utils/common.py +294 -0
  451. moai_adk/utils/link_validator.py +241 -0
  452. moai_adk/utils/logger.py +4 -9
  453. moai_adk/utils/safe_file_reader.py +206 -0
  454. moai_adk/utils/timeout.py +160 -0
  455. moai_adk/utils/toon_utils.py +256 -0
  456. moai_adk/version.py +22 -0
  457. moai_adk-0.34.0.dist-info/METADATA +2999 -0
  458. moai_adk-0.34.0.dist-info/RECORD +463 -0
  459. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/WHEEL +1 -1
  460. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/entry_points.txt +1 -0
  461. moai_adk/cli/commands/backup.py +0 -80
  462. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -293
  463. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -196
  464. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -207
  465. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -375
  466. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -343
  467. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -246
  468. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -320
  469. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -837
  470. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -272
  471. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -265
  472. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -311
  473. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -352
  474. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1184
  475. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -665
  476. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -488
  477. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -623
  478. moai_adk/templates/.claude/hooks/alfred/HOOK_SCHEMA_VALIDATION.md +0 -313
  479. moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
  480. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -174
  481. moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -170
  482. moai_adk/templates/.claude/hooks/alfred/core/context.py +0 -67
  483. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -416
  484. moai_adk/templates/.claude/hooks/alfred/core/tags.py +0 -198
  485. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -21
  486. moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
  487. moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -161
  488. moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -90
  489. moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -42
  490. moai_adk/templates/.claude/hooks/alfred/test_hook_output.py +0 -175
  491. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -640
  492. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -696
  493. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -474
  494. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  495. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  496. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  497. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  498. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  499. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  500. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  501. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  502. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  503. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  504. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  505. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  506. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  507. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  508. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  509. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  510. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  511. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  512. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  513. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  514. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  515. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  516. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  517. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  518. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  519. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  520. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  521. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  522. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  523. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  524. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  525. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  526. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  527. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  528. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  529. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  530. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  531. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  532. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  533. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  534. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  535. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  536. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  537. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  538. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  539. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  540. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  541. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  542. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  543. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  544. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  545. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  546. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  547. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  548. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  549. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  550. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  551. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  552. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  553. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  554. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  555. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  556. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  557. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  558. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  559. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  560. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  561. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  562. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  563. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  564. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  565. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  566. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -113
  567. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  568. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  569. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  570. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  571. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  572. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  573. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  574. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  575. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  576. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  577. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  578. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  579. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  580. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  581. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  582. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  583. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  584. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  585. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  586. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  587. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  588. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  589. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  590. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  591. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  592. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  593. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  594. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  595. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  596. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  597. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  598. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  599. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  600. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  601. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  602. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  603. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  604. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  605. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  606. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  607. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  608. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  609. moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +0 -482
  610. moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +0 -278
  611. moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  612. moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +0 -477
  613. moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  614. moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  615. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  616. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  617. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +0 -271
  618. moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  619. moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +0 -583
  620. moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +0 -526
  621. moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +0 -465
  622. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +0 -328
  623. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +0 -312
  624. moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  625. moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +0 -285
  626. moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +0 -278
  627. moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +0 -303
  628. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -137
  629. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -218
  630. moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +0 -161
  631. moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -541
  632. moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -622
  633. moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -176
  634. moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
  635. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -256
  636. moai_adk/templates/.moai/config.json +0 -96
  637. moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +0 -208
  638. moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +0 -369
  639. moai_adk/templates/.moai/memory/CLAUDE-RULES.md +0 -539
  640. moai_adk/templates/.moai/memory/CONFIG-SCHEMA.md +0 -444
  641. moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -344
  642. moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +0 -220
  643. moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +0 -218
  644. moai_adk/templates/.moai/memory/SPEC-METADATA.md +0 -356
  645. moai_adk/templates/.moai/memory/config-schema.md +0 -444
  646. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
  647. moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
  648. moai_adk/templates/.moai/project/product.md +0 -161
  649. moai_adk/templates/.moai/project/structure.md +0 -156
  650. moai_adk/templates/.moai/project/tech.md +0 -227
  651. moai_adk/templates/__init__.py +0 -2
  652. moai_adk-0.8.0.dist-info/METADATA +0 -1722
  653. moai_adk-0.8.0.dist-info/RECORD +0 -282
  654. {moai_adk-0.8.0.dist-info → moai_adk-0.34.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,29 +1,919 @@
1
- # moai-lang-go - Working Examples
1
+ # Go Production Examples
2
2
 
3
- _Last updated: 2025-10-22_
3
+ Production-ready code examples for Go 1.23+ applications.
4
4
 
5
- ## Example 1: Basic Setup
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
+ }
6
231
 
7
- ```bash
8
- # Setup commands
9
- # ...
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
+ }
10
250
  ```
11
251
 
12
- ## Example 2: TDD Workflow
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
+ })
13
339
 
14
- ```bash
15
- # RED: Write failing test
16
- # GREEN: Implement feature
17
- # REFACTOR: Improve code
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
+ }
18
462
  ```
19
463
 
20
- ## Example 3: Quality Gate
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
+ })
21
906
 
22
- ```bash
23
- # Run quality checks
24
- # Verify coverage ≥85%
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
+ }
25
914
  ```
26
915
 
27
916
  ---
28
917
 
29
- _For more examples, see SKILL.md reference section_
918
+ Last Updated: 2025-12-07
919
+ Version: 1.0.0