moai-adk 0.10.1__py3-none-any.whl → 0.11.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of moai-adk might be problematic. Click here for more details.

Files changed (245) hide show
  1. moai_adk/core/project/phase_executor.py +4 -0
  2. moai_adk/core/tags/ci_validator.py +33 -3
  3. moai_adk/core/template_engine.py +6 -2
  4. moai_adk/templates/.github/workflows/moai-gitflow.yml +6 -1
  5. moai_adk/templates/.github/workflows/release.yml +6 -2
  6. moai_adk/templates/.github/workflows/tag-validation.yml +53 -8
  7. moai_adk/templates/CLAUDE.md +458 -67
  8. {moai_adk-0.10.1.dist-info → moai_adk-0.11.0.dist-info}/METADATA +28 -13
  9. moai_adk-0.11.0.dist-info/RECORD +77 -0
  10. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
  11. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
  12. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
  13. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
  14. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -350
  15. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -273
  16. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
  17. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
  18. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -287
  19. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -287
  20. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -326
  21. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
  22. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1189
  23. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -728
  24. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -545
  25. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -683
  26. moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
  27. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -209
  28. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -750
  29. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
  30. moai_adk/templates/.claude/hooks/alfred/notification__handle_events.py +0 -102
  31. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -102
  32. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -108
  33. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -102
  34. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -102
  35. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
  36. moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +0 -271
  37. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
  38. moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +0 -756
  39. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -198
  40. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
  41. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
  42. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -25
  43. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -175
  44. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -90
  45. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
  46. moai_adk/templates/.claude/hooks/alfred/stop__handle_interrupt.py +0 -102
  47. moai_adk/templates/.claude/hooks/alfred/subagent_stop__handle_subagent_end.py +0 -102
  48. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -120
  49. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -640
  50. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -696
  51. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -474
  52. moai_adk/templates/.claude/settings.json +0 -144
  53. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  54. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  55. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  56. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  57. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  58. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  59. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  60. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  61. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  62. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  63. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  64. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  65. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  66. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  67. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  68. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  69. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  70. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  71. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  72. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  73. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  74. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  75. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  76. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  77. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  78. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  79. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  80. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  81. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  82. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  83. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  84. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  85. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  86. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  87. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  88. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  89. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  90. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  91. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  92. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +0 -290
  93. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
  94. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
  95. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  96. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  97. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  98. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  99. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  100. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  101. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +0 -123
  102. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
  103. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
  104. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  105. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  106. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  107. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +0 -124
  108. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
  109. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
  110. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  111. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  112. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  113. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  114. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  115. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  116. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  117. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  118. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  119. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  120. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  121. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  122. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  123. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  124. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  125. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  126. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  127. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  128. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  129. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  130. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  131. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  132. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  133. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  134. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
  135. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  136. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  137. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  138. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  139. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  140. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  141. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  142. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  143. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  144. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  145. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  146. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  147. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  148. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  149. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  150. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  151. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  152. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  153. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  154. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  155. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
  156. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  157. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  158. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
  159. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  160. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  161. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  162. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  163. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  164. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -124
  165. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
  166. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
  167. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -124
  168. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
  169. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
  170. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  171. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  172. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  173. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
  174. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
  175. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
  176. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -123
  177. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  178. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  179. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -431
  180. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
  181. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
  182. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
  183. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  184. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  185. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
  186. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  187. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  188. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -124
  189. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
  190. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
  191. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -123
  192. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
  193. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
  194. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  195. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  196. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  197. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  198. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  199. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  200. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
  201. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
  202. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
  203. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -127
  204. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
  205. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
  206. moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +0 -482
  207. moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +0 -278
  208. moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  209. moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +0 -477
  210. moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  211. moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  212. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  213. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  214. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +0 -271
  215. moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  216. moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +0 -583
  217. moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +0 -526
  218. moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +0 -465
  219. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +0 -328
  220. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +0 -312
  221. moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  222. moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +0 -285
  223. moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +0 -278
  224. moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +0 -303
  225. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +0 -137
  226. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +0 -219
  227. moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +0 -161
  228. moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +0 -541
  229. moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +0 -622
  230. moai_adk/templates/.moai/config.json +0 -113
  231. moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +0 -208
  232. moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +0 -369
  233. moai_adk/templates/.moai/memory/CLAUDE-RULES.md +0 -539
  234. moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +0 -344
  235. moai_adk/templates/.moai/memory/ISSUE-LABEL-MAPPING.md +0 -150
  236. moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +0 -218
  237. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -330
  238. moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
  239. moai_adk/templates/.moai/project/product.md +0 -161
  240. moai_adk/templates/.moai/project/structure.md +0 -156
  241. moai_adk/templates/.moai/project/tech.md +0 -227
  242. moai_adk-0.10.1.dist-info/RECORD +0 -309
  243. {moai_adk-0.10.1.dist-info → moai_adk-0.11.0.dist-info}/WHEEL +0 -0
  244. {moai_adk-0.10.1.dist-info → moai_adk-0.11.0.dist-info}/entry_points.txt +0 -0
  245. {moai_adk-0.10.1.dist-info → moai_adk-0.11.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,696 +0,0 @@
1
- ---
2
- name: MoAI ADK Learning
3
- description: "Learning mode to easily learn MoAI-ADK concepts and workflow"
4
- # Translations:
5
- # - ko: "MoAI-ADK 개념과 워크플로우를 쉽게 학습하는 학습 모드"
6
- # - ja: "MoAI-ADKの概念とワークフローを簡単に学習する学習モード"
7
- # - zh: "轻松学习MoAI-ADK概念和工作流程的学习模式"
8
- ---
9
-
10
- # MoAI ADK Learning
11
- > Interactive prompts rely on `AskUserQuestion tool (documented in moai-alfred-interactive-questions skill)` so AskUserQuestion renders TUI selection menus for user surveys and approvals.
12
-
13
- **Audience**: Developers new to MoAI-ADK
14
-
15
- This is a learning mode that helps you learn quickly by carefully explaining the core concepts and three-step workflow of MoAI-ADK.
16
-
17
- ## MoAI-ADK?
18
-
19
- **Core philosophy**: “No code without specification, no implementation without testing.”
20
-
21
- MoAI-ADK consists of three core concepts:
22
- 1. **SPEC-First**: Write specifications first before writing code
23
- 2. **@TAG Traceability**: Link all code to SPEC
24
- 3. **TRUST Quality**: 5 principles to ensure code quality
25
-
26
- Let’s learn how these three concepts work one by one!
27
-
28
- ---
29
-
30
- ## Core Concept 1: SPEC-First
31
-
32
- ### What is SPEC?
33
-
34
- **To put it simply**:
35
- - A blueprint that writes down in advance what to make
36
- - Steps and ingredients are clearly defined, like a cooking recipe.
37
-
38
- **Why do you need it?**
39
- - Clarify requirements before development
40
- - Provide a baseline for communicating with team members
41
- - Allows you to track changes later
42
- - Answers the question, “Why was this code written?”
43
-
44
- ### EARS syntax: How to write requirements
45
-
46
- EARS is a method of writing requirements using five patterns:
47
-
48
- #### 1. Ubiquitous (basic function)
49
- ```markdown
50
- The system must provide [function]
51
-
52
- Example:
53
- - The system must provide JWT based authentication
54
- ```
55
-
56
- #### 2. Event-driven (conditional operation)
57
- ```markdown
58
- WHEN [condition], the system must [operate]
59
-
60
- Example:
61
- - WHEN If valid credentials are provided, the system SHOULD issue a JWT token
62
- - If the WHEN token expires, the system should return a 401 error
63
- ```
64
-
65
- #### 3. State-driven
66
- ```markdown
67
- WHILE When in [state], the system must [run]
68
-
69
- Example:
70
- - WHILE When the user is authenticated, the system SHOULD allow access to the protected resource
71
- ```
72
-
73
- #### 4. Optional (Optional function)
74
- ```markdown
75
- WHERE [condition], the system can [operate]
76
-
77
- Example:
78
- - WHERE If a refresh token is provided, the system can issue a new access token
79
- ```
80
-
81
- #### 5. Constraints
82
- ```markdown
83
- IF [condition], then the system SHOULD be [constrained]
84
-
85
- Example:
86
- - Token expiration time must not exceed 15 minutes
87
- - Password must be at least 8 characters long
88
- ```
89
-
90
- ### Real-world example: Login function SPEC
91
-
92
- ```markdown
93
- # @SPEC:AUTH-001: JWT authentication system
94
-
95
- ## Ubiquitous Requirements (Basic Features)
96
- - The system must provide JWT-based authentication
97
-
98
- ## Event-driven Requirements (Conditional Actions)
99
- - WHEN When valid credentials are provided, the system MUST issue a JWT token
100
- - WHEN When the token expires, the system MUST return a 401 error
101
- - WHEN If an invalid token is provided, the system MUST deny access
102
-
103
- ## State-driven Requirements
104
- - WHILE When the user is authenticated, the system must allow access to protected resources.
105
-
106
- ## Optional Features
107
- - WHERE If a refresh token is provided, the system can issue a new access token
108
-
109
- ## Constraints
110
- - Access token expiration time must not exceed 15 minutes
111
- - Refresh token expiration time must not exceed 7 days
112
- ```
113
-
114
- ---
115
-
116
- ## Key Concept 2: @TAG Traceability
117
-
118
- ### What is TAG?
119
-
120
- **To put it simply**:
121
- - Name tag attached to each piece of code
122
- - String connecting SPEC → TEST → CODE → DOC
123
- - When looking for code later, you can search by SPEC number
124
-
125
- **Why do you need TAGs?**
126
- - Can search by SPEC number when looking for code later
127
- - Clear which code to modify if SPEC changes
128
- - When reviewing code, ask yourself, “What requirements is this code?” Instant identification
129
- - When a bug occurs, you can quickly find all related files
130
-
131
- ### TAG system
132
-
133
- MoAI-ADK uses four TAGs:
134
-
135
- ```
136
- @SPEC:ID → @TEST:ID → @CODE:ID → @DOC:ID
137
- ```
138
-
139
- | TAG | Meaning | Location | Example |
140
- | ---------- | -------------------------- | -------------- | -------------- |
141
- | `@SPEC:ID` | Requirements Specification | `.moai/specs/` | @SPEC:AUTH-001 |
142
- | `@TEST:ID` | test code | `tests/` | @TEST:AUTH-001 |
143
- | `@CODE:ID` | Implementation code | `src/` | @CODE:AUTH-001 |
144
- | `@DOC:ID` | document | `docs/` | @DOC:AUTH-001 |
145
-
146
- ### TAG ID Rule
147
-
148
- **Format**: `<domain>-<3-digit number>`
149
-
150
- **Example**:
151
- - `AUTH-001`: First function related to authentication
152
- - `USER-002`: Second function related to user
153
- - `PAYMENT-015`: 15th function related to payment
154
-
155
- **Important**: Once assigned, the TAG ID should never be changed!
156
-
157
- ### Real-world example: How to use TAG
158
-
159
- #### SPEC File (`.moai/specs/SPEC-AUTH-001/spec.md`)
160
- ```yaml
161
- ---
162
- id: AUTH-001
163
- version: 0.0.1
164
- status: draft
165
- created: 2025-10-16
166
- updated: 2025-10-16
167
- author: @YourName
168
- priority: high
169
- ---
170
-
171
- # @SPEC:AUTH-001: JWT authentication system
172
-
173
- [Requirement details...]
174
- ```
175
-
176
- #### Test file (`tests/auth/service.test.ts`)
177
- ```typescript
178
- // @TEST:AUTH-001 | SPEC: SPEC-AUTH-001.md
179
-
180
- test('@TEST:AUTH-001: JWT issuance on valid credentials', async () => {
181
- const service = new AuthService();
182
- const result = await service.authenticate('user', 'pass');
183
- expect(result.token).toBeDefined();
184
- });
185
- ```
186
-
187
- #### Implementation file (`src/auth/service.ts`)
188
- ```typescript
189
- // @CODE:AUTH-001 | SPEC: SPEC-AUTH-001.md | TEST: tests/auth/service.test.ts
190
-
191
- export class AuthService {
192
- async authenticate(username: string, password: string): Promise<AuthResult> {
193
- //implementation
194
- }
195
- }
196
- ```
197
-
198
- #### Documentation file (`docs/api/auth.md`)
199
- ```markdown
200
- # @DOC:AUTH-001: Authentication API documentation
201
-
202
- ## POST /auth/login
203
- [API description...]
204
- ```
205
-
206
- ### Search TAG
207
-
208
- **Find a specific TAG**:
209
- ```bash
210
- # Find all files related to AUTH-001
211
- rg "AUTH-001" -n
212
- ```
213
-
214
- **TAG Chain Verification**:
215
- ```bash
216
- # Check all TAGs
217
- rg '@(SPEC|TEST|CODE|DOC):' -n .moai/specs/ tests/ src/ docs/
218
- ```
219
-
220
- ---
221
-
222
- ## Key Concept 3: TRUST 5 Principles
223
-
224
- The five principles of writing good code are explained with an analogy:
225
-
226
- ### 1. 🧪 Test
227
-
228
- **Metaphor**: Imagining the taste before cooking.
229
-
230
- **Meaning**:
231
- - Write tests first before writing code
232
- - If the tests pass, the code works properly.
233
-
234
- **Standard**:
235
- - Test coverage ≥85%
236
- - SPEC → Test → Code Strict order
237
-
238
- **example**:
239
- ```typescript
240
- // Write a test first (RED)
241
- test('should add two numbers', () => {
242
- expect(add(2, 3)).toBe(5); // Failed because there is no add function yet
243
- });
244
-
245
- // Write the next code (GREEN)
246
- function add(a: number, b: number): number {
247
- return a + b; // Test passed!
248
- }
249
- ```
250
-
251
- ### 2. 📖 Readable
252
-
253
- **Similar**: Writing with neat handwriting
254
-
255
- **Meaning**:
256
- - Code that others can understand even if they read it
257
- - Code that is easy to understand even if they look at it again later
258
-
259
- **Criteria**:
260
- - Function ≤50 lines
261
- - File ≤300 lines
262
- - Complexity ≤10
263
- - Parameters ≤5
264
- - Use meaningful names
265
-
266
- **example**:
267
- ```typescript
268
- // ❌ Bad example: difficult to understand
269
- function f(x, y) {
270
- return x + y;
271
- }
272
-
273
- // ✅ Good example: clear name
274
- function calculateTotal(price: number, tax: number): number {
275
- return price + tax;
276
- }
277
- ```
278
-
279
- ### 3. 🎯 Unified
280
-
281
- **analogy**: using the same method
282
-
283
- **Meaning**:
284
- - Apply the same pattern consistently
285
- - Once you learn one method, you can apply it everywhere.
286
-
287
- **Criteria**:
288
- - SPEC-based architecture
289
- - Type safety or runtime verification
290
- - Consistent coding style
291
-
292
- **example**:
293
- ```typescript
294
- // ✅ Uniformity: All APIs have the same pattern
295
- async function getUser(id: string): Promise<User> { ... }
296
- async function getPost(id: string): Promise<Post> { ... }
297
- async function getComment(id: string): Promise<Comment> { ... }
298
- ```
299
-
300
- ### 4. 🔒 Secured
301
-
302
- **Similar**: Locking the door when you leave the house
303
-
304
- **Meaning**:
305
- - Protect your code from being exploited by hackers or bad actors
306
- - Keep user data safe
307
-
308
- **Criteria**:
309
- - Input validation
310
- - SQL Injection protection
311
- - XSS/CSRF protection
312
- - Password hashing
313
- - Sensitive data protection
314
-
315
- **example**:
316
- ```typescript
317
- // ❌ Bad example: SQL Injection risk
318
- const query = `SELECT * FROM users WHERE id = '${userId}'`;
319
-
320
- // ✅ Good example: Using Prepared Statement
321
- const query = 'SELECT * FROM users WHERE id = ?';
322
- const user = await db.execute(query, [userId]);
323
-
324
- // ❌ Bad example: storing password plaintext
325
- user.password = password;
326
-
327
- // ✅ Good example: password hashing
328
- user.password = await bcrypt.hash(password, 10);
329
- ```
330
-
331
- ### 5. 🔗 Trackable
332
-
333
- **Similar**: When organizing your closet, put a label on each box.
334
-
335
- **Means**:
336
- - You can quickly find the code you need later
337
- - You can track the history of code changes
338
-
339
- **Criteria**:
340
- - Use the @TAG system
341
- - Link code with SPEC
342
- - Include TAG in Git commit messages
343
-
344
- **example**:
345
- ```typescript
346
- // @CODE:AUTH-001 | SPEC: SPEC-AUTH-001.md | TEST: tests/auth/service.test.ts
347
- export class AuthService {
348
- //implementation
349
- }
350
-
351
- // Git commit message
352
- // 🟢 feat(AUTH-001): implement JWT authentication
353
- ```
354
-
355
- ---
356
-
357
- ## Key Concept 4: Alfred and the 9 Agents
358
-
359
- ### What is Alfred?
360
-
361
- **In a nutshell**:
362
- - Central orchestrator (conductor) of MoAI-ADK
363
- - Coordinates 9 specialized agents to provide optimal help
364
- - Analyzes user requests and delegates tasks to appropriate agents
365
-
366
- **Metaphor**: Coordinating multiple experts like an orchestra conductor
367
-
368
- ### Main Agents (Brief Introduction)
369
-
370
- | agent | Role | When to use |
371
- | --------------- | ------------------------------- | ----------------------------------------- |
372
- | 🏗️ spec-builder | SPEC Writing Expert | `/alfred:1-plan` command |
373
- | 💎 code-builder | TDD Implementation Expert | `/alfred:2-run` command |
374
- | 📖 doc-syncer | Document Synchronization Expert | `/alfred:3-sync` command |
375
- | 🔬debug-helper | Debugging expert | Automatically called when an error occurs |
376
- | ✅ trust-checker | Quality verification expert | When checking code quality |
377
- | 🏷️ tag-agent | TAG Management Expert | When verifying TAG |
378
-
379
- **Full list of agents**: see `AGENTS.md` file
380
-
381
- ### How Alfred Works
382
-
383
- ```
384
- user request
385
-
386
- Alfred analyzes the request
387
-
388
- Delegate to appropriate professional agent
389
-
390
- Agent performs task
391
-
392
- Alfred consolidates and reports results
393
- ```
394
-
395
- ---
396
-
397
- ## Learn the 3-step workflow
398
-
399
- The core of MoAI-ADK is this three-step workflow:
400
-
401
- ```
402
- /alfred:1-plan → /alfred:2-run → /alfred:3-sync
403
- ```
404
-
405
- ### Step 1: Write a SPEC (`/alfred:1-plan`)
406
-
407
- **What do you do?**
408
- - Write requirements in EARS syntax
409
- - Create `.moai/specs/SPEC-{ID}/spec.md` file
410
- - Automatically assign @SPEC:ID TAG
411
- - Create Git branch (optional)
412
-
413
- **Use example**:
414
- ```bash
415
- /alfred:1-plan "JWT authentication system"
416
- ```
417
-
418
- **Alfred does this automatically**:
419
- 1. Duplicate check: “Does AUTH-001 already exist?”
420
- 2. Create SPEC file: `.moai/specs/SPEC-AUTH-001/spec.md`
421
- 3. Add YAML metadata:
422
- ```yaml
423
- ---
424
- id: AUTH-001
425
- version: 0.0.1
426
- status: draft
427
- created: 2025-10-16
428
- updated: 2025-10-16
429
- author: @YourName
430
- priority: high
431
- ---
432
- ```
433
- 4. EARS syntax template provided
434
- 5. @SPEC:AUTH-001 TAG allocation
435
-
436
- **Example of deliverable**:
437
- ```yaml
438
- ---
439
- id: AUTH-001
440
- version: 0.0.1
441
- status: draft
442
- created: 2025-10-16
443
- updated: 2025-10-16
444
- author: @YourName
445
- priority: high
446
- ---
447
-
448
- # @SPEC:AUTH-001: JWT authentication system
449
-
450
- ## Ubiquitous Requirements
451
- - The system must provide JWT-based authentication
452
-
453
- ## Event-driven Requirements
454
- - WHEN Upon providing valid credentials, the system SHOULD issue a JWT token
455
- - If the WHEN token expires, the system SHOULD return a 401 error
456
-
457
- ## Constraints
458
- - Token expiration time must not exceed 15 minutes.
459
- ```
460
-
461
- ### Step 2: Implement TDD (`/alfred:2-run`)
462
-
463
- **What do you do?**
464
- - **RED**: Write tests that fail (`@TEST:ID`)
465
- - **GREEN**: Pass tests with minimal implementation (`@CODE:ID`)
466
- - **REFACTOR**: Improve code quality (apply TRUST 5 principles)
467
-
468
- **Use example**:
469
- ```bash
470
- /alfred:2-run AUTH-001
471
- ```
472
-
473
- **Alfred does this automatically**:
474
-
475
- #### 🔴 RED: Writing tests that fail
476
- ```typescript
477
- // tests/auth/service.test.ts
478
- // @TEST:AUTH-001 | SPEC: SPEC-AUTH-001.md
479
-
480
- test('@TEST:AUTH-001: JWT issuance on valid credentials', async () => {
481
- const service = new AuthService();
482
- const result = await service.authenticate('user', 'pass');
483
- expect(result.token).toBeDefined();
484
- expect(result.expiresIn).toBeLessThanOrEqual(900); // 15 minutes
485
- });
486
- ```
487
-
488
- **Test Run**: ❌ FAIL (AuthService does not exist yet)
489
-
490
- #### 🟢 GREEN: Minimal implementation
491
- ```typescript
492
- // src/auth/service.ts
493
- // @CODE:AUTH-001 | SPEC: SPEC-AUTH-001.md | TEST: tests/auth/service.test.ts
494
-
495
- export class AuthService {
496
- async authenticate(username: string, password: string): Promise<AuthResult> {
497
- return {
498
- token: jwt.sign({ username }, SECRET, { expiresIn: '15m' }),
499
- expiresIn: 900
500
- };
501
- }
502
- }
503
- ```
504
-
505
- **Test Run**: ✅ PASS
506
-
507
- #### ♻️ REFACTOR: Quality Improvement
508
- ```typescript
509
- // Add input validation (Secured)
510
- if (!username || !password) {
511
- throw new ValidationError('Username and password required');
512
- }
513
-
514
- // Function Separation (Readable)
515
- private generateToken(username: string): string {
516
- return jwt.sign({ username }, SECRET, { expiresIn: '15m' });
517
- }
518
-
519
- // Reduce complexity (Unified)
520
- ```
521
-
522
- **Run Test**: ✅ PASS
523
- **TRUST Verify**: ✅ All pass
524
-
525
- **Git commit**:
526
- ```bash
527
- 1. 🔴 RED: test(AUTH-001): add failing auth service test
528
- 2. 🟢 GREEN: feat(AUTH-001): implement minimal auth service
529
- 3. ♻️ REFACTOR: refactor(AUTH-001): improve code quality per TRUST
530
- ```
531
-
532
- ### Step 3: Synchronize documents (`/alfred:3-sync`)
533
-
534
- **What does it do?**
535
- - TAG chain verification (@SPEC → @TEST → @CODE → @DOC)
536
- - Orphan TAG detection (CODE without SPEC, etc.)
537
- - Automatic creation of Living Document
538
- - PR status update (Draft → Ready)
539
-
540
- **Use example**:
541
- ```bash
542
- /alfred:3-sync
543
- ```
544
-
545
- **Alfred does this automatically**:
546
-
547
- 1. **TAG Chain Verification**:
548
- ```bash
549
- rg '@(SPEC|TEST|CODE|DOC):' -n .moai/specs/ tests/ src/ docs/
550
- ```
551
-
552
- 2. **Verification results**:
553
- ```
554
- ✓ @SPEC:AUTH-001 → .moai/specs/SPEC-AUTH-001.md
555
- ✓ @TEST:AUTH-001 → tests/auth/service.test.ts
556
- ✓ @CODE:AUTH-001 → src/auth/service.ts
557
- ✓ @DOC:AUTH-001 → docs/api/auth.md
558
-
559
- TAG Chain Integrity: 100%
560
- Orphan TAG: None
561
- SPEC Version Match: v0.0.1
562
- ```
563
-
564
- 3. **Create Living Document**:
565
- ```markdown
566
- # @DOC:AUTH-001: Authentication API documentation
567
-
568
- ## POST /auth/login
569
-
570
- **Requirements**: @SPEC:AUTH-001
571
- **Implementation**: @CODE:AUTH-001
572
- **Test**: @TEST:AUTH-001
573
-
574
- [Automatically generated API documentation...]
575
- ```
576
-
577
- 4. **PR Status Transition Proposal**:
578
- ```
579
- PR #123: feature/spec-auth-001
580
- Current Status: Draft
581
- Proposal: Ready for Review
582
-
583
- SPEC requirements: ✅ All met
584
- TDD history: ✅ RED → GREEN → REFACTOR
585
- TRUST Verification: ✅ All passed
586
-
587
- PR Ready conversion? (y/n)
588
- ```
589
-
590
- ---
591
-
592
- ## Practical example: Creating a simple calculator
593
-
594
- Let’s put the 3-step workflow into practice!
595
-
596
- ### 1️⃣ Write SPEC
597
- ```bash
598
- /alfred:1-plan "Calculator for adding two numbers"
599
-
600
- # Created by Alfred: .moai/specs/SPEC-CALC-001/spec.md
601
- ```
602
-
603
- **Generated SPEC**:
604
- ```yaml
605
- ---
606
- id: CALC-001
607
- version: 0.0.1
608
- status: draft
609
- created: 2025-10-16
610
- updated: 2025-10-16
611
- author: @YourName
612
- priority: medium
613
- ---
614
-
615
- # @SPEC:CALC-001: Calculator - addition function
616
-
617
- ## Ubiquitous Requirements
618
- - The system must provide addition of two numbers
619
-
620
- ## Event-driven Requirements
621
- - WHEN two numbers are entered, the system should return the sum
622
-
623
- ## Constraints
624
- - Input must be numeric
625
- - Results must be accurate
626
- ```
627
-
628
- ### 2️⃣ TDD implementation
629
- ```bash
630
- /alfred:2-run CALC-001
631
-
632
- # Alfred performs Red-Green-Refactor automatically
633
- ```
634
-
635
- **Generated Code**:
636
- ```typescript
637
- // tests/calc.test.ts
638
- // @TEST:CALC-001 | SPEC: SPEC-CALC-001.md
639
- test('@TEST:CALC-001: should add two numbers', () => {
640
- expect(add(2, 3)).toBe(5);
641
- expect(add(10, 20)).toBe(30);
642
- });
643
-
644
- // src/calc.ts
645
- // @CODE:CALC-001 | SPEC: SPEC-CALC-001.md | TEST: tests/calc.test.ts
646
- export function add(a: number, b: number): number {
647
- if (typeof a !== 'number' || typeof b !== 'number') {
648
- throw new TypeError('Both arguments must be numbers');
649
- }
650
- return a + b;
651
- }
652
- ```
653
-
654
- ### 3️⃣ Document synchronization
655
- ```bash
656
- /alfred:3-sync
657
-
658
- # TAG verification and document generation
659
- ```
660
-
661
- **result**:
662
- ```
663
- ✓ @SPEC:CALC-001
664
- ✓ @TEST:CALC-001
665
- ✓ @CODE:CALC-001
666
- ✓ @DOC:CALC-001
667
-
668
- completion! SPEC → TEST → CODE → DOC completed with 3 commands!
669
- ```
670
-
671
- ---
672
-
673
- ## Next steps
674
-
675
- ### If you have learned MoAI-ADK
676
-
677
- Now let's switch to a different style and put it into practice:
678
-
679
- | Next goal | Recommended Style | Conversion command |
680
- | --------------------------------- | --------------------- | --------------------------------- |
681
- | Practical project development | **agentic-coding** | `/output-style agentic-coding` |
682
- | Learning a new language/framework | **study-with-alfred** | `/output-style study-with-alfred` |
683
-
684
- ### Learn more
685
-
686
- **Detailed guide**:
687
- - `.moai/memory/development-guide.md` - Detailed development guide
688
- - `.moai/project/structure.md` - Project structure
689
- - `.moai/memory/spec-metadata.md` - SPEC metadata standard
690
-
691
- **Agent Documentation**:
692
- - `AGENTS.md` - Detailed description of 9 specialized agents
693
-
694
- ---
695
-
696
- **MoAI ADK Learning**: A friendly learning mode that helps you quickly learn the core concepts and workflow of MoAI-ADK.