moai-adk 0.11.0__py3-none-any.whl โ†’ 0.12.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 (268) hide show
  1. moai_adk/core/issue_creator.py +2 -2
  2. moai_adk/core/project/detector.py +195 -12
  3. moai_adk/core/tags/ci_validator.py +1 -1
  4. moai_adk/core/tags/pre_commit_validator.py +1 -1
  5. moai_adk/core/tags/validator.py +1 -1
  6. moai_adk/templates/.claude/agents/alfred/cc-manager.md +316 -0
  7. moai_adk/templates/.claude/agents/alfred/debug-helper.md +208 -0
  8. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +214 -0
  9. moai_adk/templates/.claude/agents/alfred/git-manager.md +406 -0
  10. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +350 -0
  11. moai_adk/templates/.claude/agents/alfred/project-manager.md +273 -0
  12. moai_adk/templates/.claude/agents/alfred/quality-gate.md +343 -0
  13. moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
  14. moai_adk/templates/.claude/agents/alfred/spec-builder.md +287 -0
  15. moai_adk/templates/.claude/agents/alfred/tag-agent.md +287 -0
  16. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +326 -0
  17. moai_adk/templates/.claude/agents/alfred/trust-checker.md +375 -0
  18. moai_adk/templates/.claude/commands/alfred/0-project.md +1275 -0
  19. moai_adk/templates/.claude/commands/alfred/1-plan.md +734 -0
  20. moai_adk/templates/.claude/commands/alfred/2-run.md +551 -0
  21. moai_adk/templates/.claude/commands/alfred/3-sync.md +689 -0
  22. moai_adk/templates/.claude/commands/alfred/9-feedback.md +149 -0
  23. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +206 -0
  24. moai_adk/templates/.claude/hooks/alfred/core/project.py +742 -0
  25. moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
  26. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
  27. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
  28. moai_adk/templates/.claude/hooks/alfred/notification__handle_events.py +95 -0
  29. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +95 -0
  30. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +101 -0
  31. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +95 -0
  32. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +97 -0
  33. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
  34. moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +271 -0
  35. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +67 -0
  36. moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
  37. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
  38. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
  39. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
  40. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +154 -0
  41. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
  42. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
  43. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
  44. moai_adk/templates/.claude/hooks/alfred/stop__handle_interrupt.py +95 -0
  45. moai_adk/templates/.claude/hooks/alfred/subagent_stop__handle_subagent_end.py +95 -0
  46. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
  47. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
  48. moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +136 -0
  49. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +640 -0
  50. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +696 -0
  51. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +474 -0
  52. moai_adk/templates/.claude/settings.json +144 -0
  53. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +113 -0
  54. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +29 -0
  55. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +28 -0
  56. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +122 -0
  57. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +29 -0
  58. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +29 -0
  59. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +237 -0
  60. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +615 -0
  61. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +653 -0
  62. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +113 -0
  63. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
  64. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
  65. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +113 -0
  66. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +29 -0
  67. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +28 -0
  68. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +113 -0
  69. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +29 -0
  70. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +28 -0
  71. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +113 -0
  72. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +29 -0
  73. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +28 -0
  74. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
  75. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
  76. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
  77. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
  78. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
  79. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
  80. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
  81. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
  82. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
  83. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
  84. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
  85. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
  86. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
  87. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
  88. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
  89. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
  90. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
  91. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
  92. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +290 -0
  93. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
  94. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
  95. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +123 -0
  96. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
  97. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
  98. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +123 -0
  99. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
  100. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
  101. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +123 -0
  102. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
  103. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
  104. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +124 -0
  105. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
  106. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
  107. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +124 -0
  108. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
  109. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
  110. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +123 -0
  111. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
  112. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
  113. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +123 -0
  114. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
  115. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
  116. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +123 -0
  117. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
  118. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
  119. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +123 -0
  120. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
  121. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
  122. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +303 -0
  123. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
  124. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
  125. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +113 -0
  126. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
  127. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
  128. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +113 -0
  129. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
  130. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
  131. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +113 -0
  132. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
  133. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
  134. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +116 -0
  135. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
  136. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
  137. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +122 -0
  138. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
  139. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
  140. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +113 -0
  141. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
  142. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
  143. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +113 -0
  144. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
  145. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
  146. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +113 -0
  147. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
  148. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
  149. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +307 -0
  150. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  151. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
  152. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +124 -0
  153. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
  154. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
  155. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +124 -0
  156. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
  157. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
  158. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +123 -0
  159. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
  160. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
  161. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +123 -0
  162. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
  163. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
  164. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +124 -0
  165. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
  166. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
  167. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +124 -0
  168. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
  169. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
  170. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +125 -0
  171. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
  172. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
  173. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +124 -0
  174. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
  175. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
  176. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +123 -0
  177. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
  178. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
  179. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +431 -0
  180. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
  181. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
  182. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +123 -0
  183. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
  184. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
  185. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +124 -0
  186. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
  187. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
  188. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +124 -0
  189. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
  190. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
  191. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +123 -0
  192. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
  193. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
  194. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +123 -0
  195. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
  196. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
  197. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +124 -0
  198. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
  199. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
  200. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +123 -0
  201. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
  202. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
  203. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +127 -0
  204. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
  205. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
  206. moai_adk/templates/.claude/skills/moai-skill-factory/CHECKLIST.md +482 -0
  207. moai_adk/templates/.claude/skills/moai-skill-factory/EXAMPLES.md +278 -0
  208. moai_adk/templates/.claude/skills/moai-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
  209. moai_adk/templates/.claude/skills/moai-skill-factory/METADATA.md +477 -0
  210. moai_adk/templates/.claude/skills/moai-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
  211. moai_adk/templates/.claude/skills/moai-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
  212. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
  213. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
  214. moai_adk/templates/.claude/skills/moai-skill-factory/SKILL.md +271 -0
  215. moai_adk/templates/.claude/skills/moai-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
  216. moai_adk/templates/.claude/skills/moai-skill-factory/STRUCTURE.md +583 -0
  217. moai_adk/templates/.claude/skills/moai-skill-factory/WEB-RESEARCH.md +526 -0
  218. moai_adk/templates/.claude/skills/moai-skill-factory/reference.md +465 -0
  219. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/generate-structure.sh +328 -0
  220. moai_adk/templates/.claude/skills/moai-skill-factory/scripts/validate-skill.sh +312 -0
  221. moai_adk/templates/.claude/skills/moai-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
  222. moai_adk/templates/.claude/skills/moai-skill-factory/templates/examples-template.md +285 -0
  223. moai_adk/templates/.claude/skills/moai-skill-factory/templates/reference-template.md +278 -0
  224. moai_adk/templates/.claude/skills/moai-skill-factory/templates/scripts-template.sh +303 -0
  225. moai_adk/templates/.claude/skills/moai-spec-authoring/README.md +137 -0
  226. moai_adk/templates/.claude/skills/moai-spec-authoring/SKILL.md +219 -0
  227. moai_adk/templates/.claude/skills/moai-spec-authoring/examples/validate-spec.sh +161 -0
  228. moai_adk/templates/.claude/skills/moai-spec-authoring/examples.md +541 -0
  229. moai_adk/templates/.claude/skills/moai-spec-authoring/reference.md +622 -0
  230. moai_adk/templates/.github/workflows/c-tag-validation.yml +83 -0
  231. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +79 -0
  232. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +65 -0
  233. moai_adk/templates/.github/workflows/dart-tag-validation.yml +82 -0
  234. moai_adk/templates/.github/workflows/java-tag-validation.yml +75 -0
  235. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +67 -0
  236. moai_adk/templates/.github/workflows/php-tag-validation.yml +56 -0
  237. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +68 -0
  238. moai_adk/templates/.github/workflows/rust-tag-validation.yml +73 -0
  239. moai_adk/templates/.github/workflows/shell-tag-validation.yml +65 -0
  240. moai_adk/templates/.github/workflows/swift-tag-validation.yml +79 -0
  241. moai_adk/templates/.moai/config.json +113 -0
  242. moai_adk/templates/.moai/memory/CLAUDE-AGENTS-GUIDE.md +208 -0
  243. moai_adk/templates/.moai/memory/CLAUDE-PRACTICES.md +369 -0
  244. moai_adk/templates/.moai/memory/CLAUDE-RULES.md +539 -0
  245. moai_adk/templates/.moai/memory/DEVELOPMENT-GUIDE.md +344 -0
  246. moai_adk/templates/.moai/memory/GITFLOW-PROTECTION-POLICY.md +330 -0
  247. moai_adk/templates/.moai/memory/ISSUE-LABEL-MAPPING.md +150 -0
  248. moai_adk/templates/.moai/memory/SKILLS-DESCRIPTION-POLICY.md +218 -0
  249. moai_adk/templates/.moai/memory/SPEC-METADATA.md +356 -0
  250. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +330 -0
  251. moai_adk/templates/.moai/memory/spec-metadata.md +356 -0
  252. moai_adk/templates/.moai/project/product.md +161 -0
  253. moai_adk/templates/.moai/project/structure.md +156 -0
  254. moai_adk/templates/.moai/project/tech.md +227 -0
  255. moai_adk/templates/CLAUDE.md +90 -10
  256. moai_adk/templates/workflows/go-tag-validation.yml +130 -0
  257. moai_adk/templates/workflows/javascript-tag-validation.yml +135 -0
  258. moai_adk/templates/workflows/python-tag-validation.yml +118 -0
  259. moai_adk/templates/workflows/typescript-tag-validation.yml +154 -0
  260. {moai_adk-0.11.0.dist-info โ†’ moai_adk-0.12.0.dist-info}/METADATA +43 -1
  261. moai_adk-0.12.0.dist-info/RECORD +330 -0
  262. moai_adk-0.11.0.dist-info/RECORD +0 -77
  263. /moai_adk/templates/.github/workflows/{release.yml โ†’ moai-adk-release.yml} +0 -0
  264. /moai_adk/templates/.github/workflows/{spec-issue-sync.yml โ†’ moai-adk-spec-issue-sync.yml} +0 -0
  265. /moai_adk/templates/.github/workflows/{tag-validation.yml โ†’ moai-adk-tag-validation.yml} +0 -0
  266. {moai_adk-0.11.0.dist-info โ†’ moai_adk-0.12.0.dist-info}/WHEEL +0 -0
  267. {moai_adk-0.11.0.dist-info โ†’ moai_adk-0.12.0.dist-info}/entry_points.txt +0 -0
  268. {moai_adk-0.11.0.dist-info โ†’ moai_adk-0.12.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: alfred:9-feedback
3
+ description: "Interactive GitHub Issue creation - Step-by-step dialog to create issues without command arguments"
4
+ allowed-tools:
5
+ - Bash(gh:*)
6
+ - Task
7
+ - AskUserQuestion
8
+ ---
9
+
10
+ # ๐ŸŽฏ MoAI-ADK Alfred 9-Feedback: Interactive GitHub Issue Creation
11
+
12
+ > **Purpose**: Create GitHub Issues through an interactive multi-step dialog. Simple command โ†’ guided questions โ†’ automatic issue creation.
13
+
14
+ ## ๐Ÿ“‹ Command Purpose
15
+
16
+ Enable developers to instantly report bugs, request features, suggest improvements, and ask questions through conversational dialogs. No command arguments neededโ€”just run `/alfred:9-feedback` and answer questions.
17
+
18
+ **Command Format**:
19
+ ```bash
20
+ /alfred:9-feedback
21
+ ```
22
+
23
+ That's it! Alfred guides you through the rest.
24
+
25
+ ---
26
+
27
+ ## ๐Ÿš€ Interactive Execution Flow
28
+
29
+ ### Step 1: Start Command
30
+ ```bash
31
+ /alfred:9-feedback
32
+ ```
33
+
34
+ Alfred responds and proceeds to Step 2.
35
+
36
+ ---
37
+
38
+ ### Step 2: Select Issue Type (AskUserQuestion)
39
+
40
+ **Question**: "What type of issue do you want to create?"
41
+
42
+ **Options**:
43
+ ```
44
+ [ ] ๐Ÿ› Bug Report - Something isn't working
45
+ [ ] โœจ Feature Request - Suggest new functionality
46
+ [ ] โšก Improvement - Enhance existing features
47
+ [ ] โ“ Question/Discussion - Ask the team
48
+ ```
49
+
50
+ **User Selection**: Selects one (e.g., ๐Ÿ› Bug Report)
51
+
52
+ ---
53
+
54
+ ### Step 3: Enter Issue Title (AskUserQuestion)
55
+
56
+ **Question**: "What is the issue title? (Be concise)"
57
+
58
+ **Example Input**:
59
+ ```
60
+ Login button on homepage not responding to clicks
61
+ ```
62
+
63
+ ---
64
+
65
+ ### Step 4: Enter Description (AskUserQuestion)
66
+
67
+ **Question**: "Provide a detailed description (optionalโ€”press Enter to skip)"
68
+
69
+ **Example Input**:
70
+ ```
71
+ When I click the login button on the homepage, nothing happens.
72
+ Tested on Chrome 120.0 on macOS 14.2.
73
+ Expected: Login modal should appear
74
+ Actual: No response
75
+ ```
76
+
77
+ Or just press Enter to skip.
78
+
79
+ ---
80
+
81
+ ### Step 5: Select Priority (AskUserQuestion)
82
+
83
+ **Question**: "What's the priority level?"
84
+
85
+ **Options**:
86
+ ```
87
+ [ ] ๐Ÿ”ด Critical - System down, data loss, security breach
88
+ [ ] ๐ŸŸ  High - Major feature broken, significant impact
89
+ [โœ“] ๐ŸŸก Medium - Normal priority (default)
90
+ [ ] ๐ŸŸข Low - Minor issues, nice-to-have
91
+ ```
92
+
93
+ **User Selection**: Selects priority (e.g., ๐ŸŸ  High)
94
+
95
+ ---
96
+
97
+ ### Step 6: Create Issue (Automatic)
98
+
99
+ Alfred automatically:
100
+ 1. Formats title with emoji: "๐Ÿ› [BUG] Login button not responding..."
101
+ 2. Prepares body with user description + metadata
102
+ 3. Assigns labels: bug, reported, priority-high
103
+ 4. Executes: `gh issue create --title ... --body ... --label ...`
104
+ 5. Parses issue number from response
105
+
106
+ **Success Output**:
107
+ ```
108
+ โœ… GitHub Issue #234 created successfully!
109
+
110
+ ๐Ÿ“‹ Title: ๐Ÿ› [BUG] Login button not responding to clicks
111
+ ๐Ÿ”ด Priority: High
112
+ ๐Ÿท๏ธ Labels: bug, reported, priority-high
113
+ ๐Ÿ”— URL: https://github.com/owner/repo/issues/234
114
+
115
+ ๐Ÿ’ก Next: Reference this issue in your commits or link to a SPEC document
116
+ ```
117
+
118
+ ---
119
+
120
+ ## โš ๏ธ Important Rules
121
+
122
+ ### โœ… What to Do
123
+
124
+ - โœ… Ask all 4 questions in sequence (type โ†’ title โ†’ description โ†’ priority)
125
+ - โœ… Preserve exact user wording in title and description
126
+ - โœ… Use AskUserQuestion for all user inputs
127
+ - โœ… Allow skipping description (optional field)
128
+ - โœ… Show issue URL after creation
129
+
130
+ ### โŒ What NOT to Do
131
+
132
+ - โŒ Accept command arguments (`/alfred:9-feedback --bug` is wrongโ€”just use `/alfred:9-feedback`)
133
+ - โŒ Skip questions or change order
134
+ - โŒ Rephrase user's input
135
+ - โŒ Create issues without labels
136
+
137
+ ---
138
+
139
+ ## ๐Ÿ’ก Key Benefits
140
+
141
+ 1. **๐Ÿš€ No Arguments Needed**: Just `/alfred:9-feedback`
142
+ 2. **๐Ÿ’ฌ Conversational**: Intuitive step-by-step dialog
143
+ 3. **๐Ÿท๏ธ Auto-labeled**: Labels applied automatically
144
+ 4. **๐Ÿ”— Team Visible**: Issues immediately visible
145
+ 5. **โฑ๏ธ Fast**: Create issues in 30 seconds
146
+
147
+ ---
148
+
149
+ **Supported since**: MoAI-ADK v0.7.0+
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env python3
2
+ # @CODE:HOOKS-REFACTOR-001 | SPEC: SPEC-HOOKS-REFACTOR-001.md
3
+ """Alfred Hooks - Main entry point for MoAI-ADK Claude Code Hooks
4
+
5
+ A main entry point that routes Claude Code events to the appropriate handlers.
6
+
7
+ ๐Ÿ—๏ธ Architecture:
8
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
9
+ โ”‚ alfred_hooks.py (Router) โ”‚
10
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
11
+ โ”‚ - CLI argument parsing โ”‚
12
+ โ”‚ - JSON I/O (stdin/stdout) โ”‚
13
+ โ”‚ - Event routing to handlers โ”‚
14
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
15
+ โ–ผ
16
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
17
+ โ”‚ handlers/ (Event Handlers) โ”‚
18
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
19
+ โ”‚ - session.py: SessionStart, SessionEnd โ”‚
20
+ โ”‚ - user.py: UserPromptSubmit โ”‚
21
+ โ”‚ - tool.py: PreToolUse, PostToolUse โ”‚
22
+ โ”‚ - notification.py: Notification, Stop, SubagentStop โ”‚
23
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
24
+ โ–ผ
25
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
26
+ โ”‚ core/ (Business Logic) โ”‚
27
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
28
+ โ”‚ - project.py: Language detection, Git info, SPEC progress โ”‚
29
+ โ”‚ - context.py: JIT Retrieval, workflow context โ”‚
30
+ โ”‚ - checkpoint.py: Event-Driven Checkpoint system โ”‚
31
+ โ”‚ - tags.py: TAG search/verification, library version cache โ”‚
32
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
33
+
34
+ ๐Ÿ› ๏ธ Usage:
35
+ python alfred_hooks.py <event_name> < payload.json
36
+
37
+ ๐Ÿ“ฃ Supported Events:
38
+ - SessionStart: Start Session (display project status)
39
+ - UserPromptSubmit: Prompt submission (JIT document loading)
40
+ - PreToolUse: Before using the tool (automatically creates checkpoint)
41
+ - SessionEnd, PostToolUse, Notification, Stop, SubagentStop
42
+
43
+ ๐Ÿšฆ Exit Codes:
44
+ - 0: Success
45
+ - 1: Error (no arguments, JSON parsing failure, exception thrown)
46
+
47
+ ๐Ÿงช TDD History:
48
+ - RED: Module separation design, event routing test
49
+ - GREEN: 1233 LOC โ†’ 9 items Module separation implementation (SRP compliance)
50
+ - REFACTOR: Import optimization, enhanced error handling
51
+
52
+ Setup sys.path for package imports
53
+ """
54
+
55
+ import json
56
+ import signal
57
+ import sys
58
+ from pathlib import Path
59
+ from typing import Any
60
+
61
+ from utils.timeout import CrossPlatformTimeout, TimeoutError as PlatformTimeoutError
62
+
63
+ from core import HookResult
64
+ from handlers import (
65
+ handle_notification,
66
+ handle_post_tool_use,
67
+ handle_pre_tool_use,
68
+ handle_session_end,
69
+ handle_session_start,
70
+ handle_stop,
71
+ handle_subagent_stop,
72
+ handle_user_prompt_submit,
73
+ )
74
+
75
+ # Add the hooks directory to sys.path to enable package imports
76
+ HOOKS_DIR = Path(__file__).parent
77
+ if str(HOOKS_DIR) not in sys.path:
78
+ sys.path.insert(0, str(HOOKS_DIR))
79
+
80
+
81
+ def _hook_timeout_handler(signum, frame):
82
+ """Signal handler for global hook timeout"""
83
+ raise HookTimeoutError("Hook execution exceeded 5-second timeout")
84
+
85
+
86
+ def main() -> None:
87
+ """Main entry point - Claude Code Hook script with GLOBAL TIMEOUT PROTECTION
88
+
89
+ Receives the event name as a CLI argument and reads the JSON payload through stdin.
90
+ Calls the handler appropriate for the event and outputs the results to stdout as JSON.
91
+ Enforces a 5-second global timeout to prevent subprocess hangs from freezing Claude Code.
92
+
93
+ ๐Ÿ› ๏ธ Usage:
94
+ python alfred_hooks.py <event_name> < payload.json
95
+
96
+ ๐Ÿ“ฃ Supported Events:
97
+ - SessionStart: Start Session (display project status)
98
+ - UserPromptSubmit: Prompt submission (JIT document loading)
99
+ - SessionEnd, PreToolUse, PostToolUse, Notification, Stop, SubagentStop
100
+
101
+ ๐Ÿšฆ Exit Codes:
102
+ - 0: Success
103
+ - 1: Error (timeout, no arguments, JSON parsing failure, exception thrown)
104
+
105
+ ๐Ÿ“ Examples:
106
+ $ echo '{"cwd": "."}' | python alfred_hooks.py SessionStart
107
+ {"message": "๐Ÿš€ MoAI-ADK Session Started\\n...", ...}
108
+
109
+ ๐Ÿ—’๏ธ Notes:
110
+ - Claude Code is automatically called (no need for direct user execution)
111
+ - JSON I/O processing through stdin/stdout
112
+ - Print error message to stderr
113
+ - UserPromptSubmit uses a special output schema (hookEventName + additionalContext)
114
+ - CRITICAL: 5-second global timeout prevents Claude Code freeze on subprocess hang
115
+
116
+ ๐Ÿงช TDD History:
117
+ - RED: Event routing, JSON I/O, error handling testing
118
+ - GREEN: Handler map-based routing implementation
119
+ - REFACTOR: Error message clarification, exit code standardization, UserPromptSubmit schema separation
120
+ - HOTFIX: Added global SIGALRM timeout to prevent subprocess hang (Issue #66)
121
+
122
+ @TAG:HOOKS-TIMEOUT-001
123
+ """
124
+ # Set global 5-second timeout for entire hook execution
125
+ signal.signal(signal.SIGALRM, _hook_timeout_handler)
126
+ signal.alarm(5)
127
+
128
+ try:
129
+ # Check for event argument
130
+ if len(sys.argv) < 2:
131
+ print("Usage: alfred_hooks.py <event>", file=sys.stderr)
132
+ sys.exit(1)
133
+
134
+ event_name = sys.argv[1]
135
+
136
+ try:
137
+ # Read JSON from stdin
138
+ input_data = sys.stdin.read()
139
+ # Handle empty stdin gracefully (return empty dict)
140
+ if not input_data or not input_data.strip():
141
+ data = {}
142
+ else:
143
+ data = json.loads(input_data)
144
+
145
+ cwd = data.get("cwd", ".")
146
+
147
+ # Route to appropriate handler
148
+ handlers = {
149
+ "SessionStart": handle_session_start,
150
+ "UserPromptSubmit": handle_user_prompt_submit,
151
+ "SessionEnd": handle_session_end,
152
+ "PreToolUse": handle_pre_tool_use,
153
+ "PostToolUse": handle_post_tool_use,
154
+ "Notification": handle_notification,
155
+ "Stop": handle_stop,
156
+ "SubagentStop": handle_subagent_stop,
157
+ }
158
+
159
+ handler = handlers.get(event_name)
160
+ result = handler({"cwd": cwd, **data}) if handler else HookResult()
161
+
162
+ # Output Hook result as JSON
163
+ # Note: UserPromptSubmit uses to_user_prompt_submit_dict() for special schema
164
+ if event_name == "UserPromptSubmit":
165
+ print(json.dumps(result.to_user_prompt_submit_dict()))
166
+ else:
167
+ print(json.dumps(result.to_dict()))
168
+
169
+ sys.exit(0)
170
+
171
+ except json.JSONDecodeError as e:
172
+ # Return valid Hook response even on JSON parse error
173
+ error_response: dict[str, Any] = {
174
+ "continue": True,
175
+ "hookSpecificOutput": {"error": f"JSON parse error: {e}"},
176
+ }
177
+ print(json.dumps(error_response))
178
+ print(f"JSON parse error: {e}", file=sys.stderr)
179
+ sys.exit(1)
180
+ except Exception as e:
181
+ # Return valid Hook response even on unexpected error
182
+ error_response: dict[str, Any] = {
183
+ "continue": True,
184
+ "hookSpecificOutput": {"error": f"Hook error: {e}"},
185
+ }
186
+ print(json.dumps(error_response))
187
+ print(f"Unexpected error: {e}", file=sys.stderr)
188
+ sys.exit(1)
189
+
190
+ except PlatformTimeoutError:
191
+ # CRITICAL: Hook took too long - return minimal valid response to prevent Claude Code freeze
192
+ timeout_response: dict[str, Any] = {
193
+ "continue": True,
194
+ "systemMessage": "โš ๏ธ Hook execution timeout - continuing without session info",
195
+ }
196
+ print(json.dumps(timeout_response))
197
+ print("Hook timeout after 5 seconds", file=sys.stderr)
198
+ sys.exit(1)
199
+
200
+ finally:
201
+ # Always cancel the alarm to prevent signal leakage
202
+ timeout.cancel()
203
+
204
+
205
+ if __name__ == "__main__":
206
+ main()