workflow-ai 1.1.0 → 1.3.0

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.
Files changed (599) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +37 -377
  3. package/configs/pipeline.yaml +113 -4
  4. package/package.json +54 -44
  5. package/src/lib/operations/tickets.mjs +305 -207
  6. package/src/lib/utils.mjs +286 -286
  7. package/src/runner.mjs +316 -35
  8. package/src/scripts/check-conditions.js +2 -2
  9. package/src/scripts/check-relevance.js +3 -1
  10. package/src/scripts/get-next-id.js +144 -41
  11. package/src/scripts/mark-blocked.js +160 -0
  12. package/src/scripts/move-ticket.js +305 -83
  13. package/src/scripts/pick-next-task.js +782 -93
  14. package/src/skills/__test-cal-001-1777553217513/SKILL.md +2 -0
  15. package/src/skills/__test-runner-1777553217483/SKILL.md +5 -0
  16. package/src/skills/coach/SKILL.md +2 -2
  17. package/src/skills/execute-task/SKILL.md +1 -1
  18. package/src/skills/manual-testing/SKILL.md +2 -0
  19. package/src/skills/review-result/SKILL.md +23 -1
  20. package/src/scripts/tests/timeout-cascade.test.js +0 -28
  21. package/src/skills/analyze-report/README.md +0 -44
  22. package/src/skills/analyze-report/algorithms/progress-assessment.md +0 -108
  23. package/src/skills/analyze-report/knowledge/analysis-frameworks.md +0 -66
  24. package/src/skills/analyze-report/knowledge/report-structure.md +0 -61
  25. package/src/skills/analyze-report/scripts/calc-plan-metrics.js +0 -234
  26. package/src/skills/analyze-report/templates/analysis-report.md +0 -80
  27. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-1.md +0 -5
  28. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-2.md +0 -98
  29. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-3.md +0 -99
  30. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/judge.json +0 -163
  31. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-1.md +0 -89
  32. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-2.md +0 -88
  33. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-3.md +0 -100
  34. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-1.md +0 -77
  35. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-2.md +0 -64
  36. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-3.md +0 -110
  37. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-1.md +0 -74
  38. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-2.md +0 -38
  39. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-3.md +0 -61
  40. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/meta.json +0 -115
  41. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001-evidence-from-log.yaml +0 -60
  42. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-1.md +0 -90
  43. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-2.md +0 -89
  44. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-3.md +0 -5
  45. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/judge.json +0 -163
  46. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-1.md +0 -84
  47. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-2.md +0 -77
  48. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-3.md +0 -89
  49. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-1.md +0 -103
  50. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-2.md +0 -103
  51. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-3.md +0 -103
  52. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-1.md +0 -93
  53. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-2.md +0 -93
  54. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-3.md +0 -86
  55. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/meta.json +0 -115
  56. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002-result-block-format.yaml +0 -44
  57. package/src/skills/analyze-report/tests/fixtures/REPORT-002-incorrect-attribution.md +0 -27
  58. package/src/skills/analyze-report/tests/fixtures/pipeline-2026-04-06_qa-001-skip.log +0 -32
  59. package/src/skills/analyze-report/tests/index.yaml +0 -25
  60. package/src/skills/analyze-report/tests/rubrics/evidence-from-log.md +0 -22
  61. package/src/skills/analyze-report/tests/rubrics/result-block-format.md +0 -22
  62. package/src/skills/analyze-report/workflows/progress.md +0 -158
  63. package/src/skills/analyze-report/workflows/retrospective.md +0 -143
  64. package/src/skills/coach/README.md +0 -43
  65. package/src/skills/coach/SKILL.md.legacy +0 -157
  66. package/src/skills/coach/algorithms/gap-analysis.md +0 -69
  67. package/src/skills/coach/algorithms/improvement-prioritization.md +0 -62
  68. package/src/skills/coach/algorithms/skill-scoring.md +0 -80
  69. package/src/skills/coach/knowledge/audit-applied-changes-clean.txt +0 -11
  70. package/src/skills/coach/knowledge/backlog-management.md +0 -67
  71. package/src/skills/coach/knowledge/backlog-management.md.legacy +0 -90
  72. package/src/skills/coach/knowledge/common-antipatterns.md +0 -76
  73. package/src/skills/coach/knowledge/prompt-engineering.md +0 -45
  74. package/src/skills/coach/knowledge/shared-knowledge-guide.md +0 -44
  75. package/src/skills/coach/knowledge/skill-anatomy.md +0 -49
  76. package/src/skills/coach/knowledge/test-authorship.md +0 -141
  77. package/src/skills/coach/templates/audit-report.md +0 -39
  78. package/src/skills/coach/templates/coach-backlog-init.yaml +0 -14
  79. package/src/skills/coach/templates/coach-backlog-init.yaml.legacy +0 -10
  80. package/src/skills/coach/templates/improvement-plan.md +0 -42
  81. package/src/skills/coach/templates/new-skill.md +0 -95
  82. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-1.md +0 -58
  83. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-2.md +0 -65
  84. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-3.md +0 -58
  85. package/src/skills/coach/tests/cases/TC-COACH-001/current/judge.json +0 -151
  86. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-1.md +0 -46
  87. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-2.md +0 -0
  88. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-3.md +0 -75
  89. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-1.md +0 -81
  90. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-2.md +0 -101
  91. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-3.md +0 -91
  92. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-1.md +0 -48
  93. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-2.md +0 -30
  94. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-3.md +0 -55
  95. package/src/skills/coach/tests/cases/TC-COACH-001/current/meta.json +0 -94
  96. package/src/skills/coach/tests/cases/TC-COACH-001-evidence-based-temporal-diagram.yaml +0 -53
  97. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-1.md +0 -46
  98. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-2.md +0 -50
  99. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-3.md +0 -48
  100. package/src/skills/coach/tests/cases/TC-COACH-002/current/judge.json +0 -151
  101. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-1.md +0 -0
  102. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-2.md +0 -37
  103. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-3.md +0 -30
  104. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-1.md +0 -23
  105. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-2.md +0 -29
  106. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-3.md +0 -35
  107. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-1.md +0 -13
  108. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-2.md +0 -19
  109. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-3.md +0 -33
  110. package/src/skills/coach/tests/cases/TC-COACH-002/current/meta.json +0 -94
  111. package/src/skills/coach/tests/cases/TC-COACH-002-root-cause-first.yaml +0 -57
  112. package/src/skills/coach/tests/fixtures/pipeline-2026-04-06_id-collision.log +0 -77
  113. package/src/skills/coach/tests/index.yaml +0 -29
  114. package/src/skills/coach/tests/rubrics/calibration/evidence-based-bad.md +0 -13
  115. package/src/skills/coach/tests/rubrics/calibration/evidence-based-good.md +0 -29
  116. package/src/skills/coach/tests/rubrics/evidence-based.md +0 -26
  117. package/src/skills/coach/tests/rubrics/root-cause-first.md +0 -21
  118. package/src/skills/coach/workflows/analyze.md +0 -79
  119. package/src/skills/coach/workflows/analyze.md.legacy +0 -64
  120. package/src/skills/coach/workflows/audit.md +0 -74
  121. package/src/skills/coach/workflows/audit.md.legacy +0 -59
  122. package/src/skills/coach/workflows/create.md +0 -80
  123. package/src/skills/coach/workflows/create.md.legacy +0 -67
  124. package/src/skills/coach/workflows/improve.md +0 -71
  125. package/src/skills/coach/workflows/improve.md.legacy +0 -60
  126. package/src/skills/coach/workflows/research.md +0 -55
  127. package/src/skills/coach/workflows/review.md +0 -52
  128. package/src/skills/coach/workflows/review.md.legacy +0 -48
  129. package/src/skills/coach/workflows/test.md +0 -97
  130. package/src/skills/create-plan/README.md +0 -39
  131. package/src/skills/create-plan/algorithms/risk-assessment.md +0 -73
  132. package/src/skills/create-plan/knowledge/plan-completeness.md +0 -67
  133. package/src/skills/create-plan/knowledge/plan-lifecycle.md +0 -33
  134. package/src/skills/create-plan/knowledge/task-verification-pairs.md +0 -151
  135. package/src/skills/create-plan/knowledge/test-hygiene.md +0 -47
  136. package/src/skills/create-plan/scripts/validate-completeness.js +0 -182
  137. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-1.md +0 -5
  138. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-2.md +0 -39
  139. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-3.md +0 -35
  140. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/judge.json +0 -167
  141. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-1.md +0 -5
  142. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-2.md +0 -10
  143. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-3.md +0 -5
  144. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-1.md +0 -26
  145. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-2.md +0 -86
  146. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-3.md +0 -5
  147. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-1.md +0 -11
  148. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-2.md +0 -15
  149. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-3.md +0 -14
  150. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/meta.json +0 -119
  151. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001-validate-completeness.yaml +0 -41
  152. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-1.md +0 -25
  153. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-2.md +0 -30
  154. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-3.md +0 -37
  155. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/judge.json +0 -164
  156. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-1.md +0 -3
  157. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-2.md +0 -11
  158. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-3.md +0 -13
  159. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-1.md +0 -44
  160. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-2.md +0 -5
  161. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-3.md +0 -49
  162. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-1.md +0 -6
  163. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-2.md +0 -11
  164. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-3.md +0 -16
  165. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/meta.json +0 -116
  166. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002-task-granularity.yaml +0 -39
  167. package/src/skills/create-plan/tests/index.yaml +0 -25
  168. package/src/skills/create-plan/tests/rubrics/task-granularity.md +0 -21
  169. package/src/skills/create-plan/tests/rubrics/validate-completeness.md +0 -21
  170. package/src/skills/create-plan/workflows/create.md +0 -136
  171. package/src/skills/create-report/README.md +0 -40
  172. package/src/skills/create-report/algorithms/metric-calculation.md +0 -93
  173. package/src/skills/create-report/knowledge/report-metrics.md +0 -82
  174. package/src/skills/create-report/scripts/calc-metrics.js +0 -383
  175. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-1.md +0 -25
  176. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-2.md +0 -26
  177. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-3.md +0 -28
  178. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/judge.json +0 -163
  179. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-1.md +0 -4
  180. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-2.md +0 -3
  181. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-3.md +0 -6
  182. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-1.md +0 -8
  183. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-2.md +0 -12
  184. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-3.md +0 -7
  185. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-1.md +0 -12
  186. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-2.md +0 -22
  187. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-3.md +0 -13
  188. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/meta.json +0 -115
  189. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001-root-cause-attribution.yaml +0 -57
  190. package/src/skills/create-report/tests/index.yaml +0 -20
  191. package/src/skills/create-report/tests/rubrics/root-cause-attribution.md +0 -21
  192. package/src/skills/create-report/workflows/standard.md +0 -175
  193. package/src/skills/decompose-gaps/README.md +0 -39
  194. package/src/skills/decompose-gaps/algorithms/scope-check.md +0 -110
  195. package/src/skills/decompose-gaps/knowledge/scope-validation.md +0 -65
  196. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-1.md +0 -41
  197. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +0 -41
  198. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +0 -56
  199. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/judge.json +0 -164
  200. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-1.md +0 -25
  201. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-2.md +0 -17
  202. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +0 -22
  203. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +0 -25
  204. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-2.md +0 -5
  205. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-3.md +0 -29
  206. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +0 -27
  207. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +0 -35
  208. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +0 -18
  209. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/meta.json +0 -116
  210. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001-scope-exclusion.yaml +0 -46
  211. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-1.md +0 -27
  212. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +0 -30
  213. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +0 -27
  214. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +0 -163
  215. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +0 -0
  216. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +0 -15
  217. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-3.md +0 -7
  218. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-1.md +0 -21
  219. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +0 -38
  220. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +0 -16
  221. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +0 -5
  222. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +0 -10
  223. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +0 -9
  224. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +0 -115
  225. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002-glob-before-write.yaml +0 -36
  226. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-1.md +0 -30
  227. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-2.md +0 -30
  228. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-3.md +0 -30
  229. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/judge.json +0 -165
  230. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-1.md +0 -5
  231. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-2.md +0 -26
  232. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-3.md +0 -5
  233. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-1.md +0 -39
  234. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-2.md +0 -37
  235. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-3.md +0 -45
  236. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-1.md +0 -26
  237. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-2.md +0 -27
  238. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-3.md +0 -7
  239. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/meta.json +0 -117
  240. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003-parent-plan-mandatory.yaml +0 -41
  241. package/src/skills/decompose-gaps/tests/index.yaml +0 -30
  242. package/src/skills/decompose-gaps/tests/rubrics/glob-before-write.md +0 -21
  243. package/src/skills/decompose-gaps/tests/rubrics/parent-plan-mandatory.md +0 -22
  244. package/src/skills/decompose-gaps/tests/rubrics/scope-exclusion.md +0 -21
  245. package/src/skills/decompose-gaps/workflows/decompose.md +0 -123
  246. package/src/skills/decompose-plan/README.md +0 -43
  247. package/src/skills/decompose-plan/algorithms/deduplication.md +0 -101
  248. package/src/skills/decompose-plan/knowledge/atomicity-checklist.md +0 -139
  249. package/src/skills/decompose-plan/knowledge/capabilities.md +0 -68
  250. package/src/skills/decompose-plan/knowledge/human-task-rules.md +0 -82
  251. package/src/skills/decompose-plan/knowledge/scope-guard-checklist.md +0 -73
  252. package/src/skills/decompose-plan/scripts/check-atomicity-limit.js +0 -47
  253. package/src/skills/decompose-plan/scripts/check-duplicates.js +0 -323
  254. package/src/skills/decompose-plan/scripts/verify-atomicity.js +0 -408
  255. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-1.md +0 -30
  256. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-2.md +0 -36
  257. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-3.md +0 -37
  258. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/judge.json +0 -163
  259. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-1.md +0 -20
  260. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-2.md +0 -17
  261. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-3.md +0 -28
  262. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-1.md +0 -114
  263. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-2.md +0 -137
  264. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-3.md +0 -188
  265. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-1.md +0 -0
  266. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-2.md +0 -32
  267. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-3.md +0 -110
  268. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/meta.json +0 -115
  269. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001-atomicity-no-1to1.yaml +0 -56
  270. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-1.md +0 -47
  271. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-2.md +0 -54
  272. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-3.md +0 -43
  273. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/judge.json +0 -163
  274. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-1.md +0 -15
  275. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-2.md +0 -5
  276. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-3.md +0 -12
  277. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-1.md +0 -34
  278. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-2.md +0 -30
  279. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-3.md +0 -35
  280. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-1.md +0 -0
  281. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-2.md +0 -31
  282. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-3.md +0 -0
  283. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/meta.json +0 -115
  284. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002-get-next-id-mandatory.yaml +0 -44
  285. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-1.md +0 -21
  286. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-2.md +0 -38
  287. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-3.md +0 -30
  288. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/judge.json +0 -163
  289. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-1.md +0 -31
  290. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-2.md +0 -35
  291. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-3.md +0 -48
  292. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-1.md +0 -167
  293. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-2.md +0 -62
  294. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-3.md +0 -174
  295. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-1.md +0 -0
  296. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-2.md +0 -0
  297. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-3.md +0 -0
  298. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/meta.json +0 -115
  299. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003-verbatim-dod-transfer.yaml +0 -42
  300. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-1.md +0 -55
  301. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-2.md +0 -49
  302. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-3.md +0 -49
  303. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/judge.json +0 -163
  304. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-1.md +0 -104
  305. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-2.md +0 -45
  306. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-3.md +0 -58
  307. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-1.md +0 -193
  308. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-2.md +0 -202
  309. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-3.md +0 -155
  310. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-1.md +0 -52
  311. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-2.md +0 -17
  312. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-3.md +0 -0
  313. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/meta.json +0 -115
  314. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004-executor-atomicity.yaml +0 -64
  315. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-1.md +0 -59
  316. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-2.md +0 -204
  317. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-3.md +0 -213
  318. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/judge.json +0 -163
  319. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-1.md +0 -0
  320. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-2.md +0 -57
  321. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-3.md +0 -54
  322. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-1.md +0 -147
  323. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-2.md +0 -165
  324. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-3.md +0 -133
  325. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-1.md +0 -81
  326. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-2.md +0 -108
  327. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-3.md +0 -3
  328. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/meta.json +0 -114
  329. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005-capabilities-registry.yaml +0 -78
  330. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-1.md +0 -225
  331. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-2.md +0 -66
  332. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-3.md +0 -36
  333. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/judge.json +0 -163
  334. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-1.md +0 -42
  335. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-2.md +0 -67
  336. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-3.md +0 -40
  337. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-1.md +0 -122
  338. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-2.md +0 -131
  339. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-3.md +0 -138
  340. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-1.md +0 -41
  341. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-2.md +0 -88
  342. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-3.md +0 -0
  343. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/meta.json +0 -115
  344. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006-dod-threshold.yaml +0 -72
  345. package/src/skills/decompose-plan/tests/index.yaml +0 -45
  346. package/src/skills/decompose-plan/tests/rubrics/atomicity-no-1to1.md +0 -21
  347. package/src/skills/decompose-plan/tests/rubrics/capabilities-registry.md +0 -21
  348. package/src/skills/decompose-plan/tests/rubrics/dod-threshold.md +0 -21
  349. package/src/skills/decompose-plan/tests/rubrics/executor-atomicity.md +0 -21
  350. package/src/skills/decompose-plan/tests/rubrics/get-next-id-mandatory.md +0 -21
  351. package/src/skills/decompose-plan/tests/rubrics/verbatim-dod-transfer.md +0 -21
  352. package/src/skills/decompose-plan/workflows/decompose.md +0 -305
  353. package/src/skills/deep-research/README.md +0 -36
  354. package/src/skills/deep-research/algorithms/source-scoring.md +0 -63
  355. package/src/skills/deep-research/algorithms/synthesis.md +0 -67
  356. package/src/skills/deep-research/knowledge/data-validation.md +0 -44
  357. package/src/skills/deep-research/knowledge/perplexity-config.md +0 -30
  358. package/src/skills/deep-research/knowledge/research-methodology.md +0 -54
  359. package/src/skills/deep-research/knowledge/source-evaluation.md +0 -33
  360. package/src/skills/deep-research/scripts/perplexity-research.js +0 -315
  361. package/src/skills/deep-research/templates/brief-summary.md +0 -25
  362. package/src/skills/deep-research/templates/research-report.md +0 -76
  363. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-1.md +0 -48
  364. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-2.md +0 -88
  365. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-3.md +0 -56
  366. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/judge.json +0 -163
  367. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-1.md +0 -58
  368. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-2.md +0 -249
  369. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-3.md +0 -44
  370. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-1.md +0 -96
  371. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-2.md +0 -56
  372. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-3.md +0 -94
  373. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-1.md +0 -11
  374. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-2.md +0 -1
  375. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-3.md +0 -1
  376. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/meta.json +0 -115
  377. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001-self-check-url.yaml +0 -58
  378. package/src/skills/deep-research/tests/index.yaml +0 -20
  379. package/src/skills/deep-research/tests/rubrics/self-check-url.md +0 -34
  380. package/src/skills/deep-research/workflows/base-checklist.md +0 -19
  381. package/src/skills/deep-research/workflows/benchmark.md +0 -38
  382. package/src/skills/deep-research/workflows/competitor.md +0 -44
  383. package/src/skills/deep-research/workflows/custom.md +0 -32
  384. package/src/skills/deep-research/workflows/market.md +0 -44
  385. package/src/skills/deep-research/workflows/technology.md +0 -40
  386. package/src/skills/deep-research/workflows/trend.md +0 -40
  387. package/src/skills/execute-task/README.md +0 -44
  388. package/src/skills/execute-task/algorithms/execution-strategy.md +0 -136
  389. package/src/skills/execute-task/knowledge/context-checkpoints.md +0 -75
  390. package/src/skills/execute-task/knowledge/ticket-structure.md +0 -70
  391. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-1.md +0 -5
  392. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-2.md +0 -5
  393. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-3.md +0 -5
  394. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/judge.json +0 -124
  395. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-1.md +0 -4
  396. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-2.md +0 -4
  397. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-3.md +0 -4
  398. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-1.md +0 -4
  399. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-2.md +0 -4
  400. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-3.md +0 -11
  401. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/meta.json +0 -88
  402. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001-no-ticket-creation.yaml +0 -48
  403. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-1.md +0 -5
  404. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-2.md +0 -6
  405. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-3.md +0 -5
  406. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/judge.json +0 -124
  407. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-1.md +0 -4
  408. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-2.md +0 -4
  409. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-3.md +0 -8
  410. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-1.md +0 -9
  411. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-2.md +0 -26
  412. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-3.md +0 -4
  413. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/meta.json +0 -89
  414. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002-no-duplicate-dod.yaml +0 -44
  415. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-1.md +0 -5
  416. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-2.md +0 -5
  417. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-3.md +0 -5
  418. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/judge.json +0 -46
  419. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/meta.json +0 -37
  420. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003-verification-proportionality.yaml +0 -46
  421. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-1.md +0 -18
  422. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-2.md +0 -16
  423. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-3.md +0 -14
  424. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/judge.json +0 -124
  425. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-1.md +0 -5
  426. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-2.md +0 -5
  427. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-3.md +0 -1
  428. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-1.md +0 -8
  429. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-2.md +0 -5
  430. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-3.md +0 -4
  431. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/meta.json +0 -89
  432. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004-no-foreign-ticket-edit.yaml +0 -50
  433. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-1.md +0 -5
  434. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-2.md +0 -5
  435. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-3.md +0 -5
  436. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/judge.json +0 -124
  437. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-1.md +0 -15
  438. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-2.md +0 -4
  439. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-3.md +0 -5
  440. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-1.md +0 -11
  441. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-2.md +0 -11
  442. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-3.md +0 -4
  443. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/meta.json +0 -88
  444. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005-ticket-fields-updated.yaml +0 -39
  445. package/src/skills/execute-task/tests/fixtures/IMPL-902-create-file.md +0 -41
  446. package/src/skills/execute-task/tests/fixtures/IMPL-904-current-task.md +0 -40
  447. package/src/skills/execute-task/tests/fixtures/IMPL-906-fill-ticket.md +0 -42
  448. package/src/skills/execute-task/tests/fixtures/QA-901-button-click.md +0 -41
  449. package/src/skills/execute-task/tests/fixtures/QA-903-visual-figma.md +0 -40
  450. package/src/skills/execute-task/tests/fixtures/TASK-905-done-with-typo.md +0 -36
  451. package/src/skills/execute-task/tests/index.yaml +0 -39
  452. package/src/skills/execute-task/tests/rubrics/no-duplicate-dod.md +0 -22
  453. package/src/skills/execute-task/tests/rubrics/no-foreign-ticket-edit.md +0 -20
  454. package/src/skills/execute-task/tests/rubrics/no-ticket-creation.md +0 -21
  455. package/src/skills/execute-task/tests/rubrics/ticket-fields-updated.md +0 -23
  456. package/src/skills/execute-task/tests/rubrics/verification-proportionality.md +0 -22
  457. package/src/skills/execute-task/workflows/execute.md +0 -104
  458. package/src/skills/manual-testing/README.md +0 -63
  459. package/src/skills/manual-testing/algorithms/blocked-tool-strategy.md +0 -74
  460. package/src/skills/manual-testing/algorithms/bug-severity.md +0 -73
  461. package/src/skills/manual-testing/algorithms/mcp-budget.md +0 -97
  462. package/src/skills/manual-testing/algorithms/test-prioritization.md +0 -69
  463. package/src/skills/manual-testing/knowledge/browser-extension-testing.md +0 -102
  464. package/src/skills/manual-testing/knowledge/browser-tools.md +0 -114
  465. package/src/skills/manual-testing/knowledge/desktop-tools-advanced.md +0 -92
  466. package/src/skills/manual-testing/knowledge/desktop-tools-core.md +0 -76
  467. package/src/skills/manual-testing/knowledge/sandbox-advanced.md +0 -83
  468. package/src/skills/manual-testing/knowledge/sandbox-core.md +0 -67
  469. package/src/skills/manual-testing/knowledge/stateful-edge-cases.md +0 -69
  470. package/src/skills/manual-testing/knowledge/test-case-design.md +0 -107
  471. package/src/skills/manual-testing/knowledge/testing-types.md +0 -45
  472. package/src/skills/manual-testing/templates/bug-report.md +0 -52
  473. package/src/skills/manual-testing/templates/test-case.md +0 -34
  474. package/src/skills/manual-testing/templates/test-plan.md +0 -97
  475. package/src/skills/manual-testing/templates/test-session-report.md +0 -56
  476. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-1.md +0 -34
  477. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +0 -32
  478. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +0 -30
  479. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/judge.json +0 -163
  480. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-1.md +0 -0
  481. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-2.md +0 -7
  482. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-3.md +0 -0
  483. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-1.md +0 -4
  484. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-2.md +0 -15
  485. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-3.md +0 -8
  486. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-1.md +0 -5
  487. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-2.md +0 -7
  488. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-3.md +0 -7
  489. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/meta.json +0 -114
  490. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001-sandbox-mandatory.yaml +0 -38
  491. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md +0 -44
  492. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +0 -32
  493. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +0 -47
  494. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/judge.json +0 -163
  495. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-1.md +0 -19
  496. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-2.md +0 -15
  497. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-3.md +0 -24
  498. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-1.md +0 -19
  499. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-2.md +0 -13
  500. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-3.md +0 -18
  501. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-1.md +0 -21
  502. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-2.md +0 -15
  503. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-3.md +0 -14
  504. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/meta.json +0 -114
  505. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002-visual-tc-screenshot.yaml +0 -37
  506. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-1.md +0 -76
  507. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-2.md +0 -71
  508. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-3.md +0 -85
  509. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/judge.json +0 -46
  510. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/meta.json +0 -36
  511. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003-qa-non-ui-assertion.yaml +0 -65
  512. package/src/skills/manual-testing/tests/index.yaml +0 -30
  513. package/src/skills/manual-testing/tests/last-run-tc001-sonnet.log +0 -140
  514. package/src/skills/manual-testing/tests/last-run-tc002.log +0 -1
  515. package/src/skills/manual-testing/tests/last-run.log +0 -1469
  516. package/src/skills/manual-testing/tests/rubrics/qa-non-ui-assertion.md +0 -31
  517. package/src/skills/manual-testing/tests/rubrics/sandbox-mandatory.md +0 -20
  518. package/src/skills/manual-testing/tests/rubrics/visual-tc-screenshot.md +0 -21
  519. package/src/skills/manual-testing/workflows/acceptance.md +0 -80
  520. package/src/skills/manual-testing/workflows/exploratory.md +0 -84
  521. package/src/skills/manual-testing/workflows/regression.md +0 -76
  522. package/src/skills/manual-testing/workflows/smoke.md +0 -109
  523. package/src/skills/manual-testing/workflows/test-plan.md +0 -75
  524. package/src/skills/review-result/README.md +0 -59
  525. package/src/skills/review-result/algorithms/verification.md +0 -112
  526. package/src/skills/review-result/knowledge/baseline-snapshot-validation.md +0 -67
  527. package/src/skills/review-result/knowledge/dod-patterns.md +0 -116
  528. package/src/skills/review-result/knowledge/test-hygiene.md +0 -44
  529. package/src/skills/review-result/scripts/verify-artifacts.js +0 -497
  530. package/src/skills/review-result/templates/verdict.md +0 -153
  531. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-1.md +0 -22
  532. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-2.md +0 -7
  533. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-3.md +0 -21
  534. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-1.md +0 -6
  535. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-2.md +0 -6
  536. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-3.md +0 -6
  537. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/judge.json +0 -164
  538. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-1.md +0 -5
  539. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-2.md +0 -7
  540. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-3.md +0 -6
  541. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-1.md +0 -49
  542. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-2.md +0 -28
  543. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-3.md +0 -37
  544. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-1.md +0 -22
  545. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-2.md +0 -13
  546. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-3.md +0 -21
  547. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/meta.json +0 -116
  548. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001-visual-tc-trigger.yaml +0 -51
  549. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-1.md +0 -23
  550. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-2.md +0 -22
  551. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-3.md +0 -28
  552. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-1.md +0 -4
  553. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-2.md +0 -4
  554. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-3.md +0 -4
  555. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/judge.json +0 -163
  556. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-1.md +0 -4
  557. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-2.md +0 -0
  558. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-3.md +0 -4
  559. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-1.md +0 -39
  560. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-2.md +0 -25
  561. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-3.md +0 -32
  562. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-1.md +0 -34
  563. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-2.md +0 -8
  564. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-3.md +0 -23
  565. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/meta.json +0 -115
  566. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002-path-line-suffix.yaml +0 -39
  567. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-1.md +0 -40
  568. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-2.md +0 -15
  569. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-3.md +0 -7
  570. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/judge.json +0 -163
  571. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-1.md +0 -5
  572. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-2.md +0 -5
  573. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-3.md +0 -11
  574. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-1.md +0 -16
  575. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-2.md +0 -18
  576. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-3.md +0 -17
  577. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-1.md +0 -17
  578. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-2.md +0 -31
  579. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-3.md +0 -5
  580. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/meta.json +0 -115
  581. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003-test-isolation.yaml +0 -50
  582. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/claude-sonnet/trial-1.md +0 -5
  583. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/claude-sonnet/trial-2.md +0 -5
  584. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/claude-sonnet/trial-3.md +0 -6
  585. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/judge.json +0 -46
  586. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004/current/meta.json +0 -37
  587. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-004-baseline-snapshot.yaml +0 -50
  588. package/src/skills/review-result/tests/fixtures/IMPL-902-path-with-line.md +0 -43
  589. package/src/skills/review-result/tests/fixtures/QA-901-visual-button.md +0 -46
  590. package/src/skills/review-result/tests/fixtures/QA-904-test-isolation-violation/QA-904.md +0 -51
  591. package/src/skills/review-result/tests/fixtures/QA-904-test-isolation-violation/example-test.mjs +0 -36
  592. package/src/skills/review-result/tests/fixtures/QA-905-baseline-regex-instead-of-snapshot/QA-905.md +0 -62
  593. package/src/skills/review-result/tests/fixtures/QA-905-baseline-regex-instead-of-snapshot/baseline.test.mjs +0 -124
  594. package/src/skills/review-result/tests/index.yaml +0 -35
  595. package/src/skills/review-result/tests/rubrics/baseline-snapshot.md +0 -20
  596. package/src/skills/review-result/tests/rubrics/path-line-suffix.md +0 -19
  597. package/src/skills/review-result/tests/rubrics/test-isolation.md +0 -20
  598. package/src/skills/review-result/tests/rubrics/visual-tc-trigger.md +0 -19
  599. package/src/skills/review-result/workflows/review.md +0 -209
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * mark-blocked.js - Скрипт для обновления frontmatter тикета и записи в alerts.jsonl
5
+ *
6
+ * Использование:
7
+ * node mark-blocked.js <ticket_id> --attempts=N --reason=<str>
8
+ *
9
+ * Примеры:
10
+ * node mark-blocked.js IMPL-59 --attempts=6 --reason=max_review_attempts
11
+ * node mark-blocked.js QA-40 --attempts=3 --reason=human_gate_rejected
12
+ */
13
+
14
+ import fs from "fs";
15
+ import path from "path";
16
+ import YAML from "workflow-ai/lib/js-yaml.mjs";
17
+ import { findProjectRoot } from "workflow-ai/lib/find-root.mjs";
18
+ import {
19
+ parseFrontmatter,
20
+ printResult,
21
+ serializeFrontmatter,
22
+ } from "workflow-ai/lib/utils.mjs";
23
+
24
+ // Корень проекта
25
+ const PROJECT_DIR = findProjectRoot();
26
+ // Базовая директория workflow
27
+ const WORKFLOW_DIR = path.join(PROJECT_DIR, ".workflow");
28
+ const TICKETS_DIR = path.join(WORKFLOW_DIR, "tickets");
29
+ // Директория state
30
+ const STATE_DIR = path.join(PROJECT_DIR, ".workflow", "state");
31
+ const ALERTS_FILE = path.join(STATE_DIR, "alerts.jsonl");
32
+
33
+ // Парсинг аргументов
34
+ const args = process.argv.slice(2);
35
+ if (args.length < 3) {
36
+ console.error("Ошибка: недостаточно аргументов");
37
+ console.error("Использование: node mark-blocked.js <ticket_id> --attempts=N --reason=<str>");
38
+ process.exit(1);
39
+ }
40
+
41
+ const ticketId = args[0];
42
+ let attempts = null;
43
+ let reason = null;
44
+
45
+ // Парсинг флагов
46
+ for (let i = 1; i < args.length; i++) {
47
+ const arg = args[i];
48
+ if (arg.startsWith("--attempts=")) {
49
+ attempts = parseInt(arg.substring("--attempts=".length), 10);
50
+ if (isNaN(attempts)) {
51
+ console.error("Ошибка: некорректный формат --attempts");
52
+ process.exit(1);
53
+ }
54
+ } else if (arg.startsWith("--reason=")) {
55
+ reason = arg.substring("--reason=".length);
56
+ }
57
+ }
58
+
59
+ // Проверка обязательного параметра reason
60
+ if (!reason) {
61
+ console.error("Ошибка: параметр --reason обязателен");
62
+ process.exit(1);
63
+ }
64
+
65
+ // Поиск файла тикета рекурсивно
66
+ function findTicketFile(ticketId, searchDir) {
67
+ try {
68
+ const files = fs.readdirSync(searchDir, { withFileTypes: true });
69
+
70
+ for (const file of files) {
71
+ const fullPath = path.join(searchDir, file.name);
72
+
73
+ if (file.isDirectory()) {
74
+ // Рекурсивный поиск в поддиректориях
75
+ const found = findTicketFile(ticketId, fullPath);
76
+ if (found) return found;
77
+ } else if (file.isFile() && file.name.endsWith('.md') && file.name.startsWith(ticketId)) {
78
+ return fullPath;
79
+ }
80
+ }
81
+ } catch (error) {
82
+ console.error(`Ошибка при чтении директории ${searchDir}:`, error.message);
83
+ }
84
+
85
+ return null;
86
+ }
87
+
88
+ // Основная функция
89
+ function main() {
90
+ try {
91
+ // Поиск файла тикета
92
+ const ticketFile = findTicketFile(ticketId, TICKETS_DIR);
93
+ if (!ticketFile) {
94
+ console.error(`Ошибка: тикет ${ticketId} не найден в ${TICKETS_DIR}`);
95
+ process.exit(1);
96
+ }
97
+
98
+ // Чтение файла тикета
99
+ const content = fs.readFileSync(ticketFile, 'utf8');
100
+ const { frontmatter, body } = parseFrontmatter(content);
101
+
102
+ // Обновление frontmatter
103
+ const now = new Date().toISOString();
104
+ frontmatter.auto_blocked_reason = reason;
105
+ frontmatter.auto_blocked_attempts = attempts;
106
+ frontmatter.auto_blocked_at = now;
107
+
108
+ // Сериализация и запись обратно в файл
109
+ const newContent = serializeFrontmatter(frontmatter) + body;
110
+ fs.writeFileSync(ticketFile, newContent, 'utf8');
111
+
112
+ console.log(`✅ Frontmatter тикета ${ticketId} обновлен`);
113
+
114
+ // Попытка записи в alerts.jsonl
115
+ try {
116
+ // Создание директории state если не существует
117
+ if (!fs.existsSync(STATE_DIR)) {
118
+ fs.mkdirSync(STATE_DIR, { recursive: true });
119
+ console.log(`✅ Директория ${STATE_DIR} создана`);
120
+ }
121
+
122
+ // Формирование JSONL записи
123
+ const alertEntry = {
124
+ timestamp: now,
125
+ severity: "warning",
126
+ kind: "ticket_auto_blocked",
127
+ project: path.basename(PROJECT_DIR),
128
+ ticket_id: ticketId,
129
+ attempts: attempts,
130
+ reason: reason,
131
+ stage: "review-result"
132
+ };
133
+
134
+ // Append-only запись в alerts.jsonl
135
+ fs.appendFileSync(ALERTS_FILE, JSON.stringify(alertEntry) + '\n', 'utf8');
136
+ console.log(`✅ Запись добавлена в ${ALERTS_FILE}`);
137
+
138
+ } catch (alertError) {
139
+ console.warn(`⚠️ Предупреждение: не удалось записать в alerts.jsonl: ${alertError.message}`);
140
+ console.log(`ℹ️ Frontmatter обновлен, запись в alerts пропущена`);
141
+ }
142
+
143
+ // Вывод результата
144
+ printResult({
145
+ ticket_id: ticketId,
146
+ reason: reason,
147
+ attempts: attempts,
148
+ blocked_at: now,
149
+ alerts_file: ALERTS_FILE,
150
+ status: "completed"
151
+ });
152
+
153
+ } catch (error) {
154
+ console.error(`Ошибка: ${error.message}`);
155
+ process.exit(1);
156
+ }
157
+ }
158
+
159
+ // Запуск скрипта
160
+ main();
@@ -1,103 +1,325 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * move-ticket.js - Тонкая прослойка: парсинг argv вызов operation → печать RESULT
4
+ * move-ticket.js - Скрипт для перемещения тикетов между директориями канбан-доски
5
5
  *
6
- * Контракт:
7
- * 1. Прямой режим: node move-ticket.js <id> <target>
8
- * 2. Runner-режим: node move-ticket.js "<prompt-block>" (с regex ticket_id: и target:)
6
+ * Использование:
7
+ * node move-ticket.js <ticket_id> <target>
9
8
  *
10
- * RESULT format (success):
11
- * status: moved
12
- * ticket_id: <id>
13
- * from: <source-status>
14
- * to: <target-status>
15
- *
16
- * RESULT format (error):
17
- * status: error
18
- * ticket_id: <id> (если удалось распарсить)
19
- * from: <source-or-empty> (если есть)
20
- * to: <target> (если есть)
21
- * error: <message>
9
+ * Пример:
10
+ * node move-ticket.js IMPL-001 in-progress
22
11
  */
23
12
 
13
+ import fs from "fs";
14
+ import path from "path";
15
+ import { fileURLToPath } from "url";
16
+ import YAML from "workflow-ai/lib/js-yaml.mjs";
24
17
  import { findProjectRoot } from "workflow-ai/lib/find-root.mjs";
25
- import { moveTicket } from "../lib/operations/tickets.mjs";
26
- import { printResult } from "workflow-ai/lib/utils.mjs";
27
-
28
- // Main entry point
29
- const rawArgs = process.argv.slice(2);
30
- let ticketId, target;
31
-
32
- if (rawArgs.length >= 2) {
33
- // Прямой вызов: node move-ticket.js IMPL-001 in-progress
34
- ticketId = rawArgs[0];
35
- target = rawArgs[1];
36
- } else if (rawArgs.length === 1) {
37
- // Runner-режим: один аргумент — многострочный текст с ticket_id: и target:
38
- const prompt = rawArgs[0];
39
- const ticketMatch = prompt.match(/ticket_id:\s*(\S+)/);
40
- const targetMatch = prompt.match(/target:\s*(\S+)/);
41
- ticketId = ticketMatch?.[1];
42
- target = targetMatch?.[1];
43
- if (!ticketId || !target) {
44
- printResult({
45
- status: "error",
46
- ticket_id: ticketId || "",
47
- from: "",
48
- to: target || "",
49
- error: "Missing ticket_id or target",
50
- });
51
- process.exit(1);
18
+ import {
19
+ parseFrontmatter,
20
+ printResult,
21
+ serializeFrontmatter,
22
+ getLastReviewStatus,
23
+ } from "workflow-ai/lib/utils.mjs";
24
+
25
+ const logger = {
26
+ info: (msg) => console.error(`[INFO] ${msg}`),
27
+ warn: (msg) => console.error(`[WARN] ${msg}`),
28
+ };
29
+
30
+ // Корень проекта
31
+ const PROJECT_DIR = findProjectRoot();
32
+ // Базовая директория workflow
33
+ const WORKFLOW_DIR = path.join(PROJECT_DIR, ".workflow");
34
+ const TICKETS_DIR = path.join(WORKFLOW_DIR, "tickets");
35
+
36
+ // Доступные статусы
37
+ const VALID_STATUSES = [
38
+ "backlog",
39
+ "ready",
40
+ "in-progress",
41
+ "blocked",
42
+ "review",
43
+ "done",
44
+ "archive",
45
+ ];
46
+
47
+ // Таблица допустимых переходов
48
+ const VALID_TRANSITIONS = {
49
+ backlog: ["ready", "blocked", "done"],
50
+ ready: ["in-progress", "review", "backlog"],
51
+ "in-progress": ["done", "blocked", "review"],
52
+ blocked: ["ready"],
53
+ review: ["done", "ready", "in-progress", "blocked"],
54
+ done: ["ready", "blocked", "archive"],
55
+ archive: ["backlog"],
56
+ };
57
+
58
+ /**
59
+ * Определяет текущий статус тикета по расположению файла
60
+ */
61
+ function getStatusFromPath(filePath) {
62
+ const fileName = path.basename(filePath);
63
+ for (const status of VALID_STATUSES) {
64
+ const statusDir = path.join(TICKETS_DIR, status);
65
+ const expectedPath = path.join(statusDir, fileName);
66
+ if (filePath === expectedPath) {
67
+ return status;
68
+ }
52
69
  }
53
- } else {
54
- printResult({
55
- status: "error",
56
- error: "Missing arguments",
57
- });
58
- process.exit(1);
70
+ return null;
59
71
  }
60
72
 
61
- async function main() {
73
+ /**
74
+ * Проверяет допустимость перехода
75
+ */
76
+ function isValidTransition(from, to) {
77
+ if (!VALID_STATUSES.includes(from)) {
78
+ return { valid: false, error: `Неверный исходный статус: ${from}` };
79
+ }
80
+ if (!VALID_STATUSES.includes(to)) {
81
+ return {
82
+ valid: false,
83
+ error: `Неверный целевой статус: ${to}. Доступные: ${VALID_STATUSES.join(", ")}`,
84
+ };
85
+ }
86
+
87
+ const allowedTransitions = VALID_TRANSITIONS[from] || [];
88
+ if (!allowedTransitions.includes(to)) {
89
+ return {
90
+ valid: false,
91
+ error: `Переход из ${from} в ${to} недопустим. Доступные переходы: ${allowedTransitions.join(", ") || "нет"}`,
92
+ };
93
+ }
94
+
95
+ return { valid: true };
96
+ }
97
+
98
+ /**
99
+ * Hook для обновления approval-файлов при перемещении тикета
100
+ * @param {string} ticketId - ID тикета
101
+ * @param {string} target - целевой статус
102
+ * @param {object} fsModule - модуль fs (для mock в тестах)
103
+ * @param {string} workflowDir - директория .workflow
104
+ */
105
+ function updateApprovalFilesHook(ticketId, target, fsModule = fs, workflowDir = WORKFLOW_DIR) {
62
106
  try {
63
- const projectRoot = findProjectRoot();
64
- const result = await moveTicket(projectRoot, ticketId, target);
65
- printResult({
66
- status: "moved",
67
- ticket_id: ticketId,
68
- from: result.from,
69
- to: result.to,
70
- });
107
+ const approvalsDir = path.join(workflowDir, "approvals");
108
+ if (fsModule.existsSync(approvalsDir)) {
109
+ const files = fsModule.readdirSync(approvalsDir);
110
+ const escapedTicketId = ticketId.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
111
+ const pattern = new RegExp(`^${escapedTicketId}_manual-gate-.*_\\d+\\.json$`);
112
+ for (const file of files) {
113
+ if (!pattern.test(file)) continue;
114
+ const filePath = path.join(approvalsDir, file);
115
+ try {
116
+ const data = JSON.parse(fsModule.readFileSync(filePath, "utf8"));
117
+ if (data.status === "pending") {
118
+ data.status = "approved";
119
+ data.decided_by = "move-ticket";
120
+ data.comment = `auto-approved on move to ${target}`;
121
+ data.updated_at = new Date().toISOString();
122
+ fsModule.writeFileSync(filePath, JSON.stringify(data, null, 2), "utf8");
123
+ logger.info(`Approval file ${file} auto-approved on move to ${target}`);
124
+ }
125
+ } catch (err) {
126
+ logger.warn(`Corrupt approval file ${file}: ${err.message}`);
127
+ // продолжаем, не падаем
128
+ }
129
+ }
130
+ }
71
131
  } catch (err) {
72
- // moveTicket throws { code: 'INVALID_TRANSITION', from, to, id } для ошибок валидации
73
- if (err.code === "INVALID_TRANSITION") {
74
- const fromDisplay = err.from || "";
75
- const errorMsg =
76
- !err.from || err.from === null
77
- ? `Тикет ${ticketId} не найден ни в одной из директорий`
78
- : `Недопустимый переход: ${err.from} ${err.to}`;
79
- printResult({
80
- status: "error",
81
- ticket_id: ticketId,
82
- from: fromDisplay,
83
- to: err.to,
84
- error: errorMsg,
85
- });
86
- } else if (err.message) {
87
- printResult({
88
- status: "error",
89
- ticket_id: ticketId,
90
- error: err.message,
91
- });
92
- } else {
132
+ // Ошибка hook'а не должна фейлить само перемещение
133
+ logger.warn(`Approval hook error: ${err.message}`);
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Основная функция перемещения тикета
139
+ */
140
+ async function moveTicket(ticketId, target) {
141
+ // Поиск файла тикета во всех директориях
142
+ let sourceDir = null;
143
+ let currentStatus = null;
144
+
145
+ for (const status of VALID_STATUSES) {
146
+ const statusDir = path.join(TICKETS_DIR, status);
147
+ const ticketPath = path.join(statusDir, `${ticketId}.md`);
148
+ if (fs.existsSync(ticketPath)) {
149
+ sourceDir = statusDir;
150
+ currentStatus = status;
151
+ break;
152
+ }
153
+ }
154
+
155
+ if (!sourceDir) {
156
+ return {
157
+ status: "error",
158
+ ticket_id: ticketId,
159
+ error: `Тикет ${ticketId} не найден ни в одной из директорий`,
160
+ };
161
+ }
162
+
163
+ // Проверка допустимости перехода
164
+ const transitionCheck = isValidTransition(currentStatus, target);
165
+ if (!transitionCheck.valid) {
166
+ return {
167
+ status: "error",
168
+ ticket_id: ticketId,
169
+ from: currentStatus,
170
+ to: target,
171
+ error: transitionCheck.error,
172
+ };
173
+ }
174
+
175
+ const sourcePath = path.join(sourceDir, `${ticketId}.md`);
176
+ const targetDir = path.join(TICKETS_DIR, target);
177
+ const targetPath = path.join(targetDir, `${ticketId}.md`);
178
+
179
+ // Чтение файла тикета
180
+ let content;
181
+ try {
182
+ content = fs.readFileSync(sourcePath, "utf8");
183
+ } catch (e) {
184
+ return {
185
+ status: "error",
186
+ ticket_id: ticketId,
187
+ error: `Не удалось прочитать файл: ${e.message}`,
188
+ };
189
+ }
190
+
191
+ // Парсинг frontmatter
192
+ let frontmatter, body;
193
+ try {
194
+ ({ frontmatter, body } = parseFrontmatter(content));
195
+ } catch (e) {
196
+ return {
197
+ status: "error",
198
+ ticket_id: ticketId,
199
+ error: e.message,
200
+ };
201
+ }
202
+
203
+ // Обновление frontmatter
204
+ const now = new Date().toISOString();
205
+ frontmatter.updated_at = now;
206
+
207
+ // Если переход в done, добавляем completed_at
208
+ if (target === "done" && currentStatus !== "done") {
209
+ frontmatter.completed_at = now;
210
+ }
211
+
212
+ // Fallback: если тикет идёт в done из review, но агент не записал секцию "## Ревью" — дописываем
213
+ if (
214
+ target === "done" &&
215
+ currentStatus === "review" &&
216
+ getLastReviewStatus(content) === null
217
+ ) {
218
+ const date = now.slice(0, 16).replace("T", " ");
219
+ const reviewSection = `\n## Ревью\n\n| Дата | Статус | Самари |\n|------|--------|--------|\n| ${date} | ✅ passed | Pipeline fallback: агент не записал секцию ревью |\n`;
220
+ body = body.trimEnd() + "\n" + reviewSection;
221
+ }
222
+
223
+ // Если переход из blocked, удаляем blocked_reason
224
+ if (currentStatus === "blocked" && frontmatter.blocked_reason) {
225
+ delete frontmatter.blocked_reason;
226
+ }
227
+
228
+ // Сериализация нового контента
229
+ const newContent = serializeFrontmatter(frontmatter) + body;
230
+
231
+ // Создание целевой директории если не существует
232
+ if (!fs.existsSync(targetDir)) {
233
+ fs.mkdirSync(targetDir, { recursive: true });
234
+ }
235
+
236
+ // Перемещение файла
237
+ try {
238
+ fs.renameSync(sourcePath, targetPath);
239
+ } catch (e) {
240
+ return {
241
+ status: "error",
242
+ ticket_id: ticketId,
243
+ error: `Не удалось переместить файл: ${e.message}`,
244
+ };
245
+ }
246
+
247
+ // Запись обновлённого контента
248
+ try {
249
+ fs.writeFileSync(targetPath, newContent, "utf8");
250
+ } catch (e) {
251
+ return {
252
+ status: "error",
253
+ ticket_id: ticketId,
254
+ error: `Не удалось записать файл: ${e.message}`,
255
+ };
256
+ }
257
+
258
+ // Hook: обновление approval-файлов (если есть) — срабатывает на любой move
259
+ updateApprovalFilesHook(ticketId, target);
260
+
261
+ return {
262
+ status: "moved",
263
+ ticket_id: ticketId,
264
+ from: currentStatus,
265
+ to: target,
266
+ };
267
+ }
268
+
269
+ // Export for testing
270
+ export { moveTicket, updateApprovalFilesHook };
271
+
272
+ // Main entry point — guard prevents execution when imported as module in tests.
273
+ // Используем fs.realpathSync чтобы корректно сравнивать пути на Windows когда .workflow/src/scripts/ — junction.
274
+ // Без realpathSync argv[1] = путь через junction, а import.meta.url = разрешённый target — строки не совпадают.
275
+ function __isMainModule() {
276
+ try {
277
+ const argvPath = fs.realpathSync(path.resolve(process.argv[1] || ""));
278
+ const metaPath = fileURLToPath(import.meta.url);
279
+ return argvPath === metaPath;
280
+ } catch {
281
+ return false;
282
+ }
283
+ }
284
+
285
+ if (__isMainModule()) {
286
+ const rawArgs = process.argv.slice(2);
287
+ let ticketId, target;
288
+
289
+ if (rawArgs.length >= 2) {
290
+ // Прямой вызов: node move-ticket.js IMPL-001 in-progress
291
+ ticketId = rawArgs[0];
292
+ target = rawArgs[1];
293
+ } else if (rawArgs.length === 1) {
294
+ // Вызов через pipeline runner: один аргумент — промпт с контекстом
295
+ // Формат: "skill-name\n\nContext:\n ticket_id: X\n target: Y\n..."
296
+ const prompt = rawArgs[0];
297
+ const ticketMatch = prompt.match(/ticket_id:\s*(\S+)/);
298
+ const targetMatch = prompt.match(/target:\s*(\S+)/);
299
+ ticketId = ticketMatch?.[1];
300
+ target = targetMatch?.[1];
301
+ if (!ticketId || !target) {
302
+ console.error(
303
+ "[ERROR] Cannot parse ticket_id or target from pipeline context",
304
+ );
93
305
  printResult({
94
306
  status: "error",
95
- ticket_id: ticketId,
96
- error: err.toString(),
307
+ error: "Missing ticket_id or target in pipeline context",
97
308
  });
309
+ process.exit(1);
98
310
  }
311
+ } else {
312
+ console.error("Usage: node move-ticket.js <ticket_id> <target>");
313
+ console.error("Example: node move-ticket.js IMPL-001 in-progress");
314
+ console.error("Available targets:", VALID_STATUSES.join(", "));
315
+ printResult({ status: "error", error: "Missing arguments" });
99
316
  process.exit(1);
100
317
  }
101
- }
102
318
 
103
- main();
319
+ moveTicket(ticketId, target).then((result) => {
320
+ printResult(result);
321
+ if (result.status === "error") {
322
+ process.exit(1);
323
+ }
324
+ });
325
+ }