moai-adk 0.4.5__py3-none-any.whl → 0.20.1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (433) hide show
  1. moai_adk/__init__.py +1 -1
  2. moai_adk/__main__.py +74 -1
  3. moai_adk/cli/commands/__init__.py +1 -1
  4. moai_adk/cli/commands/analyze.py +119 -0
  5. moai_adk/cli/commands/backup.py +25 -1
  6. moai_adk/cli/commands/doctor.py +31 -5
  7. moai_adk/cli/commands/improve_user_experience.py +307 -0
  8. moai_adk/cli/commands/init.py +111 -10
  9. moai_adk/cli/commands/status.py +33 -3
  10. moai_adk/cli/commands/update.py +921 -130
  11. moai_adk/cli/commands/validate_links.py +120 -0
  12. moai_adk/cli/prompts/init_prompts.py +22 -87
  13. moai_adk/core/analysis/__init__.py +9 -0
  14. moai_adk/core/analysis/session_analyzer.py +388 -0
  15. moai_adk/core/analysis/tag_chain_analyzer.py +344 -0
  16. moai_adk/core/analysis/tag_chain_repair.py +879 -0
  17. moai_adk/core/config/__init__.py +19 -0
  18. moai_adk/core/config/migration.py +235 -0
  19. moai_adk/core/git/__init__.py +1 -1
  20. moai_adk/core/git/branch.py +1 -1
  21. moai_adk/core/git/commit.py +1 -1
  22. moai_adk/core/git/manager.py +1 -1
  23. moai_adk/core/issue_creator.py +313 -0
  24. moai_adk/core/mcp/setup.py +56 -0
  25. moai_adk/core/mcp/setup_old.py +296 -0
  26. moai_adk/core/project/backup_utils.py +1 -1
  27. moai_adk/core/project/checker.py +2 -2
  28. moai_adk/core/project/detector.py +211 -12
  29. moai_adk/core/project/initializer.py +85 -15
  30. moai_adk/core/project/phase_executor.py +76 -13
  31. moai_adk/core/project/validator.py +13 -13
  32. moai_adk/core/quality/__init__.py +1 -1
  33. moai_adk/core/quality/trust_checker.py +1 -1
  34. moai_adk/core/quality/validators/__init__.py +1 -1
  35. moai_adk/core/quality/validators/base_validator.py +1 -1
  36. moai_adk/core/tags/__init__.py +86 -0
  37. moai_adk/core/tags/auto_corrector.py +693 -0
  38. moai_adk/core/tags/ci_validator.py +463 -0
  39. moai_adk/core/tags/cli.py +283 -0
  40. moai_adk/core/tags/generator.py +109 -0
  41. moai_adk/core/tags/inserter.py +99 -0
  42. moai_adk/core/tags/mapper.py +126 -0
  43. moai_adk/core/tags/parser.py +76 -0
  44. moai_adk/core/tags/policy_validator.py +580 -0
  45. moai_adk/core/tags/pre_commit_validator.py +421 -0
  46. moai_adk/core/tags/reporter.py +956 -0
  47. moai_adk/core/tags/rollback_manager.py +525 -0
  48. moai_adk/core/tags/tags.py +149 -0
  49. moai_adk/core/tags/validator.py +897 -0
  50. moai_adk/core/template/__init__.py +1 -1
  51. moai_adk/core/template/backup.py +1 -1
  52. moai_adk/core/template/merger.py +50 -1
  53. moai_adk/core/template/processor.py +119 -13
  54. moai_adk/core/template_engine.py +268 -0
  55. moai_adk/templates/.claude/agents/alfred/backend-expert.md +348 -0
  56. moai_adk/templates/.claude/agents/alfred/cc-manager.md +209 -944
  57. moai_adk/templates/.claude/agents/alfred/database-expert.md +352 -0
  58. moai_adk/templates/.claude/agents/alfred/debug-helper.md +34 -5
  59. moai_adk/templates/.claude/agents/alfred/devops-expert.md +464 -0
  60. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +38 -8
  61. moai_adk/templates/.claude/agents/alfred/format-expert.md +469 -0
  62. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +357 -0
  63. moai_adk/templates/.claude/agents/alfred/git-manager.md +128 -9
  64. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +104 -6
  65. moai_adk/templates/.claude/agents/alfred/project-manager.md +88 -16
  66. moai_adk/templates/.claude/agents/alfred/quality-gate.md +36 -9
  67. moai_adk/templates/.claude/agents/alfred/security-expert.md +270 -0
  68. moai_adk/templates/.claude/agents/alfred/skill-factory.md +865 -0
  69. moai_adk/templates/.claude/agents/alfred/spec-builder.md +214 -43
  70. moai_adk/templates/.claude/agents/alfred/tag-agent.md +111 -9
  71. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +309 -160
  72. moai_adk/templates/.claude/agents/alfred/trust-checker.md +36 -7
  73. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +605 -0
  74. moai_adk/templates/.claude/commands/alfred/0-project.md +393 -966
  75. moai_adk/templates/.claude/commands/alfred/1-plan.md +651 -367
  76. moai_adk/templates/.claude/commands/alfred/2-run.md +388 -241
  77. moai_adk/templates/.claude/commands/alfred/3-sync.md +1921 -410
  78. moai_adk/templates/.claude/commands/alfred/9-feedback.md +153 -0
  79. moai_adk/templates/.claude/commands/alfred/release-new.md +3604 -0
  80. moai_adk/templates/.claude/hooks/alfred/core/project.py +484 -20
  81. moai_adk/templates/.claude/hooks/alfred/core/timeout.py +136 -0
  82. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +108 -0
  83. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +198 -0
  84. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +14 -6
  85. moai_adk/templates/.claude/hooks/alfred/post_tool__enable_streaming_ui.py +50 -0
  86. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +93 -0
  87. moai_adk/templates/.claude/hooks/alfred/post_tool__tag_auto_corrector.py +407 -0
  88. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +99 -0
  89. moai_adk/templates/.claude/hooks/alfred/pre_tool__realtime_tag_monitor.py +335 -0
  90. moai_adk/templates/.claude/hooks/alfred/pre_tool__tag_policy_validator.py +325 -0
  91. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +93 -0
  92. moai_adk/templates/.claude/hooks/alfred/session_start__auto_cleanup.py +580 -0
  93. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +298 -0
  94. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +170 -0
  95. moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/checkpoint.py +3 -3
  96. moai_adk/templates/.claude/hooks/alfred/{core → shared/core}/context.py +5 -5
  97. moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +749 -0
  98. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +230 -0
  99. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +198 -0
  100. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +21 -0
  101. moai_adk/templates/.claude/hooks/alfred/shared/handlers/daily_analysis.py +351 -0
  102. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +154 -0
  103. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +174 -0
  104. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +87 -0
  105. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +61 -0
  106. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +111 -0
  107. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +1 -0
  108. moai_adk/templates/.claude/hooks/alfred/utils/hook_config.py +94 -0
  109. moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +161 -0
  110. moai_adk/templates/.claude/output-styles/alfred/alfred-moai-adk-beginner.md +267 -0
  111. moai_adk/templates/.claude/output-styles/alfred/keating-personal-tutor.md +440 -0
  112. moai_adk/templates/.claude/output-styles/alfred/r2d2-agentic-coding.md +583 -0
  113. moai_adk/templates/.claude/settings.json +96 -14
  114. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +70 -0
  115. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +62 -0
  116. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +242 -0
  117. moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/SKILL.md +237 -0
  118. moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/examples.md +871 -0
  119. moai_adk/templates/.claude/skills/moai-alfred-ask-user-questions/reference.md +653 -0
  120. moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/README.md +162 -0
  121. moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/SKILL.md +227 -0
  122. moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/examples.md +354 -0
  123. moai_adk/templates/.claude/skills/moai-alfred-clone-pattern/reference.md +158 -0
  124. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +179 -79
  125. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/examples.md +117 -0
  126. moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/scripts/pre-review-check.sh +62 -0
  127. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +132 -0
  128. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +28 -0
  129. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +444 -0
  130. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +62 -0
  131. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +28 -0
  132. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +405 -0
  133. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +51 -0
  134. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +355 -0
  135. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +239 -0
  136. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +323 -0
  137. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +286 -0
  138. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +126 -0
  139. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +229 -0
  140. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +4 -0
  141. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +150 -0
  142. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +87 -73
  143. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +29 -0
  144. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +28 -0
  145. moai_adk/templates/.claude/skills/moai-alfred-personas/README.md +42 -0
  146. moai_adk/templates/.claude/skills/moai-alfred-personas/SKILL.md +429 -0
  147. moai_adk/templates/.claude/skills/moai-alfred-personas/examples.md +520 -0
  148. moai_adk/templates/.claude/skills/moai-alfred-personas/reference.md +405 -0
  149. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +89 -0
  150. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +122 -0
  151. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +369 -0
  152. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +508 -0
  153. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +481 -0
  154. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +100 -0
  155. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +77 -0
  156. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +265 -0
  157. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +539 -0
  158. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +320 -0
  159. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +4 -0
  160. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +84 -0
  161. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +137 -0
  162. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +219 -0
  163. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +161 -0
  164. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +541 -0
  165. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +622 -0
  166. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +19 -0
  167. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +4 -0
  168. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +211 -0
  169. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +288 -0
  170. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +269 -0
  171. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +32 -0
  172. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +298 -0
  173. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +26 -0
  174. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +307 -0
  175. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +21 -0
  176. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +252 -0
  177. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +19 -0
  178. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +19 -0
  179. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +24 -0
  180. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +199 -0
  181. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +39 -0
  182. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +316 -0
  183. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +18 -0
  184. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +263 -0
  185. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +30 -0
  186. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +482 -0
  187. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +303 -0
  188. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +524 -0
  189. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +477 -0
  190. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +429 -0
  191. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +391 -0
  192. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +431 -0
  193. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +577 -0
  194. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +273 -0
  195. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +466 -0
  196. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +583 -0
  197. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +526 -0
  198. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +608 -0
  199. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +328 -0
  200. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +312 -0
  201. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +245 -0
  202. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +285 -0
  203. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +278 -0
  204. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +303 -0
  205. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +291 -0
  206. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +15 -0
  207. moai_adk/templates/.claude/skills/moai-change-logger/SKILL.md +563 -0
  208. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +802 -0
  209. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +1238 -0
  210. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +673 -0
  211. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +234 -43
  212. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +1633 -0
  213. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +660 -0
  214. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +97 -69
  215. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +29 -0
  216. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +30 -0
  217. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +97 -72
  218. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +29 -0
  219. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +30 -0
  220. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +97 -74
  221. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +29 -0
  222. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +30 -0
  223. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +98 -74
  224. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +29 -0
  225. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +31 -0
  226. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +102 -73
  227. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +29 -0
  228. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +31 -0
  229. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +97 -73
  230. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +29 -0
  231. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +30 -0
  232. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +97 -67
  233. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +29 -0
  234. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +30 -0
  235. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +97 -79
  236. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +29 -0
  237. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +30 -0
  238. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +97 -71
  239. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +29 -0
  240. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +30 -0
  241. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +265 -64
  242. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +1064 -0
  243. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +1047 -0
  244. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +87 -78
  245. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +29 -0
  246. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +28 -0
  247. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +87 -70
  248. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +29 -0
  249. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +28 -0
  250. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +87 -86
  251. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +29 -0
  252. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +28 -0
  253. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +80 -62
  254. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +29 -0
  255. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +28 -0
  256. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +207 -50
  257. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +29 -0
  258. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +29 -0
  259. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +90 -71
  260. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +29 -0
  261. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +28 -0
  262. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +78 -58
  263. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +29 -0
  264. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +28 -0
  265. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +78 -51
  266. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +29 -0
  267. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +28 -0
  268. moai_adk/templates/.claude/skills/moai-foundation-trust/.!11330!examples.md +0 -0
  269. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +253 -32
  270. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  271. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +1099 -0
  272. moai_adk/templates/.claude/skills/moai-jit-docs-enhanced/SKILL.md +460 -0
  273. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +98 -74
  274. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +29 -0
  275. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +31 -0
  276. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +98 -76
  277. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +29 -0
  278. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +31 -0
  279. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +2358 -70
  280. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +29 -0
  281. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +30 -0
  282. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +2962 -68
  283. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +29 -0
  284. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +30 -0
  285. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +1898 -70
  286. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +29 -0
  287. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +31 -0
  288. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +1465 -68
  289. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +29 -0
  290. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +31 -0
  291. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +2364 -66
  292. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +29 -0
  293. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +32 -0
  294. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +1630 -69
  295. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +29 -0
  296. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +31 -0
  297. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +89 -61
  298. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +29 -0
  299. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +30 -0
  300. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +735 -66
  301. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +624 -0
  302. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +316 -0
  303. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +97 -73
  304. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +29 -0
  305. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +30 -0
  306. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +98 -73
  307. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +29 -0
  308. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +31 -0
  309. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +1834 -70
  310. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +29 -0
  311. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +31 -0
  312. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +99 -74
  313. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +29 -0
  314. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +30 -0
  315. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +97 -74
  316. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +29 -0
  317. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +30 -0
  318. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +98 -74
  319. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +29 -0
  320. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +31 -0
  321. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +1959 -69
  322. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +29 -0
  323. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +30 -0
  324. moai_adk/templates/.claude/skills/moai-lang-template/SKILL.md +348 -0
  325. moai_adk/templates/.claude/skills/moai-lang-template/VARIABLES.md +98 -0
  326. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +1230 -66
  327. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +29 -0
  328. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +34 -0
  329. moai_adk/templates/.claude/skills/moai-learning-optimizer/SKILL.md +575 -0
  330. moai_adk/templates/.claude/skills/moai-project-batch-questions/README.md +50 -0
  331. moai_adk/templates/.claude/skills/moai-project-batch-questions/SKILL.md +304 -0
  332. moai_adk/templates/.claude/skills/moai-project-batch-questions/examples.md +417 -0
  333. moai_adk/templates/.claude/skills/moai-project-batch-questions/reference.md +704 -0
  334. moai_adk/templates/.claude/skills/moai-project-config-manager/README.md +87 -0
  335. moai_adk/templates/.claude/skills/moai-project-config-manager/SKILL.md +552 -0
  336. moai_adk/templates/.claude/skills/moai-project-config-manager/examples.md +1109 -0
  337. moai_adk/templates/.claude/skills/moai-project-config-manager/reference.md +514 -0
  338. moai_adk/templates/.claude/skills/moai-project-config-manager/validate.py +106 -0
  339. moai_adk/templates/.claude/skills/moai-project-documentation/README.md +11 -0
  340. moai_adk/templates/.claude/skills/moai-project-documentation/SKILL.md +622 -0
  341. moai_adk/templates/.claude/skills/moai-project-documentation/examples.md +20 -0
  342. moai_adk/templates/.claude/skills/moai-project-documentation/reference.md +12 -0
  343. moai_adk/templates/.claude/skills/moai-project-language-initializer/README.md +152 -0
  344. moai_adk/templates/.claude/skills/moai-project-language-initializer/SKILL.md +285 -0
  345. moai_adk/templates/.claude/skills/moai-project-language-initializer/examples.md +333 -0
  346. moai_adk/templates/.claude/skills/moai-project-language-initializer/reference.md +386 -0
  347. moai_adk/templates/.claude/skills/moai-project-template-optimizer/README.md +49 -0
  348. moai_adk/templates/.claude/skills/moai-project-template-optimizer/SKILL.md +319 -0
  349. moai_adk/templates/.claude/skills/moai-project-template-optimizer/examples.md +58 -0
  350. moai_adk/templates/.claude/skills/moai-project-template-optimizer/reference.md +123 -0
  351. moai_adk/templates/.claude/skills/moai-session-info/SKILL.md +314 -0
  352. moai_adk/templates/.claude/skills/moai-streaming-ui/SKILL.md +552 -0
  353. moai_adk/templates/.claude/skills/moai-tag-policy-validator/SKILL.md +570 -0
  354. moai_adk/templates/.git-hooks/pre-commit +66 -0
  355. moai_adk/templates/.git-hooks/pre-push +255 -0
  356. moai_adk/templates/.github/workflows/c-tag-validation.yml +11 -0
  357. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +11 -0
  358. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +11 -0
  359. moai_adk/templates/.github/workflows/dart-tag-validation.yml +11 -0
  360. moai_adk/templates/.github/workflows/go-tag-validation.yml +130 -0
  361. moai_adk/templates/.github/workflows/java-tag-validation.yml +11 -0
  362. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +135 -0
  363. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +11 -0
  364. moai_adk/templates/.github/workflows/moai-gitflow.yml +166 -3
  365. moai_adk/templates/.github/workflows/moai-release-create.yml +100 -0
  366. moai_adk/templates/.github/workflows/moai-release-pipeline.yml +188 -0
  367. moai_adk/templates/.github/workflows/php-tag-validation.yml +11 -0
  368. moai_adk/templates/.github/workflows/python-tag-validation.yml +118 -0
  369. moai_adk/templates/.github/workflows/release.yml +118 -0
  370. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +11 -0
  371. moai_adk/templates/.github/workflows/rust-tag-validation.yml +11 -0
  372. moai_adk/templates/.github/workflows/shell-tag-validation.yml +11 -0
  373. moai_adk/templates/.github/workflows/spec-issue-sync.yml +338 -0
  374. moai_adk/templates/.github/workflows/swift-tag-validation.yml +11 -0
  375. moai_adk/templates/.github/workflows/tag-report.yml +269 -0
  376. moai_adk/templates/.github/workflows/tag-validation.yml +186 -0
  377. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +154 -0
  378. moai_adk/templates/.mcp.json +31 -0
  379. moai_adk/templates/.moai/config.json +80 -7
  380. moai_adk/templates/CLAUDE.md +562 -546
  381. moai_adk/utils/banner.py +5 -5
  382. moai_adk/utils/common.py +294 -0
  383. moai_adk/utils/link_validator.py +235 -0
  384. moai_adk/utils/logger.py +8 -8
  385. moai_adk/utils/user_experience.py +451 -0
  386. moai_adk-0.20.1.dist-info/METADATA +233 -0
  387. moai_adk-0.20.1.dist-info/RECORD +404 -0
  388. moai_adk/templates/.claude/hooks/alfred/README.md +0 -230
  389. moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +0 -156
  390. moai_adk/templates/.claude/hooks/alfred/core/__init__.py +0 -85
  391. moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +0 -25
  392. moai_adk/templates/.claude/hooks/alfred/handlers/session.py +0 -92
  393. moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +0 -70
  394. moai_adk/templates/.claude/hooks/alfred/handlers/user.py +0 -41
  395. moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +0 -636
  396. moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +0 -692
  397. moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +0 -470
  398. moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +0 -103
  399. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -103
  400. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -95
  401. moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +0 -105
  402. moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +0 -97
  403. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -97
  404. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -90
  405. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -99
  406. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +0 -87
  407. moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +0 -62
  408. moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +0 -94
  409. moai_adk/templates/.claude/skills/moai-claude-code/examples.md +0 -513
  410. moai_adk/templates/.claude/skills/moai-claude-code/reference.md +0 -433
  411. moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +0 -332
  412. moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +0 -384
  413. moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +0 -363
  414. moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +0 -595
  415. moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +0 -496
  416. moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +0 -100
  417. moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +0 -99
  418. moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +0 -100
  419. moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +0 -98
  420. moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +0 -98
  421. moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +0 -69
  422. moai_adk/templates/.moai/memory/development-guide.md +0 -344
  423. moai_adk/templates/.moai/memory/gitflow-protection-policy.md +0 -220
  424. moai_adk/templates/.moai/memory/spec-metadata.md +0 -356
  425. moai_adk/templates/.moai/project/product.md +0 -161
  426. moai_adk/templates/.moai/project/structure.md +0 -156
  427. moai_adk/templates/.moai/project/tech.md +0 -227
  428. moai_adk/templates/__init__.py +0 -2
  429. moai_adk-0.4.5.dist-info/METADATA +0 -369
  430. moai_adk-0.4.5.dist-info/RECORD +0 -152
  431. {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/WHEEL +0 -0
  432. {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/entry_points.txt +0 -0
  433. {moai_adk-0.4.5.dist-info → moai_adk-0.20.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,269 @@
1
+ # @CODE:DOC-TAG-004 | Component 4: Automated TAG reporting workflow
2
+ name: TAG Report Generation
3
+
4
+ on:
5
+ # Scheduled: Daily at 09:00 UTC
6
+ schedule:
7
+ - cron: '0 9 * * *'
8
+
9
+ # Event: Push to main/develop
10
+ push:
11
+ branches:
12
+ - main
13
+ - develop
14
+
15
+ # Manual: Workflow dispatch
16
+ workflow_dispatch:
17
+ inputs:
18
+ output_format:
19
+ description: 'Report format (all|inventory|matrix|statistics)'
20
+ required: false
21
+ default: 'all'
22
+
23
+ jobs:
24
+ generate-tag-reports:
25
+ name: Generate TAG Reports
26
+ runs-on: ubuntu-latest
27
+
28
+ permissions:
29
+ contents: write # Required to commit reports back to repo
30
+ pull-requests: write # Required to comment on PRs
31
+
32
+ strategy:
33
+ matrix:
34
+ python-version: ["3.11", "3.12", "3.13"]
35
+
36
+ steps:
37
+ - name: Checkout repository
38
+ uses: actions/checkout@v4
39
+ with:
40
+ fetch-depth: 0 # Full history for accurate file modification times
41
+
42
+ - name: Setup Python
43
+ uses: actions/setup-python@v5
44
+ with:
45
+ python-version: ${{ matrix.python-version }}
46
+
47
+ - name: Install uv
48
+ uses: astral-sh/setup-uv@v5
49
+ with:
50
+ version: "latest"
51
+
52
+ - name: Install MoAI-ADK
53
+ run: |
54
+ uv pip install --system -e .
55
+ uv pip install --system requests
56
+
57
+ - name: Create reports directory
58
+ run: |
59
+ mkdir -p docs/reports
60
+ echo "Reports will be generated in docs/reports/"
61
+
62
+ - name: Generate TAG Inventory
63
+ run: |
64
+ python -c "
65
+ from moai_adk.core.tags.reporter import ReportGenerator
66
+
67
+ generator = ReportGenerator()
68
+ inventory = generator.generate_inventory_report('.')
69
+
70
+ with open('docs/reports/tag-inventory.md', 'w') as f:
71
+ f.write(inventory)
72
+
73
+ print('✅ Generated tag-inventory.md')
74
+ "
75
+
76
+ - name: Generate TAG Coverage Matrix
77
+ run: |
78
+ python -c "
79
+ from moai_adk.core.tags.reporter import ReportGenerator
80
+
81
+ generator = ReportGenerator()
82
+ matrix = generator.generate_matrix_report('.')
83
+
84
+ with open('docs/reports/tag-matrix.md', 'w') as f:
85
+ f.write(matrix)
86
+
87
+ print('✅ Generated tag-matrix.md')
88
+ "
89
+
90
+ - name: Generate TAG Statistics
91
+ run: |
92
+ python -c "
93
+ from moai_adk.core.tags.reporter import ReportGenerator
94
+
95
+ generator = ReportGenerator()
96
+ stats = generator.generate_statistics_report('.')
97
+
98
+ with open('docs/reports/tag-statistics.json', 'w') as f:
99
+ f.write(stats)
100
+
101
+ print('✅ Generated tag-statistics.json')
102
+ "
103
+
104
+ - name: Generate combined report
105
+ run: |
106
+ python -c "
107
+ from moai_adk.core.tags.reporter import ReportGenerator
108
+ from pathlib import Path
109
+ import json
110
+
111
+ generator = ReportGenerator()
112
+ result = generator.generate_all_reports('.', 'docs/reports')
113
+
114
+ if result.success:
115
+ print(f'✅ All reports generated successfully')
116
+ print(f' - Inventory: {result.inventory_path}')
117
+ print(f' - Matrix: {result.matrix_path}')
118
+ print(f' - Statistics: {result.statistics_path}')
119
+
120
+ # Read statistics for summary
121
+ stats = json.loads(result.statistics_path.read_text())
122
+ print(f'')
123
+ print(f'📊 Summary:')
124
+ print(f' - Total TAGs: {stats[\"total_tags\"]}')
125
+ print(f' - By Type: SPEC={stats[\"by_type\"].get(\"SPEC\", 0)}, CODE={stats[\"by_type\"].get(\"CODE\", 0)}, TEST={stats[\"by_type\"].get(\"TEST\", 0)}, DOC={stats[\"by_type\"].get(\"DOC\", 0)}')
126
+ print(f' - Coverage: {stats[\"coverage\"].get(\"overall_percentage\", 0)}%')
127
+ else:
128
+ print(f'❌ Report generation failed: {result.error_message}')
129
+ exit(1)
130
+ "
131
+
132
+ - name: Check for changes
133
+ id: git_status
134
+ run: |
135
+ if [ -n "$(git status --porcelain docs/reports/)" ]; then
136
+ echo "changes=true" >> $GITHUB_OUTPUT
137
+ echo "📝 TAG reports have changed"
138
+ else
139
+ echo "changes=false" >> $GITHUB_OUTPUT
140
+ echo "✅ TAG reports unchanged (no commit needed)"
141
+ fi
142
+
143
+ - name: Commit reports
144
+ if: steps.git_status.outputs.changes == 'true'
145
+ run: |
146
+ git config --global user.name 'github-actions[bot]'
147
+ git config --global user.email 'github-actions[bot]@users.noreply.github.com'
148
+ git add docs/reports/
149
+ git commit -m "docs(tags): Update TAG reports [automated]
150
+
151
+ - Updated tag-inventory.md
152
+ - Updated tag-matrix.md
153
+ - Updated tag-statistics.json
154
+
155
+ Generated by: GitHub Actions workflow (tag-report.yml)
156
+ Triggered: ${{ github.event_name }}
157
+ Commit: ${{ github.sha }}
158
+
159
+ 🤖 Generated with MoAI-ADK TAG Reporting System
160
+ "
161
+ git push
162
+
163
+ - name: Create GitHub Release Notes
164
+ if: github.ref == 'refs/heads/main' && steps.git_status.outputs.changes == 'true'
165
+ run: |
166
+ echo "📊 TAG System Health Report" > report_summary.md
167
+ echo "" >> report_summary.md
168
+ echo "Generated: $(date -u +'%Y-%m-%d %H:%M:%S UTC')" >> report_summary.md
169
+ echo "" >> report_summary.md
170
+
171
+ # Extract key metrics from statistics
172
+ python -c "
173
+ import json
174
+ from pathlib import Path
175
+
176
+ stats = json.loads(Path('docs/reports/tag-statistics.json').read_text())
177
+
178
+ print(f'## Summary')
179
+ print(f'')
180
+ print(f'- **Total TAGs**: {stats[\"total_tags\"]}')
181
+ print(f'- **By Type**:')
182
+ print(f' - SPEC: {stats[\"by_type\"].get(\"SPEC\", 0)}')
183
+ print(f' - CODE: {stats[\"by_type\"].get(\"CODE\", 0)}')
184
+ print(f' - TEST: {stats[\"by_type\"].get(\"TEST\", 0)}')
185
+ print(f' - DOC: {stats[\"by_type\"].get(\"DOC\", 0)}')
186
+ print(f'')
187
+ print(f'## Coverage')
188
+ print(f'')
189
+ print(f'- **Overall**: {stats[\"coverage\"].get(\"overall_percentage\", 0)}%')
190
+ print(f'- **SPEC → CODE**: {stats[\"coverage\"].get(\"spec_to_code\", 0)}%')
191
+ print(f'- **CODE → TEST**: {stats[\"coverage\"].get(\"code_to_test\", 0)}%')
192
+ print(f'')
193
+ print(f'## Issues')
194
+ print(f'')
195
+ print(f'- **Orphan TAGs**: {stats[\"issues\"].get(\"orphan_count\", 0)}')
196
+ print(f'- **Incomplete Chains**: {stats[\"issues\"].get(\"incomplete_chains\", 0)}')
197
+ print(f'')
198
+ print(f'## Reports')
199
+ print(f'')
200
+ print(f'- [TAG Inventory](./docs/reports/tag-inventory.md)')
201
+ print(f'- [Coverage Matrix](./docs/reports/tag-matrix.md)')
202
+ print(f'- [Statistics (JSON)](./docs/reports/tag-statistics.json)')
203
+ " >> report_summary.md
204
+
205
+ cat report_summary.md
206
+
207
+ - name: Upload reports as artifacts
208
+ uses: actions/upload-artifact@v4
209
+ with:
210
+ name: tag-reports-${{ github.sha }}
211
+ path: docs/reports/
212
+ retention-days: 90
213
+
214
+ - name: Post summary to GitHub Actions UI
215
+ run: |
216
+ echo "## 📊 TAG Report Generation Complete" >> $GITHUB_STEP_SUMMARY
217
+ echo "" >> $GITHUB_STEP_SUMMARY
218
+
219
+ python -c "
220
+ import json
221
+ from pathlib import Path
222
+
223
+ stats = json.loads(Path('docs/reports/tag-statistics.json').read_text())
224
+
225
+ print(f'### Summary')
226
+ print(f'')
227
+ print(f'| Metric | Value |')
228
+ print(f'|--------|-------|')
229
+ print(f'| Total TAGs | {stats[\"total_tags\"]} |')
230
+ print(f'| SPEC | {stats[\"by_type\"].get(\"SPEC\", 0)} |')
231
+ print(f'| CODE | {stats[\"by_type\"].get(\"CODE\", 0)} |')
232
+ print(f'| TEST | {stats[\"by_type\"].get(\"TEST\", 0)} |')
233
+ print(f'| DOC | {stats[\"by_type\"].get(\"DOC\", 0)} |')
234
+ print(f'| Overall Coverage | {stats[\"coverage\"].get(\"overall_percentage\", 0)}% |')
235
+ print(f'| Orphan TAGs | {stats[\"issues\"].get(\"orphan_count\", 0)} |')
236
+ print(f'| Incomplete Chains | {stats[\"issues\"].get(\"incomplete_chains\", 0)} |')
237
+ print(f'')
238
+ print(f'### Generated Files')
239
+ print(f'')
240
+ print(f'- ✅ tag-inventory.md')
241
+ print(f'- ✅ tag-matrix.md')
242
+ print(f'- ✅ tag-statistics.json')
243
+ " >> $GITHUB_STEP_SUMMARY
244
+
245
+ - name: Fail workflow if issues detected (optional)
246
+ if: always()
247
+ run: |
248
+ python -c "
249
+ import json
250
+ from pathlib import Path
251
+ import sys
252
+
253
+ stats = json.loads(Path('docs/reports/tag-statistics.json').read_text())
254
+
255
+ orphan_count = stats['issues'].get('orphan_count', 0)
256
+ incomplete_count = stats['issues'].get('incomplete_chains', 0)
257
+
258
+ # Optional: Fail workflow if too many issues
259
+ # Uncomment to enable strict validation
260
+ # if orphan_count > 10 or incomplete_count > 10:
261
+ # print(f'❌ Too many TAG issues detected!')
262
+ # print(f' Orphans: {orphan_count}')
263
+ # print(f' Incomplete: {incomplete_count}')
264
+ # sys.exit(1)
265
+
266
+ print(f'✅ TAG system health check passed')
267
+ print(f' Orphans: {orphan_count}')
268
+ print(f' Incomplete: {incomplete_count}')
269
+ "
@@ -0,0 +1,186 @@
1
+ name: TAG Validation
2
+
3
+ # @DOC:DOC-TAG-004 | Component 2: CI/CD workflow for TAG validation
4
+ # Validates TAG annotations on every PR to ensure quality and consistency
5
+
6
+ on:
7
+ pull_request:
8
+ types: [opened, synchronize, reopened, ready_for_review]
9
+ push:
10
+ branches: [main, develop, "feature/**"]
11
+
12
+ jobs:
13
+ validate-tags:
14
+ name: 🏷️ Validate TAG Annotations
15
+ runs-on: ubuntu-latest
16
+
17
+ # Skip validation on draft PRs (allow WIP)
18
+ if: github.event.pull_request.draft == false || github.event_name == 'push'
19
+
20
+ permissions:
21
+ contents: read
22
+ pull-requests: write
23
+
24
+ strategy:
25
+ matrix:
26
+ python-version: ["3.11", "3.12", "3.13"]
27
+
28
+ steps:
29
+ - name: Checkout code
30
+ uses: actions/checkout@v4
31
+ with:
32
+ fetch-depth: 0 # Fetch all history for comprehensive validation
33
+
34
+ - name: Setup Python
35
+ uses: actions/setup-python@v5
36
+ with:
37
+ python-version: ${{ matrix.python-version }}
38
+
39
+ - name: Install uv
40
+ uses: astral-sh/setup-uv@v5
41
+ with:
42
+ version: "latest"
43
+
44
+ - name: Install dependencies
45
+ run: |
46
+ uv pip install --system -e .
47
+ uv pip install --system requests
48
+ # Note: This workflow is for MoAI-ADK (Python project).
49
+ # Generated projects auto-detect language via moai-alfred-language-detection.
50
+
51
+ - name: Get PR number
52
+ id: pr
53
+ run: |
54
+ if [ "${{ github.event_name }}" == "pull_request" ]; then
55
+ echo "number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
56
+ else
57
+ echo "number=0" >> $GITHUB_OUTPUT
58
+ fi
59
+
60
+ - name: Run TAG validation (info mode)
61
+ if: github.event_name == 'push' || github.event.pull_request.draft == false
62
+ id: validate_info
63
+ continue-on-error: true
64
+ env:
65
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66
+ run: |
67
+ if [ "${{ steps.pr.outputs.number }}" != "0" ]; then
68
+ python -m moai_adk.core.tags.ci_validator \
69
+ --pr-number ${{ steps.pr.outputs.number }} \
70
+ --output-json validation-report.json \
71
+ --output-comment pr-comment.md
72
+ else
73
+ echo "Skipping PR validation on push event"
74
+ echo '{"status": "skipped", "message": "Push event - no PR validation"}' > validation-report.json
75
+ echo "# TAG Validation Skipped\n\nPush event detected. TAG validation runs on PRs." > pr-comment.md
76
+ fi
77
+
78
+ - name: Run TAG validation (strict mode)
79
+ if: github.event.pull_request.ready_for_review == true
80
+ id: validate_strict
81
+ continue-on-error: false
82
+ env:
83
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
84
+ run: |
85
+ python -m moai_adk.core.tags.ci_validator \
86
+ --pr-number ${{ steps.pr.outputs.number }} \
87
+ --strict \
88
+ --output-json validation-report-strict.json \
89
+ --output-comment pr-comment-strict.md
90
+
91
+ - name: Upload validation report
92
+ if: always()
93
+ uses: actions/upload-artifact@v4
94
+ with:
95
+ name: tag-validation-report
96
+ path: |
97
+ validation-report*.json
98
+ pr-comment*.md
99
+ retention-days: 30
100
+
101
+ - name: Post PR comment (info mode)
102
+ if: github.event_name == 'pull_request' && steps.pr.outputs.number != '0'
103
+ uses: actions/github-script@v7
104
+ with:
105
+ github-token: ${{ secrets.GITHUB_TOKEN }}
106
+ script: |
107
+ const fs = require('fs');
108
+
109
+ // Read the comment file
110
+ let comment = '';
111
+ try {
112
+ comment = fs.readFileSync('pr-comment.md', 'utf8');
113
+ } catch (error) {
114
+ comment = '## ⚠️ TAG Validation\n\nCould not read validation results.';
115
+ }
116
+
117
+ // Find existing comment
118
+ const { data: comments } = await github.rest.issues.listComments({
119
+ owner: context.repo.owner,
120
+ repo: context.repo.repo,
121
+ issue_number: context.issue.number,
122
+ });
123
+
124
+ const botComment = comments.find(comment =>
125
+ comment.user.login === 'github-actions[bot]' &&
126
+ comment.body.includes('TAG Validation')
127
+ );
128
+
129
+ // Create or update comment
130
+ const commentBody = comment + '\n\n---\n\n*Automated validation by [MoAI-ADK TAG System](https://github.com/YOUR_ORG/MoAI-ADK)*';
131
+
132
+ if (botComment) {
133
+ await github.rest.issues.updateComment({
134
+ owner: context.repo.owner,
135
+ repo: context.repo.repo,
136
+ comment_id: botComment.id,
137
+ body: commentBody
138
+ });
139
+ } else {
140
+ await github.rest.issues.createComment({
141
+ owner: context.repo.owner,
142
+ repo: context.repo.repo,
143
+ issue_number: context.issue.number,
144
+ body: commentBody
145
+ });
146
+ }
147
+
148
+ - name: Validation summary
149
+ if: always()
150
+ run: |
151
+ echo "## TAG Validation Summary" >> $GITHUB_STEP_SUMMARY
152
+ echo "" >> $GITHUB_STEP_SUMMARY
153
+
154
+ if [ -f validation-report.json ]; then
155
+ echo "### Info Mode Results" >> $GITHUB_STEP_SUMMARY
156
+ cat validation-report.json | python -c "import json, sys; r=json.load(sys.stdin); print(f\"- Status: {r.get('status', 'unknown')}\"); print(f\"- Errors: {r.get('statistics', {}).get('total_errors', 0)}\"); print(f\"- Warnings: {r.get('statistics', {}).get('total_warnings', 0)}\")" >> $GITHUB_STEP_SUMMARY || echo "- Could not parse report" >> $GITHUB_STEP_SUMMARY
157
+ fi
158
+
159
+ if [ -f validation-report-strict.json ]; then
160
+ echo "" >> $GITHUB_STEP_SUMMARY
161
+ echo "### Strict Mode Results" >> $GITHUB_STEP_SUMMARY
162
+ cat validation-report-strict.json | python -c "import json, sys; r=json.load(sys.stdin); print(f\"- Status: {r.get('status', 'unknown')}\"); print(f\"- Errors: {r.get('statistics', {}).get('total_errors', 0)}\"); print(f\"- Warnings: {r.get('statistics', {}).get('total_warnings', 0)}\")" >> $GITHUB_STEP_SUMMARY || echo "- Could not parse report" >> $GITHUB_STEP_SUMMARY
163
+ fi
164
+
165
+ - name: Set PR status check
166
+ if: github.event_name == 'pull_request'
167
+ run: |
168
+ if [ -f validation-report.json ]; then
169
+ STATUS=$(cat validation-report.json | python -c "import json, sys; r=json.load(sys.stdin); print('success' if r.get('is_valid', False) else 'failure')")
170
+ echo "Validation status: $STATUS"
171
+ if [ "$STATUS" = "failure" ]; then
172
+ exit 1
173
+ fi
174
+ fi
175
+
176
+ # Optional: Require TAG validation to pass before merge
177
+ # Uncomment this job to enforce strict validation
178
+ #
179
+ # require-validation:
180
+ # name: Require TAG Validation
181
+ # runs-on: ubuntu-latest
182
+ # needs: validate-tags
183
+ # if: github.event.pull_request.draft == false
184
+ # steps:
185
+ # - name: Check validation passed
186
+ # run: echo "TAG validation passed"
@@ -0,0 +1,154 @@
1
+ # @CODE:LANG-TS-001 | SPEC: SPEC-LANGUAGE-DETECTION-001.md | TEST: tests/test_workflows.py
2
+ # TypeScript Project TAG Validation Workflow
3
+ # Automatically validates TAGs with type checking, linting, and testing
4
+
5
+ name: TAG Validation (TypeScript)
6
+
7
+ on:
8
+ push:
9
+ branches: [main, develop, feature/**]
10
+ pull_request:
11
+ branches: [main, develop]
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ validate:
19
+ name: Validate TAGs - Node ${{ matrix.node-version }}
20
+ runs-on: ubuntu-latest
21
+
22
+ strategy:
23
+ matrix:
24
+ node-version: ['20', '22']
25
+ fail-fast: false
26
+
27
+ steps:
28
+ - name: Checkout repository
29
+ uses: actions/checkout@v4
30
+ with:
31
+ fetch-depth: 0
32
+
33
+ - name: Set up Node.js ${{ matrix.node-version }}
34
+ uses: actions/setup-node@v6
35
+ with:
36
+ node-version: ${{ matrix.node-version }}
37
+
38
+ - name: Detect package manager
39
+ id: detect-pm
40
+ run: |
41
+ if [ -f "bun.lockb" ]; then
42
+ echo "manager=bun" >> $GITHUB_OUTPUT
43
+ echo "lockfile=bun.lockb" >> $GITHUB_OUTPUT
44
+ elif [ -f "pnpm-lock.yaml" ]; then
45
+ echo "manager=pnpm" >> $GITHUB_OUTPUT
46
+ echo "lockfile=pnpm-lock.yaml" >> $GITHUB_OUTPUT
47
+ elif [ -f "yarn.lock" ]; then
48
+ echo "manager=yarn" >> $GITHUB_OUTPUT
49
+ echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT
50
+ else
51
+ echo "manager=npm" >> $GITHUB_OUTPUT
52
+ echo "lockfile=package-lock.json" >> $GITHUB_OUTPUT
53
+ fi
54
+
55
+ - name: Setup package manager cache
56
+ uses: actions/setup-node@v6
57
+ with:
58
+ node-version: ${{ matrix.node-version }}
59
+ cache: ${{ steps.detect-pm.outputs.manager }}
60
+
61
+ - name: Install pnpm (if needed)
62
+ if: steps.detect-pm.outputs.manager == 'pnpm'
63
+ run: npm install -g pnpm
64
+
65
+ - name: Install Bun (if needed)
66
+ if: steps.detect-pm.outputs.manager == 'bun'
67
+ uses: oven-sh/setup-bun@v2
68
+
69
+ - name: Install dependencies
70
+ run: |
71
+ case "${{ steps.detect-pm.outputs.manager }}" in
72
+ npm)
73
+ npm ci
74
+ ;;
75
+ yarn)
76
+ yarn install --frozen-lockfile
77
+ ;;
78
+ pnpm)
79
+ pnpm install --frozen-lockfile
80
+ ;;
81
+ bun)
82
+ bun install --frozen-lockfile
83
+ ;;
84
+ esac
85
+
86
+ - name: Run type checking
87
+ run: |
88
+ if [ -f "tsconfig.json" ]; then
89
+ npx tsc --noEmit
90
+ else
91
+ npm run type-check || npx tsc --noEmit
92
+ fi
93
+ continue-on-error: false
94
+
95
+ - name: Run linting
96
+ run: |
97
+ if [ -f "biome.json" ]; then
98
+ npx @biomejs/biome check src/
99
+ elif command -v eslint &> /dev/null; then
100
+ npm run lint || npx eslint src/
101
+ fi
102
+ continue-on-error: false
103
+
104
+ - name: Run tests with coverage
105
+ run: npm test -- --coverage --coverage-threshold=85
106
+ continue-on-error: false
107
+
108
+ - name: Upload coverage reports
109
+ if: matrix.node-version == '22'
110
+ uses: actions/upload-artifact@v4
111
+ with:
112
+ name: coverage-report-typescript
113
+ path: coverage/
114
+
115
+ - name: Comment PR with coverage
116
+ if: github.event_name == 'pull_request' && matrix.node-version == '22'
117
+ uses: ArtiomTr/jest-coverage-report-action@v2
118
+ with:
119
+ github-token: ${{ secrets.GITHUB_TOKEN }}
120
+ threshold: 85
121
+
122
+ - name: Build project
123
+ run: |
124
+ if grep -q '"build"' package.json; then
125
+ npm run build
126
+ else
127
+ npx tsc
128
+ fi
129
+ continue-on-error: true
130
+
131
+ quality-gate:
132
+ name: Quality Gate Summary
133
+ needs: validate
134
+ runs-on: ubuntu-latest
135
+ if: always()
136
+
137
+ steps:
138
+ - name: Check validation results
139
+ run: |
140
+ if [ "${{ needs.validate.result }}" != "success" ]; then
141
+ echo "❌ TAG validation failed"
142
+ exit 1
143
+ fi
144
+ echo "✅ TAG validation passed"
145
+
146
+ - name: Quality metrics summary
147
+ run: |
148
+ echo "## Quality Metrics Summary" >> $GITHUB_STEP_SUMMARY
149
+ echo "" >> $GITHUB_STEP_SUMMARY
150
+ echo "- ✅ TypeScript tests passed" >> $GITHUB_STEP_SUMMARY
151
+ echo "- ✅ Type checking passed (tsc)" >> $GITHUB_STEP_SUMMARY
152
+ echo "- ✅ Code coverage ≥ 85%" >> $GITHUB_STEP_SUMMARY
153
+ echo "- ✅ Linting passed" >> $GITHUB_STEP_SUMMARY
154
+ echo "- ✅ TAG chain validated" >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,31 @@
1
+ {
2
+ "mcpServers": {
3
+ "context7": {
4
+ "command": "npx",
5
+ "args": ["-y", "@upstash/context7-mcp@latest"],
6
+ "env": {
7
+ "NODE_OPTIONS": "--max-old-space-size=2048"
8
+ },
9
+ "timeout": 15000,
10
+ "retries": 2
11
+ },
12
+ "playwright": {
13
+ "command": "npx",
14
+ "args": ["-y", "@playwright/mcp@latest"],
15
+ "env": {
16
+ "NODE_OPTIONS": "--max-old-space-size=2048"
17
+ },
18
+ "timeout": 15000,
19
+ "retries": 2
20
+ },
21
+ "sequential-thinking": {
22
+ "command": "npx",
23
+ "args": ["-y", "@modelcontextprotocol/server-sequential-thinking@latest"],
24
+ "env": {
25
+ "NODE_OPTIONS": "--max-old-space-size=2048"
26
+ },
27
+ "timeout": 15000,
28
+ "retries": 2
29
+ }
30
+ }
31
+ }