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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. moai_adk/__main__.py +136 -5
  2. moai_adk/astgrep/__init__.py +37 -0
  3. moai_adk/astgrep/analyzer.py +522 -0
  4. moai_adk/astgrep/models.py +124 -0
  5. moai_adk/astgrep/rules.py +179 -0
  6. moai_adk/cli/commands/analyze.py +11 -2
  7. moai_adk/cli/commands/doctor.py +7 -1
  8. moai_adk/cli/commands/init.py +321 -11
  9. moai_adk/cli/commands/language.py +7 -1
  10. moai_adk/cli/commands/rank.py +449 -0
  11. moai_adk/cli/commands/status.py +7 -1
  12. moai_adk/cli/commands/switch.py +325 -0
  13. moai_adk/cli/commands/update.py +296 -23
  14. moai_adk/cli/prompts/init_prompts.py +362 -66
  15. moai_adk/cli/prompts/translations/__init__.py +573 -0
  16. moai_adk/cli/ui/prompts.py +61 -2
  17. moai_adk/cli/worktree/cli.py +106 -1
  18. moai_adk/cli/worktree/manager.py +155 -0
  19. moai_adk/core/config/unified.py +244 -63
  20. moai_adk/core/credentials.py +264 -0
  21. moai_adk/core/error_recovery_system.py +22 -4
  22. moai_adk/core/git/conflict_detector.py +10 -1
  23. moai_adk/core/git/event_detector.py +16 -5
  24. moai_adk/core/integration/engine.py +2 -2
  25. moai_adk/core/integration/integration_tester.py +5 -5
  26. moai_adk/core/language_config_resolver.py +9 -3
  27. moai_adk/core/merge/analyzer.py +509 -324
  28. moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
  29. moai_adk/core/migration/backup_manager.py +54 -4
  30. moai_adk/core/migration/file_migrator.py +174 -2
  31. moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
  32. moai_adk/core/migration/version_detector.py +123 -19
  33. moai_adk/core/migration/version_migrator.py +44 -9
  34. moai_adk/core/model_allocator.py +241 -0
  35. moai_adk/core/project/backup_utils.py +12 -2
  36. moai_adk/core/project/initializer.py +44 -87
  37. moai_adk/core/project/phase_executor.py +95 -33
  38. moai_adk/core/project/validator.py +16 -1
  39. moai_adk/core/quality/trust_checker.py +30 -10
  40. moai_adk/core/rollback_manager.py +60 -25
  41. moai_adk/core/template/backup.py +88 -6
  42. moai_adk/core/template/config.py +33 -9
  43. moai_adk/core/template/merger.py +34 -8
  44. moai_adk/core/template/processor.py +334 -11
  45. moai_adk/core/template_engine.py +10 -1
  46. moai_adk/core/template_variable_synchronizer.py +16 -2
  47. moai_adk/core/version_sync.py +54 -6
  48. moai_adk/foundation/__init__.py +1 -20
  49. moai_adk/foundation/testing.py +1 -1
  50. moai_adk/loop/__init__.py +54 -0
  51. moai_adk/loop/controller.py +305 -0
  52. moai_adk/loop/feedback.py +230 -0
  53. moai_adk/loop/state.py +209 -0
  54. moai_adk/loop/storage.py +220 -0
  55. moai_adk/lsp/__init__.py +70 -0
  56. moai_adk/lsp/client.py +320 -0
  57. moai_adk/lsp/models.py +261 -0
  58. moai_adk/lsp/protocol.py +404 -0
  59. moai_adk/lsp/server_manager.py +248 -0
  60. moai_adk/project/configuration.py +8 -1
  61. moai_adk/py.typed +0 -0
  62. moai_adk/ralph/__init__.py +37 -0
  63. moai_adk/ralph/engine.py +307 -0
  64. moai_adk/rank/__init__.py +21 -0
  65. moai_adk/rank/auth.py +425 -0
  66. moai_adk/rank/client.py +557 -0
  67. moai_adk/rank/config.py +147 -0
  68. moai_adk/rank/hook.py +1503 -0
  69. moai_adk/rank/py.typed +0 -0
  70. moai_adk/statusline/__init__.py +3 -0
  71. moai_adk/statusline/enhanced_output_style_detector.py +5 -5
  72. moai_adk/statusline/main.py +20 -1
  73. moai_adk/statusline/memory_collector.py +268 -0
  74. moai_adk/statusline/renderer.py +54 -38
  75. moai_adk/tag_system/__init__.py +48 -0
  76. moai_adk/tag_system/atomic_ops.py +117 -0
  77. moai_adk/tag_system/linkage.py +335 -0
  78. moai_adk/tag_system/parser.py +176 -0
  79. moai_adk/tag_system/validator.py +200 -0
  80. moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
  81. moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
  82. moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
  83. moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
  84. moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
  85. moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
  86. moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
  87. moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
  88. moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
  89. moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
  90. moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
  91. moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
  92. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
  93. moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
  94. moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
  95. moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
  96. moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
  97. moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
  98. moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
  99. moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
  100. moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
  101. moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
  102. moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
  103. moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
  104. moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
  105. moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
  106. moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
  107. moai_adk/templates/.claude/commands/moai/fix.md +264 -0
  108. moai_adk/templates/.claude/commands/moai/loop.md +363 -0
  109. moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
  110. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
  111. moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
  112. moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
  113. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
  114. moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
  115. moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
  116. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
  117. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
  118. moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
  119. moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
  120. moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
  121. moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
  122. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
  123. moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
  124. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
  125. moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
  126. moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
  127. moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
  128. moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
  129. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
  130. moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
  131. moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
  132. moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
  133. moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
  134. moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
  135. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
  136. moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
  137. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
  138. moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
  139. moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
  140. moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
  141. moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
  142. moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
  143. moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
  144. moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
  145. moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
  146. moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
  147. moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
  148. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
  149. moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
  150. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
  151. moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
  152. moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
  153. moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
  154. moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
  155. moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
  156. moai_adk/templates/.claude/settings.json +154 -77
  157. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
  158. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
  159. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
  160. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
  161. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
  162. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
  163. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
  164. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
  165. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
  166. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
  167. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
  168. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
  169. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
  170. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
  171. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
  172. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
  173. moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
  174. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
  175. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
  176. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
  177. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
  178. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
  179. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
  180. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
  181. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
  182. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
  183. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
  184. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
  185. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
  186. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
  187. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
  188. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
  189. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
  190. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
  191. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
  192. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
  193. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
  194. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
  195. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
  196. moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
  197. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
  198. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
  199. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
  200. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
  201. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
  202. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
  203. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
  204. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
  205. moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
  206. moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
  207. moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
  208. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
  209. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
  210. moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
  211. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
  212. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
  213. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
  214. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
  215. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
  216. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
  217. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
  218. moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
  219. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
  220. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
  221. moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
  222. moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
  223. moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
  224. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
  225. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
  226. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
  227. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
  228. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
  229. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
  230. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
  231. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
  232. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
  233. moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
  234. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
  235. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
  236. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
  237. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
  238. moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
  239. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
  240. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
  241. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
  242. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
  243. moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
  244. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
  245. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
  246. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
  247. moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
  248. moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
  249. moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
  250. moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
  251. moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
  252. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
  253. moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
  254. moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
  255. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
  256. moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
  257. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
  258. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
  259. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
  260. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
  261. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
  262. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
  263. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
  264. moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
  265. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
  266. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
  267. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
  268. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
  269. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
  270. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
  271. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
  272. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
  273. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
  274. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
  275. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
  276. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
  277. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
  278. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
  279. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
  280. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
  281. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
  282. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
  283. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
  284. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
  285. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
  286. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
  287. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
  288. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
  289. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
  290. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
  291. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
  292. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
  293. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
  294. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
  295. moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
  296. moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
  297. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
  298. moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
  299. moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
  300. moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
  301. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
  302. moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
  303. moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
  304. moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
  305. moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
  306. moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
  307. moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
  308. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
  309. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
  310. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
  311. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
  312. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
  313. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
  314. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
  315. moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
  316. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
  317. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
  318. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
  319. moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
  320. moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
  321. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
  322. moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
  323. moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
  324. moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
  325. moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
  326. moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
  327. moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
  328. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
  329. moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
  330. moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
  331. moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
  332. moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
  333. moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
  334. moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
  335. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
  336. moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
  337. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
  338. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
  339. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
  340. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
  341. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
  342. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
  343. moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
  344. moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
  345. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
  346. moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
  347. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
  348. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
  349. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
  350. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
  351. moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
  352. moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
  353. moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
  354. moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
  355. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
  356. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
  357. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
  358. moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
  359. moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
  360. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
  361. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
  362. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
  363. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
  364. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
  365. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
  366. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
  367. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
  368. moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
  369. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
  370. moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
  371. moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
  372. moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
  373. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
  374. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
  375. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
  376. moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
  377. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
  378. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
  379. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
  380. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
  381. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
  382. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
  383. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
  384. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
  385. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
  386. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
  387. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
  388. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
  389. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
  390. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
  391. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
  404. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
  409. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
  416. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
  429. moai_adk/templates/.git-hooks/pre-push +162 -59
  430. moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
  431. moai_adk/templates/.gitignore +65 -107
  432. moai_adk/templates/.lsp.json +152 -0
  433. moai_adk/templates/.mcp.json +2 -20
  434. moai_adk/templates/.moai/announcements/en.json +18 -0
  435. moai_adk/templates/.moai/announcements/ja.json +18 -0
  436. moai_adk/templates/.moai/announcements/ko.json +18 -0
  437. moai_adk/templates/.moai/announcements/zh.json +18 -0
  438. moai_adk/templates/.moai/config/config.yaml +8 -2
  439. moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
  440. moai_adk/templates/.moai/config/sections/language.yaml +2 -2
  441. moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
  442. moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
  443. moai_adk/templates/.moai/config/sections/project.yaml +2 -2
  444. moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
  445. moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
  446. moai_adk/templates/.moai/config/sections/system.yaml +46 -1
  447. moai_adk/templates/.moai/config/sections/user.yaml +1 -1
  448. moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
  449. moai_adk/templates/.moai/llm-configs/glm.json +22 -0
  450. moai_adk/templates/CLAUDE.ja.md +343 -0
  451. moai_adk/templates/CLAUDE.ko.md +343 -0
  452. moai_adk/templates/CLAUDE.md +200 -499
  453. moai_adk/templates/CLAUDE.zh.md +343 -0
  454. moai_adk/utils/common.py +37 -0
  455. moai_adk/version.py +1 -1
  456. moai_adk-1.1.0.dist-info/METADATA +2443 -0
  457. moai_adk-1.1.0.dist-info/RECORD +701 -0
  458. {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
  459. moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
  460. moai_adk/core/config/auto_spec_config.py +0 -340
  461. moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
  462. moai_adk/core/spec/confidence_scoring.py +0 -680
  463. moai_adk/core/spec/ears_template_engine.py +0 -1247
  464. moai_adk/core/spec/quality_validator.py +0 -687
  465. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
  466. moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
  467. moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
  468. moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
  469. moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
  470. moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
  471. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
  472. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
  473. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
  474. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
  475. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
  476. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
  477. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
  478. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
  479. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
  480. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
  481. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
  482. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
  483. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
  484. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
  485. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
  486. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
  487. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
  488. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
  489. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
  490. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
  491. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
  492. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
  493. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
  494. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
  495. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
  496. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
  497. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
  498. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
  499. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
  500. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
  501. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
  502. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
  503. moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
  504. moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
  505. moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
  506. moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
  507. moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
  508. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
  509. moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
  510. moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
  511. moai_adk-0.34.0.dist-info/METADATA +0 -2999
  512. moai_adk-0.34.0.dist-info/RECORD +0 -463
  513. moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
  514. /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
  515. /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  516. /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
  517. /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
  518. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  519. /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
  520. /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
  521. /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
  522. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
  523. /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
  524. {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,1239 @@
1
+ # C++ Production-Ready Code Examples
2
+
3
+ ## Complete CMake Project
4
+
5
+ ### Project Structure
6
+
7
+ ```
8
+ cpp_project/
9
+ ├── CMakeLists.txt
10
+ ├── vcpkg.json
11
+ ├── include/
12
+ │ ├── mylib/
13
+ │ │ ├── core.hpp
14
+ │ │ ├── config.hpp
15
+ │ │ ├── utils.hpp
16
+ │ │ └── models/
17
+ │ │ ├── user.hpp
18
+ │ │ └── product.hpp
19
+ ├── src/
20
+ │ ├── core.cpp
21
+ │ ├── config.cpp
22
+ │ ├── utils.cpp
23
+ │ └── models/
24
+ │ ├── user.cpp
25
+ │ └── product.cpp
26
+ ├── tests/
27
+ │ ├── core_test.cpp
28
+ │ ├── utils_test.cpp
29
+ │ └── models/
30
+ │ └── user_test.cpp
31
+ ├── examples/
32
+ │ └── basic_usage.cpp
33
+ └── docs/
34
+ └── README.md
35
+ ```
36
+
37
+ ### Root CMakeLists.txt
38
+
39
+ ```cmake
40
+ # CMakeLists.txt
41
+ cmake_minimum_required(VERSION 3.28)
42
+ project(MyProject VERSION 1.0.0 LANGUAGES CXX)
43
+
44
+ # C++23 standard
45
+ set(CMAKE_CXX_STANDARD 23)
46
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
47
+ set(CMAKE_CXX_EXTENSIONS OFF)
48
+
49
+ # Export compile commands for IDE integration
50
+ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
51
+
52
+ # Compiler warnings
53
+ add_compile_options(
54
+ $<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra -Wpedantic -Werror>
55
+ $<$<CXX_COMPILER_ID:MSVC>:/W4 /WX>
56
+ )
57
+
58
+ # Optimization flags
59
+ if(CMAKE_BUILD_TYPE STREQUAL "Release")
60
+ add_compile_options(
61
+ $<$<CXX_COMPILER_ID:GNU,Clang>:-O3 -march=native>
62
+ $<$<CXX_COMPILER_ID:MSVC>:/O2>
63
+ )
64
+ endif()
65
+
66
+ # Dependencies with FetchContent
67
+ include(FetchContent)
68
+
69
+ FetchContent_Declare(fmt
70
+ GIT_REPOSITORY https://github.com/fmtlib/fmt
71
+ GIT_TAG 10.2.1
72
+ GIT_SHALLOW TRUE)
73
+
74
+ FetchContent_Declare(spdlog
75
+ GIT_REPOSITORY https://github.com/gabime/spdlog
76
+ GIT_TAG v1.13.0
77
+ GIT_SHALLOW TRUE)
78
+
79
+ FetchContent_Declare(googletest
80
+ GIT_REPOSITORY https://github.com/google/googletest
81
+ GIT_TAG v1.14.0
82
+ GIT_SHALLOW TRUE)
83
+
84
+ FetchContent_Declare(nlohmann_json
85
+ GIT_REPOSITORY https://github.com/nlohmann/json
86
+ GIT_TAG v3.11.3
87
+ GIT_SHALLOW TRUE)
88
+
89
+ FetchContent_MakeAvailable(fmt spdlog googletest nlohmann_json)
90
+
91
+ # Main library
92
+ add_library(mylib STATIC
93
+ src/core.cpp
94
+ src/config.cpp
95
+ src/utils.cpp
96
+ src/models/user.cpp
97
+ src/models/product.cpp
98
+ )
99
+
100
+ target_include_directories(mylib PUBLIC
101
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
102
+ $<INSTALL_INTERFACE:include>
103
+ )
104
+
105
+ target_link_libraries(mylib PUBLIC
106
+ fmt::fmt
107
+ spdlog::spdlog
108
+ nlohmann_json::nlohmann_json
109
+ )
110
+
111
+ # Main executable
112
+ add_executable(myapp src/main.cpp)
113
+ target_link_libraries(myapp PRIVATE mylib)
114
+
115
+ # Testing
116
+ enable_testing()
117
+
118
+ add_executable(mylib_tests
119
+ tests/core_test.cpp
120
+ tests/utils_test.cpp
121
+ tests/models/user_test.cpp
122
+ )
123
+
124
+ target_link_libraries(mylib_tests PRIVATE
125
+ mylib
126
+ GTest::gtest_main
127
+ )
128
+
129
+ include(GoogleTest)
130
+ gtest_discover_tests(mylib_tests)
131
+
132
+ # Installation
133
+ install(TARGETS mylib myapp
134
+ LIBRARY DESTINATION lib
135
+ ARCHIVE DESTINATION lib
136
+ RUNTIME DESTINATION bin
137
+ INCLUDES DESTINATION include
138
+ )
139
+
140
+ install(DIRECTORY include/mylib DESTINATION include)
141
+ ```
142
+
143
+ ### vcpkg.json (Package Management)
144
+
145
+ ```json
146
+ {
147
+ "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
148
+ "name": "myproject",
149
+ "version": "1.0.0",
150
+ "dependencies": [
151
+ "fmt",
152
+ "spdlog",
153
+ "nlohmann-json",
154
+ {
155
+ "name": "gtest",
156
+ "features": ["gmock"]
157
+ }
158
+ ],
159
+ "builtin-baseline": "a42af01b72c28a8e1d7b48107b33e4f286a55ef6"
160
+ }
161
+ ```
162
+
163
+ ---
164
+
165
+ ## C++23 Features Examples
166
+
167
+ ### std::expected Error Handling
168
+
169
+ ```cpp
170
+ // include/mylib/utils.hpp
171
+ #pragma once
172
+ #include <expected>
173
+ #include <string>
174
+ #include <string_view>
175
+ #include <system_error>
176
+
177
+ namespace mylib {
178
+
179
+ enum class ParseError {
180
+ InvalidFormat,
181
+ OutOfRange,
182
+ EmptyInput,
183
+ UnknownError
184
+ };
185
+
186
+ class parse_error_category : public std::error_category {
187
+ public:
188
+ auto name() const noexcept -> const char* override {
189
+ return "parse_error";
190
+ }
191
+
192
+ auto message(int ev) const -> std::string override {
193
+ switch (static_cast<ParseError>(ev)) {
194
+ case ParseError::InvalidFormat:
195
+ return "Invalid format";
196
+ case ParseError::OutOfRange:
197
+ return "Value out of range";
198
+ case ParseError::EmptyInput:
199
+ return "Empty input";
200
+ default:
201
+ return "Unknown error";
202
+ }
203
+ }
204
+ };
205
+
206
+ inline const parse_error_category& parse_error_category_instance() {
207
+ static parse_error_category instance;
208
+ return instance;
209
+ }
210
+
211
+ auto make_error_code(ParseError e) -> std::error_code {
212
+ return {static_cast<int>(e), parse_error_category_instance()};
213
+ }
214
+
215
+ auto parse_int(std::string_view str) -> std::expected<int, std::error_code>;
216
+ auto parse_double(std::string_view str) -> std::expected<double, std::error_code>;
217
+
218
+ template<typename T>
219
+ auto safe_divide(T numerator, T denominator) -> std::expected<T, std::error_code> {
220
+ if (denominator == T{0}) {
221
+ return std::unexpected(make_error_code(ParseError::OutOfRange));
222
+ }
223
+ return numerator / denominator;
224
+ }
225
+
226
+ } // namespace mylib
227
+
228
+ namespace std {
229
+ template<>
230
+ struct is_error_code_enum<mylib::ParseError> : true_type {};
231
+ }
232
+ ```
233
+
234
+ ```cpp
235
+ // src/utils.cpp
236
+ #include "mylib/utils.hpp"
237
+ #include <charconv>
238
+ #include <stdexcept>
239
+
240
+ namespace mylib {
241
+
242
+ auto parse_int(std::string_view str) -> std::expected<int, std::error_code> {
243
+ if (str.empty()) {
244
+ return std::unexpected(make_error_code(ParseError::EmptyInput));
245
+ }
246
+
247
+ int value{};
248
+ auto [ptr, ec] = std::from_chars(str.data(), str.data() + str.size(), value);
249
+
250
+ if (ec == std::errc::invalid_argument) {
251
+ return std::unexpected(make_error_code(ParseError::InvalidFormat));
252
+ }
253
+ if (ec == std::errc::result_out_of_range) {
254
+ return std::unexpected(make_error_code(ParseError::OutOfRange));
255
+ }
256
+
257
+ return value;
258
+ }
259
+
260
+ auto parse_double(std::string_view str) -> std::expected<double, std::error_code> {
261
+ if (str.empty()) {
262
+ return std::unexpected(make_error_code(ParseError::EmptyInput));
263
+ }
264
+
265
+ try {
266
+ size_t pos = 0;
267
+ double value = std::stod(std::string(str), &pos);
268
+ if (pos != str.size()) {
269
+ return std::unexpected(make_error_code(ParseError::InvalidFormat));
270
+ }
271
+ return value;
272
+ } catch (const std::invalid_argument&) {
273
+ return std::unexpected(make_error_code(ParseError::InvalidFormat));
274
+ } catch (const std::out_of_range&) {
275
+ return std::unexpected(make_error_code(ParseError::OutOfRange));
276
+ }
277
+ }
278
+
279
+ } // namespace mylib
280
+ ```
281
+
282
+ ### std::print and std::format
283
+
284
+ ```cpp
285
+ // examples/print_format.cpp
286
+ #include <print>
287
+ #include <format>
288
+ #include <vector>
289
+ #include <string>
290
+
291
+ struct User {
292
+ int id;
293
+ std::string name;
294
+ double balance;
295
+ };
296
+
297
+ template<>
298
+ struct std::formatter<User> {
299
+ constexpr auto parse(format_parse_context& ctx) {
300
+ return ctx.begin();
301
+ }
302
+
303
+ auto format(const User& user, format_context& ctx) const {
304
+ return std::format_to(
305
+ ctx.out(),
306
+ "User(id={}, name='{}', balance=${:.2f})",
307
+ user.id, user.name, user.balance
308
+ );
309
+ }
310
+ };
311
+
312
+ int main() {
313
+ // Basic printing
314
+ std::println("Hello, {}!", "World");
315
+ std::print("Value: {}, Hex: {:#x}\n", 255, 255);
316
+ std::println("Formatted: {:.2f}", 3.14159);
317
+
318
+ // Custom formatter
319
+ User user{1, "Alice", 1234.56};
320
+ std::println("{}", user);
321
+ // Output: User(id=1, name='Alice', balance=$1234.56)
322
+
323
+ // Vector formatting
324
+ std::vector<int> numbers{1, 2, 3, 4, 5};
325
+ std::println("Numbers: [{}]",
326
+ std::format("{}", fmt::join(numbers, ", ")));
327
+
328
+ // Alignment and width
329
+ std::println("{:>10} | {:>10}", "Name", "Age");
330
+ std::println("{:->21}", "");
331
+ std::println("{:>10} | {:>10}", "Alice", 30);
332
+ std::println("{:>10} | {:>10}", "Bob", 25);
333
+
334
+ return 0;
335
+ }
336
+ ```
337
+
338
+ ### Deducing This (Explicit Object Parameter)
339
+
340
+ ```cpp
341
+ // include/mylib/builder.hpp
342
+ #pragma once
343
+ #include <string>
344
+ #include <utility>
345
+
346
+ namespace mylib {
347
+
348
+ class QueryBuilder {
349
+ std::string query_;
350
+
351
+ public:
352
+ QueryBuilder() = default;
353
+
354
+ template<typename Self>
355
+ auto select(this Self&& self, std::string_view columns) -> Self&& {
356
+ self.query_ += "SELECT ";
357
+ self.query_ += columns;
358
+ return std::forward<Self>(self);
359
+ }
360
+
361
+ template<typename Self>
362
+ auto from(this Self&& self, std::string_view table) -> Self&& {
363
+ self.query_ += " FROM ";
364
+ self.query_ += table;
365
+ return std::forward<Self>(self);
366
+ }
367
+
368
+ template<typename Self>
369
+ auto where(this Self&& self, std::string_view condition) -> Self&& {
370
+ self.query_ += " WHERE ";
371
+ self.query_ += condition;
372
+ return std::forward<Self>(self);
373
+ }
374
+
375
+ template<typename Self>
376
+ auto order_by(this Self&& self, std::string_view column) -> Self&& {
377
+ self.query_ += " ORDER BY ";
378
+ self.query_ += column;
379
+ return std::forward<Self>(self);
380
+ }
381
+
382
+ auto build() const -> std::string {
383
+ return query_;
384
+ }
385
+ };
386
+
387
+ } // namespace mylib
388
+ ```
389
+
390
+ ```cpp
391
+ // Usage example
392
+ auto query = mylib::QueryBuilder{}
393
+ .select("id, name, email")
394
+ .from("users")
395
+ .where("age > 18")
396
+ .order_by("name ASC")
397
+ .build();
398
+ // Result: "SELECT id, name, email FROM users WHERE age > 18 ORDER BY name ASC"
399
+ ```
400
+
401
+ ---
402
+
403
+ ## C++20 Features Examples
404
+
405
+ ### Concepts and Constraints
406
+
407
+ ```cpp
408
+ // include/mylib/concepts.hpp
409
+ #pragma once
410
+ #include <concepts>
411
+ #include <ranges>
412
+ #include <string>
413
+
414
+ namespace mylib::concepts {
415
+
416
+ // Basic concepts
417
+ template<typename T>
418
+ concept Numeric = std::integral<T> || std::floating_point<T>;
419
+
420
+ template<typename T>
421
+ concept Arithmetic = requires(T a, T b) {
422
+ { a + b } -> std::same_as<T>;
423
+ { a - b } -> std::same_as<T>;
424
+ { a * b } -> std::same_as<T>;
425
+ { a / b } -> std::same_as<T>;
426
+ };
427
+
428
+ template<typename T>
429
+ concept Comparable = requires(const T& a, const T& b) {
430
+ { a < b } -> std::convertible_to<bool>;
431
+ { a > b } -> std::convertible_to<bool>;
432
+ { a <= b } -> std::convertible_to<bool>;
433
+ { a >= b } -> std::convertible_to<bool>;
434
+ { a == b } -> std::convertible_to<bool>;
435
+ { a != b } -> std::convertible_to<bool>;
436
+ };
437
+
438
+ template<typename T>
439
+ concept Hashable = requires(T a) {
440
+ { std::hash<T>{}(a) } -> std::convertible_to<std::size_t>;
441
+ };
442
+
443
+ template<typename T>
444
+ concept Serializable = requires(const T& t) {
445
+ { t.to_json() } -> std::convertible_to<std::string>;
446
+ { T::from_json(std::declval<std::string>()) } -> std::same_as<T>;
447
+ };
448
+
449
+ template<typename Container, typename Value>
450
+ concept ContainerOf = std::ranges::range<Container> &&
451
+ std::same_as<std::ranges::range_value_t<Container>, Value>;
452
+
453
+ // Advanced concepts
454
+ template<typename T>
455
+ concept Resource = requires(T t) {
456
+ typename T::handle_type;
457
+ { t.acquire() } -> std::same_as<typename T::handle_type>;
458
+ { t.release(std::declval<typename T::handle_type>()) } -> std::same_as<void>;
459
+ };
460
+
461
+ } // namespace mylib::concepts
462
+ ```
463
+
464
+ ```cpp
465
+ // src/algorithms.cpp
466
+ #include "mylib/concepts.hpp"
467
+ #include <algorithm>
468
+ #include <vector>
469
+ #include <ranges>
470
+
471
+ namespace mylib {
472
+
473
+ template<concepts::Numeric T>
474
+ auto sum(const std::vector<T>& values) -> T {
475
+ T result{};
476
+ for (const auto& v : values) {
477
+ result += v;
478
+ }
479
+ return result;
480
+ }
481
+
482
+ template<concepts::Comparable T>
483
+ auto find_max(const std::vector<T>& values) -> T {
484
+ return *std::ranges::max_element(values);
485
+ }
486
+
487
+ template<typename Container>
488
+ requires concepts::ContainerOf<Container, int>
489
+ auto filter_positive(const Container& container) -> std::vector<int> {
490
+ auto positive_only = container
491
+ | std::views::filter([](int n) { return n > 0; });
492
+ return {positive_only.begin(), positive_only.end()};
493
+ }
494
+
495
+ } // namespace mylib
496
+ ```
497
+
498
+ ### Ranges and Views
499
+
500
+ ```cpp
501
+ // include/mylib/range_algorithms.hpp
502
+ #pragma once
503
+ #include <ranges>
504
+ #include <vector>
505
+ #include <algorithm>
506
+ #include <functional>
507
+
508
+ namespace mylib::ranges {
509
+
510
+ template<std::ranges::input_range R, typename Pred>
511
+ auto filter_and_transform(R&& range, Pred&& predicate, auto&& transform) {
512
+ return std::forward<R>(range)
513
+ | std::views::filter(std::forward<Pred>(predicate))
514
+ | std::views::transform(std::forward<decltype(transform)>(transform));
515
+ }
516
+
517
+ template<std::ranges::input_range R>
518
+ auto take_while_sum_less_than(R&& range, int threshold) {
519
+ auto result = std::vector<std::ranges::range_value_t<R>>{};
520
+ int current_sum = 0;
521
+
522
+ for (const auto& value : range) {
523
+ if (current_sum + value >= threshold) {
524
+ break;
525
+ }
526
+ current_sum += value;
527
+ result.push_back(value);
528
+ }
529
+
530
+ return result;
531
+ }
532
+
533
+ template<std::ranges::input_range R>
534
+ auto sliding_window(R&& range, std::size_t window_size) {
535
+ return std::forward<R>(range)
536
+ | std::views::slide(window_size);
537
+ }
538
+
539
+ } // namespace mylib::ranges
540
+ ```
541
+
542
+ ```cpp
543
+ // Usage examples
544
+ #include "mylib/range_algorithms.hpp"
545
+ #include <print>
546
+
547
+ int main() {
548
+ std::vector<int> numbers{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
549
+
550
+ // Filter even numbers and square them
551
+ auto result = mylib::ranges::filter_and_transform(
552
+ numbers,
553
+ [](int n) { return n % 2 == 0; },
554
+ [](int n) { return n * n; }
555
+ );
556
+
557
+ for (const auto& n : result) {
558
+ std::println("{}", n); // Prints: 4, 16, 36, 64, 100
559
+ }
560
+
561
+ // Take elements while sum is less than threshold
562
+ auto partial = mylib::ranges::take_while_sum_less_than(numbers, 20);
563
+ // Result: {1, 2, 3, 4, 5, 6} (sum = 21 would exceed 20)
564
+
565
+ // Sliding window
566
+ for (const auto window : mylib::ranges::sliding_window(numbers, 3)) {
567
+ std::print("[");
568
+ for (const auto& n : window) {
569
+ std::print("{}, ", n);
570
+ }
571
+ std::println("]");
572
+ }
573
+
574
+ return 0;
575
+ }
576
+ ```
577
+
578
+ ### Coroutines
579
+
580
+ ```cpp
581
+ // include/mylib/generator.hpp
582
+ #pragma once
583
+ #include <coroutine>
584
+ #include <exception>
585
+ #include <utility>
586
+
587
+ namespace mylib {
588
+
589
+ template<typename T>
590
+ class Generator {
591
+ public:
592
+ struct promise_type {
593
+ T current_value;
594
+ std::exception_ptr exception;
595
+
596
+ auto get_return_object() -> Generator {
597
+ return Generator{
598
+ std::coroutine_handle<promise_type>::from_promise(*this)
599
+ };
600
+ }
601
+
602
+ auto initial_suspend() -> std::suspend_always { return {}; }
603
+ auto final_suspend() noexcept -> std::suspend_always { return {}; }
604
+
605
+ auto yield_value(T value) -> std::suspend_always {
606
+ current_value = std::move(value);
607
+ return {};
608
+ }
609
+
610
+ auto return_void() -> void {}
611
+
612
+ auto unhandled_exception() -> void {
613
+ exception = std::current_exception();
614
+ }
615
+ };
616
+
617
+ explicit Generator(std::coroutine_handle<promise_type> h)
618
+ : handle_(h) {}
619
+
620
+ ~Generator() {
621
+ if (handle_) {
622
+ handle_.destroy();
623
+ }
624
+ }
625
+
626
+ Generator(const Generator&) = delete;
627
+ auto operator=(const Generator&) -> Generator& = delete;
628
+
629
+ Generator(Generator&& other) noexcept
630
+ : handle_(std::exchange(other.handle_, {})) {}
631
+
632
+ auto operator=(Generator&& other) noexcept -> Generator& {
633
+ if (this != &other) {
634
+ if (handle_) {
635
+ handle_.destroy();
636
+ }
637
+ handle_ = std::exchange(other.handle_, {});
638
+ }
639
+ return *this;
640
+ }
641
+
642
+ auto next() -> bool {
643
+ handle_.resume();
644
+ return !handle_.done();
645
+ }
646
+
647
+ auto value() const -> const T& {
648
+ return handle_.promise().current_value;
649
+ }
650
+
651
+ private:
652
+ std::coroutine_handle<promise_type> handle_;
653
+ };
654
+
655
+ } // namespace mylib
656
+ ```
657
+
658
+ ```cpp
659
+ // examples/coroutine_usage.cpp
660
+ #include "mylib/generator.hpp"
661
+ #include <print>
662
+
663
+ auto fibonacci() -> mylib::Generator<int> {
664
+ int a = 0, b = 1;
665
+ while (true) {
666
+ co_yield a;
667
+ auto temp = a;
668
+ a = b;
669
+ b = temp + b;
670
+ }
671
+ }
672
+
673
+ auto range(int start, int end, int step = 1) -> mylib::Generator<int> {
674
+ for (int i = start; i < end; i += step) {
675
+ co_yield i;
676
+ }
677
+ }
678
+
679
+ int main() {
680
+ // Fibonacci sequence
681
+ auto fib = fibonacci();
682
+ for (int i = 0; i < 10 && fib.next(); ++i) {
683
+ std::println("{}", fib.value());
684
+ }
685
+
686
+ // Custom range
687
+ auto nums = range(0, 20, 3);
688
+ while (nums.next()) {
689
+ std::println("{}", nums.value());
690
+ }
691
+
692
+ return 0;
693
+ }
694
+ ```
695
+
696
+ ---
697
+
698
+ ## Modern Memory Management
699
+
700
+ ### RAII Patterns
701
+
702
+ ```cpp
703
+ // include/mylib/file_handle.hpp
704
+ #pragma once
705
+ #include <cstdio>
706
+ #include <string_view>
707
+ #include <expected>
708
+ #include <system_error>
709
+
710
+ namespace mylib {
711
+
712
+ class FileHandle {
713
+ FILE* file_ = nullptr;
714
+
715
+ public:
716
+ FileHandle() = default;
717
+
718
+ explicit FileHandle(std::string_view filename, std::string_view mode) {
719
+ file_ = std::fopen(filename.data(), mode.data());
720
+ }
721
+
722
+ ~FileHandle() {
723
+ close();
724
+ }
725
+
726
+ // Delete copy operations
727
+ FileHandle(const FileHandle&) = delete;
728
+ auto operator=(const FileHandle&) -> FileHandle& = delete;
729
+
730
+ // Move operations
731
+ FileHandle(FileHandle&& other) noexcept
732
+ : file_(std::exchange(other.file_, nullptr)) {}
733
+
734
+ auto operator=(FileHandle&& other) noexcept -> FileHandle& {
735
+ if (this != &other) {
736
+ close();
737
+ file_ = std::exchange(other.file_, nullptr);
738
+ }
739
+ return *this;
740
+ }
741
+
742
+ auto is_open() const -> bool {
743
+ return file_ != nullptr;
744
+ }
745
+
746
+ auto get() const -> FILE* {
747
+ return file_;
748
+ }
749
+
750
+ auto close() -> void {
751
+ if (file_) {
752
+ std::fclose(file_);
753
+ file_ = nullptr;
754
+ }
755
+ }
756
+
757
+ auto write(std::string_view data) -> std::expected<void, std::error_code> {
758
+ if (!file_) {
759
+ return std::unexpected(
760
+ std::make_error_code(std::errc::bad_file_descriptor)
761
+ );
762
+ }
763
+
764
+ auto written = std::fwrite(data.data(), 1, data.size(), file_);
765
+ if (written != data.size()) {
766
+ return std::unexpected(
767
+ std::make_error_code(std::errc::io_error)
768
+ );
769
+ }
770
+
771
+ return {};
772
+ }
773
+
774
+ auto read(char* buffer, size_t size)
775
+ -> std::expected<size_t, std::error_code> {
776
+ if (!file_) {
777
+ return std::unexpected(
778
+ std::make_error_code(std::errc::bad_file_descriptor)
779
+ );
780
+ }
781
+
782
+ auto bytes_read = std::fread(buffer, 1, size, file_);
783
+ if (std::ferror(file_)) {
784
+ return std::unexpected(
785
+ std::make_error_code(std::errc::io_error)
786
+ );
787
+ }
788
+
789
+ return bytes_read;
790
+ }
791
+ };
792
+
793
+ } // namespace mylib
794
+ ```
795
+
796
+ ### Smart Pointer Patterns
797
+
798
+ ```cpp
799
+ // include/mylib/connection_pool.hpp
800
+ #pragma once
801
+ #include <memory>
802
+ #include <vector>
803
+ #include <mutex>
804
+ #include <condition_variable>
805
+ #include <chrono>
806
+
807
+ namespace mylib {
808
+
809
+ class Connection {
810
+ public:
811
+ explicit Connection(int id) : id_(id) {}
812
+ auto id() const -> int { return id_; }
813
+ auto execute_query(std::string_view query) -> bool {
814
+ // Simulate query execution
815
+ return true;
816
+ }
817
+
818
+ private:
819
+ int id_;
820
+ };
821
+
822
+ class ConnectionPool {
823
+ std::vector<std::unique_ptr<Connection>> available_;
824
+ std::vector<std::unique_ptr<Connection>> in_use_;
825
+ mutable std::mutex mutex_;
826
+ std::condition_variable cv_;
827
+ size_t max_connections_;
828
+
829
+ public:
830
+ explicit ConnectionPool(size_t max_connections)
831
+ : max_connections_(max_connections) {
832
+ available_.reserve(max_connections);
833
+ for (size_t i = 0; i < max_connections; ++i) {
834
+ available_.push_back(std::make_unique<Connection>(i));
835
+ }
836
+ }
837
+
838
+ auto acquire(std::chrono::milliseconds timeout = std::chrono::seconds(5))
839
+ -> std::unique_ptr<Connection> {
840
+ std::unique_lock lock(mutex_);
841
+
842
+ if (!cv_.wait_for(lock, timeout, [this] {
843
+ return !available_.empty();
844
+ })) {
845
+ return nullptr; // Timeout
846
+ }
847
+
848
+ auto conn = std::move(available_.back());
849
+ available_.pop_back();
850
+ in_use_.push_back(std::move(conn));
851
+ return std::move(in_use_.back());
852
+ }
853
+
854
+ auto release(std::unique_ptr<Connection> conn) -> void {
855
+ std::lock_guard lock(mutex_);
856
+
857
+ auto it = std::ranges::find_if(in_use_, [&](const auto& c) {
858
+ return c.get() == conn.get();
859
+ });
860
+
861
+ if (it != in_use_.end()) {
862
+ available_.push_back(std::move(*it));
863
+ in_use_.erase(it);
864
+ cv_.notify_one();
865
+ }
866
+ }
867
+
868
+ auto size() const -> size_t {
869
+ std::lock_guard lock(mutex_);
870
+ return available_.size() + in_use_.size();
871
+ }
872
+ };
873
+
874
+ } // namespace mylib
875
+ ```
876
+
877
+ ### Custom Deleters
878
+
879
+ ```cpp
880
+ // include/mylib/resource_handle.hpp
881
+ #pragma once
882
+ #include <memory>
883
+ #include <cstdlib>
884
+
885
+ namespace mylib {
886
+
887
+ // Custom deleter for C-style arrays
888
+ struct CArrayDeleter {
889
+ auto operator()(void* ptr) const -> void {
890
+ std::free(ptr);
891
+ }
892
+ };
893
+
894
+ using CArrayPtr = std::unique_ptr<void, CArrayDeleter>;
895
+
896
+ // Factory function for C-style arrays
897
+ template<typename T>
898
+ auto make_c_array(size_t size) -> std::unique_ptr<T[], CArrayDeleter> {
899
+ auto ptr = static_cast<T*>(std::malloc(size * sizeof(T)));
900
+ return {ptr, CArrayDeleter{}};
901
+ }
902
+
903
+ // Socket handle with custom deleter
904
+ struct SocketDeleter {
905
+ auto operator()(int* socket) const -> void {
906
+ if (socket && *socket >= 0) {
907
+ // close(*socket); // Platform-specific close
908
+ delete socket;
909
+ }
910
+ }
911
+ };
912
+
913
+ using SocketHandle = std::unique_ptr<int, SocketDeleter>;
914
+
915
+ auto create_socket() -> SocketHandle {
916
+ // Simulate socket creation
917
+ int fd = 42; // Simulated file descriptor
918
+ return SocketHandle(new int(fd));
919
+ }
920
+
921
+ } // namespace mylib
922
+ ```
923
+
924
+ ---
925
+
926
+ ## Testing with Google Test
927
+
928
+ ### Basic Test Structure
929
+
930
+ ```cpp
931
+ // tests/core_test.cpp
932
+ #include <gtest/gtest.h>
933
+ #include "mylib/utils.hpp"
934
+ #include "mylib/concepts.hpp"
935
+
936
+ class UtilsTest : public ::testing::Test {
937
+ protected:
938
+ void SetUp() override {
939
+ // Setup code before each test
940
+ }
941
+
942
+ void TearDown() override {
943
+ // Cleanup code after each test
944
+ }
945
+ };
946
+
947
+ TEST_F(UtilsTest, ParseIntSuccess) {
948
+ auto result = mylib::parse_int("42");
949
+ ASSERT_TRUE(result.has_value());
950
+ EXPECT_EQ(*result, 42);
951
+ }
952
+
953
+ TEST_F(UtilsTest, ParseIntNegative) {
954
+ auto result = mylib::parse_int("-123");
955
+ ASSERT_TRUE(result.has_value());
956
+ EXPECT_EQ(*result, -123);
957
+ }
958
+
959
+ TEST_F(UtilsTest, ParseIntInvalidFormat) {
960
+ auto result = mylib::parse_int("abc");
961
+ ASSERT_FALSE(result.has_value());
962
+ EXPECT_EQ(result.error(), mylib::make_error_code(mylib::ParseError::InvalidFormat));
963
+ }
964
+
965
+ TEST_F(UtilsTest, ParseIntEmptyInput) {
966
+ auto result = mylib::parse_int("");
967
+ ASSERT_FALSE(result.has_value());
968
+ EXPECT_EQ(result.error(), mylib::make_error_code(mylib::ParseError::EmptyInput));
969
+ }
970
+
971
+ TEST(SafeDivideTest, ValidDivision) {
972
+ auto result = mylib::safe_divide(10, 2);
973
+ ASSERT_TRUE(result.has_value());
974
+ EXPECT_EQ(*result, 5);
975
+ }
976
+
977
+ TEST(SafeDivideTest, DivisionByZero) {
978
+ auto result = mylib::safe_divide(10, 0);
979
+ ASSERT_FALSE(result.has_value());
980
+ }
981
+ ```
982
+
983
+ ### Parameterized Tests
984
+
985
+ ```cpp
986
+ // tests/parametrized_test.cpp
987
+ #include <gtest/gtest.h>
988
+ #include "mylib/utils.hpp"
989
+
990
+ struct ParseTestCase {
991
+ std::string input;
992
+ bool should_succeed;
993
+ int expected_value;
994
+ };
995
+
996
+ class ParseIntParametrizedTest
997
+ : public ::testing::TestWithParam<ParseTestCase> {
998
+ };
999
+
1000
+ TEST_P(ParseIntParametrizedTest, ParseVariousInputs) {
1001
+ const auto& test_case = GetParam();
1002
+ auto result = mylib::parse_int(test_case.input);
1003
+
1004
+ if (test_case.should_succeed) {
1005
+ ASSERT_TRUE(result.has_value());
1006
+ EXPECT_EQ(*result, test_case.expected_value);
1007
+ } else {
1008
+ ASSERT_FALSE(result.has_value());
1009
+ }
1010
+ }
1011
+
1012
+ INSTANTIATE_TEST_SUITE_P(
1013
+ ParseIntTests,
1014
+ ParseIntParametrizedTest,
1015
+ ::testing::Values(
1016
+ ParseTestCase{"0", true, 0},
1017
+ ParseTestCase{"42", true, 42},
1018
+ ParseTestCase{"-123", true, -123},
1019
+ ParseTestCase{"2147483647", true, 2147483647},
1020
+ ParseTestCase{"-2147483648", true, -2147483648},
1021
+ ParseTestCase{"abc", false, 0},
1022
+ ParseTestCase{"12.34", false, 0},
1023
+ ParseTestCase{"", false, 0}
1024
+ )
1025
+ );
1026
+ ```
1027
+
1028
+ ### Mock Objects
1029
+
1030
+ ```cpp
1031
+ // tests/mock_test.cpp
1032
+ #include <gtest/gtest.h>
1033
+ #include <gmock/gmock.h>
1034
+
1035
+ class DatabaseInterface {
1036
+ public:
1037
+ virtual ~DatabaseInterface() = default;
1038
+ virtual auto execute_query(std::string_view query) -> bool = 0;
1039
+ virtual auto fetch_result() -> std::vector<std::string> = 0;
1040
+ };
1041
+
1042
+ class MockDatabase : public DatabaseInterface {
1043
+ public:
1044
+ MOCK_METHOD(bool, execute_query, (std::string_view), (override));
1045
+ MOCK_METHOD(std::vector<std::string>, fetch_result, (), (override));
1046
+ };
1047
+
1048
+ class UserService {
1049
+ DatabaseInterface& db_;
1050
+
1051
+ public:
1052
+ explicit UserService(DatabaseInterface& db) : db_(db) {}
1053
+
1054
+ auto get_user_names() -> std::vector<std::string> {
1055
+ if (db_.execute_query("SELECT name FROM users")) {
1056
+ return db_.fetch_result();
1057
+ }
1058
+ return {};
1059
+ }
1060
+ };
1061
+
1062
+ TEST(UserServiceTest, GetUserNamesSuccess) {
1063
+ MockDatabase mock_db;
1064
+
1065
+ EXPECT_CALL(mock_db, execute_query(::testing::_))
1066
+ .WillOnce(::testing::Return(true));
1067
+
1068
+ EXPECT_CALL(mock_db, fetch_result())
1069
+ .WillOnce(::testing::Return(
1070
+ std::vector<std::string>{"Alice", "Bob", "Charlie"}
1071
+ ));
1072
+
1073
+ UserService service(mock_db);
1074
+ auto names = service.get_user_names();
1075
+
1076
+ ASSERT_EQ(names.size(), 3);
1077
+ EXPECT_EQ(names[0], "Alice");
1078
+ EXPECT_EQ(names[1], "Bob");
1079
+ EXPECT_EQ(names[2], "Charlie");
1080
+ }
1081
+ ```
1082
+
1083
+ ---
1084
+
1085
+ ## Concurrency Examples
1086
+
1087
+ ### std::jthread and Stop Tokens
1088
+
1089
+ ```cpp
1090
+ // examples/jthread_example.cpp
1091
+ #include <thread>
1092
+ #include <stop_token>
1093
+ #include <chrono>
1094
+ #include <print>
1095
+ #include <queue>
1096
+ #include <mutex>
1097
+
1098
+ class TaskQueue {
1099
+ std::queue<std::string> tasks_;
1100
+ mutable std::mutex mutex_;
1101
+
1102
+ public:
1103
+ auto push(std::string task) -> void {
1104
+ std::lock_guard lock(mutex_);
1105
+ tasks_.push(std::move(task));
1106
+ }
1107
+
1108
+ auto pop() -> std::optional<std::string> {
1109
+ std::lock_guard lock(mutex_);
1110
+ if (tasks_.empty()) {
1111
+ return std::nullopt;
1112
+ }
1113
+ auto task = std::move(tasks_.front());
1114
+ tasks_.pop();
1115
+ return task;
1116
+ }
1117
+
1118
+ auto size() const -> size_t {
1119
+ std::lock_guard lock(mutex_);
1120
+ return tasks_.size();
1121
+ }
1122
+ };
1123
+
1124
+ auto worker(std::stop_token stoken, TaskQueue& queue, int worker_id) -> void {
1125
+ std::println("Worker {} started", worker_id);
1126
+
1127
+ while (!stoken.stop_requested()) {
1128
+ if (auto task = queue.pop()) {
1129
+ std::println("Worker {} processing: {}", worker_id, *task);
1130
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
1131
+ } else {
1132
+ std::this_thread::sleep_for(std::chrono::milliseconds(10));
1133
+ }
1134
+ }
1135
+
1136
+ std::println("Worker {} stopped", worker_id);
1137
+ }
1138
+
1139
+ int main() {
1140
+ TaskQueue queue;
1141
+
1142
+ // Create worker threads
1143
+ std::jthread worker1(worker, std::ref(queue), 1);
1144
+ std::jthread worker2(worker, std::ref(queue), 2);
1145
+
1146
+ // Add tasks
1147
+ for (int i = 0; i < 10; ++i) {
1148
+ queue.push(std::format("Task {}", i));
1149
+ }
1150
+
1151
+ // Wait for tasks to complete
1152
+ while (queue.size() > 0) {
1153
+ std::this_thread::sleep_for(std::chrono::milliseconds(50));
1154
+ }
1155
+
1156
+ // Workers automatically stopped when jthread is destroyed
1157
+ std::println("All tasks completed");
1158
+
1159
+ return 0;
1160
+ }
1161
+ ```
1162
+
1163
+ ### std::latch and std::barrier
1164
+
1165
+ ```cpp
1166
+ // examples/sync_primitives.cpp
1167
+ #include <latch>
1168
+ #include <barrier>
1169
+ #include <thread>
1170
+ #include <vector>
1171
+ #include <print>
1172
+ #include <chrono>
1173
+
1174
+ auto latch_example() -> void {
1175
+ const int num_workers = 5;
1176
+ std::latch ready(num_workers);
1177
+ std::latch done(num_workers);
1178
+
1179
+ auto worker = [&](int id) {
1180
+ std::println("Worker {} initializing...", id);
1181
+ std::this_thread::sleep_for(std::chrono::milliseconds(100 * id));
1182
+
1183
+ ready.count_down();
1184
+ ready.wait(); // Wait for all workers to be ready
1185
+
1186
+ std::println("Worker {} executing", id);
1187
+ std::this_thread::sleep_for(std::chrono::milliseconds(50));
1188
+
1189
+ done.count_down();
1190
+ };
1191
+
1192
+ std::vector<std::jthread> workers;
1193
+ for (int i = 0; i < num_workers; ++i) {
1194
+ workers.emplace_back(worker, i);
1195
+ }
1196
+
1197
+ done.wait();
1198
+ std::println("All workers completed");
1199
+ }
1200
+
1201
+ auto barrier_example() -> void {
1202
+ const int num_iterations = 3;
1203
+ const int num_workers = 4;
1204
+
1205
+ auto on_completion = []() noexcept {
1206
+ std::println("--- Phase completed ---");
1207
+ };
1208
+
1209
+ std::barrier sync_point(num_workers, on_completion);
1210
+
1211
+ auto worker = [&](int id) {
1212
+ for (int i = 0; i < num_iterations; ++i) {
1213
+ std::println("Worker {} phase {}", id, i);
1214
+ std::this_thread::sleep_for(std::chrono::milliseconds(50 * id));
1215
+ sync_point.arrive_and_wait();
1216
+ }
1217
+ };
1218
+
1219
+ std::vector<std::jthread> workers;
1220
+ for (int i = 0; i < num_workers; ++i) {
1221
+ workers.emplace_back(worker, i);
1222
+ }
1223
+ }
1224
+
1225
+ int main() {
1226
+ std::println("=== Latch Example ===");
1227
+ latch_example();
1228
+
1229
+ std::println("\n=== Barrier Example ===");
1230
+ barrier_example();
1231
+
1232
+ return 0;
1233
+ }
1234
+ ```
1235
+
1236
+ ---
1237
+
1238
+ Last Updated: 2026-01-10
1239
+ Version: 1.0.0