moai-adk 0.15.0__py3-none-any.whl → 0.25.4__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 (417) hide show
  1. moai_adk/__init__.py +1 -2
  2. moai_adk/__main__.py +85 -2
  3. moai_adk/cli/__init__.py +0 -1
  4. moai_adk/cli/commands/__init__.py +0 -1
  5. moai_adk/cli/commands/analyze.py +127 -0
  6. moai_adk/cli/commands/backup.py +5 -3
  7. moai_adk/cli/commands/doctor.py +35 -11
  8. moai_adk/cli/commands/improve_user_experience.py +348 -0
  9. moai_adk/cli/commands/init.py +150 -23
  10. moai_adk/cli/commands/language.py +269 -0
  11. moai_adk/cli/commands/migrate.py +158 -0
  12. moai_adk/cli/commands/status.py +13 -12
  13. moai_adk/cli/commands/update.py +364 -60
  14. moai_adk/cli/commands/validate_links.py +118 -0
  15. moai_adk/cli/main.py +3 -2
  16. moai_adk/cli/prompts/init_prompts.py +79 -82
  17. moai_adk/core/__init__.py +0 -1
  18. moai_adk/core/analysis/__init__.py +9 -0
  19. moai_adk/core/analysis/session_analyzer.py +439 -0
  20. moai_adk/core/claude_integration.py +421 -0
  21. moai_adk/core/command_helpers.py +270 -0
  22. moai_adk/core/config/__init__.py +6 -0
  23. moai_adk/core/config/auto_spec_config.py +346 -0
  24. moai_adk/core/config/migration.py +133 -12
  25. moai_adk/core/context_manager.py +279 -0
  26. moai_adk/core/diagnostics/slash_commands.py +0 -1
  27. moai_adk/core/error_recovery_system.py +1289 -0
  28. moai_adk/core/git/__init__.py +0 -1
  29. moai_adk/core/git/branch.py +0 -1
  30. moai_adk/core/git/branch_manager.py +4 -4
  31. moai_adk/core/git/checkpoint.py +1 -5
  32. moai_adk/core/git/commit.py +0 -1
  33. moai_adk/core/git/event_detector.py +3 -5
  34. moai_adk/core/git/manager.py +0 -1
  35. moai_adk/core/hooks/post_tool_auto_spec_completion.py +925 -0
  36. moai_adk/core/integration/__init__.py +22 -0
  37. moai_adk/core/integration/engine.py +169 -0
  38. moai_adk/core/integration/integration_tester.py +225 -0
  39. moai_adk/core/integration/models.py +88 -0
  40. moai_adk/core/integration/utils.py +211 -0
  41. moai_adk/core/issue_creator.py +28 -18
  42. moai_adk/core/language_config.py +202 -0
  43. moai_adk/core/language_validator.py +556 -0
  44. moai_adk/core/mcp/setup.py +113 -0
  45. moai_adk/core/migration/__init__.py +18 -0
  46. moai_adk/core/migration/backup_manager.py +208 -0
  47. moai_adk/core/migration/file_migrator.py +218 -0
  48. moai_adk/core/migration/version_detector.py +143 -0
  49. moai_adk/core/migration/version_migrator.py +228 -0
  50. moai_adk/core/performance/__init__.py +6 -0
  51. moai_adk/core/performance/cache_system.py +318 -0
  52. moai_adk/core/performance/parallel_processor.py +116 -0
  53. moai_adk/core/project/__init__.py +0 -1
  54. moai_adk/core/project/backup_utils.py +2 -7
  55. moai_adk/core/project/checker.py +3 -3
  56. moai_adk/core/project/detector.py +20 -40
  57. moai_adk/core/project/initializer.py +42 -17
  58. moai_adk/core/project/phase_executor.py +415 -58
  59. moai_adk/core/project/validator.py +6 -25
  60. moai_adk/core/quality/__init__.py +1 -1
  61. moai_adk/core/quality/trust_checker.py +64 -110
  62. moai_adk/core/quality/validators/__init__.py +1 -1
  63. moai_adk/core/quality/validators/base_validator.py +1 -1
  64. moai_adk/core/rollback_manager.py +993 -0
  65. moai_adk/core/session_manager.py +667 -0
  66. moai_adk/core/spec/confidence_scoring.py +749 -0
  67. moai_adk/core/spec/ears_template_engine.py +1182 -0
  68. moai_adk/core/spec/quality_validator.py +721 -0
  69. moai_adk/core/spec_status_manager.py +488 -0
  70. moai_adk/core/template/__init__.py +0 -1
  71. moai_adk/core/template/backup.py +41 -1
  72. moai_adk/core/template/config.py +11 -12
  73. moai_adk/core/template/languages.py +0 -1
  74. moai_adk/core/template/merger.py +79 -22
  75. moai_adk/core/template/processor.py +614 -40
  76. moai_adk/core/template_engine.py +36 -27
  77. moai_adk/foundation/git/commit_templates.py +565 -0
  78. moai_adk/foundation/trust/trust_principles.py +725 -0
  79. moai_adk/foundation/trust/validation_checklist.py +1678 -0
  80. moai_adk/statusline/__init__.py +38 -0
  81. moai_adk/statusline/alfred_detector.py +107 -0
  82. moai_adk/statusline/config.py +364 -0
  83. moai_adk/statusline/enhanced_output_style_detector.py +364 -0
  84. moai_adk/statusline/git_collector.py +190 -0
  85. moai_adk/statusline/main.py +228 -0
  86. moai_adk/statusline/metrics_tracker.py +78 -0
  87. moai_adk/statusline/renderer.py +327 -0
  88. moai_adk/statusline/update_checker.py +135 -0
  89. moai_adk/statusline/version_reader.py +647 -0
  90. moai_adk/templates/.git-hooks/pre-commit +66 -0
  91. moai_adk/templates/.git-hooks/pre-push +116 -4
  92. moai_adk/templates/.github/workflows/moai-gitflow.yml +1 -7
  93. moai_adk/templates/.github/workflows/spec-issue-sync.yml +0 -1
  94. moai_adk/templates/.gitignore +44 -0
  95. moai_adk/templates/.mcp.json +22 -0
  96. moai_adk/templates/CLAUDE.md +450 -1071
  97. moai_adk/utils/__init__.py +0 -1
  98. moai_adk/utils/banner.py +0 -1
  99. moai_adk/utils/common.py +308 -0
  100. moai_adk/utils/link_validator.py +249 -0
  101. moai_adk/utils/logger.py +4 -9
  102. moai_adk/utils/safe_file_reader.py +210 -0
  103. moai_adk/utils/user_experience.py +531 -0
  104. moai_adk-0.25.4.dist-info/METADATA +2279 -0
  105. moai_adk-0.25.4.dist-info/RECORD +112 -0
  106. moai_adk/core/tags/__init__.py +0 -86
  107. moai_adk/core/tags/ci_validator.py +0 -463
  108. moai_adk/core/tags/cli.py +0 -283
  109. moai_adk/core/tags/generator.py +0 -109
  110. moai_adk/core/tags/inserter.py +0 -99
  111. moai_adk/core/tags/mapper.py +0 -126
  112. moai_adk/core/tags/parser.py +0 -76
  113. moai_adk/core/tags/pre_commit_validator.py +0 -393
  114. moai_adk/core/tags/reporter.py +0 -956
  115. moai_adk/core/tags/tags.py +0 -149
  116. moai_adk/core/tags/validator.py +0 -897
  117. moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
  118. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
  119. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
  120. moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
  121. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
  122. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
  123. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
  124. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
  125. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
  126. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
  127. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
  128. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -392
  129. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
  130. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
  131. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
  132. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
  133. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1525
  134. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -802
  135. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -709
  136. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1009
  137. moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
  138. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
  139. moai_adk/templates/.claude/hooks/alfred/core/timeout.py +0 -136
  140. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
  141. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
  142. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
  143. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
  144. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
  145. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
  146. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
  147. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
  148. moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +0 -271
  149. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
  150. moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +0 -749
  151. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
  152. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
  153. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
  154. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
  155. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
  156. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
  157. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
  158. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
  159. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
  160. moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +0 -161
  161. moai_adk/templates/.claude/settings.json +0 -144
  162. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
  163. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
  164. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
  165. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
  166. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
  167. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
  168. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
  169. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
  170. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
  171. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
  172. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
  173. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
  174. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  175. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  176. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  177. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
  178. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
  179. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
  180. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  181. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  182. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  183. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
  184. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
  185. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
  186. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  187. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  188. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  189. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
  190. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
  191. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
  192. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  193. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  194. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  195. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
  196. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
  197. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
  198. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
  199. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
  200. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
  201. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
  202. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
  203. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
  204. moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
  205. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
  206. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
  207. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
  208. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
  209. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
  210. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
  211. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
  212. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
  213. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
  214. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
  215. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
  216. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
  217. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
  218. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
  219. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  220. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  221. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  222. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  223. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  224. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  225. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
  226. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
  227. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
  228. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  229. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  230. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  231. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +0 -288
  232. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  233. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  234. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  235. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  236. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  237. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  238. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  239. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  240. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  241. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  242. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  243. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  244. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  245. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  246. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  247. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  248. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
  249. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
  250. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
  251. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
  252. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
  253. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  254. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
  255. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  256. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  257. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  258. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  259. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
  260. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  261. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
  262. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
  263. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
  264. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
  265. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
  266. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  267. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
  268. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
  269. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
  270. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  271. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  272. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
  273. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
  274. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
  275. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +0 -290
  276. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
  277. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
  278. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  279. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  280. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  281. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  282. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  283. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  284. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +0 -123
  285. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
  286. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
  287. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  288. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  289. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  290. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +0 -128
  291. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
  292. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
  293. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  294. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  295. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  296. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  297. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  298. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  299. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  300. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  301. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  302. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  303. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  304. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  305. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  306. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  307. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  308. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  309. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  310. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  311. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  312. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  313. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  314. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  315. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  316. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  317. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
  318. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  319. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  320. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  321. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  322. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  323. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  324. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  325. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  326. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  327. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  328. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  329. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  330. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  331. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  332. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  333. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  334. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  335. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  336. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  337. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  338. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
  339. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  340. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  341. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
  342. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  343. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  344. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  345. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  346. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  347. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
  348. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
  349. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
  350. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
  351. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
  352. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
  353. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  354. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  355. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  356. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
  357. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
  358. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
  359. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
  360. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  361. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  362. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
  363. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
  364. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
  365. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
  366. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  367. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  368. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
  369. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  370. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  371. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
  372. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
  373. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
  374. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
  375. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
  376. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
  377. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  378. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  379. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  380. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  381. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  382. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  383. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
  384. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
  385. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
  386. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
  387. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
  388. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
  389. moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
  390. moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
  391. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
  392. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
  393. moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
  394. moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
  395. moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
  396. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
  397. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
  398. moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
  399. moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
  400. moai_adk/templates/.github/workflows/release.yml +0 -118
  401. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
  402. moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
  403. moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
  404. moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
  405. moai_adk/templates/.github/workflows/tag-report.yml +0 -269
  406. moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
  407. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
  408. moai_adk/templates/.moai/config.json +0 -115
  409. moai_adk/templates/workflows/go-tag-validation.yml +0 -30
  410. moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
  411. moai_adk/templates/workflows/python-tag-validation.yml +0 -42
  412. moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
  413. moai_adk-0.15.0.dist-info/METADATA +0 -3079
  414. moai_adk-0.15.0.dist-info/RECORD +0 -365
  415. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/WHEEL +0 -0
  416. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/entry_points.txt +0 -0
  417. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,660 +0,0 @@
1
- # Backend Architecture Reference
2
-
3
- ## Architecture Decision Matrix
4
-
5
- ### When to Choose Each Pattern
6
-
7
- | Pattern | Team Size | Complexity | Deployment | Scaling | Use Cases |
8
- |---------|-----------|------------|------------|---------|-----------|
9
- | **Layered Monolith** | 1-5 | Low-Medium | Simple | Vertical | MVPs, startups, internal tools |
10
- | **Modular Monolith** | 5-15 | Medium | Simple | Vertical | Growing products, clear domains |
11
- | **Microservices** | 15+ | High | Complex | Horizontal | Large-scale, multi-team, polyglot |
12
- | **Serverless** | Any | Low-Medium | Managed | Auto | Event-driven, spiky traffic, rapid prototyping |
13
- | **Event-Driven** | 10+ | High | Complex | Horizontal | Real-time analytics, decoupled systems, audit logs |
14
-
15
- ### Decision Criteria
16
-
17
- **Choose Layered Monolith when**:
18
- - Small team (1-5 developers)
19
- - Rapid prototyping phase
20
- - Simple deployment requirements
21
- - Limited operational expertise
22
- - Cost-sensitive project
23
-
24
- **Choose Modular Monolith when**:
25
- - Growing team (5-15 developers)
26
- - Clear domain boundaries emerging
27
- - Need independent module development
28
- - Want extraction path to microservices
29
- - Prefer simple deployment
30
-
31
- **Choose Microservices when**:
32
- - Large team (15+ developers)
33
- - Multiple independent products/teams
34
- - Polyglot technology requirements
35
- - Need independent scaling per service
36
- - High operational maturity (Kubernetes, Istio)
37
-
38
- **Choose Serverless when**:
39
- - Event-driven workloads
40
- - Spiky or unpredictable traffic
41
- - Want zero infrastructure management
42
- - Cost optimization for low usage
43
- - Rapid feature iteration
44
-
45
- **Choose Event-Driven when**:
46
- - Real-time data processing
47
- - Audit logging requirements
48
- - Decoupled system integration
49
- - Complex business workflows
50
- - Need event replay capability
51
-
52
- ## Cloud-Native Tool Comparison
53
-
54
- ### Container Orchestration
55
-
56
- | Tool | Complexity | Ecosystem | Scaling | Multi-cloud | Production Ready |
57
- |------|------------|-----------|---------|-------------|------------------|
58
- | **Kubernetes 1.31.x** | High | Massive | Excellent | Yes | Yes |
59
- | **Docker Swarm** | Low | Limited | Good | Partial | Yes |
60
- | **AWS ECS** | Medium | AWS only | Good | No | Yes |
61
- | **Nomad** | Medium | HashiCorp | Good | Yes | Yes |
62
-
63
- **Recommendation**: Kubernetes 1.31.x for production, Docker Compose for local dev.
64
-
65
- ### Service Mesh
66
-
67
- | Tool | Complexity | Features | Performance | Maturity |
68
- |------|------------|----------|-------------|----------|
69
- | **Istio 1.21.x** | High | Comprehensive | Good | Mature |
70
- | **Linkerd 2.14.x** | Low | Core features | Excellent | Mature |
71
- | **Consul Connect** | Medium | Full stack | Good | Mature |
72
- | **AWS App Mesh** | Medium | AWS native | Good | Growing |
73
-
74
- **Recommendation**: Istio 1.21.x for full features, Linkerd for simplicity.
75
-
76
- ### Message Brokers
77
-
78
- | Tool | Throughput | Durability | Ordering | Complexity | Use Case |
79
- |------|------------|------------|----------|------------|----------|
80
- | **Apache Kafka 3.7.x** | Very High | Excellent | Partition | High | Event streaming, logs |
81
- | **RabbitMQ 3.13.x** | High | Good | Queue | Medium | Task queues, RPC |
82
- | **Redis Streams 7.2.x** | Very High | Good | Stream | Low | Real-time, lightweight |
83
- | **Amazon SQS** | Medium | Excellent | Best-effort | Low | Serverless, AWS |
84
- | **NATS 2.10.x** | Very High | Good | Stream | Low | Microservices messaging |
85
- | **Apache Pulsar 3.2.x** | Very High | Excellent | Partition | High | Multi-tenancy, geo-replication |
86
-
87
- **Recommendation**: Kafka 3.7.x for event streaming, RabbitMQ 3.13.x for task queues, NATS for lightweight microservices messaging.
88
-
89
- ### Observability Stack Comparison
90
-
91
- | Stack | Traces | Metrics | Logs | Complexity | Cost |
92
- |-------|--------|---------|------|------------|------|
93
- | **OpenTelemetry + Prometheus + Jaeger + ELK** | Yes | Yes | Yes | High | OSS |
94
- | **Datadog** | Yes | Yes | Yes | Low | High |
95
- | **New Relic** | Yes | Yes | Yes | Low | High |
96
- | **AWS X-Ray + CloudWatch** | Yes | Yes | Yes | Medium | Medium |
97
- | **Grafana Cloud** | Yes | Yes | Yes | Low | Medium |
98
-
99
- **Recommendation**: OpenTelemetry 1.24.0 + Prometheus 2.48.x + Jaeger 1.51.x for vendor-neutral OSS stack.
100
-
101
- ### Database Selection Matrix
102
-
103
- | Database | Type | Scalability | Consistency | Query Flexibility | Use Case |
104
- |----------|------|-------------|-------------|-------------------|----------|
105
- | **PostgreSQL 16.x** | SQL | Vertical + Read Replicas | Strong ACID | SQL + JSONB | Relational, complex queries |
106
- | **MongoDB 8.0.x** | Document | Horizontal (Sharding) | Tunable | Flexible schema | Rapid prototyping, catalogs |
107
- | **Redis 7.2.x** | Key-Value | Horizontal (Cluster) | Eventual | Limited | Caching, sessions, pub/sub |
108
- | **Cassandra 4.1.x** | Wide-Column | Horizontal | Tunable | CQL | Time-series, write-heavy |
109
-
110
- **Recommendation**: PostgreSQL 16.x as default, MongoDB 8.0.x for schema flexibility.
111
-
112
- ## Deployment Strategies
113
-
114
- ### Blue-Green Deployment
115
-
116
- **Pattern**:
117
- - Two identical production environments (Blue = current, Green = new)
118
- - Switch traffic after validation
119
- - Instant rollback capability
120
-
121
- **Pros**:
122
- - Zero downtime
123
- - Easy rollback
124
- - Full validation before switch
125
-
126
- **Cons**:
127
- - Double infrastructure cost
128
- - Data migration complexity
129
- - Requires load balancer
130
-
131
- **Best for**: Critical services with infrequent releases.
132
-
133
- ### Canary Deployment
134
-
135
- **Pattern**:
136
- - Gradually shift traffic to new version (5% → 25% → 50% → 100%)
137
- - Monitor metrics at each stage
138
- - Auto-rollback on errors
139
-
140
- **Pros**:
141
- - Risk mitigation
142
- - Real-world testing
143
- - Minimal infrastructure duplication
144
-
145
- **Cons**:
146
- - Requires advanced routing (Istio)
147
- - Longer deployment time
148
- - Version compatibility required
149
-
150
- **Best for**: User-facing services with high traffic.
151
-
152
- **Istio 1.21.x Implementation**:
153
- ```yaml
154
- apiVersion: networking.istio.io/v1beta1
155
- kind: VirtualService
156
- metadata:
157
- name: backend-canary
158
- spec:
159
- hosts:
160
- - backend.example.com
161
- http:
162
- - match:
163
- - headers:
164
- x-canary:
165
- exact: "true"
166
- route:
167
- - destination:
168
- host: backend
169
- subset: v2
170
- - route:
171
- - destination:
172
- host: backend
173
- subset: v1
174
- weight: 90
175
- - destination:
176
- host: backend
177
- subset: v2
178
- weight: 10
179
- ```
180
-
181
- ### Rolling Update
182
-
183
- **Pattern**:
184
- - Incrementally replace instances (pod-by-pod)
185
- - Kubernetes default strategy
186
- - Health checks control rollout
187
-
188
- **Pros**:
189
- - Built-in Kubernetes support
190
- - No extra infrastructure
191
- - Automatic rollback on failure
192
-
193
- **Cons**:
194
- - Version compatibility required
195
- - Slower than blue-green
196
- - Mixed versions during rollout
197
-
198
- **Best for**: Standard microservices deployments.
199
-
200
- **Kubernetes Configuration**:
201
- ```yaml
202
- spec:
203
- replicas: 10
204
- strategy:
205
- type: RollingUpdate
206
- rollingUpdate:
207
- maxSurge: 2
208
- maxUnavailable: 1
209
- ```
210
-
211
- ### A/B Testing (Feature Flags)
212
-
213
- **Pattern**:
214
- - Route users to different features based on criteria
215
- - Measure business metrics
216
- - Gradual feature rollout
217
-
218
- **Pros**:
219
- - Business metric validation
220
- - User segmentation
221
- - Independent of deployment
222
-
223
- **Cons**:
224
- - Code complexity (feature flags)
225
- - Requires analytics
226
- - Technical debt if not cleaned
227
-
228
- **Best for**: Product experiments, new features.
229
-
230
- **Tools**: LaunchDarkly, Split.io, Unleash, AWS AppConfig.
231
-
232
- ## Monitoring and Observability Setup
233
-
234
- ### OpenTelemetry 1.24.0 Integration
235
-
236
- **Step 1: Instrument Application**:
237
- ```python
238
- from opentelemetry import trace
239
- from opentelemetry.sdk.trace import TracerProvider
240
- from opentelemetry.sdk.trace.export import BatchSpanProcessor
241
- from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
242
-
243
- trace.set_tracer_provider(TracerProvider())
244
- tracer = trace.get_tracer(__name__)
245
-
246
- otlp_exporter = OTLPSpanExporter(endpoint="otel-collector:4317")
247
- span_processor = BatchSpanProcessor(otlp_exporter)
248
- trace.get_tracer_provider().add_span_processor(span_processor)
249
- ```
250
-
251
- **Step 2: Deploy Collector**:
252
- ```yaml
253
- apiVersion: apps/v1
254
- kind: Deployment
255
- metadata:
256
- name: otel-collector
257
- spec:
258
- template:
259
- spec:
260
- containers:
261
- - name: otel-collector
262
- image: otel/opentelemetry-collector:0.92.0
263
- ports:
264
- - containerPort: 4317 # OTLP gRPC
265
- - containerPort: 4318 # OTLP HTTP
266
- ```
267
-
268
- **Step 3: Configure Backends**:
269
- ```yaml
270
- # otel-collector-config.yaml
271
- receivers:
272
- otlp:
273
- protocols:
274
- grpc:
275
- http:
276
-
277
- processors:
278
- batch:
279
-
280
- exporters:
281
- prometheus:
282
- endpoint: "0.0.0.0:8889"
283
- jaeger:
284
- endpoint: "jaeger:14250"
285
- elasticsearch:
286
- endpoints: ["http://elasticsearch:9200"]
287
-
288
- service:
289
- pipelines:
290
- traces:
291
- receivers: [otlp]
292
- processors: [batch]
293
- exporters: [jaeger]
294
- metrics:
295
- receivers: [otlp]
296
- processors: [batch]
297
- exporters: [prometheus]
298
- logs:
299
- receivers: [otlp]
300
- processors: [batch]
301
- exporters: [elasticsearch]
302
- ```
303
-
304
- ### Prometheus 2.48.x Setup
305
-
306
- **Step 1: Install Prometheus Operator**:
307
- ```bash
308
- helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
309
- helm install prometheus prometheus-community/kube-prometheus-stack \
310
- --set prometheus.prometheusSpec.retention=30d \
311
- --set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage=50Gi
312
- ```
313
-
314
- **Step 2: ServiceMonitor for Application**:
315
- ```yaml
316
- apiVersion: monitoring.coreos.com/v1
317
- kind: ServiceMonitor
318
- metadata:
319
- name: backend-metrics
320
- spec:
321
- selector:
322
- matchLabels:
323
- app: backend
324
- endpoints:
325
- - port: metrics
326
- interval: 15s
327
- ```
328
-
329
- **Step 3: Alerting Rules**:
330
- ```yaml
331
- apiVersion: monitoring.coreos.com/v1
332
- kind: PrometheusRule
333
- metadata:
334
- name: backend-alerts
335
- spec:
336
- groups:
337
- - name: backend
338
- interval: 30s
339
- rules:
340
- - alert: HighErrorRate
341
- expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05
342
- for: 5m
343
- labels:
344
- severity: critical
345
- annotations:
346
- summary: "High error rate detected"
347
- ```
348
-
349
- ### Jaeger 1.51.x Deployment
350
-
351
- **All-in-One (Development)**:
352
- ```bash
353
- kubectl create deployment jaeger --image=jaegertracing/all-in-one:1.51
354
- kubectl expose deployment jaeger --port=16686 --target-port=16686 --type=LoadBalancer
355
- ```
356
-
357
- **Production (with Elasticsearch)**:
358
- ```bash
359
- helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
360
- helm install jaeger jaegertracing/jaeger \
361
- --set provisionDataStore.cassandra=false \
362
- --set provisionDataStore.elasticsearch=true \
363
- --set storage.type=elasticsearch \
364
- --set storage.elasticsearch.host=elasticsearch-master \
365
- --set storage.elasticsearch.port=9200
366
- ```
367
-
368
- ### Grafana 10.x Dashboards
369
-
370
- **Key Dashboards**:
371
- - **RED Metrics**: Rate, Errors, Duration per service
372
- - **Kubernetes Cluster**: Node/pod resource usage
373
- - **Database Performance**: Query latency, connection pool
374
- - **Application Logs**: Error rate trends, log volume
375
-
376
- **Import Community Dashboards**:
377
- - Kubernetes Cluster Monitoring (ID: 7249)
378
- - Node Exporter Full (ID: 1860)
379
- - PostgreSQL Database (ID: 9628)
380
-
381
- ## Performance Benchmarking
382
-
383
- ### Load Testing Tools
384
-
385
- | Tool | Protocol | Complexity | Reporting | Use Case |
386
- |------|----------|------------|-----------|----------|
387
- | **k6** | HTTP, gRPC, WebSocket | Low | Good | API load testing |
388
- | **Gatling** | HTTP, WebSocket | Medium | Excellent | Complex scenarios |
389
- | **JMeter** | HTTP, JDBC, JMS, etc. | High | Good | Enterprise testing |
390
- | **Locust** | HTTP, custom | Low | Good | Python-based scripting |
391
-
392
- **Recommendation**: k6 for API load testing, Gatling for complex user journeys.
393
-
394
- ### k6 Example (HTTP API)
395
-
396
- ```javascript
397
- import http from 'k6/http';
398
- import { check, sleep } from 'k6';
399
-
400
- export let options = {
401
- stages: [
402
- { duration: '2m', target: 100 }, // Ramp-up
403
- { duration: '5m', target: 100 }, // Steady
404
- { duration: '2m', target: 0 }, // Ramp-down
405
- ],
406
- thresholds: {
407
- http_req_duration: ['p(95)<500'], // 95% under 500ms
408
- http_req_failed: ['rate<0.01'], // Error rate < 1%
409
- },
410
- };
411
-
412
- export default function () {
413
- let res = http.get('https://api.example.com/users');
414
- check(res, {
415
- 'status is 200': (r) => r.status === 200,
416
- 'response time < 500ms': (r) => r.timings.duration < 500,
417
- });
418
- sleep(1);
419
- }
420
- ```
421
-
422
- **Run**:
423
- ```bash
424
- k6 run --vus 100 --duration 10m load-test.js
425
- ```
426
-
427
- ### Performance Targets
428
-
429
- | Metric | Target | Good | Excellent |
430
- |--------|--------|------|-----------|
431
- | **API Response Time (p95)** | <500ms | <200ms | <100ms |
432
- | **Error Rate** | <1% | <0.1% | <0.01% |
433
- | **Throughput** | 1000 req/s | 5000 req/s | 10000 req/s |
434
- | **Database Query (p95)** | <100ms | <50ms | <10ms |
435
- | **CPU Usage** | <70% | <50% | <30% |
436
- | **Memory Usage** | <80% | <60% | <40% |
437
-
438
- ## Security Best Practices
439
-
440
- ### OWASP API Security Top 10 2023 Checklist
441
-
442
- - [ ] **API1: Broken Object Level Authorization**
443
- - Implement per-object access control checks
444
- - Validate user owns the resource before access
445
- - Use UUIDs instead of sequential IDs
446
-
447
- - [ ] **API2: Broken Authentication**
448
- - Use industry-standard auth (OAuth 2.0, OpenID Connect)
449
- - Implement rate limiting on auth endpoints
450
- - Rotate secrets regularly
451
-
452
- - [ ] **API3: Broken Object Property Level Authorization**
453
- - Use response DTOs to filter sensitive fields
454
- - Validate input against allowed fields (no mass assignment)
455
- - Implement role-based field visibility
456
-
457
- - [ ] **API4: Unrestricted Resource Consumption**
458
- - Enforce pagination (max 100 items per page)
459
- - Implement rate limiting (Redis-based)
460
- - Set request timeouts and size limits
461
-
462
- - [ ] **API5: Broken Function Level Authorization**
463
- - Validate roles/permissions on every endpoint
464
- - Deny by default, allow explicitly
465
- - Use middleware for consistent checks
466
-
467
- - [ ] **API6: Unrestricted Access to Sensitive Business Flows**
468
- - Implement CAPTCHA for critical flows
469
- - Detect and block automated abuse
470
- - Monitor for unusual patterns
471
-
472
- - [ ] **API7: Server Side Request Forgery (SSRF)**
473
- - Validate and whitelist URLs
474
- - Block private IP ranges
475
- - Use network segmentation
476
-
477
- - [ ] **API8: Security Misconfiguration**
478
- - Disable debug mode in production
479
- - Remove unnecessary endpoints
480
- - Use security headers (HSTS, CSP, etc.)
481
-
482
- - [ ] **API9: Improper Inventory Management**
483
- - Document all API versions
484
- - Deprecate old versions gracefully
485
- - Monitor for unauthorized endpoints
486
-
487
- - [ ] **API10: Unsafe Consumption of APIs**
488
- - Validate external API responses
489
- - Set timeouts for external calls
490
- - Handle partial failures gracefully
491
-
492
- ### Rate Limiting Implementation (Redis 7.2.x)
493
-
494
- **Token Bucket Algorithm**:
495
- ```python
496
- import redis
497
- import time
498
-
499
- def is_rate_limited(user_id: str, max_requests: int = 100, window: int = 60) -> bool:
500
- """Token bucket rate limiting with Redis."""
501
- r = redis.Redis(host='localhost', port=6379, db=0)
502
- key = f"rate_limit:{user_id}"
503
-
504
- current = r.get(key)
505
- if current is None:
506
- r.setex(key, window, 1)
507
- return False
508
-
509
- current = int(current)
510
- if current >= max_requests:
511
- return True
512
-
513
- r.incr(key)
514
- return False
515
- ```
516
-
517
- **Sliding Window (Accurate)**:
518
- ```python
519
- def sliding_window_rate_limit(user_id: str, max_requests: int = 100, window: int = 60) -> bool:
520
- """Sliding window rate limiting with Redis sorted sets."""
521
- r = redis.Redis(host='localhost', port=6379, db=0)
522
- key = f"rate_limit:{user_id}"
523
- now = time.time()
524
-
525
- # Remove old entries
526
- r.zremrangebyscore(key, 0, now - window)
527
-
528
- # Count requests in window
529
- count = r.zcard(key)
530
- if count >= max_requests:
531
- return True
532
-
533
- # Add current request
534
- r.zadd(key, {str(now): now})
535
- r.expire(key, window)
536
- return False
537
- ```
538
-
539
- ## Cost Optimization
540
-
541
- ### Resource Right-Sizing
542
-
543
- **Kubernetes Resource Requests/Limits**:
544
- ```yaml
545
- resources:
546
- requests:
547
- cpu: "100m" # Minimum guaranteed
548
- memory: "128Mi"
549
- limits:
550
- cpu: "500m" # Maximum allowed
551
- memory: "512Mi"
552
- ```
553
-
554
- **Guidelines**:
555
- - Set requests based on p50 usage
556
- - Set limits based on p99 usage
557
- - Enable Vertical Pod Autoscaler for recommendations
558
-
559
- ### Auto-Scaling Strategies
560
-
561
- **Horizontal Pod Autoscaler (HPA)**:
562
- ```yaml
563
- apiVersion: autoscaling/v2
564
- kind: HorizontalPodAutoscaler
565
- metadata:
566
- name: backend-hpa
567
- spec:
568
- scaleTargetRef:
569
- apiVersion: apps/v1
570
- kind: Deployment
571
- name: backend
572
- minReplicas: 2
573
- maxReplicas: 10
574
- metrics:
575
- - type: Resource
576
- resource:
577
- name: cpu
578
- target:
579
- type: Utilization
580
- averageUtilization: 70
581
- - type: Resource
582
- resource:
583
- name: memory
584
- target:
585
- type: Utilization
586
- averageUtilization: 80
587
- ```
588
-
589
- **Cluster Autoscaler**:
590
- - Automatically adds/removes nodes based on pending pods
591
- - Works with cloud provider APIs (AWS, GCP, Azure)
592
- - Set min/max node count per node group
593
-
594
- ### Caching Strategies for Cost Reduction
595
-
596
- **CDN for Static Assets**:
597
- - CloudFront, CloudFlare: ~$0.085/GB
598
- - Reduces origin server load by 80-90%
599
- - Set long TTLs (1 year) with versioned URLs
600
-
601
- **Redis Caching**:
602
- - Cache database queries (TTL: 5-60 minutes)
603
- - Session storage (reduce database connections)
604
- - Precomputed results (expensive calculations)
605
-
606
- **Database Connection Pooling**:
607
- - PgBouncer: Reduce database connections by 10x
608
- - Typical pool size: 10-20 connections per app instance
609
- - Significant cost savings on managed databases
610
-
611
- ### Container Registry Comparison
612
-
613
- | Registry | Security Scanning | Geo-Replication | Cost | Integration | Use Case |
614
- |----------|------------------|------------------|------|-------------|----------|
615
- | **Docker Hub** | Free tier limited | No | Free/Paid | Universal | Public images |
616
- | **Amazon ECR** | Yes (Inspector) | Yes | Pay-per-GB | AWS native | AWS workloads |
617
- | **Google Artifact Registry** | Yes (Container Analysis) | Yes | Pay-per-GB | GCP native | GCP workloads |
618
- | **Azure ACR** | Yes (Defender) | Yes | Pay-per-GB | Azure native | Azure workloads |
619
- | **Harbor 2.10.x** | Yes (Trivy) | Yes | Self-hosted | Kubernetes | On-premises, multi-cloud |
620
- | **GitHub Container Registry** | Yes (Dependabot) | Global CDN | Free for public | GitHub Actions | CI/CD integration |
621
-
622
- **Recommendation**: Harbor 2.10.x for self-hosted multi-cloud, cloud-native registries for vendor lock-in scenarios.
623
-
624
- ### API Gateway Comparison
625
-
626
- | Gateway | Protocol | Performance | Features | Complexity | Use Case |
627
- |---------|----------|-------------|----------|------------|----------|
628
- | **Kong 3.6.x** | HTTP, gRPC, WebSocket | Excellent | Plugins, mTLS, rate limiting | Medium | Enterprise APIs |
629
- | **Ambassador (Emissary-Ingress) 3.9.x** | HTTP, gRPC | Good | Kubernetes-native, Istio integration | Medium | Kubernetes microservices |
630
- | **Traefik 3.0.x** | HTTP, TCP, gRPC | Good | Auto-discovery, Let's Encrypt | Low | Docker/Kubernetes |
631
- | **NGINX Ingress Controller** | HTTP, TCP, UDP | Excellent | Battle-tested, low overhead | Low | General-purpose |
632
- | **AWS API Gateway** | HTTP, WebSocket | Good | Serverless, AWS Lambda | Low | AWS serverless |
633
- | **Envoy Proxy 1.29.x** | HTTP/1.1, HTTP/2, gRPC | Excellent | L7 proxy, xDS API | High | Service mesh (Istio) |
634
-
635
- **Recommendation**: Kong 3.6.x for feature-rich APIs, NGINX Ingress for simplicity, Envoy 1.29.x for service mesh integration.
636
-
637
- ### CI/CD Platform Comparison
638
-
639
- | Platform | Cloud/Self-hosted | Kubernetes Support | Pipeline as Code | Cost | Use Case |
640
- |----------|-------------------|-------------------|------------------|------|----------|
641
- | **GitHub Actions** | Cloud | Yes (Kubernetes runners) | YAML | Free tier + paid | GitHub integration |
642
- | **GitLab CI/CD** | Both | Yes | YAML | Free tier + paid | GitLab ecosystem |
643
- | **Jenkins 2.440.x** | Self-hosted | Yes (Kubernetes plugin) | Groovy/Declarative | Free (self-hosted) | Enterprise, customization |
644
- | **ArgoCD 2.10.x** | Self-hosted | Yes (GitOps) | YAML (Git) | Free | Kubernetes GitOps |
645
- | **Tekton Pipelines 0.56.x** | Self-hosted | Yes (cloud-native) | YAML | Free | Kubernetes-native CI/CD |
646
- | **CircleCI** | Cloud | Yes | YAML | Free tier + paid | Fast feedback loops |
647
-
648
- **Recommendation**: ArgoCD 2.10.x for Kubernetes GitOps, GitHub Actions for GitHub-native workflows, Jenkins for complex enterprise pipelines.
649
-
650
- ## References
651
-
652
- - Kubernetes. "Kubernetes Best Practices." https://kubernetes.io/docs/concepts/configuration/overview/ (2025-10-22)
653
- - Istio. "Performance and Scalability." https://istio.io/latest/docs/ops/deployment/performance-and-scalability/ (2025-10-22)
654
- - OpenTelemetry. "Getting Started." https://opentelemetry.io/docs/instrumentation/ (2025-10-22)
655
- - Prometheus. "Best Practices." https://prometheus.io/docs/practices/ (2025-10-22)
656
- - OWASP. "API Security Project." https://owasp.org/www-project-api-security/ (2025-10-22)
657
- - CNCF. "Cloud Native Landscape." https://landscape.cncf.io/ (2025-10-22)
658
- - Kafka. "Apache Kafka Documentation." https://kafka.apache.org/documentation/ (2025-10-22)
659
- - Harbor. "Harbor Documentation." https://goharbor.io/docs/ (2025-10-22)
660
- - ArgoCD. "ArgoCD Documentation." https://argo-cd.readthedocs.io/ (2025-10-22)