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

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

Potentially problematic release.


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

Files changed (545) hide show
  1. moai_adk/cli/commands/init.py +4 -1
  2. moai_adk/cli/commands/update.py +31 -26
  3. moai_adk/cli/worktree/cli.py +54 -43
  4. moai_adk/cli/worktree/manager.py +17 -14
  5. moai_adk/cli/worktree/registry.py +313 -19
  6. moai_adk/core/config/unified.py +237 -63
  7. moai_adk/core/error_recovery_system.py +22 -4
  8. moai_adk/core/git/conflict_detector.py +10 -1
  9. moai_adk/core/git/event_detector.py +16 -5
  10. moai_adk/core/language_config_resolver.py +96 -3
  11. moai_adk/core/merge/analyzer.py +509 -324
  12. moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
  13. moai_adk/core/migration/backup_manager.py +54 -4
  14. moai_adk/core/migration/file_migrator.py +174 -2
  15. moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
  16. moai_adk/core/migration/version_detector.py +123 -19
  17. moai_adk/core/migration/version_migrator.py +44 -9
  18. moai_adk/core/project/backup_utils.py +9 -1
  19. moai_adk/core/project/initializer.py +33 -96
  20. moai_adk/core/project/phase_executor.py +79 -33
  21. moai_adk/core/quality/trust_checker.py +30 -10
  22. moai_adk/core/realtime_monitoring_dashboard.py +3 -3
  23. moai_adk/core/rollback_manager.py +46 -19
  24. moai_adk/core/template/backup.py +4 -3
  25. moai_adk/core/template/config.py +33 -9
  26. moai_adk/core/template/merger.py +34 -8
  27. moai_adk/core/template/processor.py +144 -9
  28. moai_adk/core/template_engine.py +10 -1
  29. moai_adk/core/template_variable_synchronizer.py +16 -2
  30. moai_adk/core/version_sync.py +54 -6
  31. moai_adk/project/configuration.py +1 -1
  32. moai_adk/statusline/config.py +5 -2
  33. moai_adk/statusline/main.py +58 -0
  34. moai_adk/statusline/renderer.py +56 -84
  35. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +218 -51
  36. moai_adk/templates/.claude/agents/moai/builder-agent.md +46 -11
  37. moai_adk/templates/.claude/agents/moai/builder-command.md +88 -26
  38. moai_adk/templates/.claude/agents/moai/builder-plugin.md +753 -0
  39. moai_adk/templates/.claude/agents/moai/builder-skill.md +79 -8
  40. moai_adk/templates/.claude/agents/moai/expert-backend.md +100 -28
  41. moai_adk/templates/.claude/agents/moai/expert-database.md +20 -12
  42. moai_adk/templates/.claude/agents/moai/expert-debug.md +19 -8
  43. moai_adk/templates/.claude/agents/moai/expert-devops.md +36 -25
  44. moai_adk/templates/.claude/agents/moai/expert-frontend.md +99 -38
  45. moai_adk/templates/.claude/agents/moai/expert-performance.md +661 -0
  46. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +218 -0
  47. moai_adk/templates/.claude/agents/moai/expert-security.md +55 -4
  48. moai_adk/templates/.claude/agents/moai/expert-testing.md +737 -0
  49. moai_adk/templates/.claude/agents/moai/expert-uiux.md +20 -11
  50. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +13 -4
  51. moai_adk/templates/.claude/agents/moai/manager-docs.md +15 -7
  52. moai_adk/templates/.claude/agents/moai/manager-git.md +192 -37
  53. moai_adk/templates/.claude/agents/moai/manager-project.md +13 -7
  54. moai_adk/templates/.claude/agents/moai/manager-quality.md +48 -6
  55. moai_adk/templates/.claude/agents/moai/manager-spec.md +110 -8
  56. moai_adk/templates/.claude/agents/moai/manager-strategy.md +203 -17
  57. moai_adk/templates/.claude/agents/moai/manager-tdd.md +217 -23
  58. moai_adk/templates/.claude/agents/moai/mcp-context7.md +102 -7
  59. moai_adk/templates/.claude/agents/moai/mcp-figma.md +107 -86
  60. moai_adk/templates/.claude/agents/moai/mcp-notion.md +50 -4
  61. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +52 -4
  62. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +49 -5
  63. moai_adk/templates/.claude/commands/moai/0-project.md +503 -307
  64. moai_adk/templates/.claude/commands/moai/1-plan.md +255 -323
  65. moai_adk/templates/.claude/commands/moai/2-run.md +257 -315
  66. moai_adk/templates/.claude/commands/moai/3-sync.md +421 -56
  67. moai_adk/templates/.claude/commands/moai/9-feedback.md +40 -34
  68. moai_adk/templates/.claude/hooks/moai/__init__.py +0 -0
  69. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  70. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +19 -0
  71. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
  72. moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
  73. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +12 -14
  74. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  75. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +1 -1
  76. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +104 -14
  77. moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
  78. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
  79. moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
  80. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +804 -0
  81. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +14 -2
  82. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +256 -0
  83. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +253 -0
  84. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +307 -0
  85. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +231 -0
  86. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +40 -24
  87. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +248 -32
  88. moai_adk/templates/.claude/output-styles/moai/r2d2.md +265 -2
  89. moai_adk/templates/.claude/output-styles/moai/yoda.md +23 -2
  90. moai_adk/templates/.claude/settings.json +44 -6
  91. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +303 -0
  92. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  93. moai_adk/templates/.claude/skills/moai-ai-nano-banana/reference.md +139 -0
  94. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  95. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  96. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -196
  97. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +252 -0
  98. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
  99. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
  100. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
  101. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
  102. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
  103. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +234 -0
  104. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +19 -13
  105. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  106. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  107. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +21 -14
  108. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  109. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  110. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -425
  111. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  112. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  113. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  114. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  115. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  116. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  117. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  118. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  119. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +17 -15
  120. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +105 -315
  121. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  122. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
  123. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +6 -6
  124. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  125. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +197 -154
  126. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  127. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  128. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  129. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  130. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  131. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  132. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
  133. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +2 -2
  134. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  135. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +432 -0
  136. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  137. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
  138. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  139. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
  140. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  141. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +12 -1
  142. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  143. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  144. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +33 -134
  145. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  146. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +31 -18
  147. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +30 -30
  148. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  149. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  150. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
  151. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  152. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  153. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
  154. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  155. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
  156. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  157. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  158. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  159. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +311 -0
  160. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  161. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  162. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  163. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  164. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  165. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  166. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +17 -16
  167. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +431 -0
  168. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +17 -0
  169. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  170. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +17 -0
  171. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +194 -0
  172. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  173. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  174. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  175. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  176. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  177. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  178. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  179. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +395 -0
  180. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +17 -0
  181. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  182. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +17 -0
  183. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +473 -0
  184. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  185. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  186. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +378 -0
  187. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  188. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  189. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +387 -0
  190. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  191. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  192. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +419 -0
  193. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  194. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  195. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +384 -0
  196. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  197. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  198. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +505 -0
  199. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +17 -0
  200. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  201. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +17 -0
  202. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +490 -0
  203. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  204. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  205. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +390 -0
  206. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +17 -0
  207. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  208. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +17 -0
  209. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +433 -0
  210. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +17 -0
  211. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  212. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  213. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +17 -0
  214. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +378 -0
  215. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  216. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  217. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +212 -0
  218. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  219. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  220. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  221. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  222. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  223. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  224. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  225. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +192 -0
  226. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  227. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  228. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  229. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  230. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  231. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  232. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +365 -0
  233. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  234. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  235. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +94 -227
  236. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +26 -6
  237. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  238. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
  239. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
  240. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  241. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +17 -13
  242. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +1 -1
  243. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +284 -0
  244. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  245. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  246. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  247. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  248. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  249. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  250. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  251. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  252. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  253. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  254. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  255. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  256. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  257. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  258. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  259. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  260. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  261. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  262. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  263. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  264. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  265. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  266. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  267. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  268. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  269. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  270. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  271. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  272. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  273. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  274. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  275. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  276. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  277. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +426 -0
  278. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  279. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  280. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +229 -0
  281. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  282. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  283. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  284. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  285. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  286. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  287. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +250 -0
  288. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  289. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  290. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  291. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  292. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  293. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +231 -0
  294. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  295. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  296. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  297. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  298. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  299. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  300. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +206 -0
  301. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  302. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  303. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  304. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  305. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  306. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  307. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +224 -0
  308. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  309. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  310. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  311. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  312. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  313. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  314. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +207 -0
  315. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  316. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  317. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  318. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  319. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  320. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  321. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  322. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  323. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  324. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +210 -0
  325. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  326. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  327. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  328. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  329. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  330. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  331. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  332. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
  333. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  334. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/migration.md +341 -0
  335. moai_adk/templates/.claude/skills/moai-plugin-builder/modules/validation.md +373 -0
  336. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +464 -0
  337. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +307 -0
  338. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  339. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  340. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  341. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  342. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  343. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  344. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  345. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  346. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  347. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  348. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  349. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  350. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  351. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  352. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  353. moai_adk/templates/.claude/skills/moai-tool-opencode/SKILL.md +215 -0
  354. moai_adk/templates/.claude/skills/moai-tool-opencode/examples.md +697 -0
  355. moai_adk/templates/.claude/skills/moai-tool-opencode/index.md +96 -0
  356. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/acp.md +115 -0
  357. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/agents.md +241 -0
  358. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/commands.md +197 -0
  359. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/custom-tools.md +197 -0
  360. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/formatters.md +164 -0
  361. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/keybinds.md +150 -0
  362. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/lsp-servers.md +156 -0
  363. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/mcp-servers.md +214 -0
  364. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/models.md +197 -0
  365. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/permissions.md +162 -0
  366. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/rules.md +129 -0
  367. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/skills.md +192 -0
  368. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/themes.md +200 -0
  369. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/configure/tools.md +169 -0
  370. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/config.md +211 -0
  371. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/enterprise.md +68 -0
  372. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/intro.md +127 -0
  373. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/migration-1.0.md +82 -0
  374. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/network.md +72 -0
  375. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/providers.md +310 -0
  376. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/core/troubleshooting.md +124 -0
  377. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/ecosystem.md +75 -0
  378. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/plugins.md +218 -0
  379. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/sdk.md +266 -0
  380. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/develop/server.md +207 -0
  381. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/cli.md +159 -0
  382. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/github.md +181 -0
  383. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/gitlab.md +122 -0
  384. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/ide.md +74 -0
  385. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/share.md +106 -0
  386. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/tui.md +129 -0
  387. moai_adk/templates/.claude/skills/moai-tool-opencode/modules/usage/zen.md +118 -0
  388. moai_adk/templates/.claude/skills/moai-tool-opencode/reference.md +790 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +190 -424
  390. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  391. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +188 -314
  393. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +284 -212
  396. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +2 -2
  397. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +1 -1
  398. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +22 -1
  399. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +337 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +13 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +222 -367
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
  420. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  429. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  430. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  431. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  432. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
  433. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  434. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  435. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  436. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  437. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
  438. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  439. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  440. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  441. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  442. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  443. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  444. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
  445. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  446. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  447. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
  448. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  449. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  450. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  451. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  452. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  453. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  454. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  455. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  456. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  457. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  458. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  459. moai_adk/templates/.git-hooks/pre-push +168 -50
  460. moai_adk/templates/.gitignore +0 -3
  461. moai_adk/templates/.lsp.json +152 -0
  462. moai_adk/templates/.mcp.json +5 -12
  463. moai_adk/templates/.moai/config/config.yaml +20 -306
  464. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  465. moai_adk/templates/.moai/config/questions/_schema.yaml +105 -10
  466. moai_adk/templates/.moai/config/questions/tab0-init.yaml +259 -0
  467. moai_adk/templates/.moai/config/questions/tab1-user.yaml +4 -5
  468. moai_adk/templates/.moai/config/questions/tab2-project.yaml +12 -55
  469. moai_adk/templates/.moai/config/questions/tab3-git.yaml +111 -21
  470. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +34 -18
  471. moai_adk/templates/.moai/config/questions/tab5-system.yaml +19 -75
  472. moai_adk/templates/.moai/config/sections/git-strategy.yaml +83 -7
  473. moai_adk/templates/.moai/config/sections/language.yaml +7 -7
  474. moai_adk/templates/.moai/config/sections/project.yaml +1 -1
  475. moai_adk/templates/.moai/config/sections/quality.yaml +7 -4
  476. moai_adk/templates/.moai/config/sections/system.yaml +11 -1
  477. moai_adk/templates/.moai/config/statusline-config.yaml +19 -13
  478. moai_adk/templates/.moai/scripts/setup-glm.py +4 -4
  479. moai_adk/templates/CLAUDE.md +578 -154
  480. moai_adk/utils/common.py +33 -0
  481. moai_adk/version.py +1 -1
  482. {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/METADATA +905 -109
  483. moai_adk-0.41.2.dist-info/RECORD +683 -0
  484. moai_adk/core/config/auto_spec_config.py +0 -340
  485. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
  486. moai_adk/core/spec/confidence_scoring.py +0 -680
  487. moai_adk/core/spec/ears_template_engine.py +0 -1247
  488. moai_adk/core/spec/quality_validator.py +0 -687
  489. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
  490. moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +0 -352
  491. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +0 -52
  492. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +0 -334
  493. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +0 -310
  494. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +0 -256
  495. moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +0 -253
  496. moai_adk/templates/.claude/skills/moai-lang-unified/README.md +0 -133
  497. moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +0 -296
  498. moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +0 -1269
  499. moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +0 -331
  500. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
  501. moai_adk/templates/.claude/skills/moai-platform-baas/README.md +0 -186
  502. moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +0 -290
  503. moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +0 -1225
  504. moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +0 -567
  505. moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +0 -323
  506. moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +0 -204
  507. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
  508. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
  509. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
  510. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
  511. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
  512. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -135
  513. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
  514. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
  515. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
  516. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
  517. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
  518. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
  519. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
  520. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
  521. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
  522. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
  523. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
  524. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -410
  525. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
  526. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
  527. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
  528. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
  529. moai_adk/templates/.moai/cache/personalization.json +0 -10
  530. moai_adk/templates/.moai/config/presets/manual.yaml +0 -28
  531. moai_adk/templates/.moai/config/presets/personal.yaml +0 -30
  532. moai_adk/templates/.moai/config/presets/team.yaml +0 -33
  533. moai_adk-0.32.8.dist-info/RECORD +0 -396
  534. /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  535. /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
  536. /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
  537. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  538. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
  539. /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  540. /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
  541. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
  542. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
  543. {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/WHEEL +0 -0
  544. {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/entry_points.txt +0 -0
  545. {moai_adk-0.32.8.dist-info → moai_adk-0.41.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,627 @@
1
+ # ASP.NET Core 8 Development
2
+
3
+ Comprehensive guide to ASP.NET Core 8 including Minimal APIs, Controllers, Middleware, and Authentication.
4
+
5
+ ---
6
+
7
+ ## Minimal APIs
8
+
9
+ ### Basic Endpoint Setup
10
+
11
+ ```csharp
12
+ var builder = WebApplication.CreateBuilder(args);
13
+
14
+ // Add services
15
+ builder.Services.AddEndpointsApiExplorer();
16
+ builder.Services.AddSwaggerGen();
17
+
18
+ var app = builder.Build();
19
+
20
+ // Configure pipeline
21
+ if (app.Environment.IsDevelopment())
22
+ {
23
+ app.UseSwagger();
24
+ app.UseSwaggerUI();
25
+ }
26
+
27
+ app.UseHttpsRedirection();
28
+
29
+ // Simple endpoints
30
+ app.MapGet("/", () => "Hello World!");
31
+
32
+ app.MapGet("/health", () => Results.Ok(new { status = "healthy", timestamp = DateTime.UtcNow }));
33
+
34
+ app.Run();
35
+ ```
36
+
37
+ ### Endpoint Groups
38
+
39
+ ```csharp
40
+ public static class UserEndpoints
41
+ {
42
+ public static void MapUserEndpoints(this WebApplication app)
43
+ {
44
+ var group = app.MapGroup("/api/users")
45
+ .WithTags("Users")
46
+ .WithOpenApi();
47
+
48
+ group.MapGet("/", GetAllUsers);
49
+ group.MapGet("/{id:guid}", GetUserById);
50
+ group.MapPost("/", CreateUser);
51
+ group.MapPut("/{id:guid}", UpdateUser);
52
+ group.MapDelete("/{id:guid}", DeleteUser).RequireAuthorization("Admin");
53
+ }
54
+
55
+ private static async Task<IResult> GetAllUsers(
56
+ IUserService service,
57
+ CancellationToken ct)
58
+ {
59
+ var users = await service.GetAllAsync(ct);
60
+ return Results.Ok(users);
61
+ }
62
+
63
+ private static async Task<IResult> GetUserById(
64
+ Guid id,
65
+ IUserService service,
66
+ CancellationToken ct)
67
+ {
68
+ var user = await service.GetByIdAsync(id, ct);
69
+ return user is not null ? Results.Ok(user) : Results.NotFound();
70
+ }
71
+
72
+ private static async Task<IResult> CreateUser(
73
+ CreateUserRequest request,
74
+ IUserService service,
75
+ CancellationToken ct)
76
+ {
77
+ var user = await service.CreateAsync(request, ct);
78
+ return Results.Created($"/api/users/{user.Id}", user);
79
+ }
80
+
81
+ private static async Task<IResult> UpdateUser(
82
+ Guid id,
83
+ UpdateUserRequest request,
84
+ IUserService service,
85
+ CancellationToken ct)
86
+ {
87
+ var success = await service.UpdateAsync(id, request, ct);
88
+ return success ? Results.NoContent() : Results.NotFound();
89
+ }
90
+
91
+ private static async Task<IResult> DeleteUser(
92
+ Guid id,
93
+ IUserService service,
94
+ CancellationToken ct)
95
+ {
96
+ var success = await service.DeleteAsync(id, ct);
97
+ return success ? Results.NoContent() : Results.NotFound();
98
+ }
99
+ }
100
+ ```
101
+
102
+ ### Typed Results
103
+
104
+ ```csharp
105
+ app.MapGet("/api/users/{id:guid}", async Task<Results<Ok<UserDto>, NotFound>> (
106
+ Guid id,
107
+ IUserService service) =>
108
+ {
109
+ var user = await service.GetByIdAsync(id);
110
+ return user is not null
111
+ ? TypedResults.Ok(user)
112
+ : TypedResults.NotFound();
113
+ })
114
+ .WithName("GetUserById")
115
+ .WithOpenApi();
116
+
117
+ app.MapPost("/api/users", async Task<Results<Created<UserDto>, ValidationProblem>> (
118
+ CreateUserRequest request,
119
+ IValidator<CreateUserRequest> validator,
120
+ IUserService service) =>
121
+ {
122
+ var validation = await validator.ValidateAsync(request);
123
+ if (!validation.IsValid)
124
+ return TypedResults.ValidationProblem(validation.ToDictionary());
125
+
126
+ var user = await service.CreateAsync(request);
127
+ return TypedResults.Created($"/api/users/{user.Id}", user);
128
+ });
129
+ ```
130
+
131
+ ### Request Binding
132
+
133
+ ```csharp
134
+ // Route parameters
135
+ app.MapGet("/users/{id:guid}", (Guid id) => $"User ID: {id}");
136
+
137
+ // Query parameters
138
+ app.MapGet("/search", (string? q, int page = 1, int size = 10) =>
139
+ $"Query: {q}, Page: {page}, Size: {size}");
140
+
141
+ // Header values
142
+ app.MapGet("/headers", ([FromHeader(Name = "X-Request-Id")] string? requestId) =>
143
+ $"Request ID: {requestId}");
144
+
145
+ // Body binding
146
+ app.MapPost("/users", (CreateUserRequest request) => Results.Ok(request));
147
+
148
+ // Complex binding
149
+ app.MapGet("/complex", (
150
+ [FromQuery] string filter,
151
+ [FromHeader(Name = "Authorization")] string? auth,
152
+ [FromServices] IUserService service) =>
153
+ {
154
+ // Use parameters
155
+ });
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Controllers
161
+
162
+ ### Base Controller Setup
163
+
164
+ ```csharp
165
+ [ApiController]
166
+ [Route("api/[controller]")]
167
+ public class UsersController(IUserService userService, ILogger<UsersController> logger)
168
+ : ControllerBase
169
+ {
170
+ [HttpGet]
171
+ [ProducesResponseType<List<UserDto>>(StatusCodes.Status200OK)]
172
+ public async Task<ActionResult<List<UserDto>>> GetAll(CancellationToken ct)
173
+ {
174
+ var users = await userService.GetAllAsync(ct);
175
+ return Ok(users);
176
+ }
177
+
178
+ [HttpGet("{id:guid}")]
179
+ [ProducesResponseType<UserDto>(StatusCodes.Status200OK)]
180
+ [ProducesResponseType(StatusCodes.Status404NotFound)]
181
+ public async Task<ActionResult<UserDto>> GetById(Guid id, CancellationToken ct)
182
+ {
183
+ var user = await userService.GetByIdAsync(id, ct);
184
+ if (user is null)
185
+ {
186
+ logger.LogWarning("User {UserId} not found", id);
187
+ return NotFound();
188
+ }
189
+ return user;
190
+ }
191
+
192
+ [HttpPost]
193
+ [ProducesResponseType<UserDto>(StatusCodes.Status201Created)]
194
+ [ProducesResponseType<ValidationProblemDetails>(StatusCodes.Status400BadRequest)]
195
+ public async Task<ActionResult<UserDto>> Create(
196
+ [FromBody] CreateUserRequest request,
197
+ CancellationToken ct)
198
+ {
199
+ var user = await userService.CreateAsync(request, ct);
200
+ return CreatedAtAction(nameof(GetById), new { id = user.Id }, user);
201
+ }
202
+
203
+ [HttpPut("{id:guid}")]
204
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
205
+ [ProducesResponseType(StatusCodes.Status404NotFound)]
206
+ public async Task<ActionResult> Update(
207
+ Guid id,
208
+ [FromBody] UpdateUserRequest request,
209
+ CancellationToken ct)
210
+ {
211
+ var success = await userService.UpdateAsync(id, request, ct);
212
+ return success ? NoContent() : NotFound();
213
+ }
214
+
215
+ [HttpDelete("{id:guid}")]
216
+ [Authorize(Policy = "Admin")]
217
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
218
+ [ProducesResponseType(StatusCodes.Status404NotFound)]
219
+ public async Task<ActionResult> Delete(Guid id, CancellationToken ct)
220
+ {
221
+ var success = await userService.DeleteAsync(id, ct);
222
+ return success ? NoContent() : NotFound();
223
+ }
224
+ }
225
+ ```
226
+
227
+ ### Model Validation
228
+
229
+ ```csharp
230
+ public class CreateUserRequest
231
+ {
232
+ [Required]
233
+ [StringLength(100, MinimumLength = 2)]
234
+ public string Name { get; set; } = string.Empty;
235
+
236
+ [Required]
237
+ [EmailAddress]
238
+ public string Email { get; set; } = string.Empty;
239
+
240
+ [Required]
241
+ [MinLength(8)]
242
+ [RegularExpression(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$",
243
+ ErrorMessage = "Password must contain uppercase, lowercase, and digit")]
244
+ public string Password { get; set; } = string.Empty;
245
+ }
246
+
247
+ // Custom validation attribute
248
+ public class FutureDateAttribute : ValidationAttribute
249
+ {
250
+ protected override ValidationResult? IsValid(object? value, ValidationContext context)
251
+ {
252
+ if (value is DateTime date && date <= DateTime.UtcNow)
253
+ return new ValidationResult("Date must be in the future");
254
+ return ValidationResult.Success;
255
+ }
256
+ }
257
+ ```
258
+
259
+ ---
260
+
261
+ ## Middleware
262
+
263
+ ### Custom Middleware
264
+
265
+ ```csharp
266
+ public class RequestLoggingMiddleware(RequestDelegate next, ILogger<RequestLoggingMiddleware> logger)
267
+ {
268
+ public async Task InvokeAsync(HttpContext context)
269
+ {
270
+ var requestId = Guid.NewGuid().ToString("N")[..8];
271
+ context.Items["RequestId"] = requestId;
272
+
273
+ logger.LogInformation(
274
+ "Request {RequestId}: {Method} {Path}",
275
+ requestId, context.Request.Method, context.Request.Path);
276
+
277
+ var sw = Stopwatch.StartNew();
278
+
279
+ try
280
+ {
281
+ await next(context);
282
+ }
283
+ finally
284
+ {
285
+ sw.Stop();
286
+ logger.LogInformation(
287
+ "Response {RequestId}: {StatusCode} in {ElapsedMs}ms",
288
+ requestId, context.Response.StatusCode, sw.ElapsedMilliseconds);
289
+ }
290
+ }
291
+ }
292
+
293
+ // Extension method for registration
294
+ public static class MiddlewareExtensions
295
+ {
296
+ public static IApplicationBuilder UseRequestLogging(this IApplicationBuilder app)
297
+ => app.UseMiddleware<RequestLoggingMiddleware>();
298
+ }
299
+
300
+ // Usage in Program.cs
301
+ app.UseRequestLogging();
302
+ ```
303
+
304
+ ### Exception Handling Middleware
305
+
306
+ ```csharp
307
+ public class GlobalExceptionMiddleware(
308
+ RequestDelegate next,
309
+ ILogger<GlobalExceptionMiddleware> logger,
310
+ IHostEnvironment env)
311
+ {
312
+ public async Task InvokeAsync(HttpContext context)
313
+ {
314
+ try
315
+ {
316
+ await next(context);
317
+ }
318
+ catch (ValidationException ex)
319
+ {
320
+ await HandleValidationExceptionAsync(context, ex);
321
+ }
322
+ catch (NotFoundException ex)
323
+ {
324
+ await HandleNotFoundExceptionAsync(context, ex);
325
+ }
326
+ catch (Exception ex)
327
+ {
328
+ await HandleExceptionAsync(context, ex);
329
+ }
330
+ }
331
+
332
+ private Task HandleValidationExceptionAsync(HttpContext context, ValidationException ex)
333
+ {
334
+ context.Response.StatusCode = StatusCodes.Status400BadRequest;
335
+ context.Response.ContentType = "application/problem+json";
336
+
337
+ var problem = new ValidationProblemDetails(
338
+ ex.Errors.GroupBy(e => e.PropertyName)
339
+ .ToDictionary(g => g.Key, g => g.Select(e => e.ErrorMessage).ToArray()))
340
+ {
341
+ Status = StatusCodes.Status400BadRequest,
342
+ Title = "Validation failed"
343
+ };
344
+
345
+ return context.Response.WriteAsJsonAsync(problem);
346
+ }
347
+
348
+ private Task HandleNotFoundExceptionAsync(HttpContext context, NotFoundException ex)
349
+ {
350
+ context.Response.StatusCode = StatusCodes.Status404NotFound;
351
+ context.Response.ContentType = "application/problem+json";
352
+
353
+ var problem = new ProblemDetails
354
+ {
355
+ Status = StatusCodes.Status404NotFound,
356
+ Title = "Not found",
357
+ Detail = ex.Message
358
+ };
359
+
360
+ return context.Response.WriteAsJsonAsync(problem);
361
+ }
362
+
363
+ private Task HandleExceptionAsync(HttpContext context, Exception ex)
364
+ {
365
+ logger.LogError(ex, "Unhandled exception");
366
+
367
+ context.Response.StatusCode = StatusCodes.Status500InternalServerError;
368
+ context.Response.ContentType = "application/problem+json";
369
+
370
+ var problem = new ProblemDetails
371
+ {
372
+ Status = StatusCodes.Status500InternalServerError,
373
+ Title = "Internal server error",
374
+ Detail = env.IsDevelopment() ? ex.Message : "An unexpected error occurred"
375
+ };
376
+
377
+ return context.Response.WriteAsJsonAsync(problem);
378
+ }
379
+ }
380
+ ```
381
+
382
+ ---
383
+
384
+ ## Authentication
385
+
386
+ ### JWT Bearer Authentication
387
+
388
+ ```csharp
389
+ // Program.cs configuration
390
+ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
391
+ .AddJwtBearer(options =>
392
+ {
393
+ options.TokenValidationParameters = new TokenValidationParameters
394
+ {
395
+ ValidateIssuer = true,
396
+ ValidateAudience = true,
397
+ ValidateLifetime = true,
398
+ ValidateIssuerSigningKey = true,
399
+ ValidIssuer = builder.Configuration["Jwt:Issuer"],
400
+ ValidAudience = builder.Configuration["Jwt:Audience"],
401
+ IssuerSigningKey = new SymmetricSecurityKey(
402
+ Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!)),
403
+ ClockSkew = TimeSpan.Zero
404
+ };
405
+ });
406
+
407
+ builder.Services.AddAuthorization();
408
+ ```
409
+
410
+ ### Token Generation Service
411
+
412
+ ```csharp
413
+ public class JwtTokenService(IConfiguration config)
414
+ {
415
+ public string GenerateToken(User user)
416
+ {
417
+ var securityKey = new SymmetricSecurityKey(
418
+ Encoding.UTF8.GetBytes(config["Jwt:Key"]!));
419
+ var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
420
+
421
+ var claims = new[]
422
+ {
423
+ new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
424
+ new Claim(ClaimTypes.Email, user.Email),
425
+ new Claim(ClaimTypes.Name, user.Name),
426
+ new Claim(ClaimTypes.Role, user.Role),
427
+ new Claim("permissions", string.Join(",", user.Permissions))
428
+ };
429
+
430
+ var token = new JwtSecurityToken(
431
+ issuer: config["Jwt:Issuer"],
432
+ audience: config["Jwt:Audience"],
433
+ claims: claims,
434
+ expires: DateTime.UtcNow.AddMinutes(int.Parse(config["Jwt:ExpirationMinutes"]!)),
435
+ signingCredentials: credentials);
436
+
437
+ return new JwtSecurityTokenHandler().WriteToken(token);
438
+ }
439
+
440
+ public string GenerateRefreshToken()
441
+ {
442
+ var randomBytes = new byte[64];
443
+ using var rng = RandomNumberGenerator.Create();
444
+ rng.GetBytes(randomBytes);
445
+ return Convert.ToBase64String(randomBytes);
446
+ }
447
+ }
448
+ ```
449
+
450
+ ### Authorization Policies
451
+
452
+ ```csharp
453
+ builder.Services.AddAuthorization(options =>
454
+ {
455
+ // Role-based policies
456
+ options.AddPolicy("Admin", policy =>
457
+ policy.RequireRole("Admin"));
458
+
459
+ options.AddPolicy("AdminOrManager", policy =>
460
+ policy.RequireRole("Admin", "Manager"));
461
+
462
+ // Claim-based policies
463
+ options.AddPolicy("CanEdit", policy =>
464
+ policy.RequireClaim("permissions", "edit"));
465
+
466
+ options.AddPolicy("CanDelete", policy =>
467
+ policy.RequireClaim("permissions", "delete"));
468
+
469
+ // Custom requirements
470
+ options.AddPolicy("MinimumAge", policy =>
471
+ policy.Requirements.Add(new MinimumAgeRequirement(18)));
472
+
473
+ // Combined requirements
474
+ options.AddPolicy("SeniorEditor", policy =>
475
+ policy.RequireRole("Editor")
476
+ .RequireClaim("experience_years")
477
+ .RequireAssertion(ctx =>
478
+ {
479
+ var years = int.Parse(ctx.User.FindFirstValue("experience_years") ?? "0");
480
+ return years >= 5;
481
+ }));
482
+ });
483
+ ```
484
+
485
+ ### Custom Authorization Handler
486
+
487
+ ```csharp
488
+ public class MinimumAgeRequirement(int age) : IAuthorizationRequirement
489
+ {
490
+ public int MinimumAge { get; } = age;
491
+ }
492
+
493
+ public class MinimumAgeHandler : AuthorizationHandler<MinimumAgeRequirement>
494
+ {
495
+ protected override Task HandleRequirementAsync(
496
+ AuthorizationHandlerContext context,
497
+ MinimumAgeRequirement requirement)
498
+ {
499
+ var birthDateClaim = context.User.FindFirst(c => c.Type == "birthdate");
500
+
501
+ if (birthDateClaim is null)
502
+ return Task.CompletedTask;
503
+
504
+ if (DateTime.TryParse(birthDateClaim.Value, out var birthDate))
505
+ {
506
+ var age = DateTime.Today.Year - birthDate.Year;
507
+ if (birthDate.Date > DateTime.Today.AddYears(-age))
508
+ age--;
509
+
510
+ if (age >= requirement.MinimumAge)
511
+ context.Succeed(requirement);
512
+ }
513
+
514
+ return Task.CompletedTask;
515
+ }
516
+ }
517
+
518
+ // Register handler
519
+ builder.Services.AddSingleton<IAuthorizationHandler, MinimumAgeHandler>();
520
+ ```
521
+
522
+ ---
523
+
524
+ ## CORS Configuration
525
+
526
+ ```csharp
527
+ builder.Services.AddCors(options =>
528
+ {
529
+ options.AddPolicy("Development", policy =>
530
+ policy.AllowAnyOrigin()
531
+ .AllowAnyMethod()
532
+ .AllowAnyHeader());
533
+
534
+ options.AddPolicy("Production", policy =>
535
+ policy.WithOrigins("https://myapp.com", "https://api.myapp.com")
536
+ .WithMethods("GET", "POST", "PUT", "DELETE")
537
+ .WithHeaders("Authorization", "Content-Type")
538
+ .AllowCredentials());
539
+ });
540
+
541
+ // In pipeline
542
+ if (app.Environment.IsDevelopment())
543
+ app.UseCors("Development");
544
+ else
545
+ app.UseCors("Production");
546
+ ```
547
+
548
+ ---
549
+
550
+ ## Rate Limiting
551
+
552
+ ```csharp
553
+ builder.Services.AddRateLimiter(options =>
554
+ {
555
+ options.GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(context =>
556
+ RateLimitPartition.GetFixedWindowLimiter(
557
+ partitionKey: context.User.Identity?.Name ?? context.Request.Headers.Host.ToString(),
558
+ factory: _ => new FixedWindowRateLimiterOptions
559
+ {
560
+ AutoReplenishment = true,
561
+ PermitLimit = 100,
562
+ Window = TimeSpan.FromMinutes(1)
563
+ }));
564
+
565
+ options.AddPolicy("api", context =>
566
+ RateLimitPartition.GetTokenBucketLimiter(
567
+ partitionKey: context.User.Identity?.Name ?? context.Connection.RemoteIpAddress?.ToString() ?? "anonymous",
568
+ factory: _ => new TokenBucketRateLimiterOptions
569
+ {
570
+ TokenLimit = 100,
571
+ ReplenishmentPeriod = TimeSpan.FromSeconds(10),
572
+ TokensPerPeriod = 10
573
+ }));
574
+
575
+ options.OnRejected = async (context, token) =>
576
+ {
577
+ context.HttpContext.Response.StatusCode = StatusCodes.Status429TooManyRequests;
578
+ await context.HttpContext.Response.WriteAsJsonAsync(new
579
+ {
580
+ error = "Too many requests",
581
+ retryAfter = context.Lease.TryGetMetadata(MetadataName.RetryAfter, out var retryAfter)
582
+ ? retryAfter.TotalSeconds
583
+ : 60
584
+ }, token);
585
+ };
586
+ });
587
+
588
+ // Apply to endpoints
589
+ app.MapGet("/api/data", () => "Data")
590
+ .RequireRateLimiting("api");
591
+ ```
592
+
593
+ ---
594
+
595
+ ## Health Checks
596
+
597
+ ```csharp
598
+ builder.Services.AddHealthChecks()
599
+ .AddCheck("self", () => HealthCheckResult.Healthy())
600
+ .AddDbContextCheck<AppDbContext>()
601
+ .AddRedis(builder.Configuration.GetConnectionString("Redis")!)
602
+ .AddUrlGroup(new Uri("https://api.external.com/health"), "external-api");
603
+
604
+ app.MapHealthChecks("/health", new HealthCheckOptions
605
+ {
606
+ ResponseWriter = async (context, report) =>
607
+ {
608
+ context.Response.ContentType = "application/json";
609
+ var result = new
610
+ {
611
+ status = report.Status.ToString(),
612
+ checks = report.Entries.Select(e => new
613
+ {
614
+ name = e.Key,
615
+ status = e.Value.Status.ToString(),
616
+ duration = e.Value.Duration.TotalMilliseconds
617
+ })
618
+ };
619
+ await context.Response.WriteAsJsonAsync(result);
620
+ }
621
+ });
622
+ ```
623
+
624
+ ---
625
+
626
+ Version: 2.0.0
627
+ Last Updated: 2026-01-06