moai-adk 0.35.1__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 (502) hide show
  1. moai_adk/__init__.py +10 -0
  2. moai_adk/__main__.py +199 -0
  3. moai_adk/cli/__init__.py +6 -0
  4. moai_adk/cli/commands/__init__.py +17 -0
  5. moai_adk/cli/commands/analyze.py +116 -0
  6. moai_adk/cli/commands/doctor.py +272 -0
  7. moai_adk/cli/commands/init.py +372 -0
  8. moai_adk/cli/commands/language.py +248 -0
  9. moai_adk/cli/commands/status.py +104 -0
  10. moai_adk/cli/commands/update.py +2686 -0
  11. moai_adk/cli/main.py +13 -0
  12. moai_adk/cli/prompts/__init__.py +5 -0
  13. moai_adk/cli/prompts/init_prompts.py +219 -0
  14. moai_adk/cli/spec_status.py +263 -0
  15. moai_adk/cli/ui/__init__.py +44 -0
  16. moai_adk/cli/ui/progress.py +422 -0
  17. moai_adk/cli/ui/prompts.py +389 -0
  18. moai_adk/cli/ui/theme.py +129 -0
  19. moai_adk/cli/worktree/__init__.py +27 -0
  20. moai_adk/cli/worktree/__main__.py +31 -0
  21. moai_adk/cli/worktree/cli.py +683 -0
  22. moai_adk/cli/worktree/exceptions.py +89 -0
  23. moai_adk/cli/worktree/manager.py +493 -0
  24. moai_adk/cli/worktree/models.py +65 -0
  25. moai_adk/cli/worktree/registry.py +422 -0
  26. moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
  27. moai_adk/core/__init__.py +1 -0
  28. moai_adk/core/analysis/__init__.py +9 -0
  29. moai_adk/core/analysis/session_analyzer.py +400 -0
  30. moai_adk/core/claude_integration.py +393 -0
  31. moai_adk/core/command_helpers.py +270 -0
  32. moai_adk/core/comprehensive_monitoring_system.py +1183 -0
  33. moai_adk/core/config/__init__.py +19 -0
  34. moai_adk/core/config/auto_spec_config.py +340 -0
  35. moai_adk/core/config/migration.py +244 -0
  36. moai_adk/core/config/unified.py +436 -0
  37. moai_adk/core/context_manager.py +273 -0
  38. moai_adk/core/diagnostics/__init__.py +19 -0
  39. moai_adk/core/diagnostics/slash_commands.py +159 -0
  40. moai_adk/core/enterprise_features.py +1404 -0
  41. moai_adk/core/error_recovery_system.py +1902 -0
  42. moai_adk/core/event_driven_hook_system.py +1371 -0
  43. moai_adk/core/git/__init__.py +31 -0
  44. moai_adk/core/git/branch.py +25 -0
  45. moai_adk/core/git/branch_manager.py +129 -0
  46. moai_adk/core/git/checkpoint.py +134 -0
  47. moai_adk/core/git/commit.py +67 -0
  48. moai_adk/core/git/conflict_detector.py +413 -0
  49. moai_adk/core/git/event_detector.py +79 -0
  50. moai_adk/core/git/manager.py +216 -0
  51. moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
  52. moai_adk/core/input_validation_middleware.py +1006 -0
  53. moai_adk/core/integration/__init__.py +22 -0
  54. moai_adk/core/integration/engine.py +157 -0
  55. moai_adk/core/integration/integration_tester.py +226 -0
  56. moai_adk/core/integration/models.py +88 -0
  57. moai_adk/core/integration/utils.py +211 -0
  58. moai_adk/core/issue_creator.py +305 -0
  59. moai_adk/core/jit_context_loader.py +956 -0
  60. moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
  61. moai_adk/core/language_config.py +202 -0
  62. moai_adk/core/language_config_resolver.py +572 -0
  63. moai_adk/core/language_validator.py +543 -0
  64. moai_adk/core/mcp/setup.py +116 -0
  65. moai_adk/core/merge/__init__.py +9 -0
  66. moai_adk/core/merge/analyzer.py +605 -0
  67. moai_adk/core/migration/__init__.py +18 -0
  68. moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
  69. moai_adk/core/migration/backup_manager.py +277 -0
  70. moai_adk/core/migration/custom_element_scanner.py +358 -0
  71. moai_adk/core/migration/file_migrator.py +209 -0
  72. moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
  73. moai_adk/core/migration/selective_restorer.py +470 -0
  74. moai_adk/core/migration/template_utils.py +74 -0
  75. moai_adk/core/migration/user_selection_ui.py +338 -0
  76. moai_adk/core/migration/version_detector.py +139 -0
  77. moai_adk/core/migration/version_migrator.py +228 -0
  78. moai_adk/core/performance/__init__.py +6 -0
  79. moai_adk/core/performance/cache_system.py +316 -0
  80. moai_adk/core/performance/parallel_processor.py +116 -0
  81. moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
  82. moai_adk/core/project/__init__.py +1 -0
  83. moai_adk/core/project/backup_utils.py +70 -0
  84. moai_adk/core/project/checker.py +300 -0
  85. moai_adk/core/project/detector.py +293 -0
  86. moai_adk/core/project/initializer.py +387 -0
  87. moai_adk/core/project/phase_executor.py +716 -0
  88. moai_adk/core/project/validator.py +139 -0
  89. moai_adk/core/quality/__init__.py +6 -0
  90. moai_adk/core/quality/trust_checker.py +377 -0
  91. moai_adk/core/quality/validators/__init__.py +6 -0
  92. moai_adk/core/quality/validators/base_validator.py +19 -0
  93. moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
  94. moai_adk/core/robust_json_parser.py +611 -0
  95. moai_adk/core/rollback_manager.py +918 -0
  96. moai_adk/core/session_manager.py +651 -0
  97. moai_adk/core/skill_loading_system.py +579 -0
  98. moai_adk/core/spec/confidence_scoring.py +680 -0
  99. moai_adk/core/spec/ears_template_engine.py +1247 -0
  100. moai_adk/core/spec/quality_validator.py +687 -0
  101. moai_adk/core/spec_status_manager.py +478 -0
  102. moai_adk/core/template/__init__.py +7 -0
  103. moai_adk/core/template/backup.py +174 -0
  104. moai_adk/core/template/config.py +191 -0
  105. moai_adk/core/template/languages.py +43 -0
  106. moai_adk/core/template/merger.py +233 -0
  107. moai_adk/core/template/processor.py +1200 -0
  108. moai_adk/core/template_engine.py +310 -0
  109. moai_adk/core/template_variable_synchronizer.py +417 -0
  110. moai_adk/core/unified_permission_manager.py +745 -0
  111. moai_adk/core/user_behavior_analytics.py +851 -0
  112. moai_adk/core/version_sync.py +429 -0
  113. moai_adk/foundation/__init__.py +56 -0
  114. moai_adk/foundation/backend.py +1027 -0
  115. moai_adk/foundation/database.py +1115 -0
  116. moai_adk/foundation/devops.py +1585 -0
  117. moai_adk/foundation/ears.py +431 -0
  118. moai_adk/foundation/frontend.py +870 -0
  119. moai_adk/foundation/git/commit_templates.py +557 -0
  120. moai_adk/foundation/git.py +376 -0
  121. moai_adk/foundation/langs.py +484 -0
  122. moai_adk/foundation/ml_ops.py +1162 -0
  123. moai_adk/foundation/testing.py +1524 -0
  124. moai_adk/foundation/trust/trust_principles.py +676 -0
  125. moai_adk/foundation/trust/validation_checklist.py +1573 -0
  126. moai_adk/project/__init__.py +0 -0
  127. moai_adk/project/configuration.py +1084 -0
  128. moai_adk/project/documentation.py +566 -0
  129. moai_adk/project/schema.py +447 -0
  130. moai_adk/statusline/__init__.py +38 -0
  131. moai_adk/statusline/alfred_detector.py +105 -0
  132. moai_adk/statusline/config.py +376 -0
  133. moai_adk/statusline/enhanced_output_style_detector.py +372 -0
  134. moai_adk/statusline/git_collector.py +190 -0
  135. moai_adk/statusline/main.py +322 -0
  136. moai_adk/statusline/metrics_tracker.py +78 -0
  137. moai_adk/statusline/renderer.py +343 -0
  138. moai_adk/statusline/update_checker.py +129 -0
  139. moai_adk/statusline/version_reader.py +741 -0
  140. moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
  141. moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
  142. moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
  143. moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
  144. moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
  145. moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
  146. moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
  147. moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
  148. moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
  149. moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
  150. moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
  151. moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
  152. moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
  153. moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
  154. moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
  155. moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
  156. moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
  157. moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
  158. moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
  159. moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
  160. moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
  161. moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
  162. moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
  163. moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
  164. moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
  165. moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
  166. moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
  167. moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
  168. moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
  169. moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
  170. moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
  171. moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
  172. moai_adk/templates/.claude/hooks/__init__.py +8 -0
  173. moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
  174. moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
  175. moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
  176. moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
  177. moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
  178. moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
  179. moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
  180. moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
  181. moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
  182. moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
  183. moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
  184. moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
  185. moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
  186. moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
  187. moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
  188. moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
  189. moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
  190. moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
  191. moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
  192. moai_adk/templates/.claude/settings.json +172 -0
  193. moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
  194. moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
  195. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
  196. moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
  197. moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
  198. moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
  199. moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
  200. moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
  201. moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
  202. moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
  203. moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
  204. moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
  205. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
  206. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
  207. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
  208. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +323 -0
  209. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
  210. moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
  211. moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
  212. moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
  213. moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
  214. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
  215. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
  216. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
  217. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
  218. moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
  219. moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
  220. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
  221. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
  222. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
  223. moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
  224. moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
  225. moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
  226. moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
  227. moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
  228. moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
  229. moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
  230. moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
  231. moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
  232. moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
  233. moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
  234. moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
  235. moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
  236. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
  237. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
  238. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
  239. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
  240. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
  241. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
  242. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
  243. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
  244. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
  245. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
  246. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
  247. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
  248. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
  249. moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
  250. moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
  251. moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
  252. moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
  254. moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
  257. moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
  260. moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
  263. moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
  266. moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
  270. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
  272. moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
  273. moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
  274. moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
  275. moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
  276. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
  277. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
  278. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
  279. moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
  280. moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
  281. moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
  282. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
  283. moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
  284. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
  285. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
  286. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
  287. moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
  288. moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
  289. moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
  290. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +376 -0
  291. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
  292. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
  293. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +385 -0
  294. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
  295. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
  296. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +382 -0
  297. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
  298. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
  299. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +644 -0
  300. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -0
  301. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
  302. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
  303. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +579 -0
  304. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
  305. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -0
  306. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
  307. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
  308. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +497 -0
  309. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
  310. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
  311. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
  312. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
  313. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
  314. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -0
  315. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
  316. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
  317. moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
  318. moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
  319. moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
  320. moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
  321. moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
  322. moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
  323. moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
  324. moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
  325. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
  326. moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
  327. moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
  328. moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
  329. moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
  330. moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
  331. moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
  332. moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
  333. moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
  334. moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
  335. moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
  336. moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
  337. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
  338. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
  339. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
  340. moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
  341. moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
  342. moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
  343. moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
  344. moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
  345. moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
  346. moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
  347. moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
  348. moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
  349. moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
  350. moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
  351. moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
  352. moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
  353. moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
  354. moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
  355. moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
  356. moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
  357. moai_adk/templates/.claude/skills/moai-plugin-builder/migration.md +341 -0
  358. moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
  359. moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
  360. moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
  361. moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
  362. moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
  363. moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
  364. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
  365. moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
  366. moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
  367. moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
  368. moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
  369. moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
  370. moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
  371. moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
  372. moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
  373. moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
  374. moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
  375. moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
  376. moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
  377. moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
  378. moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
  379. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
  380. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
  381. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
  382. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
  383. moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
  384. moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
  385. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
  386. moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
  387. moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
  388. moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
  389. moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
  390. moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
  391. moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
  392. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
  393. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
  394. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
  395. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
  396. moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
  397. moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
  398. moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
  399. moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
  400. moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
  401. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
  402. moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
  403. moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
  404. moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
  405. moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
  406. moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
  407. moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
  408. moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
  409. moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
  410. moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
  411. moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
  412. moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
  413. moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
  414. moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
  415. moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
  416. moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
  417. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
  418. moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
  419. moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
  420. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
  421. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
  422. moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
  423. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
  424. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
  425. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
  426. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
  427. moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
  428. moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
  429. moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
  430. moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
  431. moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
  432. moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
  433. moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
  434. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
  435. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
  436. moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
  437. moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
  438. moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
  439. moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
  440. moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
  441. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
  442. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
  443. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
  444. moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
  445. moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
  446. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
  447. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
  448. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
  449. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
  450. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
  451. moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
  452. moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
  453. moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
  454. moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
  455. moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
  456. moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
  457. moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
  458. moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
  459. moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
  460. moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
  461. moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
  462. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
  463. moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
  464. moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
  465. moai_adk/templates/.git-hooks/pre-commit +128 -0
  466. moai_adk/templates/.git-hooks/pre-push +365 -0
  467. moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
  468. moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
  469. moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
  470. moai_adk/templates/.gitignore +222 -0
  471. moai_adk/templates/.mcp.json +13 -0
  472. moai_adk/templates/.moai/config/config.yaml +58 -0
  473. moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
  474. moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
  475. moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
  476. moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
  477. moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
  478. moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
  479. moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
  480. moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
  481. moai_adk/templates/.moai/config/sections/language.yaml +11 -0
  482. moai_adk/templates/.moai/config/sections/project.yaml +13 -0
  483. moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
  484. moai_adk/templates/.moai/config/sections/system.yaml +24 -0
  485. moai_adk/templates/.moai/config/sections/user.yaml +5 -0
  486. moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
  487. moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
  488. moai_adk/templates/CLAUDE.md +642 -0
  489. moai_adk/utils/__init__.py +30 -0
  490. moai_adk/utils/banner.py +38 -0
  491. moai_adk/utils/common.py +294 -0
  492. moai_adk/utils/link_validator.py +241 -0
  493. moai_adk/utils/logger.py +147 -0
  494. moai_adk/utils/safe_file_reader.py +206 -0
  495. moai_adk/utils/timeout.py +160 -0
  496. moai_adk/utils/toon_utils.py +256 -0
  497. moai_adk/version.py +22 -0
  498. moai_adk-0.35.1.dist-info/METADATA +3018 -0
  499. moai_adk-0.35.1.dist-info/RECORD +502 -0
  500. moai_adk-0.35.1.dist-info/WHEEL +4 -0
  501. moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
  502. moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,687 @@
1
+ ---
2
+ name: moai-lang-ruby
3
+ description: Ruby 3.3+ development specialist covering Rails 7.2, ActiveRecord, Hotwire/Turbo, and modern Ruby patterns. Use when developing Ruby APIs, web applications, or Rails projects.
4
+ version: 1.0.0
5
+ updated: 2025-12-07
6
+ status: active
7
+ allowed-tools: Read, Grep, Glob, Bash, mcp__context7__resolve-library-id, mcp__context7__get-library-docs
8
+ ---
9
+
10
+ ## Quick Reference (30 seconds)
11
+
12
+ Ruby 3.3+ Development Specialist - Rails 7.2, ActiveRecord, Hotwire/Turbo, RSpec, and modern Ruby patterns.
13
+
14
+ Auto-Triggers: `.rb` files, `Gemfile`, `Rakefile`, `config.ru`, Rails/Ruby discussions
15
+
16
+ Core Capabilities:
17
+ - Ruby 3.3 Features: YJIT production-ready, pattern matching, Data class, endless methods
18
+ - Web Framework: Rails 7.2 with Turbo, Stimulus, ActiveRecord
19
+ - Frontend: Hotwire (Turbo + Stimulus) for SPA-like experiences
20
+ - Testing: RSpec with factories, request specs, system specs
21
+ - Background Jobs: Sidekiq with ActiveJob
22
+ - Package Management: Bundler with Gemfile
23
+ - Code Quality: RuboCop with Rails cops
24
+ - Database: ActiveRecord with migrations, associations, scopes
25
+
26
+ ### Quick Patterns
27
+
28
+ Rails Controller:
29
+ ```ruby
30
+ class UsersController < ApplicationController
31
+ before_action :set_user, only: %i[show edit update destroy]
32
+
33
+ def index
34
+ @users = User.all
35
+ end
36
+
37
+ def create
38
+ @user = User.new(user_params)
39
+
40
+ respond_to do |format|
41
+ if @user.save
42
+ format.html { redirect_to @user, notice: "User was successfully created." }
43
+ format.turbo_stream
44
+ else
45
+ format.html { render :new, status: :unprocessable_entity }
46
+ end
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def set_user
53
+ @user = User.find(params[:id])
54
+ end
55
+
56
+ def user_params
57
+ params.require(:user).permit(:name, :email)
58
+ end
59
+ end
60
+ ```
61
+
62
+ ActiveRecord Model:
63
+ ```ruby
64
+ class User < ApplicationRecord
65
+ has_many :posts, dependent: :destroy
66
+ has_one :profile, dependent: :destroy
67
+
68
+ validates :email, presence: true, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP }
69
+ validates :name, presence: true, length: { minimum: 2, maximum: 100 }
70
+
71
+ scope :active, -> { where(active: true) }
72
+ scope :recent, -> { order(created_at: :desc) }
73
+
74
+ def full_name
75
+ "#{first_name} #{last_name}".strip
76
+ end
77
+ end
78
+ ```
79
+
80
+ RSpec Test:
81
+ ```ruby
82
+ RSpec.describe User, type: :model do
83
+ describe "validations" do
84
+ it { is_expected.to validate_presence_of(:email) }
85
+ it { is_expected.to validate_uniqueness_of(:email) }
86
+ end
87
+
88
+ describe "#full_name" do
89
+ let(:user) { build(:user, first_name: "John", last_name: "Doe") }
90
+
91
+ it "returns the full name" do
92
+ expect(user.full_name).to eq("John Doe")
93
+ end
94
+ end
95
+ end
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Implementation Guide (5 minutes)
101
+
102
+ ### Ruby 3.3 New Features
103
+
104
+ YJIT (Production-Ready):
105
+ - Enabled by default in Ruby 3.3
106
+ - 15-20% performance improvement for Rails apps
107
+ - Enable: `ruby --yjit` or `RUBY_YJIT_ENABLE=1`
108
+ - Check status: `RubyVM::YJIT.enabled?`
109
+ - Memory optimization with better code caching
110
+
111
+ Pattern Matching (case/in):
112
+ ```ruby
113
+ def process_response(response)
114
+ case response
115
+ in { status: "ok", data: data }
116
+ puts "Success: #{data}"
117
+ in { status: "error", message: msg }
118
+ puts "Error: #{msg}"
119
+ in { status: status } if %w[pending processing].include?(status)
120
+ puts "In progress..."
121
+ else
122
+ puts "Unknown response"
123
+ end
124
+ end
125
+
126
+ # Array pattern matching
127
+ case [1, 2, 3]
128
+ in [first, *rest]
129
+ puts "First: #{first}, Rest: #{rest}"
130
+ end
131
+
132
+ # Hash pattern matching with guard
133
+ case { name: "John", age: 25 }
134
+ in { name:, age: } if age >= 18
135
+ puts "Adult: #{name}"
136
+ end
137
+ ```
138
+
139
+ Data Class (Immutable Structs):
140
+ ```ruby
141
+ # Define immutable data class
142
+ User = Data.define(:name, :email) do
143
+ def greeting
144
+ "Hello, #{name}!"
145
+ end
146
+ end
147
+
148
+ user = User.new(name: "John", email: "john@example.com")
149
+ user.name # => "John"
150
+ user.greeting # => "Hello, John!"
151
+ # user.name = "Jane" # => FrozenError
152
+
153
+ # With default values
154
+ Point = Data.define(:x, :y) do
155
+ def self.origin
156
+ new(x: 0, y: 0)
157
+ end
158
+ end
159
+ ```
160
+
161
+ Endless Method Definition:
162
+ ```ruby
163
+ class Calculator
164
+ # Single expression methods
165
+ def add(a, b) = a + b
166
+ def multiply(a, b) = a * b
167
+
168
+ # With method chaining
169
+ def double(n) = n * 2
170
+ def square(n) = n ** 2
171
+
172
+ # Predicate methods
173
+ def positive?(n) = n > 0
174
+ def even?(n) = n.even?
175
+ end
176
+ ```
177
+
178
+ ### Rails 7.2 Patterns
179
+
180
+ Application Setup:
181
+ ```ruby
182
+ # Gemfile
183
+ source "https://rubygems.org"
184
+
185
+ gem "rails", "~> 7.2.0"
186
+ gem "pg", "~> 1.5"
187
+ gem "puma", ">= 6.0"
188
+ gem "turbo-rails"
189
+ gem "stimulus-rails"
190
+ gem "jbuilder"
191
+ gem "redis", ">= 5.0"
192
+ gem "sidekiq", "~> 7.0"
193
+
194
+ group :development, :test do
195
+ gem "rspec-rails", "~> 7.0"
196
+ gem "factory_bot_rails"
197
+ gem "faker"
198
+ gem "rubocop-rails", require: false
199
+ end
200
+
201
+ group :test do
202
+ gem "capybara"
203
+ gem "shoulda-matchers"
204
+ end
205
+ ```
206
+
207
+ Model with Concerns:
208
+ ```ruby
209
+ # app/models/concerns/sluggable.rb
210
+ module Sluggable
211
+ extend ActiveSupport::Concern
212
+
213
+ included do
214
+ before_validation :generate_slug, on: :create
215
+ validates :slug, presence: true, uniqueness: true
216
+ end
217
+
218
+ def to_param
219
+ slug
220
+ end
221
+
222
+ private
223
+
224
+ def generate_slug
225
+ self.slug = title.parameterize if title.present? && slug.blank?
226
+ end
227
+ end
228
+
229
+ # app/models/post.rb
230
+ class Post < ApplicationRecord
231
+ include Sluggable
232
+
233
+ belongs_to :user
234
+ has_many :comments, dependent: :destroy
235
+ has_many_attached :images
236
+
237
+ validates :title, presence: true, length: { minimum: 5 }
238
+ validates :content, presence: true
239
+
240
+ scope :published, -> { where(published: true) }
241
+ scope :by_user, ->(user) { where(user: user) }
242
+ end
243
+ ```
244
+
245
+ Service Objects:
246
+ ```ruby
247
+ # app/services/user_registration_service.rb
248
+ class UserRegistrationService
249
+ def initialize(user_params)
250
+ @user_params = user_params
251
+ end
252
+
253
+ def call
254
+ user = User.new(@user_params)
255
+
256
+ ActiveRecord::Base.transaction do
257
+ user.save!
258
+ create_profile(user)
259
+ send_welcome_email(user)
260
+ end
261
+
262
+ Result.new(success: true, user: user)
263
+ rescue ActiveRecord::RecordInvalid => e
264
+ Result.new(success: false, errors: e.record.errors)
265
+ end
266
+
267
+ private
268
+
269
+ def create_profile(user)
270
+ user.create_profile!(bio: "New user")
271
+ end
272
+
273
+ def send_welcome_email(user)
274
+ UserMailer.welcome(user).deliver_later
275
+ end
276
+
277
+ Result = Data.define(:success, :user, :errors) do
278
+ def success? = success
279
+ def failure? = !success
280
+ end
281
+ end
282
+ ```
283
+
284
+ ### Hotwire (Turbo + Stimulus)
285
+
286
+ Turbo Frames:
287
+ ```erb
288
+ <!-- app/views/posts/index.html.erb -->
289
+ <%= turbo_frame_tag "posts" do %>
290
+ <% @posts.each do |post| %>
291
+ <%= render post %>
292
+ <% end %>
293
+ <% end %>
294
+
295
+ <!-- app/views/posts/_post.html.erb -->
296
+ <%= turbo_frame_tag dom_id(post) do %>
297
+ <article class="post">
298
+ <h2><%= link_to post.title, post %></h2>
299
+ <p><%= truncate(post.content, length: 200) %></p>
300
+ <%= link_to "Edit", edit_post_path(post) %>
301
+ </article>
302
+ <% end %>
303
+ ```
304
+
305
+ Turbo Streams:
306
+ ```ruby
307
+ # app/controllers/posts_controller.rb
308
+ def create
309
+ @post = current_user.posts.build(post_params)
310
+
311
+ respond_to do |format|
312
+ if @post.save
313
+ format.turbo_stream
314
+ format.html { redirect_to @post }
315
+ else
316
+ format.html { render :new, status: :unprocessable_entity }
317
+ end
318
+ end
319
+ end
320
+
321
+ # app/views/posts/create.turbo_stream.erb
322
+ <%= turbo_stream.prepend "posts", @post %>
323
+ <%= turbo_stream.update "new_post", partial: "posts/form", locals: { post: Post.new } %>
324
+ ```
325
+
326
+ Stimulus Controller:
327
+ ```javascript
328
+ // app/javascript/controllers/form_controller.js
329
+ import { Controller } from "@hotwired/stimulus"
330
+
331
+ export default class extends Controller {
332
+ static targets = ["input", "submit", "output"]
333
+ static values = { url: String }
334
+
335
+ connect() {
336
+ this.validate()
337
+ }
338
+
339
+ validate() {
340
+ const isValid = this.inputTargets.every(input => input.value.length > 0)
341
+ this.submitTarget.disabled = !isValid
342
+ }
343
+
344
+ async submit(event) {
345
+ event.preventDefault()
346
+
347
+ const response = await fetch(this.urlValue, {
348
+ method: "POST",
349
+ body: new FormData(this.element),
350
+ headers: { "Accept": "text/vnd.turbo-stream.html" }
351
+ })
352
+
353
+ if (response.ok) {
354
+ this.element.reset()
355
+ }
356
+ }
357
+ }
358
+ ```
359
+
360
+ ### RSpec Testing Patterns
361
+
362
+ Model Specs:
363
+ ```ruby
364
+ # spec/models/user_spec.rb
365
+ RSpec.describe User, type: :model do
366
+ describe "associations" do
367
+ it { is_expected.to have_many(:posts).dependent(:destroy) }
368
+ it { is_expected.to have_one(:profile).dependent(:destroy) }
369
+ end
370
+
371
+ describe "validations" do
372
+ subject { build(:user) }
373
+
374
+ it { is_expected.to validate_presence_of(:email) }
375
+ it { is_expected.to validate_uniqueness_of(:email).case_insensitive }
376
+ it { is_expected.to validate_length_of(:name).is_at_least(2).is_at_most(100) }
377
+ end
378
+
379
+ describe "scopes" do
380
+ describe ".active" do
381
+ let!(:active_user) { create(:user, active: true) }
382
+ let!(:inactive_user) { create(:user, active: false) }
383
+
384
+ it "returns only active users" do
385
+ expect(described_class.active).to contain_exactly(active_user)
386
+ end
387
+ end
388
+ end
389
+
390
+ describe "#full_name" do
391
+ context "when both names are present" do
392
+ let(:user) { build(:user, first_name: "John", last_name: "Doe") }
393
+
394
+ it "returns the full name" do
395
+ expect(user.full_name).to eq("John Doe")
396
+ end
397
+ end
398
+
399
+ context "when last name is missing" do
400
+ let(:user) { build(:user, first_name: "John", last_name: nil) }
401
+
402
+ it "returns only first name" do
403
+ expect(user.full_name).to eq("John")
404
+ end
405
+ end
406
+ end
407
+ end
408
+ ```
409
+
410
+ Request Specs:
411
+ ```ruby
412
+ # spec/requests/posts_spec.rb
413
+ RSpec.describe "Posts", type: :request do
414
+ let(:user) { create(:user) }
415
+
416
+ before { sign_in user }
417
+
418
+ describe "GET /posts" do
419
+ let!(:posts) { create_list(:post, 3, user: user) }
420
+
421
+ it "returns a successful response" do
422
+ get posts_path
423
+ expect(response).to have_http_status(:ok)
424
+ end
425
+
426
+ it "displays all posts" do
427
+ get posts_path
428
+ posts.each do |post|
429
+ expect(response.body).to include(post.title)
430
+ end
431
+ end
432
+ end
433
+
434
+ describe "POST /posts" do
435
+ let(:valid_params) { { post: attributes_for(:post) } }
436
+ let(:invalid_params) { { post: { title: "" } } }
437
+
438
+ context "with valid parameters" do
439
+ it "creates a new post" do
440
+ expect {
441
+ post posts_path, params: valid_params
442
+ }.to change(Post, :count).by(1)
443
+ end
444
+
445
+ it "redirects to the created post" do
446
+ post posts_path, params: valid_params
447
+ expect(response).to redirect_to(Post.last)
448
+ end
449
+ end
450
+
451
+ context "with invalid parameters" do
452
+ it "does not create a new post" do
453
+ expect {
454
+ post posts_path, params: invalid_params
455
+ }.not_to change(Post, :count)
456
+ end
457
+
458
+ it "returns unprocessable entity status" do
459
+ post posts_path, params: invalid_params
460
+ expect(response).to have_http_status(:unprocessable_entity)
461
+ end
462
+ end
463
+ end
464
+ end
465
+ ```
466
+
467
+ Factory Bot Patterns:
468
+ ```ruby
469
+ # spec/factories/users.rb
470
+ FactoryBot.define do
471
+ factory :user do
472
+ sequence(:email) { |n| "user#{n}@example.com" }
473
+ name { Faker::Name.name }
474
+ password { "password123" }
475
+ active { true }
476
+
477
+ trait :inactive do
478
+ active { false }
479
+ end
480
+
481
+ trait :admin do
482
+ role { :admin }
483
+ end
484
+
485
+ trait :with_posts do
486
+ transient do
487
+ posts_count { 3 }
488
+ end
489
+
490
+ after(:create) do |user, evaluator|
491
+ create_list(:post, evaluator.posts_count, user: user)
492
+ end
493
+ end
494
+
495
+ factory :admin_user, traits: [:admin]
496
+ end
497
+ end
498
+ ```
499
+
500
+ ### Sidekiq Background Jobs
501
+
502
+ Job Definition:
503
+ ```ruby
504
+ # app/jobs/process_order_job.rb
505
+ class ProcessOrderJob < ApplicationJob
506
+ queue_as :default
507
+ retry_on ActiveRecord::Deadlocked, wait: 5.seconds, attempts: 3
508
+ discard_on ActiveJob::DeserializationError
509
+
510
+ def perform(order_id)
511
+ order = Order.find(order_id)
512
+
513
+ ActiveRecord::Base.transaction do
514
+ order.process!
515
+ order.update!(processed_at: Time.current)
516
+ OrderMailer.confirmation(order).deliver_later
517
+ end
518
+ end
519
+ end
520
+
521
+ # Sidekiq configuration
522
+ # config/initializers/sidekiq.rb
523
+ Sidekiq.configure_server do |config|
524
+ config.redis = { url: ENV.fetch("REDIS_URL", "redis://localhost:6379/1") }
525
+ end
526
+
527
+ Sidekiq.configure_client do |config|
528
+ config.redis = { url: ENV.fetch("REDIS_URL", "redis://localhost:6379/1") }
529
+ end
530
+ ```
531
+
532
+ ### ActiveRecord Advanced Patterns
533
+
534
+ Scopes and Query Objects:
535
+ ```ruby
536
+ class Post < ApplicationRecord
537
+ scope :published, -> { where(published: true) }
538
+ scope :recent, -> { order(created_at: :desc) }
539
+ scope :by_author, ->(author) { where(author: author) }
540
+ scope :search, ->(query) { where("title ILIKE ?", "%#{query}%") }
541
+
542
+ # Complex scope with joins
543
+ scope :with_comments, -> {
544
+ joins(:comments).group(:id).having("COUNT(comments.id) > 0")
545
+ }
546
+
547
+ # Scope returning specific columns
548
+ scope :titles_only, -> { select(:id, :title) }
549
+ end
550
+
551
+ # Query Object
552
+ class PostSearchQuery
553
+ def initialize(relation = Post.all)
554
+ @relation = relation
555
+ end
556
+
557
+ def call(params)
558
+ @relation
559
+ .then { |r| filter_by_status(r, params[:status]) }
560
+ .then { |r| filter_by_date(r, params[:start_date], params[:end_date]) }
561
+ .then { |r| search_by_title(r, params[:query]) }
562
+ .then { |r| paginate(r, params[:page], params[:per_page]) }
563
+ end
564
+
565
+ private
566
+
567
+ def filter_by_status(relation, status)
568
+ return relation if status.blank?
569
+ relation.where(status: status)
570
+ end
571
+
572
+ def filter_by_date(relation, start_date, end_date)
573
+ relation = relation.where("created_at >= ?", start_date) if start_date
574
+ relation = relation.where("created_at <= ?", end_date) if end_date
575
+ relation
576
+ end
577
+
578
+ def search_by_title(relation, query)
579
+ return relation if query.blank?
580
+ relation.where("title ILIKE ?", "%#{query}%")
581
+ end
582
+
583
+ def paginate(relation, page, per_page)
584
+ page ||= 1
585
+ per_page ||= 25
586
+ relation.limit(per_page).offset((page.to_i - 1) * per_page.to_i)
587
+ end
588
+ end
589
+ ```
590
+
591
+ ---
592
+
593
+ ## Advanced Implementation (10+ minutes)
594
+
595
+ For comprehensive coverage including:
596
+ - Production deployment patterns (Docker, Kubernetes)
597
+ - Advanced ActiveRecord patterns (polymorphic, STI)
598
+ - Action Cable real-time features
599
+ - Performance optimization techniques
600
+ - Security best practices
601
+ - CI/CD integration patterns
602
+
603
+ See:
604
+ - [reference.md](reference.md) - Complete reference documentation
605
+ - [examples.md](examples.md) - Production-ready code examples
606
+
607
+ ---
608
+
609
+ ## Context7 Library Mappings
610
+
611
+ ```
612
+ /rails/rails - Ruby on Rails web framework
613
+ /rspec/rspec - RSpec testing framework
614
+ /hotwired/turbo-rails - Turbo for Rails
615
+ /hotwired/stimulus-rails - Stimulus for Rails
616
+ /sidekiq/sidekiq - Background job processing
617
+ /rubocop/rubocop - Ruby style guide enforcement
618
+ /thoughtbot/factory_bot - Test data factories
619
+ ```
620
+
621
+ ---
622
+
623
+ ## Works Well With
624
+
625
+ - `moai-domain-backend` - REST API and web application architecture
626
+ - `moai-domain-database` - SQL patterns and ActiveRecord optimization
627
+ - `moai-quality-testing` - TDD and testing strategies
628
+ - `moai-essentials-debug` - AI-powered debugging
629
+ - `moai-foundation-trust` - TRUST 5 quality principles
630
+
631
+ ---
632
+
633
+ ## Troubleshooting
634
+
635
+ Common Issues:
636
+
637
+ Ruby Version Check:
638
+ ```bash
639
+ ruby --version # Should be 3.3+
640
+ ruby -e "puts RubyVM::YJIT.enabled?" # Check YJIT status
641
+ ```
642
+
643
+ Rails Version Check:
644
+ ```bash
645
+ rails --version # Should be 7.2+
646
+ bundle exec rails about # Full environment info
647
+ ```
648
+
649
+ Database Connection Issues:
650
+ - Check `config/database.yml` configuration
651
+ - Ensure PostgreSQL/MySQL service is running
652
+ - Run `rails db:create` if database doesn't exist
653
+
654
+ Asset Pipeline Issues:
655
+ ```bash
656
+ # Precompile assets
657
+ rails assets:precompile
658
+
659
+ # Clear asset cache
660
+ rails assets:clobber
661
+ ```
662
+
663
+ RSpec Setup Issues:
664
+ ```bash
665
+ # Install RSpec
666
+ rails generate rspec:install
667
+
668
+ # Run specific test
669
+ bundle exec rspec spec/models/user_spec.rb
670
+
671
+ # Run with verbose output
672
+ bundle exec rspec --format documentation
673
+ ```
674
+
675
+ Turbo/Stimulus Issues:
676
+ ```bash
677
+ # Rebuild JavaScript
678
+ rails javascript:install:esbuild
679
+
680
+ # Clear Turbo cache
681
+ rails turbo:install
682
+ ```
683
+
684
+ ---
685
+
686
+ Last Updated: 2025-12-07
687
+ Status: Active (v1.0.0)