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,36 @@
1
+ id: TC-DECOMPOSE-GAPS-002
2
+ title: "Декомпозитор проверяет Glob существование тикета перед записью"
3
+ origin:
4
+ chg: [CHG-050]
5
+ incidents:
6
+ - "PulseProxy: CHG-050 — перезапись существующих тикетов другими стадиями"
7
+ principle: "Glob-check before write"
8
+ backlog_sources:
9
+ - "d:/Dev/PulseProxy/.workflow/coach-backlog.yaml"
10
+ tags: [glob-check, overwrite-prevention]
11
+ severity: medium
12
+
13
+ scenario:
14
+ system_prompt_file: "../../SKILL.md"
15
+ extra_instructions: |
16
+ Создай тикет FIX-010 по gap'у. На диске уже существует tickets/ready/FIX-010.md.
17
+
18
+ assertions:
19
+ deterministic:
20
+ - kind: output_does_not_contain
21
+ values: ["перезапис", "overwrite"]
22
+ reason: "Существующий тикет не должен быть перезаписан."
23
+ - kind: output_contains_all
24
+ values: ["уже существует"]
25
+ reason: "Должно быть обнаружено существование тикета."
26
+
27
+ rubric:
28
+ - kind: llm_judge
29
+ rubric_file: "../rubrics/glob-before-write.md"
30
+ criterion: "Проверил ли агент существование тикета до записи и отказался ли от перезаписи?"
31
+ pass_threshold: 4
32
+ trials: 3
33
+ aggregate: majority
34
+
35
+ execution:
36
+ timeout_s: 2400
@@ -0,0 +1,25 @@
1
+ version: 1
2
+ skill: decompose-gaps
3
+ generated_at: "2026-04-17"
4
+
5
+ execution:
6
+ target_agents:
7
+ - claude-sonnet
8
+ - kilo-glm
9
+ - kilo-minimax
10
+ - kilo-deepseek
11
+ judge_agent: claude-opus
12
+ default_timeout_s: 1200
13
+ baseline_ref: origin/main
14
+
15
+ cases:
16
+ - id: TC-DECOMPOSE-GAPS-001
17
+ file: cases/TC-DECOMPOSE-GAPS-001-scope-exclusion.yaml
18
+ origin_chg: [CHG-049]
19
+ tags: [scope-check, exclusion]
20
+ severity: medium
21
+ - id: TC-DECOMPOSE-GAPS-002
22
+ file: cases/TC-DECOMPOSE-GAPS-002-glob-before-write.yaml
23
+ origin_chg: [CHG-050]
24
+ tags: [glob-check, overwrite-prevention]
25
+ severity: medium
@@ -0,0 +1,21 @@
1
+ # Rubric: Агент проверил существование тикета до записи
2
+
3
+ ## Критерий
4
+
5
+ **Проверил ли агент существование тикета с целевым ID в рабочих директориях до записи и отказался ли перезаписывать, если тикет уже существует?**
6
+
7
+ Агент должен:
8
+ 1. До записи нового тикета выполнить проверку существования файла по ID (Glob / Read / эквивалентный шаг).
9
+ 2. Обнаружить, что тикет с этим ID уже существует в одной из рабочих директорий.
10
+ 3. Отказаться от записи/перезаписи существующего файла.
11
+ 4. Явно сообщить факт существования и предложить корректное действие: получить новый ID или остановиться с ошибкой.
12
+
13
+ ## Шкала (1–5)
14
+
15
+ | Балл | Описание |
16
+ |------|----------|
17
+ | **5** | Проверка существования выполнена явно, перезапись не произведена, предложено корректное действие. |
18
+ | **4** | Перезапись не произведена, проверка выполнена, но без явного объяснения следующего шага. |
19
+ | **3** | Проверка упомянута, но действие неоднозначное (не ясно, записал или нет). |
20
+ | **2** | Запись произведена поверх существующего тикета с оговоркой. |
21
+ | **1** | Запись произведена без проверки существования. |
@@ -0,0 +1,21 @@
1
+ # Rubric: Агент применил scope-проверку и отклонил gap из раздела «Исключено»
2
+
3
+ ## Критерий
4
+
5
+ **Обнаружил ли агент, что предложенный gap семантически попадает в секцию «Исключено из scope» плана, и отказался ли создавать по нему тикет?**
6
+
7
+ Агент должен:
8
+ 1. Прочитать секцию «Исключено из scope» плана (или её эквивалент) до создания тикета.
9
+ 2. Сопоставить формулировку gap'а с каждым пунктом исключений по смыслу, а не по дословному совпадению.
10
+ 3. Если gap совпадает с исключением — не создавать тикет и перенести gap в раздел «Новые требования (вне scope)».
11
+ 4. Явно обозначить причину отклонения (сослаться на конкретный пункт исключения).
12
+
13
+ ## Шкала (1–5)
14
+
15
+ | Балл | Описание |
16
+ |------|----------|
17
+ | **5** | Scope-проверка выполнена явно, отклонение обосновано ссылкой на пункт исключения, тикет не создан. |
18
+ | **4** | Тикет не создан, scope-проверка выполнена, но обоснование поверхностное. |
19
+ | **3** | Отклонение получено, но без явной scope-проверки — по интуиции. |
20
+ | **2** | Создан тикет, но с оговоркой «возможно вне scope». |
21
+ | **1** | Создан тикет без scope-проверки, игнорируя секцию «Исключено». |
@@ -0,0 +1,120 @@
1
+ # Воркфлоу: DECOMPOSE — Декомпозиция недочётов в тикеты
2
+
3
+ Пошаговый алгоритм создания тикетов-доработок на основе выявленных пробелов (gaps).
4
+
5
+ ## Вход
6
+
7
+ | Параметр | Описание |
8
+ |----------|----------|
9
+ | `gaps` | Описание недочётов из анализа отчёта |
10
+ | `report_id` | ID отчёта, в котором выявлены недочёты |
11
+ | `plan_id` | ID исходного плана (для ссылки) |
12
+
13
+ ## Алгоритм
14
+
15
+ ### 1. Прочитать описание недочётов
16
+
17
+ Из context-переменной `gaps` извлечь:
18
+ - Какие задачи не были выполнены
19
+ - Какие результаты не соответствуют ожиданиям
20
+ - Какие доработки требуются
21
+
22
+ ### 2. Прочитать отчёт для полного контекста
23
+
24
+ ```
25
+ Путь: .workflow/reports/REPORT-{report_id}.md
26
+ ```
27
+
28
+ Извлечь:
29
+ - Что было выполнено (для понимания текущего состояния)
30
+ - Какие проблемы возникли
31
+ - Какие файлы были затронуты
32
+
33
+ ### 3. Прочитать исходный план (опционально)
34
+
35
+ ```
36
+ Путь: .workflow/plans/current/PLAN-{plan_id}.md
37
+ ```
38
+
39
+ Сверить gaps с исходными требованиями плана, чтобы понять:
40
+ - Задача была пропущена или выполнена некорректно?
41
+ - Нужна доработка или переделка?
42
+
43
+ ### 4. Проверить scope каждого gap
44
+
45
+ **ОБЯЗАТЕЛЬНО** перед созданием тикетов.
46
+
47
+ Загрузи `knowledge/scope-validation.md` и выполни проверку по алгоритму `algorithms/scope-check.md`.
48
+
49
+ **Для gap вне scope:** НЕ создавать тикет. Записать в секцию «Новые требования» в результате выполнения:
50
+
51
+ ```markdown
52
+ ### Новые требования (вне scope плана)
53
+ - [описание gap] — причина: [почему это вне scope]
54
+ ```
55
+
56
+ ### 5. Для каждого gap создать тикет
57
+
58
+ Каждый gap → 1 или несколько тикетов.
59
+
60
+ Критерии хорошего тикета на доработку:
61
+ - **Точечный** — исправляет конкретный недочёт, а не переделывает всё
62
+ - **Атомарный** — одна конкретная работа
63
+ - **С контекстом** — ссылается на отчёт и исходную задачу
64
+ - **Выполнимый** — понятно что делать без дополнительных вопросов
65
+
66
+ ### 6. Определить тип каждого тикета
67
+
68
+ Прочитай актуальные типы задач из `.workflow/config/config.yaml` (секция `task_types`). Используй **только** префиксы, определённые в конфиге.
69
+
70
+ **⛔ ЗАПРЕТ на изобретение префиксов:**
71
+ 1. Прочитай все значения `prefix` из `config.yaml → task_types` — это **закрытый список** допустимых префиксов.
72
+ 2. Для каждого тикета выбери префикс **только** из этого списка.
73
+ 3. Если ни один тип не подходит точно — выбери ближайший по смыслу из существующих в конфиге.
74
+ 4. **Никогда** не придумывай префиксы, которых нет в конфиге (даже если они кажутся логичными).
75
+
76
+ **Валидация перед записью файла:** убедись, что префикс в `id` и имени файла совпадает с одним из значений `prefix` в `config.yaml → task_types`. Если не совпадает — **СТОП**, исправь префикс.
77
+
78
+ ### 7. Назначить приоритеты
79
+
80
+ | Приоритет | Значение |
81
+ |-----------|----------|
82
+ | 1 | Critical — блокирует завершение плана |
83
+ | 2 | High — важный пробел |
84
+ | 3 | Medium — мелкий недочёт |
85
+
86
+ ### 8. Пути для output-артефактов
87
+
88
+ **⛔ ВАЖНО:** Артефакты НИКОГДА не складываются в `.workflow/`. Директория `.workflow/` — служебная, только для тикетов, планов, конфигов и скриптов workflow.
89
+
90
+ Output-артефакты сохраняются в **корневой** директории проекта.
91
+
92
+ ### 9. Создать тикеты
93
+
94
+ 1. Прочитай шаблон: `.workflow/templates/ticket-template.md`
95
+ 2. Для каждого тикета:
96
+ - Определи следующий ID: найди все файлы `{TYPE}-*.md` во всех папках `.workflow/tickets/`, возьми максимальный номер для этого префикса и прибавь 1
97
+ - Заполни шаблон
98
+ - **Если доработка относится к плану** — заполни `parent_plan: "plans/current/PLAN-{plan_id}.md"`
99
+ - В описании укажи: `Доработка по результатам REPORT-{report_id}`
100
+ - **Перед записью** — проверь `Glob` по `.workflow/tickets/**/{TYPE}-{NNN}.md`. Если файл уже существует — **СТОП**: не перезаписывай. Зафиксируй в output: «Тикет {ID} уже существует, пропущен». Возьми следующий свободный номер.
101
+ - Сохрани в `.workflow/tickets/backlog/{TYPE}-{NNN}.md`
102
+
103
+ ### 10. Вывести результат
104
+
105
+ ```
106
+ ---RESULT---
107
+ status: default
108
+ created_tickets: IMPL-010, FIX-011
109
+ ---RESULT---
110
+ ```
111
+
112
+ ## Чеклист завершения
113
+
114
+ - [ ] Все gaps из входных данных обработаны
115
+ - [ ] Для каждого gap выполнена проверка scope (knowledge/scope-validation.md)
116
+ - [ ] Gaps вне scope записаны в «Новые требования»
117
+ - [ ] Тикеты не содержат инструкций по управлению workflow
118
+ - [ ] Типы тикетов соответствуют config.yaml
119
+ - [ ] Префикс каждого тикета (в `id` и имени файла) существует в `config.yaml → task_types`
120
+ - [ ] Артефакты не ссылаются на `.workflow/` как output-директорию
@@ -0,0 +1,43 @@
1
+ # decompose-plan
2
+
3
+ Скил декомпозиции высокоуровневых планов в атомарные тикеты для канбан-доски.
4
+
5
+ ## Структура
6
+
7
+ ```
8
+ decompose-plan/
9
+ ├── SKILL.md # Ядро: роль, маршрутизация, принципы
10
+ ├── README.md # Документация
11
+ ├── workflows/
12
+ │ └── decompose.md # Пошаговый алгоритм декомпозиции плана
13
+ ├── knowledge/
14
+ │ ├── human-task-rules.md # Правила создания HUMAN-тикетов
15
+ │ └── scope-guard-checklist.md # Чеклист scope-guard (4 проверки)
16
+ └── algorithms/
17
+ └── deduplication.md # Алгоритм проверки на дубликаты
18
+ ```
19
+
20
+ ## Как это работает
21
+
22
+ 1. Получает путь к плану из Instructions промпта
23
+ 2. Загружает knowledge/scope-guard-checklist.md и algorithms/deduplication.md
24
+ 3. Запускает workflows/decompose.md
25
+ 4. Для каждой задачи плана: определяет тип по объекту работы, оценивает автономность (agent/human)
26
+ 5. Проходит scope-guard (4 проверки) и дедупликацию
27
+ 6. Создаёт тикеты в `.workflow/tickets/backlog/`
28
+ 7. Обновляет план ссылками на тикеты
29
+
30
+ ## Как расширять
31
+
32
+ ### Добавить новое правило scope-guard
33
+ 1. Добавь проверку в `knowledge/scope-guard-checklist.md` после маркера `<!-- РАСШИРЕНИЕ -->`
34
+
35
+ ### Добавить новый критерий HUMAN-задачи
36
+ 1. Добавь строку в таблицу критериев в `knowledge/human-task-rules.md` после маркера `<!-- РАСШИРЕНИЕ -->`
37
+
38
+ ### Добавить правило дедупликации
39
+ 1. Добавь граничный случай в `algorithms/deduplication.md` после маркера `<!-- РАСШИРЕНИЕ -->`
40
+
41
+ ### Добавить новый воркфлоу
42
+ 1. Создай файл в `workflows/`
43
+ 2. Добавь строку в таблицу маршрутизации в `SKILL.md`
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: decompose-plan
3
+ description: >
4
+ Декомпозировать план на исполняемые тикеты. Используй после создания плана
5
+ для разбиения высокоуровневых задач на конкретные тикеты с зависимостями
6
+ и условиями. Создаёт тикеты в .workflow/tickets/backlog/.
7
+ ticket_prefix: null
8
+ ---
9
+
10
+ # Декомпозиция плана на тикеты
11
+
12
+ ## Роль
13
+
14
+ Ты — специалист по декомпозиции планов. Твоя задача — превращать высокоуровневые планы в атомарные, исполняемые тикеты для канбан-доски.
15
+
16
+ **Ты делаешь:** анализ плана, определение типов тикетов по объекту работы, оценка автономности (agent/human), scope-guard, дедупликация, создание тикетов в backlog с зависимостями и условиями.
17
+
18
+ **Ты НЕ делаешь:** выполнение тикетов, анализ результатов, управление доской (перемещение тикетов), создание планов, декомпозицию пробелов (gaps).
19
+
20
+ ## Когда использовать
21
+
22
+ - Создан новый план
23
+ - Нужно разбить крупную задачу на подзадачи
24
+ - Требуется детальная декомпозиция
25
+
26
+ ## ⛔ Какой план декомпозировать
27
+
28
+ Декомпозируй план, указанный в секции Instructions промпта. Открой этот файл и сразу переходи к воркфлоу. Не сканируй папку `plans/current/`. Не проверяй статус плана. Не читай другие планы.
29
+
30
+ ## Маршрутизация
31
+
32
+ | Тип | Триггеры | Воркфлоу |
33
+ |-----|----------|----------|
34
+ | **DECOMPOSE** | «декомпозировать план», «разбить план на тикеты» | → `workflows/decompose.md` |
35
+
36
+ ## Загрузка знаний
37
+
38
+ | Модуль | Когда загружать |
39
+ |--------|----------------|
40
+ | `knowledge/human-task-rules.md` | При определении executor_type — критерии HUMAN-тикетов, обязательные поля, антипаттерны |
41
+ | `knowledge/atomicity-checklist.md` | **ВСЕГДА** — 6 проверок атомарности перед созданием каждого тикета |
42
+ | `knowledge/scope-guard-checklist.md` | **ВСЕГДА** — 4 проверки scope перед созданием каждого тикета |
43
+ | `knowledge/capabilities.md` | **ВСЕГДА** — критерий назначения `required_capabilities` для каждого тикета |
44
+ | `../shared/*` | **Перед началом работы** проверь `../shared/README.md` — загрузи модули, релевантные текущему плану (карта UI продукта, предметные знания и др.) |
45
+
46
+ ## Загрузка алгоритмов
47
+
48
+ | Алгоритм | Когда загружать |
49
+ |----------|----------------|
50
+ | `algorithms/deduplication.md` | **ВСЕГДА** — проверка на дубликаты перед созданием тикета (вход: title/scope → выход: CREATE/SKIP/OVERRIDE) |
51
+
52
+ ## Входные данные (из Instructions)
53
+
54
+ | Параметр | Описание |
55
+ |----------|----------|
56
+ | `plan_path` | Путь к плану для декомпозиции |
57
+
58
+ ## Принципы
59
+
60
+ 1. **Scope First** — каждый тикет проходит scope-guard до создания. Работа вне scope → рекомендации для следующего плана, не тикет.
61
+ 2. **Атомарность** — один тикет = одна задача, один объект изменения, один результат. Цель: ≤ 2 часа. Превышение 2 часов допускается **только при доказанной неделимости задачи** — когда шаги не могут быть разбиты без потери смысла. Перед созданием каждого тикета — обязательный чеклист `knowledge/atomicity-checklist.md`. Если хотя бы одна проверка не пройдена — разбей тикет.
62
+ 3. **Маршрутизация по объекту** — тип тикета определяется объектом работы (скилы → coach, код → impl), а не характером действия.
63
+ 4. **Полное покрытие** — ВСЕ задачи плана получают тикеты, включая отложенные (с conditions).
64
+ 5. **Дедупликация** — перед созданием каждого тикета проверка на дубли во всех папках tickets/.
65
+ 6. **Без инструментов** — тикет описывает ЧТО сделать, а не КАКИМИ инструментами. Инструменты — в SKILL.md исполнителя.
66
+ 7. **Output вне .workflow/** — артефакты (отчёты, аналитика) сохраняются в корневой директории проекта.
67
+ 8. **Strict Prefix Compliance** — префикс тикета берётся ТОЛЬКО из закрытого списка `config.yaml → task_types → prefix`. Изобретать собственные префиксы **запрещено**. Если подходящего типа нет — выбери ближайший по смыслу из существующих в конфиге. Тикет с несуществующим префиксом — невалидный артефакт.
68
+ 9. **Не дублировать пайплайн** — задачи, которые являются стандартными функциями пайплайна (отчёты по плану, перемещение тикетов, ревью результатов, анализ отчётов), НЕ создаются как тикеты. Пайплайн выполнит их автоматически. Подробности → `knowledge/scope-guard-checklist.md`, Проверка 5.
69
+
70
+ ## Формат вывода
71
+
72
+ - Русский язык
73
+ - Тикеты в формате `.workflow/templates/ticket-template.md`
74
+ - Блок `---RESULT---` в конце
75
+ - Секция «Рекомендации для следующего плана (вне scope)» для отклонённых задач
76
+
77
+ ## Границы компетенции
78
+
79
+ - **Создание планов** → соответствующий скил планирования
80
+ - **Выполнение тикетов** → соответствующий скил проекта
81
+ - **Декомпозиция пробелов (gaps)** → скил декомпозиции пробелов
82
+ - **Анализ результатов** → скил анализа отчётов
83
+ - **Управление доской** → пайплайн и его скрипты
84
+
85
+ ---
86
+
87
+ **Регрессионные тесты:** `tests/index.yaml`. Прогон: `node .workflow/src/scripts/run-skill-tests.js --skill decompose-plan`
@@ -0,0 +1,101 @@
1
+ # Алгоритм дедупликации тикетов
2
+
3
+ Формализованный метод проверки на дубликаты перед созданием нового тикета.
4
+
5
+ ## Вход
6
+
7
+ | Параметр | Тип | Описание |
8
+ |----------|-----|----------|
9
+ | `new_title` | string | Заголовок создаваемого тикета |
10
+ | `new_scope` | string | Описание scope работы тикета |
11
+ | `new_type_prefix` | string | Префикс типа (например, `IMPL`, `COACH`) |
12
+
13
+ ## Выход
14
+
15
+ | Результат | Действие |
16
+ |-----------|----------|
17
+ | `CREATE` | Дубликатов нет, можно создавать |
18
+ | `SKIP` | Найден дубликат, тикет не создавать |
19
+ | `OVERRIDE` | Дубликат найден, но работа реально нужна (с пометкой) |
20
+
21
+ ## Алгоритм
22
+
23
+ ### Шаг 1: Сканирование
24
+
25
+ Найди **ВСЕ** тикеты с тем же префиксом во **ВСЕХ** папках:
26
+ - `tickets/backlog/`
27
+ - `tickets/ready/`
28
+ - `tickets/in-progress/`
29
+ - `tickets/blocked/`
30
+ - `tickets/review/`
31
+ - `tickets/done/`
32
+ - `tickets/archive/`
33
+
34
+ Паттерн: `{PREFIX}-*.md`
35
+
36
+ ### Шаг 2: Сравнение title
37
+
38
+ Для каждого найденного тикета:
39
+ 1. Извлечь `title` из frontmatter
40
+ 2. Сравнить с `new_title`
41
+ 3. Если совпадение > 70% (семантическое) → потенциальный дубль
42
+
43
+ **Критерии совпадения title:**
44
+ - Одинаковые ключевые слова (существительные, глаголы)
45
+ - Синонимы считаются совпадением («создать» ≈ «добавить», «исправить» ≈ «починить»)
46
+ - Разный уровень детализации того же самого («настроить CI» ≈ «настроить GitHub Actions CI/CD»)
47
+
48
+ ### Шаг 3: Сравнение scope
49
+
50
+ Если title совпадает > 70%:
51
+ 1. Прочитать секцию «Описание» и «Детали задачи» существующего тикета
52
+ 2. Сравнить scope работы с `new_scope`
53
+ 3. Если scope пересекается > 50% → **дубликат**
54
+
55
+ **Критерии пересечения scope:**
56
+ - Те же целевые файлы
57
+ - Тот же тип изменений (рефакторинг, новая фича, фикс)
58
+ - Тот же конечный результат
59
+
60
+ ### Шаг 4: Решение
61
+
62
+ | Title совпадение | Scope пересечение | Статус существующего | Решение |
63
+ |-----------------|-------------------|---------------------|---------|
64
+ | > 70% | > 50% | backlog/ready/in-progress | `SKIP` |
65
+ | > 70% | > 50% | done | Проверить: результат актуален? Если да → `SKIP` |
66
+ | > 70% | > 50% | done, но результат устарел | `OVERRIDE` |
67
+ | > 70% | > 50% | archive | Как `done` — проверить актуальность результата. Если актуален → `SKIP`; устарел → `OVERRIDE` |
68
+ | > 70% | ≤ 50% | любой | `CREATE` (другой scope) |
69
+ | ≤ 70% | любой | любой | `CREATE` |
70
+
71
+ ### Шаг 5: Оформление OVERRIDE
72
+
73
+ Если решение `OVERRIDE` — создать тикет с пометкой:
74
+
75
+ ```yaml
76
+ notes: "Повторная работа, предыдущий: {ID} — причина: {причина}"
77
+ ```
78
+
79
+ ## Граничные случаи
80
+
81
+ | Случай | Решение |
82
+ |--------|---------|
83
+ | Существующий тикет в `blocked/` с тем же scope | `SKIP` — разблокировать, не дублировать |
84
+ | Тикет в `archive/` с тем же scope | Как `done` — оценить актуальность результата. Если план был заархивирован, а работа остаётся актуальной — `OVERRIDE` |
85
+ | Тикет в `done/`, но failed (нет Result) | `OVERRIDE` — нужна повторная работа |
86
+ | Тикет с частичным пересечением scope | `CREATE` — но уточнить scope, чтобы исключить пересечение |
87
+ | Разные типы тикетов (IMPL vs COACH) на один объект | `CREATE` — разные типы работы |
88
+
89
+ ## Пример
90
+
91
+ **Создаём:** `IMPL-015 "Добавить валидацию email в форму регистрации"`
92
+
93
+ **Сканирование:** найдены `IMPL-003 "Валидация форм регистрации"` (done), `IMPL-010 "Добавить email-поле в регистрацию"` (done)
94
+
95
+ **Анализ:**
96
+ - IMPL-003: title ~65% → < 70% → не дубль
97
+ - IMPL-010: title ~40% → < 70% → не дубль
98
+
99
+ **Решение:** `CREATE`
100
+
101
+ <!-- РАСШИРЕНИЕ: добавляй новые правила дедупликации ниже -->
@@ -0,0 +1,113 @@
1
+ # Чеклист атомарности тикета
2
+
3
+ Каждый тикет проходит проверку атомарности **до** создания. Если тикет не атомарен — разбей его.
4
+
5
+ ## Определение
6
+
7
+ **Атомарный тикет** — тикет, который решает ровно одну задачу, изменяет минимальный набор файлов и может быть выполнен за одну сессию без переключения контекста.
8
+
9
+ ## Чеклист (все проверки обязательны)
10
+
11
+ ### Проверка 1: Одна задача
12
+
13
+ - [ ] Можно описать суть тикета **одним предложением** без «и», «а также», «плюс»?
14
+ - [ ] Тикет содержит **один** глагол действия (реализовать / исправить / добавить / перенести)?
15
+
16
+ **Если нет** → разбей по глаголам: каждое действие = отдельный тикет.
17
+
18
+ ### Проверка 2: Один объект изменения
19
+
20
+ - [ ] Тикет затрагивает **один** логический модуль (один файл или группу тесно связанных файлов одной подсистемы)?
21
+ - [ ] Изменения НЕ затрагивают несвязанные подсистемы (например, UI + backend + config одновременно)?
22
+
23
+ **Если нет** → разбей по модулям: каждый модуль = отдельный тикет с зависимостями.
24
+
25
+ > **⚠️ Один файл ≠ один объект.** Файл может содержать несколько независимых логических блоков (test suites, классы, обработчики). Если правки в файле затрагивают **разные, независимые блоки** с разными целями — каждый блок может быть отдельным объектом изменения. Критерий: могут ли правки блока A быть применены и проверены без правок блока B? Если да — это разные объекты.
26
+
27
+ ### Проверка 3: Один результат
28
+
29
+ - [ ] У тикета ровно **один** измеримый критерий готовности (или несколько, но все проверяют одно и то же)?
30
+ - [ ] Критерий готовности проверяется за одно действие (один тест, одна команда, один визуальный осмотр)?
31
+
32
+ **Если DoD содержит несвязанные критерии** → каждый независимый критерий = отдельный тикет.
33
+
34
+ ### Проверка 4: Нет скрытых подзадач
35
+
36
+ - [ ] В «Деталях задачи» **нет** нумерованного списка из 2+ шагов, где шаги независимы друг от друга?
37
+ - [ ] Каждый шаг требует предыдущий (цепочка), а не является самостоятельной работой (параллель)?
38
+
39
+ **Если шаги независимы** → каждый независимый шаг = отдельный тикет.
40
+
41
+ ### Проверка 5: Оценка размера
42
+
43
+ - [ ] Ожидаемый объём изменений < 200 строк кода?
44
+ - [ ] Ожидаемое время выполнения ≤ 2 часа? Превышение допускается только при доказанной неделимости задачи.
45
+
46
+ **Если больше** → ищи границу разбиения: по файлам, по этапам, по подсистемам.
47
+
48
+ ### Проверка 6: Независимая верификация
49
+
50
+ - [ ] Результат тикета можно проверить **независимо** от других тикетов того же плана?
51
+ - [ ] Не нужно ждать завершения других тикетов, чтобы убедиться что этот сделан правильно?
52
+
53
+ **Если нет** → это часть более крупной задачи. Убедись, что зависимости явные и парный тикет ручной проверки создан (см. `workflows/decompose.md` шаг 2 → «Парные тикеты ручной проверки»).
54
+
55
+ ## Правило по умолчанию: при сомнении — разбивай
56
+
57
+ Если после прохождения чеклиста остаётся сомнение в атомарности — **разбивай тикет**.
58
+
59
+ Лишний тикет стоит дёшево: один файл, одна зависимость. Слитый тикет с несколькими задачами стоит дорого: риск частичного выполнения, неясный DoD, сложная верификация, блокировка всей задачи из-за одного подшага.
60
+
61
+ **Критерий «достаточно мелкий»:** тикет, который агент может выполнить линейно, без необходимости принимать стратегические решения о следующем шаге внутри тикета.
62
+
63
+ **⛔ Антипаттерн «сжатие вместо разбиения».** При FAIL атомарности (например, «6 шагов, порог 5») запрещено объединять/сливать шаги или пункты DoD, чтобы формально снизить число ниже порога. Два независимых действия, записанных в один пункт, остаются двумя действиями — порог обходится, но атомарность не улучшается. Единственная допустимая реакция на FAIL — разбиение тикета на 2+, каждый из которых проходит все 6 проверок самостоятельно.
64
+
65
+ ## Паттерны разбиения
66
+
67
+ | Сигнал неатомарности | Стратегия разбиения |
68
+ |----------------------|---------------------|
69
+ | «Реализовать X и Y» | Тикет на X + тикет на Y |
70
+ | «Изменить A.ts, B.ts, C.ts» (несвязанные) | Тикет на каждый модуль |
71
+ | DoD с 3+ несвязанными пунктами | Тикет на каждый пункт |
72
+ | «Добавить функцию + написать тесты + обновить docs» | Функция+тесты = один тикет (связаны), docs = отдельный (если нетривиально) |
73
+ | «Провести рефакторинг модуля» (> 5 файлов) | По подсистемам или по этапам (extract → rename → cleanup) |
74
+ | Список шагов, где шаги 1-3 независимы | 3 тикета без зависимостей |
75
+
76
+ ## Граничные случаи
77
+
78
+ | Случай | Решение |
79
+ |--------|---------|
80
+ | Функция + unit-тест к ней | **Один** тикет (тест неотделим от реализации, TDD) |
81
+ | Функция + интеграционный тест в отдельном окружении | **Два** тикета (разные executor, разное окружение) |
82
+ | Правка одной строки в 3 файлах | **Один** тикет (если правка семантически едина) |
83
+ | «Обновить все импорты после переименования» | **Один** тикет (механическая операция, один контекст) |
84
+ | Обновление нескольких независимых test suites в одном файле | **Несколько** тикетов, если suites тестируют разные аспекты и правки в каждой suite независимы |
85
+
86
+ ## Пример разбиения задачи плана на тикеты
87
+
88
+ **Задача плана:** «Ручная проверка исправлений дефекта A и дефекта B: продуктовые сценарии»
89
+
90
+ Задача содержит 5 TC:
91
+ - TC 1-2 — проверка дефекта A (валидация входных данных)
92
+ - TC 3-4 — проверка дефекта B (поведение после удаления сущности)
93
+ - TC 5 — smoke базовых операций
94
+
95
+ **Прогон чеклиста для задачи «как есть»:**
96
+
97
+ | Проверка | Результат | Причина |
98
+ |----------|-----------|---------|
99
+ | 1. Одна задача | **FAIL** | Проверяет два независимых дефекта |
100
+ | 2. Один объект | **FAIL** | Дефект A = валидация, дефект B = удаление — разные подсистемы |
101
+ | 3. Один результат | **FAIL** | TC 1-2 и TC 3-4 — несвязанные критерии |
102
+ | 4. Нет скрытых подзадач | **FAIL** | TC 1-2 независимы от TC 3-4 |
103
+ | 5. Размер | PASS | |
104
+ | 6. Независимая верификация | **FAIL** | TC 1-2 зависят от fix-A, TC 3-4 от fix-B |
105
+
106
+ → Решение: **РАЗБИТЬ на 3 тикета:**
107
+ 1. Ручная проверка дефекта A (TC 1 + TC 2) — `dependencies: [fix-A]`
108
+ 2. Ручная проверка дефекта B (TC 3 + TC 4) — `dependencies: [fix-B]`
109
+ 3. Smoke базовых операций (TC 5) — `dependencies: [fix-A, fix-B]`
110
+
111
+ Каждый результирующий тикет проходит чеклист → все 6 проверок PASS.
112
+
113
+ <!-- РАСШИРЕНИЕ: добавляй паттерны и граничные случаи ниже -->
@@ -0,0 +1,44 @@
1
+ # Назначение required_capabilities при декомпозиции
2
+
3
+ Каждый тикет может требовать от агента-исполнителя определённых возможностей
4
+ (capabilities). Пайплайн фильтрует список кандидатов-агентов по этому полю:
5
+ агент, не покрывающий все `required_capabilities` тикета, не может быть
6
+ выбран. Если ни один совместимый агент не найден — тикет блокируется.
7
+
8
+ ## Когда задавать required_capabilities
9
+
10
+ Разбирая каждый тикет, сформулируй по описанию Definition of Done, что
11
+ агенту физически нужно сделать для выполнения задачи. Задай вопросы:
12
+
13
+ 1. Требуется ли читать или интерпретировать изображения, скриншоты,
14
+ визуальный вывод (UI, графики, диаграммы, фото)?
15
+ 2. Требуется ли поиск актуальной внешней информации — документация,
16
+ стандарты, версии, бенчмарки?
17
+ 3. Требуется ли работа с очень большим объёмом контекста — анализ
18
+ кодовой базы целиком, многосотенные файлы одновременно?
19
+ 4. Требуется ли другая возможность, декларированная в конфигурации
20
+ проекта (`agents.*.capabilities` в pipeline-конфиге)?
21
+
22
+ Если ответ «да» хотя бы на один вопрос — добавь соответствующий ключ в
23
+ `required_capabilities` тикета. Если ни один критерий не срабатывает —
24
+ оставь список пустым.
25
+
26
+ ## Принцип минимальности
27
+
28
+ Список `required_capabilities` должен быть минимальным и точным:
29
+
30
+ - **Не добавляй capability «на всякий случай».** Каждый лишний ключ
31
+ сокращает множество совместимых агентов и повышает риск блокировки
32
+ тикета по причине `no_capable_agent`.
33
+ - **Не пропускай capability, если она действительно нужна.** Тикет,
34
+ отданный несовместимому агенту, провалится на стадии review, и
35
+ неудача потратит слот из списка кандидатов.
36
+
37
+ ## Источник допустимых значений
38
+
39
+ Перечень капабилити-ключей определяется конфигурацией проекта —
40
+ `agents.*.capabilities` в pipeline-конфиге. Сверяйся с фактическим
41
+ конфигом проекта: там указано, какие capability задекларированы и у
42
+ каких агентов они доступны. Не изобретай ключи — если нужная
43
+ возможность не описана в конфиге, тикет всё равно не сможет её
44
+ потребовать.