workflow-ai 1.0.63 → 1.0.64

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