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,451 @@
1
+ # @CODE:USER-EXPERIENCE-IMPROVEMENT-001 | @TEST:USER-EXPERIENCE-IMPROVEMENT-001
2
+
3
+ """
4
+ User Experience Enhancement Utilities
5
+ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„  ์œ ํ‹ธ๋ฆฌํ‹ฐ
6
+ """
7
+
8
+ import asyncio
9
+ import logging
10
+ import time
11
+ from dataclasses import dataclass, field
12
+ from datetime import datetime
13
+ from typing import Any, Dict, List, Tuple
14
+ from urllib.parse import urljoin
15
+
16
+ import aiohttp
17
+
18
+ from moai_adk.utils.common import HTTPClient
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ @dataclass
24
+ class PerformanceMetrics:
25
+ """์„ฑ๋Šฅ ์ง€ํ‘œ"""
26
+ load_time: float
27
+ response_time: float
28
+ success_rate: float
29
+ throughput: float
30
+ error_rate: float
31
+ timestamp: datetime = field(default_factory=datetime.now)
32
+
33
+ @property
34
+ def is_good(self) -> bool:
35
+ """์„ฑ๋Šฅ์ด ์ข‹์€์ง€ ์—ฌ๋ถ€"""
36
+ return (
37
+ self.load_time <= 2.0 and
38
+ self.response_time <= 1.0 and
39
+ self.success_rate >= 0.9 and
40
+ self.throughput >= 10 and
41
+ self.error_rate <= 0.1
42
+ )
43
+
44
+
45
+ @dataclass
46
+ class NavigationMetrics:
47
+ """๋„ค๋น„๊ฒŒ์ด์…˜ ์ง€ํ‘œ"""
48
+ structure_score: float
49
+ link_count: int
50
+ depth: int
51
+ completeness: float
52
+ timestamp: datetime = field(default_factory=datetime.now)
53
+
54
+ @property
55
+ def is_good(self) -> bool:
56
+ """๋„ค๋น„๊ฒŒ์ด์…˜์ด ์ข‹์€์ง€ ์—ฌ๋ถ€"""
57
+ return (
58
+ self.structure_score >= 0.8 and
59
+ self.link_count >= 5 and
60
+ self.depth <= 3 and
61
+ self.completeness >= 0.9
62
+ )
63
+
64
+
65
+ @dataclass
66
+ class ContentMetrics:
67
+ """์ฝ˜ํ…์ธ  ์ง€ํ‘œ"""
68
+ accuracy_score: float
69
+ completeness_score: float
70
+ organization_score: float
71
+ readability_score: float
72
+ timestamp: datetime = field(default_factory=datetime.now)
73
+
74
+ @property
75
+ def is_good(self) -> bool:
76
+ """์ฝ˜ํ…์ธ ๊ฐ€ ์ข‹์€์ง€ ์—ฌ๋ถ€"""
77
+ return (
78
+ self.accuracy_score >= 0.9 and
79
+ self.completeness_score >= 0.9 and
80
+ self.organization_score >= 0.8 and
81
+ self.readability_score >= 0.8
82
+ )
83
+
84
+
85
+ @dataclass
86
+ class AccessibilityMetrics:
87
+ """์ ‘๊ทผ์„ฑ ์ง€ํ‘œ"""
88
+ keyboard_navigation: bool
89
+ screen_reader_support: bool
90
+ color_contrast: bool
91
+ responsive_design: bool
92
+ aria_labels: bool
93
+ timestamp: datetime = field(default_factory=datetime.now)
94
+
95
+ @property
96
+ def is_good(self) -> bool:
97
+ """์ ‘๊ทผ์„ฑ์ด ์ข‹์€์ง€ ์—ฌ๋ถ€"""
98
+ return all([
99
+ self.keyboard_navigation,
100
+ self.screen_reader_support,
101
+ self.color_contrast,
102
+ self.responsive_design,
103
+ self.aria_labels
104
+ ])
105
+
106
+
107
+ class UserExperienceAnalyzer(HTTPClient):
108
+ """์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋ถ„์„๊ธฐ"""
109
+
110
+ def __init__(self, base_url: str, max_workers: int = 5):
111
+ super().__init__(max_concurrent=max_workers, timeout=10)
112
+ self.base_url = base_url
113
+
114
+ async def __aenter__(self):
115
+ """๋น„๋™๊ธฐ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ € ์ง„์ž…"""
116
+ connector = aiohttp.TCPConnector(limit=self.max_concurrent)
117
+ timeout = aiohttp.ClientTimeout(total=self.timeout)
118
+ self.session = aiohttp.ClientSession(
119
+ connector=connector,
120
+ timeout=timeout,
121
+ headers={
122
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
123
+ }
124
+ )
125
+ return self
126
+
127
+ async def __aexit__(self, exc_type, exc_val, exc_tb):
128
+ """๋น„๋™๊ธฐ ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ € ์ข…๋ฃŒ"""
129
+ if self.session:
130
+ await self.session.close()
131
+
132
+ async def analyze_performance(self) -> PerformanceMetrics:
133
+ """์„ฑ๋Šฅ ๋ถ„์„"""
134
+ # ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€ ๋™์‹œ ๋กœ๋“œ ํ…Œ์ŠคํŠธ
135
+ pages = [
136
+ self.base_url,
137
+ urljoin(self.base_url, "/getting-started"),
138
+ urljoin(self.base_url, "/api"),
139
+ urljoin(self.base_url, "/guides"),
140
+ urljoin(self.base_url, "/search")
141
+ ]
142
+
143
+ load_times = []
144
+ success_count = 0
145
+ total_requests = len(pages)
146
+
147
+ async def load_page(url: str) -> Tuple[float, bool]:
148
+ page_start = time.time()
149
+ try:
150
+ response = await self.fetch_url(url)
151
+ load_time = time.time() - page_start
152
+ success = response.success
153
+ return load_time, success
154
+ except Exception:
155
+ load_time = time.time() - page_start
156
+ return load_time, False
157
+
158
+ # ๋ชจ๋“  ํŽ˜์ด์ง€ ๋™์‹œ ๋กœ๋“œ
159
+ tasks = [load_page(url) for url in pages]
160
+ results = await asyncio.gather(*tasks)
161
+
162
+ # ๊ฒฐ๊ณผ ๋ถ„์„
163
+ total_load_time = 0
164
+ success_count = 0
165
+
166
+ for load_time, success in results:
167
+ load_times.append(load_time)
168
+ total_load_time += load_time
169
+ if success:
170
+ success_count += 1
171
+
172
+ avg_load_time = total_load_time / total_requests if total_requests > 0 else 0
173
+ success_rate = success_count / total_requests if total_requests > 0 else 0
174
+
175
+ # ๋ชจ์˜ ์ธก์ •๊ฐ’ (์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” ์‹ค์ œ ์ง€ํ‘œ ์‚ฌ์šฉ)
176
+ response_time = 0.5 # ๋ชจ์˜ ์‘๋‹ต ์‹œ๊ฐ„
177
+ throughput = 15.0 # ๋ชจ๋“  ์ฒ˜๋ฆฌ๋Ÿ‰
178
+ error_rate = 1.0 - success_rate
179
+
180
+ return PerformanceMetrics(
181
+ load_time=avg_load_time,
182
+ response_time=response_time,
183
+ success_rate=success_rate,
184
+ throughput=throughput,
185
+ error_rate=error_rate
186
+ )
187
+
188
+ async def analyze_navigation(self) -> NavigationMetrics:
189
+ """๋„ค๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ ๋ถ„์„"""
190
+ # ๋ชจ์˜ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ์ดํ„ฐ (์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” ์‹ค์ œ ํฌ๋กค๋ง ์ˆ˜ํ–‰)
191
+ navigation_data = {
192
+ "main_links": ["Getting Started", "API Documentation", "Guides", "Search"],
193
+ "sub_links": {
194
+ "Getting Started": ["Installation", "Configuration", "First Steps"],
195
+ "API Documentation": ["Core API", "Authentication", "Webhooks"],
196
+ "Guides": ["Best Practices", "Examples", "Troubleshooting"],
197
+ "Search": ["Advanced Search", "Filters", "Results"]
198
+ },
199
+ "depth": 2,
200
+ "total_links": 15
201
+ }
202
+
203
+ # ๊ตฌ์กฐ ์ ์ˆ˜ ๊ณ„์‚ฐ
204
+ structure_score = self._calculate_structure_score(navigation_data)
205
+
206
+ return NavigationMetrics(
207
+ structure_score=structure_score,
208
+ link_count=navigation_data["total_links"],
209
+ depth=navigation_data["depth"],
210
+ completeness=0.95
211
+ )
212
+
213
+ def _calculate_structure_score(self, navigation_data: Dict) -> float:
214
+ """๋„ค๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ ์ ์ˆ˜ ๊ณ„์‚ฐ"""
215
+ main_links = len(navigation_data["main_links"])
216
+ sub_links_count = sum(len(links) for links in navigation_data["sub_links"].values())
217
+
218
+ # ๊ตฌ์กฐ ์ ์ˆ˜ ๊ณ„์‚ฐ (๋งํฌ ๊ท ํ˜•์„ฑ๊ณผ ๊ณ„์ธต์  ๊ตฌ์กฐ ๊ณ ๋ ค)
219
+ balance_score = min(1.0, main_links / 4.0) # ๋ฉ”์ธ ๋งํฌ ๊ท ํ˜•์„ฑ
220
+ hierarchy_score = max(0.5, 1.0 - navigation_data["depth"] / 5.0) # ๊ณ„์ธต ๊นŠ์ด
221
+ coverage_score = min(1.0, sub_links_count / 20.0) # ์„œ๋ธŒ ๋งํฌ ์ปค๋ฒ„๋ฆฌ์ง€
222
+
223
+ return (balance_score + hierarchy_score + coverage_score) / 3.0
224
+
225
+ async def analyze_content(self) -> ContentMetrics:
226
+ """์ฝ˜ํ…์ธ  ํ’ˆ์งˆ ๋ถ„์„"""
227
+ # ๋ชจ์˜ ์ฝ˜ํ…์ธ  ๋ฐ์ดํ„ฐ (์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” ์‹ค์ œ ์ฝ˜ํ…์ธ  ๋ถ„์„ ์ˆ˜ํ–‰)
228
+ content_data = {
229
+ "word_count": 5000,
230
+ "code_examples": 25,
231
+ "images": 15,
232
+ "links": 30,
233
+ "readability_score": 8.5,
234
+ "completeness_score": 0.95
235
+ }
236
+
237
+ # ์ •ํ™•์„ฑ ์ ์ˆ˜ ๊ณ„์‚ฐ
238
+ accuracy_score = self._calculate_accuracy_score(content_data)
239
+ organization_score = self._calculate_organization_score(content_data)
240
+ readability_score = content_data["readability_score"] / 10.0
241
+
242
+ return ContentMetrics(
243
+ accuracy_score=accuracy_score,
244
+ completeness_score=content_data["completeness_score"],
245
+ organization_score=organization_score,
246
+ readability_score=readability_score
247
+ )
248
+
249
+ def _calculate_accuracy_score(self, content_data: Dict) -> float:
250
+ """์ฝ˜ํ…์ธ  ์ •ํ™•์„ฑ ์ ์ˆ˜ ๊ณ„์‚ฐ"""
251
+ code_examples_ratio = min(1.0, content_data["code_examples"] / 20.0)
252
+ images_ratio = min(1.0, content_data["images"] / 10.0)
253
+ links_ratio = min(1.0, content_data["links"] / 25.0)
254
+
255
+ return (code_examples_ratio + images_ratio + links_ratio) / 3.0
256
+
257
+ def _calculate_organization_score(self, content_data: Dict) -> float:
258
+ """์ฝ˜ํ…์ธ  ์กฐ์ง ์ ์ˆ˜ ๊ณ„์‚ฐ"""
259
+ word_count_ratio = min(1.0, content_data["word_count"] / 5000.0)
260
+ structure_score = min(1.0, content_data["code_examples"] / 15.0)
261
+
262
+ return (word_count_ratio + structure_score) / 2.0
263
+
264
+ async def analyze_accessibility(self) -> AccessibilityMetrics:
265
+ """์ ‘๊ทผ์„ฑ ๋ถ„์„"""
266
+ # ๋ชจ์˜ ์ ‘๊ทผ์„ฑ ๋ฐ์ดํ„ฐ (์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” ์‹ค์ œ ์ ‘๊ทผ์„ฑ ๊ฒ€์‚ฌ ์ˆ˜ํ–‰)
267
+ accessibility_data = {
268
+ "keyboard_navigation": True,
269
+ "screen_reader_support": True,
270
+ "color_contrast": True,
271
+ "responsive_design": True,
272
+ "aria_labels": True
273
+ }
274
+
275
+ return AccessibilityMetrics(
276
+ keyboard_navigation=accessibility_data["keyboard_navigation"],
277
+ screen_reader_support=accessibility_data["screen_reader_support"],
278
+ color_contrast=accessibility_data["color_contrast"],
279
+ responsive_design=accessibility_data["responsive_design"],
280
+ aria_labels=accessibility_data["aria_labels"]
281
+ )
282
+
283
+ async def generate_report(self) -> Dict[str, Any]:
284
+ """์ข…ํ•ฉ ๊ฒฝํ—˜ ๋ณด๊ณ ์„œ ์ƒ์„ฑ"""
285
+ async with self:
286
+ # ๋ชจ๋“  ์ง€ํ‘œ ๋™์‹œ ๋ถ„์„
287
+ performance_task = self.analyze_performance()
288
+ navigation_task = self.analyze_navigation()
289
+ content_task = self.analyze_content()
290
+ accessibility_task = self.analyze_accessibility()
291
+
292
+ # ๋ชจ๋“  ๋ถ„์„ ๋ณ‘๋ ฌ ์‹คํ–‰
293
+ performance, navigation, content, accessibility = await asyncio.gather(
294
+ performance_task, navigation_task, content_task, accessibility_task
295
+ )
296
+
297
+ # ์ข…ํ•ฉ ์ ์ˆ˜ ๊ณ„์‚ฐ
298
+ overall_score = (
299
+ performance.success_rate * 0.3 +
300
+ navigation.structure_score * 0.2 +
301
+ content.accuracy_score * 0.3 +
302
+ (1 if accessibility.is_good else 0) * 0.2
303
+ )
304
+
305
+ # ๊ฐœ์„  ์ œ์•ˆ ์ƒ์„ฑ
306
+ recommendations = self._generate_recommendations(
307
+ performance, navigation, content, accessibility
308
+ )
309
+
310
+ return {
311
+ "overall_score": overall_score,
312
+ "performance": performance,
313
+ "navigation": navigation,
314
+ "content": content,
315
+ "accessibility": accessibility,
316
+ "recommendations": recommendations,
317
+ "generated_at": datetime.now().isoformat()
318
+ }
319
+
320
+ def _generate_recommendations(
321
+ self,
322
+ performance: PerformanceMetrics,
323
+ navigation: NavigationMetrics,
324
+ content: ContentMetrics,
325
+ accessibility: AccessibilityMetrics
326
+ ) -> List[str]:
327
+ """๊ฐœ์„  ์ œ์•ˆ ์ƒ์„ฑ"""
328
+ recommendations = []
329
+
330
+ # ์„ฑ๋Šฅ ๊ฐœ์„  ์ œ์•ˆ
331
+ if not performance.is_good:
332
+ if performance.load_time > 2.0:
333
+ recommendations.append("ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ๊ฐ„ ๊ฐœ์„ : ์ด๋ฏธ์ง€ ์ตœ์ ํ™”, CDN ์‚ฌ์šฉ, ์ฝ”๋“œ ์Šคํ”Œ๋ฆฟ ๊ณ ๋ ค")
334
+ if performance.error_rate > 0.1:
335
+ recommendations.append("์—๋Ÿฌ ์ฒ˜๋ฆฌ ๊ฐœ์„ : 404 ํŽ˜์ด์ง€ ๊ฐœ์„ , ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๊ฐœ์„ ")
336
+
337
+ # ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ฐœ์„  ์ œ์•ˆ
338
+ if not navigation.is_good:
339
+ if navigation.structure_score < 0.8:
340
+ recommendations.append("๋„ค๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ ์žฌ์„ค๊ณ„: ๊ณ„์ธต ๊ตฌ์กฐ ๋‹จ์ˆœํ™”, ์นดํ…Œ๊ณ ๋ฆฌ ์žฌ๊ตฌ์„ฑ")
341
+ if navigation.completeness < 0.9:
342
+ recommendations.append("๋งํฌ ์™„์„ฑ๋„ ๊ฐœ์„ : ๋ˆ„๋ฝ๋œ ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ, ํฐ์Œ ๋งํฌ ์ถ”๊ฐ€")
343
+
344
+ # ์ฝ˜ํ…์ธ  ๊ฐœ์„  ์ œ์•ˆ
345
+ if not content.is_good:
346
+ if content.accuracy_score < 0.9:
347
+ recommendations.append("์ฝ˜ํ…์ธ  ์ •ํ™•์„ฑ ๊ฐœ์„ : ์ •๋ณด ์—…๋ฐ์ดํŠธ, ์˜ˆ์‹œ ์ฝ”๋“œ ๊ฒ€์ฆ")
348
+ if content.organization_score < 0.8:
349
+ recommendations.append("์ฝ˜ํ…์ธ  ๊ตฌ์กฐ ๊ฐœ์„ : ์„น์…˜ ๋ถ„ํ• , ๋ชฉ์ฐจ ์ถ”๊ฐ€, ๊ด€๋ จ ๋งํฌ ์ถ”๊ฐ€")
350
+
351
+ # ์ ‘๊ทผ์„ฑ ๊ฐœ์„  ์ œ์•ˆ
352
+ if not accessibility.is_good:
353
+ if not accessibility.keyboard_navigation:
354
+ recommendations.append("ํ‚ค๋ณด๋“œ ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ฐœ์„ : ํƒญ ์ˆœ์„œ ์ตœ์ ํ™”, ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค ์ถ”๊ฐ€")
355
+ if not accessibility.screen_reader_support:
356
+ recommendations.append("์Šคํฌ๋ฆฐ ๋ฆฌ๋” ์ง€์› ๊ฐœ์„ : ARIA ๋ ˆ์ด๋ธ” ์ถ”๊ฐ€, ์‹œ๋งจํ‹ฑ HTML ์‚ฌ์šฉ")
357
+
358
+ return recommendations
359
+
360
+
361
+ def generate_improvement_plan(analysis_report: Dict[str, Any]) -> Dict[str, Any]:
362
+ """๊ฐœ์„  ๊ณ„ํš ์ƒ์„ฑ"""
363
+ overall_score = analysis_report["overall_score"]
364
+
365
+ # ์šฐ์„ ์ˆœ์œ„ ์„ค์ •
366
+ priorities = {
367
+ "high": [],
368
+ "medium": [],
369
+ "low": []
370
+ }
371
+
372
+ # ์„ฑ๋Šฅ ์šฐ์„ ์ˆœ์œ„
373
+ performance = analysis_report["performance"]
374
+ if not performance.is_good:
375
+ if performance.error_rate > 0.2:
376
+ priorities["high"].append("์—๋Ÿฌ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๊ฐœ์„ ")
377
+ elif performance.load_time > 3.0:
378
+ priorities["high"].append("๋กœ๋“œ ์‹œ๊ฐ„ ๊ฐœ์„ ")
379
+ else:
380
+ priorities["medium"].append("์„ฑ๋Šฅ ์ตœ์ ํ™”")
381
+
382
+ # ์ฝ˜ํ…์ธ  ์šฐ์„ ์ˆœ์œ„
383
+ content = analysis_report["content"]
384
+ if not content.is_good:
385
+ if content.accuracy_score < 0.8:
386
+ priorities["high"].append("์ฝ˜ํ…์ธ  ์ •ํ™•์„ฑ ๊ฒ€์ฆ")
387
+ elif content.completeness_score < 0.8:
388
+ priorities["medium"].append("์ฝ˜ํ…์ธ  ์™„์„ฑ๋„ ๊ฐœ์„ ")
389
+ else:
390
+ priorities["low"].append("์ฝ˜ํ…์ธ  ๋ฏธ์„ธ ์กฐ์ •")
391
+
392
+ # ์ ‘๊ทผ์„ฑ ์šฐ์„ ์ˆœ์œ„
393
+ accessibility = analysis_report["accessibility"]
394
+ if not accessibility.is_good:
395
+ if not accessibility.keyboard_navigation:
396
+ priorities["high"].append("ํ‚ค๋ณด๋“œ ์ ‘๊ทผ์„ฑ ๊ฐœ์„ ")
397
+ elif not accessibility.screen_reader_support:
398
+ priorities["high"].append("์Šคํฌ๋ฆฐ ๋ฆฌ๋” ์ง€์› ๊ฐœ์„ ")
399
+ else:
400
+ priorities["medium"].append("์ ‘๊ทผ์„ฑ ํ‘œ์ค€ ์ค€์ˆ˜")
401
+
402
+ # ์‹คํ–‰ ๊ณ„ํš ์ƒ์„ฑ
403
+ timeline = {
404
+ "immediate": priorities["high"],
405
+ "short_term": priorities["medium"],
406
+ "long_term": priorities["low"]
407
+ }
408
+
409
+ return {
410
+ "overall_score": overall_score,
411
+ "priorities": priorities,
412
+ "timeline": timeline,
413
+ "estimated_duration": (
414
+ f"{len(priorities['high']) + len(priorities['medium']) * 2 + len(priorities['low']) * 3}์ฃผ"
415
+ ),
416
+ "success_criteria": {
417
+ "performance_score": 0.9,
418
+ "content_score": 0.9,
419
+ "accessibility_score": 1.0,
420
+ "overall_score": 0.85
421
+ }
422
+ }
423
+
424
+
425
+ if __name__ == "__main__":
426
+ # ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋ถ„์„ ์‹คํ–‰ ์˜ˆ์‹œ
427
+ analyzer = UserExperienceAnalyzer("https://adk.mo.ai.kr")
428
+
429
+ async def main():
430
+ analysis_report = await analyzer.generate_report()
431
+
432
+ print("=== ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋ถ„์„ ๋ณด๊ณ ์„œ ===")
433
+ print(f"์ „์ฒด ์ ์ˆ˜: {analysis_report['overall_score']:.2f}")
434
+ print(f"์„ฑ๋Šฅ ์ ์ˆ˜: {analysis_report['performance'].success_rate:.2f}")
435
+ print(f"๋„ค๋น„๊ฒŒ์ด์…˜ ์ ์ˆ˜: {analysis_report['navigation'].structure_score:.2f}")
436
+ print(f"์ฝ˜ํ…์ธ  ์ ์ˆ˜: {analysis_report['content'].accuracy_score:.2f}")
437
+ print(f"์ ‘๊ทผ์„ฑ ์ ์ˆ˜: {1.0 if analysis_report['accessibility'].is_good else 0.0:.2f}")
438
+
439
+ print("\n๊ฐœ์„  ์ œ์•ˆ:")
440
+ for recommendation in analysis_report['recommendations']:
441
+ print(f"- {recommendation}")
442
+
443
+ # ๊ฐœ์„  ๊ณ„ํš ์ƒ์„ฑ
444
+ improvement_plan = generate_improvement_plan(analysis_report)
445
+ print("\n๊ฐœ์„  ๊ณ„ํš:")
446
+ print(f"์˜ˆ์ƒ ์†Œ์š” ์‹œ๊ฐ„: {improvement_plan['estimated_duration']}")
447
+ print(f"์ฆ‰์‹œ ์‹คํ–‰: {improvement_plan['timeline']['immediate']}")
448
+ print(f"๋‹จ๊ธฐ ์‹คํ–‰: {improvement_plan['timeline']['short_term']}")
449
+ print(f"์žฅ๊ธฐ ์‹คํ–‰: {improvement_plan['timeline']['long_term']}")
450
+
451
+ asyncio.run(main())
@@ -0,0 +1,233 @@
1
+ Metadata-Version: 2.4
2
+ Name: moai-adk
3
+ Version: 0.20.1
4
+ Summary: MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent & Complete Skills v2.0
5
+ Project-URL: Homepage, https://github.com/modu-ai/moai-adk
6
+ Project-URL: Repository, https://github.com/modu-ai/moai-adk
7
+ Project-URL: Issues, https://github.com/modu-ai/moai-adk/issues
8
+ Project-URL: Changelog, https://github.com/modu-ai/moai-adk/releases
9
+ Author-email: MoAI Team <support@moduai.kr>
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: agentic,ai,alfred,claude,development,spec-first,tdd,toolkit
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
+ Classifier: Topic :: Software Development :: Quality Assurance
22
+ Classifier: Topic :: Software Development :: Testing
23
+ Requires-Python: >=3.11
24
+ Requires-Dist: aiohttp>=3.13.2
25
+ Requires-Dist: click>=8.1.0
26
+ Requires-Dist: gitpython>=3.1.45
27
+ Requires-Dist: jinja2>=3.0.0
28
+ Requires-Dist: packaging>=21.0
29
+ Requires-Dist: psutil>=7.1.3
30
+ Requires-Dist: pyfiglet>=1.0.2
31
+ Requires-Dist: pytest-asyncio>=1.2.0
32
+ Requires-Dist: pyyaml>=6.0
33
+ Requires-Dist: questionary>=2.0.0
34
+ Requires-Dist: requests>=2.28.0
35
+ Requires-Dist: rich>=13.0.0
36
+ Provides-Extra: dev
37
+ Requires-Dist: mypy>=1.7.0; extra == 'dev'
38
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
39
+ Requires-Dist: pytest-xdist>=3.8.0; extra == 'dev'
40
+ Requires-Dist: pytest>=8.4.2; extra == 'dev'
41
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
42
+ Requires-Dist: types-pyyaml>=6.0.0; extra == 'dev'
43
+ Provides-Extra: security
44
+ Requires-Dist: bandit>=1.8.0; extra == 'security'
45
+ Requires-Dist: pip-audit>=2.7.0; extra == 'security'
46
+ Description-Content-Type: text/markdown
47
+
48
+ # MoAI-ADK (Agentic Development Kit)
49
+
50
+ **SPEC-First TDD with AI SuperAgent & Complete Skills**
51
+
52
+ [![PyPI version](https://img.shields.io/pypi/v/moai-adk)](https://pypi.org/project/moai-adk/)
53
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
54
+ [![Python](https://img.shields.io/badge/Python-3.13+-blue)](https://www.python.org/)
55
+ [![Tests](https://github.com/modu-ai/moai-adk/actions/workflows/moai-gitflow.yml/badge.svg)](https://github.com/modu-ai/moai-adk/actions/workflows/moai-gitflow.yml)
56
+ [![codecov](https://codecov.io/gh/modu-ai/moai-adk/branch/develop/graph/badge.svg)](https://codecov.io/gh/modu-ai/moai-adk)
57
+ [![Coverage](https://img.shields.io/badge/coverage-87.84%25-brightgreen)](https://github.com/modu-ai/moai-adk)
58
+
59
+ > **A complete AI-powered development ecosystem that delivers SPEC โ†’ TEST โ†’ CODE โ†’ DOCUMENTATION in perfect sync.**
60
+
61
+ ---
62
+
63
+ ## ๐ŸŒ Quick Links
64
+
65
+ - **๐Ÿ“š Comprehensive Documentation**: [https://adk.mo.ai.kr](https://adk.mo.ai.kr)
66
+ - **๐Ÿš€ Quick Start**: [Installation Guide](https://adk.mo.ai.kr/getting-started)
67
+ - **๐Ÿ“– API Reference**: [Commands & Skills](https://adk.mo.ai.kr/api)
68
+ - **๐Ÿ’ก Examples & Tutorials**: [Learn More](https://adk.mo.ai.kr/examples)
69
+ - **๐Ÿ› Troubleshooting**: [Help Guide](https://adk.mo.ai.kr/troubleshooting)
70
+
71
+ ---
72
+
73
+ ## ๐ŸŽฏ Core Philosophy
74
+
75
+ **"No code without SPEC, no tests without code, no documentation without implementation"**
76
+
77
+ MoAI-ADK is an open-source framework that revolutionizes AI-powered development with a **SPEC-First TDD** approach. Led by the Alfred SuperAgent and a team of specialized AI agents, MoAI-ADK ensures every piece of code is traceable, tested, and documented.
78
+
79
+ ---
80
+
81
+ ## Key Features
82
+
83
+ ### ๐ŸŽฏ SPEC-First Development
84
+ - Clear requirements before implementation
85
+ - EARS format for structured specifications
86
+ - Complete traceability from requirements to code
87
+
88
+ ### ๐Ÿงช Auto TDD Workflow
89
+ - RED โ†’ GREEN โ†’ REFACTOR automatically
90
+ - 87.84%+ test coverage guaranteed
91
+ - Quality gates with TRUST 5 principles
92
+
93
+ ### ๐Ÿท๏ธ @TAG System
94
+ - Complete traceability from requirements to code
95
+ - Automatic impact analysis
96
+ - Orphan detection and chain validation
97
+
98
+ ### ๐Ÿค– Alfred SuperAgent
99
+ - AI team that remembers your project context
100
+ - 19 specialized agents with 73+ production-ready skills
101
+ - Progressive skill loading for optimal performance
102
+
103
+ ### ๐Ÿ“š Living Documentation
104
+ - Auto-synced docs that never drift from code
105
+ - Real-time documentation generation
106
+ - Multi-language support (Python, TypeScript, Go, Rust, etc.)
107
+
108
+ ---
109
+
110
+ ## ๐Ÿš€ Getting Started
111
+
112
+ ### Installation
113
+
114
+ ```bash
115
+ # Install using uv (recommended)
116
+ uv install moai-adk
117
+
118
+ # Or using pip
119
+ pip install moai-adk
120
+ ```
121
+
122
+ ### 5-Minute Quick Start
123
+
124
+ ```bash
125
+ # 1. Initialize your project
126
+ moai-adk init my-project
127
+
128
+ # 2. Create a specification
129
+ /alfred:1-plan "user authentication system"
130
+
131
+ # 3. Implement with TDD
132
+ /alfred:2-run AUTH-001
133
+
134
+ # 4. Sync documentation
135
+ /alfred:3-sync
136
+ ```
137
+
138
+ ---
139
+
140
+ ## ๐ŸŽฏ The 4-Step Development Workflow
141
+
142
+ MoAI-ADK follows a simple 4-step workflow:
143
+
144
+ 1. **`/alfred:0-project`** - Project setup and configuration
145
+ 2. **`/alfred:1-plan`** - Create specifications using EARS format
146
+ 3. **`/alfred:2-run`** - TDD implementation (RED โ†’ GREEN โ†’ REFACTOR)
147
+ 4. **`/alfred:3-sync`** - Synchronize documentation and validate
148
+
149
+ ---
150
+
151
+ ## The @TAG System
152
+
153
+ Every artifact in your project gets a unique `@TAG` identifier:
154
+
155
+ ```
156
+ @SPEC:AUTH-001 (Requirements)
157
+ โ†“
158
+ @TEST:AUTH-001 (Tests)
159
+ โ†“
160
+ @CODE:AUTH-001:SERVICE (Implementation)
161
+ โ†“
162
+ @DOC:AUTH-001 (Documentation)
163
+ ```
164
+
165
+ This creates complete traceability, allowing you to:
166
+ - Find all code affected by requirement changes
167
+ - Ensure no orphaned code or missing tests
168
+ - Navigate between related artifacts instantly
169
+
170
+ ---
171
+
172
+ ## ๐Ÿ—๏ธ Core Architecture
173
+
174
+ ### Alfred SuperAgent
175
+ The orchestrator that manages 19 specialized agents and 73+ skills, ensuring consistent, high-quality development.
176
+
177
+ ### Specialized Agents
178
+ - **spec-builder**: Creates detailed specifications
179
+ - **code-builder**: Implements TDD workflows
180
+ - **test-engineer**: Ensures comprehensive testing
181
+ - **git-manager**: Handles version control workflows
182
+ - **doc-syncer**: Manages documentation synchronization
183
+ - And 15+ domain-specific experts
184
+
185
+ ### Claude Skills
186
+ 73+ specialized capabilities that provide:
187
+ - Domain expertise (UI/UX, backend, security)
188
+ - Technical skills (testing, documentation, deployment)
189
+ - Quality assurance (linting, validation, compliance)
190
+ - Language-specific support (Python, TypeScript, Go, Rust, etc.)
191
+
192
+ ---
193
+
194
+ ## ๐Ÿš€ Why MoAI-ADK?
195
+
196
+ ### Traditional AI Development Problems
197
+ - โŒ Unclear requirements leading to wrong implementations
198
+ - โŒ Missing tests causing production bugs
199
+ - โŒ Documentation drifting from code
200
+ - โŒ Lost context and repeated explanations
201
+ - โŒ Impossible impact analysis
202
+
203
+ ### MoAI-ADK Solutions
204
+ - โœ… **Clear SPECs** before any code is written
205
+ - โœ… **85%+ test coverage** guaranteed through TDD
206
+ - โœ… **Auto-synced documentation** that never drifts
207
+ - โœ… **Persistent context** remembered by Alfred
208
+ - โœ… **Instant impact analysis** with @TAG system
209
+
210
+ ---
211
+
212
+ ## ๐ŸŒ Community & Support
213
+
214
+ | Resource | Description |
215
+ |----------|-------------|
216
+ | **๐Ÿ“š Online Documentation** | [https://adk.mo.ai.kr](https://adk.mo.ai.kr) - Comprehensive guides and tutorials |
217
+ | **๐Ÿ  GitHub Repository** | [https://github.com/modu-ai/moai-adk](https://github.com/modu-ai/moai-adk) - Source code and issues |
218
+ | **๐Ÿ› Issues & Discussions** | [https://github.com/modu-ai/moai-adk/issues](https://github.com/modu-ai/moai-adk/issues) - Bug reports and feature requests |
219
+ | **๐Ÿ“ฆ PyPI Package** | [https://pypi.org/project/moai-adk/](https://pypi.org/project/moai-adk/) - Installation |
220
+
221
+ ---
222
+
223
+ ## ๐Ÿ“‹ License
224
+
225
+ MIT License - see [LICENSE](LICENSE) file for details.
226
+
227
+ ---
228
+
229
+ **MoAI-ADK** โ€” SPEC-First TDD with AI SuperAgent
230
+
231
+ > Build trustworthy AI-powered software with complete traceability, guaranteed testing, and living documentation.
232
+
233
+ > **๐Ÿš€ Get started now: `uv install moai-adk` and explore [https://adk.mo.ai.kr](https://adk.mo.ai.kr)**