moai-adk 0.11.0__tar.gz → 0.12.1__tar.gz

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 (331) hide show
  1. {moai_adk-0.11.0 → moai_adk-0.12.1}/.gitignore +1 -24
  2. {moai_adk-0.11.0 → moai_adk-0.12.1}/PKG-INFO +43 -1
  3. {moai_adk-0.11.0 → moai_adk-0.12.1}/README.md +42 -0
  4. {moai_adk-0.11.0 → moai_adk-0.12.1}/pyproject.toml +1 -1
  5. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/issue_creator.py +2 -2
  6. moai_adk-0.12.1/src/moai_adk/core/project/detector.py +399 -0
  7. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/cc-manager.md +316 -0
  8. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/debug-helper.md +208 -0
  9. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/doc-syncer.md +214 -0
  10. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/git-manager.md +406 -0
  11. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/implementation-planner.md +350 -0
  12. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/project-manager.md +273 -0
  13. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/quality-gate.md +343 -0
  14. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
  15. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/spec-builder.md +287 -0
  16. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/tag-agent.md +287 -0
  17. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +326 -0
  18. moai_adk-0.12.1/src/moai_adk/templates/.claude/agents/alfred/trust-checker.md +375 -0
  19. moai_adk-0.12.1/src/moai_adk/templates/.claude/commands/alfred/0-project.md +1187 -0
  20. moai_adk-0.12.1/src/moai_adk/templates/.claude/commands/alfred/1-plan.md +734 -0
  21. moai_adk-0.12.1/src/moai_adk/templates/.claude/commands/alfred/2-run.md +551 -0
  22. moai_adk-0.12.1/src/moai_adk/templates/.claude/commands/alfred/3-sync.md +689 -0
  23. moai_adk-0.12.1/src/moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
  24. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +208 -0
  25. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/core/project.py +744 -0
  26. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
  27. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +109 -0
  28. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
  29. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/notification__handle_events.py +94 -0
  30. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +94 -0
  31. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +100 -0
  32. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +94 -0
  33. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +94 -0
  34. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
  35. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +271 -0
  36. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +67 -0
  37. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
  38. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
  39. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
  40. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
  41. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +156 -0
  42. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
  43. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
  44. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
  45. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/stop__handle_interrupt.py +94 -0
  46. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/subagent_stop__handle_subagent_end.py +94 -0
  47. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
  48. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
  49. moai_adk-0.12.1/src/moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +136 -0
  50. moai_adk-0.12.1/src/moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +640 -0
  51. moai_adk-0.12.1/src/moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +696 -0
  52. moai_adk-0.12.1/src/moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +474 -0
  53. moai_adk-0.12.1/src/moai_adk/templates/.claude/settings.json +144 -0
  54. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +113 -0
  55. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
  56. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
  57. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +122 -0
  58. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
  59. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
  60. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +237 -0
  61. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +615 -0
  62. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +653 -0
  63. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +113 -0
  64. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
  65. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
  66. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +113 -0
  67. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
  68. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
  69. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +113 -0
  70. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
  71. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
  72. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +113 -0
  73. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
  74. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
  75. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
  76. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
  77. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
  78. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
  79. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
  80. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
  81. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
  82. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
  83. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
  84. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
  85. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
  86. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
  87. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
  88. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
  89. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
  90. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
  91. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
  92. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
  93. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +290 -0
  94. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
  95. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
  96. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +123 -0
  97. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
  98. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
  99. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +123 -0
  100. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
  101. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
  102. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +123 -0
  103. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
  104. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
  105. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +124 -0
  106. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
  107. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
  108. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -0
  109. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
  110. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
  111. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +123 -0
  112. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
  113. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
  114. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +123 -0
  115. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
  116. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
  117. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +123 -0
  118. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
  119. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
  120. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +123 -0
  121. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
  122. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
  123. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +303 -0
  124. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
  125. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
  126. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +113 -0
  127. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
  128. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
  129. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +113 -0
  130. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
  131. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
  132. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +113 -0
  133. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
  134. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
  135. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +116 -0
  136. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
  137. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
  138. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +122 -0
  139. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
  140. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
  141. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +113 -0
  142. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
  143. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
  144. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +113 -0
  145. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
  146. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
  147. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +113 -0
  148. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
  149. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
  150. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +307 -0
  151. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  152. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
  153. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +124 -0
  154. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
  155. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
  156. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +124 -0
  157. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
  158. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
  159. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +123 -0
  160. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
  161. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
  162. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +123 -0
  163. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
  164. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
  165. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +124 -0
  166. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
  167. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
  168. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +124 -0
  169. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
  170. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
  171. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +125 -0
  172. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
  173. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
  174. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +124 -0
  175. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
  176. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
  177. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +123 -0
  178. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
  179. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
  180. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +431 -0
  181. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
  182. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
  183. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +123 -0
  184. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
  185. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
  186. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +124 -0
  187. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
  188. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
  189. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +124 -0
  190. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
  191. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
  192. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +123 -0
  193. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
  194. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
  195. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +123 -0
  196. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
  197. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
  198. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +124 -0
  199. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
  200. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
  201. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +123 -0
  202. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
  203. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
  204. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +127 -0
  205. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
  206. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
  207. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
  208. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
  209. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
  210. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
  211. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
  212. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
  213. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
  214. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
  215. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +271 -0
  216. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
  217. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
  218. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
  219. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
  220. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
  221. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
  222. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
  223. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
  224. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
  225. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
  226. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +137 -0
  227. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +219 -0
  228. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
  229. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
  230. moai_adk-0.12.1/src/moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
  231. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/c-tag-validation.yml +83 -0
  232. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/cpp-tag-validation.yml +79 -0
  233. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/csharp-tag-validation.yml +65 -0
  234. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/dart-tag-validation.yml +82 -0
  235. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/java-tag-validation.yml +75 -0
  236. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +67 -0
  237. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/php-tag-validation.yml +56 -0
  238. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/ruby-tag-validation.yml +68 -0
  239. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/rust-tag-validation.yml +73 -0
  240. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/shell-tag-validation.yml +65 -0
  241. moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/swift-tag-validation.yml +79 -0
  242. moai_adk-0.12.1/src/moai_adk/templates/.moai/config.json +113 -0
  243. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
  244. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
  245. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
  246. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +344 -0
  247. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +330 -0
  248. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/ISSUE-LABEL-MAPPING.md +150 -0
  249. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
  250. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/SPEC-METADATA.md +356 -0
  251. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/gitflow-protection-policy.md +330 -0
  252. moai_adk-0.12.1/src/moai_adk/templates/.moai/memory/spec-metadata.md +356 -0
  253. moai_adk-0.12.1/src/moai_adk/templates/.moai/project/product.md +161 -0
  254. moai_adk-0.12.1/src/moai_adk/templates/.moai/project/structure.md +156 -0
  255. moai_adk-0.12.1/src/moai_adk/templates/.moai/project/tech.md +227 -0
  256. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/CLAUDE.md +90 -10
  257. moai_adk-0.12.1/src/moai_adk/templates/workflows/go-tag-validation.yml +130 -0
  258. moai_adk-0.12.1/src/moai_adk/templates/workflows/javascript-tag-validation.yml +135 -0
  259. moai_adk-0.12.1/src/moai_adk/templates/workflows/python-tag-validation.yml +118 -0
  260. moai_adk-0.12.1/src/moai_adk/templates/workflows/typescript-tag-validation.yml +154 -0
  261. moai_adk-0.11.0/src/moai_adk/core/project/detector.py +0 -126
  262. {moai_adk-0.11.0 → moai_adk-0.12.1}/LICENSE +0 -0
  263. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/__init__.py +0 -0
  264. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/__main__.py +0 -0
  265. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/__init__.py +0 -0
  266. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/commands/__init__.py +0 -0
  267. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/commands/backup.py +0 -0
  268. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/commands/doctor.py +0 -0
  269. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/commands/init.py +0 -0
  270. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/commands/status.py +0 -0
  271. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/commands/update.py +0 -0
  272. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/main.py +0 -0
  273. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/prompts/__init__.py +0 -0
  274. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/cli/prompts/init_prompts.py +0 -0
  275. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/__init__.py +0 -0
  276. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/config/__init__.py +0 -0
  277. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/config/migration.py +0 -0
  278. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/diagnostics/__init__.py +0 -0
  279. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/diagnostics/slash_commands.py +0 -0
  280. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/git/__init__.py +0 -0
  281. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/git/branch.py +0 -0
  282. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/git/branch_manager.py +0 -0
  283. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/git/checkpoint.py +0 -0
  284. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/git/commit.py +0 -0
  285. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/git/event_detector.py +0 -0
  286. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/git/manager.py +0 -0
  287. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/project/__init__.py +0 -0
  288. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/project/backup_utils.py +0 -0
  289. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/project/checker.py +0 -0
  290. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/project/initializer.py +0 -0
  291. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/project/phase_executor.py +0 -0
  292. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/project/validator.py +0 -0
  293. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/quality/__init__.py +0 -0
  294. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/quality/trust_checker.py +0 -0
  295. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/quality/validators/__init__.py +0 -0
  296. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/quality/validators/base_validator.py +0 -0
  297. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/__init__.py +0 -0
  298. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/ci_validator.py +0 -0
  299. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/cli.py +0 -0
  300. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/generator.py +0 -0
  301. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/inserter.py +0 -0
  302. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/mapper.py +0 -0
  303. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/parser.py +0 -0
  304. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/pre_commit_validator.py +0 -0
  305. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/reporter.py +0 -0
  306. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/tags.py +0 -0
  307. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/tags/validator.py +0 -0
  308. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/template/__init__.py +0 -0
  309. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/template/backup.py +0 -0
  310. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/template/config.py +0 -0
  311. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/template/languages.py +0 -0
  312. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/template/merger.py +0 -0
  313. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/template/processor.py +0 -0
  314. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/core/template_engine.py +0 -0
  315. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/.git-hooks/pre-push +0 -0
  316. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/.github/ISSUE_TEMPLATE/spec.yml +0 -0
  317. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  318. /moai_adk-0.11.0/src/moai_adk/templates/.github/workflows/release.yml → /moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/moai-adk-release.yml +0 -0
  319. /moai_adk-0.11.0/src/moai_adk/templates/.github/workflows/spec-issue-sync.yml → /moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/moai-adk-spec-issue-sync.yml +0 -0
  320. /moai_adk-0.11.0/src/moai_adk/templates/.github/workflows/tag-validation.yml → /moai_adk-0.12.1/src/moai_adk/templates/.github/workflows/moai-adk-tag-validation.yml +0 -0
  321. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -0
  322. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/.github/workflows/moai-release-create.yml +0 -0
  323. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -0
  324. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/.gitignore +0 -0
  325. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/README.md +0 -0
  326. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/__init__.py +0 -0
  327. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/src/moai_adk/core/tags/pre_commit_validator.py +0 -0
  328. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/templates/src/moai_adk/core/tags/reporter.py +0 -0
  329. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/utils/__init__.py +0 -0
  330. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/utils/banner.py +0 -0
  331. {moai_adk-0.11.0 → moai_adk-0.12.1}/src/moai_adk/utils/logger.py +0 -0
@@ -33,10 +33,6 @@ docs/_build/
33
33
  docs/*
34
34
  !docs/public/
35
35
 
36
- # MoAI Project - 모두 공개
37
- # /.moai/ - 공개로 전환
38
- # !src/moai_adk/templates/.moai/ - 이미 공개
39
-
40
36
  # Virtual environment
41
37
  venv/
42
38
  .venv/
@@ -50,12 +46,6 @@ env/
50
46
  *.swo
51
47
  *~
52
48
 
53
- # Claude Code - 모두 공개
54
- AGENTS.md
55
- # CLAUDE.md - 공개로 전환
56
- # /.claude/ - 공개로 전환
57
- # !src/moai_adk/templates/.claude/ - 이미 공개
58
-
59
49
  # OS
60
50
  .DS_Store
61
51
  Thumbs.db
@@ -68,20 +58,7 @@ logs/
68
58
  *.tmp
69
59
  *.temp
70
60
 
71
-
72
-
73
-
74
61
  .claudeignore
75
62
 
76
63
  # Project Plans (internal tracking, not versioned)
77
- CURSOR_INTEGRATION_PLAN.md
78
-
79
-
80
- # MoAI internal directories (not versioned)
81
- .moai/analysis/
82
- .moai/docs/
83
- .moai/reports/
84
- .moai/scripts/
85
- .moai/cache/
86
- .claude/
87
- .moai/
64
+ CURSOR_INTEGRATION_PLAN.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moai-adk
3
- Version: 0.11.0
3
+ Version: 0.12.1
4
4
  Summary: MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent & Complete Skills v2.0
5
5
  Project-URL: Homepage, https://github.com/modu-ai/moai-adk
6
6
  Project-URL: Repository, https://github.com/modu-ai/moai-adk
@@ -319,6 +319,48 @@ In this section you'll experience:
319
319
 
320
320
  ---
321
321
 
322
+ ## Language Support
323
+
324
+ MoAI-ADK automatically detects and supports **15 programming languages** with dedicated CI/CD workflows:
325
+
326
+ ### Core Languages (v0.11.0+)
327
+ - **Python** (pytest, mypy, ruff, 85% coverage target)
328
+ - **JavaScript** (npm/yarn/pnpm/bun auto-detect, 80% coverage target)
329
+ - **TypeScript** (tsc type checking, biome/eslint, 85% coverage target)
330
+ - **Go** (golangci-lint, gofmt, 75% coverage target)
331
+
332
+ ### Extended Languages (v0.11.1+)
333
+ - **Ruby** (RSpec, Rubocop, bundle)
334
+ - **PHP** (PHPUnit, PHPCS, composer)
335
+ - **Java** (JUnit 5, Jacoco, Maven/Gradle auto-detection)
336
+ - **Rust** (cargo test, clippy, rustfmt)
337
+ - **Dart** (flutter test, dart analyze)
338
+ - **Swift** (XCTest, SwiftLint, SPM)
339
+ - **Kotlin** (JUnit 5, ktlint, Gradle)
340
+ - **C#** (xUnit, StyleCop, dotnet CLI)
341
+ - **C** (gcc/clang, cppcheck, CMake)
342
+ - **C++** (g++/clang++, Google Test, cpplint)
343
+ - **Shell** (shellcheck, bats-core)
344
+
345
+ ### How Language Detection Works
346
+
347
+ When you run `/alfred:2-run SPEC-XXX`, MoAI-ADK automatically:
348
+ 1. Scans your project for configuration files (package.json, pyproject.toml, go.mod, Cargo.toml, pom.xml, build.gradle, etc.)
349
+ 2. Detects your project's primary language using priority-based detection (Rust → Dart → Swift → ... → Shell)
350
+ 3. Auto-detects build tools (Maven/Gradle for Java, CMake for C/C++, SPM for Swift, etc.)
351
+ 4. Selects the appropriate CI/CD workflow template
352
+ 5. Generates language-specific testing and linting configuration
353
+
354
+ ### Supported Languages
355
+
356
+ For detailed language detection priority and build tool detection, see [Language Detection Guide](.moai/docs/language-detection-guide.md)
357
+
358
+ ### Customization
359
+
360
+ For advanced workflow customization, see [Workflow Templates Guide](.moai/docs/workflow-templates.md)
361
+
362
+ ---
363
+
322
364
  ## Earlier Detailed Guide (Optional Reading)
323
365
 
324
366
  Need more explanations? See detailed guides below.
@@ -275,6 +275,48 @@ In this section you'll experience:
275
275
 
276
276
  ---
277
277
 
278
+ ## Language Support
279
+
280
+ MoAI-ADK automatically detects and supports **15 programming languages** with dedicated CI/CD workflows:
281
+
282
+ ### Core Languages (v0.11.0+)
283
+ - **Python** (pytest, mypy, ruff, 85% coverage target)
284
+ - **JavaScript** (npm/yarn/pnpm/bun auto-detect, 80% coverage target)
285
+ - **TypeScript** (tsc type checking, biome/eslint, 85% coverage target)
286
+ - **Go** (golangci-lint, gofmt, 75% coverage target)
287
+
288
+ ### Extended Languages (v0.11.1+)
289
+ - **Ruby** (RSpec, Rubocop, bundle)
290
+ - **PHP** (PHPUnit, PHPCS, composer)
291
+ - **Java** (JUnit 5, Jacoco, Maven/Gradle auto-detection)
292
+ - **Rust** (cargo test, clippy, rustfmt)
293
+ - **Dart** (flutter test, dart analyze)
294
+ - **Swift** (XCTest, SwiftLint, SPM)
295
+ - **Kotlin** (JUnit 5, ktlint, Gradle)
296
+ - **C#** (xUnit, StyleCop, dotnet CLI)
297
+ - **C** (gcc/clang, cppcheck, CMake)
298
+ - **C++** (g++/clang++, Google Test, cpplint)
299
+ - **Shell** (shellcheck, bats-core)
300
+
301
+ ### How Language Detection Works
302
+
303
+ When you run `/alfred:2-run SPEC-XXX`, MoAI-ADK automatically:
304
+ 1. Scans your project for configuration files (package.json, pyproject.toml, go.mod, Cargo.toml, pom.xml, build.gradle, etc.)
305
+ 2. Detects your project's primary language using priority-based detection (Rust → Dart → Swift → ... → Shell)
306
+ 3. Auto-detects build tools (Maven/Gradle for Java, CMake for C/C++, SPM for Swift, etc.)
307
+ 4. Selects the appropriate CI/CD workflow template
308
+ 5. Generates language-specific testing and linting configuration
309
+
310
+ ### Supported Languages
311
+
312
+ For detailed language detection priority and build tool detection, see [Language Detection Guide](.moai/docs/language-detection-guide.md)
313
+
314
+ ### Customization
315
+
316
+ For advanced workflow customization, see [Workflow Templates Guide](.moai/docs/workflow-templates.md)
317
+
318
+ ---
319
+
278
320
  ## Earlier Detailed Guide (Optional Reading)
279
321
 
280
322
  Need more explanations? See detailed guides below.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "moai-adk"
3
- version = "0.11.0"
3
+ version = "0.12.1"
4
4
  description = "MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent & Complete Skills v2.0"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -59,7 +59,7 @@ class GitHubIssueCreator:
59
59
  IssueType.BUG: ["bug", "reported"],
60
60
  IssueType.FEATURE: ["feature-request", "enhancement"],
61
61
  IssueType.IMPROVEMENT: ["improvement", "enhancement"],
62
- IssueType.QUESTION: ["question", "help-wanted"],
62
+ IssueType.QUESTION: ["question", "help wanted"], # Fixed: "help-wanted" → "help wanted" (GitHub standard)
63
63
  }
64
64
 
65
65
  # Priority emoji
@@ -145,7 +145,7 @@ class GitHubIssueCreator:
145
145
  # Collect labels
146
146
  labels = self.LABEL_MAP.get(config.issue_type, []).copy()
147
147
  if config.priority:
148
- labels.append(f"priority-{config.priority.value}")
148
+ labels.append(config.priority.value) # Fixed: removed "priority-" prefix (use direct label names)
149
149
  if config.category:
150
150
  labels.append(f"category-{config.category.lower().replace(' ', '-')}")
151
151
  if config.custom_labels:
@@ -0,0 +1,399 @@
1
+ # @CODE:CORE-PROJECT-001 | SPEC: SPEC-CORE-PROJECT-001.md | TEST: tests/unit/test_language_detector.py
2
+ # @CODE:LANG-DETECT-001 | SPEC: SPEC-LANG-DETECT-001.md | TEST: tests/unit/test_detector.py
3
+ """Language detector module.
4
+
5
+ Automatically detects 20 programming languages.
6
+ """
7
+
8
+ from pathlib import Path
9
+
10
+
11
+ class LanguageDetector:
12
+ """Automatically detect up to 20 programming languages.
13
+
14
+ Prioritizes framework-specific files (e.g., Laravel, Django) over
15
+ generic language files to improve accuracy in mixed-language projects.
16
+ """
17
+
18
+ LANGUAGE_PATTERNS = {
19
+ # @CODE:LDE-PRIORITY-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
20
+ # Priority order (highest to lowest):
21
+ # 1. Rust, 2. Dart, 3. Swift, 4. Kotlin, 5. C#, 6. Java, 7. Ruby, 8. PHP
22
+ # 9. Go, 10. Python, 11. TypeScript, 12. JavaScript, 13. C++, 14. C, 15. Shell
23
+
24
+ "rust": ["*.rs", "Cargo.toml"],
25
+ "dart": ["*.dart", "pubspec.yaml"],
26
+ "swift": ["*.swift", "Package.swift"],
27
+ "kotlin": ["*.kt", "build.gradle.kts"],
28
+ "csharp": ["*.cs", "*.csproj"],
29
+ "java": ["*.java", "pom.xml", "build.gradle"],
30
+ # Ruby moved for priority (Rails detection)
31
+ # @CODE:LANG-DETECT-RUBY-001 | SPEC: Issue #51 Language Detection Fix
32
+ "ruby": [
33
+ "*.rb",
34
+ "Gemfile",
35
+ "Gemfile.lock", # Bundler: lock file (unique to Ruby)
36
+ "config/routes.rb", # Rails: routing file (unique identifier)
37
+ "app/controllers/", # Rails: controller directory
38
+ "Rakefile" # Rails/Ruby: task file
39
+ ],
40
+ # PHP after Ruby (Laravel detection)
41
+ "php": [
42
+ "*.php",
43
+ "composer.json",
44
+ "artisan", # Laravel: CLI tool (unique identifier)
45
+ "app/", # Laravel: application directory
46
+ "bootstrap/laravel.php" # Laravel: bootstrap file
47
+ ],
48
+ "go": ["*.go", "go.mod"],
49
+ "python": ["*.py", "pyproject.toml", "requirements.txt", "setup.py"],
50
+ "typescript": ["*.ts", "tsconfig.json"],
51
+ "javascript": ["*.js", "package.json"],
52
+ "cpp": ["*.cpp", "CMakeLists.txt"],
53
+ "c": ["*.c", "Makefile"],
54
+ "shell": ["*.sh", "*.bash"],
55
+ # Additional languages (lower priority)
56
+ "elixir": ["*.ex", "mix.exs"],
57
+ "scala": ["*.scala", "build.sbt"],
58
+ "clojure": ["*.clj", "project.clj"],
59
+ "haskell": ["*.hs", "*.cabal"],
60
+ "lua": ["*.lua"],
61
+ }
62
+
63
+ def detect(self, path: str | Path = ".") -> str | None:
64
+ """Detect a single language (in priority order).
65
+
66
+ Args:
67
+ path: Directory to inspect.
68
+
69
+ Returns:
70
+ Detected language name (lowercase) or None.
71
+ """
72
+ path = Path(path)
73
+
74
+ # Inspect each language in priority order
75
+ for language, patterns in self.LANGUAGE_PATTERNS.items():
76
+ if self._check_patterns(path, patterns):
77
+ return language
78
+
79
+ return None
80
+
81
+ def detect_multiple(self, path: str | Path = ".") -> list[str]:
82
+ """Detect multiple languages.
83
+
84
+ Args:
85
+ path: Directory to inspect.
86
+
87
+ Returns:
88
+ List of all detected language names.
89
+ """
90
+ path = Path(path)
91
+ detected = []
92
+
93
+ for language, patterns in self.LANGUAGE_PATTERNS.items():
94
+ if self._check_patterns(path, patterns):
95
+ detected.append(language)
96
+
97
+ return detected
98
+
99
+ def _check_patterns(self, path: Path, patterns: list[str]) -> bool:
100
+ """Check whether any pattern matches.
101
+
102
+ Args:
103
+ path: Directory to inspect.
104
+ patterns: List of glob patterns.
105
+
106
+ Returns:
107
+ True when any pattern matches.
108
+ """
109
+ for pattern in patterns:
110
+ # Extension pattern (e.g., *.py)
111
+ if pattern.startswith("*."):
112
+ if list(path.rglob(pattern)):
113
+ return True
114
+ # Specific file name (e.g., pyproject.toml)
115
+ else:
116
+ if (path / pattern).exists():
117
+ return True
118
+
119
+ return False
120
+
121
+ # @CODE:LANG-002 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/unit/test_detector.py
122
+ def detect_package_manager(self, path: str | Path = ".") -> str:
123
+ """Detect JavaScript/TypeScript package manager.
124
+
125
+ Checks for lock files in priority order (highest to lowest):
126
+ 1. bun.lockb (Bun) - fastest runtime
127
+ 2. pnpm-lock.yaml (pnpm) - efficient disk usage
128
+ 3. yarn.lock (Yarn) - Facebook's package manager
129
+ 4. package-lock.json (npm) - default Node.js package manager
130
+
131
+ Priority order reflects modern best practices and performance characteristics.
132
+
133
+ Args:
134
+ path: Project root directory to inspect. Defaults to current directory.
135
+
136
+ Returns:
137
+ Package manager name: 'bun' | 'pnpm' | 'yarn' | 'npm'
138
+
139
+ Example:
140
+ >>> detector = LanguageDetector()
141
+ >>> detector.detect_package_manager("/path/to/project")
142
+ 'pnpm'
143
+ """
144
+ path = Path(path)
145
+
146
+ # Check in priority order (Bun → pnpm → Yarn → npm)
147
+ if (path / "bun.lockb").exists():
148
+ return "bun"
149
+ elif (path / "pnpm-lock.yaml").exists():
150
+ return "pnpm"
151
+ elif (path / "yarn.lock").exists():
152
+ return "yarn"
153
+ else:
154
+ # Default to npm (most common, works everywhere)
155
+ return "npm"
156
+
157
+ # @CODE:LANG-002 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/unit/test_detector.py
158
+ def get_workflow_template_path(self, language: str) -> str:
159
+ """Get workflow template path for detected language.
160
+
161
+ Returns the relative path to the language-specific GitHub Actions workflow template.
162
+ These templates are pre-configured with language-specific testing tools, linting,
163
+ and coverage reporting.
164
+
165
+ Args:
166
+ language: Detected language name (lowercase).
167
+ Supported: 'python', 'javascript', 'typescript', 'go'
168
+
169
+ Returns:
170
+ Relative path to workflow template (e.g., 'workflows/python-tag-validation.yml')
171
+
172
+ Raises:
173
+ ValueError: If language doesn't have a dedicated workflow template
174
+
175
+ Example:
176
+ >>> detector = LanguageDetector()
177
+ >>> detector.get_workflow_template_path("python")
178
+ 'workflows/python-tag-validation.yml'
179
+ """
180
+ # Language-to-template mapping (add new languages here)
181
+ template_mapping = {
182
+ "python": "python-tag-validation.yml",
183
+ "javascript": "javascript-tag-validation.yml",
184
+ "typescript": "typescript-tag-validation.yml",
185
+ "go": "go-tag-validation.yml",
186
+ }
187
+
188
+ if language not in template_mapping:
189
+ supported = ", ".join(sorted(template_mapping.keys()))
190
+ raise ValueError(
191
+ f"Language '{language}' does not have a dedicated workflow template. "
192
+ f"Supported languages: {supported}"
193
+ )
194
+
195
+ template_filename = template_mapping[language]
196
+ # Return path relative to templates directory
197
+ return f"workflows/{template_filename}"
198
+
199
+ # @CODE:LANG-002 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/unit/test_detector.py
200
+ def get_supported_languages_for_workflows(self) -> list[str]:
201
+ """Get list of languages with dedicated workflow templates.
202
+
203
+ Returns languages that have pre-built GitHub Actions workflow templates
204
+ with language-specific testing, linting, and coverage configuration.
205
+
206
+ Returns:
207
+ List of supported language names (lowercase)
208
+
209
+ Example:
210
+ >>> detector = LanguageDetector()
211
+ >>> detector.get_supported_languages_for_workflows()
212
+ ['python', 'javascript', 'typescript', 'go']
213
+
214
+ Note:
215
+ While LanguageDetector can detect 20+ languages, only these 4
216
+ have dedicated CI/CD workflow templates. Other languages fall back
217
+ to generic workflows.
218
+ """
219
+ return ["python", "javascript", "typescript", "go"]
220
+
221
+
222
+ def get_workflow_template_path(self, language: str) -> str:
223
+ """Get the GitHub Actions workflow template path for a language.
224
+
225
+ @CODE:LDE-WORKFLOW-PATH-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
226
+
227
+ Args:
228
+ language: Programming language name (lowercase).
229
+
230
+ Returns:
231
+ Workflow template file path relative to templates directory.
232
+
233
+ Raises:
234
+ ValueError: If language is not supported for workflows.
235
+ """
236
+ workflow_mapping = {
237
+ "python": ".github/workflows/python-tag-validation.yml",
238
+ "javascript": ".github/workflows/javascript-tag-validation.yml",
239
+ "typescript": ".github/workflows/typescript-tag-validation.yml",
240
+ "go": ".github/workflows/go-tag-validation.yml",
241
+ "ruby": ".github/workflows/ruby-tag-validation.yml",
242
+ "php": ".github/workflows/php-tag-validation.yml",
243
+ "java": ".github/workflows/java-tag-validation.yml",
244
+ "rust": ".github/workflows/rust-tag-validation.yml",
245
+ "dart": ".github/workflows/dart-tag-validation.yml",
246
+ "swift": ".github/workflows/swift-tag-validation.yml",
247
+ "kotlin": ".github/workflows/kotlin-tag-validation.yml",
248
+ "csharp": ".github/workflows/csharp-tag-validation.yml",
249
+ "c": ".github/workflows/c-tag-validation.yml",
250
+ "cpp": ".github/workflows/cpp-tag-validation.yml",
251
+ "shell": ".github/workflows/shell-tag-validation.yml",
252
+ }
253
+
254
+ if language.lower() not in workflow_mapping:
255
+ raise ValueError(
256
+ f"No workflow template available for language: {language}. "
257
+ f"Supported languages: {', '.join(workflow_mapping.keys())}"
258
+ )
259
+
260
+ return workflow_mapping[language.lower()]
261
+
262
+ def detect_package_manager(self, path: str | Path = ".") -> str | None:
263
+ """Detect the package manager for the detected language.
264
+
265
+ @CODE:LDE-PKG-MGR-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
266
+
267
+ Args:
268
+ path: Directory to inspect.
269
+
270
+ Returns:
271
+ Package manager name or None if not detected.
272
+ """
273
+ path = Path(path)
274
+
275
+ # Ruby
276
+ if (path / "Gemfile").exists():
277
+ return "bundle"
278
+
279
+ # PHP
280
+ if (path / "composer.json").exists():
281
+ return "composer"
282
+
283
+ # Java/Kotlin
284
+ if (path / "pom.xml").exists():
285
+ return "maven"
286
+ if (path / "build.gradle").exists() or (path / "build.gradle.kts").exists():
287
+ return "gradle"
288
+
289
+ # Rust
290
+ if (path / "Cargo.toml").exists():
291
+ return "cargo"
292
+
293
+ # Dart/Flutter
294
+ if (path / "pubspec.yaml").exists():
295
+ return "dart_pub"
296
+
297
+ # Swift
298
+ if (path / "Package.swift").exists():
299
+ return "spm"
300
+
301
+ # C#
302
+ if list(path.glob("*.csproj")) or list(path.glob("*.sln")):
303
+ return "dotnet"
304
+
305
+ # Python
306
+ if (path / "pyproject.toml").exists():
307
+ return "pip"
308
+
309
+ # JavaScript/TypeScript
310
+ if (path / "package.json").exists():
311
+ return "npm"
312
+
313
+ # Go
314
+ if (path / "go.mod").exists():
315
+ return "go_modules"
316
+
317
+ return None
318
+
319
+ def detect_build_tool(self, path: str | Path = ".", language: str | None = None) -> str | None:
320
+ """Detect the build tool for the detected language.
321
+
322
+ @CODE:LDE-BUILD-TOOL-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
323
+
324
+ Args:
325
+ path: Directory to inspect.
326
+ language: Optional language hint for disambiguation.
327
+
328
+ Returns:
329
+ Build tool name or None if not detected.
330
+ """
331
+ path = Path(path)
332
+
333
+ # C/C++
334
+ if (path / "CMakeLists.txt").exists():
335
+ return "cmake"
336
+ if (path / "Makefile").exists():
337
+ return "make"
338
+
339
+ # Java/Kotlin
340
+ if language in ["java", "kotlin"]:
341
+ if (path / "pom.xml").exists():
342
+ return "maven"
343
+ if (path / "build.gradle").exists() or (path / "build.gradle.kts").exists():
344
+ return "gradle"
345
+
346
+ # Rust
347
+ if (path / "Cargo.toml").exists():
348
+ return "cargo"
349
+
350
+ # Swift
351
+ if (path / "Package.swift").exists():
352
+ return "spm"
353
+ if list(path.glob("*.xcodeproj")) or list(path.glob("*.xcworkspace")):
354
+ return "xcode"
355
+
356
+ # C#
357
+ if list(path.glob("*.csproj")) or list(path.glob("*.sln")):
358
+ return "dotnet"
359
+
360
+ return None
361
+
362
+ def get_supported_languages_for_workflows(self) -> list[str]:
363
+ """Get the list of languages with dedicated CI/CD workflow support.
364
+
365
+ @CODE:LDE-SUPPORTED-LANGS-001 | SPEC: SPEC-LANGUAGE-DETECTION-EXTENDED-001/spec.md
366
+
367
+ Returns:
368
+ List of supported language names (15 total).
369
+ """
370
+ return [
371
+ "python",
372
+ "javascript",
373
+ "typescript",
374
+ "go",
375
+ "ruby",
376
+ "php",
377
+ "java",
378
+ "rust",
379
+ "dart",
380
+ "swift",
381
+ "kotlin",
382
+ "csharp",
383
+ "c",
384
+ "cpp",
385
+ "shell",
386
+ ]
387
+
388
+
389
+ def detect_project_language(path: str | Path = ".") -> str | None:
390
+ """Detect the project language (helper).
391
+
392
+ Args:
393
+ path: Directory to inspect (default: current directory).
394
+
395
+ Returns:
396
+ Detected language name (lowercase) or None.
397
+ """
398
+ detector = LanguageDetector()
399
+ return detector.detect(path)