moai-adk 0.15.0__py3-none-any.whl → 0.25.4__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 (417) hide show
  1. moai_adk/__init__.py +1 -2
  2. moai_adk/__main__.py +85 -2
  3. moai_adk/cli/__init__.py +0 -1
  4. moai_adk/cli/commands/__init__.py +0 -1
  5. moai_adk/cli/commands/analyze.py +127 -0
  6. moai_adk/cli/commands/backup.py +5 -3
  7. moai_adk/cli/commands/doctor.py +35 -11
  8. moai_adk/cli/commands/improve_user_experience.py +348 -0
  9. moai_adk/cli/commands/init.py +150 -23
  10. moai_adk/cli/commands/language.py +269 -0
  11. moai_adk/cli/commands/migrate.py +158 -0
  12. moai_adk/cli/commands/status.py +13 -12
  13. moai_adk/cli/commands/update.py +364 -60
  14. moai_adk/cli/commands/validate_links.py +118 -0
  15. moai_adk/cli/main.py +3 -2
  16. moai_adk/cli/prompts/init_prompts.py +79 -82
  17. moai_adk/core/__init__.py +0 -1
  18. moai_adk/core/analysis/__init__.py +9 -0
  19. moai_adk/core/analysis/session_analyzer.py +439 -0
  20. moai_adk/core/claude_integration.py +421 -0
  21. moai_adk/core/command_helpers.py +270 -0
  22. moai_adk/core/config/__init__.py +6 -0
  23. moai_adk/core/config/auto_spec_config.py +346 -0
  24. moai_adk/core/config/migration.py +133 -12
  25. moai_adk/core/context_manager.py +279 -0
  26. moai_adk/core/diagnostics/slash_commands.py +0 -1
  27. moai_adk/core/error_recovery_system.py +1289 -0
  28. moai_adk/core/git/__init__.py +0 -1
  29. moai_adk/core/git/branch.py +0 -1
  30. moai_adk/core/git/branch_manager.py +4 -4
  31. moai_adk/core/git/checkpoint.py +1 -5
  32. moai_adk/core/git/commit.py +0 -1
  33. moai_adk/core/git/event_detector.py +3 -5
  34. moai_adk/core/git/manager.py +0 -1
  35. moai_adk/core/hooks/post_tool_auto_spec_completion.py +925 -0
  36. moai_adk/core/integration/__init__.py +22 -0
  37. moai_adk/core/integration/engine.py +169 -0
  38. moai_adk/core/integration/integration_tester.py +225 -0
  39. moai_adk/core/integration/models.py +88 -0
  40. moai_adk/core/integration/utils.py +211 -0
  41. moai_adk/core/issue_creator.py +28 -18
  42. moai_adk/core/language_config.py +202 -0
  43. moai_adk/core/language_validator.py +556 -0
  44. moai_adk/core/mcp/setup.py +113 -0
  45. moai_adk/core/migration/__init__.py +18 -0
  46. moai_adk/core/migration/backup_manager.py +208 -0
  47. moai_adk/core/migration/file_migrator.py +218 -0
  48. moai_adk/core/migration/version_detector.py +143 -0
  49. moai_adk/core/migration/version_migrator.py +228 -0
  50. moai_adk/core/performance/__init__.py +6 -0
  51. moai_adk/core/performance/cache_system.py +318 -0
  52. moai_adk/core/performance/parallel_processor.py +116 -0
  53. moai_adk/core/project/__init__.py +0 -1
  54. moai_adk/core/project/backup_utils.py +2 -7
  55. moai_adk/core/project/checker.py +3 -3
  56. moai_adk/core/project/detector.py +20 -40
  57. moai_adk/core/project/initializer.py +42 -17
  58. moai_adk/core/project/phase_executor.py +415 -58
  59. moai_adk/core/project/validator.py +6 -25
  60. moai_adk/core/quality/__init__.py +1 -1
  61. moai_adk/core/quality/trust_checker.py +64 -110
  62. moai_adk/core/quality/validators/__init__.py +1 -1
  63. moai_adk/core/quality/validators/base_validator.py +1 -1
  64. moai_adk/core/rollback_manager.py +993 -0
  65. moai_adk/core/session_manager.py +667 -0
  66. moai_adk/core/spec/confidence_scoring.py +749 -0
  67. moai_adk/core/spec/ears_template_engine.py +1182 -0
  68. moai_adk/core/spec/quality_validator.py +721 -0
  69. moai_adk/core/spec_status_manager.py +488 -0
  70. moai_adk/core/template/__init__.py +0 -1
  71. moai_adk/core/template/backup.py +41 -1
  72. moai_adk/core/template/config.py +11 -12
  73. moai_adk/core/template/languages.py +0 -1
  74. moai_adk/core/template/merger.py +79 -22
  75. moai_adk/core/template/processor.py +614 -40
  76. moai_adk/core/template_engine.py +36 -27
  77. moai_adk/foundation/git/commit_templates.py +565 -0
  78. moai_adk/foundation/trust/trust_principles.py +725 -0
  79. moai_adk/foundation/trust/validation_checklist.py +1678 -0
  80. moai_adk/statusline/__init__.py +38 -0
  81. moai_adk/statusline/alfred_detector.py +107 -0
  82. moai_adk/statusline/config.py +364 -0
  83. moai_adk/statusline/enhanced_output_style_detector.py +364 -0
  84. moai_adk/statusline/git_collector.py +190 -0
  85. moai_adk/statusline/main.py +228 -0
  86. moai_adk/statusline/metrics_tracker.py +78 -0
  87. moai_adk/statusline/renderer.py +327 -0
  88. moai_adk/statusline/update_checker.py +135 -0
  89. moai_adk/statusline/version_reader.py +647 -0
  90. moai_adk/templates/.git-hooks/pre-commit +66 -0
  91. moai_adk/templates/.git-hooks/pre-push +116 -4
  92. moai_adk/templates/.github/workflows/moai-gitflow.yml +1 -7
  93. moai_adk/templates/.github/workflows/spec-issue-sync.yml +0 -1
  94. moai_adk/templates/.gitignore +44 -0
  95. moai_adk/templates/.mcp.json +22 -0
  96. moai_adk/templates/CLAUDE.md +450 -1071
  97. moai_adk/utils/__init__.py +0 -1
  98. moai_adk/utils/banner.py +0 -1
  99. moai_adk/utils/common.py +308 -0
  100. moai_adk/utils/link_validator.py +249 -0
  101. moai_adk/utils/logger.py +4 -9
  102. moai_adk/utils/safe_file_reader.py +210 -0
  103. moai_adk/utils/user_experience.py +531 -0
  104. moai_adk-0.25.4.dist-info/METADATA +2279 -0
  105. moai_adk-0.25.4.dist-info/RECORD +112 -0
  106. moai_adk/core/tags/__init__.py +0 -86
  107. moai_adk/core/tags/ci_validator.py +0 -463
  108. moai_adk/core/tags/cli.py +0 -283
  109. moai_adk/core/tags/generator.py +0 -109
  110. moai_adk/core/tags/inserter.py +0 -99
  111. moai_adk/core/tags/mapper.py +0 -126
  112. moai_adk/core/tags/parser.py +0 -76
  113. moai_adk/core/tags/pre_commit_validator.py +0 -393
  114. moai_adk/core/tags/reporter.py +0 -956
  115. moai_adk/core/tags/tags.py +0 -149
  116. moai_adk/core/tags/validator.py +0 -897
  117. moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
  118. moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
  119. moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
  120. moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
  121. moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
  122. moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
  123. moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
  124. moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
  125. moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
  126. moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
  127. moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
  128. moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -392
  129. moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
  130. moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
  131. moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
  132. moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
  133. moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1525
  134. moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -802
  135. moai_adk/templates/.claude/commands/alfred/2-run.md +0 -709
  136. moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1009
  137. moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
  138. moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
  139. moai_adk/templates/.claude/hooks/alfred/core/timeout.py +0 -136
  140. moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
  141. moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
  142. moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
  143. moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
  144. moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
  145. moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
  146. moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
  147. moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
  148. moai_adk/templates/.claude/hooks/alfred/shared/core/checkpoint.py +0 -271
  149. moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
  150. moai_adk/templates/.claude/hooks/alfred/shared/core/project.py +0 -749
  151. moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
  152. moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
  153. moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
  154. moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
  155. moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
  156. moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
  157. moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
  158. moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
  159. moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
  160. moai_adk/templates/.claude/hooks/alfred/utils/timeout.py +0 -161
  161. moai_adk/templates/.claude/settings.json +0 -144
  162. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
  163. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
  164. moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
  165. moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
  166. moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
  167. moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
  168. moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
  169. moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
  170. moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
  171. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
  172. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
  173. moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
  174. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
  175. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
  176. moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
  177. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
  178. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
  179. moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
  180. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
  181. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
  182. moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
  183. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
  184. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
  185. moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
  186. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
  187. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
  188. moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
  189. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
  190. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
  191. moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
  192. moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
  193. moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
  194. moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
  195. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
  196. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
  197. moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
  198. moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
  199. moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
  200. moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
  201. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
  202. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
  203. moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
  204. moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
  205. moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
  206. moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
  207. moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
  208. moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
  209. moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
  210. moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
  211. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
  212. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
  213. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
  214. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
  215. moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
  216. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
  217. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
  218. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
  219. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
  220. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
  221. moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
  222. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
  223. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
  224. moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
  225. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
  226. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
  227. moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
  228. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
  229. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
  230. moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
  231. moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +0 -288
  232. moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
  233. moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
  234. moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
  235. moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
  236. moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
  237. moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
  238. moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
  239. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
  240. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
  241. moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
  242. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
  243. moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
  244. moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
  245. moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
  246. moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
  247. moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
  248. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
  249. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
  250. moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
  251. moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
  252. moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
  253. moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
  254. moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
  255. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
  256. moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
  257. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
  258. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
  259. moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
  260. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
  261. moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
  262. moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
  263. moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
  264. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
  265. moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
  266. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
  267. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
  268. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
  269. moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
  270. moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
  271. moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
  272. moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
  273. moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
  274. moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
  275. moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +0 -290
  276. moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
  277. moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
  278. moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
  279. moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
  280. moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
  281. moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
  282. moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
  283. moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
  284. moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +0 -123
  285. moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
  286. moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
  287. moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
  288. moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
  289. moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
  290. moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +0 -128
  291. moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
  292. moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
  293. moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
  294. moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
  295. moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
  296. moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
  297. moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
  298. moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
  299. moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
  300. moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
  301. moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
  302. moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
  303. moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
  304. moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
  305. moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
  306. moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
  307. moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
  308. moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
  309. moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
  310. moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
  311. moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
  312. moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
  313. moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
  314. moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
  315. moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
  316. moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
  317. moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
  318. moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
  319. moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
  320. moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
  321. moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
  322. moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
  323. moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
  324. moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
  325. moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
  326. moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
  327. moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
  328. moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
  329. moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
  330. moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
  331. moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
  332. moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
  333. moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
  334. moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
  335. moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
  336. moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
  337. moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
  338. moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
  339. moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
  340. moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
  341. moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
  342. moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
  343. moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
  344. moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
  345. moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
  346. moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
  347. moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
  348. moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
  349. moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
  350. moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
  351. moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
  352. moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
  353. moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
  354. moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
  355. moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
  356. moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
  357. moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
  358. moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
  359. moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
  360. moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
  361. moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
  362. moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
  363. moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
  364. moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
  365. moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
  366. moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
  367. moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
  368. moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
  369. moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
  370. moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
  371. moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
  372. moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
  373. moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
  374. moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
  375. moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
  376. moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
  377. moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
  378. moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
  379. moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
  380. moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
  381. moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
  382. moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
  383. moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
  384. moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
  385. moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
  386. moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
  387. moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
  388. moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
  389. moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
  390. moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
  391. moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
  392. moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
  393. moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
  394. moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
  395. moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
  396. moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
  397. moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
  398. moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
  399. moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
  400. moai_adk/templates/.github/workflows/release.yml +0 -118
  401. moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
  402. moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
  403. moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
  404. moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
  405. moai_adk/templates/.github/workflows/tag-report.yml +0 -269
  406. moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
  407. moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
  408. moai_adk/templates/.moai/config.json +0 -115
  409. moai_adk/templates/workflows/go-tag-validation.yml +0 -30
  410. moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
  411. moai_adk/templates/workflows/python-tag-validation.yml +0 -42
  412. moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
  413. moai_adk-0.15.0.dist-info/METADATA +0 -3079
  414. moai_adk-0.15.0.dist-info/RECORD +0 -365
  415. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/WHEEL +0 -0
  416. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/entry_points.txt +0 -0
  417. {moai_adk-0.15.0.dist-info → moai_adk-0.25.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,269 +0,0 @@
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
- "
@@ -1,186 +0,0 @@
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"
@@ -1,154 +0,0 @@
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