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,723 @@
1
+ # Component Architecture
2
+
3
+ Comprehensive patterns for building scalable component systems including Design Systems, Compound Components, CVA variants, and Accessible components.
4
+
5
+ ---
6
+
7
+ ## Design System Foundations
8
+
9
+ ### Token-Based Design
10
+
11
+ ```typescript
12
+ // lib/design-tokens.ts
13
+ export const tokens = {
14
+ colors: {
15
+ // Semantic colors
16
+ primary: {
17
+ 50: 'hsl(221, 83%, 95%)',
18
+ 100: 'hsl(221, 83%, 90%)',
19
+ 500: 'hsl(221, 83%, 53%)',
20
+ 600: 'hsl(221, 83%, 45%)',
21
+ 900: 'hsl(221, 83%, 20%)',
22
+ },
23
+ // Functional colors
24
+ background: 'hsl(var(--background))',
25
+ foreground: 'hsl(var(--foreground))',
26
+ muted: 'hsl(var(--muted))',
27
+ border: 'hsl(var(--border))',
28
+ },
29
+
30
+ spacing: {
31
+ 0: '0',
32
+ 1: '0.25rem',
33
+ 2: '0.5rem',
34
+ 3: '0.75rem',
35
+ 4: '1rem',
36
+ 6: '1.5rem',
37
+ 8: '2rem',
38
+ },
39
+
40
+ radii: {
41
+ none: '0',
42
+ sm: '0.25rem',
43
+ md: '0.375rem',
44
+ lg: '0.5rem',
45
+ full: '9999px',
46
+ },
47
+
48
+ typography: {
49
+ fontSizes: {
50
+ xs: '0.75rem',
51
+ sm: '0.875rem',
52
+ base: '1rem',
53
+ lg: '1.125rem',
54
+ xl: '1.25rem',
55
+ },
56
+ fontWeights: {
57
+ normal: 400,
58
+ medium: 500,
59
+ semibold: 600,
60
+ bold: 700,
61
+ },
62
+ lineHeights: {
63
+ tight: 1.25,
64
+ normal: 1.5,
65
+ relaxed: 1.75,
66
+ },
67
+ },
68
+
69
+ shadows: {
70
+ sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',
71
+ md: '0 4px 6px -1px rgb(0 0 0 / 0.1)',
72
+ lg: '0 10px 15px -3px rgb(0 0 0 / 0.1)',
73
+ },
74
+ } as const
75
+
76
+ // CSS Variables setup
77
+ export const cssVariables = `
78
+ :root {
79
+ --background: 0 0% 100%;
80
+ --foreground: 222.2 84% 4.9%;
81
+ --muted: 210 40% 96.1%;
82
+ --muted-foreground: 215.4 16.3% 46.9%;
83
+ --border: 214.3 31.8% 91.4%;
84
+ --radius: 0.5rem;
85
+ }
86
+
87
+ .dark {
88
+ --background: 222.2 84% 4.9%;
89
+ --foreground: 210 40% 98%;
90
+ --muted: 217.2 32.6% 17.5%;
91
+ --muted-foreground: 215 20.2% 65.1%;
92
+ --border: 217.2 32.6% 17.5%;
93
+ }
94
+ `
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Class Variance Authority (CVA)
100
+
101
+ ### Button Component with CVA
102
+
103
+ ```tsx
104
+ // components/ui/Button/Button.tsx
105
+ import { forwardRef } from 'react'
106
+ import { Slot } from '@radix-ui/react-slot'
107
+ import { cva, type VariantProps } from 'class-variance-authority'
108
+ import { cn } from '@/lib/utils'
109
+
110
+ const buttonVariants = cva(
111
+ // Base styles
112
+ [
113
+ 'inline-flex items-center justify-center',
114
+ 'whitespace-nowrap rounded-md text-sm font-medium',
115
+ 'ring-offset-background transition-colors',
116
+ 'focus-visible:outline-none focus-visible:ring-2',
117
+ 'focus-visible:ring-ring focus-visible:ring-offset-2',
118
+ 'disabled:pointer-events-none disabled:opacity-50',
119
+ ],
120
+ {
121
+ variants: {
122
+ variant: {
123
+ default: 'bg-primary text-primary-foreground hover:bg-primary/90',
124
+ destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
125
+ outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',
126
+ secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
127
+ ghost: 'hover:bg-accent hover:text-accent-foreground',
128
+ link: 'text-primary underline-offset-4 hover:underline',
129
+ },
130
+ size: {
131
+ default: 'h-10 px-4 py-2',
132
+ sm: 'h-9 rounded-md px-3',
133
+ lg: 'h-11 rounded-md px-8',
134
+ icon: 'h-10 w-10',
135
+ },
136
+ },
137
+ defaultVariants: {
138
+ variant: 'default',
139
+ size: 'default',
140
+ },
141
+ }
142
+ )
143
+
144
+ export interface ButtonProps
145
+ extends React.ButtonHTMLAttributes<HTMLButtonElement>,
146
+ VariantProps<typeof buttonVariants> {
147
+ asChild?: boolean
148
+ loading?: boolean
149
+ }
150
+
151
+ const Button = forwardRef<HTMLButtonElement, ButtonProps>(
152
+ ({ className, variant, size, asChild = false, loading, children, disabled, ...props }, ref) => {
153
+ const Comp = asChild ? Slot : 'button'
154
+
155
+ return (
156
+ <Comp
157
+ className={cn(buttonVariants({ variant, size, className }))}
158
+ ref={ref}
159
+ disabled={disabled || loading}
160
+ {...props}
161
+ >
162
+ {loading ? (
163
+ <>
164
+ <Spinner className="mr-2 h-4 w-4 animate-spin" />
165
+ Loading...
166
+ </>
167
+ ) : (
168
+ children
169
+ )}
170
+ </Comp>
171
+ )
172
+ }
173
+ )
174
+ Button.displayName = 'Button'
175
+
176
+ export { Button, buttonVariants }
177
+ ```
178
+
179
+ ### Input Component with Variants
180
+
181
+ ```tsx
182
+ // components/ui/Input/Input.tsx
183
+ import { forwardRef } from 'react'
184
+ import { cva, type VariantProps } from 'class-variance-authority'
185
+ import { cn } from '@/lib/utils'
186
+
187
+ const inputVariants = cva(
188
+ [
189
+ 'flex w-full rounded-md border bg-background px-3 py-2',
190
+ 'text-sm ring-offset-background',
191
+ 'file:border-0 file:bg-transparent file:text-sm file:font-medium',
192
+ 'placeholder:text-muted-foreground',
193
+ 'focus-visible:outline-none focus-visible:ring-2',
194
+ 'focus-visible:ring-ring focus-visible:ring-offset-2',
195
+ 'disabled:cursor-not-allowed disabled:opacity-50',
196
+ ],
197
+ {
198
+ variants: {
199
+ variant: {
200
+ default: 'border-input',
201
+ error: 'border-destructive focus-visible:ring-destructive',
202
+ success: 'border-green-500 focus-visible:ring-green-500',
203
+ },
204
+ inputSize: {
205
+ sm: 'h-8 text-xs',
206
+ default: 'h-10',
207
+ lg: 'h-12 text-base',
208
+ },
209
+ },
210
+ defaultVariants: {
211
+ variant: 'default',
212
+ inputSize: 'default',
213
+ },
214
+ }
215
+ )
216
+
217
+ export interface InputProps
218
+ extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,
219
+ VariantProps<typeof inputVariants> {
220
+ error?: string
221
+ }
222
+
223
+ const Input = forwardRef<HTMLInputElement, InputProps>(
224
+ ({ className, variant, inputSize, error, ...props }, ref) => {
225
+ return (
226
+ <div className="relative">
227
+ <input
228
+ className={cn(
229
+ inputVariants({
230
+ variant: error ? 'error' : variant,
231
+ inputSize,
232
+ className
233
+ })
234
+ )}
235
+ ref={ref}
236
+ aria-invalid={!!error}
237
+ aria-describedby={error ? `${props.id}-error` : undefined}
238
+ {...props}
239
+ />
240
+ {error && (
241
+ <p id={`${props.id}-error`} className="mt-1 text-sm text-destructive">
242
+ {error}
243
+ </p>
244
+ )}
245
+ </div>
246
+ )
247
+ }
248
+ )
249
+ Input.displayName = 'Input'
250
+
251
+ export { Input, inputVariants }
252
+ ```
253
+
254
+ ---
255
+
256
+ ## Compound Components Pattern
257
+
258
+ ### Card Compound Component
259
+
260
+ ```tsx
261
+ // components/ui/Card/Card.tsx
262
+ import { createContext, useContext, forwardRef } from 'react'
263
+ import { cn } from '@/lib/utils'
264
+
265
+ // Context for sharing state between compound components
266
+ interface CardContextValue {
267
+ variant: 'default' | 'elevated' | 'outlined'
268
+ }
269
+
270
+ const CardContext = createContext<CardContextValue>({ variant: 'default' })
271
+
272
+ // Root component
273
+ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
274
+ variant?: 'default' | 'elevated' | 'outlined'
275
+ }
276
+
277
+ const Card = forwardRef<HTMLDivElement, CardProps>(
278
+ ({ className, variant = 'default', children, ...props }, ref) => {
279
+ const variantStyles = {
280
+ default: 'border bg-card text-card-foreground shadow-sm',
281
+ elevated: 'bg-card text-card-foreground shadow-md',
282
+ outlined: 'border-2 bg-transparent',
283
+ }
284
+
285
+ return (
286
+ <CardContext.Provider value={{ variant }}>
287
+ <div
288
+ ref={ref}
289
+ className={cn('rounded-lg', variantStyles[variant], className)}
290
+ {...props}
291
+ >
292
+ {children}
293
+ </div>
294
+ </CardContext.Provider>
295
+ )
296
+ }
297
+ )
298
+ Card.displayName = 'Card'
299
+
300
+ // Header component
301
+ const CardHeader = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
302
+ ({ className, ...props }, ref) => (
303
+ <div
304
+ ref={ref}
305
+ className={cn('flex flex-col space-y-1.5 p-6', className)}
306
+ {...props}
307
+ />
308
+ )
309
+ )
310
+ CardHeader.displayName = 'CardHeader'
311
+
312
+ // Title component
313
+ const CardTitle = forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(
314
+ ({ className, ...props }, ref) => (
315
+ <h3
316
+ ref={ref}
317
+ className={cn('text-2xl font-semibold leading-none tracking-tight', className)}
318
+ {...props}
319
+ />
320
+ )
321
+ )
322
+ CardTitle.displayName = 'CardTitle'
323
+
324
+ // Description component
325
+ const CardDescription = forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(
326
+ ({ className, ...props }, ref) => (
327
+ <p
328
+ ref={ref}
329
+ className={cn('text-sm text-muted-foreground', className)}
330
+ {...props}
331
+ />
332
+ )
333
+ )
334
+ CardDescription.displayName = 'CardDescription'
335
+
336
+ // Content component
337
+ const CardContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
338
+ ({ className, ...props }, ref) => (
339
+ <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />
340
+ )
341
+ )
342
+ CardContent.displayName = 'CardContent'
343
+
344
+ // Footer component
345
+ const CardFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
346
+ ({ className, ...props }, ref) => {
347
+ const { variant } = useContext(CardContext)
348
+
349
+ return (
350
+ <div
351
+ ref={ref}
352
+ className={cn(
353
+ 'flex items-center p-6 pt-0',
354
+ variant === 'outlined' && 'border-t mt-4 pt-4',
355
+ className
356
+ )}
357
+ {...props}
358
+ />
359
+ )
360
+ }
361
+ )
362
+ CardFooter.displayName = 'CardFooter'
363
+
364
+ export { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter }
365
+ ```
366
+
367
+ ### Tabs Compound Component
368
+
369
+ ```tsx
370
+ // components/ui/Tabs/Tabs.tsx
371
+ import { createContext, useContext, useState, forwardRef } from 'react'
372
+ import { cn } from '@/lib/utils'
373
+
374
+ interface TabsContextValue {
375
+ value: string
376
+ onValueChange: (value: string) => void
377
+ }
378
+
379
+ const TabsContext = createContext<TabsContextValue | null>(null)
380
+
381
+ function useTabs() {
382
+ const context = useContext(TabsContext)
383
+ if (!context) {
384
+ throw new Error('Tabs components must be used within a Tabs provider')
385
+ }
386
+ return context
387
+ }
388
+
389
+ // Root
390
+ interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
391
+ defaultValue?: string
392
+ value?: string
393
+ onValueChange?: (value: string) => void
394
+ }
395
+
396
+ const Tabs = forwardRef<HTMLDivElement, TabsProps>(
397
+ ({ defaultValue, value: controlledValue, onValueChange, children, ...props }, ref) => {
398
+ const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue || '')
399
+
400
+ const value = controlledValue ?? uncontrolledValue
401
+ const handleValueChange = onValueChange ?? setUncontrolledValue
402
+
403
+ return (
404
+ <TabsContext.Provider value={{ value, onValueChange: handleValueChange }}>
405
+ <div ref={ref} {...props}>
406
+ {children}
407
+ </div>
408
+ </TabsContext.Provider>
409
+ )
410
+ }
411
+ )
412
+ Tabs.displayName = 'Tabs'
413
+
414
+ // TabsList
415
+ const TabsList = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
416
+ ({ className, ...props }, ref) => (
417
+ <div
418
+ ref={ref}
419
+ role="tablist"
420
+ className={cn(
421
+ 'inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground',
422
+ className
423
+ )}
424
+ {...props}
425
+ />
426
+ )
427
+ )
428
+ TabsList.displayName = 'TabsList'
429
+
430
+ // TabsTrigger
431
+ interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
432
+ value: string
433
+ }
434
+
435
+ const TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(
436
+ ({ className, value, ...props }, ref) => {
437
+ const { value: selectedValue, onValueChange } = useTabs()
438
+ const isSelected = selectedValue === value
439
+
440
+ return (
441
+ <button
442
+ ref={ref}
443
+ type="button"
444
+ role="tab"
445
+ aria-selected={isSelected}
446
+ data-state={isSelected ? 'active' : 'inactive'}
447
+ onClick={() => onValueChange(value)}
448
+ className={cn(
449
+ 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5',
450
+ 'text-sm font-medium ring-offset-background transition-all',
451
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
452
+ 'disabled:pointer-events-none disabled:opacity-50',
453
+ isSelected && 'bg-background text-foreground shadow-sm',
454
+ className
455
+ )}
456
+ {...props}
457
+ />
458
+ )
459
+ }
460
+ )
461
+ TabsTrigger.displayName = 'TabsTrigger'
462
+
463
+ // TabsContent
464
+ interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {
465
+ value: string
466
+ }
467
+
468
+ const TabsContent = forwardRef<HTMLDivElement, TabsContentProps>(
469
+ ({ className, value, ...props }, ref) => {
470
+ const { value: selectedValue } = useTabs()
471
+ const isSelected = selectedValue === value
472
+
473
+ if (!isSelected) return null
474
+
475
+ return (
476
+ <div
477
+ ref={ref}
478
+ role="tabpanel"
479
+ tabIndex={0}
480
+ data-state={isSelected ? 'active' : 'inactive'}
481
+ className={cn('mt-2 focus-visible:outline-none', className)}
482
+ {...props}
483
+ />
484
+ )
485
+ }
486
+ )
487
+ TabsContent.displayName = 'TabsContent'
488
+
489
+ export { Tabs, TabsList, TabsTrigger, TabsContent }
490
+ ```
491
+
492
+ ---
493
+
494
+ ## Accessible Components
495
+
496
+ ### Modal/Dialog Component
497
+
498
+ ```tsx
499
+ // components/ui/Dialog/Dialog.tsx
500
+ import { forwardRef, useEffect, useRef, useCallback } from 'react'
501
+ import { createPortal } from 'react-dom'
502
+ import { cn } from '@/lib/utils'
503
+
504
+ interface DialogProps {
505
+ open: boolean
506
+ onOpenChange: (open: boolean) => void
507
+ children: React.ReactNode
508
+ }
509
+
510
+ export function Dialog({ open, onOpenChange, children }: DialogProps) {
511
+ const previousActiveElement = useRef<HTMLElement | null>(null)
512
+
513
+ useEffect(() => {
514
+ if (open) {
515
+ previousActiveElement.current = document.activeElement as HTMLElement
516
+ document.body.style.overflow = 'hidden'
517
+ } else {
518
+ document.body.style.overflow = ''
519
+ previousActiveElement.current?.focus()
520
+ }
521
+
522
+ return () => {
523
+ document.body.style.overflow = ''
524
+ }
525
+ }, [open])
526
+
527
+ if (!open) return null
528
+
529
+ return createPortal(
530
+ <div className="fixed inset-0 z-50">
531
+ {/* Backdrop */}
532
+ <div
533
+ className="fixed inset-0 bg-black/50 backdrop-blur-sm"
534
+ onClick={() => onOpenChange(false)}
535
+ aria-hidden="true"
536
+ />
537
+
538
+ {/* Dialog */}
539
+ {children}
540
+ </div>,
541
+ document.body
542
+ )
543
+ }
544
+
545
+ interface DialogContentProps extends React.HTMLAttributes<HTMLDivElement> {
546
+ onClose: () => void
547
+ }
548
+
549
+ export const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(
550
+ ({ className, children, onClose, ...props }, ref) => {
551
+ const contentRef = useRef<HTMLDivElement>(null)
552
+
553
+ // Focus trap
554
+ const handleKeyDown = useCallback((e: React.KeyboardEvent) => {
555
+ if (e.key === 'Escape') {
556
+ onClose()
557
+ return
558
+ }
559
+
560
+ if (e.key !== 'Tab') return
561
+
562
+ const focusableElements = contentRef.current?.querySelectorAll(
563
+ 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
564
+ )
565
+
566
+ if (!focusableElements || focusableElements.length === 0) return
567
+
568
+ const firstElement = focusableElements[0] as HTMLElement
569
+ const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement
570
+
571
+ if (e.shiftKey && document.activeElement === firstElement) {
572
+ e.preventDefault()
573
+ lastElement.focus()
574
+ } else if (!e.shiftKey && document.activeElement === lastElement) {
575
+ e.preventDefault()
576
+ firstElement.focus()
577
+ }
578
+ }, [onClose])
579
+
580
+ // Auto-focus on mount
581
+ useEffect(() => {
582
+ const firstFocusable = contentRef.current?.querySelector(
583
+ 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
584
+ ) as HTMLElement
585
+
586
+ firstFocusable?.focus()
587
+ }, [])
588
+
589
+ return (
590
+ <div
591
+ ref={contentRef}
592
+ role="dialog"
593
+ aria-modal="true"
594
+ onKeyDown={handleKeyDown}
595
+ className={cn(
596
+ 'fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2',
597
+ 'w-full max-w-lg rounded-lg bg-background p-6 shadow-lg',
598
+ 'animate-in fade-in-0 zoom-in-95',
599
+ className
600
+ )}
601
+ {...props}
602
+ >
603
+ {children}
604
+ </div>
605
+ )
606
+ }
607
+ )
608
+ DialogContent.displayName = 'DialogContent'
609
+
610
+ export function DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
611
+ return (
612
+ <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />
613
+ )
614
+ }
615
+
616
+ export function DialogTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {
617
+ return (
618
+ <h2 className={cn('text-lg font-semibold leading-none tracking-tight', className)} {...props} />
619
+ )
620
+ }
621
+
622
+ export function DialogDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {
623
+ return (
624
+ <p className={cn('text-sm text-muted-foreground', className)} {...props} />
625
+ )
626
+ }
627
+
628
+ export function DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
629
+ return (
630
+ <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />
631
+ )
632
+ }
633
+ ```
634
+
635
+ ---
636
+
637
+ ## Component Composition
638
+
639
+ ### Slot Pattern for Flexible Rendering
640
+
641
+ ```tsx
642
+ // components/ui/Slot/Slot.tsx
643
+ import { forwardRef, cloneElement, isValidElement, Children } from 'react'
644
+
645
+ interface SlotProps extends React.HTMLAttributes<HTMLElement> {
646
+ children?: React.ReactNode
647
+ }
648
+
649
+ export const Slot = forwardRef<HTMLElement, SlotProps>(
650
+ ({ children, ...props }, ref) => {
651
+ if (isValidElement(children)) {
652
+ return cloneElement(children, {
653
+ ...props,
654
+ ...children.props,
655
+ ref,
656
+ })
657
+ }
658
+
659
+ if (Children.count(children) > 1) {
660
+ Children.only(null) // Throws error
661
+ }
662
+
663
+ return null
664
+ }
665
+ )
666
+ Slot.displayName = 'Slot'
667
+
668
+ // Usage
669
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
670
+ asChild?: boolean
671
+ }
672
+
673
+ const Button = forwardRef<HTMLButtonElement, ButtonProps>(
674
+ ({ asChild, ...props }, ref) => {
675
+ const Comp = asChild ? Slot : 'button'
676
+ return <Comp ref={ref} {...props} />
677
+ }
678
+ )
679
+
680
+ // Render as link
681
+ <Button asChild>
682
+ <a href="/home">Go Home</a>
683
+ </Button>
684
+ ```
685
+
686
+ ---
687
+
688
+ ## Best Practices
689
+
690
+ ### Component API Design
691
+
692
+ Consistent Prop Naming:
693
+ - variant for visual style
694
+ - size for dimensions
695
+ - disabled for disabled state
696
+ - className for additional styles
697
+
698
+ Forward Refs:
699
+ - Always forward refs for DOM access
700
+ - Use forwardRef with proper typing
701
+
702
+ Composition over Configuration:
703
+ - Prefer compound components
704
+ - Keep individual components focused
705
+
706
+ ### Accessibility Checklist
707
+
708
+ Required Attributes:
709
+ - role for semantic meaning
710
+ - aria-label for icon buttons
711
+ - aria-describedby for form errors
712
+ - aria-expanded for expandable content
713
+
714
+ Keyboard Navigation:
715
+ - Tab for focus navigation
716
+ - Enter/Space for activation
717
+ - Escape for dismissal
718
+ - Arrow keys for selections
719
+
720
+ ---
721
+
722
+ Version: 2.0.0
723
+ Last Updated: 2026-01-06