moai-adk 0.4.5__py3-none-any.whl → 0.20.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 (433) hide show
  1. moai_adk/__init__.py +1 -1
  2. moai_adk/__main__.py +74 -1
  3. moai_adk/cli/commands/__init__.py +1 -1
  4. moai_adk/cli/commands/analyze.py +119 -0
  5. moai_adk/cli/commands/backup.py +25 -1
  6. moai_adk/cli/commands/doctor.py +31 -5
  7. moai_adk/cli/commands/improve_user_experience.py +307 -0
  8. moai_adk/cli/commands/init.py +111 -10
  9. moai_adk/cli/commands/status.py +33 -3
  10. moai_adk/cli/commands/update.py +921 -130
  11. moai_adk/cli/commands/validate_links.py +120 -0
  12. moai_adk/cli/prompts/init_prompts.py +22 -87
  13. moai_adk/core/analysis/__init__.py +9 -0
  14. moai_adk/core/analysis/session_analyzer.py +388 -0
  15. moai_adk/core/analysis/tag_chain_analyzer.py +344 -0
  16. moai_adk/core/analysis/tag_chain_repair.py +879 -0
  17. moai_adk/core/config/__init__.py +19 -0
  18. moai_adk/core/config/migration.py +235 -0
  19. moai_adk/core/git/__init__.py +1 -1
  20. moai_adk/core/git/branch.py +1 -1
  21. moai_adk/core/git/commit.py +1 -1
  22. moai_adk/core/git/manager.py +1 -1
  23. moai_adk/core/issue_creator.py +313 -0
  24. moai_adk/core/mcp/setup.py +56 -0
  25. moai_adk/core/mcp/setup_old.py +296 -0
  26. moai_adk/core/project/backup_utils.py +1 -1
  27. moai_adk/core/project/checker.py +2 -2
  28. moai_adk/core/project/detector.py +211 -12
  29. moai_adk/core/project/initializer.py +85 -15
  30. moai_adk/core/project/phase_executor.py +76 -13
  31. moai_adk/core/project/validator.py +13 -13
  32. moai_adk/core/quality/__init__.py +1 -1
  33. moai_adk/core/quality/trust_checker.py +1 -1
  34. moai_adk/core/quality/validators/__init__.py +1 -1
  35. moai_adk/core/quality/validators/base_validator.py +1 -1
  36. moai_adk/core/tags/__init__.py +86 -0
  37. moai_adk/core/tags/auto_corrector.py +693 -0
  38. moai_adk/core/tags/ci_validator.py +463 -0
  39. moai_adk/core/tags/cli.py +283 -0
  40. moai_adk/core/tags/generator.py +109 -0
  41. moai_adk/core/tags/inserter.py +99 -0
  42. moai_adk/core/tags/mapper.py +126 -0
  43. moai_adk/core/tags/parser.py +76 -0
  44. moai_adk/core/tags/policy_validator.py +580 -0
  45. moai_adk/core/tags/pre_commit_validator.py +421 -0
  46. moai_adk/core/tags/reporter.py +956 -0
  47. moai_adk/core/tags/rollback_manager.py +525 -0
  48. moai_adk/core/tags/tags.py +149 -0
  49. moai_adk/core/tags/validator.py +897 -0
  50. moai_adk/core/template/__init__.py +1 -1
  51. moai_adk/core/template/backup.py +1 -1
  52. moai_adk/core/template/merger.py +50 -1
  53. moai_adk/core/template/processor.py +119 -13
  54. moai_adk/core/template_engine.py +268 -0
  55. moai_adk/templates/.claude/agents/alfred/backend-expert.md +348 -0
  56. moai_adk/templates/.claude/agents/alfred/cc-manager.md +209 -944
  57. moai_adk/templates/.claude/agents/alfred/database-expert.md +352 -0
  58. moai_adk/templates/.claude/agents/alfred/debug-helper.md +34 -5
  59. moai_adk/templates/.claude/agents/alfred/devops-expert.md +464 -0
  60. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +38 -8
  61. moai_adk/templates/.claude/agents/alfred/format-expert.md +469 -0
  62. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +357 -0
  63. moai_adk/templates/.claude/agents/alfred/git-manager.md +128 -9
  64. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +104 -6
  65. moai_adk/templates/.claude/agents/alfred/project-manager.md +88 -16
  66. moai_adk/templates/.claude/agents/alfred/quality-gate.md +36 -9
  67. moai_adk/templates/.claude/agents/alfred/security-expert.md +270 -0
  68. moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
  69. moai_adk/templates/.claude/agents/alfred/spec-builder.md +214 -43
  70. moai_adk/templates/.claude/agents/alfred/tag-agent.md +111 -9
  71. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +309 -160
  72. moai_adk/templates/.claude/agents/alfred/trust-checker.md +36 -7
  73. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +605 -0
  74. moai_adk/templates/.claude/commands/alfred/0-project.md +393 -966
  75. moai_adk/templates/.claude/commands/alfred/1-plan.md +651 -367
  76. moai_adk/templates/.claude/commands/alfred/2-run.md +388 -241
  77. moai_adk/templates/.claude/commands/alfred/3-sync.md +1921 -410
  78. moai_adk/templates/.claude/commands/alfred/9-feedback.md +153 -0
  79. moai_adk/templates/.claude/commands/alfred/release-new.md +3604 -0
  80. moai_adk/templates/.claude/hooks/alfred/core/project.py +484 -20
  81. moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
  82. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
  83. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
  84. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +14 -6
  85. moai_adk/templates/.claude/hooks/alfred/post_tool__enable_streaming_ui.py +50 -0
  86. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +93 -0
  87. moai_adk/templates/.claude/hooks/alfred/post_tool__tag_auto_corrector.py +407 -0
  88. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +99 -0
  89. moai_adk/templates/.claude/hooks/alfred/pre_tool__realtime_tag_monitor.py +335 -0
  90. moai_adk/templates/.claude/hooks/alfred/pre_tool__tag_policy_validator.py +325 -0
  91. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +93 -0
  92. moai_adk/templates/.claude/hooks/alfred/session_start__auto_cleanup.py +580 -0
  93. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +298 -0
  94. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
  95. moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/checkpoint.py +3 -3
  96. moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/context.py +5 -5
  97. moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
  98. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
  99. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
  100. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
  101. moai_adk/templates/.claude/hooks/alfred/shared/handlers/daily_analysis.py +351 -0
  102. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +154 -0
  103. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
  104. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
  105. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
  106. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
  107. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
  108. moai_adk/templates/.claude/hooks/alfred/utils/hook_config.py +94 -0
  109. moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +161 -0
  110. moai_adk/templates/.claude/output-styles/alfred/alfred-moai-adk-beginner.md +267 -0
  111. moai_adk/templates/.claude/output-styles/alfred/keating-personal-tutor.md +440 -0
  112. moai_adk/templates/.claude/output-styles/alfred/r2d2-agentic-coding.md +583 -0
  113. moai_adk/templates/.claude/settings.json +96 -14
  114. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +70 -0
  115. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +62 -0
  116. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +242 -0
  117. moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/SKILL.md +237 -0
  118. moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/examples.md +871 -0
  119. moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/reference.md +653 -0
  120. moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/README.md +162 -0
  121. moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/SKILL.md +227 -0
  122. moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/examples.md +354 -0
  123. moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/reference.md +158 -0
  124. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +179 -79
  125. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/examples.md +117 -0
  126. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/scripts/pre-review-check.sh +62 -0
  127. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +132 -0
  128. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +28 -0
  129. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +444 -0
  130. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +62 -0
  131. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +28 -0
  132. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +405 -0
  133. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +51 -0
  134. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +355 -0
  135. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +239 -0
  136. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +323 -0
  137. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +286 -0
  138. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +126 -0
  139. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +229 -0
  140. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +4 -0
  141. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +150 -0
  142. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +87 -73
  143. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
  144. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
  145. moai_adk/templates/.claude/skills/moai-alfred-personas/README.md +42 -0
  146. moai_adk/templates/.claude/skills/moai-alfred-personas/SKILL.md +429 -0
  147. moai_adk/templates/.claude/skills/moai-alfred-personas/examples.md +520 -0
  148. moai_adk/templates/.claude/skills/moai-alfred-personas/reference.md +405 -0
  149. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +89 -0
  150. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +122 -0
  151. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +369 -0
  152. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +508 -0
  153. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +481 -0
  154. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +100 -0
  155. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +77 -0
  156. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +265 -0
  157. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +539 -0
  158. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +320 -0
  159. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +4 -0
  160. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +84 -0
  161. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +137 -0
  162. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +219 -0
  163. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +161 -0
  164. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +541 -0
  165. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +622 -0
  166. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +19 -0
  167. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +4 -0
  168. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +211 -0
  169. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +288 -0
  170. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
  171. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
  172. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
  173. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
  174. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
  175. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
  176. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
  177. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
  178. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
  179. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
  180. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
  181. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
  182. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
  183. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
  184. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
  185. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
  186. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +482 -0
  187. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +303 -0
  188. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
  189. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +477 -0
  190. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
  191. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
  192. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
  193. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
  194. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +273 -0
  195. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
  196. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +583 -0
  197. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +526 -0
  198. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +608 -0
  199. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +328 -0
  200. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +312 -0
  201. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
  202. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +285 -0
  203. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +278 -0
  204. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +303 -0
  205. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
  206. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
  207. moai_adk/templates/.claude/skills/moai-change-logger/SKILL.md +563 -0
  208. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +802 -0
  209. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +1238 -0
  210. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +673 -0
  211. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +234 -43
  212. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
  213. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
  214. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +97 -69
  215. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
  216. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
  217. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +97 -72
  218. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
  219. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
  220. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +97 -74
  221. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
  222. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
  223. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +98 -74
  224. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
  225. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
  226. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +102 -73
  227. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
  228. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
  229. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +97 -73
  230. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
  231. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
  232. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +97 -67
  233. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
  234. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
  235. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +97 -79
  236. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
  237. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
  238. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +97 -71
  239. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
  240. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
  241. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +265 -64
  242. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
  243. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
  244. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +87 -78
  245. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
  246. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
  247. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +87 -70
  248. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
  249. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
  250. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +87 -86
  251. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
  252. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +80 -62
  254. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +207 -50
  257. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +90 -71
  260. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +78 -58
  263. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +78 -51
  266. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-trust/.!11330!examples.md +0 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +253 -32
  270. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
  272. moai_adk/templates/.claude/skills/moai-jit-docs-enhanced/SKILL.md +460 -0
  273. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +98 -74
  274. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
  275. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
  276. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +98 -76
  277. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
  278. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
  279. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +2358 -70
  280. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
  281. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
  282. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +2962 -68
  283. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
  284. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
  285. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +1898 -70
  286. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
  287. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
  288. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +1465 -68
  289. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
  290. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
  291. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +2364 -66
  292. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
  293. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
  294. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +1630 -69
  295. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
  296. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
  297. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +89 -61
  298. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
  299. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
  300. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +735 -66
  301. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
  302. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
  303. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +97 -73
  304. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
  305. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
  306. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +98 -73
  307. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
  308. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
  309. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +1834 -70
  310. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
  311. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
  312. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +99 -74
  313. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
  314. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
  315. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +97 -74
  316. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
  317. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
  318. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +98 -74
  319. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
  320. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
  321. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +1959 -69
  322. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
  323. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
  324. moai_adk/templates/.claude/skills/moai-lang-template/SKILL.md +348 -0
  325. moai_adk/templates/.claude/skills/moai-lang-template/VARIABLES.md +98 -0
  326. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +1230 -66
  327. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
  328. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
  329. moai_adk/templates/.claude/skills/moai-learning-optimizer/SKILL.md +575 -0
  330. moai_adk/templates/.claude/skills/moai-project-batch-questions/README.md +50 -0
  331. moai_adk/templates/.claude/skills/moai-project-batch-questions/SKILL.md +304 -0
  332. moai_adk/templates/.claude/skills/moai-project-batch-questions/examples.md +417 -0
  333. moai_adk/templates/.claude/skills/moai-project-batch-questions/reference.md +704 -0
  334. moai_adk/templates/.claude/skills/moai-project-config-manager/README.md +87 -0
  335. moai_adk/templates/.claude/skills/moai-project-config-manager/SKILL.md +552 -0
  336. moai_adk/templates/.claude/skills/moai-project-config-manager/examples.md +1109 -0
  337. moai_adk/templates/.claude/skills/moai-project-config-manager/reference.md +514 -0
  338. moai_adk/templates/.claude/skills/moai-project-config-manager/validate.py +106 -0
  339. moai_adk/templates/.claude/skills/moai-project-documentation/README.md +11 -0
  340. moai_adk/templates/.claude/skills/moai-project-documentation/SKILL.md +622 -0
  341. moai_adk/templates/.claude/skills/moai-project-documentation/examples.md +20 -0
  342. moai_adk/templates/.claude/skills/moai-project-documentation/reference.md +12 -0
  343. moai_adk/templates/.claude/skills/moai-project-language-initializer/README.md +152 -0
  344. moai_adk/templates/.claude/skills/moai-project-language-initializer/SKILL.md +285 -0
  345. moai_adk/templates/.claude/skills/moai-project-language-initializer/examples.md +333 -0
  346. moai_adk/templates/.claude/skills/moai-project-language-initializer/reference.md +386 -0
  347. moai_adk/templates/.claude/skills/moai-project-template-optimizer/README.md +49 -0
  348. moai_adk/templates/.claude/skills/moai-project-template-optimizer/SKILL.md +319 -0
  349. moai_adk/templates/.claude/skills/moai-project-template-optimizer/examples.md +58 -0
  350. moai_adk/templates/.claude/skills/moai-project-template-optimizer/reference.md +123 -0
  351. moai_adk/templates/.claude/skills/moai-session-info/SKILL.md +314 -0
  352. moai_adk/templates/.claude/skills/moai-streaming-ui/SKILL.md +552 -0
  353. moai_adk/templates/.claude/skills/moai-tag-policy-validator/SKILL.md +570 -0
  354. moai_adk/templates/.git-hooks/pre-commit +66 -0
  355. moai_adk/templates/.git-hooks/pre-push +255 -0
  356. moai_adk/templates/.github/workflows/c-tag-validation.yml +11 -0
  357. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +11 -0
  358. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +11 -0
  359. moai_adk/templates/.github/workflows/dart-tag-validation.yml +11 -0
  360. moai_adk/templates/.github/workflows/go-tag-validation.yml +130 -0
  361. moai_adk/templates/.github/workflows/java-tag-validation.yml +11 -0
  362. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +135 -0
  363. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +11 -0
  364. moai_adk/templates/.github/workflows/moai-gitflow.yml +166 -3
  365. moai_adk/templates/.github/workflows/moai-release-create.yml +100 -0
  366. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +188 -0
  367. moai_adk/templates/.github/workflows/php-tag-validation.yml +11 -0
  368. moai_adk/templates/.github/workflows/python-tag-validation.yml +118 -0
  369. moai_adk/templates/.github/workflows/release.yml +118 -0
  370. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +11 -0
  371. moai_adk/templates/.github/workflows/rust-tag-validation.yml +11 -0
  372. moai_adk/templates/.github/workflows/shell-tag-validation.yml +11 -0
  373. moai_adk/templates/.github/workflows/spec-issue-sync.yml +338 -0
  374. moai_adk/templates/.github/workflows/swift-tag-validation.yml +11 -0
  375. moai_adk/templates/.github/workflows/tag-report.yml +269 -0
  376. moai_adk/templates/.github/workflows/tag-validation.yml +186 -0
  377. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +154 -0
  378. moai_adk/templates/.mcp.json +31 -0
  379. moai_adk/templates/.moai/config.json +80 -7
  380. moai_adk/templates/CLAUDE.md +562 -546
  381. moai_adk/utils/banner.py +5 -5
  382. moai_adk/utils/common.py +294 -0
  383. moai_adk/utils/link_validator.py +235 -0
  384. moai_adk/utils/logger.py +8 -8
  385. moai_adk/utils/user_experience.py +451 -0
  386. moai_adk-0.20.1.dist-info/METADATA +233 -0
  387. moai_adk-0.20.1.dist-info/RECORD +404 -0
  388. moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
  389. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -156
  390. moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -85
  391. moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
  392. moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -92
  393. moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -70
  394. moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -41
  395. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -636
  396. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -692
  397. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -470
  398. moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +0 -103
  399. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -103
  400. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -95
  401. moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +0 -105
  402. moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +0 -97
  403. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -97
  404. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -90
  405. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -99
  406. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +0 -87
  407. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +0 -62
  408. moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +0 -94
  409. moai_adk/templates/.claude/skills/moai-claude-code/examples.md +0 -513
  410. moai_adk/templates/.claude/skills/moai-claude-code/reference.md +0 -433
  411. moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +0 -332
  412. moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +0 -384
  413. moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +0 -363
  414. moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +0 -595
  415. moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +0 -496
  416. moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +0 -100
  417. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +0 -99
  418. moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +0 -100
  419. moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +0 -98
  420. moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +0 -98
  421. moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
  422. moai_adk/templates/.moai/memory/development-guide.md +0 -344
  423. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
  424. moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
  425. moai_adk/templates/.moai/project/product.md +0 -161
  426. moai_adk/templates/.moai/project/structure.md +0 -156
  427. moai_adk/templates/.moai/project/tech.md +0 -227
  428. moai_adk/templates/__init__.py +0 -2
  429. moai_adk-0.4.5.dist-info/METADATA +0 -369
  430. moai_adk-0.4.5.dist-info/RECORD +0 -152
  431. {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/WHEEL +0 -0
  432. {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/entry_points.txt +0 -0
  433. {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,802 @@
1
+ ---
2
+ skill_name: moai-design-systems
3
+ description: Design system patterns, W3C DTCG 2025.10 token architecture, WCAG 2.2 accessibility standards, and Figma MCP workflows for consistent, accessible UI development
4
+ allowed_tools: [Read, Write, WebFetch, WebSearch]
5
+ freedom_level: medium
6
+ version: 1.0.0
7
+ last_updated: 2025-11-04
8
+ tags: [design-systems, design-tokens, accessibility, wcag, figma-mcp, dtcg]
9
+ ---
10
+
11
+ # Design Systems Development Skill
12
+
13
+ **Purpose**: Guide implementation of production-ready design systems using W3C DTCG 2025.10 token standards, WCAG 2.2 accessibility compliance, and Figma MCP automation workflows.
14
+
15
+ **When to use this Skill**:
16
+ - Setting up design token architecture for multi-platform projects
17
+ - Implementing accessible component libraries (WCAG 2.2 AA/AAA)
18
+ - Automating design-to-code workflows with Figma MCP
19
+ - Building maintainable design systems with Storybook
20
+ - Ensuring color contrast compliance and semantic token naming
21
+
22
+ **Latest Standards** (as of November 2025):
23
+ - **DTCG Specification**: 2025.10 (first stable version)
24
+ - **WCAG Guidelines**: 2.2 (AA: 4.5:1 text, AAA: 7:1 text)
25
+ - **Figma MCP**: Desktop + Remote server support
26
+ - **Style Dictionary**: 4.0 (DTCG-compatible)
27
+ - **Storybook**: 8.x (with Docs addon)
28
+
29
+ ---
30
+
31
+ ## Progressive Disclosure Structure
32
+
33
+ ### Level 1: Quick Start Overview (Read This First)
34
+
35
+ **Design System Foundation** - Three Pillars:
36
+
37
+ 1. **Design Tokens** (Single Source of Truth)
38
+ - Color, typography, spacing, borders, shadows
39
+ - Semantic naming: `color.primary.500`, `spacing.md`, `font.heading.lg`
40
+ - Multi-theme support (light/dark modes)
41
+ - Format: W3C DTCG 2025.10 JSON or Style Dictionary 4.0
42
+
43
+ 2. **Component Library** (Atomic Design Pattern)
44
+ - Atoms → Molecules → Organisms → Templates → Pages
45
+ - Props API for reusability and composition
46
+ - Variant states: default, hover, active, disabled, error, loading
47
+ - Documentation: Storybook with auto-generated props/usage
48
+
49
+ 3. **Accessibility Standards** (WCAG 2.2 Compliance)
50
+ - Color contrast: 4.5:1 (AA), 7:1 (AAA) for text
51
+ - Keyboard navigation: Tab order, focus management
52
+ - Screen readers: ARIA roles, labels, live regions
53
+ - Motion: `prefers-reduced-motion` support
54
+
55
+ **Tool Ecosystem Quick Reference**:
56
+
57
+ | Tool | Version | Purpose | Official Link |
58
+ |------|---------|---------|---------------|
59
+ | **W3C DTCG** | 2025.10 | Design token specification | https://designtokens.org |
60
+ | **Style Dictionary** | 4.0+ | Token transformation engine | https://styledictionary.com |
61
+ | **Figma MCP** | Latest | Design-to-code automation | https://help.figma.com/hc/en-us/articles/32132100833559 |
62
+ | **Storybook** | 8.x | Component documentation | https://storybook.js.org |
63
+ | **axe DevTools** | Latest | Accessibility testing | https://www.deque.com/axe/devtools/ |
64
+ | **Chromatic** | Latest | Visual regression testing | https://chromatic.com |
65
+
66
+ **Decision Points Checklist**:
67
+
68
+ - [ ] Choose token format: DTCG 2025.10 or Style Dictionary 4.0 (both compatible)
69
+ - [ ] Target WCAG level: AA (4.5:1) or AAA (7:1) contrast
70
+ - [ ] Component pattern: Atomic Design or alternative structure
71
+ - [ ] Documentation tool: Storybook, zeroheight, or custom
72
+ - [ ] Figma integration: MCP server (desktop vs remote)
73
+ - [ ] Testing strategy: Visual regression + accessibility + interaction
74
+
75
+ ---
76
+
77
+ ### Level 2: Implementation Patterns (How to Build)
78
+
79
+ #### Pattern 1: Design Token Architecture (DTCG 2025.10)
80
+
81
+ **Token Structure** - Semantic Naming Convention:
82
+
83
+ ```json
84
+ {
85
+ "$schema": "https://tr.designtokens.org/format/",
86
+ "$tokens": {
87
+ "color": {
88
+ "$type": "color",
89
+ "primary": {
90
+ "50": { "$value": "#eff6ff" },
91
+ "100": { "$value": "#dbeafe" },
92
+ "500": { "$value": "#3b82f6" },
93
+ "900": { "$value": "#1e3a8a" }
94
+ },
95
+ "semantic": {
96
+ "text": {
97
+ "primary": { "$value": "{color.gray.900}" },
98
+ "secondary": { "$value": "{color.gray.600}" },
99
+ "disabled": { "$value": "{color.gray.400}" }
100
+ },
101
+ "background": {
102
+ "default": { "$value": "{color.white}" },
103
+ "elevated": { "$value": "{color.gray.50}" }
104
+ }
105
+ }
106
+ },
107
+ "spacing": {
108
+ "$type": "dimension",
109
+ "xs": { "$value": "0.25rem" },
110
+ "sm": { "$value": "0.5rem" },
111
+ "md": { "$value": "1rem" },
112
+ "lg": { "$value": "1.5rem" },
113
+ "xl": { "$value": "2rem" }
114
+ },
115
+ "typography": {
116
+ "$type": "fontFamily",
117
+ "sans": { "$value": ["Inter", "system-ui", "sans-serif"] },
118
+ "mono": { "$value": ["JetBrains Mono", "monospace"] }
119
+ },
120
+ "fontSize": {
121
+ "$type": "dimension",
122
+ "sm": { "$value": "0.875rem" },
123
+ "base": { "$value": "1rem" },
124
+ "lg": { "$value": "1.125rem" },
125
+ "xl": { "$value": "1.25rem" }
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ **Multi-Theme Support** (Light/Dark Mode):
132
+
133
+ ```json
134
+ {
135
+ "color": {
136
+ "semantic": {
137
+ "background": {
138
+ "$type": "color",
139
+ "default": {
140
+ "$value": "{color.white}",
141
+ "$extensions": {
142
+ "mode": {
143
+ "dark": "{color.gray.900}"
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+ ```
152
+
153
+ **Style Dictionary Configuration** (v4.0+):
154
+
155
+ ```javascript
156
+ // style-dictionary.config.js
157
+ export default {
158
+ source: ['tokens/**/*.json'],
159
+ platforms: {
160
+ css: {
161
+ transformGroup: 'css',
162
+ buildPath: 'build/css/',
163
+ files: [{
164
+ destination: 'variables.css',
165
+ format: 'css/variables'
166
+ }]
167
+ },
168
+ js: {
169
+ transformGroup: 'js',
170
+ buildPath: 'build/js/',
171
+ files: [{
172
+ destination: 'tokens.js',
173
+ format: 'javascript/es6'
174
+ }]
175
+ }
176
+ }
177
+ };
178
+ ```
179
+
180
+ #### Pattern 2: Atomic Design Component Structure
181
+
182
+ **Folder Hierarchy**:
183
+
184
+ ```
185
+ src/design-system/
186
+ ├── tokens/ # Design tokens (DTCG format)
187
+ │ ├── color.json
188
+ │ ├── typography.json
189
+ │ └── spacing.json
190
+ ├── components/
191
+ │ ├── atoms/ # Basic building blocks
192
+ │ │ ├── Button/
193
+ │ │ │ ├── Button.tsx
194
+ │ │ │ ├── Button.stories.tsx
195
+ │ │ │ ├── Button.test.tsx
196
+ │ │ │ └── index.ts
197
+ │ │ ├── Input/
198
+ │ │ └── Icon/
199
+ │ ├── molecules/ # Simple combinations
200
+ │ │ ├── FormField/
201
+ │ │ ├── SearchBar/
202
+ │ │ └── Card/
203
+ │ ├── organisms/ # Complex sections
204
+ │ │ ├── Header/
205
+ │ │ ├── Footer/
206
+ │ │ └── DataTable/
207
+ │ └── templates/ # Page layouts
208
+ │ ├── DashboardLayout/
209
+ │ └── AuthLayout/
210
+ └── styles/
211
+ ├── global.css
212
+ └── theme.css
213
+ ```
214
+
215
+ **Component Props API** (Reusability Pattern):
216
+
217
+ ```typescript
218
+ // atoms/Button/Button.tsx
219
+ import { forwardRef } from 'react';
220
+ import { cva, type VariantProps } from 'class-variance-authority';
221
+
222
+ const buttonVariants = cva(
223
+ 'inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50',
224
+ {
225
+ variants: {
226
+ variant: {
227
+ primary: 'bg-primary-500 text-white hover:bg-primary-600',
228
+ secondary: 'bg-gray-200 text-gray-900 hover:bg-gray-300',
229
+ outline: 'border border-gray-300 bg-transparent hover:bg-gray-100',
230
+ ghost: 'hover:bg-gray-100',
231
+ danger: 'bg-red-500 text-white hover:bg-red-600'
232
+ },
233
+ size: {
234
+ sm: 'h-8 px-3 text-sm',
235
+ md: 'h-10 px-4 text-base',
236
+ lg: 'h-12 px-6 text-lg'
237
+ }
238
+ },
239
+ defaultVariants: {
240
+ variant: 'primary',
241
+ size: 'md'
242
+ }
243
+ }
244
+ );
245
+
246
+ export interface ButtonProps
247
+ extends React.ButtonHTMLAttributes<HTMLButtonElement>,
248
+ VariantProps<typeof buttonVariants> {
249
+ isLoading?: boolean;
250
+ }
251
+
252
+ export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
253
+ ({ className, variant, size, isLoading, children, disabled, ...props }, ref) => {
254
+ return (
255
+ <button
256
+ ref={ref}
257
+ className={buttonVariants({ variant, size, className })}
258
+ disabled={disabled || isLoading}
259
+ aria-busy={isLoading}
260
+ {...props}
261
+ >
262
+ {isLoading ? <Spinner /> : children}
263
+ </button>
264
+ );
265
+ }
266
+ );
267
+
268
+ Button.displayName = 'Button';
269
+ ```
270
+
271
+ #### Pattern 3: WCAG 2.2 Accessibility Implementation
272
+
273
+ **Color Contrast Validation** (Automated Check):
274
+
275
+ ```typescript
276
+ // utils/a11y/contrast.ts
277
+ /**
278
+ * Calculate relative luminance for WCAG compliance
279
+ * @see https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html
280
+ */
281
+ function getLuminance(rgb: [number, number, number]): number {
282
+ const [r, g, b] = rgb.map(val => {
283
+ const sRGB = val / 255;
284
+ return sRGB <= 0.03928
285
+ ? sRGB / 12.92
286
+ : Math.pow((sRGB + 0.055) / 1.055, 2.4);
287
+ });
288
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
289
+ }
290
+
291
+ /**
292
+ * Calculate contrast ratio between two colors
293
+ * WCAG AA: 4.5:1 (normal text), 3:1 (large text)
294
+ * WCAG AAA: 7:1 (normal text), 4.5:1 (large text)
295
+ */
296
+ export function getContrastRatio(
297
+ foreground: string,
298
+ background: string
299
+ ): number {
300
+ const fgLum = getLuminance(hexToRgb(foreground));
301
+ const bgLum = getLuminance(hexToRgb(background));
302
+ const lighter = Math.max(fgLum, bgLum);
303
+ const darker = Math.min(fgLum, bgLum);
304
+ return (lighter + 0.05) / (darker + 0.05);
305
+ }
306
+
307
+ /**
308
+ * Check if color pair meets WCAG AA/AAA requirements
309
+ */
310
+ export function meetsWCAG(
311
+ foreground: string,
312
+ background: string,
313
+ level: 'AA' | 'AAA' = 'AA',
314
+ isLargeText: boolean = false
315
+ ): boolean {
316
+ const ratio = getContrastRatio(foreground, background);
317
+
318
+ if (level === 'AAA') {
319
+ return isLargeText ? ratio >= 4.5 : ratio >= 7;
320
+ }
321
+
322
+ // AA level
323
+ return isLargeText ? ratio >= 3 : ratio >= 4.5;
324
+ }
325
+ ```
326
+
327
+ **Keyboard Navigation** (Focus Management):
328
+
329
+ ```typescript
330
+ // hooks/useKeyboardNavigation.ts
331
+ import { useEffect, useRef } from 'react';
332
+
333
+ export function useKeyboardNavigation<T extends HTMLElement>(
334
+ options: {
335
+ onEscape?: () => void;
336
+ onEnter?: () => void;
337
+ trapFocus?: boolean;
338
+ } = {}
339
+ ) {
340
+ const elementRef = useRef<T>(null);
341
+
342
+ useEffect(() => {
343
+ const element = elementRef.current;
344
+ if (!element) return;
345
+
346
+ const handleKeyDown = (e: KeyboardEvent) => {
347
+ if (e.key === 'Escape') {
348
+ options.onEscape?.();
349
+ } else if (e.key === 'Enter') {
350
+ options.onEnter?.();
351
+ } else if (e.key === 'Tab' && options.trapFocus) {
352
+ // Focus trap implementation
353
+ const focusableElements = element.querySelectorAll<HTMLElement>(
354
+ 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
355
+ );
356
+ const firstElement = focusableElements[0];
357
+ const lastElement = focusableElements[focusableElements.length - 1];
358
+
359
+ if (e.shiftKey && document.activeElement === firstElement) {
360
+ lastElement.focus();
361
+ e.preventDefault();
362
+ } else if (!e.shiftKey && document.activeElement === lastElement) {
363
+ firstElement.focus();
364
+ e.preventDefault();
365
+ }
366
+ }
367
+ };
368
+
369
+ element.addEventListener('keydown', handleKeyDown);
370
+ return () => element.removeEventListener('keydown', handleKeyDown);
371
+ }, [options]);
372
+
373
+ return elementRef;
374
+ }
375
+ ```
376
+
377
+ **ARIA Labels & Roles** (Screen Reader Support):
378
+
379
+ ```typescript
380
+ // components/atoms/Input/Input.tsx
381
+ export const Input = forwardRef<HTMLInputElement, InputProps>(
382
+ ({ label, error, required, ...props }, ref) => {
383
+ const inputId = useId();
384
+ const errorId = `${inputId}-error`;
385
+
386
+ return (
387
+ <div className="form-field">
388
+ <label htmlFor={inputId} className="form-label">
389
+ {label}
390
+ {required && <span aria-label="required">*</span>}
391
+ </label>
392
+
393
+ <input
394
+ ref={ref}
395
+ id={inputId}
396
+ aria-invalid={!!error}
397
+ aria-describedby={error ? errorId : undefined}
398
+ aria-required={required}
399
+ {...props}
400
+ />
401
+
402
+ {error && (
403
+ <span id={errorId} role="alert" className="error-message">
404
+ {error}
405
+ </span>
406
+ )}
407
+ </div>
408
+ );
409
+ }
410
+ );
411
+ ```
412
+
413
+ **Motion Accessibility** (Reduced Motion Support):
414
+
415
+ ```css
416
+ /* styles/motion.css */
417
+ @media (prefers-reduced-motion: reduce) {
418
+ *,
419
+ *::before,
420
+ *::after {
421
+ animation-duration: 0.01ms !important;
422
+ animation-iteration-count: 1 !important;
423
+ transition-duration: 0.01ms !important;
424
+ scroll-behavior: auto !important;
425
+ }
426
+ }
427
+
428
+ /* Safe animations for reduced motion users */
429
+ .fade-enter {
430
+ opacity: 0;
431
+ }
432
+
433
+ .fade-enter-active {
434
+ opacity: 1;
435
+ transition: opacity 200ms ease-in;
436
+ }
437
+
438
+ @media (prefers-reduced-motion: reduce) {
439
+ .fade-enter-active {
440
+ transition: none;
441
+ opacity: 1;
442
+ }
443
+ }
444
+ ```
445
+
446
+ #### Pattern 4: Figma MCP Integration Workflow
447
+
448
+ **Setup** (Desktop Server):
449
+
450
+ ```bash
451
+ # Install Figma desktop app
452
+ # Enable MCP server in settings
453
+ # Desktop server runs at http://127.0.0.1:3845/mcp
454
+ ```
455
+
456
+ **MCP Configuration** (Claude Desktop):
457
+
458
+ ```json
459
+ {
460
+ "mcpServers": {
461
+ "figma": {
462
+ "command": "figma-mcp",
463
+ "args": [],
464
+ "env": {
465
+ "FIGMA_ACCESS_TOKEN": "your-figma-token"
466
+ }
467
+ }
468
+ }
469
+ }
470
+ ```
471
+
472
+ **Extracting Design Tokens from Figma**:
473
+
474
+ 1. **Create Figma Variables** (Color, Typography, Spacing)
475
+ 2. **Use MCP Server** to extract variables:
476
+ - Select frame in Figma
477
+ - Prompt: "Extract all design tokens from this frame"
478
+ - MCP returns DTCG-compatible JSON
479
+ 3. **Transform to Code** using Style Dictionary
480
+
481
+ **Component Code Generation**:
482
+
483
+ ```
484
+ User Workflow:
485
+ 1. Select component frame in Figma
486
+ 2. Prompt: "Generate React component from this design"
487
+ 3. MCP extracts:
488
+ - Component structure
489
+ - Applied design tokens
490
+ - Layout properties (flex, grid)
491
+ - Typography and spacing
492
+ 4. Output: TypeScript React component with props
493
+ ```
494
+
495
+ **Automation Pattern** (Link-based workflow):
496
+
497
+ ```typescript
498
+ // scripts/sync-figma-tokens.ts
499
+ import { exec } from 'child_process';
500
+ import { promisify } from 'util';
501
+
502
+ const execAsync = promisify(exec);
503
+
504
+ async function syncFigmaTokens(figmaFileUrl: string) {
505
+ // Use Figma MCP to extract tokens
506
+ const { stdout } = await execAsync(
507
+ `figma-mcp extract-tokens --url="${figmaFileUrl}"`
508
+ );
509
+
510
+ const tokens = JSON.parse(stdout);
511
+
512
+ // Write to tokens directory
513
+ await writeFile('tokens/color.json', JSON.stringify(tokens.color, null, 2));
514
+ await writeFile('tokens/spacing.json', JSON.stringify(tokens.spacing, null, 2));
515
+
516
+ // Run Style Dictionary build
517
+ await execAsync('npm run tokens:build');
518
+
519
+ console.log('✅ Design tokens synchronized from Figma');
520
+ }
521
+ ```
522
+
523
+ #### Pattern 5: Storybook Documentation Setup
524
+
525
+ **Installation & Configuration**:
526
+
527
+ ```bash
528
+ npx storybook@latest init
529
+ ```
530
+
531
+ **Storybook Configuration** (v8.x):
532
+
533
+ ```typescript
534
+ // .storybook/main.ts
535
+ import type { StorybookConfig } from '@storybook/react-vite';
536
+
537
+ const config: StorybookConfig = {
538
+ stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'],
539
+ addons: [
540
+ '@storybook/addon-links',
541
+ '@storybook/addon-essentials',
542
+ '@storybook/addon-interactions',
543
+ '@storybook/addon-a11y', // Accessibility testing
544
+ ],
545
+ framework: {
546
+ name: '@storybook/react-vite',
547
+ options: {},
548
+ },
549
+ docs: {
550
+ autodocs: 'tag', // Auto-generate docs
551
+ },
552
+ };
553
+
554
+ export default config;
555
+ ```
556
+
557
+ **Component Story** (with accessibility tests):
558
+
559
+ ```typescript
560
+ // components/atoms/Button/Button.stories.tsx
561
+ import type { Meta, StoryObj } from '@storybook/react';
562
+ import { Button } from './Button';
563
+
564
+ const meta: Meta<typeof Button> = {
565
+ title: 'Atoms/Button',
566
+ component: Button,
567
+ tags: ['autodocs'],
568
+ argTypes: {
569
+ variant: {
570
+ control: 'select',
571
+ options: ['primary', 'secondary', 'outline', 'ghost', 'danger'],
572
+ },
573
+ size: {
574
+ control: 'select',
575
+ options: ['sm', 'md', 'lg'],
576
+ },
577
+ },
578
+ };
579
+
580
+ export default meta;
581
+ type Story = StoryObj<typeof Button>;
582
+
583
+ export const Primary: Story = {
584
+ args: {
585
+ children: 'Primary Button',
586
+ variant: 'primary',
587
+ },
588
+ };
589
+
590
+ export const AllVariants: Story = {
591
+ render: () => (
592
+ <div className="flex gap-4">
593
+ <Button variant="primary">Primary</Button>
594
+ <Button variant="secondary">Secondary</Button>
595
+ <Button variant="outline">Outline</Button>
596
+ <Button variant="ghost">Ghost</Button>
597
+ <Button variant="danger">Danger</Button>
598
+ </div>
599
+ ),
600
+ };
601
+
602
+ export const Disabled: Story = {
603
+ args: {
604
+ children: 'Disabled Button',
605
+ disabled: true,
606
+ },
607
+ };
608
+
609
+ export const Loading: Story = {
610
+ args: {
611
+ children: 'Loading Button',
612
+ isLoading: true,
613
+ },
614
+ };
615
+ ```
616
+
617
+ ---
618
+
619
+ ### Level 3: Advanced Topics (Deep Expertise)
620
+
621
+ #### Advanced 1: Type-Safe Design Tokens (TypeScript)
622
+
623
+ **Generate TypeScript Types from DTCG Tokens**:
624
+
625
+ ```typescript
626
+ // scripts/generate-token-types.ts
627
+ import { readFileSync, writeFileSync } from 'fs';
628
+
629
+ interface DTCGToken {
630
+ $value: string | number | string[];
631
+ $type?: string;
632
+ [key: string]: any;
633
+ }
634
+
635
+ function generateTypes(tokens: Record<string, any>, prefix = ''): string {
636
+ let types = '';
637
+
638
+ for (const [key, value] of Object.entries(tokens)) {
639
+ if (value.$value !== undefined) {
640
+ const tokenPath = `${prefix}${key}`.replace(/\./g, '-');
641
+ types += `export const ${tokenPath} = '${value.$value}';\n`;
642
+ } else {
643
+ types += generateTypes(value, `${prefix}${key}.`);
644
+ }
645
+ }
646
+
647
+ return types;
648
+ }
649
+
650
+ const colorTokens = JSON.parse(readFileSync('tokens/color.json', 'utf-8'));
651
+ const types = generateTypes(colorTokens.$tokens);
652
+ writeFileSync('src/tokens/colors.ts', types);
653
+ ```
654
+
655
+ #### Advanced 2: Visual Regression Testing (Chromatic)
656
+
657
+ ```bash
658
+ # Install Chromatic
659
+ npm install --save-dev chromatic
660
+
661
+ # Configure in package.json
662
+ {
663
+ "scripts": {
664
+ "chromatic": "chromatic --project-token=<your-token>"
665
+ }
666
+ }
667
+ ```
668
+
669
+ **CI/CD Integration**:
670
+
671
+ ```yaml
672
+ # .github/workflows/chromatic.yml
673
+ name: Chromatic
674
+
675
+ on: [push]
676
+
677
+ jobs:
678
+ chromatic:
679
+ runs-on: ubuntu-latest
680
+ steps:
681
+ - uses: actions/checkout@v4
682
+ with:
683
+ fetch-depth: 0
684
+
685
+ - uses: actions/setup-node@v4
686
+ with:
687
+ node-version: 20
688
+
689
+ - name: Install dependencies
690
+ run: npm ci
691
+
692
+ - name: Run Chromatic
693
+ uses: chromaui/action@v1
694
+ with:
695
+ projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
696
+ ```
697
+
698
+ #### Advanced 3: Accessibility Testing Automation
699
+
700
+ **Jest + jest-axe Configuration**:
701
+
702
+ ```typescript
703
+ // tests/setup.ts
704
+ import '@testing-library/jest-dom';
705
+ import { toHaveNoViolations } from 'jest-axe';
706
+
707
+ expect.extend(toHaveNoViolations);
708
+ ```
709
+
710
+ **Component Accessibility Tests**:
711
+
712
+ ```typescript
713
+ // components/atoms/Button/Button.test.tsx
714
+ import { render } from '@testing-library/react';
715
+ import { axe } from 'jest-axe';
716
+ import { Button } from './Button';
717
+
718
+ describe('Button Accessibility', () => {
719
+ it('should have no accessibility violations', async () => {
720
+ const { container } = render(<Button>Click me</Button>);
721
+ const results = await axe(container);
722
+ expect(results).toHaveNoViolations();
723
+ });
724
+
725
+ it('should have correct ARIA attributes when disabled', () => {
726
+ const { getByRole } = render(<Button disabled>Disabled</Button>);
727
+ const button = getByRole('button');
728
+ expect(button).toHaveAttribute('aria-disabled', 'true');
729
+ });
730
+
731
+ it('should indicate loading state to screen readers', () => {
732
+ const { getByRole } = render(<Button isLoading>Loading</Button>);
733
+ const button = getByRole('button');
734
+ expect(button).toHaveAttribute('aria-busy', 'true');
735
+ });
736
+ });
737
+ ```
738
+
739
+ ---
740
+
741
+ ## Best Practices Checklist
742
+
743
+ Design Token Architecture:
744
+ - [ ] Use semantic naming (`color.primary.500` not `color.blue`)
745
+ - [ ] Implement aliasing for themes (`{color.white}` references)
746
+ - [ ] Validate DTCG 2025.10 spec compliance
747
+ - [ ] Version tokens with semantic versioning
748
+ - [ ] Document token usage in Storybook
749
+
750
+ Component Development:
751
+ - [ ] Follow Atomic Design hierarchy (Atoms → Molecules → Organisms)
752
+ - [ ] Create variant-based props APIs (not separate components)
753
+ - [ ] Document all props with TypeScript types
754
+ - [ ] Write Storybook stories for all variants
755
+ - [ ] Test component accessibility with jest-axe
756
+
757
+ Accessibility:
758
+ - [ ] Verify 4.5:1 contrast for all text (WCAG AA)
759
+ - [ ] Implement keyboard navigation for all interactive elements
760
+ - [ ] Add ARIA labels to form fields and buttons
761
+ - [ ] Test with screen readers (NVDA, JAWS, VoiceOver)
762
+ - [ ] Support `prefers-reduced-motion`
763
+
764
+ Testing:
765
+ - [ ] Visual regression tests for all components (Chromatic)
766
+ - [ ] Accessibility tests with axe-core
767
+ - [ ] Interaction tests with Testing Library
768
+ - [ ] Cross-browser compatibility checks
769
+
770
+ Figma Integration:
771
+ - [ ] Set up Figma MCP server (desktop or remote)
772
+ - [ ] Extract design tokens from Figma variables
773
+ - [ ] Automate component code generation
774
+ - [ ] Sync design changes with codebase
775
+
776
+ ---
777
+
778
+ ## When NOT to Use This Skill
779
+
780
+ - **Simple static sites**: Overkill for projects without complex UI requirements
781
+ - **Rapid prototyping**: Design systems add overhead during early exploration
782
+ - **Single-use projects**: Token architecture benefits long-term maintenance
783
+ - **Non-web platforms**: This Skill focuses on web (React/Vue/TypeScript)
784
+
785
+ For these cases, consider:
786
+ - Plain CSS/Tailwind for static sites
787
+ - Component libraries (Material-UI, shadcn/ui) for rapid development
788
+ - Platform-specific design systems (iOS HIG, Material Design for Android)
789
+
790
+ ---
791
+
792
+ **Related Skills**:
793
+ - `moai-domain-frontend` - Frontend architecture patterns
794
+ - `moai-lang-typescript` - TypeScript best practices
795
+ - `moai-foundation-testing` - Testing strategies
796
+
797
+ **Official Resources**:
798
+ - W3C DTCG: https://designtokens.org
799
+ - WCAG 2.2: https://www.w3.org/WAI/WCAG22/quickref/
800
+ - Figma MCP: https://help.figma.com/hc/en-us/articles/32132100833559
801
+ - Style Dictionary: https://styledictionary.com
802
+ - Storybook: https://storybook.js.org