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

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

Potentially problematic release.


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

Files changed (699) hide show
  1. moai_adk/__init__.py +2 -6
  2. moai_adk/__main__.py +136 -21
  3. moai_adk/cli/__init__.py +6 -2
  4. moai_adk/cli/commands/__init__.py +1 -4
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +17 -5
  7. moai_adk/cli/commands/init.py +105 -47
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +8 -13
  10. moai_adk/cli/commands/update.py +1734 -65
  11. moai_adk/cli/main.py +3 -2
  12. moai_adk/cli/prompts/init_prompts.py +144 -91
  13. moai_adk/cli/spec_status.py +263 -0
  14. moai_adk/cli/ui/__init__.py +44 -0
  15. moai_adk/cli/ui/progress.py +422 -0
  16. moai_adk/cli/ui/prompts.py +389 -0
  17. moai_adk/cli/ui/theme.py +129 -0
  18. moai_adk/cli/worktree/__init__.py +27 -0
  19. moai_adk/cli/worktree/__main__.py +31 -0
  20. moai_adk/cli/worktree/cli.py +672 -0
  21. moai_adk/cli/worktree/exceptions.py +89 -0
  22. moai_adk/cli/worktree/manager.py +490 -0
  23. moai_adk/cli/worktree/models.py +65 -0
  24. moai_adk/cli/worktree/registry.py +128 -0
  25. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  26. moai_adk/core/__init__.py +0 -1
  27. moai_adk/core/analysis/__init__.py +9 -0
  28. moai_adk/core/analysis/session_analyzer.py +400 -0
  29. moai_adk/core/claude_integration.py +393 -0
  30. moai_adk/core/command_helpers.py +270 -0
  31. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  32. moai_adk/core/config/__init__.py +6 -0
  33. moai_adk/core/config/auto_spec_config.py +340 -0
  34. moai_adk/core/config/migration.py +147 -16
  35. moai_adk/core/config/unified.py +436 -0
  36. moai_adk/core/context_manager.py +273 -0
  37. moai_adk/core/diagnostics/slash_commands.py +0 -1
  38. moai_adk/core/enterprise_features.py +1404 -0
  39. moai_adk/core/error_recovery_system.py +1902 -0
  40. moai_adk/core/event_driven_hook_system.py +1371 -0
  41. moai_adk/core/git/__init__.py +8 -1
  42. moai_adk/core/git/branch.py +0 -1
  43. moai_adk/core/git/branch_manager.py +2 -10
  44. moai_adk/core/git/checkpoint.py +1 -7
  45. moai_adk/core/git/commit.py +0 -1
  46. moai_adk/core/git/conflict_detector.py +413 -0
  47. moai_adk/core/git/event_detector.py +3 -5
  48. moai_adk/core/git/manager.py +91 -2
  49. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  50. moai_adk/core/input_validation_middleware.py +1006 -0
  51. moai_adk/core/integration/__init__.py +22 -0
  52. moai_adk/core/integration/engine.py +157 -0
  53. moai_adk/core/integration/integration_tester.py +226 -0
  54. moai_adk/core/integration/models.py +88 -0
  55. moai_adk/core/integration/utils.py +211 -0
  56. moai_adk/core/issue_creator.py +20 -28
  57. moai_adk/core/jit_context_loader.py +956 -0
  58. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  59. moai_adk/core/language_config.py +202 -0
  60. moai_adk/core/language_config_resolver.py +485 -0
  61. moai_adk/core/language_validator.py +543 -0
  62. moai_adk/core/mcp/setup.py +116 -0
  63. moai_adk/core/merge/__init__.py +9 -0
  64. moai_adk/core/merge/analyzer.py +481 -0
  65. moai_adk/core/migration/__init__.py +18 -0
  66. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  67. moai_adk/core/migration/backup_manager.py +277 -0
  68. moai_adk/core/migration/custom_element_scanner.py +358 -0
  69. moai_adk/core/migration/file_migrator.py +209 -0
  70. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  71. moai_adk/core/migration/selective_restorer.py +470 -0
  72. moai_adk/core/migration/template_utils.py +74 -0
  73. moai_adk/core/migration/user_selection_ui.py +338 -0
  74. moai_adk/core/migration/version_detector.py +139 -0
  75. moai_adk/core/migration/version_migrator.py +228 -0
  76. moai_adk/core/performance/__init__.py +6 -0
  77. moai_adk/core/performance/cache_system.py +316 -0
  78. moai_adk/core/performance/parallel_processor.py +116 -0
  79. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  80. moai_adk/core/project/__init__.py +0 -1
  81. moai_adk/core/project/backup_utils.py +2 -7
  82. moai_adk/core/project/checker.py +2 -4
  83. moai_adk/core/project/detector.py +17 -39
  84. moai_adk/core/project/initializer.py +170 -33
  85. moai_adk/core/project/phase_executor.py +398 -68
  86. moai_adk/core/project/validator.py +7 -32
  87. moai_adk/core/quality/__init__.py +1 -1
  88. moai_adk/core/quality/trust_checker.py +37 -101
  89. moai_adk/core/quality/validators/__init__.py +1 -1
  90. moai_adk/core/quality/validators/base_validator.py +1 -1
  91. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  92. moai_adk/core/robust_json_parser.py +611 -0
  93. moai_adk/core/rollback_manager.py +918 -0
  94. moai_adk/core/session_manager.py +651 -0
  95. moai_adk/core/skill_loading_system.py +579 -0
  96. moai_adk/core/spec/confidence_scoring.py +680 -0
  97. moai_adk/core/spec/ears_template_engine.py +1247 -0
  98. moai_adk/core/spec/quality_validator.py +687 -0
  99. moai_adk/core/spec_status_manager.py +478 -0
  100. moai_adk/core/template/__init__.py +0 -1
  101. moai_adk/core/template/backup.py +82 -17
  102. moai_adk/core/template/config.py +112 -40
  103. moai_adk/core/template/languages.py +0 -1
  104. moai_adk/core/template/merger.py +75 -26
  105. moai_adk/core/template/processor.py +750 -72
  106. moai_adk/core/template_engine.py +90 -48
  107. moai_adk/core/template_variable_synchronizer.py +417 -0
  108. moai_adk/core/unified_permission_manager.py +745 -0
  109. moai_adk/core/user_behavior_analytics.py +851 -0
  110. moai_adk/core/version_sync.py +429 -0
  111. moai_adk/foundation/__init__.py +56 -0
  112. moai_adk/foundation/backend.py +1027 -0
  113. moai_adk/foundation/database.py +1115 -0
  114. moai_adk/foundation/devops.py +1585 -0
  115. moai_adk/foundation/ears.py +431 -0
  116. moai_adk/foundation/frontend.py +870 -0
  117. moai_adk/foundation/git/commit_templates.py +557 -0
  118. moai_adk/foundation/git.py +376 -0
  119. moai_adk/foundation/langs.py +484 -0
  120. moai_adk/foundation/ml_ops.py +1162 -0
  121. moai_adk/foundation/testing.py +1524 -0
  122. moai_adk/foundation/trust/trust_principles.py +676 -0
  123. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  124. moai_adk/project/__init__.py +0 -0
  125. moai_adk/project/configuration.py +1084 -0
  126. moai_adk/project/documentation.py +566 -0
  127. moai_adk/project/schema.py +447 -0
  128. moai_adk/statusline/__init__.py +38 -0
  129. moai_adk/statusline/alfred_detector.py +105 -0
  130. moai_adk/statusline/config.py +373 -0
  131. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  132. moai_adk/statusline/git_collector.py +190 -0
  133. moai_adk/statusline/main.py +264 -0
  134. moai_adk/statusline/metrics_tracker.py +78 -0
  135. moai_adk/statusline/renderer.py +383 -0
  136. moai_adk/statusline/update_checker.py +129 -0
  137. moai_adk/statusline/version_reader.py +741 -0
  138. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
  139. moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
  140. moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
  141. moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
  142. moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
  143. moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
  144. moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
  145. moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
  146. moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
  147. moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
  148. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
  149. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
  150. moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
  151. moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
  152. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  153. moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
  154. moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
  155. moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
  156. moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
  157. moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
  158. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
  159. moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
  160. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
  161. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
  162. moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
  163. moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
  164. moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
  165. moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
  166. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  167. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  168. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  169. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  170. moai_adk/templates/.claude/hooks/{alfred/shared/core → moai/lib}/checkpoint.py +9 -36
  171. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  172. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  173. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  179. moai_adk/templates/.claude/hooks/{alfred/shared/core → moai/lib}/project.py +63 -44
  180. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  181. moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/timeout.py +40 -16
  182. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  183. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  184. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
  185. moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
  186. moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
  187. moai_adk/templates/.claude/settings.json +78 -50
  188. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
  189. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  190. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  191. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  192. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  193. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  194. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +312 -283
  195. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +291 -94
  196. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  197. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  198. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  199. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  200. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +469 -101
  201. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
  202. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  203. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  204. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  205. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
  206. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  207. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  208. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  209. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
  210. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  211. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  212. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  213. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  214. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  215. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  216. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
  217. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  218. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  219. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  221. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  222. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  223. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  224. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  225. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  226. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  227. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  228. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  229. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  230. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  231. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
  232. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
  233. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  253. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
  254. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
  255. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
  256. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
  257. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
  258. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
  259. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
  260. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
  261. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
  262. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
  263. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
  264. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  265. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  266. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  267. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  268. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
  269. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  270. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  271. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  272. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  273. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  274. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  275. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  276. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  277. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  278. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  279. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
  280. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  281. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  282. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  283. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  284. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  285. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  286. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
  287. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
  288. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
  289. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
  290. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
  291. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
  292. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
  293. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  294. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  295. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  296. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
  297. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  298. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  299. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  300. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  301. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  302. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
  303. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  304. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  305. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  306. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  307. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  308. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  309. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  310. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  311. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  312. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  313. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  314. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
  315. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  316. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  317. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  318. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
  319. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  320. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  321. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  322. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  323. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  324. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  325. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
  326. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  327. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  328. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  329. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  330. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
  331. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  332. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  333. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  334. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  335. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  336. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  337. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  338. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  339. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  340. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  341. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  342. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  343. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  344. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  345. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  346. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  347. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
  348. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  349. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  350. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  351. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  352. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  353. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  354. moai_adk/templates/.git-hooks/pre-commit +128 -0
  355. moai_adk/templates/.git-hooks/pre-push +220 -13
  356. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  357. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  358. moai_adk/templates/.github/workflows/spec-issue-sync.yml +0 -1
  359. moai_adk/templates/.gitignore +197 -13
  360. moai_adk/templates/.mcp.json +20 -0
  361. moai_adk/templates/.moai/cache/personalization.json +10 -0
  362. moai_adk/templates/.moai/config/config.yaml +344 -0
  363. moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
  364. moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
  365. moai_adk/templates/.moai/config/presets/team.yaml +33 -0
  366. moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
  367. moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
  368. moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
  369. moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
  370. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
  371. moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
  372. moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
  373. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  374. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  375. moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
  376. moai_adk/templates/.moai/config/sections/system.yaml +14 -0
  377. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  378. moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
  379. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  380. moai_adk/templates/CLAUDE.md +310 -1050
  381. moai_adk/utils/__init__.py +24 -2
  382. moai_adk/utils/banner.py +7 -11
  383. moai_adk/utils/common.py +294 -0
  384. moai_adk/utils/link_validator.py +241 -0
  385. moai_adk/utils/logger.py +4 -9
  386. moai_adk/utils/safe_file_reader.py +206 -0
  387. moai_adk/{templates/.claude/hooks/alfred/utils → utils}/timeout.py +8 -9
  388. moai_adk/utils/toon_utils.py +256 -0
  389. moai_adk/version.py +22 -0
  390. moai_adk-0.32.8.dist-info/METADATA +2478 -0
  391. moai_adk-0.32.8.dist-info/RECORD +396 -0
  392. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
  393. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
  394. moai_adk/cli/commands/backup.py +0 -80
  395. moai_adk/core/tags/__init__.py +0 -86
  396. moai_adk/core/tags/ci_validator.py +0 -463
  397. moai_adk/core/tags/cli.py +0 -283
  398. moai_adk/core/tags/generator.py +0 -109
  399. moai_adk/core/tags/inserter.py +0 -99
  400. moai_adk/core/tags/mapper.py +0 -126
  401. moai_adk/core/tags/parser.py +0 -76
  402. moai_adk/core/tags/pre_commit_validator.py +0 -393
  403. moai_adk/core/tags/reporter.py +0 -956
  404. moai_adk/core/tags/tags.py +0 -149
  405. moai_adk/core/tags/validator.py +0 -897
  406. moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
  407. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
  408. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
  409. moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
  410. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
  411. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
  412. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
  413. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
  414. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
  415. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
  416. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
  417. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -426
  418. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
  419. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
  420. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
  421. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
  422. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1854
  423. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -880
  424. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -793
  425. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1084
  426. moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
  427. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
  428. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
  429. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
  430. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
  431. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
  432. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
  433. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
  434. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
  435. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
  436. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
  437. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
  438. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
  439. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
  440. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
  441. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
  442. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
  443. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
  444. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
  445. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
  446. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
  447. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
  448. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
  449. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
  450. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
  451. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
  452. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
  453. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
  454. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
  455. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
  456. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
  457. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
  458. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  459. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  460. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  461. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
  462. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
  463. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
  464. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  465. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  466. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  467. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
  468. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
  469. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
  470. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  471. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  472. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  473. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
  474. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
  475. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
  476. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  477. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  478. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  479. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
  480. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
  481. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
  482. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
  483. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
  484. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
  485. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
  486. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
  487. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
  488. moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
  489. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
  490. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
  491. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
  492. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
  493. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
  494. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
  495. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
  496. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
  497. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
  498. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
  499. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
  500. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
  501. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
  502. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
  503. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  504. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  505. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  506. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  507. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  508. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  509. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
  510. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
  511. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
  512. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  513. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  514. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  515. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +0 -288
  516. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  517. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  518. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  519. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  520. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  521. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  522. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  523. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  524. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  525. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  526. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  527. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  528. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  529. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  530. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  531. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  532. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
  533. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
  534. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
  535. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
  536. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
  537. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  538. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
  539. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  540. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  541. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  542. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  543. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
  544. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  545. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
  546. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
  547. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
  548. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
  549. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
  550. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  551. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
  552. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
  553. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
  554. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  555. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  556. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
  557. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
  558. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
  559. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
  560. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
  561. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  562. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  563. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  564. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  565. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  566. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  567. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
  568. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
  569. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  570. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  571. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  572. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
  573. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
  574. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  575. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  576. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  577. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  578. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  579. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  580. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  581. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  582. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  583. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  584. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  585. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  586. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  587. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  588. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  589. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  590. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  591. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  592. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  593. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  594. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  595. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  596. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  597. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  598. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
  599. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  600. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  601. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  602. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  603. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  604. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  605. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  606. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  607. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  608. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  609. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  610. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  611. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  612. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  613. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  614. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  615. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  616. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  617. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  618. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  619. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
  620. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  621. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  622. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
  623. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  624. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  625. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  626. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  627. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  628. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
  629. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
  630. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
  631. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
  632. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
  633. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
  634. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  635. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  636. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  637. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
  638. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
  639. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
  640. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
  641. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  642. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  643. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
  644. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
  645. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
  646. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
  647. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  648. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  649. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
  650. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  651. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  652. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
  653. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
  654. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
  655. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
  656. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
  657. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
  658. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  659. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  660. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  661. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  662. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  663. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  664. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
  665. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
  666. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
  667. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
  668. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
  669. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
  670. moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
  671. moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
  672. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
  673. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
  674. moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
  675. moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
  676. moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
  677. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
  678. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
  679. moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -419
  680. moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
  681. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
  682. moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
  683. moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
  684. moai_adk/templates/.github/workflows/release.yml +0 -118
  685. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
  686. moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
  687. moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
  688. moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
  689. moai_adk/templates/.github/workflows/tag-report.yml +0 -269
  690. moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
  691. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
  692. moai_adk/templates/.moai/config.json +0 -115
  693. moai_adk/templates/workflows/go-tag-validation.yml +0 -30
  694. moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
  695. moai_adk/templates/workflows/python-tag-validation.yml +0 -42
  696. moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
  697. moai_adk-0.15.1.dist-info/METADATA +0 -3094
  698. moai_adk-0.15.1.dist-info/RECORD +0 -365
  699. {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,1269 @@
1
+ # Multi-Language Code Examples
2
+
3
+ ## Quick Start Examples
4
+
5
+ ### REST API Implementation by Language
6
+
7
+ #### Python (FastAPI)
8
+ ```python
9
+ # main.py
10
+ from fastapi import FastAPI, HTTPException, Depends
11
+ from pydantic import BaseModel
12
+ from typing import List, Optional
13
+ import asyncpg
14
+
15
+ app = FastAPI(title="User API", version="1.0.0")
16
+
17
+ # Models
18
+ class User(BaseModel):
19
+ id: int
20
+ name: str
21
+ email: str
22
+ created_at: Optional[str] = None
23
+
24
+ class CreateUserRequest(BaseModel):
25
+ name: str
26
+ email: str
27
+
28
+ # Database
29
+ DATABASE_URL = "postgresql+asyncpg://user:pass@localhost/db"
30
+
31
+ async def get_db():
32
+ return await asyncpg.connect(DATABASE_URL)
33
+
34
+ # Routes
35
+ @app.get("/users", response_model=List[User])
36
+ async def list_users():
37
+ conn = await get_db()
38
+ rows = await conn.fetch("SELECT id, name, email, created_at FROM users")
39
+ await conn.close()
40
+ return [User(dict(row)) for row in rows]
41
+
42
+ @app.get("/users/{user_id}", response_model=User)
43
+ async def get_user(user_id: int):
44
+ conn = await get_db()
45
+ row = await conn.fetchrow("SELECT id, name, email, created_at FROM users WHERE id = $1", user_id)
46
+ await conn.close()
47
+ if not row:
48
+ raise HTTPException(status_code=404, detail="User not found")
49
+ return User(dict(row))
50
+
51
+ @app.post("/users", response_model=User, status_code=201)
52
+ async def create_user(user: CreateUserRequest):
53
+ conn = await get_db()
54
+ row = await conn.fetchrow(
55
+ "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id, name, email, created_at",
56
+ user.name, user.email
57
+ )
58
+ await conn.close()
59
+ return User(dict(row))
60
+
61
+ # Run: uvicorn main:app --reload --host 0.0.0.0 --port 8000
62
+ ```
63
+
64
+ #### TypeScript (Express.js)
65
+ ```typescript
66
+ // src/app.ts
67
+ import express, { Request, Response } from 'express';
68
+ import { Pool } from 'pg';
69
+ import { z } from 'zod';
70
+
71
+ const app = express();
72
+ app.use(express.json());
73
+
74
+ // Database
75
+ const pool = new Pool({
76
+ connectionString: 'postgresql://user:pass@localhost/db'
77
+ });
78
+
79
+ // Schemas
80
+ const CreateUserSchema = z.object({
81
+ name: z.string().min(2),
82
+ email: z.string().email()
83
+ });
84
+
85
+ const UserSchema = z.object({
86
+ id: z.number(),
87
+ name: z.string(),
88
+ email: z.string(),
89
+ created_at: z.string().nullable()
90
+ });
91
+
92
+ type User = z.infer<typeof UserSchema>;
93
+ type CreateUserRequest = z.infer<typeof CreateUserSchema>;
94
+
95
+ // Routes
96
+ app.get('/users', async (req: Request, res: Response) => {
97
+ const result = await pool.query('SELECT id, name, email, created_at FROM users');
98
+ const users = result.rows.map(row => UserSchema.parse(row));
99
+ res.json(users);
100
+ });
101
+
102
+ app.get('/users/:id', async (req: Request, res: Response) => {
103
+ const { id } = req.params;
104
+ const result = await pool.query(
105
+ 'SELECT id, name, email, created_at FROM users WHERE id = $1',
106
+ [parseInt(id)]
107
+ );
108
+
109
+ if (result.rows.length === 0) {
110
+ return res.status(404).json({ error: 'User not found' });
111
+ }
112
+
113
+ const user = UserSchema.parse(result.rows[0]);
114
+ res.json(user);
115
+ });
116
+
117
+ app.post('/users', async (req: Request, res: Response) => {
118
+ try {
119
+ const createUser = CreateUserSchema.parse(req.body);
120
+ const result = await pool.query(
121
+ 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id, name, email, created_at',
122
+ [createUser.name, createUser.email]
123
+ );
124
+
125
+ const user = UserSchema.parse(result.rows[0]);
126
+ res.status(201).json(user);
127
+ } catch (error) {
128
+ if (error instanceof z.ZodError) {
129
+ res.status(400).json({ error: error.errors });
130
+ } else {
131
+ res.status(500).json({ error: 'Internal server error' });
132
+ }
133
+ }
134
+ });
135
+
136
+ const PORT = 3000;
137
+ app.listen(PORT, () => {
138
+ console.log(`Server running on port ${PORT}`);
139
+ });
140
+
141
+ // Run: npm install express pg zod && npm run dev
142
+ ```
143
+
144
+ #### Go (Fiber)
145
+ ```go
146
+ // main.go
147
+ package main
148
+
149
+ import (
150
+ "context"
151
+ "database/sql"
152
+ "encoding/json"
153
+ "fmt"
154
+ "log"
155
+ "net/http"
156
+ "time"
157
+
158
+ "github.com/gofiber/fiber/v3"
159
+ "github.com/jackc/pgx/v5/pgxpool"
160
+ )
161
+
162
+ type User struct {
163
+ ID int `json:"id"`
164
+ Name string `json:"name"`
165
+ Email string `json:"email"`
166
+ CreatedAt time.Time `json:"created_at,omitempty"`
167
+ }
168
+
169
+ type CreateUserRequest struct {
170
+ Name string `json:"name"`
171
+ Email string `json:"email"`
172
+ }
173
+
174
+ var pool *pgxpool.Pool
175
+
176
+ func main() {
177
+ // Database
178
+ var err error
179
+ pool, err = pgxpool.New(context.Background(), "postgres://user:pass@localhost/db")
180
+ if err != nil {
181
+ log.Fatal(err)
182
+ }
183
+ defer pool.Close()
184
+
185
+ // Fiber app
186
+ app := fiber.New()
187
+
188
+ // Routes
189
+ app.Get("/users", listUsers)
190
+ app.Get("/users/:id", getUser)
191
+ app.Post("/users", createUser)
192
+
193
+ log.Fatal(app.Listen(":3000"))
194
+ }
195
+
196
+ func listUsers(c fiber.Ctx) error {
197
+ rows, err := pool.Query(context.Background(), "SELECT id, name, email, created_at FROM users")
198
+ if err != nil {
199
+ return c.Status(500).JSON(fiber.Map{"error": err.Error()})
200
+ }
201
+ defer rows.Close()
202
+
203
+ var users []User
204
+ for rows.Next() {
205
+ var user User
206
+ err := rows.Scan(&user.ID, &user.Name, &user.Email, &user.CreatedAt)
207
+ if err != nil {
208
+ return c.Status(500).JSON(fiber.Map{"error": err.Error()})
209
+ }
210
+ users = append(users, user)
211
+ }
212
+
213
+ return c.JSON(users)
214
+ }
215
+
216
+ func getUser(c fiber.Ctx) error {
217
+ id, err := c.ParamsInt("id")
218
+ if err != nil {
219
+ return c.Status(400).JSON(fiber.Map{"error": "Invalid user ID"})
220
+ }
221
+
222
+ var user User
223
+ err = pool.QueryRow(context.Background(),
224
+ "SELECT id, name, email, created_at FROM users WHERE id = $1", id).
225
+ Scan(&user.ID, &user.Name, &user.Email, &user.CreatedAt)
226
+
227
+ if err == sql.ErrNoRows {
228
+ return c.Status(404).JSON(fiber.Map{"error": "User not found"})
229
+ }
230
+ if err != nil {
231
+ return c.Status(500).JSON(fiber.Map{"error": err.Error()})
232
+ }
233
+
234
+ return c.JSON(user)
235
+ }
236
+
237
+ func createUser(c fiber.Ctx) error {
238
+ var req CreateUserRequest
239
+ if err := c.BodyParser(&req); err != nil {
240
+ return c.Status(400).JSON(fiber.Map{"error": err.Error()})
241
+ }
242
+
243
+ var user User
244
+ err := pool.QueryRow(context.Background(),
245
+ "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id, name, email, created_at",
246
+ req.Name, req.Email).
247
+ Scan(&user.ID, &user.Name, &user.Email, &user.CreatedAt)
248
+
249
+ if err != nil {
250
+ return c.Status(500).JSON(fiber.Map{"error": err.Error()})
251
+ }
252
+
253
+ return c.Status(201).JSON(user)
254
+ }
255
+
256
+ // Run: go mod init user-api && go get github.com/gofiber/fiber/v3 github.com/jackc/pgx/v5 && go run main.go
257
+ ```
258
+
259
+ #### Rust (Axum)
260
+ ```rust
261
+ // src/main.rs
262
+ use axum::{
263
+ extract::{Path, State},
264
+ http::StatusCode,
265
+ response::Json,
266
+ routing::get,
267
+ Router,
268
+ };
269
+ use serde::{Deserialize, Serialize};
270
+ use sqlx::{postgres::PgPoolOptions, PgPool};
271
+ use std::net::SocketAddr;
272
+
273
+ #[derive(Debug, Serialize, Deserialize)]
274
+ struct User {
275
+ id: i32,
276
+ name: String,
277
+ email: String,
278
+ created_at: Option<String>,
279
+ }
280
+
281
+ #[derive(Debug, Deserialize)]
282
+ struct CreateUserRequest {
283
+ name: String,
284
+ email: String,
285
+ }
286
+
287
+ #[derive(Clone)]
288
+ struct AppState {
289
+ db: PgPool,
290
+ }
291
+
292
+ #[tokio::main]
293
+ async fn main() {
294
+ // Database
295
+ let pool = PgPoolOptions::new()
296
+ .max_connections(5)
297
+ .connect("postgres://user:pass@localhost/db")
298
+ .await
299
+ .expect("Failed to connect to database");
300
+
301
+ let state = AppState { db: pool };
302
+
303
+ // Routes
304
+ let app = Router::new()
305
+ .route("/users", get(list_users).post(create_user))
306
+ .route("/users/:id", get(get_user))
307
+ .with_state(state);
308
+
309
+ // Server
310
+ let addr = SocketAddr::from(([0, 0, 0, 0], 3000));
311
+ println!("Server listening on {}", addr);
312
+
313
+ axum::Server::bind(&addr)
314
+ .serve(app.into_make_service())
315
+ .await
316
+ .unwrap();
317
+ }
318
+
319
+ async fn list_users(State(state): State<AppState>) -> Json<Vec<User>> {
320
+ let users = sqlx::query_as!(
321
+ User,
322
+ "SELECT id, name, email, TO_CHAR(created_at, 'YYYY-MM-DD HH24:MI:SS') as created_at FROM users"
323
+ )
324
+ .fetch_all(&state.db)
325
+ .await
326
+ .expect("Failed to fetch users");
327
+
328
+ Json(users)
329
+ }
330
+
331
+ async fn get_user(
332
+ State(state): State<AppState>,
333
+ Path(user_id): Path<i32>,
334
+ ) -> Result<Json<User>, StatusCode> {
335
+ let user = sqlx::query_as!(
336
+ User,
337
+ "SELECT id, name, email, TO_CHAR(created_at, 'YYYY-MM-DD HH24:MI:SS') as created_at FROM users WHERE id = $1",
338
+ user_id
339
+ )
340
+ .fetch_optional(&state.db)
341
+ .await
342
+ .expect("Failed to fetch user");
343
+
344
+ match user {
345
+ Some(user) => Ok(Json(user)),
346
+ None => Err(StatusCode::NOT_FOUND),
347
+ }
348
+ }
349
+
350
+ async fn create_user(
351
+ State(state): State<AppState>,
352
+ Json(payload): Json<CreateUserRequest>,
353
+ ) -> Result<Json<User>, StatusCode> {
354
+ let user = sqlx::query_as!(
355
+ User,
356
+ r#"
357
+ INSERT INTO users (name, email)
358
+ VALUES ($1, $2)
359
+ RETURNING id, name, email, TO_CHAR(created_at, 'YYYY-MM-DD HH24:MI:SS') as created_at
360
+ "#,
361
+ payload.name,
362
+ payload.email
363
+ )
364
+ .fetch_one(&state.db)
365
+ .await
366
+ .expect("Failed to create user");
367
+
368
+ Ok(Json(user))
369
+ }
370
+
371
+ // Cargo.toml dependencies:
372
+ // axum = "0.8"
373
+ // sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "chrono"] }
374
+ // serde = { version = "1.0", features = ["derive"] }
375
+ // tokio = { version = "1.0", features = ["full"] }
376
+ ```
377
+
378
+ ## Cross-Language Communication
379
+
380
+ ### gRPC Service Implementation
381
+
382
+ #### Go Server
383
+ ```go
384
+ // server.go
385
+ package main
386
+
387
+ import (
388
+ "context"
389
+ "log"
390
+ "net"
391
+
392
+ pb "github.com/yourorg/user-service/proto"
393
+ "google.golang.org/grpc"
394
+ )
395
+
396
+ type server struct {
397
+ pb.UnimplementedUserServiceServer
398
+ }
399
+
400
+ func (s *server) GetUser(ctx context.Context, req *pb.GetUserRequest) (*pb.UserResponse, error) {
401
+ // Business logic
402
+ return &pb.UserResponse{
403
+ Id: req.Id,
404
+ Name: "John Doe",
405
+ Email: "john@example.com",
406
+ }, nil
407
+ }
408
+
409
+ func main() {
410
+ lis, err := net.Listen("tcp", ":50051")
411
+ if err != nil {
412
+ log.Fatal(err)
413
+ }
414
+
415
+ s := grpc.NewServer()
416
+ pb.RegisterUserServiceServer(s, &server{})
417
+
418
+ log.Println("gRPC server listening on :50051")
419
+ if err := s.Serve(lis); err != nil {
420
+ log.Fatal(err)
421
+ }
422
+ }
423
+ ```
424
+
425
+ #### Python Client
426
+ ```python
427
+ # client.py
428
+ import grpc
429
+ from generated import user_pb2, user_pb2_grpc
430
+
431
+ def get_user(user_id: int):
432
+ with grpc.insecure_channel('localhost:50051') as channel:
433
+ stub = user_pb2_grpc.UserServiceStub(channel)
434
+ request = user_pb2.GetUserRequest(id=user_id)
435
+ response = stub.GetUser(request)
436
+ return response
437
+
438
+ # Usage
439
+ user = get_user(123)
440
+ print(f"User: {user.name}, Email: {user.email}")
441
+ ```
442
+
443
+ #### Rust Client
444
+ ```rust
445
+ // client.rs
446
+ use tonic::transport::Channel;
447
+ use proto::user_service_client::UserServiceClient;
448
+ use proto::GetUserRequest;
449
+
450
+ #[tokio::main]
451
+ async fn main() -> Result<(), Box<dyn std::error::Error>> {
452
+ let mut client = UserServiceClient::connect("http://[::1]:50051").await?;
453
+
454
+ let request = tonic::Request::new(GetUserRequest {
455
+ id: 123,
456
+ });
457
+
458
+ let response = client.get_user(request).await?;
459
+ println!("Response: {:?}", response.get_ref());
460
+
461
+ Ok(())
462
+ }
463
+ ```
464
+
465
+ ## Data Processing Examples
466
+
467
+ ### JSON Processing
468
+
469
+ #### Python (FastAPI)
470
+ ```python
471
+ import json
472
+ from typing import List, Dict, Any
473
+ from pathlib import Path
474
+
475
+ def process_json_data(file_path: str) -> List[Dict[str, Any]]:
476
+ """Process JSON file and return structured data"""
477
+ with open(file_path, 'r') as f:
478
+ data = json.load(f)
479
+
480
+ # Transform data
481
+ processed = []
482
+ for item in data:
483
+ processed.append({
484
+ 'id': item['id'],
485
+ 'name': item['name'].upper(),
486
+ 'email': item['email'].lower(),
487
+ 'processed_at': datetime.now().isoformat()
488
+ })
489
+
490
+ return processed
491
+
492
+ # Async batch processing
493
+ async def process_large_json_async(file_path: str) -> List[Dict]:
494
+ with open(file_path, 'r') as f:
495
+ data = json.load(f)
496
+
497
+ # Process in batches
498
+ batch_size = 1000
499
+ results = []
500
+
501
+ for i in range(0, len(data), batch_size):
502
+ batch = data[i:i + batch_size]
503
+ batch_results = await process_batch(batch)
504
+ results.extend(batch_results)
505
+
506
+ return results
507
+ ```
508
+
509
+ #### JavaScript (Node.js)
510
+ ```javascript
511
+ // jsonProcessor.js
512
+ const fs = require('fs').promises;
513
+ const { pipeline } = require('stream/promises');
514
+ const { createReadStream, createWriteStream } = require('fs');
515
+
516
+ async function processJsonFile(inputPath, outputPath) {
517
+ const readStream = createReadStream(inputPath, { encoding: 'utf8' });
518
+ const writeStream = createWriteStream(outputPath, { encoding: 'utf8' });
519
+
520
+ let buffer = '';
521
+ let isFirstLine = true;
522
+
523
+ // Process line by line for memory efficiency
524
+ for await (const chunk of readStream) {
525
+ buffer += chunk;
526
+ let lineEnd = buffer.indexOf('\n');
527
+
528
+ while (lineEnd >= 0) {
529
+ const line = buffer.slice(0, lineEnd);
530
+ buffer = buffer.slice(lineEnd + 1);
531
+ lineEnd = buffer.indexOf('\n');
532
+
533
+ try {
534
+ const data = JSON.parse(line);
535
+ const processed = {
536
+ id: data.id,
537
+ name: data.name.toUpperCase(),
538
+ email: data.email.toLowerCase(),
539
+ processedAt: new Date().toISOString()
540
+ };
541
+
542
+ if (!isFirstLine) {
543
+ writeStream.write(',\n');
544
+ }
545
+ isFirstLine = false;
546
+ writeStream.write(JSON.stringify(processed));
547
+ } catch (error) {
548
+ console.error('Error processing line:', error.message);
549
+ }
550
+ }
551
+ }
552
+
553
+ writeStream.end();
554
+ }
555
+
556
+ // Usage
557
+ processJsonFile('input.json', 'output.json')
558
+ .then(() => console.log('Processing complete'))
559
+ .catch(console.error);
560
+ ```
561
+
562
+ #### Go
563
+ ```go
564
+ // jsonProcessor.go
565
+ package main
566
+
567
+ import (
568
+ "encoding/json"
569
+ "fmt"
570
+ "io"
571
+ "os"
572
+ "strings"
573
+ )
574
+
575
+ type InputData struct {
576
+ ID int `json:"id"`
577
+ Name string `json:"name"`
578
+ Email string `json:"email"`
579
+ }
580
+
581
+ type ProcessedData struct {
582
+ ID int `json:"id"`
583
+ Name string `json:"name"`
584
+ Email string `json:"email"`
585
+ ProcessedAt string `json:"processed_at"`
586
+ }
587
+
588
+ func processJSONFile(inputPath, outputPath string) error {
589
+ file, err := os.Open(inputPath)
590
+ if err != nil {
591
+ return err
592
+ }
593
+ defer file.Close()
594
+
595
+ outputFile, err := os.Create(outputPath)
596
+ if err != nil {
597
+ return err
598
+ }
599
+ defer outputFile.Close()
600
+
601
+ decoder := json.NewDecoder(file)
602
+
603
+ outputFile.WriteString("[\n")
604
+ isFirst := true
605
+
606
+ for decoder.More() {
607
+ var data InputData
608
+ if err := decoder.Decode(&data); err != nil {
609
+ return err
610
+ }
611
+
612
+ processed := ProcessedData{
613
+ ID: data.ID,
614
+ Name: strings.ToUpper(data.Name),
615
+ Email: strings.ToLower(data.Email),
616
+ ProcessedAt: time.Now().Format(time.RFC3339),
617
+ }
618
+
619
+ if !isFirst {
620
+ outputFile.WriteString(",\n")
621
+ }
622
+ isFirst = false
623
+
624
+ jsonData, err := json.MarshalIndent(processed, "", " ")
625
+ if err != nil {
626
+ return err
627
+ }
628
+ outputFile.Write(jsonData)
629
+ }
630
+
631
+ outputFile.WriteString("\n]")
632
+ return nil
633
+ }
634
+
635
+ func main() {
636
+ err := processJSONFile("input.json", "output.json")
637
+ if err != nil {
638
+ fmt.Printf("Error: %v\n", err)
639
+ os.Exit(1)
640
+ }
641
+ fmt.Println("Processing complete")
642
+ }
643
+ ```
644
+
645
+ ## Testing Examples
646
+
647
+ ### Unit Testing
648
+
649
+ #### Python (pytest)
650
+ ```python
651
+ # test_user_service.py
652
+ import pytest
653
+ from unittest.mock import Mock, patch
654
+ from user_service import UserService, UserNotFoundError
655
+
656
+ @pytest.fixture
657
+ def user_service():
658
+ return UserService()
659
+
660
+ @pytest.fixture
661
+ def mock_db():
662
+ return Mock()
663
+
664
+ def test_create_user_success(user_service, mock_db):
665
+ # Setup
666
+ user_data = {"name": "John Doe", "email": "john@example.com"}
667
+ mock_db.insert.return_value = {"id": 1, user_data}
668
+
669
+ # Test
670
+ with patch.object(user_service, 'db', mock_db):
671
+ result = user_service.create_user(user_data)
672
+
673
+ # Assert
674
+ assert result["id"] == 1
675
+ assert result["name"] == "John Doe"
676
+ mock_db.insert.assert_called_once_with(user_data)
677
+
678
+ def test_get_user_not_found(user_service, mock_db):
679
+ # Setup
680
+ user_id = 999
681
+ mock_db.get.return_value = None
682
+
683
+ # Test
684
+ with patch.object(user_service, 'db', mock_db):
685
+ with pytest.raises(UserNotFoundError):
686
+ user_service.get_user(user_id)
687
+
688
+ # Assert
689
+ mock_db.get.assert_called_once_with(user_id)
690
+
691
+ @pytest.mark.asyncio
692
+ async def test_async_user_operations(user_service, mock_db):
693
+ # Setup
694
+ user_data = {"name": "Jane Doe", "email": "jane@example.com"}
695
+ mock_db.async_insert.return_value = {"id": 2, user_data}
696
+
697
+ # Test
698
+ with patch.object(user_service, 'db', mock_db):
699
+ result = await user_service.create_user_async(user_data)
700
+
701
+ # Assert
702
+ assert result["id"] == 2
703
+ assert result["name"] == "Jane Doe"
704
+ ```
705
+
706
+ #### JavaScript (Vitest)
707
+ ```javascript
708
+ // userService.test.js
709
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
710
+ import { UserService, UserNotFoundError } from './userService.js';
711
+
712
+ describe('UserService', () => {
713
+ let userService;
714
+ let mockDb;
715
+
716
+ beforeEach(() => {
717
+ mockDb = {
718
+ insert: vi.fn(),
719
+ get: vi.fn(),
720
+ update: vi.fn(),
721
+ delete: vi.fn()
722
+ };
723
+ userService = new UserService(mockDb);
724
+ });
725
+
726
+ it('should create user successfully', async () => {
727
+ // Setup
728
+ const userData = { name: 'John Doe', email: 'john@example.com' };
729
+ const expectedUser = { id: 1, ...userData };
730
+ mockDb.insert.mockResolvedValue(expectedUser);
731
+
732
+ // Test
733
+ const result = await userService.createUser(userData);
734
+
735
+ // Assert
736
+ expect(result).toEqual(expectedUser);
737
+ expect(mockDb.insert).toHaveBeenCalledWith(userData);
738
+ expect(mockDb.insert).toHaveBeenCalledTimes(1);
739
+ });
740
+
741
+ it('should throw UserNotFoundError when user not found', async () => {
742
+ // Setup
743
+ const userId = 999;
744
+ mockDb.get.mockResolvedValue(null);
745
+
746
+ // Test & Assert
747
+ await expect(userService.getUser(userId))
748
+ .rejects
749
+ .toThrow(UserNotFoundError);
750
+
751
+ expect(mockDb.get).toHaveBeenCalledWith(userId);
752
+ });
753
+
754
+ it('should handle database errors gracefully', async () => {
755
+ // Setup
756
+ const userData = { name: 'Jane Doe', email: 'jane@example.com' };
757
+ mockDb.insert.mockRejectedValue(new Error('Database connection failed'));
758
+
759
+ // Test & Assert
760
+ await expect(userService.createUser(userData))
761
+ .rejects
762
+ .toThrow('Database connection failed');
763
+ });
764
+ });
765
+ ```
766
+
767
+ #### Go
768
+ ```go
769
+ // user_service_test.go
770
+ package main
771
+
772
+ import (
773
+ "errors"
774
+ "testing"
775
+ "github.com/stretchr/testify/assert"
776
+ "github.com/stretchr/testify/mock"
777
+ )
778
+
779
+ type MockDB struct {
780
+ mock.Mock
781
+ }
782
+
783
+ func (m *MockDB) Insert(user map[string]interface{}) (map[string]interface{}, error) {
784
+ args := m.Called(user)
785
+ return args.Get(0).(map[string]interface{}), args.Error(1)
786
+ }
787
+
788
+ func (m *MockDB) Get(id int) (map[string]interface{}, error) {
789
+ args := m.Called(id)
790
+ return args.Get(0).(map[string]interface{}), args.Error(1)
791
+ }
792
+
793
+ func TestCreateUser_Success(t *testing.T) {
794
+ // Setup
795
+ mockDB := new(MockDB)
796
+ userService := NewUserService(mockDB)
797
+
798
+ userData := map[string]interface{}{
799
+ "name": "John Doe",
800
+ "email": "john@example.com",
801
+ }
802
+ expectedUser := map[string]interface{}{
803
+ "id": 1,
804
+ "name": "John Doe",
805
+ "email": "john@example.com",
806
+ }
807
+
808
+ mockDB.On("Insert", userData).Return(expectedUser, nil)
809
+
810
+ // Test
811
+ result, err := userService.CreateUser(userData)
812
+
813
+ // Assert
814
+ assert.NoError(t, err)
815
+ assert.Equal(t, expectedUser, result)
816
+ mockDB.AssertExpectations(t)
817
+ }
818
+
819
+ func TestGetUser_NotFound(t *testing.T) {
820
+ // Setup
821
+ mockDB := new(MockDB)
822
+ userService := NewUserService(mockDB)
823
+ userID := 999
824
+
825
+ mockDB.On("Get", userID).Return(nil, errors.New("user not found"))
826
+
827
+ // Test
828
+ _, err := userService.GetUser(userID)
829
+
830
+ // Assert
831
+ assert.Error(t, err)
832
+ assert.Contains(t, err.Error(), "user not found")
833
+ mockDB.AssertExpectations(t)
834
+ }
835
+
836
+ func BenchmarkCreateUser(b *testing.B) {
837
+ // Setup
838
+ mockDB := new(MockDB)
839
+ userService := NewUserService(mockDB)
840
+ userData := map[string]interface{}{
841
+ "name": "Benchmark User",
842
+ "email": "benchmark@example.com",
843
+ }
844
+ expectedUser := map[string]interface{}{
845
+ "id": 1,
846
+ "name": "Benchmark User",
847
+ "email": "benchmark@example.com",
848
+ }
849
+
850
+ mockDB.On("Insert", userData).Return(expectedUser, nil)
851
+
852
+ // Benchmark
853
+ b.ResetTimer()
854
+ for i := 0; i < b.N; i++ {
855
+ _, _ = userService.CreateUser(userData)
856
+ }
857
+ }
858
+ ```
859
+
860
+ #### Rust
861
+ ```rust
862
+ // src/user_service_test.rs
863
+ #[cfg(test)]
864
+ mod tests {
865
+ use super::*;
866
+ use tokio_test;
867
+
868
+ #[derive(Debug)]
869
+ struct MockDB {
870
+ users: std::cell::RefCell<HashMap<i32, User>>,
871
+ next_id: std::cell::Cell<i32>,
872
+ }
873
+
874
+ impl MockDB {
875
+ fn new() -> Self {
876
+ Self {
877
+ users: std::cell::RefCell::new(HashMap::new()),
878
+ next_id: std::cell::Cell::new(1),
879
+ }
880
+ }
881
+
882
+ async fn create_user(&self, user: CreateUserRequest) -> User {
883
+ let id = self.next_id.get();
884
+ self.next_id.set(id + 1);
885
+
886
+ let user = User {
887
+ id,
888
+ name: user.name,
889
+ email: user.email,
890
+ created_at: Some(chrono::Utc::now().to_string()),
891
+ };
892
+
893
+ self.users.borrow_mut().insert(id, user.clone());
894
+ user
895
+ }
896
+
897
+ async fn get_user(&self, id: i32) -> Option<User> {
898
+ self.users.borrow().get(&id).cloned()
899
+ }
900
+ }
901
+
902
+ #[tokio::test]
903
+ async fn test_create_user_success() {
904
+ // Setup
905
+ let mock_db = MockDB::new();
906
+ let user_request = CreateUserRequest {
907
+ name: "John Doe".to_string(),
908
+ email: "john@example.com".to_string(),
909
+ };
910
+
911
+ // Test
912
+ let result = mock_db.create_user(user_request.clone()).await;
913
+
914
+ // Assert
915
+ assert_eq!(result.name, "John Doe");
916
+ assert_eq!(result.email, "john@example.com");
917
+ assert_eq!(result.id, 1);
918
+ assert!(result.created_at.is_some());
919
+ }
920
+
921
+ #[tokio::test]
922
+ async fn test_get_user_not_found() {
923
+ // Setup
924
+ let mock_db = MockDB::new();
925
+ let non_existent_id = 999;
926
+
927
+ // Test
928
+ let result = mock_db.get_user(non_existent_id).await;
929
+
930
+ // Assert
931
+ assert!(result.is_none());
932
+ }
933
+
934
+ #[tokio::test]
935
+ async fn test_get_user_success() {
936
+ // Setup
937
+ let mock_db = MockDB::new();
938
+ let user_request = CreateUserRequest {
939
+ name: "Jane Doe".to_string(),
940
+ email: "jane@example.com".to_string(),
941
+ };
942
+
943
+ let created_user = mock_db.create_user(user_request.clone()).await;
944
+
945
+ // Test
946
+ let result = mock_db.get_user(created_user.id).await;
947
+
948
+ // Assert
949
+ assert!(result.is_some());
950
+ let user = result.unwrap();
951
+ assert_eq!(user.name, "Jane Doe");
952
+ assert_eq!(user.email, "jane@example.com");
953
+ }
954
+ }
955
+ ```
956
+
957
+ ## Deployment Examples
958
+
959
+ ### Docker Multi-Stage Builds
960
+
961
+ #### Python Dockerfile
962
+ ```dockerfile
963
+ # Dockerfile.python
964
+ FROM python:3.13-slim as builder
965
+
966
+ WORKDIR /app
967
+ COPY requirements.txt .
968
+ RUN pip install --no-cache-dir --user -r requirements.txt
969
+
970
+ FROM python:3.13-slim as runtime
971
+
972
+ WORKDIR /app
973
+ COPY --from=builder /root/.local /root/.local
974
+ COPY . .
975
+
976
+ ENV PATH=/root/.local/bin:$PATH
977
+
978
+ EXPOSE 8000
979
+ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
980
+ ```
981
+
982
+ #### Go Dockerfile
983
+ ```dockerfile
984
+ # Dockerfile.go
985
+ FROM golang:1.23-alpine AS builder
986
+
987
+ WORKDIR /app
988
+ COPY go.mod go.sum ./
989
+ RUN go mod download
990
+ COPY . .
991
+ RUN CGO_ENABLED=0 GOOS=linux go build -o main .
992
+
993
+ FROM alpine:latest
994
+ RUN apk --no-cache add ca-certificates tzdata
995
+ WORKDIR /root/
996
+ COPY --from=builder /app/main .
997
+ EXPOSE 3000
998
+ CMD ["./main"]
999
+ ```
1000
+
1001
+ #### Rust Dockerfile
1002
+ ```dockerfile
1003
+ # Dockerfile.rust
1004
+ FROM rust:1.91-alpine AS builder
1005
+
1006
+ WORKDIR /app
1007
+ COPY Cargo.toml Cargo.lock ./
1008
+ RUN mkdir src && echo "fn main() {}" > src/main.rs
1009
+ RUN cargo build --release
1010
+ RUN rm -rf src
1011
+
1012
+ COPY . .
1013
+ RUN touch src/main.rs && cargo build --release
1014
+
1015
+ FROM alpine:latest
1016
+ RUN apk --no-cache add ca-certificates tzdata
1017
+ WORKDIR /app
1018
+ COPY --from=builder /app/target/release/service .
1019
+ EXPOSE 3000
1020
+ CMD ["./service"]
1021
+ ```
1022
+
1023
+ ### Kubernetes Deployment
1024
+
1025
+ #### Python Deployment
1026
+ ```yaml
1027
+ # k8s-python.yaml
1028
+ apiVersion: apps/v1
1029
+ kind: Deployment
1030
+ metadata:
1031
+ name: python-api
1032
+ spec:
1033
+ replicas: 3
1034
+ selector:
1035
+ matchLabels:
1036
+ app: python-api
1037
+ template:
1038
+ metadata:
1039
+ labels:
1040
+ app: python-api
1041
+ spec:
1042
+ containers:
1043
+ - name: python-api
1044
+ image: your-registry/python-api:latest
1045
+ ports:
1046
+ - containerPort: 8000
1047
+ env:
1048
+ - name: DATABASE_URL
1049
+ valueFrom:
1050
+ secretKeyRef:
1051
+ name: db-secret
1052
+ key: url
1053
+ resources:
1054
+ requests:
1055
+ memory: "256Mi"
1056
+ cpu: "250m"
1057
+ limits:
1058
+ memory: "512Mi"
1059
+ cpu: "500m"
1060
+ ---
1061
+ apiVersion: v1
1062
+ kind: Service
1063
+ metadata:
1064
+ name: python-api-service
1065
+ spec:
1066
+ selector:
1067
+ app: python-api
1068
+ ports:
1069
+ - port: 80
1070
+ targetPort: 8000
1071
+ type: LoadBalancer
1072
+ ```
1073
+
1074
+ #### Go Deployment
1075
+ ```yaml
1076
+ # k8s-go.yaml
1077
+ apiVersion: apps/v1
1078
+ kind: Deployment
1079
+ metadata:
1080
+ name: go-api
1081
+ spec:
1082
+ replicas: 2
1083
+ selector:
1084
+ matchLabels:
1085
+ app: go-api
1086
+ template:
1087
+ metadata:
1088
+ labels:
1089
+ app: go-api
1090
+ spec:
1091
+ containers:
1092
+ - name: go-api
1093
+ image: your-registry/go-api:latest
1094
+ ports:
1095
+ - containerPort: 3000
1096
+ env:
1097
+ - name: DB_HOST
1098
+ value: postgres-service
1099
+ - name: DB_PORT
1100
+ value: "5432"
1101
+ resources:
1102
+ requests:
1103
+ memory: "64Mi"
1104
+ cpu: "100m"
1105
+ limits:
1106
+ memory: "128Mi"
1107
+ cpu: "200m"
1108
+ livenessProbe:
1109
+ httpGet:
1110
+ path: /health
1111
+ port: 3000
1112
+ initialDelaySeconds: 10
1113
+ periodSeconds: 30
1114
+ ---
1115
+ apiVersion: v1
1116
+ kind: Service
1117
+ metadata:
1118
+ name: go-api-service
1119
+ spec:
1120
+ selector:
1121
+ app: go-api
1122
+ ports:
1123
+ - port: 80
1124
+ targetPort: 3000
1125
+ type: LoadBalancer
1126
+ ```
1127
+
1128
+ ## Microservices Communication
1129
+
1130
+ ### Message Queue Patterns
1131
+
1132
+ #### RabbitMQ Producer (Python)
1133
+ ```python
1134
+ # producer.py
1135
+ import pika
1136
+ import json
1137
+ import asyncio
1138
+
1139
+ class MessageProducer:
1140
+ def __init__(self, connection_params):
1141
+ self.connection = pika.BlockingConnection(connection_params)
1142
+ self.channel = self.connection.channel()
1143
+
1144
+ # Declare queue
1145
+ self.channel.queue_declare(queue='user_events', durable=True)
1146
+
1147
+ def publish_user_event(self, event_type, user_data):
1148
+ message = {
1149
+ 'event_type': event_type,
1150
+ 'user': user_data,
1151
+ 'timestamp': datetime.now().isoformat()
1152
+ }
1153
+
1154
+ self.channel.basic_publish(
1155
+ exchange='',
1156
+ routing_key='user_events',
1157
+ body=json.dumps(message),
1158
+ properties=pika.BasicProperties(
1159
+ delivery_mode=2, # make message persistent
1160
+ ))
1161
+
1162
+ print(f" [x] Sent {event_type} event")
1163
+
1164
+ def close(self):
1165
+ self.connection.close()
1166
+
1167
+ # Usage
1168
+ producer = MessageProducer(pika.ConnectionParameters('localhost'))
1169
+ producer.publish_user_event('user_created', {'id': 123, 'name': 'John Doe'})
1170
+ producer.close()
1171
+ ```
1172
+
1173
+ #### RabbitMQ Consumer (Go)
1174
+ ```go
1175
+ // consumer.go
1176
+ package main
1177
+
1178
+ import (
1179
+ "encoding/json"
1180
+ "log"
1181
+ "github.com/streadway/amqp"
1182
+ )
1183
+
1184
+ type UserEvent struct {
1185
+ EventType string `json:"event_type"`
1186
+ User interface{} `json:"user"`
1187
+ Timestamp string `json:"timestamp"`
1188
+ }
1189
+
1190
+ func main() {
1191
+ conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
1192
+ if err != nil {
1193
+ log.Fatal(err)
1194
+ }
1195
+ defer conn.Close()
1196
+
1197
+ ch, err := conn.Channel()
1198
+ if err != nil {
1199
+ log.Fatal(err)
1200
+ }
1201
+ defer ch.Close()
1202
+
1203
+ q, err := ch.QueueDeclare(
1204
+ "user_events", // name
1205
+ true, // durable
1206
+ false, // delete when unused
1207
+ false, // exclusive
1208
+ false, // no-wait
1209
+ nil, // arguments
1210
+ )
1211
+ if err != nil {
1212
+ log.Fatal(err)
1213
+ }
1214
+
1215
+ msgs, err := ch.Consume(
1216
+ q.Name, // queue
1217
+ "", // consumer
1218
+ true, // auto-ack
1219
+ false, // exclusive
1220
+ false, // no-local
1221
+ false, // no-wait
1222
+ nil, // args
1223
+ )
1224
+ if err != nil {
1225
+ log.Fatal(err)
1226
+ }
1227
+
1228
+ log.Println("Waiting for messages. To exit press CTRL+C")
1229
+
1230
+ forever := make(chan bool)
1231
+
1232
+ go func() {
1233
+ for d := range msgs {
1234
+ log.Printf("Received a message: %s", d.Body)
1235
+
1236
+ var event UserEvent
1237
+ if err := json.Unmarshal(d.Body, &event); err != nil {
1238
+ log.Printf("Error parsing message: %v", err)
1239
+ continue
1240
+ }
1241
+
1242
+ log.Printf("Event type: %s, User: %v", event.EventType, event.User)
1243
+
1244
+ // Process the event
1245
+ handleUserEvent(event)
1246
+ }
1247
+ }()
1248
+
1249
+ <-forever
1250
+ }
1251
+
1252
+ func handleUserEvent(event UserEvent) {
1253
+ switch event.EventType {
1254
+ case "user_created":
1255
+ log.Println("Handling user creation event")
1256
+ case "user_updated":
1257
+ log.Println("Handling user update event")
1258
+ case "user_deleted":
1259
+ log.Println("Handling user deletion event")
1260
+ default:
1261
+ log.Printf("Unknown event type: %s", event.EventType)
1262
+ }
1263
+ }
1264
+ ```
1265
+
1266
+ ---
1267
+
1268
+ Last Updated: 2025-11-25
1269
+ Version: 1.0.0