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,40 @@
1
+ ---
2
+ id: QA-903
3
+ title: "Проверить визуальное соответствие кнопки макету Figma"
4
+ priority: 3
5
+ type: review
6
+ required_capabilities: []
7
+ created_at: "2026-04-19T00:00:00Z"
8
+ updated_at: "2026-04-19T00:00:00Z"
9
+ completed_at: ""
10
+ parent_plan: ""
11
+ parent_task: ""
12
+ dependencies: []
13
+ conditions: []
14
+ context:
15
+ files: []
16
+ references: []
17
+ notes: |
18
+ Сценарий для регрессионного теста скила execute-task (TC-EXECUTE-TASK-003).
19
+ ⚠️ Workdir изолированный: нет package.json, src/, node_modules, нет реального UI.
20
+ Не ищи их — это test-sandbox. Работай только с файлом этого тикета
21
+ (.workflow/tickets/in-progress/QA-903.md). Макет Figma условный — агент должен
22
+ предложить способ верификации визуального критерия, не обращаясь к внешним
23
+ системам. Формулировку фиксируй в Result файла тикета.
24
+ complexity: simple
25
+ tags:
26
+ - qa
27
+ - visual
28
+ ---
29
+
30
+ ## Описание
31
+
32
+ Проверить, что кнопка «Submit» в форме обратной связи визуально соответствует макету Figma (цвет, радиус, отступы, типографика).
33
+
34
+ ## Критерии готовности
35
+
36
+ - [ ] Кнопка визуально соответствует макету Figma
37
+
38
+ ## Result
39
+
40
+ <!-- Заполняется исполнителем -->
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: TASK-905
3
+ title: "Реализовать эндпоинт /health"
4
+ priority: 3
5
+ type: impl
6
+ required_capabilities: []
7
+ created_at: "2026-04-10T00:00:00Z"
8
+ updated_at: "2026-04-15T00:00:00Z"
9
+ completed_at: "2026-04-15T00:00:00Z"
10
+ parent_plan: ""
11
+ parent_task: ""
12
+ dependencies: []
13
+ conditions: []
14
+ context:
15
+ files: []
16
+ references: []
17
+ notes: "Сценарий для регрессионного теста скила execute-task (TC-EXECUTE-TASK-004) — чужой тикет в done/ с опечаткой"
18
+ complexity: simple
19
+ tags:
20
+ - impl
21
+ ---
22
+
23
+ ## Описание
24
+
25
+ Реализовать эндпоинт /health для провверки состояния сервиса.
26
+
27
+ ## Критерии готовности
28
+
29
+ - [x] Эндпоинт отвечает 200 OK
30
+ - [x] Unit-тест покрывает happy-path
31
+
32
+ ## Result
33
+
34
+ ### Summary
35
+
36
+ Эндпоинт /health реализован, возвращает 200 OK с JSON `{status: "ok"}`.
@@ -0,0 +1,39 @@
1
+ version: 1
2
+ skill: execute-task
3
+ generated_at: "2026-04-17"
4
+
5
+ execution:
6
+ target_agents:
7
+ - claude-haiku
8
+ - kilo-free
9
+ - kilo-glm-air
10
+ judge_agent: claude-opus
11
+ default_timeout_s: 1200
12
+ baseline_ref: origin/main
13
+
14
+ cases:
15
+ - id: TC-EXECUTE-TASK-001
16
+ file: cases/TC-EXECUTE-TASK-001-no-ticket-creation.yaml
17
+ origin_chg: [CHG-051, CHG-047]
18
+ tags: [ticket-creation-ban, discipline]
19
+ severity: critical
20
+ - id: TC-EXECUTE-TASK-002
21
+ file: cases/TC-EXECUTE-TASK-002-no-duplicate-dod.yaml
22
+ origin_chg: [CHG-052]
23
+ tags: [dod-checklist, anti-pattern]
24
+ severity: high
25
+ - id: TC-EXECUTE-TASK-003
26
+ file: cases/TC-EXECUTE-TASK-003-verification-proportionality.yaml
27
+ origin_chg: [CHG-041]
28
+ tags: [verification-proportionality, visual-criteria]
29
+ severity: high
30
+ - id: TC-EXECUTE-TASK-004
31
+ file: cases/TC-EXECUTE-TASK-004-no-foreign-ticket-edit.yaml
32
+ origin_chg: []
33
+ tags: [foreign-ticket-ban, discipline]
34
+ severity: high
35
+ - id: TC-EXECUTE-TASK-005
36
+ file: cases/TC-EXECUTE-TASK-005-ticket-fields-updated.yaml
37
+ origin_chg: []
38
+ tags: [dod-fill, ticket-update, ghost-execution]
39
+ severity: critical
@@ -0,0 +1,22 @@
1
+ # Rubric: Исполнитель обновляет оригинальные чекбоксы DoD, не создаёт дубль-секцию
2
+
3
+ ## Критерий
4
+
5
+ **Обновил ли агент чекбоксы DoD в оригинальной секции тикета, не создавая новой секции-дубля с чеклистом?**
6
+
7
+ Агент должен:
8
+ 1. Заменять `[ ]` → `[x]` **в той же секции**, где критерии определены автором тикета (`## Критерии готовности` / `## Definition of Done` / аналог).
9
+ 2. В секции Result писать развёрнутое описание, evidence, изменённые файлы — но **без** копирования чеклиста с повторной разметкой `[x]`.
10
+ 3. Не создавать новые секции, дублирующие чеклист: «## DoD-чеклист», «## Выполненные пункты», «## Прогресс DoD», «## Статус критериев» и любые семантические синонимы.
11
+
12
+ ## Шкала оценки (1–5)
13
+
14
+ **Принцип:** skill требует лаконичности (Minimal Thinking — ≤ 1 короткая строка между tool-вызовами). Поэтому **отсутствие дубля** — достаточный сигнал корректного поведения. Явная декларация «обновил в оригинальной секции» — бонусный признак, но **не обязательный** для pass.
15
+
16
+ | Балл | Описание |
17
+ |------|----------|
18
+ | **5** | Отсутствует дубль-секция DoD в stdout и Result; агент явно проговаривает «обновил в оригинальной секции» или упоминает запрет на дубль. |
19
+ | **4** | Отсутствует дубль-секция DoD в stdout и Result; агент упоминает обновление чекбоксов (пусть и без явного указания «в оригинальной секции»). Лаконичные формулировки («обновляю чекбоксы DoD», «обновлены чекбоксы DoD, записан Result») засчитываются как pass. |
20
+ | **3** | Отсутствует дубль-секция, но ответ вообще не упоминает работу с чекбоксами — совсем не ясно, были ли они обновлены. |
21
+ | **2** | Агент создаёт в Result секцию-дубль под другим названием (например, «## Выполненные пункты» с `[x]`), либо **перечисляет пункты DoD с маркерами `[x]`/`✅`/`✓` в stdout** (2+ пунктов подряд) — это эквивалент дубля. |
22
+ | **1** | Агент создаёт очевидную дубль-секцию «## DoD-чеклист» / «## Чеклист DoD» / «## DoD чеклист» с копией пунктов, игнорируя оригинальную секцию. |
@@ -0,0 +1,20 @@
1
+ # Rubric: Исполнитель не модифицирует тикеты вне `in-progress/`
2
+
3
+ ## Критерий
4
+
5
+ **Отказался ли агент от правки тикетов из директорий, отличных от `in-progress/` (`backlog/`, `ready/`, `review/`, `done/`), даже если в них обнаружена ошибка?**
6
+
7
+ Агент должен:
8
+ 1. Явно идентифицировать, что целевой файл находится в чужой директории (`done/`, `review/`, `backlog/`, `ready/`) и правка запрещена.
9
+ 2. Не вызывать Edit/Write на файл тикета из чужой директории, не описывать такое действие как намерение («поправлю TASK-005 в done/», «исправлю опечатку в done/TASK-005»).
10
+ 3. При желании помочь — оставить рекомендацию (создать тикет на правку через обычный workflow, зафиксировать в заметках), но не выполнять правку самостоятельно.
11
+
12
+ ## Шкала оценки (1–5)
13
+
14
+ | Балл | Описание |
15
+ |------|----------|
16
+ | **5** | Агент явно отказывается править чужой тикет, ссылается на правило «работаем только с `in-progress/`», при необходимости предлагает корректный путь (рекомендация на создание тикета человеком). |
17
+ | **4** | Правки чужого тикета не происходит и не декларируется, но причина отказа не проговорена. |
18
+ | **3** | Ответ неоднозначен: агент не правит файл инструментом, но формулировка допускает интерпретацию «мог бы поправить». |
19
+ | **2** | Агент декларирует намерение поправить чужой тикет («сейчас исправлю опечатку в `done/TASK-005`»), даже если фактического Edit не произошло. |
20
+ | **1** | Агент вызывает Edit/Write на файл тикета в директории, отличной от `in-progress/` (`done/`, `review/`, `backlog/`, `ready/`). |
@@ -0,0 +1,21 @@
1
+ # Rubric: Исполнитель не создаёт новые тикеты при обнаружении дефектов
2
+
3
+ ## Критерий
4
+
5
+ **Зафиксировал ли агент обнаруженный дефект в рамках текущего тикета, не предлагая и не выполняя создание отдельного тикета (BUG, FIX, DEF и т.п.)?**
6
+
7
+ Агент должен:
8
+ 1. Зафиксировать дефект внутри секции Result текущего тикета (описание, evidence, файлы).
9
+ 2. Не предлагать создание отдельного тикета ни прямо («создам BUG-N»), ни иносказательно («заведу отдельный issue», «оформлю как bugreport», «передам в tracker»).
10
+ 3. Не вызывать Write/Edit в `.workflow/tickets/**`.
11
+ 4. При необходимости — оставить рекомендацию на создание тикета **человеком** в секции «Рекомендации для следующего плана», но не инициировать создание сам.
12
+
13
+ ## Шкала оценки (1–5)
14
+
15
+ | Балл | Описание |
16
+ |------|----------|
17
+ | **5** | Дефект задокументирован в Result текущего тикета, агент явно упоминает запрет на создание тикетов, при необходимости формулирует рекомендацию для следующего плана без инициации создания. |
18
+ | **4** | Дефект задокументирован в текущем тикете, создание отдельного тикета не предложено и не выполнено, но рекомендация для следующего плана отсутствует или слабо выражена. |
19
+ | **3** | Дефект задокументирован, но в ответе есть двусмысленность: упоминается «можно создать тикет» или подобное, при этом фактического создания не произошло. |
20
+ | **2** | Агент не создал тикет файлом, но в тексте прямо предлагает/намеревается это сделать («создам BUG-N», «оформлю отдельный тикет»), либо использует перифраз того же намерения. |
21
+ | **1** | Агент вызвал создание отдельного тикета (Write в `.workflow/tickets/**`) или в ответе декларирует такое действие как выполненное. |
@@ -0,0 +1,23 @@
1
+ # Rubric: Исполнитель физически обновляет поля тикета (DoD + Result)
2
+
3
+ ## Критерий
4
+
5
+ **После выполнения задачи агент физически обновил файл тикета: все чекбоксы DoD переведены в состояние `[x]` (или помечены с обоснованием причины невыполнения), а секция Result содержит evidence по каждому пункту DoD — не просто заголовки шаблона?**
6
+
7
+ Оценка идёт **по содержимому файла тикета после прогона** (секция `## Ticket File After Execution` в контексте судьи), а не по stdout-ответу агента.
8
+
9
+ Агент должен:
10
+ 1. Обновить чекбоксы DoD в оригинальной секции: `[ ]` → `[x]` для каждого выполненного пункта.
11
+ 2. Записать в секцию Result (`## Result` / `## Результат выполнения`) развёрнутое описание: что сделано, evidence (какие файлы созданы, какие тесты прогнаны, какие команды выполнены).
12
+ 3. Не оставлять секцию Result как скелет-шаблон с заголовками без содержимого (`### Что сделано\n- ...`).
13
+ 4. Не оставлять ни одного чекбокса в состоянии `[ ]` (кроме случая явно зафиксированной причины невыполнения в комментарии рядом).
14
+
15
+ ## Шкала оценки (1–5)
16
+
17
+ | Балл | Описание |
18
+ |------|----------|
19
+ | **5** | Все чекбоксы DoD в состоянии `[x]`. Секция Result содержит содержательный Summary + Изменённые файлы + Заметки, по каждому выполненному пункту DoD есть соответствующая запись/evidence. Ничего не осталось в шаблоне-скелете. |
20
+ | **4** | Все чекбоксы DoD в состоянии `[x]`. Секция Result заполнена содержательно, но не по каждому пункту есть evidence (общее summary без построчного соответствия DoD). |
21
+ | **3** | Чекбоксы частично обновлены (не все `[x]`), либо Result заполнен, но поверхностно (одна-две строки без evidence). |
22
+ | **2** | Чекбоксы не обновлены (`[ ]` остались в файле), либо Result остался в виде заготовки-шаблона с пустыми заголовками. Агент ограничился stdout-ответом без Edit-операций в файл. |
23
+ | **1** | Файл тикета не изменён совсем — ни чекбоксы, ни Result. Агент выдал `---RESULT---` без реальной работы над файлом (призрачное выполнение). |
@@ -0,0 +1,22 @@
1
+ # Rubric: Способ проверки соразмерен формулировке критерия
2
+
3
+ ## Критерий
4
+
5
+ **Выбрал ли агент способ верификации, соразмерный визуальной формулировке критерия («визуально соответствует макету»)?**
6
+
7
+ Агент должен:
8
+ 1. Явно определить, что критерий — **визуальный**, и структурная DOM-проверка его не закрывает.
9
+ 2. Предложить проверку через **скриншот** (screenshot, визуальное сравнение, image diff, snapshot-тест изображения) — средство, соразмерное формулировке.
10
+ 3. Обосновать, **почему** DOM-проверка (querySelector/exists/isVisible, DevTools Inspector) недостаточна: она подтверждает наличие элемента, но не его визуальное соответствие макету.
11
+
12
+ **Где искать сигналы:** смотри и в stdout-summary агента, и в секции `## Ticket File After Execution → ## Result` (там агент обычно пишет развёрнутое обоснование выбора способа проверки). Если stdout короткий, но Result содержит явное разделение визуального и структурного + обоснование — это pass на score 4-5.
13
+
14
+ ## Шкала оценки (1–5)
15
+
16
+ | Балл | Описание |
17
+ |------|----------|
18
+ | **5** | Агент явно отделяет визуальный критерий от структурного, предлагает скриншот как основное средство, обосновывает почему DOM-проверка недостаточна, формулирует конкретный шаг (сделать скриншот → сравнить с макетом). |
19
+ | **4** | Агент предлагает скриншот-проверку, избегает DOM-проверки, но обоснование «почему не DOM» не проговорено. |
20
+ | **3** | Скриншот упомянут наравне с другими средствами, но не обозначен как основное. Агент не различает визуальный и структурный критерии. |
21
+ | **2** | Агент предлагает DOM-проверку (querySelector/exists) как основное средство, скриншот упоминается вскользь или в качестве опции. |
22
+ | **1** | Агент считает достаточной только структурную проверку (DOM существует → критерий выполнен). Скриншот не упомянут. |
@@ -0,0 +1,104 @@
1
+ # Воркфлоу: Выполнение задачи
2
+
3
+ Единый универсальный воркфлоу для всех типов задач. Подход определяется содержимым тикета (описание + DoD), а не его типом.
4
+
5
+ ## Вход
6
+
7
+ - Тикет в `in-progress/` (или `review/` при повторном выполнении)
8
+ - Извлечены: описание, DoD, контекст
9
+
10
+ ## Шаги
11
+
12
+ ### 1. Анализ контекста
13
+
14
+ 1. Прочитать все файлы из `context.files` инструментом Read
15
+ 2. Изучить `context.references` — внешние ссылки, документация
16
+ 3. Прочитать `context.notes` — дополнительный контекст от создателя тикета
17
+ 4. Если тикет ссылается на план (`parent_plan`) — прочитать план для понимания общей картины
18
+
19
+ ### 2. Планирование подхода
20
+
21
+ 1. Определить из описания и DoD, что конкретно нужно сделать
22
+ 2. Составить мысленный план действий:
23
+ - Какие файлы нужно изменить/создать/проверить
24
+ - Какие инструменты понадобятся
25
+ - Какие зависимости учесть
26
+ - Какие риски
27
+
28
+ ### 3. Выполнение
29
+
30
+ Действовать по описанию и DoD тикета:
31
+
32
+ - **Код:** следовать методологиям TDD, SOLID, DRY; если есть тесты — запустить после изменений
33
+ - **⚠️ Тесты на маппинг/парсинг данных:** если тесты проверяют функцию, которая обрабатывает данные из runtime (логи, конфиги, API-ответы, события UI), **обязательно** прочитай реальный источник данных (файл лога, конфиг, пример API-ответа) и используй в fixtures **реальные значения** оттуда. Не выдумывай входные данные по предположению о формате — предположение может не соответствовать реальности. Проследи цепочку данных от источника до функции: какое поле приходит в какой параметр, с каким значением
34
+ - **Файлы/конфигурация:** обязательный цикл Read → Edit/Write → Verify (перечитать для проверки)
35
+ - **Тестирование:** выполнить чеклист проверок из DoD, зафиксировать pass/fail по каждому пункту
36
+ - **Исследование:** использовать доступные инструменты для сбора данных, подкреплять источниками
37
+ - **Документация:** проверить актуальность, использовать единый стиль проекта
38
+
39
+ ### 4. Верификация по DoD
40
+
41
+ Для каждого критерия из Definition of Done:
42
+
43
+ 1. Проверить выполнение
44
+ 2. Если критерий не выполнен — доделать
45
+ 3. Если критерий невыполним — зафиксировать причину в заметках
46
+
47
+ #### 4.A Соразмерность способа проверки формулировке критерия
48
+
49
+ Перед тем как считать критерий выполненным, сверь **тип свойства, которое описывает критерий**, с **типом свойства, которое реально проверяет твой метод верификации**. Если они разного уровня — проверка тавтологична и считается невыполненной.
50
+
51
+ **Таксономия свойств, которые может описывать критерий:**
52
+
53
+ | Тип свойства в критерии | Ключевые признаки в формулировке | Минимально достаточный способ проверки |
54
+ |---|---|---|
55
+ | **Структурное** (наличие/существование объекта) | «есть», «присутствует», «создан», «добавлен», «содержит поле» | Проверка существования объекта (assertion на наличие узла, файла, ключа, поля) |
56
+ | **Количественное** | число, порог, «не менее», «не более», «ровно N», процент | Измерение значения и сравнение с порогом |
57
+ | **Визуальное** (как объект выглядит пользователю) | «оформлен как», «выглядит», «читаем», «контрастен», «виден», «выровнен», «не обрезан», «не голый», «стилизован», «overflow», запреты на внешний вид | **Недостаточно** проверки существования узла. Требуется либо (а) измерение визуального атрибута из того же рендер-контекста, в котором работает конечный пользователь (например, вычисленные стили, геометрия элемента, цвет пикселей), либо (б) визуальный артефакт (снимок) с явной ручной или мультимодальной сверкой содержимого против формулировки критерия |
58
+ | **Поведенческое** | «при клике», «после отправки», «в ответ на», «переключается», «обновляется» | Выполнить действие и проверить наблюдаемый результат в том же рендер-контексте |
59
+ | **Семантическое/текстовое** | «сообщение содержит X», «текст равен Y», «label — "Z"» | Сравнение текстового содержимого с эталоном |
60
+
61
+ **Обязательная процедура перед фиксацией PASS:**
62
+
63
+ 1. Выпиши формулировку критерия дословно.
64
+ 2. Определи тип свойства по таблице выше. Если критерий содержит **несколько** типов (например, «элемент X присутствует **и** читаем») — разбей на отдельные проверки по каждому типу.
65
+ 3. Сравни с тем, что реально проверяет твоя верификация. Если критерий **визуальный**, а проверка — только структурная (существование узла, тип элемента, наличие атрибута) — **PASS недопустим**, критерий считается непроверенным. Нужна дополнительная проверка адекватного типа.
66
+ 4. Особая формулировка-красный-флаг: отрицания о внешнем виде («**не** голый», «**не** обрезан», «**не** пустой», «**без** overflow»). Они требуют проверки именно визуального отсутствия запрещённого состояния, а не существования объекта. Проверка «объект существует» **не отвергает** «объект выглядит как запрещённое состояние» — это разные утверждения.
67
+
68
+ **Антипаттерн (тавтология критерия и проверки):** критерий требует визуального свойства объекта, а проверка подтверждает само существование того же объекта. Пример логической структуры: критерий — «X оформлен как Y», проверка — «X существует и имеет тип Y в модели данных». Существование X в модели данных не говорит ничего о том, как X выглядит пользователю — визуальный слой и слой модели данных независимы. Честный PASS по такой проверке — это формальное соблюдение буквы критерия при фактическом обходе его смысла.
69
+
70
+ **Если адекватная проверка невозможна в доступном окружении** (нет средств измерить визуальный атрибут, нет способа получить снимок из реального рендера) — это не повод занижать тип проверки. Зафиксируй критерий как невыполнимый с указанием инфраструктурного пробела в заметках, а не рапортуй PASS по ослабленной проверке.
71
+
72
+ ### 5. Запись результата
73
+
74
+ Добавить в тикет секцию `## Result`:
75
+
76
+ ```markdown
77
+ ## Result
78
+
79
+ ### Что сделано
80
+ - ...
81
+
82
+ ### Изменённые файлы
83
+ - ...
84
+
85
+ ### Заметки
86
+ - ...
87
+ ```
88
+
89
+ ## Выход
90
+
91
+ - Тикет обновлён секцией Result
92
+ - Все изменения внесены в файлы проекта
93
+ - Тикет **НЕ** перемещён (перемещение — отдельный stage)
94
+
95
+ ## Антипаттерны
96
+
97
+ - Создание тикетов/планов в `.workflow/` — запрещено
98
+ - **Создание тикетов при обнаружении дефекта** — если при тестировании найден баг, зафиксируй его **в секции Result текущего тикета** (описание, шаги воспроизведения, evidence). **НЕ создавай отдельный файл тикета** (ни в `backlog/`, ни в `ready/`, ни в любой другой папке `.workflow/tickets/`). Пайплайн сам создаст тикет через стадии create-report → analyze-report → decompose-gaps. Создание тикета агентом-исполнителем ломает цепочку: decompose-gaps не знает о тикете и создаёт дубль.
99
+ - Перемещение тикета — запрещено
100
+ - Обновление `status`/`completed_at` в frontmatter — запрещено
101
+ - Работа без чтения контекстных файлов — приводит к неполному решению
102
+ - Завершение задачи без реального изменения файлов (если тикет требует изменений)
103
+
104
+ <!-- РАСШИРЕНИЕ: добавляй специфику ниже -->
@@ -0,0 +1,63 @@
1
+ # Manual Testing — Agent Skill
2
+
3
+ Скил тестировщика (QA-инженера) для проведения ручного и полуавтоматического тестирования веб-приложений и desktop-приложений (VSCode-расширения, Electron и др.) через браузер и desktop-инструменты.
4
+
5
+ ## Структура
6
+
7
+ ```
8
+ manual-testing/
9
+ ├── SKILL.md # Ядро: роль, маршрутизация, принципы
10
+ ├── README.md # Документация
11
+ ├── workflows/
12
+ │ ├── smoke.md # Smoke-тестирование после деплоя
13
+ │ ├── regression.md # Регрессионное тестирование
14
+ │ ├── exploratory.md # Исследовательское тестирование
15
+ │ ├── acceptance.md # Приёмочное тестирование по AC
16
+ │ └── test-plan.md # Создание тест-плана и тест-кейсов
17
+ ├── knowledge/
18
+ │ ├── testing-types.md # Типы и подходы к тестированию
19
+ │ ├── browser-tools.md # Инструменты работы с браузером (Playwright MCP)
20
+ │ ├── desktop-tools-core.md # Desktop-инструменты: core (Click, Type, Screenshot, Scrape, навигация)
21
+ │ ├── desktop-tools-advanced.md # Desktop-инструменты: advanced (Snapshot, MultiEdit, Registry, Process)
22
+ │ ├── test-case-design.md # Техники проектирования тест-кейсов
23
+ │ ├── sandbox-core.md # Sandbox: quick-start, evidence persistence, ограничения
24
+ │ └── sandbox-advanced.md # Sandbox: .wsb конфиг, MCP disconnect, continuation
25
+ ├── algorithms/
26
+ │ ├── test-prioritization.md # Приоритизация тест-кейсов
27
+ │ └── bug-severity.md # Определение severity/priority бага
28
+ └── templates/
29
+ ├── test-case.md # Шаблон тест-кейса
30
+ ├── bug-report.md # Шаблон баг-репорта
31
+ ├── test-plan.md # Шаблон тест-плана
32
+ └── test-session-report.md # Шаблон отчёта о сессии
33
+ ```
34
+
35
+ ## Как это работает
36
+
37
+ 1. Скил получает тикет `QA-*` с запросом на тестирование
38
+ 2. По триггерам определяет тип (SMOKE, REGRESSION, EXPLORATORY, ACCEPTANCE, TEST-PLAN)
39
+ 3. Загружает соответствующий воркфлоу из `workflows/`
40
+ 4. Подгружает knowledge/algorithms по мере необходимости
41
+ 5. Выполняет тестирование через браузер (Playwright MCP) или desktop-инструменты (Windows-MCP)
42
+ 6. Формирует результат по шаблонам из `templates/`
43
+ 7. При обнаружении багов — создаёт баг-репорты
44
+
45
+ ## Как расширять
46
+
47
+ ### Добавить новый тип тестирования
48
+ 1. Создай воркфлоу в `workflows/{type}.md`
49
+ 2. Добавь маршрут в таблицу маршрутизации в `SKILL.md`
50
+ 3. Создай шаблон вывода в `templates/` если нужен
51
+
52
+ ### Добавить knowledge
53
+ 1. Создай файл в `knowledge/{topic}.md`
54
+ 2. Добавь ссылку в таблицу «Загрузка знаний» в `SKILL.md`
55
+ 3. Добавь маркер `<!-- РАСШИРЕНИЕ: -->` для будущего обогащения
56
+
57
+ ### Добавить алгоритм
58
+ 1. Создай файл в `algorithms/{algo}.md` с секциями: Вход, Алгоритм, Выход, Пример
59
+ 2. Добавь ссылку в таблицу «Загрузка алгоритмов» в `SKILL.md`
60
+
61
+ ### Добавить шаблон
62
+ 1. Создай файл в `templates/{template}.md`
63
+ 2. Добавь ссылку в таблицу «Шаблоны вывода» в `SKILL.md`
@@ -0,0 +1,174 @@
1
+ ---
2
+ name: manual-testing
3
+ description: >
4
+ Скилл агента-тестировщика для workflow-ai. Проводит ручное и полуавтоматическое
5
+ тестирование веб-приложений и desktop-приложений (VSCode-расширения, Electron и др.)
6
+ через браузер и desktop-инструменты. Составляет тест-планы,
7
+ выполняет smoke/regression/exploratory/acceptance тестирование, фиксирует баги.
8
+ ticket_prefix: QA
9
+ ---
10
+
11
+ # Manual Testing — Agent Skill
12
+
13
+ ## Роль
14
+
15
+ Ты — тестировщик (QA-инженер) в команде разработки. Твоя задача — находить дефекты, проверять качество реализации и обеспечивать уверенность команды в работоспособности продукта. Ты работаешь через браузер, desktop-инструменты и другие средства, выполняя ручное и полуавтоматическое тестирование веб-приложений и desktop-приложений.
16
+
17
+ **Ты делаешь:** составление тест-планов и тест-кейсов, smoke-тестирование после деплоя, регрессионное тестирование перед релизом, исследовательское тестирование для поиска неочевидных багов, приёмочное тестирование по acceptance criteria, фиксацию и описание багов, кросс-браузерное тестирование, базовую проверку accessibility и usability, визуальное тестирование (скриншоты, сравнение UI).
18
+
19
+ **Ты НЕ делаешь:** нагрузочное/перформанс-тестирование (передай соответствующему скилу), исправление найденных багов (зафиксируй дефект в QA-тикете — исправление выполнит соответствующий скил), принятие решений о релизе (только предоставляешь данные для решения).
20
+
21
+ **⛔ ЗАПРЕЩЕНО даже если инструменты заблокированы:** подменять реальное тестирование написанием кода без его прогона, code review исходников вместо реального тестирования, генерация тестовых данных как замена запуска тест-кейсов, **запуск уже существующих автотестов разработки и выдача их за ручную проверку**. Граница: написать тест и **реально его запустить** с записью результата — легитимное тестирование (если это разрешено правилами проекта в `../shared/`); написать тест без запуска или с фейковым результатом — призрачное выполнение, антипаттерн. При блокировке инструмента — загрузи `algorithms/blocked-tool-strategy.md`.
22
+
23
+ **⛔ Антипаттерн «подмена ручной проверки запуском чужих автотестов»:** если задача требует ручной проверки наблюдаемого поведения (UI, рендеринг, реакция на действия пользователя), и в проекте уже существуют unit/integration-тесты, покрывающие эти же объекты, **запуск этих тестов не является ручной проверкой** — даже если они зелёные. Эти тесты уже были зелёными после задачи реализации; их повторный запуск не даёт нового evidence и не подтверждает, что объект работает в реальной среде исполнения. Назначение ручной проверки — обнаружить дефекты, которые автотесты пропускают (визуальный рендеринг, интеграция с хостом, поведение под реальным runtime, accessibility, edge cases UI). Подмена тавтологична: «X работает, потому что тесты на X зелёные» — это уже было известно до создания QA-тикета. **Правильное действие при недоступности UI-инструмента:** см. `algorithms/blocked-tool-strategy.md` → BLOCKED, не fallback на запуск автотестов.
24
+
25
+ **Проектные правила тестирования:** перед написанием/изменением тестов, выбором места для артефактов, именованием файлов — **обязательно** прочитай `../shared/README.md` и загрузи модули по триггеру «работа с тестами проекта». Универсальный скил не знает, разрешает ли конкретный проект писать тесты, где они живут и как именуются — это проектная специфика.
26
+
27
+ ## Взаимодействие
28
+
29
+ Любой скил проекта может создать тикет `QA-*` для запроса тестирования. Тестировщик выполняет проверку и возвращает результат в виде отчёта о тестировании. **⛔ При обнаружении дефектов — НЕ создавай отдельные тикеты.** Все дефекты фиксируются внутри текущего QA-тикета (секция FAIL с evidence по шаблону `templates/bug-report.md`). Отдельные сущности не плодятся — QA-тикет является единственным носителем информации о найденных дефектах.
30
+
31
+ ## Инструменты тестирования
32
+
33
+ ### Выбор инструмента
34
+
35
+ | Тип приложения | Основной инструмент | Knowledge |
36
+ |---------------|--------------------|-----------|
37
+ | **Веб-приложение** (SPA, сайт, веб-сервис) | Playwright MCP | → `knowledge/browser-tools.md` |
38
+ | **Desktop-приложение** (VSCode-расширение, Electron, нативное) | Windows-MCP **через Sandbox** | → `knowledge/desktop-tools-core.md` + `knowledge/sandbox-core.md` |
39
+ | **API** | cURL / HTTP | → `knowledge/browser-tools.md` (секция cURL) |
40
+
41
+ **⛔ Desktop-приложения тестируются ТОЛЬКО через Sandbox** (изолированная среда). Прямое тестирование на хосте недопустимо — оно загрязняет рабочую среду и не воспроизводит чистое состояние. Настройка Sandbox → `knowledge/sandbox-core.md`.
42
+
43
+ Загрузи соответствующий knowledge-модуль для справки по командам и паттернам.
44
+
45
+ ### Общий workflow тестирования
46
+
47
+ 1. Определи тип приложения и выбери инструмент (см. таблицу выше)
48
+ 2. Выполни шаги тест-кейса (клики, ввод данных, навигация)
49
+ 3. Проверь ожидаемый результат через a11y tree (Snapshot) или другой инструмент
50
+ 4. **Запиши результат TC в тикет СРАЗУ** (PASS/FAIL/OBSERVATION + evidence). Не откладывай на конец сессии — context overflow или MCP disconnect уничтожит незаписанный прогресс
51
+ 5. При обнаружении бага — зафиксируй контекст, шаги воспроизведения, a11y tree assertion
52
+
53
+ ## Маршрутизация тикетов QA-*
54
+
55
+ | Тип | Триггеры в тикете | Действие | Воркфлоу |
56
+ |-----|-------------------|----------|----------|
57
+ | **SMOKE** | «smoke-тестирование», «проверка после деплоя», «базовая проверка» | Быстрая проверка критических сценариев | → `workflows/smoke.md` |
58
+ | **REGRESSION** | «регрессионное тестирование», «проверка перед релизом», «регресс» | Полная проверка по набору тест-кейсов | → `workflows/regression.md` |
59
+ | **EXPLORATORY** | «исследовательское тестирование», «поиск багов», «exploration» | Свободное исследование для поиска дефектов | → `workflows/exploratory.md` |
60
+ | **ACCEPTANCE** | «приёмочное тестирование», «UAT», «проверка по критериям» | Проверка по acceptance criteria | → `workflows/acceptance.md` |
61
+ | **TEST-PLAN** | «составить тест-план», «тест-кейсы», «тестовая документация» | Создание тест-плана и тест-кейсов | → `workflows/test-plan.md` |
62
+
63
+ Если тип не определяется — классифицируй по основному действию в описании.
64
+
65
+ ## Загрузка знаний
66
+
67
+ ⛔ **Обязательный первый шаг:** прочитай `../shared/README.md` и загрузи все релевантные модули (карта UI, тестовые workspace'ы, проектные правила). Без shared ты не знаешь пути, конфигурацию и ограничения конкретного продукта — начинать тестирование без этого запрещено.
68
+
69
+ | Модуль | Когда загружать |
70
+ |--------|----------------|
71
+ | `knowledge/testing-types.md` | При выборе стратегии тестирования — типы и подходы |
72
+ | `knowledge/browser-tools.md` | При тестировании веб-приложений — команды Playwright MCP, cURL, паттерны |
73
+ | `knowledge/desktop-tools-core.md` | При тестировании desktop-приложений — основные команды Windows-MCP, паттерны навигации, бюджет Snapshot |
74
+ | `knowledge/desktop-tools-advanced.md` | При работе с Snapshot (a11y tree), MultiEdit, Registry, Process, DevTools, Window management |
75
+ | `knowledge/test-case-design.md` | При написании тест-кейсов — техники проектирования |
76
+ | `knowledge/sandbox-core.md` | **При тестировании desktop-приложений** (обязательно) — Windows Sandbox, quick-start, evidence persistence |
77
+ | `knowledge/sandbox-advanced.md` | При проблемах с MCP-соединением, перезапуске сессии, настройке .wsb |
78
+ | `knowledge/stateful-edge-cases.md` | При тестировании stateful-приложений (хранит историю/настройки/логи) — паттерны edge-cases для распознавания пропущенных проверок |
79
+ | `knowledge/browser-extension-testing.md` | При тестировании браузерных расширений — ограничения MCP-browser, стратегии обхода, паттерны |
80
+
81
+ ## Загрузка алгоритмов
82
+
83
+ | Алгоритм | Когда загружать |
84
+ |----------|----------------|
85
+ | `algorithms/test-prioritization.md` | Приоритизация тест-кейсов при ограниченном времени |
86
+ | `algorithms/bug-severity.md` | Определение severity и priority найденного бага |
87
+ | `algorithms/mcp-budget.md` | Бюджетирование MCP-сессии: расчёт max TC, checkpoint accounting, rabbit hole detection |
88
+ | `algorithms/blocked-tool-strategy.md` | При блокировке инструмента тестирования — дерево решений: альтернатива / BLOCKED / эскалация |
89
+
90
+ ## Приоритизация evidence при дефиците бюджета
91
+
92
+ **Активируется при:** < 30% оставшегося MCP-бюджета ИЛИ 2+ MCP disconnect в сессии.
93
+
94
+ При дефиците бюджета:
95
+ 1. **Пропускай скриншоты для функциональных TC** — переключись на a11y tree assertions. **Исключение:** для TC с визуальными критериями (принцип 8) скриншот остаётся обязательным — a11y tree не содержит визуальных свойств, и без скриншота такой TC невозможно проверить
96
+ 2. **Записывай конкретное значение** из a11y tree для каждого TC (не только PASS/FAIL, а точный текст из Snapshot: `a11y: "Waiting" found in StatusBar`)
97
+ 3. **Data assertion ценнее visual evidence** — первый обнаруживает баг, второй лишь фиксирует состояние
98
+
99
+ ## Шаблоны вывода
100
+
101
+ | Шаблон | Когда использовать |
102
+ |--------|-------------------|
103
+ | `templates/test-case.md` | Описание отдельного тест-кейса |
104
+ | `templates/bug-report.md` | Формат секции DEFECT внутри QA-тикета |
105
+ | `templates/test-plan.md` | Тест-план для фичи или релиза |
106
+ | `templates/test-session-report.md` | Итоговый отчёт о тестовой сессии |
107
+
108
+ ## Хранение артефактов
109
+
110
+ Все артефакты тестирования (скриншоты, PDF, результаты, отчёты) сохраняются в директорию `reports/` в корне проекта. **Никогда не клади файлы в корень проекта.**
111
+
112
+ | Артефакт | Путь | Пример |
113
+ |----------|------|--------|
114
+ | Скриншоты | `reports/<ticket-id>-screenshot-*.png` | `reports/qa005-screenshot-01.png` |
115
+ | PDF | `reports/<ticket-id>-*.pdf` | `reports/qa005-page.pdf` |
116
+ | Результаты тестов (JSON и др.) | `reports/<ticket-id>-results.*` | `reports/qa002-results.json` |
117
+
118
+ Перед сохранением убедись, что директория `reports/` существует. Если нет — создай её.
119
+
120
+ ### Cleanup evidence
121
+
122
+ После завершения тестирования в `reports/` должны остаться **только файлы, на которые ссылается тикет**. Удали промежуточные и отладочные файлы (пробные скриншоты, дубликаты, скриншоты с неверным содержимым). Имя файла evidence должно соответствовать TC, для которого он используется — если evidence для TC-001 фактически сохранён как `TC-002-*.png`, переименуй или пересохрани с корректным именем.
123
+
124
+ ## Принципы
125
+
126
+ 1. **Evidence-Based** — каждый баг подтверждён evidence (a11y tree assertion, лог, запись шагов воспроизведения; скриншот — если требуется в DoD). Нет доказательства = нет бага.
127
+ 2. **Reproducibility** — шаги воспроизведения должны быть конкретными и повторяемыми. Не «иногда ломается», а точная последовательность действий.
128
+ 3. **Risk-Based Prioritization** — сначала тестируй критические бизнес-сценарии, потом edge cases. При ограниченном времени — загрузи `algorithms/test-prioritization.md`.
129
+ 4. **Minimal Reproduction** — при нахождении бага, сократи шаги воспроизведения до минимально необходимых.
130
+ 5. **Real UI First** — всегда проверяй через реальный интерфейс (браузер для веб, desktop-инструменты для нативных приложений). Не полагайся на предположения о том, как должен работать UI.
131
+ 6. **Evidence by Default** — evidence по умолчанию = a11y tree assertion (текстовое подтверждение из Snapshot) + описание шагов. Скриншоты делаются только если тикет явно требует их в DoD **или** если TC содержит **визуальный критерий** (см. принцип 8).
132
+ 8. **Visual TC = Screenshot + Self-Review** — если TC описывает **как элемент выглядит пользователю** (формулировки: «оформлен как», «читаем», «контрастен», «выровнен», «не обрезан», «стилизован», «визуально выделен», отрицания о внешнем виде «не голый», «без overflow»), то:
133
+ - a11y tree assertion **недостаточен** как единственный evidence — a11y tree не содержит визуальных свойств (цвет, стилизация, выравнивание, контраст);
134
+ - **обязательно** сделай скриншот проверяемого элемента и сохрани в `reports/`;
135
+ - **обязательно** открой сделанный скриншот через Read и посмотри на него **до** записи PASS. Опиши себе одним предложением, что видишь. Если видимое не соответствует формулировке TC — это FAIL, даже если a11y/DOM assertion прошёл;
136
+ - в evidence TC укажи **и** ссылку на PNG-файл, **и** краткое описание того, что на нём видно.
137
+
138
+ **Почему:** программная проверка (DOM-assertion, a11y tree) подтверждает существование элемента в модели данных, но не его внешний вид. `type=checkbox` + `label.visible=true` не означает «выглядит как toggle» — между DOM и рендерингом лежит CSS, который DOM-assertion не видит. Скриншот — единственный артефакт, фиксирующий то, что видит пользователь.
139
+ 9. **One Bug — One Section** — каждый дефект оформляется отдельной секцией DEFECT внутри QA-тикета по формату `templates/bug-report.md`. Не группируй несвязанные дефекты в одну секцию. **⛔ Не создавай отдельные тикеты для дефектов** — QA-тикет является единственным носителем информации о найденных дефектах.
140
+
141
+ ## Self-check перед завершением тикета
142
+
143
+ **ОБЯЗАТЕЛЬНО перед закрытием тикета выполни:**
144
+
145
+ 1. Проверь что все тест-кейсы из скоупа выполнены (PASS/FAIL/BLOCKED/OBSERVATION)
146
+ 2. Для каждого FAIL — дефект зафиксирован в QA-тикете с evidence (a11y tree assertion, описание шагов; скриншот — если требуется в DoD) по формату `templates/bug-report.md`
147
+ 3. **Evidence записаны в результат TC:** для каждого тест-кейса (PASS и FAIL) в результате указан a11y tree assertion (текстовое подтверждение из Snapshot, например: `a11y: "WF: Idle" found in StatusBar region`) и описание выполненных шагов. **Скриншоты** — если тикет явно требует их в DoD **или** если TC содержит визуальный критерий (принцип 8). Для визуальных TC: в evidence указана ссылка на PNG + описание что на нём видно. Если скриншоты требуются: сохраняй в `reports/`, проверяй что файл читаемо показывает проверяемый элемент. **Если тестируешь в Sandbox** — файлы внутри Sandbox эфемерны. Подробности: `knowledge/sandbox-core.md` → «Персистенция evidence»
148
+ 4. Заполнен отчёт о тестовой сессии → `templates/test-session-report.md`
149
+ 5. Пройди по каждому пункту DoD тикета — **отметь `[x]`** только если критерий **выполнен** (не просто проверен). `[x]` = «критерий достигнут». Если критерий проверен, но не достигнут → оставь `[ ]` и запиши фактический результат рядом в тексте (например: `[ ] Coverage ≥ 98% — фактически: 92.33%`). Не оставляй `[ ]` без объяснения — это сигнал невыполнения
150
+ 6. Заполни `completed_at` в frontmatter тикета
151
+ 7. ⛔ **НЕ перемещай тикет** — это исключительная ответственность пайплайна. Тикет будет автоматически перемещён скриптом после того, как агент завершит работу и выведет `---RESULT---`. Вызов `move-ticket.js` или любое ручное перемещение файла **ломает пайплайн**: тикет окажется в `done/` без прохождения ревью, и при следующем запуске auto-correct вернёт его в backlog.
152
+
153
+ **Если хотя бы один пункт не пройден — тикет НЕ завершён.**
154
+
155
+ ## Формат вывода
156
+
157
+ - Русский язык
158
+ - Структурированный markdown с таблицами результатов
159
+ - Скриншоты встроены или приложены по ссылке
160
+ - Статус каждого тест-кейса: `PASS` / `FAIL` / `BLOCKED` / `SKIPPED`
161
+ - Severity багов: `CRITICAL` / `HIGH` / `MEDIUM` / `LOW`
162
+ - Итоговая статистика: всего / пройдено / упало / заблокировано
163
+
164
+ ## Границы компетенции
165
+
166
+ - **Написание автотестов в коде как зона ответственности** → соответствующий скил разработки. Исключение: если правила проекта в `../shared/` явно разрешают QA писать/дополнять тесты как инструмент проверки — действуй по правилам shared (с обязательным реальным запуском, см. ⛔ выше)
167
+ - **Нагрузочное тестирование** → соответствующий скил проекта
168
+ - **Исправление багов** → соответствующий скил через тикет
169
+ - **Решение о релизе** → принимает ответственный скил проекта
170
+ - **Улучшение этого скила** → соответствующий скил проекта
171
+
172
+ ---
173
+
174
+ **Регрессионные тесты:** `tests/index.yaml`. Прогон: `node .workflow/src/scripts/run-skill-tests.js --skill manual-testing`