workflow-ai 1.0.68 → 1.2.1

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 (585) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +105 -7
  3. package/configs/pipeline.yaml +23 -2
  4. package/package.json +44 -41
  5. package/src/lib/operations/plans.mjs +85 -0
  6. package/src/lib/operations/skills.mjs +124 -0
  7. package/src/lib/operations/tickets.mjs +430 -0
  8. package/src/lib/utils.mjs +286 -286
  9. package/src/runner.mjs +314 -34
  10. package/src/scripts/check-conditions.js +2 -2
  11. package/src/scripts/get-next-id.js +8 -31
  12. package/src/scripts/pick-next-task.js +3 -9
  13. package/src/skills/coach/SKILL.md +1 -1
  14. package/src/skills/manual-testing/SKILL.md +2 -0
  15. package/src/skills/review-result/SKILL.md +1 -0
  16. package/src/scripts/tests/timeout-cascade.test.js +0 -28
  17. package/src/skills/analyze-report/README.md +0 -44
  18. package/src/skills/analyze-report/algorithms/progress-assessment.md +0 -108
  19. package/src/skills/analyze-report/knowledge/analysis-frameworks.md +0 -66
  20. package/src/skills/analyze-report/knowledge/report-structure.md +0 -61
  21. package/src/skills/analyze-report/scripts/calc-plan-metrics.js +0 -234
  22. package/src/skills/analyze-report/templates/analysis-report.md +0 -80
  23. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-1.md +0 -69
  24. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-2.md +0 -103
  25. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-3.md +0 -99
  26. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/judge.json +0 -163
  27. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-1.md +0 -89
  28. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-2.md +0 -88
  29. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-3.md +0 -100
  30. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-1.md +0 -77
  31. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-2.md +0 -64
  32. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-3.md +0 -110
  33. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-1.md +0 -74
  34. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-2.md +0 -38
  35. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-3.md +0 -61
  36. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/meta.json +0 -115
  37. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001-evidence-from-log.yaml +0 -60
  38. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-1.md +0 -90
  39. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-2.md +0 -89
  40. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-3.md +0 -77
  41. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/judge.json +0 -163
  42. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-1.md +0 -84
  43. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-2.md +0 -77
  44. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-3.md +0 -89
  45. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-1.md +0 -103
  46. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-2.md +0 -103
  47. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-3.md +0 -103
  48. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-1.md +0 -93
  49. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-2.md +0 -93
  50. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-3.md +0 -86
  51. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/meta.json +0 -115
  52. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002-result-block-format.yaml +0 -44
  53. package/src/skills/analyze-report/tests/fixtures/REPORT-002-incorrect-attribution.md +0 -27
  54. package/src/skills/analyze-report/tests/fixtures/pipeline-2026-04-06_qa-001-skip.log +0 -32
  55. package/src/skills/analyze-report/tests/index.yaml +0 -25
  56. package/src/skills/analyze-report/tests/rubrics/evidence-from-log.md +0 -22
  57. package/src/skills/analyze-report/tests/rubrics/result-block-format.md +0 -22
  58. package/src/skills/analyze-report/workflows/progress.md +0 -158
  59. package/src/skills/analyze-report/workflows/retrospective.md +0 -143
  60. package/src/skills/coach/README.md +0 -43
  61. package/src/skills/coach/SKILL.md.legacy +0 -157
  62. package/src/skills/coach/algorithms/gap-analysis.md +0 -69
  63. package/src/skills/coach/algorithms/improvement-prioritization.md +0 -62
  64. package/src/skills/coach/algorithms/skill-scoring.md +0 -80
  65. package/src/skills/coach/knowledge/audit-applied-changes-clean.txt +0 -11
  66. package/src/skills/coach/knowledge/backlog-management.md +0 -67
  67. package/src/skills/coach/knowledge/backlog-management.md.legacy +0 -90
  68. package/src/skills/coach/knowledge/common-antipatterns.md +0 -76
  69. package/src/skills/coach/knowledge/prompt-engineering.md +0 -45
  70. package/src/skills/coach/knowledge/shared-knowledge-guide.md +0 -44
  71. package/src/skills/coach/knowledge/skill-anatomy.md +0 -49
  72. package/src/skills/coach/knowledge/test-authorship.md +0 -141
  73. package/src/skills/coach/templates/audit-report.md +0 -39
  74. package/src/skills/coach/templates/coach-backlog-init.yaml +0 -14
  75. package/src/skills/coach/templates/coach-backlog-init.yaml.legacy +0 -10
  76. package/src/skills/coach/templates/improvement-plan.md +0 -42
  77. package/src/skills/coach/templates/new-skill.md +0 -95
  78. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-1.md +0 -58
  79. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-2.md +0 -65
  80. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-3.md +0 -58
  81. package/src/skills/coach/tests/cases/TC-COACH-001/current/judge.json +0 -151
  82. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-1.md +0 -46
  83. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-2.md +0 -0
  84. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-3.md +0 -75
  85. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-1.md +0 -81
  86. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-2.md +0 -101
  87. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-3.md +0 -91
  88. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-1.md +0 -48
  89. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-2.md +0 -30
  90. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-3.md +0 -55
  91. package/src/skills/coach/tests/cases/TC-COACH-001/current/meta.json +0 -94
  92. package/src/skills/coach/tests/cases/TC-COACH-001-evidence-based-temporal-diagram.yaml +0 -53
  93. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-1.md +0 -46
  94. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-2.md +0 -50
  95. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-3.md +0 -48
  96. package/src/skills/coach/tests/cases/TC-COACH-002/current/judge.json +0 -151
  97. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-1.md +0 -0
  98. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-2.md +0 -37
  99. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-3.md +0 -30
  100. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-1.md +0 -23
  101. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-2.md +0 -29
  102. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-3.md +0 -35
  103. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-1.md +0 -13
  104. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-2.md +0 -19
  105. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-3.md +0 -33
  106. package/src/skills/coach/tests/cases/TC-COACH-002/current/meta.json +0 -94
  107. package/src/skills/coach/tests/cases/TC-COACH-002-root-cause-first.yaml +0 -57
  108. package/src/skills/coach/tests/fixtures/pipeline-2026-04-06_id-collision.log +0 -77
  109. package/src/skills/coach/tests/index.yaml +0 -29
  110. package/src/skills/coach/tests/rubrics/calibration/evidence-based-bad.md +0 -13
  111. package/src/skills/coach/tests/rubrics/calibration/evidence-based-good.md +0 -29
  112. package/src/skills/coach/tests/rubrics/evidence-based.md +0 -26
  113. package/src/skills/coach/tests/rubrics/root-cause-first.md +0 -21
  114. package/src/skills/coach/workflows/analyze.md +0 -79
  115. package/src/skills/coach/workflows/analyze.md.legacy +0 -64
  116. package/src/skills/coach/workflows/audit.md +0 -74
  117. package/src/skills/coach/workflows/audit.md.legacy +0 -59
  118. package/src/skills/coach/workflows/create.md +0 -80
  119. package/src/skills/coach/workflows/create.md.legacy +0 -67
  120. package/src/skills/coach/workflows/improve.md +0 -71
  121. package/src/skills/coach/workflows/improve.md.legacy +0 -60
  122. package/src/skills/coach/workflows/research.md +0 -55
  123. package/src/skills/coach/workflows/review.md +0 -52
  124. package/src/skills/coach/workflows/review.md.legacy +0 -48
  125. package/src/skills/coach/workflows/test.md +0 -97
  126. package/src/skills/create-plan/README.md +0 -39
  127. package/src/skills/create-plan/algorithms/risk-assessment.md +0 -73
  128. package/src/skills/create-plan/knowledge/plan-completeness.md +0 -67
  129. package/src/skills/create-plan/knowledge/plan-lifecycle.md +0 -33
  130. package/src/skills/create-plan/knowledge/task-verification-pairs.md +0 -151
  131. package/src/skills/create-plan/knowledge/test-hygiene.md +0 -47
  132. package/src/skills/create-plan/scripts/validate-completeness.js +0 -182
  133. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-1.md +0 -5
  134. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-2.md +0 -39
  135. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-3.md +0 -35
  136. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/judge.json +0 -167
  137. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-1.md +0 -5
  138. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-2.md +0 -10
  139. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-3.md +0 -5
  140. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-1.md +0 -26
  141. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-2.md +0 -86
  142. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-3.md +0 -5
  143. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-1.md +0 -11
  144. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-2.md +0 -15
  145. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-3.md +0 -14
  146. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/meta.json +0 -119
  147. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001-validate-completeness.yaml +0 -41
  148. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-1.md +0 -25
  149. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-2.md +0 -30
  150. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-3.md +0 -37
  151. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/judge.json +0 -164
  152. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-1.md +0 -3
  153. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-2.md +0 -11
  154. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-3.md +0 -13
  155. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-1.md +0 -44
  156. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-2.md +0 -5
  157. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-3.md +0 -49
  158. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-1.md +0 -6
  159. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-2.md +0 -11
  160. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-3.md +0 -16
  161. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/meta.json +0 -116
  162. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002-task-granularity.yaml +0 -39
  163. package/src/skills/create-plan/tests/index.yaml +0 -25
  164. package/src/skills/create-plan/tests/rubrics/task-granularity.md +0 -21
  165. package/src/skills/create-plan/tests/rubrics/validate-completeness.md +0 -21
  166. package/src/skills/create-plan/workflows/create.md +0 -136
  167. package/src/skills/create-report/README.md +0 -40
  168. package/src/skills/create-report/algorithms/metric-calculation.md +0 -93
  169. package/src/skills/create-report/knowledge/report-metrics.md +0 -82
  170. package/src/skills/create-report/scripts/calc-metrics.js +0 -383
  171. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-1.md +0 -25
  172. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-2.md +0 -26
  173. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-3.md +0 -28
  174. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/judge.json +0 -163
  175. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-1.md +0 -4
  176. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-2.md +0 -3
  177. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-3.md +0 -6
  178. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-1.md +0 -8
  179. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-2.md +0 -12
  180. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-3.md +0 -7
  181. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-1.md +0 -12
  182. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-2.md +0 -22
  183. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-3.md +0 -13
  184. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/meta.json +0 -115
  185. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001-root-cause-attribution.yaml +0 -57
  186. package/src/skills/create-report/tests/index.yaml +0 -20
  187. package/src/skills/create-report/tests/rubrics/root-cause-attribution.md +0 -21
  188. package/src/skills/create-report/workflows/standard.md +0 -175
  189. package/src/skills/decompose-gaps/README.md +0 -39
  190. package/src/skills/decompose-gaps/algorithms/scope-check.md +0 -110
  191. package/src/skills/decompose-gaps/knowledge/scope-validation.md +0 -65
  192. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-1.md +0 -41
  193. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +0 -41
  194. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +0 -56
  195. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/judge.json +0 -164
  196. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-1.md +0 -25
  197. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-2.md +0 -17
  198. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +0 -22
  199. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +0 -25
  200. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-2.md +0 -5
  201. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-3.md +0 -29
  202. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +0 -27
  203. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +0 -35
  204. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +0 -18
  205. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/meta.json +0 -116
  206. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001-scope-exclusion.yaml +0 -46
  207. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-1.md +0 -27
  208. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +0 -30
  209. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +0 -27
  210. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +0 -163
  211. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +0 -0
  212. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +0 -15
  213. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-3.md +0 -7
  214. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-1.md +0 -21
  215. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +0 -38
  216. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +0 -16
  217. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +0 -5
  218. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +0 -10
  219. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +0 -9
  220. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +0 -115
  221. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002-glob-before-write.yaml +0 -36
  222. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-1.md +0 -30
  223. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-2.md +0 -30
  224. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-3.md +0 -30
  225. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/judge.json +0 -165
  226. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-1.md +0 -5
  227. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-2.md +0 -26
  228. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-3.md +0 -5
  229. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-1.md +0 -39
  230. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-2.md +0 -37
  231. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-3.md +0 -45
  232. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-1.md +0 -26
  233. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-2.md +0 -27
  234. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-3.md +0 -7
  235. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/meta.json +0 -117
  236. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003-parent-plan-mandatory.yaml +0 -41
  237. package/src/skills/decompose-gaps/tests/index.yaml +0 -30
  238. package/src/skills/decompose-gaps/tests/rubrics/glob-before-write.md +0 -21
  239. package/src/skills/decompose-gaps/tests/rubrics/parent-plan-mandatory.md +0 -22
  240. package/src/skills/decompose-gaps/tests/rubrics/scope-exclusion.md +0 -21
  241. package/src/skills/decompose-gaps/workflows/decompose.md +0 -123
  242. package/src/skills/decompose-plan/README.md +0 -43
  243. package/src/skills/decompose-plan/algorithms/deduplication.md +0 -101
  244. package/src/skills/decompose-plan/knowledge/atomicity-checklist.md +0 -139
  245. package/src/skills/decompose-plan/knowledge/capabilities.md +0 -68
  246. package/src/skills/decompose-plan/knowledge/human-task-rules.md +0 -82
  247. package/src/skills/decompose-plan/knowledge/scope-guard-checklist.md +0 -73
  248. package/src/skills/decompose-plan/scripts/check-atomicity-limit.js +0 -47
  249. package/src/skills/decompose-plan/scripts/check-duplicates.js +0 -323
  250. package/src/skills/decompose-plan/scripts/verify-atomicity.js +0 -408
  251. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-1.md +0 -30
  252. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-2.md +0 -36
  253. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-3.md +0 -37
  254. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/judge.json +0 -163
  255. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-1.md +0 -20
  256. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-2.md +0 -17
  257. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-3.md +0 -28
  258. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-1.md +0 -114
  259. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-2.md +0 -137
  260. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-3.md +0 -188
  261. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-1.md +0 -0
  262. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-2.md +0 -32
  263. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-3.md +0 -110
  264. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/meta.json +0 -115
  265. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001-atomicity-no-1to1.yaml +0 -56
  266. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-1.md +0 -47
  267. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-2.md +0 -54
  268. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-3.md +0 -43
  269. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/judge.json +0 -163
  270. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-1.md +0 -15
  271. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-2.md +0 -5
  272. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-3.md +0 -12
  273. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-1.md +0 -34
  274. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-2.md +0 -30
  275. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-3.md +0 -35
  276. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-1.md +0 -0
  277. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-2.md +0 -31
  278. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-3.md +0 -0
  279. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/meta.json +0 -115
  280. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002-get-next-id-mandatory.yaml +0 -44
  281. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-1.md +0 -21
  282. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-2.md +0 -38
  283. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-3.md +0 -30
  284. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/judge.json +0 -163
  285. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-1.md +0 -31
  286. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-2.md +0 -35
  287. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-3.md +0 -48
  288. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-1.md +0 -167
  289. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-2.md +0 -62
  290. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-3.md +0 -174
  291. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-1.md +0 -0
  292. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-2.md +0 -0
  293. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-3.md +0 -0
  294. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/meta.json +0 -115
  295. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003-verbatim-dod-transfer.yaml +0 -42
  296. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-1.md +0 -55
  297. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-2.md +0 -49
  298. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-3.md +0 -49
  299. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/judge.json +0 -163
  300. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-1.md +0 -104
  301. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-2.md +0 -45
  302. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-3.md +0 -58
  303. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-1.md +0 -193
  304. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-2.md +0 -202
  305. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-3.md +0 -155
  306. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-1.md +0 -52
  307. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-2.md +0 -17
  308. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-3.md +0 -0
  309. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/meta.json +0 -115
  310. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004-executor-atomicity.yaml +0 -64
  311. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-1.md +0 -59
  312. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-2.md +0 -204
  313. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-3.md +0 -213
  314. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/judge.json +0 -163
  315. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-1.md +0 -0
  316. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-2.md +0 -57
  317. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-3.md +0 -54
  318. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-1.md +0 -147
  319. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-2.md +0 -165
  320. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-3.md +0 -133
  321. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-1.md +0 -81
  322. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-2.md +0 -108
  323. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-3.md +0 -3
  324. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/meta.json +0 -114
  325. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005-capabilities-registry.yaml +0 -78
  326. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-1.md +0 -225
  327. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-2.md +0 -66
  328. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-3.md +0 -36
  329. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/judge.json +0 -163
  330. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-1.md +0 -42
  331. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-2.md +0 -67
  332. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-3.md +0 -40
  333. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-1.md +0 -122
  334. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-2.md +0 -131
  335. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-3.md +0 -138
  336. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-1.md +0 -41
  337. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-2.md +0 -88
  338. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-3.md +0 -0
  339. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/meta.json +0 -115
  340. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006-dod-threshold.yaml +0 -72
  341. package/src/skills/decompose-plan/tests/index.yaml +0 -45
  342. package/src/skills/decompose-plan/tests/rubrics/atomicity-no-1to1.md +0 -21
  343. package/src/skills/decompose-plan/tests/rubrics/capabilities-registry.md +0 -21
  344. package/src/skills/decompose-plan/tests/rubrics/dod-threshold.md +0 -21
  345. package/src/skills/decompose-plan/tests/rubrics/executor-atomicity.md +0 -21
  346. package/src/skills/decompose-plan/tests/rubrics/get-next-id-mandatory.md +0 -21
  347. package/src/skills/decompose-plan/tests/rubrics/verbatim-dod-transfer.md +0 -21
  348. package/src/skills/decompose-plan/workflows/decompose.md +0 -305
  349. package/src/skills/deep-research/README.md +0 -36
  350. package/src/skills/deep-research/algorithms/source-scoring.md +0 -63
  351. package/src/skills/deep-research/algorithms/synthesis.md +0 -67
  352. package/src/skills/deep-research/knowledge/data-validation.md +0 -44
  353. package/src/skills/deep-research/knowledge/perplexity-config.md +0 -30
  354. package/src/skills/deep-research/knowledge/research-methodology.md +0 -54
  355. package/src/skills/deep-research/knowledge/source-evaluation.md +0 -33
  356. package/src/skills/deep-research/scripts/perplexity-research.js +0 -315
  357. package/src/skills/deep-research/templates/brief-summary.md +0 -25
  358. package/src/skills/deep-research/templates/research-report.md +0 -76
  359. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-1.md +0 -48
  360. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-2.md +0 -88
  361. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-3.md +0 -56
  362. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/judge.json +0 -163
  363. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-1.md +0 -58
  364. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-2.md +0 -249
  365. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-3.md +0 -44
  366. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-1.md +0 -96
  367. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-2.md +0 -56
  368. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-3.md +0 -94
  369. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-1.md +0 -11
  370. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-2.md +0 -1
  371. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-3.md +0 -1
  372. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/meta.json +0 -115
  373. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001-self-check-url.yaml +0 -58
  374. package/src/skills/deep-research/tests/index.yaml +0 -20
  375. package/src/skills/deep-research/tests/rubrics/self-check-url.md +0 -34
  376. package/src/skills/deep-research/workflows/base-checklist.md +0 -19
  377. package/src/skills/deep-research/workflows/benchmark.md +0 -38
  378. package/src/skills/deep-research/workflows/competitor.md +0 -44
  379. package/src/skills/deep-research/workflows/custom.md +0 -32
  380. package/src/skills/deep-research/workflows/market.md +0 -44
  381. package/src/skills/deep-research/workflows/technology.md +0 -40
  382. package/src/skills/deep-research/workflows/trend.md +0 -40
  383. package/src/skills/execute-task/README.md +0 -44
  384. package/src/skills/execute-task/algorithms/execution-strategy.md +0 -136
  385. package/src/skills/execute-task/knowledge/context-checkpoints.md +0 -75
  386. package/src/skills/execute-task/knowledge/ticket-structure.md +0 -70
  387. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-1.md +0 -5
  388. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-2.md +0 -5
  389. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-3.md +0 -5
  390. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/judge.json +0 -124
  391. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-1.md +0 -4
  392. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-2.md +0 -4
  393. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-3.md +0 -4
  394. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-1.md +0 -4
  395. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-2.md +0 -4
  396. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-3.md +0 -11
  397. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/meta.json +0 -88
  398. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001-no-ticket-creation.yaml +0 -48
  399. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-1.md +0 -5
  400. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-2.md +0 -6
  401. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-3.md +0 -5
  402. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/judge.json +0 -124
  403. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-1.md +0 -4
  404. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-2.md +0 -4
  405. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-3.md +0 -8
  406. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-1.md +0 -9
  407. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-2.md +0 -26
  408. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-3.md +0 -4
  409. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/meta.json +0 -89
  410. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002-no-duplicate-dod.yaml +0 -44
  411. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-1.md +0 -5
  412. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-2.md +0 -5
  413. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-3.md +0 -5
  414. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/judge.json +0 -46
  415. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/meta.json +0 -37
  416. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003-verification-proportionality.yaml +0 -46
  417. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-1.md +0 -18
  418. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-2.md +0 -16
  419. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-3.md +0 -14
  420. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/judge.json +0 -124
  421. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-1.md +0 -5
  422. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-2.md +0 -5
  423. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-3.md +0 -1
  424. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-1.md +0 -8
  425. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-2.md +0 -5
  426. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-3.md +0 -4
  427. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/meta.json +0 -89
  428. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004-no-foreign-ticket-edit.yaml +0 -50
  429. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-1.md +0 -5
  430. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-2.md +0 -5
  431. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-3.md +0 -5
  432. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/judge.json +0 -124
  433. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-1.md +0 -15
  434. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-2.md +0 -4
  435. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-3.md +0 -5
  436. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-1.md +0 -11
  437. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-2.md +0 -11
  438. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-3.md +0 -4
  439. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/meta.json +0 -88
  440. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005-ticket-fields-updated.yaml +0 -39
  441. package/src/skills/execute-task/tests/fixtures/IMPL-902-create-file.md +0 -41
  442. package/src/skills/execute-task/tests/fixtures/IMPL-904-current-task.md +0 -40
  443. package/src/skills/execute-task/tests/fixtures/IMPL-906-fill-ticket.md +0 -42
  444. package/src/skills/execute-task/tests/fixtures/QA-901-button-click.md +0 -41
  445. package/src/skills/execute-task/tests/fixtures/QA-903-visual-figma.md +0 -40
  446. package/src/skills/execute-task/tests/fixtures/TASK-905-done-with-typo.md +0 -36
  447. package/src/skills/execute-task/tests/index.yaml +0 -39
  448. package/src/skills/execute-task/tests/rubrics/no-duplicate-dod.md +0 -22
  449. package/src/skills/execute-task/tests/rubrics/no-foreign-ticket-edit.md +0 -20
  450. package/src/skills/execute-task/tests/rubrics/no-ticket-creation.md +0 -21
  451. package/src/skills/execute-task/tests/rubrics/ticket-fields-updated.md +0 -23
  452. package/src/skills/execute-task/tests/rubrics/verification-proportionality.md +0 -22
  453. package/src/skills/execute-task/workflows/execute.md +0 -104
  454. package/src/skills/manual-testing/README.md +0 -63
  455. package/src/skills/manual-testing/algorithms/blocked-tool-strategy.md +0 -74
  456. package/src/skills/manual-testing/algorithms/bug-severity.md +0 -73
  457. package/src/skills/manual-testing/algorithms/mcp-budget.md +0 -97
  458. package/src/skills/manual-testing/algorithms/test-prioritization.md +0 -69
  459. package/src/skills/manual-testing/knowledge/browser-extension-testing.md +0 -102
  460. package/src/skills/manual-testing/knowledge/browser-tools.md +0 -114
  461. package/src/skills/manual-testing/knowledge/desktop-tools-advanced.md +0 -92
  462. package/src/skills/manual-testing/knowledge/desktop-tools-core.md +0 -76
  463. package/src/skills/manual-testing/knowledge/sandbox-advanced.md +0 -83
  464. package/src/skills/manual-testing/knowledge/sandbox-core.md +0 -67
  465. package/src/skills/manual-testing/knowledge/stateful-edge-cases.md +0 -69
  466. package/src/skills/manual-testing/knowledge/test-case-design.md +0 -107
  467. package/src/skills/manual-testing/knowledge/testing-types.md +0 -45
  468. package/src/skills/manual-testing/templates/bug-report.md +0 -52
  469. package/src/skills/manual-testing/templates/test-case.md +0 -34
  470. package/src/skills/manual-testing/templates/test-plan.md +0 -97
  471. package/src/skills/manual-testing/templates/test-session-report.md +0 -56
  472. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-1.md +0 -34
  473. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +0 -32
  474. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +0 -30
  475. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/judge.json +0 -163
  476. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-1.md +0 -0
  477. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-2.md +0 -7
  478. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-3.md +0 -0
  479. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-1.md +0 -4
  480. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-2.md +0 -15
  481. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-3.md +0 -8
  482. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-1.md +0 -5
  483. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-2.md +0 -7
  484. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-3.md +0 -7
  485. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/meta.json +0 -114
  486. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001-sandbox-mandatory.yaml +0 -38
  487. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md +0 -44
  488. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +0 -32
  489. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +0 -47
  490. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/judge.json +0 -163
  491. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-1.md +0 -19
  492. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-2.md +0 -15
  493. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-3.md +0 -24
  494. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-1.md +0 -19
  495. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-2.md +0 -13
  496. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-3.md +0 -18
  497. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-1.md +0 -21
  498. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-2.md +0 -15
  499. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-3.md +0 -14
  500. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/meta.json +0 -114
  501. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002-visual-tc-screenshot.yaml +0 -37
  502. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-1.md +0 -76
  503. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-2.md +0 -71
  504. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-3.md +0 -85
  505. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/judge.json +0 -46
  506. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/meta.json +0 -36
  507. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003-qa-non-ui-assertion.yaml +0 -65
  508. package/src/skills/manual-testing/tests/index.yaml +0 -30
  509. package/src/skills/manual-testing/tests/last-run-tc001-sonnet.log +0 -140
  510. package/src/skills/manual-testing/tests/last-run-tc002.log +0 -1
  511. package/src/skills/manual-testing/tests/last-run.log +0 -1469
  512. package/src/skills/manual-testing/tests/rubrics/qa-non-ui-assertion.md +0 -31
  513. package/src/skills/manual-testing/tests/rubrics/sandbox-mandatory.md +0 -20
  514. package/src/skills/manual-testing/tests/rubrics/visual-tc-screenshot.md +0 -21
  515. package/src/skills/manual-testing/workflows/acceptance.md +0 -80
  516. package/src/skills/manual-testing/workflows/exploratory.md +0 -84
  517. package/src/skills/manual-testing/workflows/regression.md +0 -76
  518. package/src/skills/manual-testing/workflows/smoke.md +0 -109
  519. package/src/skills/manual-testing/workflows/test-plan.md +0 -75
  520. package/src/skills/review-result/README.md +0 -59
  521. package/src/skills/review-result/algorithms/verification.md +0 -112
  522. package/src/skills/review-result/knowledge/dod-patterns.md +0 -115
  523. package/src/skills/review-result/knowledge/test-hygiene.md +0 -44
  524. package/src/skills/review-result/scripts/verify-artifacts.js +0 -497
  525. package/src/skills/review-result/templates/verdict.md +0 -153
  526. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-1.md +0 -22
  527. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-2.md +0 -7
  528. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-3.md +0 -21
  529. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-1.md +0 -6
  530. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-2.md +0 -6
  531. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-3.md +0 -18
  532. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/judge.json +0 -164
  533. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-1.md +0 -5
  534. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-2.md +0 -7
  535. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-3.md +0 -6
  536. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-1.md +0 -49
  537. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-2.md +0 -28
  538. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-3.md +0 -37
  539. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-1.md +0 -22
  540. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-2.md +0 -13
  541. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-3.md +0 -21
  542. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/meta.json +0 -116
  543. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001-visual-tc-trigger.yaml +0 -51
  544. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-1.md +0 -23
  545. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-2.md +0 -22
  546. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-3.md +0 -28
  547. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-1.md +0 -4
  548. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-2.md +0 -36
  549. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-3.md +0 -4
  550. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/judge.json +0 -163
  551. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-1.md +0 -4
  552. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-2.md +0 -0
  553. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-3.md +0 -4
  554. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-1.md +0 -39
  555. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-2.md +0 -25
  556. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-3.md +0 -32
  557. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-1.md +0 -34
  558. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-2.md +0 -8
  559. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-3.md +0 -23
  560. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/meta.json +0 -115
  561. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002-path-line-suffix.yaml +0 -39
  562. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-1.md +0 -7
  563. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-2.md +0 -7
  564. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/claude-sonnet/trial-3.md +0 -7
  565. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/judge.json +0 -163
  566. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-1.md +0 -5
  567. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-2.md +0 -5
  568. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-deepseek/trial-3.md +0 -11
  569. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-1.md +0 -16
  570. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-2.md +0 -18
  571. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-glm/trial-3.md +0 -17
  572. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-1.md +0 -17
  573. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-2.md +0 -31
  574. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/kilo-minimax/trial-3.md +0 -5
  575. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003/current/meta.json +0 -115
  576. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-003-test-isolation.yaml +0 -50
  577. package/src/skills/review-result/tests/fixtures/IMPL-902-path-with-line.md +0 -43
  578. package/src/skills/review-result/tests/fixtures/QA-901-visual-button.md +0 -46
  579. package/src/skills/review-result/tests/fixtures/QA-904-test-isolation-violation/QA-904.md +0 -51
  580. package/src/skills/review-result/tests/fixtures/QA-904-test-isolation-violation/example-test.mjs +0 -36
  581. package/src/skills/review-result/tests/index.yaml +0 -30
  582. package/src/skills/review-result/tests/rubrics/path-line-suffix.md +0 -19
  583. package/src/skills/review-result/tests/rubrics/test-isolation.md +0 -20
  584. package/src/skills/review-result/tests/rubrics/visual-tc-trigger.md +0 -19
  585. package/src/skills/review-result/workflows/review.md +0 -209
@@ -1,323 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * check-duplicates.js — проверка потенциальных дубликатов тикетов.
5
- *
6
- * Алгоритм: word-level overlap для title + key phrase overlap для scope.
7
- * Скрипт только предоставляет данные — финальное решение (CREATE/SKIP/OVERRIDE)
8
- * остаётся за агентом.
9
- *
10
- * Использование:
11
- * node check-duplicates.js --title "Заголовок" --scope "Описание scope"
12
- * node check-duplicates.js --title "..." --scope "..." --type-prefix "IMPL"
13
- *
14
- * Результат: JSON через ---RESULT--- с списком потенциальных дубликатов.
15
- */
16
-
17
- import fs from 'fs';
18
- import path from 'path';
19
- import { findProjectRoot } from 'workflow-ai/lib/find-root.mjs';
20
-
21
- // ─── Конфигурация ────────────────────────────────────────────────
22
-
23
- const TICKET_DIRS = [
24
- 'backlog',
25
- 'ready',
26
- 'in-progress',
27
- 'blocked',
28
- 'review',
29
- 'done',
30
- 'archive',
31
- ];
32
-
33
- const TITLE_OVERLAP_THRESHOLD = 70; // процент
34
- const SCOPE_OVERLAP_THRESHOLD = 50; // процент
35
-
36
- // ─── Утилиты ─────────────────────────────────────────────────────
37
-
38
- /**
39
- * Нормализовать текст: lowercase, убрать спецсимволы, разбить на слова.
40
- */
41
- function tokenize(text) {
42
- return text
43
- .toLowerCase()
44
- .replace(/[^\p{L}\p{N}\s]/gu, '')
45
- .split(/\s+/)
46
- .filter(w => w.length > 0);
47
- }
48
-
49
- /**
50
- * Word-level overlap: процент совпадения слов между двумя текстами.
51
- * Использует мультимножество (учитывает повторы слов).
52
- */
53
- function wordOverlap(text1, text2) {
54
- const tokens1 = tokenize(text1);
55
- const tokens2 = tokenize(text2);
56
-
57
- if (tokens1.length === 0 || tokens2.length === 0) return 0;
58
-
59
- // Строим мультимножество для tokens2
60
- const bag2 = new Map();
61
- for (const t of tokens2) {
62
- bag2.set(t, (bag2.get(t) || 0) + 1);
63
- }
64
-
65
- let overlap = 0;
66
- const bag1Counted = new Map();
67
- for (const t of tokens1) {
68
- const available = bag2.get(t) || 0;
69
- const alreadyCounted = bag1Counted.get(t) || 0;
70
- if (available > alreadyCounted) {
71
- overlap++;
72
- bag1Counted.set(t, alreadyCounted + 1);
73
- }
74
- }
75
-
76
- // Процент от меньшего набора слов (чтобы короткие title не давали ложных совпадений)
77
- const minLen = Math.min(tokens1.length, tokens2.length);
78
- return Math.round((overlap / minLen) * 100);
79
- }
80
-
81
- /**
82
- * Извлечь ключевые фразы из scope: биграммы + триграммы из значимых слов.
83
- * Значимые слова — существительные и глаголы (всё кроме стоп-слов).
84
- */
85
- function extractKeyPhrases(text, ngramSize = 2) {
86
- const tokens = tokenize(text);
87
- // Простые стоп-слова для русского и английского
88
- const stopWords = new Set([
89
- 'и', 'в', 'на', 'с', 'по', 'к', 'у', 'о', 'из', 'за', 'для', 'от', 'до',
90
- 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
91
- 'to', 'of', 'in', 'for', 'on', 'with', 'at', 'by', 'from', 'as',
92
- 'that', 'this', 'these', 'those', 'it', 'its',
93
- ]);
94
-
95
- const significant = tokens.filter(t => !stopWords.has(t));
96
-
97
- if (significant.length < ngramSize) return significant;
98
-
99
- const phrases = new Set();
100
- for (let i = 0; i <= significant.length - ngramSize; i++) {
101
- phrases.add(significant.slice(i, i + ngramSize).join(' '));
102
- }
103
- return [...phrases];
104
- }
105
-
106
- /**
107
- * Key phrase overlap: процент совпадения ключевых фраз между двумя scope.
108
- */
109
- function phraseOverlap(scope1, scope2) {
110
- const phrases1 = extractKeyPhrases(scope1);
111
- const phrases2 = extractKeyPhrases(scope2);
112
-
113
- if (phrases1.length === 0 || phrases2.length === 0) return 0;
114
-
115
- const set2 = new Set(phrases2);
116
- let overlap = 0;
117
- for (const p of phrases1) {
118
- if (set2.has(p)) overlap++;
119
- }
120
-
121
- const minLen = Math.min(phrases1.length, phrases2.length);
122
- return Math.round((overlap / minLen) * 100);
123
- }
124
-
125
- /**
126
- * Извлечь frontmatter из markdown-файла тикета.
127
- */
128
- function parseFrontmatter(content) {
129
- // Нормализуем CRLF → LF для кроссплатформенной совместимости
130
- const normalized = content.replace(/\r\n/g, '\n');
131
- const match = normalized.match(/^---\n([\s\S]*?)\n---/);
132
- if (!match) return {};
133
-
134
- const yaml = match[1];
135
- const result = {};
136
-
137
- // Простой YAML-парсер для плоских ключей и notes
138
- for (const line of yaml.split('\n')) {
139
- const trimmed = line.trim();
140
- if (!trimmed || trimmed.startsWith('#')) continue;
141
-
142
- const colonIdx = trimmed.indexOf(':');
143
- if (colonIdx === -1) continue;
144
-
145
- const key = trimmed.slice(0, colonIdx).trim();
146
- let value = trimmed.slice(colonIdx + 1).trim();
147
-
148
- // Убрать кавычки
149
- if ((value.startsWith('"') && value.endsWith('"')) ||
150
- (value.startsWith("'") && value.endsWith("'"))) {
151
- value = value.slice(1, -1);
152
- }
153
-
154
- result[key] = value;
155
- }
156
-
157
- return result;
158
- }
159
-
160
- /**
161
- * Извлечь описание и детали задачи из тела тикета.
162
- */
163
- function extractTicketDescription(content) {
164
- // Нормализуем CRLF → LF
165
- const normalized = content.replace(/\r\n/g, '\n');
166
- const parts = [];
167
-
168
- // Секция "Описание"
169
- const descMatch = normalized.match(/^## Описание\s*\n([\s\S]*?)(?=^## |\Z)/m);
170
- if (descMatch) parts.push(descMatch[1]);
171
-
172
- // Секция "Детали задачи"
173
- const detailsMatch = normalized.match(/^## Детали задачи\s*\n([\s\S]*?)(?=^## |\Z)/m);
174
- if (detailsMatch) parts.push(detailsMatch[1]);
175
-
176
- return parts.join('\n');
177
- }
178
-
179
- /**
180
- * Сканировать все директории тикетов и найти тикеты с указанным префиксом.
181
- */
182
- function scanTickets(prefix, projectRoot) {
183
- const ticketsDir = path.join(projectRoot, '.workflow', 'tickets');
184
- const results = [];
185
-
186
- for (const dir of TICKET_DIRS) {
187
- const dirPath = path.join(ticketsDir, dir);
188
- if (!fs.existsSync(dirPath)) continue;
189
-
190
- const files = fs.readdirSync(dirPath);
191
- for (const file of files) {
192
- // Пропускаем временные файлы и файлы не с тем префиксом
193
- if (!file.startsWith(prefix + '-') && !file.match(/^IMPL-/)) continue;
194
- if (!file.endsWith('.md')) continue;
195
-
196
- const filePath = path.join(dirPath, file);
197
- try {
198
- const content = fs.readFileSync(filePath, 'utf-8');
199
- const frontmatter = parseFrontmatter(content);
200
- const description = extractTicketDescription(content);
201
-
202
- results.push({
203
- id: frontmatter.id || file.replace('.md', ''),
204
- title: frontmatter.title || '',
205
- status: dir,
206
- filePath,
207
- content,
208
- description,
209
- });
210
- } catch (e) {
211
- // Пропускаем файлы с ошибками чтения
212
- }
213
- }
214
- }
215
-
216
- return results;
217
- }
218
-
219
- // ─── Парсинг аргументов ──────────────────────────────────────────
220
-
221
- function parseArgs(argv) {
222
- const args = argv.slice(2);
223
- const result = {
224
- title: null,
225
- scope: null,
226
- typePrefix: 'IMPL',
227
- };
228
-
229
- let i = 0;
230
- while (i < args.length) {
231
- if (args[i] === '--title' && i + 1 < args.length) {
232
- result.title = args[++i];
233
- } else if (args[i] === '--scope' && i + 1 < args.length) {
234
- result.scope = args[++i];
235
- } else if (args[i] === '--type-prefix' && i + 1 < args.length) {
236
- result.typePrefix = args[++i];
237
- } else if (args[i] === '--help' || args[i] === '-h') {
238
- console.log(`
239
- Использование: node check-duplicates.js [опции]
240
-
241
- Опции:
242
- --title <text> Заголовок создаваемого тикета (обязательно)
243
- --scope <text> Описание scope работы (обязательно)
244
- --type-prefix <prefix> Префикс типа тикета (по умолчанию: IMPL)
245
- -h, --help Показать справку
246
- `);
247
- process.exit(0);
248
- }
249
- i++;
250
- }
251
-
252
- return result;
253
- }
254
-
255
- // ─── Основная логика ─────────────────────────────────────────────
256
-
257
- function findDuplicates(newTitle, newScope, typePrefix, projectRoot) {
258
- const tickets = scanTickets(typePrefix, projectRoot);
259
- const duplicates = [];
260
-
261
- for (const ticket of tickets) {
262
- // Шаг 2: Сравнение title (word-level overlap)
263
- const titleOverlap = wordOverlap(newTitle, ticket.title);
264
-
265
- // Фильтр: если title не проходит порог — пропускаем
266
- if (titleOverlap <= TITLE_OVERLAP_THRESHOLD) continue;
267
-
268
- // Шаг 3: Сравнение scope (key phrase overlap)
269
- const scopeText = ticket.description || ticket.title;
270
- const scopeOverlap = phraseOverlap(newScope, scopeText);
271
-
272
- duplicates.push({
273
- id: ticket.id,
274
- title: ticket.title,
275
- title_overlap_pct: titleOverlap,
276
- scope_overlap_pct: scopeOverlap,
277
- status: ticket.status,
278
- file_path: ticket.filePath,
279
- });
280
- }
281
-
282
- // Сортировка по убыванию title_overlap
283
- duplicates.sort((a, b) => b.title_overlap_pct - a.title_overlap_pct);
284
-
285
- return duplicates;
286
- }
287
-
288
- // ─── Вывод результата ────────────────────────────────────────────
289
-
290
- function outputResult(duplicates, newTitle) {
291
- console.log('---RESULT---');
292
- console.log(JSON.stringify({
293
- query_title: newTitle,
294
- potential_duplicates: duplicates,
295
- count: duplicates.length,
296
- recommendation: duplicates.length === 0
297
- ? 'CREATE — дубликатов не найдено'
298
- : 'Проверить каждый дубликат и принять решение: SKIP / OVERRIDE / CREATE',
299
- }, null, 2));
300
- console.log('---RESULT---');
301
- }
302
-
303
- // ─── Запуск ──────────────────────────────────────────────────────
304
-
305
- async function main() {
306
- const args = parseArgs(process.argv);
307
-
308
- if (!args.title || !args.scope) {
309
- console.error('Ошибка: необходимо указать --title и --scope');
310
- console.error('Использование: node check-duplicates.js --title "..." --scope "..."');
311
- process.exit(1);
312
- }
313
-
314
- const projectRoot = findProjectRoot();
315
- const duplicates = findDuplicates(args.title, args.scope, args.typePrefix, projectRoot);
316
-
317
- outputResult(duplicates, args.title);
318
- }
319
-
320
- main().catch((err) => {
321
- console.error(`Ошибка: ${err.message}`);
322
- process.exit(1);
323
- });