workflow-ai 1.0.63 → 1.0.65

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 (576) hide show
  1. package/README.md +239 -145
  2. package/configs/agent-health-rules.yaml +64 -0
  3. package/configs/config.yaml +134 -0
  4. package/configs/pipeline.yaml +901 -0
  5. package/configs/ticket-movement-rules.yaml +80 -0
  6. package/package.json +1 -1
  7. package/src/global-dir.mjs +25 -1
  8. package/src/init.mjs +20 -3
  9. package/src/lib/agent-health-registry.mjs +245 -0
  10. package/src/lib/artifact-snapshot.mjs +233 -0
  11. package/src/lib/error-classifier.mjs +274 -0
  12. package/src/lib/test-error-classifier.mjs +60 -0
  13. package/src/lib/test-extends.mjs +58 -0
  14. package/src/lib/test-version.mjs +21 -0
  15. package/src/scripts/move-to-review.js +5 -7
  16. package/src/scripts/reset-agent-health.js +62 -0
  17. package/src/scripts/run-skill-tests.js +348 -136
  18. package/src/skills/analyze-report/README.md +44 -0
  19. package/src/skills/analyze-report/SKILL.md +121 -0
  20. package/src/skills/analyze-report/algorithms/progress-assessment.md +108 -0
  21. package/src/skills/analyze-report/knowledge/analysis-frameworks.md +66 -0
  22. package/src/skills/analyze-report/knowledge/report-structure.md +61 -0
  23. package/src/skills/analyze-report/scripts/calc-plan-metrics.js +234 -0
  24. package/src/skills/analyze-report/templates/analysis-report.md +80 -0
  25. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-1.md +69 -0
  26. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-2.md +103 -0
  27. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-3.md +99 -0
  28. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/judge.json +163 -0
  29. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-1.md +89 -0
  30. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-2.md +88 -0
  31. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-3.md +100 -0
  32. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-1.md +77 -0
  33. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-2.md +64 -0
  34. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-3.md +110 -0
  35. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-1.md +74 -0
  36. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-2.md +38 -0
  37. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-3.md +61 -0
  38. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/meta.json +115 -0
  39. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001-evidence-from-log.yaml +60 -0
  40. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-1.md +90 -0
  41. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-2.md +89 -0
  42. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-3.md +77 -0
  43. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/judge.json +163 -0
  44. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-1.md +84 -0
  45. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-2.md +77 -0
  46. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-3.md +89 -0
  47. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-1.md +103 -0
  48. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-2.md +103 -0
  49. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-3.md +103 -0
  50. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-1.md +93 -0
  51. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-2.md +93 -0
  52. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-3.md +86 -0
  53. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/meta.json +115 -0
  54. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002-result-block-format.yaml +44 -0
  55. package/src/skills/analyze-report/tests/fixtures/REPORT-002-incorrect-attribution.md +27 -0
  56. package/src/skills/analyze-report/tests/fixtures/pipeline-2026-04-06_qa-001-skip.log +32 -0
  57. package/src/skills/analyze-report/tests/index.yaml +25 -0
  58. package/src/skills/analyze-report/tests/rubrics/evidence-from-log.md +22 -0
  59. package/src/skills/analyze-report/tests/rubrics/result-block-format.md +22 -0
  60. package/src/skills/analyze-report/workflows/progress.md +158 -0
  61. package/src/skills/analyze-report/workflows/retrospective.md +143 -0
  62. package/src/skills/coach/README.md +43 -0
  63. package/src/skills/coach/SKILL.md +167 -0
  64. package/src/skills/coach/SKILL.md.legacy +157 -0
  65. package/src/skills/coach/algorithms/gap-analysis.md +69 -0
  66. package/src/skills/coach/algorithms/improvement-prioritization.md +62 -0
  67. package/src/skills/coach/algorithms/skill-scoring.md +80 -0
  68. package/src/skills/coach/knowledge/audit-applied-changes-clean.txt +11 -0
  69. package/src/skills/coach/knowledge/backlog-management.md +67 -0
  70. package/src/skills/coach/knowledge/backlog-management.md.legacy +90 -0
  71. package/src/skills/coach/knowledge/common-antipatterns.md +76 -0
  72. package/src/skills/coach/knowledge/prompt-engineering.md +45 -0
  73. package/src/skills/coach/knowledge/shared-knowledge-guide.md +44 -0
  74. package/src/skills/coach/knowledge/skill-anatomy.md +49 -0
  75. package/src/skills/coach/knowledge/test-authorship.md +141 -0
  76. package/src/skills/coach/templates/audit-report.md +39 -0
  77. package/src/skills/coach/templates/coach-backlog-init.yaml +14 -0
  78. package/src/skills/coach/templates/coach-backlog-init.yaml.legacy +10 -0
  79. package/src/skills/coach/templates/improvement-plan.md +42 -0
  80. package/src/skills/coach/templates/new-skill.md +95 -0
  81. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-1.md +58 -0
  82. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-2.md +65 -0
  83. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-3.md +58 -0
  84. package/src/skills/coach/tests/cases/TC-COACH-001/current/judge.json +151 -0
  85. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-1.md +46 -0
  86. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-2.md +0 -0
  87. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-3.md +75 -0
  88. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-1.md +81 -0
  89. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-2.md +101 -0
  90. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-3.md +91 -0
  91. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-1.md +48 -0
  92. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-2.md +30 -0
  93. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-3.md +55 -0
  94. package/src/skills/coach/tests/cases/TC-COACH-001/current/meta.json +94 -0
  95. package/src/skills/coach/tests/cases/TC-COACH-001-evidence-based-temporal-diagram.yaml +53 -0
  96. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-1.md +46 -0
  97. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-2.md +50 -0
  98. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-3.md +48 -0
  99. package/src/skills/coach/tests/cases/TC-COACH-002/current/judge.json +151 -0
  100. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-1.md +0 -0
  101. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-2.md +37 -0
  102. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-3.md +30 -0
  103. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-1.md +23 -0
  104. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-2.md +29 -0
  105. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-3.md +35 -0
  106. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-1.md +13 -0
  107. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-2.md +19 -0
  108. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-3.md +33 -0
  109. package/src/skills/coach/tests/cases/TC-COACH-002/current/meta.json +94 -0
  110. package/src/skills/coach/tests/cases/TC-COACH-002-root-cause-first.yaml +57 -0
  111. package/src/skills/coach/tests/fixtures/pipeline-2026-04-06_id-collision.log +77 -0
  112. package/src/skills/coach/tests/index.yaml +29 -0
  113. package/src/skills/coach/tests/rubrics/calibration/evidence-based-bad.md +13 -0
  114. package/src/skills/coach/tests/rubrics/calibration/evidence-based-good.md +29 -0
  115. package/src/skills/coach/tests/rubrics/evidence-based.md +26 -0
  116. package/src/skills/coach/tests/rubrics/root-cause-first.md +21 -0
  117. package/src/skills/coach/workflows/analyze.md +79 -0
  118. package/src/skills/coach/workflows/analyze.md.legacy +64 -0
  119. package/src/skills/coach/workflows/audit.md +74 -0
  120. package/src/skills/coach/workflows/audit.md.legacy +59 -0
  121. package/src/skills/coach/workflows/create.md +80 -0
  122. package/src/skills/coach/workflows/create.md.legacy +67 -0
  123. package/src/skills/coach/workflows/improve.md +71 -0
  124. package/src/skills/coach/workflows/improve.md.legacy +60 -0
  125. package/src/skills/coach/workflows/research.md +55 -0
  126. package/src/skills/coach/workflows/review.md +52 -0
  127. package/src/skills/coach/workflows/review.md.legacy +48 -0
  128. package/src/skills/coach/workflows/test.md +97 -0
  129. package/src/skills/create-plan/README.md +39 -0
  130. package/src/skills/create-plan/SKILL.md +104 -0
  131. package/src/skills/create-plan/algorithms/risk-assessment.md +73 -0
  132. package/src/skills/create-plan/knowledge/plan-completeness.md +67 -0
  133. package/src/skills/create-plan/knowledge/plan-lifecycle.md +33 -0
  134. package/src/skills/create-plan/knowledge/task-verification-pairs.md +151 -0
  135. package/src/skills/create-plan/scripts/validate-completeness.js +182 -0
  136. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-1.md +5 -0
  137. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-2.md +39 -0
  138. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-3.md +35 -0
  139. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/judge.json +167 -0
  140. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-1.md +5 -0
  141. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-2.md +10 -0
  142. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-3.md +5 -0
  143. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-1.md +26 -0
  144. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-2.md +86 -0
  145. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-3.md +5 -0
  146. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-1.md +11 -0
  147. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-2.md +15 -0
  148. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-3.md +14 -0
  149. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/meta.json +119 -0
  150. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001-validate-completeness.yaml +41 -0
  151. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-1.md +25 -0
  152. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-2.md +30 -0
  153. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-3.md +37 -0
  154. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/judge.json +164 -0
  155. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-1.md +3 -0
  156. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-2.md +11 -0
  157. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-3.md +13 -0
  158. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-1.md +44 -0
  159. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-2.md +5 -0
  160. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-3.md +49 -0
  161. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-1.md +6 -0
  162. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-2.md +11 -0
  163. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-3.md +16 -0
  164. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/meta.json +116 -0
  165. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002-task-granularity.yaml +39 -0
  166. package/src/skills/create-plan/tests/index.yaml +25 -0
  167. package/src/skills/create-plan/tests/rubrics/task-granularity.md +21 -0
  168. package/src/skills/create-plan/tests/rubrics/validate-completeness.md +21 -0
  169. package/src/skills/create-plan/workflows/create.md +136 -0
  170. package/src/skills/create-report/README.md +40 -0
  171. package/src/skills/create-report/SKILL.md +73 -0
  172. package/src/skills/create-report/algorithms/metric-calculation.md +93 -0
  173. package/src/skills/create-report/knowledge/report-metrics.md +82 -0
  174. package/src/skills/create-report/scripts/calc-metrics.js +383 -0
  175. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-1.md +25 -0
  176. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-2.md +26 -0
  177. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-3.md +28 -0
  178. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/judge.json +163 -0
  179. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-1.md +4 -0
  180. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-2.md +3 -0
  181. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-3.md +6 -0
  182. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-1.md +8 -0
  183. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-2.md +12 -0
  184. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-3.md +7 -0
  185. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-1.md +12 -0
  186. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-2.md +22 -0
  187. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-3.md +13 -0
  188. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/meta.json +115 -0
  189. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001-root-cause-attribution.yaml +57 -0
  190. package/src/skills/create-report/tests/index.yaml +20 -0
  191. package/src/skills/create-report/tests/rubrics/root-cause-attribution.md +21 -0
  192. package/src/skills/create-report/workflows/standard.md +175 -0
  193. package/src/skills/decompose-gaps/README.md +39 -0
  194. package/src/skills/decompose-gaps/SKILL.md +78 -0
  195. package/src/skills/decompose-gaps/algorithms/scope-check.md +110 -0
  196. package/src/skills/decompose-gaps/knowledge/scope-validation.md +65 -0
  197. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-1.md +41 -0
  198. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +41 -0
  199. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +56 -0
  200. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/judge.json +164 -0
  201. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-1.md +25 -0
  202. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-2.md +17 -0
  203. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +22 -0
  204. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +25 -0
  205. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-2.md +5 -0
  206. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-3.md +29 -0
  207. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +27 -0
  208. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +35 -0
  209. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +18 -0
  210. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/meta.json +116 -0
  211. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001-scope-exclusion.yaml +46 -0
  212. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-1.md +27 -0
  213. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +30 -0
  214. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +27 -0
  215. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +163 -0
  216. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +0 -0
  217. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +15 -0
  218. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-3.md +7 -0
  219. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-1.md +21 -0
  220. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +38 -0
  221. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +16 -0
  222. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +5 -0
  223. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +10 -0
  224. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +9 -0
  225. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +115 -0
  226. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002-glob-before-write.yaml +36 -0
  227. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-1.md +30 -0
  228. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-2.md +30 -0
  229. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-3.md +30 -0
  230. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/judge.json +165 -0
  231. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-1.md +5 -0
  232. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-2.md +26 -0
  233. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-3.md +5 -0
  234. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-1.md +39 -0
  235. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-2.md +37 -0
  236. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-3.md +45 -0
  237. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-1.md +26 -0
  238. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-2.md +27 -0
  239. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-3.md +7 -0
  240. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/meta.json +117 -0
  241. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003-parent-plan-mandatory.yaml +41 -0
  242. package/src/skills/decompose-gaps/tests/index.yaml +30 -0
  243. package/src/skills/decompose-gaps/tests/rubrics/glob-before-write.md +21 -0
  244. package/src/skills/decompose-gaps/tests/rubrics/parent-plan-mandatory.md +22 -0
  245. package/src/skills/decompose-gaps/tests/rubrics/scope-exclusion.md +21 -0
  246. package/src/skills/decompose-gaps/workflows/decompose.md +123 -0
  247. package/src/skills/decompose-plan/README.md +43 -0
  248. package/src/skills/decompose-plan/SKILL.md +87 -0
  249. package/src/skills/decompose-plan/algorithms/deduplication.md +101 -0
  250. package/src/skills/decompose-plan/knowledge/atomicity-checklist.md +139 -0
  251. package/src/skills/decompose-plan/knowledge/capabilities.md +68 -0
  252. package/src/skills/decompose-plan/knowledge/human-task-rules.md +82 -0
  253. package/src/skills/decompose-plan/knowledge/scope-guard-checklist.md +73 -0
  254. package/src/skills/decompose-plan/scripts/check-atomicity-limit.js +47 -0
  255. package/src/skills/decompose-plan/scripts/check-duplicates.js +323 -0
  256. package/src/skills/decompose-plan/scripts/verify-atomicity.js +408 -0
  257. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-1.md +30 -0
  258. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-2.md +36 -0
  259. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-3.md +37 -0
  260. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/judge.json +163 -0
  261. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-1.md +20 -0
  262. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-2.md +17 -0
  263. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-3.md +28 -0
  264. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-1.md +114 -0
  265. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-2.md +137 -0
  266. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-3.md +188 -0
  267. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-1.md +0 -0
  268. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-2.md +32 -0
  269. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-3.md +110 -0
  270. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/meta.json +115 -0
  271. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001-atomicity-no-1to1.yaml +56 -0
  272. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-1.md +47 -0
  273. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-2.md +54 -0
  274. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-3.md +43 -0
  275. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/judge.json +163 -0
  276. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-1.md +15 -0
  277. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-2.md +5 -0
  278. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-3.md +12 -0
  279. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-1.md +34 -0
  280. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-2.md +30 -0
  281. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-3.md +35 -0
  282. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-1.md +0 -0
  283. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-2.md +31 -0
  284. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-3.md +0 -0
  285. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/meta.json +115 -0
  286. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002-get-next-id-mandatory.yaml +44 -0
  287. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-1.md +21 -0
  288. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-2.md +38 -0
  289. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-3.md +30 -0
  290. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/judge.json +163 -0
  291. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-1.md +31 -0
  292. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-2.md +35 -0
  293. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-3.md +48 -0
  294. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-1.md +167 -0
  295. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-2.md +62 -0
  296. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-3.md +174 -0
  297. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-1.md +0 -0
  298. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-2.md +0 -0
  299. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-3.md +0 -0
  300. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/meta.json +115 -0
  301. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003-verbatim-dod-transfer.yaml +42 -0
  302. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-1.md +55 -0
  303. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-2.md +49 -0
  304. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-3.md +49 -0
  305. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/judge.json +163 -0
  306. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-1.md +104 -0
  307. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-2.md +45 -0
  308. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-3.md +58 -0
  309. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-1.md +193 -0
  310. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-2.md +202 -0
  311. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-3.md +155 -0
  312. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-1.md +52 -0
  313. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-2.md +17 -0
  314. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-3.md +0 -0
  315. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/meta.json +115 -0
  316. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004-executor-atomicity.yaml +64 -0
  317. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-1.md +59 -0
  318. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-2.md +204 -0
  319. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-3.md +213 -0
  320. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/judge.json +163 -0
  321. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-1.md +0 -0
  322. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-2.md +57 -0
  323. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-3.md +54 -0
  324. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-1.md +147 -0
  325. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-2.md +165 -0
  326. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-3.md +133 -0
  327. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-1.md +81 -0
  328. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-2.md +108 -0
  329. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-3.md +3 -0
  330. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/meta.json +114 -0
  331. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005-capabilities-registry.yaml +78 -0
  332. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-1.md +225 -0
  333. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-2.md +66 -0
  334. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-3.md +36 -0
  335. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/judge.json +163 -0
  336. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-1.md +42 -0
  337. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-2.md +67 -0
  338. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-3.md +40 -0
  339. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-1.md +122 -0
  340. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-2.md +131 -0
  341. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-3.md +138 -0
  342. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-1.md +41 -0
  343. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-2.md +88 -0
  344. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-3.md +0 -0
  345. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/meta.json +115 -0
  346. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006-dod-threshold.yaml +72 -0
  347. package/src/skills/decompose-plan/tests/index.yaml +45 -0
  348. package/src/skills/decompose-plan/tests/rubrics/atomicity-no-1to1.md +21 -0
  349. package/src/skills/decompose-plan/tests/rubrics/capabilities-registry.md +21 -0
  350. package/src/skills/decompose-plan/tests/rubrics/dod-threshold.md +21 -0
  351. package/src/skills/decompose-plan/tests/rubrics/executor-atomicity.md +21 -0
  352. package/src/skills/decompose-plan/tests/rubrics/get-next-id-mandatory.md +21 -0
  353. package/src/skills/decompose-plan/tests/rubrics/verbatim-dod-transfer.md +21 -0
  354. package/src/skills/decompose-plan/workflows/decompose.md +305 -0
  355. package/src/skills/deep-research/README.md +36 -0
  356. package/src/skills/deep-research/SKILL.md +106 -0
  357. package/src/skills/deep-research/algorithms/source-scoring.md +63 -0
  358. package/src/skills/deep-research/algorithms/synthesis.md +67 -0
  359. package/src/skills/deep-research/knowledge/data-validation.md +44 -0
  360. package/src/skills/deep-research/knowledge/perplexity-config.md +30 -0
  361. package/src/skills/deep-research/knowledge/research-methodology.md +54 -0
  362. package/src/skills/deep-research/knowledge/source-evaluation.md +33 -0
  363. package/src/skills/deep-research/scripts/perplexity-research.js +315 -0
  364. package/src/skills/deep-research/templates/brief-summary.md +25 -0
  365. package/src/skills/deep-research/templates/research-report.md +76 -0
  366. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-1.md +48 -0
  367. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-2.md +88 -0
  368. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-3.md +56 -0
  369. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/judge.json +163 -0
  370. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-1.md +58 -0
  371. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-2.md +249 -0
  372. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-3.md +44 -0
  373. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-1.md +96 -0
  374. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-2.md +56 -0
  375. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-3.md +94 -0
  376. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-1.md +11 -0
  377. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-2.md +1 -0
  378. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-3.md +1 -0
  379. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/meta.json +115 -0
  380. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001-self-check-url.yaml +58 -0
  381. package/src/skills/deep-research/tests/index.yaml +20 -0
  382. package/src/skills/deep-research/tests/rubrics/self-check-url.md +34 -0
  383. package/src/skills/deep-research/workflows/base-checklist.md +19 -0
  384. package/src/skills/deep-research/workflows/benchmark.md +38 -0
  385. package/src/skills/deep-research/workflows/competitor.md +44 -0
  386. package/src/skills/deep-research/workflows/custom.md +32 -0
  387. package/src/skills/deep-research/workflows/market.md +44 -0
  388. package/src/skills/deep-research/workflows/technology.md +40 -0
  389. package/src/skills/deep-research/workflows/trend.md +40 -0
  390. package/src/skills/execute-task/README.md +44 -0
  391. package/src/skills/execute-task/SKILL.md +292 -0
  392. package/src/skills/execute-task/algorithms/execution-strategy.md +136 -0
  393. package/src/skills/execute-task/knowledge/context-checkpoints.md +75 -0
  394. package/src/skills/execute-task/knowledge/ticket-structure.md +70 -0
  395. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-1.md +5 -0
  396. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-2.md +5 -0
  397. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-3.md +5 -0
  398. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/judge.json +124 -0
  399. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-1.md +4 -0
  400. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-2.md +4 -0
  401. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-3.md +4 -0
  402. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-1.md +4 -0
  403. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-2.md +4 -0
  404. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-3.md +11 -0
  405. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/meta.json +88 -0
  406. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001-no-ticket-creation.yaml +48 -0
  407. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-1.md +5 -0
  408. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-2.md +6 -0
  409. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-3.md +5 -0
  410. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/judge.json +124 -0
  411. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-1.md +4 -0
  412. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-2.md +4 -0
  413. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-3.md +8 -0
  414. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-1.md +9 -0
  415. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-2.md +26 -0
  416. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-3.md +4 -0
  417. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/meta.json +89 -0
  418. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002-no-duplicate-dod.yaml +44 -0
  419. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-1.md +5 -0
  420. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-2.md +5 -0
  421. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-3.md +5 -0
  422. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/judge.json +46 -0
  423. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/meta.json +37 -0
  424. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003-verification-proportionality.yaml +46 -0
  425. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-1.md +18 -0
  426. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-2.md +16 -0
  427. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-3.md +14 -0
  428. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/judge.json +124 -0
  429. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-1.md +5 -0
  430. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-2.md +5 -0
  431. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-3.md +1 -0
  432. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-1.md +8 -0
  433. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-2.md +5 -0
  434. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-3.md +4 -0
  435. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/meta.json +89 -0
  436. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004-no-foreign-ticket-edit.yaml +50 -0
  437. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-1.md +5 -0
  438. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-2.md +5 -0
  439. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-3.md +5 -0
  440. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/judge.json +124 -0
  441. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-1.md +15 -0
  442. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-2.md +4 -0
  443. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-3.md +5 -0
  444. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-1.md +11 -0
  445. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-2.md +11 -0
  446. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-3.md +4 -0
  447. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/meta.json +88 -0
  448. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005-ticket-fields-updated.yaml +39 -0
  449. package/src/skills/execute-task/tests/fixtures/IMPL-902-create-file.md +41 -0
  450. package/src/skills/execute-task/tests/fixtures/IMPL-904-current-task.md +40 -0
  451. package/src/skills/execute-task/tests/fixtures/IMPL-906-fill-ticket.md +42 -0
  452. package/src/skills/execute-task/tests/fixtures/QA-901-button-click.md +41 -0
  453. package/src/skills/execute-task/tests/fixtures/QA-903-visual-figma.md +40 -0
  454. package/src/skills/execute-task/tests/fixtures/TASK-905-done-with-typo.md +36 -0
  455. package/src/skills/execute-task/tests/index.yaml +39 -0
  456. package/src/skills/execute-task/tests/rubrics/no-duplicate-dod.md +22 -0
  457. package/src/skills/execute-task/tests/rubrics/no-foreign-ticket-edit.md +20 -0
  458. package/src/skills/execute-task/tests/rubrics/no-ticket-creation.md +21 -0
  459. package/src/skills/execute-task/tests/rubrics/ticket-fields-updated.md +23 -0
  460. package/src/skills/execute-task/tests/rubrics/verification-proportionality.md +22 -0
  461. package/src/skills/execute-task/workflows/execute.md +104 -0
  462. package/src/skills/manual-testing/README.md +63 -0
  463. package/src/skills/manual-testing/SKILL.md +176 -0
  464. package/src/skills/manual-testing/algorithms/blocked-tool-strategy.md +74 -0
  465. package/src/skills/manual-testing/algorithms/bug-severity.md +73 -0
  466. package/src/skills/manual-testing/algorithms/mcp-budget.md +97 -0
  467. package/src/skills/manual-testing/algorithms/test-prioritization.md +69 -0
  468. package/src/skills/manual-testing/knowledge/browser-extension-testing.md +102 -0
  469. package/src/skills/manual-testing/knowledge/browser-tools.md +114 -0
  470. package/src/skills/manual-testing/knowledge/desktop-tools-advanced.md +92 -0
  471. package/src/skills/manual-testing/knowledge/desktop-tools-core.md +76 -0
  472. package/src/skills/manual-testing/knowledge/sandbox-advanced.md +83 -0
  473. package/src/skills/manual-testing/knowledge/sandbox-core.md +67 -0
  474. package/src/skills/manual-testing/knowledge/stateful-edge-cases.md +69 -0
  475. package/src/skills/manual-testing/knowledge/test-case-design.md +107 -0
  476. package/src/skills/manual-testing/knowledge/testing-types.md +45 -0
  477. package/src/skills/manual-testing/templates/bug-report.md +52 -0
  478. package/src/skills/manual-testing/templates/test-case.md +34 -0
  479. package/src/skills/manual-testing/templates/test-plan.md +97 -0
  480. package/src/skills/manual-testing/templates/test-session-report.md +56 -0
  481. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-1.md +34 -0
  482. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +32 -0
  483. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +30 -0
  484. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/judge.json +163 -0
  485. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-1.md +0 -0
  486. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-2.md +7 -0
  487. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-3.md +0 -0
  488. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-1.md +4 -0
  489. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-2.md +15 -0
  490. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-3.md +8 -0
  491. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-1.md +5 -0
  492. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-2.md +7 -0
  493. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-3.md +7 -0
  494. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/meta.json +114 -0
  495. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001-sandbox-mandatory.yaml +38 -0
  496. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md +44 -0
  497. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +32 -0
  498. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +47 -0
  499. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/judge.json +163 -0
  500. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-1.md +19 -0
  501. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-2.md +15 -0
  502. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-3.md +24 -0
  503. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-1.md +19 -0
  504. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-2.md +13 -0
  505. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-3.md +18 -0
  506. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-1.md +21 -0
  507. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-2.md +15 -0
  508. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-3.md +14 -0
  509. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/meta.json +114 -0
  510. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002-visual-tc-screenshot.yaml +37 -0
  511. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-1.md +76 -0
  512. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-2.md +71 -0
  513. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-3.md +85 -0
  514. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/judge.json +46 -0
  515. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/meta.json +36 -0
  516. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003-qa-non-ui-assertion.yaml +65 -0
  517. package/src/skills/manual-testing/tests/index.yaml +30 -0
  518. package/src/skills/manual-testing/tests/last-run-tc001-sonnet.log +140 -0
  519. package/src/skills/manual-testing/tests/last-run-tc002.log +1 -0
  520. package/src/skills/manual-testing/tests/last-run.log +1469 -0
  521. package/src/skills/manual-testing/tests/rubrics/qa-non-ui-assertion.md +31 -0
  522. package/src/skills/manual-testing/tests/rubrics/sandbox-mandatory.md +20 -0
  523. package/src/skills/manual-testing/tests/rubrics/visual-tc-screenshot.md +21 -0
  524. package/src/skills/manual-testing/workflows/acceptance.md +80 -0
  525. package/src/skills/manual-testing/workflows/exploratory.md +84 -0
  526. package/src/skills/manual-testing/workflows/regression.md +76 -0
  527. package/src/skills/manual-testing/workflows/smoke.md +109 -0
  528. package/src/skills/manual-testing/workflows/test-plan.md +75 -0
  529. package/src/skills/review-result/README.md +59 -0
  530. package/src/skills/review-result/SKILL.md +138 -0
  531. package/src/skills/review-result/algorithms/verification.md +112 -0
  532. package/src/skills/review-result/knowledge/dod-patterns.md +115 -0
  533. package/src/skills/review-result/scripts/verify-artifacts.js +384 -0
  534. package/src/skills/review-result/templates/verdict.md +153 -0
  535. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-1.md +22 -0
  536. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-2.md +7 -0
  537. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-3.md +21 -0
  538. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-1.md +6 -0
  539. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-2.md +6 -0
  540. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-3.md +18 -0
  541. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/judge.json +164 -0
  542. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-1.md +5 -0
  543. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-2.md +7 -0
  544. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-3.md +6 -0
  545. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-1.md +49 -0
  546. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-2.md +28 -0
  547. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-3.md +37 -0
  548. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-1.md +22 -0
  549. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-2.md +13 -0
  550. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-3.md +21 -0
  551. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/meta.json +116 -0
  552. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001-visual-tc-trigger.yaml +51 -0
  553. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-1.md +23 -0
  554. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-2.md +22 -0
  555. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-3.md +28 -0
  556. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-1.md +4 -0
  557. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-2.md +36 -0
  558. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-3.md +4 -0
  559. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/judge.json +163 -0
  560. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-1.md +4 -0
  561. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-2.md +0 -0
  562. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-3.md +4 -0
  563. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-1.md +39 -0
  564. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-2.md +25 -0
  565. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-3.md +32 -0
  566. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-1.md +34 -0
  567. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-2.md +8 -0
  568. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-3.md +23 -0
  569. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/meta.json +115 -0
  570. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002-path-line-suffix.yaml +39 -0
  571. package/src/skills/review-result/tests/fixtures/IMPL-902-path-with-line.md +43 -0
  572. package/src/skills/review-result/tests/fixtures/QA-901-visual-button.md +46 -0
  573. package/src/skills/review-result/tests/index.yaml +25 -0
  574. package/src/skills/review-result/tests/rubrics/path-line-suffix.md +19 -0
  575. package/src/skills/review-result/tests/rubrics/visual-tc-trigger.md +19 -0
  576. package/src/skills/review-result/workflows/review.md +209 -0
@@ -0,0 +1,901 @@
1
+ # =============================================================================
2
+ # Pipeline Configuration — формат конфигурации пайплайна
3
+ # =============================================================================
4
+ # Описывает цепочку этапов (stages), доступных агентов, goto-логику переходов,
5
+ # retry-стратегии и настройки выполнения.
6
+ #
7
+ # Runner читает этот файл и автономно оркестрирует работу:
8
+ # node .workflow/src/runner.mjs --config .workflow/config/pipeline.yaml
9
+ #
10
+ # Переменные в goto.params:
11
+ # $result.* — поля из результата текущего stage
12
+ # $context.* — переменные из секции context (обновляются через params)
13
+ # $counter.* — значения счётчиков (обновляются стейджами type: update-counter)
14
+ # =============================================================================
15
+
16
+ pipeline:
17
+ name: "default"
18
+ version: "1.0"
19
+
20
+ # ===========================================================================
21
+ # Агенты (agents)
22
+ # ===========================================================================
23
+ # Каждый агент — это CLI-инструмент, который runner вызывает через child_process.
24
+ # Формат:
25
+ # <agent-id>:
26
+ # command: <string> — исполняемый файл (должен быть в PATH)
27
+ # args: <string[]> — аргументы командной строки
28
+ # workdir: <string> — рабочая директория (по умолчанию ".")
29
+ # capabilities: <string[]> — возможности агента (text, multimodal, ...)
30
+ # description: <string> — описание агента (опционально)
31
+ #
32
+ # Runner добавляет промпт последним аргументом автоматически.
33
+ # Роль (skill) передаётся через stage.instructions, а не через args.
34
+ # Скрипт-агенты (script-*) — детерминированы, capabilities к ним не применяются.
35
+ # ===========================================================================
36
+ agents:
37
+ claude-haiku:
38
+ command: "claude"
39
+ args: ["--model", "claude-haiku-4-5", "--permission-mode", "bypassPermissions", "-p"]
40
+ workdir: "."
41
+ capabilities: [text, multimodal]
42
+ description: "Claude Haiku — лёгкая быстрая модель, поддержка изображений"
43
+
44
+ claude-sonnet:
45
+ command: "claude"
46
+ args: ["--model", "claude-sonnet-4-6", "--permission-mode", "bypassPermissions", "-p"]
47
+ workdir: "."
48
+ capabilities: [text, multimodal]
49
+ description: "Claude Sonnet — быстрая модель, поддержка изображений"
50
+
51
+ claude-opus:
52
+ command: "claude"
53
+ args: ["--model", "claude-opus-4-7", "--permission-mode", "bypassPermissions", "-p"]
54
+ workdir: "."
55
+ capabilities: [text, multimodal]
56
+ description: "Claude Opus — мощная модель, поддержка изображений"
57
+
58
+ qwen-code:
59
+ command: "qwen"
60
+ args: ["-y", "-p"]
61
+ workdir: "."
62
+ capabilities: [text]
63
+ description: "Qwen Code — кодовый агент, только текст"
64
+
65
+ kilo-code:
66
+ command: "kilo"
67
+ args: ["-m", "kilo/kilo-auto/free", "--agent", "orchestrator", "run"]
68
+ workdir: "."
69
+ capabilities: [text]
70
+ description: "Kilo мульти-режимный (architect, code, debug)"
71
+
72
+ kilo-glm:
73
+ command: "kilo"
74
+ args: ["-m", "zai/glm-5.1", "--agent", "code", "run"]
75
+ workdir: "."
76
+ capabilities: [text]
77
+ description: "Kilo GLM"
78
+
79
+ kilo-glm-air:
80
+ command: "kilo"
81
+ args: ["-m", "zai/glm-4.5-air", "--agent", "code", "run"]
82
+ workdir: "."
83
+ capabilities: [text]
84
+ description: "Kilo GLM air"
85
+
86
+ kilo-deepseek:
87
+ command: "kilo"
88
+ args: ["-m", "deepseek/deepseek-reasoner", "--agent", "code", "run"]
89
+ workdir: "."
90
+ capabilities: [text]
91
+ description: "Kilo deepseek"
92
+
93
+ kilo-minimax:
94
+ command: "kilo"
95
+ args: ["-m", "kilo/minimax/minimax-m2.7", "--agent", "code", "run"]
96
+ workdir: "."
97
+ capabilities: [text]
98
+ description: "Kilo minimax"
99
+
100
+ kilo-free:
101
+ command: "kilo"
102
+ args: ["-m", "kilo/kilo-auto/free", "--agent", "code", "run"]
103
+ workdir: "."
104
+ capabilities: [text]
105
+ description: "Kilo free"
106
+
107
+ script-move:
108
+ command: "node"
109
+ args: [".workflow/src/scripts/move-ticket.js"]
110
+ workdir: "."
111
+ description: "Скрипт для перемещения тикетов между директориями"
112
+
113
+ script-pick:
114
+ command: "node"
115
+ args: [".workflow/src/scripts/pick-next-task.js"]
116
+ workdir: "."
117
+ description: "Скрипт для выбора следующего тикета из ready/"
118
+
119
+ script-move-ready:
120
+ command: "node"
121
+ args: [".workflow/src/scripts/move-to-ready.js"]
122
+ workdir: "."
123
+ description: "Скрипт для перемещения тикетов из backlog/ в ready/"
124
+
125
+ script-check-conditions:
126
+ command: "node"
127
+ args: [".workflow/src/scripts/check-conditions.js"]
128
+ workdir: "."
129
+ description: "Скрипт для проверки условий тикетов в backlog/"
130
+
131
+ script-check-plan-decomposed:
132
+ command: "node"
133
+ args: [".workflow/src/scripts/check-plan-decomposed.js"]
134
+ workdir: "."
135
+ description: "Скрипт для проверки, декомпозирован ли текущий план"
136
+
137
+ script-get-all-ids:
138
+ command: "node"
139
+ args: [".workflow/src/scripts/get-next-id.js", "--all-from-config"]
140
+ workdir: "."
141
+ description: "Выделяет стартовые номера для всех префиксов из config.yaml → task_types (используется стадией allocate-ticket-ids перед decompose-plan)"
142
+
143
+ script-check-relevance:
144
+ command: "node"
145
+ args: [".workflow/src/scripts/check-relevance.js"]
146
+ workdir: "."
147
+ description: "Скрипт проверки актуальности тикета (заменяет скил check-relevance)"
148
+
149
+ script-move-to-review:
150
+ command: "node"
151
+ args: [".workflow/src/scripts/move-to-review.js"]
152
+ workdir: "."
153
+ description: "Скрипт для перемещения завершённых тикетов из in-progress/ в review/"
154
+
155
+ script-check-templates:
156
+ command: "node"
157
+ args: [".workflow/src/scripts/check-plan-templates.js"]
158
+ workdir: "."
159
+ description: "Проверка и активация шаблонов планов по триггерам"
160
+
161
+ script-check-mcp:
162
+ command: "node"
163
+ args: [".workflow/src/scripts/check-mcp.js"]
164
+ workdir: "."
165
+ description: "Проверка доступности MCP-серверов"
166
+
167
+ script-verify-artifacts:
168
+ command: "node"
169
+ args: [".workflow/src/skills/review-result/scripts/verify-artifacts.js"]
170
+ workdir: "."
171
+ description: "Механическая предпроверка артефактов тикета перед AI-ревью (DoD %, result_filled, files_exist)"
172
+
173
+ script-complete-plan:
174
+ command: "node"
175
+ args: [".workflow/src/scripts/complete-plan.js"]
176
+ workdir: "."
177
+ description: "Завершает план (status: completed) и архивирует done-тикеты"
178
+
179
+ script-verify-atomicity:
180
+ command: "node"
181
+ args: [".workflow/src/skills/decompose-plan/scripts/verify-atomicity.js"]
182
+ workdir: "."
183
+ description: "Машинная проверка атомарности тикетов после декомпозиции"
184
+
185
+ script-check-atomicity-limit:
186
+ command: "node"
187
+ args: [".workflow/src/skills/decompose-plan/scripts/check-atomicity-limit.js"]
188
+ workdir: "."
189
+ description: "Проверка лимита попыток атомарности без инкремента счётчика"
190
+
191
+
192
+ # Дефолтный список агентов для стейджа, если у него не задан свой agents / agents_by_type.
193
+ default_agents: [claude-sonnet, kilo-deepseek]
194
+
195
+ # ===========================================================================
196
+ # Этапы (stages)
197
+ # ===========================================================================
198
+ # Каждый stage описывает один шаг пайплайна.
199
+ # Формат:
200
+ # <stage-id>:
201
+ # description: <string> — что делает этот этап
202
+ # agents: <id[]> — упорядоченный список кандидатов (по приоритету)
203
+ # skill: <skill-id> — какой skill использовать (.workflow/src/skills/<skill>/SKILL.md)
204
+ # instructions: <string> — доп. инструкции, передаваемые агенту в промпте
205
+ # counter: <string> — имя счётчика попыток для этого stage
206
+ # agents_by_type: — маршрутизация списка агентов по типу задачи (task_type);
207
+ # полностью перекрывает stage.agents / stage.instructions
208
+ # <type>:
209
+ # agents: <id[]>
210
+ # instructions: <string>
211
+ # goto: — логика переходов по результату
212
+ # <status>: — ключ = статус результата агента
213
+ # stage: <stage-id> — следующий stage
214
+ # params: <map> — параметры, передаваемые в context следующего stage
215
+ # default: — fallback если статус не совпал ни с одним ключом
216
+ #
217
+ # Логика выбора агента (единая для всех стейджей):
218
+ # 1. Взять список: agents_by_type[task_type].agents (если задан), иначе stage.agents,
219
+ # иначе pipeline.default_agents.
220
+ # 2. Отфильтровать по required_capabilities тикета: агент должен покрывать ВСЕ.
221
+ # 3. Если список пуст → тикет/стейдж уходит в blocked со статусом "no_capable_agent".
222
+ # 4. Попытка N (1-based) берёт элемент N списка.
223
+ # 5. Если N > длины списка → blocked "attempts_exhausted".
224
+ # 6. Любая неудача (exit≠0 / review: failed) → cursor++, attempt++.
225
+ #
226
+ # Специальные значения stage:
227
+ # "end" — завершение пайплайна
228
+ #
229
+ # Встроенный тип стейджа (type: update-counter):
230
+ # Инкрементирует счётчик без вызова агента.
231
+ # type: update-counter — встроенный обработчик runner'а
232
+ # counter: <string> — имя счётчика
233
+ # max: <int> — при достижении max возвращает статус "max_reached"
234
+ # goto:
235
+ # default: <stage> — следующий стейдж (счётчик < max)
236
+ # max_reached: <stage> — стейдж при достижении max
237
+ # ===========================================================================
238
+ stages:
239
+
240
+ # -------------------------------------------------------------------------
241
+ # 0. pick-first-task
242
+ # Выбирает следующую задачу из ready/ по приоритету и зависимостям
243
+ # Если ready/ пуст — проверяет review/
244
+ # -------------------------------------------------------------------------
245
+ pick-first-task:
246
+ description: "Выбрать задачу задачу из ready по приоритету"
247
+ agent: script-pick
248
+ goto:
249
+ found:
250
+ stage: move-to-in-progress
251
+ params:
252
+ ticket_id: "$result.ticket_id"
253
+ task_type: "$result.type"
254
+ required_capabilities: "$result.required_capabilities"
255
+ target: in-progress
256
+ in_review:
257
+ stage: verify-artifacts
258
+ params:
259
+ ticket_id: "$result.ticket_id"
260
+ required_capabilities: "$result.required_capabilities"
261
+ attempt: "1"
262
+ completed_in_progress:
263
+ stage: move-to-review
264
+ params:
265
+ ticket_id: "$result.ticket_id"
266
+ required_capabilities: "$result.required_capabilities"
267
+ in_progress:
268
+ stage: check-relevance
269
+ params:
270
+ ticket_id: "$result.ticket_id"
271
+ task_type: "$result.type"
272
+ required_capabilities: "$result.required_capabilities"
273
+ empty: check-plan-templates
274
+ error: create-report
275
+
276
+ # -------------------------------------------------------------------------
277
+ # 0a. check-plan-templates
278
+ # Проверяет шаблоны планов в plans/templates/.
279
+ # Если триггер сработал — создаёт план в plans/current/ со статусом approved.
280
+ # Всегда переходит на check-plan-decomposition.
281
+ # -------------------------------------------------------------------------
282
+ check-plan-templates:
283
+ description: "Проверить шаблоны планов и создать планы по триггерам"
284
+ agent: script-check-templates
285
+ goto:
286
+ plan_created: check-plan-decomposition
287
+ no_triggers: check-plan-decomposition
288
+ default: check-plan-decomposition
289
+ error: check-plan-decomposition
290
+
291
+ # -------------------------------------------------------------------------
292
+ # 0b. check-plan-decomposition
293
+ # Проверяет состояние декомпозиции планов и статус активации.
294
+ # Результаты:
295
+ # - needs_decomposition — approved-план без тикетов → allocate-ticket-ids → decompose
296
+ # - awaiting_atomicity — approved-план с тикетами, но без активации → verify-atomicity
297
+ # (защита от сценария: decompose отработал, но verify-atomicity
298
+ # был пропущен/прерван — план не должен тихо уйти в check-conditions
299
+ # со статусом approved; атомарность обязана быть проверена до активации).
300
+ # - decomposed — active-план с тикетами → штатный check-conditions
301
+ # - no_plan / default — нет работы для pipeline → check-conditions
302
+ # -------------------------------------------------------------------------
303
+ check-plan-decomposition:
304
+ description: "Проверить состояние декомпозиции и активации планов"
305
+ agent: script-check-plan-decomposed
306
+ goto:
307
+ needs_decomposition:
308
+ stage: allocate-ticket-ids
309
+ params:
310
+ plan_file: "$result.plan_file"
311
+ awaiting_atomicity:
312
+ stage: check-atomicity-limit
313
+ params:
314
+ plan_file: "$result.plan_file"
315
+ decomposed: check-conditions
316
+ no_plan: check-conditions
317
+ default: check-conditions
318
+ error: check-conditions
319
+
320
+ # -------------------------------------------------------------------------
321
+ # 0c. allocate-ticket-ids
322
+ # Выделяет стартовые номера для всех префиксов из config.yaml → task_types
323
+ # ДО запуска декомпозиции. Результат (id_ranges) передаётся в context и
324
+ # далее в decompose-plan через instructions. Это устраняет класс ошибок
325
+ # с коллизиями ID, когда агент-декомпозитор начинает нумерацию с 001
326
+ # Архитектурный принцип: решения про ID принимает инфраструктура, а не агент.
327
+ # -------------------------------------------------------------------------
328
+ allocate-ticket-ids:
329
+ description: "Выделить стартовые номера ID для всех префиксов перед декомпозицией"
330
+ agent: script-get-all-ids
331
+ timeout: 60
332
+ goto:
333
+ default:
334
+ stage: decompose-plan
335
+ params:
336
+ plan_file: "$context.plan_file"
337
+ id_ranges_json: "$result.id_ranges_json"
338
+ error: check-conditions
339
+
340
+ # -------------------------------------------------------------------------
341
+ # 0d. decompose-plan
342
+ # Декомпозирует план на тикеты в backlog/
343
+ # На входе ОБЯЗАТЕЛЬНО: plan_file и id_ranges_json (выделенные стадией
344
+ # allocate-ticket-ids). id_ranges_json — это JSON-строка вида
345
+ # {"QA":26,"HUMAN":2,...}; декомпозитор парсит её сам (см. decompose.md,
346
+ # шаг 9.0). Передача именно строки, а не объекта, обусловлена тем, что
347
+ # runner workflow-ai при подстановке $context.* в instructions применяет
348
+ # неявный toString() — объекты превращаются в "[object Object]".
349
+ # Декомпозитор НЕ вызывает get-next-id.js самостоятельно.
350
+ # -------------------------------------------------------------------------
351
+ decompose-plan:
352
+ description: "Декомпозировать план на тикеты"
353
+ agents: [claude-sonnet, kilo-glm]
354
+ skill: decompose-plan
355
+ instructions: "Декомпозируй план .workflow/$context.plan_file на тикеты. ID тикетов бери ТОЛЬКО из JSON-карты id_ranges_json=$context.id_ranges_json — это стартовые номера по префиксам в формате {\"PREFIX\":N_start,...}, уже выделенные стадией allocate-ticket-ids. Распарси JSON, используй значения как есть. НЕ вызывай get-next-id.js и НЕ изобретай номера самостоятельно. Подробности: см. шаг 9.0 в workflows/decompose.md. При наличии $context.atomicity_failures — учти их при декомпозиции: исправь неатомарные тикеты."
356
+ goto:
357
+ default: check-atomicity-limit
358
+
359
+ # -------------------------------------------------------------------------
360
+ # 0e. check-atomicity-limit
361
+ # Проверяет counter atomicity_check_attempts без инкремента перед запуском verify-atomicity.
362
+ # Если counter >= max (3) — bypass на check-conditions (защита от бесконечного цикла).
363
+ # ВАЖНО: использует скрипт (НЕ update-counter), чтобы НЕ инкрементировать счётчик.
364
+ # Инкремент происходит только в increment-atomicity-counter при failed verify-atomicity.
365
+ # -------------------------------------------------------------------------
366
+ check-atomicity-limit:
367
+ description: "Проверить лимит попыток проверки атомарности (без инкремента)"
368
+ agent: script-check-atomicity-limit
369
+ timeout: 10
370
+ goto:
371
+ passed:
372
+ stage: verify-atomicity
373
+ params:
374
+ plan_file: "$context.plan_file"
375
+ failed:
376
+ stage: check-conditions
377
+ default:
378
+ stage: verify-atomicity
379
+ params:
380
+ plan_file: "$context.plan_file"
381
+ error:
382
+ stage: check-conditions
383
+
384
+ # -------------------------------------------------------------------------
385
+ # 0f. verify-atomicity
386
+ # Машинная проверка атомарности тикетов после декомпозиции.
387
+ # При passed → plan.status: approved → active (через activatePlan в скрипте) → check-conditions.
388
+ # При failed → increment-atomicity-counter → decompose-plan (feedback loop с atomicity_failures).
389
+ # plan_file берётся из $context (передан через decompose-plan.params или через
390
+ # check-plan-decomposition → check-atomicity-limit при awaiting_atomicity-сценарии).
391
+ # -------------------------------------------------------------------------
392
+ verify-atomicity:
393
+ description: "Машинная проверка атомарности тикетов и активация плана при passed"
394
+ agent: script-verify-atomicity
395
+ timeout: 60
396
+ goto:
397
+ passed:
398
+ stage: check-conditions
399
+ failed:
400
+ stage: increment-atomicity-counter
401
+ params:
402
+ atomicity_failures: "$result.atomicity_failures"
403
+ default:
404
+ stage: check-conditions
405
+ error:
406
+ stage: check-conditions
407
+
408
+ # -------------------------------------------------------------------------
409
+ # 0g. increment-atomicity-counter
410
+ # Инкрементирует counter при failed verify-atomicity.
411
+ # При max_reached — bypass на check-conditions. Иначе — возврат на decompose-plan.
412
+ # -------------------------------------------------------------------------
413
+ increment-atomicity-counter:
414
+ description: "Инкрементировать счётчик попыток проверки атомарности"
415
+ type: update-counter
416
+ counter: atomicity_check_attempts
417
+ max: 3
418
+ goto:
419
+ default:
420
+ stage: decompose-plan
421
+ params:
422
+ atomicity_failures: "$context.atomicity_failures"
423
+ max_reached:
424
+ stage: check-conditions
425
+
426
+ # -------------------------------------------------------------------------
427
+ # 1. check-conditions
428
+ # Проверяет условия тикетов в backlog/, выводит список готовых
429
+ # -------------------------------------------------------------------------
430
+ check-conditions:
431
+ description: "Проверить условия тикетов в backlog, вывести готовые"
432
+ agent: script-check-conditions
433
+ goto:
434
+ has_ready:
435
+ stage: move-to-ready
436
+ params:
437
+ ready_tickets: "$result.ready_tickets"
438
+ default: pick-next-task
439
+ empty: create-report
440
+ error: create-report
441
+
442
+ # -------------------------------------------------------------------------
443
+ # 1b. move-to-ready
444
+ # Перемещает тикеты из backlog/ в ready/ (по списку из check-conditions)
445
+ # -------------------------------------------------------------------------
446
+ move-to-ready:
447
+ description: "Переместить готовые тикеты из backlog в ready"
448
+ agent: script-move-ready
449
+ timeout: 120
450
+ goto:
451
+ default: pick-next-task
452
+
453
+ # -------------------------------------------------------------------------
454
+ # 2. pick-next-task
455
+ # Выбирает следующую задачу из ready/ по приоритету и зависимостям
456
+ # Если ready/ пуст — проверяет review/
457
+ # -------------------------------------------------------------------------
458
+ pick-next-task:
459
+ description: "Выбрать следующую задачу из ready по приоритету"
460
+ agent: script-pick
461
+ goto:
462
+ found:
463
+ stage: move-to-in-progress
464
+ params:
465
+ ticket_id: "$result.ticket_id"
466
+ task_type: "$result.type"
467
+ required_capabilities: "$result.required_capabilities"
468
+ target: in-progress
469
+ in_review:
470
+ stage: verify-artifacts
471
+ params:
472
+ ticket_id: "$result.ticket_id"
473
+ required_capabilities: "$result.required_capabilities"
474
+ attempt: "1"
475
+ completed_in_progress:
476
+ stage: move-to-review
477
+ params:
478
+ ticket_id: "$result.ticket_id"
479
+ required_capabilities: "$result.required_capabilities"
480
+ in_progress:
481
+ stage: check-relevance
482
+ params:
483
+ ticket_id: "$result.ticket_id"
484
+ task_type: "$result.type"
485
+ required_capabilities: "$result.required_capabilities"
486
+ empty: check-conditions
487
+ default: check-conditions
488
+ error: create-report
489
+
490
+ # -------------------------------------------------------------------------
491
+ # 2b. move-to-in-progress
492
+ # Перемещает тикет из ready/ в in-progress/ перед выполнением
493
+ # -------------------------------------------------------------------------
494
+ move-to-in-progress:
495
+ description: "Переместить тикет из ready в in-progress"
496
+ agent: script-move
497
+ timeout: 120
498
+ goto:
499
+ default:
500
+ stage: check-relevance
501
+ params:
502
+ ticket_id: "$context.ticket_id"
503
+ error:
504
+ stage: check-relevance
505
+ params:
506
+ ticket_id: "$context.ticket_id"
507
+
508
+ # -------------------------------------------------------------------------
509
+ # 2c. check-relevance
510
+ # Проверяет актуальность тикета перед выполнением (план активен, DoD не выполнен)
511
+ # Fail-safe: default fallback → execute-task (лучше выполнить лишний, чем пропустить)
512
+ # -------------------------------------------------------------------------
513
+ check-relevance:
514
+ description: "Проверить актуальность тикета перед выполнением (детерминированный скрипт)"
515
+ agent: script-check-relevance
516
+ timeout: 120
517
+ goto:
518
+ relevant:
519
+ stage: check-mcp
520
+ params:
521
+ ticket_id: "$context.ticket_id"
522
+ irrelevant:
523
+ stage: move-ticket
524
+ params:
525
+ ticket_id: "$context.ticket_id"
526
+ target: done
527
+ default:
528
+ stage: check-mcp
529
+ params:
530
+ ticket_id: "$context.ticket_id"
531
+
532
+ # -------------------------------------------------------------------------
533
+ # 2d. check-mcp
534
+ # Проверяет доступность MCP-серверов перед запуском задач, которым они нужны.
535
+ # Список типов тикетов задаётся в context.mcp_require_for (см. секцию context
536
+ # в конце файла). Это проектная настройка — менять там.
537
+ #
538
+ # Поведение:
539
+ # - task_type входит в mcp_require_for + MCP доступны → status: ok → execute-task
540
+ # - task_type входит в mcp_require_for + MCP упали → status: fail → blocked
541
+ # - task_type НЕ входит в mcp_require_for → status: skipped → execute-task
542
+ # -------------------------------------------------------------------------
543
+ check-mcp:
544
+ description: "Проверить доступность MCP-серверов для типов тикетов из mcp_require_for"
545
+ agent: script-check-mcp
546
+ timeout: 60
547
+ # ВАЖНО: workflow-ai runner нормализует статусы через STATUS_ALIASES:
548
+ # "ok" → "passed"
549
+ # "fail" → "failed"
550
+ # Поэтому в goto используются канонические passed/failed, а не ok/fail из вывода скрипта.
551
+ # "skipped" не входит в таблицу синонимов, остаётся как есть.
552
+ goto:
553
+ passed:
554
+ stage: execute-task
555
+ params:
556
+ ticket_id: "$context.ticket_id"
557
+ skipped:
558
+ stage: execute-task
559
+ params:
560
+ ticket_id: "$context.ticket_id"
561
+ failed:
562
+ stage: move-ticket
563
+ params:
564
+ ticket_id: "$context.ticket_id"
565
+ target: blocked
566
+ default:
567
+ stage: execute-task
568
+ params:
569
+ ticket_id: "$context.ticket_id"
570
+
571
+ # -------------------------------------------------------------------------
572
+ # 3. execute-task
573
+ # Выполняет выбранную задачу (код, документация, план и т.д.)
574
+ # -------------------------------------------------------------------------
575
+ execute-task:
576
+ description: "Выполнить выбранную задачу"
577
+ skill: execute-task
578
+ counter: task_attempts
579
+ agents: [kilo-free, kilo-glm-air, claude-haiku, claude-sonnet, claude-opus, kilo-minimax, kilo-deepseek]
580
+ agents_by_type:
581
+ coach:
582
+ agents: [kilo-glm, claude-sonnet, kilo-minimax, kilo-deepseek]
583
+ instructions: "Твоя роль: coach"
584
+ qa:
585
+ agents: [claude-haiku, kilo-glm, claude-sonnet, claude-opus, kilo-minimax]
586
+ instructions: "Твоя роль: manual-testing"
587
+ arch:
588
+ agents: [claude-opus, kilo-glm]
589
+ goto:
590
+ default:
591
+ stage: move-to-review
592
+ params:
593
+ ticket_id: "$context.ticket_id"
594
+ attempt: "$counter.task_attempts"
595
+ target: review
596
+ # Runner возвращает status=blocked при no_capable_agent / attempts_exhausted
597
+ # (resolveAgent в runner.mjs, строка ~926). Направляем тикет сразу в blocked/,
598
+ # минуя move-to-review → verify-artifacts → increment-task-attempts: иначе
599
+ # тикет крутится 6 итераций вхолостую (execute-task не может его взять,
600
+ # verify-artifacts фейлится с пустым result, счётчик достигает max → blocked
601
+ # всё равно). Прямой маршрут экономит ~6 пустых итераций на тикет.
602
+ blocked:
603
+ stage: move-ticket
604
+ params:
605
+ ticket_id: "$context.ticket_id"
606
+ target: blocked
607
+ error:
608
+ stage: move-to-review
609
+ params:
610
+ ticket_id: "$context.ticket_id"
611
+ attempt: "$counter.task_attempts"
612
+ target: review
613
+
614
+ # -------------------------------------------------------------------------
615
+ # 3b. move-to-review
616
+ # Перемещает тикет в review/ после выполнения задачи
617
+ # -------------------------------------------------------------------------
618
+ move-to-review:
619
+ description: "Переместить тикет в review после выполнения"
620
+ agent: script-move-to-review
621
+ timeout: 120
622
+ goto:
623
+ skipped:
624
+ stage: pick-next-task
625
+ default:
626
+ stage: verify-artifacts
627
+ params:
628
+ ticket_id: "$context.ticket_id"
629
+ attempt: "$counter.task_attempts"
630
+
631
+ # -------------------------------------------------------------------------
632
+ # 3c. verify-artifacts
633
+ # Механическая предпроверка артефактов тикета перед AI-ревью.
634
+ # Блокирует AI-рационализацию: если DoD пустой или Result не заполнен —
635
+ # сразу failed → increment-task-attempts, без вызова дорогой модели.
636
+ # Критерии failed: result_filled==false | dod_completion_pct==0 | missing_files.
637
+ # Runner нормализует ok→passed, fail→failed через STATUS_ALIASES.
638
+ # -------------------------------------------------------------------------
639
+ verify-artifacts:
640
+ description: "Механическая предпроверка артефактов тикета перед AI-ревью"
641
+ agent: script-verify-artifacts
642
+ timeout: 60
643
+ goto:
644
+ passed:
645
+ stage: review-result
646
+ params:
647
+ ticket_id: "$context.ticket_id"
648
+ attempt: "$counter.task_attempts"
649
+ failed:
650
+ stage: increment-task-attempts
651
+ params:
652
+ ticket_id: "$context.ticket_id"
653
+ default:
654
+ stage: review-result
655
+ params:
656
+ ticket_id: "$context.ticket_id"
657
+ attempt: "$counter.task_attempts"
658
+ error:
659
+ stage: review-result
660
+ params:
661
+ ticket_id: "$context.ticket_id"
662
+ attempt: "$counter.task_attempts"
663
+
664
+ # -------------------------------------------------------------------------
665
+ # 4. review-result
666
+ # Проверяет результат выполнения на соответствие DoD тикета.
667
+ # При failed — переходит на increment-task-attempts для учёта попытки.
668
+ # -------------------------------------------------------------------------
669
+ review-result:
670
+ description: "Проверить результат выполнения на соответствие DoD тикета"
671
+ agents: [claude-haiku, kilo-glm, claude-sonnet, kilo-minimax]
672
+ skill: review-result
673
+ counter: task_attempts
674
+ goto:
675
+ passed:
676
+ stage: move-ticket
677
+ params:
678
+ ticket_id: "$context.ticket_id"
679
+ target: done
680
+ failed:
681
+ stage: increment-task-attempts
682
+ params:
683
+ ticket_id: "$context.ticket_id"
684
+ default:
685
+ stage: move-ticket
686
+ params:
687
+ ticket_id: "$context.ticket_id"
688
+ target: backlog
689
+ error:
690
+ stage: increment-task-attempts
691
+ params:
692
+ ticket_id: "$context.ticket_id"
693
+
694
+ # -------------------------------------------------------------------------
695
+ # 4b. increment-task-attempts
696
+ # Отдельный стейдж обновления счётчика попыток выполнения тикета.
697
+ # При достижении max — блокирует тикет. Иначе — возвращает в очередь.
698
+ # -------------------------------------------------------------------------
699
+ increment-task-attempts:
700
+ description: "Обновить счётчик попыток выполнения тикета"
701
+ type: update-counter
702
+ counter: task_attempts
703
+ max: 6
704
+ goto:
705
+ default:
706
+ stage: move-ticket
707
+ params:
708
+ ticket_id: "$context.ticket_id"
709
+ target: ready
710
+ max_reached:
711
+ stage: move-ticket
712
+ params:
713
+ ticket_id: "$context.ticket_id"
714
+ target: blocked
715
+
716
+ # -------------------------------------------------------------------------
717
+ # 5. move-ticket
718
+ # Перемещает тикет в целевую директорию (done/ или blocked/)
719
+ # -------------------------------------------------------------------------
720
+ move-ticket:
721
+ description: "Переместить тикет (done / blocked)"
722
+ agent: script-move
723
+ timeout: 120
724
+ goto:
725
+ default: pick-next-task
726
+ error: pick-next-task
727
+
728
+ # -------------------------------------------------------------------------
729
+ # 6. create-report
730
+ # Создаёт итоговый отчёт по выполненным задачам текущего цикла
731
+ # -------------------------------------------------------------------------
732
+ create-report:
733
+ description: "Создать итоговый отчёт по выполненным задачам"
734
+ agents: [kilo-glm, claude-sonnet, kilo-minimax, kilo-deepseek]
735
+ skill: create-report
736
+ counter: create_report_attempts
737
+ goto:
738
+ default:
739
+ stage: analyze-report
740
+ params:
741
+ report_id: "$result.report_id"
742
+ # blocked означает, что required_capabilities из контекста (от предыдущего
743
+ # тикета) не покрыты ни одним агентом create-report. Это не фатально —
744
+ # завершаем пайплайн, отчёт не создан, но данные не теряются.
745
+ blocked: end
746
+ error:
747
+ stage: increment-create-report-attempts
748
+
749
+ # Счётчик попыток для create-report (ротация моделей при API-ошибках)
750
+ increment-create-report-attempts:
751
+ description: "Обновить счётчик попыток create-report"
752
+ type: update-counter
753
+ counter: create_report_attempts
754
+ max: 3
755
+ goto:
756
+ default: create-report
757
+ max_reached: end
758
+
759
+ # -------------------------------------------------------------------------
760
+ # 7. analyze-report
761
+ # Анализирует отчёт: план выполнен полностью или есть пробелы?
762
+ # При has_gaps — переходит на increment-plan-iterations для учёта итерации.
763
+ # -------------------------------------------------------------------------
764
+ analyze-report:
765
+ description: "Проанализировать отчёт: план выполнен полностью?"
766
+ agents: [kilo-glm, claude-sonnet, kilo-minimax, kilo-deepseek]
767
+ skill: analyze-report
768
+ counter: analyze_report_attempts
769
+ goto:
770
+ completed: complete-plan
771
+ has_gaps:
772
+ stage: increment-plan-iterations
773
+ params:
774
+ gaps: "$result.gaps"
775
+ report_id: "$context.report_id"
776
+ # blocked по тем же причинам, что и в create-report — завершаем пайплайн.
777
+ blocked: end
778
+ error:
779
+ stage: increment-analyze-report-attempts
780
+
781
+ # Счётчик попыток для analyze-report (ротация моделей при API-ошибках)
782
+ increment-analyze-report-attempts:
783
+ description: "Обновить счётчик попыток analyze-report"
784
+ type: update-counter
785
+ counter: analyze_report_attempts
786
+ max: 3
787
+ goto:
788
+ default: analyze-report
789
+ max_reached: end
790
+
791
+ # -------------------------------------------------------------------------
792
+ # 7a. complete-plan
793
+ # Завершает план: обновляет status → completed, архивирует done-тикеты.
794
+ # Если plan_id не задан в контексте — ищет единственный активный план.
795
+ # При not_ready (не все тикеты завершены) — тоже завершает пайплайн (end),
796
+ # т.к. analyze-report уже подтвердил completed.
797
+ # -------------------------------------------------------------------------
798
+ complete-plan:
799
+ description: "Завершить план (status: completed) и архивировать тикеты"
800
+ agent: script-complete-plan
801
+ timeout: 120
802
+ goto:
803
+ completed: end
804
+ not_ready: end
805
+ no_plan: end
806
+ default: end
807
+ error: end
808
+
809
+ # -------------------------------------------------------------------------
810
+ # 7b. increment-plan-iterations
811
+ # Отдельный стейдж обновления счётчика итераций анализа плана.
812
+ # При достижении max — завершает пайплайн. Иначе — декомпозирует пробелы.
813
+ # -------------------------------------------------------------------------
814
+ increment-plan-iterations:
815
+ description: "Обновить счётчик итераций анализа плана"
816
+ type: update-counter
817
+ counter: plan_iterations
818
+ max: 2
819
+ goto:
820
+ default:
821
+ stage: decompose-gaps
822
+ max_reached: end
823
+
824
+ # -------------------------------------------------------------------------
825
+ # 8. decompose-gaps
826
+ # Декомпозирует недочёты из анализа отчёта в новые тикеты (backlog/)
827
+ # -------------------------------------------------------------------------
828
+ decompose-gaps:
829
+ description: "Декомпозировать недочёты из отчёта в новые тикеты"
830
+ agents: [claude-sonnet, kilo-minimax, kilo-deepseek, kilo-glm]
831
+ skill: decompose-gaps
832
+ goto:
833
+ default: check-conditions
834
+
835
+ # ===========================================================================
836
+ # Точка входа (entry)
837
+ # ===========================================================================
838
+ # Stage, с которого начинается выполнение пайплайна.
839
+ # ===========================================================================
840
+ entry: pick-first-task
841
+
842
+ # ===========================================================================
843
+ # Контекст (context)
844
+ # ===========================================================================
845
+ # Переменные, доступные всем stages через $context.*.
846
+ # Runner автоматически обновляет context через params в goto-переходах.
847
+ # Начальные значения задаются здесь или через CLI:
848
+ # node runner.mjs --plan PLAN-003
849
+ # ===========================================================================
850
+ context:
851
+ plan_id: "" # ID плана (задаётся при запуске)
852
+ mcp_require_for: "qa" # comma-separated типы тикетов, для которых check-mcp проверяет MCP
853
+
854
+ # ===========================================================================
855
+ # Защита файлов (protected_files)
856
+ # ===========================================================================
857
+ # Glob-паттерны файлов, в которые агентам запрещена запись.
858
+ # Runner проверяет эти паттерны и блокирует изменения.
859
+ # Пути указываются относительно корня проекта (без префикса .workflow/)
860
+ # ===========================================================================
861
+ protected_files:
862
+ - ".workflow/plans/**" # Планы — только для чтения
863
+ - ".workflow/config/**" # Конфигурация
864
+ - pattern: ".workflow/tickets/**"
865
+ mode: structure # Защита только структуры (создание/удаление файлов)
866
+
867
+ # ===========================================================================
868
+ # Доверенные агенты (trusted_agents)
869
+ # ===========================================================================
870
+ # Агенты, для которых FileGuard не откатывает изменения в protected_files.
871
+ # Поддерживает glob-паттерны: "script-*" соответствует "script-move" и т.д.
872
+ # ===========================================================================
873
+ trusted_agents:
874
+ - "script-check-templates" # Создаёт планы в plans/current/
875
+ - "script-*" # Все скрипты
876
+
877
+ # ===========================================================================
878
+ # Доверенные стейджи (trusted_stages)
879
+ # ===========================================================================
880
+ # Стейджи, которые могут создавать/удалять файлы в protected_files.
881
+ # Например, decompose-plan и decompose-gaps создают тикеты.
882
+ # ===========================================================================
883
+ trusted_stages:
884
+ - "decompose-plan"
885
+ - "decompose-gaps"
886
+
887
+ # ===========================================================================
888
+ # Настройки выполнения (execution)
889
+ # ===========================================================================
890
+ # Параметры, управляющие поведением runner'а.
891
+ #
892
+ # max_steps: — абсолютный лимит шагов за один запуск (защита от зацикливания)
893
+ # delay_between_stages: — пауза между этапами в секундах
894
+ # timeout_per_stage: — таймаут на один этап в секундах (по истечении — ошибка)
895
+ # log_file: — путь к файлу логов (относительно корня проекта)
896
+ # ===========================================================================
897
+ execution:
898
+ max_steps: 1500
899
+ delay_between_stages: 5
900
+ timeout_per_stage: 1800
901
+ log_file: ".workflow/logs/pipeline.log"