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,151 @@
1
+ {
2
+ "per_model": {
3
+ "claude-sonnet": {
4
+ "pass_count": 3,
5
+ "total": 3,
6
+ "trials": [
7
+ {
8
+ "trial": 1,
9
+ "score": 5,
10
+ "passed": true
11
+ },
12
+ {
13
+ "trial": 2,
14
+ "score": 5,
15
+ "passed": true
16
+ },
17
+ {
18
+ "trial": 3,
19
+ "score": 5,
20
+ "passed": true
21
+ }
22
+ ]
23
+ },
24
+ "kilo-deepseek": {
25
+ "pass_count": 2,
26
+ "total": 3,
27
+ "trials": [
28
+ {
29
+ "trial": 1,
30
+ "score": 5,
31
+ "passed": true
32
+ },
33
+ {
34
+ "trial": 2,
35
+ "score": 1,
36
+ "passed": false
37
+ },
38
+ {
39
+ "trial": 3,
40
+ "score": 5,
41
+ "passed": true
42
+ }
43
+ ]
44
+ },
45
+ "kilo-minimax": {
46
+ "pass_count": 2,
47
+ "total": 3,
48
+ "trials": [
49
+ {
50
+ "trial": 1,
51
+ "score": 3,
52
+ "passed": false
53
+ },
54
+ {
55
+ "trial": 2,
56
+ "score": 5,
57
+ "passed": true
58
+ },
59
+ {
60
+ "trial": 3,
61
+ "score": 5,
62
+ "passed": true
63
+ }
64
+ ]
65
+ },
66
+ "kilo-glm": {
67
+ "pass_count": 3,
68
+ "total": 3,
69
+ "trials": [
70
+ {
71
+ "trial": 1,
72
+ "score": 5,
73
+ "passed": true
74
+ },
75
+ {
76
+ "trial": 2,
77
+ "score": 5,
78
+ "passed": true
79
+ },
80
+ {
81
+ "trial": 3,
82
+ "score": 5,
83
+ "passed": true
84
+ }
85
+ ]
86
+ }
87
+ },
88
+ "rubric_scores": [
89
+ {
90
+ "agentId": "claude-sonnet",
91
+ "trial": 1,
92
+ "score": 5
93
+ },
94
+ {
95
+ "agentId": "claude-sonnet",
96
+ "trial": 2,
97
+ "score": 5
98
+ },
99
+ {
100
+ "agentId": "claude-sonnet",
101
+ "trial": 3,
102
+ "score": 5
103
+ },
104
+ {
105
+ "agentId": "kilo-deepseek",
106
+ "trial": 1,
107
+ "score": 5
108
+ },
109
+ {
110
+ "agentId": "kilo-deepseek",
111
+ "trial": 2,
112
+ "score": 1
113
+ },
114
+ {
115
+ "agentId": "kilo-deepseek",
116
+ "trial": 3,
117
+ "score": 5
118
+ },
119
+ {
120
+ "agentId": "kilo-glm",
121
+ "trial": 1,
122
+ "score": 5
123
+ },
124
+ {
125
+ "agentId": "kilo-glm",
126
+ "trial": 2,
127
+ "score": 5
128
+ },
129
+ {
130
+ "agentId": "kilo-glm",
131
+ "trial": 3,
132
+ "score": 5
133
+ },
134
+ {
135
+ "agentId": "kilo-minimax",
136
+ "trial": 1,
137
+ "score": 3
138
+ },
139
+ {
140
+ "agentId": "kilo-minimax",
141
+ "trial": 2,
142
+ "score": 5
143
+ },
144
+ {
145
+ "agentId": "kilo-minimax",
146
+ "trial": 3,
147
+ "score": 5
148
+ }
149
+ ],
150
+ "timestamp": "2026-04-19T12:18:41.555Z"
151
+ }
@@ -0,0 +1,46 @@
1
+ **Findings по анализу пайплайна (лог от 2026-04-06)**
2
+
3
+ ### Временные диаграммы ID артефактов
4
+
5
+ | ID | События (время) | Контекст |
6
+ |--------------|------------------------------------------------------------------------------------------------|----------------------------------|
7
+ | **PLAN-003** | 16:36:02 – выбран как `plan_id` → 16:36:12 – `plan_file` определён → 16:36:18 – декомпозиция | текущий план |
8
+ | **PLAN-002** | 16:36:02 – упомянут как архивный план (архивация тикетов) | архивный план |
9
+ | **COACH-010…015** | 16:36:02 – `done → archive` (план PLAN-002 архивирован) | тикеты коуча |
10
+ | **IMPL-002…008** | 16:36:02 – `done → archive` (план PLAN-002 архивирован) | тикеты реализации |
11
+ | **IMPL-001** | 16:40:31 – создан декомпозитором PLAN-003 | новый тикет |
12
+ | **IMPL-003** | 16:36:02 – архивирован (из PLAN-002) → 16:40:31 – создан заново (в PLAN-003) | коллизия ID |
13
+ | **IMPL-002** | 16:36:02 – архивирован (из PLAN-002) → 16:40:31 – создан заново (в PLAN-003) | коллизия ID |
14
+ | **QA-001, QA-002** | 16:40:31 – созданы декомпозитором | новые тикеты QA |
15
+
16
+ ### Выявленные проблемы
17
+
18
+ #### 1. **Неопределённый скил для stages скриптов** (HIGH)
19
+ - **Где:** stage `pick-first-task` (agent=`script-pick`), stage `check-conditions` (agent=`script-check-conditions`).
20
+ - **Симптом:** в логе указано `skill="undefined"`.
21
+ - **Риск:** отсутствие стандартизованных инструкций для этих этапов, возможные отклонения от принципов workflow.
22
+ - **Root cause:** конфигурация пайплайна не связывает агента со скилом.
23
+ - **Рекомендация:** создать или назначить скилы для скриптовых агентов, обеспечить загрузку инструкций.
24
+
25
+ #### 2. **Повторное использование ID тикетов между планами** (MEDIUM)
26
+ - **Примеры:** IMPL-002, IMPL-003 (архивированы из PLAN-002, созданы заново в PLAN-003).
27
+ - **Потенциальные проблемы:** семантическая путаница при ссылках на тикет; риск перезаписи файлов, если файловая структура не разделяет архив и бэклог.
28
+ - **Root cause:** скил `decompose-plan` не проверяет глобальную уникальность ID.
29
+ - **Рекомендация:** добавить проверку существования ID тикета (включая архив) перед созданием; при конфликте генерировать новый ID.
30
+
31
+ #### 3. **Отсутствие проверки уникальности ID при создании тикетов** (LOW)
32
+ - **Частный случай проблемы 2.** Акцент на процедуру декомпозиции.
33
+ - **Root cause:** алгоритм генерации ID, возможно, использует локальный счётчик.
34
+ - **Рекомендация:** использовать универсальный уникальный идентификатор (например, UUID) или комбинацию `plan_id` + инкремент.
35
+
36
+ #### 4. **Неполный лог пайплайна** (INFO)
37
+ - **Симптом:** лог обрывается на stage `check-conditions`, не показывает результат.
38
+ - **Не ошибка, но затрудняет анализ завершённости.**
39
+ - **Рекомендация:** убедиться, что пайплайн завершается корректно; при анализе запрашивать полный лог.
40
+
41
+ ### Действия выполнены
42
+ - Построены временные диаграммы для каждого ID артефакта.
43
+ - Выявлены коллизии ID и потенциальные риски.
44
+ - Обновлён бэклог коуча (добавлен `PLAN-003` в `analyzed_plans`, обновлено `last_updated`).
45
+
46
+ **Следующие шаги:** правка скилов `decompose-plan` и конфигурации пайплайна в соответствии с рекомендациями.
@@ -0,0 +1,75 @@
1
+ ## Анализ pipeline_log PLAN-003
2
+
3
+ ### 1. Временные диаграммы событий по ID артефактов
4
+
5
+ **PLAN-003**
6
+ - `2026-04-06 16:36:02` — план определён как вход пайплайна
7
+ - `2026-04-06 16:36:12` — загружен файл `plans/current/PLAN-003.md`
8
+ - `2026-04-06 16:36:18` — запущена стадия `decompose-plan`
9
+ - `2026-04-06 16:40:31` — декомпозиция завершена, создано 5 тикетов
10
+
11
+ **PLAN-002** (архивный)
12
+ - `2026-04-06 16:36:02` — скрипт `pick-next-task` архивирует 13 тикетов, принадлежащих PLAN-002
13
+
14
+ **Тикеты с коллизией ID**
15
+ - `IMPL-002`
16
+ - `2026-04-06 16:36:02` — архив (состояние `done → archive`, план PLAN-002 архивен)
17
+ - `2026-04-06 16:40:31` — создан заново декомпозитором PLAN-003 (приоритет 2, зависимость от IMPL-001)
18
+ - `IMPL-003`
19
+ - `2026-04-06 16:36:02` — архив
20
+ - `2026-04-06 16:40:31` — создан заново (приоритет 1, critical)
21
+
22
+ **Остальные архивные тикеты PLAN-002** (COACH-010…015, IMPL-004…008) — только событие архивации.
23
+
24
+ **Новые тикеты PLAN-003** (IMPL-001, QA-001, QA-002) — только создание.
25
+
26
+ ### 2. Findings (коллизии и противоречия)
27
+
28
+ | Уровень | Описание | ID затронутых артефактов |
29
+ |---------|----------|--------------------------|
30
+ | **CRITICAL** | Дублирование ID тикетов между архивными и вновь созданными | IMPL‑002, IMPL‑003 |
31
+ | **HIGH** | Декомпозитор создал тикеты без проверки уникальности ID во всех папках `tickets/` (включая `archive/`) | IMPL‑002, IMPL‑003 |
32
+ | **MEDIUM** | Отсутствие в логе стадии `allocate-ticket-ids` и параметра `id_ranges_json` на входе `decompose-plan` | PLAN‑003 |
33
+ | **LOW** | Параллельное существование архивных тикетов PLAN‑002 и новых тикетов PLAN‑003 с одинаковыми префиксами | все IMPL‑, COACH‑ |
34
+
35
+ ### 3. Root Cause Analysis
36
+
37
+ **Физический автор ошибки:** скил `decompose-plan` (агент `claude-sonnet` на стадии `decompose-plan`).
38
+
39
+ **Цепочка причин:**
40
+ 1. **Пропуск STOP‑GATE 9.B** в `workflows/decompose.md` — декомпозитор не получил параметр `id_ranges_json` (в логе контекст стадии содержит только `plan_id` и `plan_file`), но продолжил работу вместо остановки с `status: error`.
41
+ 2. **Нарушение принципа дедупликации** — алгоритм `algorithms/deduplication.md` проверяет title/scope, но **не проверяет уникальность ID**; сканирование всех папок `tickets/` (включая `archive/`) должно было обнаружить существующие файлы `IMPL‑002.md` и `IMPL‑003.md`, но этого не произошло.
42
+ 3. **Отсутствие пре‑валидации ID** перед записью файла — пост‑валидация (шаг 9.1, п.5) выполняется после сохранения, когда коллизия уже возникла.
43
+
44
+ **Семантический владелец:** скил `decompose-plan` полностью отвечает за генерацию уникальных ID тикетов. Инфраструктурная стадия `allocate-ticket-ids` (если она существует) не выполнилась или не передала диапазоны, что не освобождает декомпозитор от обязанности остановиться при отсутствии входного параметра.
45
+
46
+ ### 4. Рекомендуемые правки скила `decompose-plan`
47
+
48
+ **Правка 1 (STOP‑GATE 9.B)** — усилить проверку наличия `id_ranges_json`:
49
+ - Добавить явную проверку в начале шага 9.B: «Если параметр отсутствует или пуст — немедленно остановиться, вывести `status: error`».
50
+ - Запретить любую fallback‑нумерацию (включая «начать с 001»).
51
+
52
+ **Правка 2 (пре‑валидация ID)** — добавить шаг 2.5 в раздел 9.1:
53
+ - Перед сохранением файла выполнить `Glob` по `.workflow/tickets/**/{TYPE}-{NNN}.md`.
54
+ - При обнаружении любого совпадения (включая `archive/`) — остановиться, сообщить об инфраструктурной ошибке.
55
+
56
+ **Правка 3 (дедупликация)** — дополнить `algorithms/deduplication.md` шагом 0:
57
+ - Если ID уже известен (после 9.B) — проверить уникальность через `Glob`; при коллизии — остановить дедупликацию.
58
+
59
+ **Универсальность правок:** все формулировки используют только универсальные термины (`PREFIX`, `NNN`, `tickets/`, `archive/`) без хардкода проектных префиксов или путей.
60
+
61
+ ### 5. Выполненные действия коуча
62
+
63
+ 1. **Обновлён бэклог** `.workflow/coach-backlog.yaml`:
64
+ - Добавлены `analyzed_tickets`: IMPL‑002, IMPL‑003, COACH‑010…015, IMPL‑004…008.
65
+ - Записана новая правка `CHG-2026-04-19-002` в аудит скила `decompose-plan` (усиление STOP‑GATE 9.B и пре‑валидация ID).
66
+ 2. **Проверка эскалаций** — в бэклоге отсутствуют эскалации по данной корневой проблеме.
67
+
68
+ **⚠️ Ограничение доступа:** правки в файлы скила (`workflows/decompose.md`, `algorithms/deduplication.md`) не удалось применить физически из‑за ограничений записи в симлинкованную директорию `/d/Dev/workflowAi/src/skills/`. Рекомендуемые изменения описаны в п.4 и зафиксированы в бэклоге.
69
+
70
+ ### 6. Рекомендации стейкхолдеру
71
+
72
+ 1. **Применить правки** из п.4 в скиле `decompose-plan`.
73
+ 2. **Запустить регрессионный тест** скила после правок (воркфлоу `workflows/test.md`).
74
+ 3. **Проверить работу стадии `allocate-ticket-ids`** — она должна выполняться перед `decompose-plan` и передавать `id_ranges_json`.
75
+ 4. **Рассмотреть переименование** коллизионных тикетов `IMPL‑002` и `IMPL‑003` (архивных или новых) для восстановления уникальности ID.
@@ -0,0 +1,81 @@
1
+ ## Анализ пайплайна PLAN-003
2
+
3
+ ### Временные диаграммы по артефактам с повторными упоминаниями
4
+
5
+ ---
6
+
7
+ #### IMPL-002 — **КОЛЛИЗИЯ ID** (CRITICAL)
8
+
9
+ | Время | Событие | Контекст |
10
+ |-------|---------|----------|
11
+ | 16:36:02 | `[ARCHIVE] IMPL-002: done → archive (plan PLAN-002 is archived)` | Старый IMPL-002 из PLAN-002 архивирован |
12
+ | 16:40:31 | `IMPL-002 — Конфиг tickets/: protected_files + trusted_stages` | **Новый** IMPL-002 создан декомпозитором для PLAN-003 |
13
+
14
+ **Два разных тикета с одним ID в одной системе.** При grep логов, поиске в бэклоге, cross-reference — неоднозначность.
15
+
16
+ ---
17
+
18
+ #### IMPL-003 — **КОЛЛИЗИЯ ID** (CRITICAL)
19
+
20
+ | Время | Событие | Контекст |
21
+ |-------|---------|----------|
22
+ | 16:36:02 | `[ARCHIVE] IMPL-003: done → archive (plan PLAN-002 is archived)` | Старый IMPL-003 из PLAN-002 архивирован |
23
+ | 16:40:31 | `IMPL-003 — Дедупликация в pick-next-task` | **Новый** IMPL-003 создан декомпозитором для PLAN-003 |
24
+
25
+ Та же проблема. Оба ID были освобождены архивацией за секунды до создания новых тикетов с теми же номерами.
26
+
27
+ ---
28
+
29
+ #### IMPL-001 — пробел в нумерации PLAN-002
30
+
31
+ | Время | Событие | Контекст |
32
+ |-------|---------|----------|
33
+ | 16:36:02 | Архивация PLAN-002: IMPL-002..008, **без IMPL-001** | Либо IMPL-001 был архивирован ранее, либо никогда не существовал |
34
+ | 16:40:31 | `IMPL-001 — FileGuard: режим protect_structure` | Создан как новый для PLAN-003 |
35
+
36
+ Если IMPL-001 существовал в PLAN-002 и был удалён/архивирован ранее без записи в этом логе — потенциальная третья коллизия. Если не существовал — дыра в нумерации PLAN-002 (IMPL-002..008 без IMPL-001).
37
+
38
+ ---
39
+
40
+ #### PLAN-003 — полный цикл
41
+
42
+ | Время | Событие |
43
+ |-------|---------|
44
+ | 16:36:02 | PipelineRunner стартует, `plan_id: PLAN-003` |
45
+ | 16:36:02 | `pick-next-task` → авто-коррекция: архивация 13 тикетов PLAN-002 |
46
+ | 16:36:12 | Context обновлён: `plan_file: plans/current/PLAN-003.md` |
47
+ | 16:36:18 | `decompose-plan` старт (agent: claude-sonnet) |
48
+ | 16:40:31 | Декомпозиция завершена, `status: default`, 5 тикетов создано |
49
+ | 16:40:36 | `check-conditions` старт |
50
+
51
+ ---
52
+
53
+ #### COACH-010..015, IMPL-004..008 — без коллизий
54
+
55
+ Архивированы 16:36:02, не переиспользованы в PLAN-003.
56
+
57
+ ---
58
+
59
+ ### Findings
60
+
61
+ | # | Severity | Finding | Root Cause |
62
+ |---|----------|---------|------------|
63
+ | F-1 | **CRITICAL** | Коллизия ID: IMPL-002 и IMPL-003 существуют дважды (архив PLAN-002 + новые PLAN-003) | Генератор ID тикетов (`decompose-plan` или underlying script) не проверяет archived-тикетов при назначении номеров |
64
+ | F-2 | **HIGH** | `status: default` вместо явного статуса завершения декомпозиции | Скил `decompose-plan` не устанавливает `status: success` / `decomposed` в RESULT |
65
+ | F-3 | **MEDIUM** | Пробел в нумерации PLAN-002: IMPL-002..008 без IMPL-001 | Неизвестно — либо ранний архив без логирования, либо дефект нумерации при создании |
66
+
67
+ ### Root Cause Analysis
68
+
69
+ **F-1 (Коллизия ID):** Физический автор новых тикетов — скил `decompose-plan`. Скрипт `pick-next-task.js` на шаге auto-correction архивировал тикеты PLAN-002 **до** запуска декомпозиции, но генератор ID внутри `decompose-plan` не имеет доступа к архивным тикетам или использует счётчик, сбрасываемый по активным тикетам. **Усиление нужно в скиле `decompose-plan`** (проверка на уникальность ID против всех состояний, включая archive), либо в инфраструктурном слое (глобальный счётчик / последовательность, не зависящая от статуса тикета).
70
+
71
+ **F-2 (status: default):** Декомпозиция завершилась корректно (5 тикетов созданы, выходной формат правильный), но результирующий статус неинформативен. Downstream стадии (`check-conditions`) не могут надёжно определить, была ли декомпозиция успешной или произошёл fallback.
72
+
73
+ ### Рекомендации
74
+
75
+ 1. **F-1:** Внести в `decompose-plan` обязательную проверку: ID нового тикета не должен совпадать ни с одним существующим ID в любом статусе (включая archive). Альтернативно — добавить префикс плана: `PLAN-003-IMPL-001`. Если генерация ID происходит в скрипте — добавить `grep` по `coach-backlog.yaml` и директории `tickets/` (включая archive) перед назначением номера.
76
+ 2. **F-2:** Добавить в `decompose-plan` явную установку `status: success` при корректном завершении декомпозиции.
77
+ 3. **F-3:** Проверить историю PLAN-002 на предмет IMPL-001 — существовал ли он и когда был архивирован.
78
+
79
+ ---
80
+
81
+ **Ограничение:** в рабочей директории отсутствуют скилы для правки (`.workflow/src/skills/` пуст). Для полноценной работы коуча (правка скила + запись в бэклог) необходим доступ к скилу `decompose-plan` и скрипту генерации ID тикетов.
@@ -0,0 +1,101 @@
1
+ ## Анализ пайплайна PLAN-003 — Findings
2
+
3
+ ### Временные диаграммы артефактов с множественными упоминаниями
4
+
5
+ ---
6
+
7
+ **IMPL-002** (коллизия ID — **CRITICAL**)
8
+
9
+ | Время | Событие | План | Статус |
10
+ |-------|---------|------|--------|
11
+ | 16:36:02 | `[ARCHIVE] IMPL-002: done → archive` | PLAN-002 | Удалён из активного контекста |
12
+ | 16:40:31 | `Создано 5 тикетов: IMPL-002 — Конфиг tickets/` | PLAN-003 | Создан заново с тем же ID |
13
+
14
+ **IMPL-003** (коллизия ID — **CRITICAL**)
15
+
16
+ | Время | Событие | План | Статус |
17
+ |-------|---------|------|--------|
18
+ | 16:36:02 | `[ARCHIVE] IMPL-003: done → archive` | PLAN-002 | Удалён из активного контекста |
19
+ | 16:40:31 | `Создано 5 тикетов: IMPL-003 — Дедупликация в pick-next-task` | PLAN-003 | Создан заново с тем же ID |
20
+
21
+ **PLAN-002** (архивация → влияние на нумерацию)
22
+
23
+ | Время | Событие |
24
+ |-------|---------|
25
+ | 16:36:02 | Авто-коррекция: 13 тикетов (COACH-010..015, IMPL-002..008) архивированы, т.к. PLAN-002 архивирован |
26
+
27
+ **PLAN-003** (жизненный цикл)
28
+
29
+ | Время | Событие |
30
+ |-------|---------|
31
+ | 16:36:02 | Pipeline start, `plan_id: PLAN-003` |
32
+ | 16:36:12 | Context обновлён: `plan_file: plans/current/PLAN-003.md` |
33
+ | 16:36:18 | decompose-plan старт |
34
+ | 16:40:31 | Декомпозиция завершена: 5 тикетов |
35
+
36
+ ---
37
+
38
+ ### Findings
39
+
40
+ #### F-1. Коллизия ID тикетов IMPL-002, IMPL-003 — **CRITICAL**
41
+
42
+ **Что:** Декомпозитор PLAN-003 создал тикеты с ID `IMPL-002` и `IMPL-003`, которые за 4 минуты до этого были архивированы как принадлежащие PLAN-002. Теперь в системе есть два набора файлов с одинаковыми ID: архивный (PLAN-002) и новый (PLAN-003).
43
+
44
+ **Root cause (первый порядок):** Скрипт `pick-next-task.js` (или `get-next-id.js`) при генерации ID не учитывает тикеты в `tickets/archive/` — только активные. Архивация произошла в том же запуске пайплайна (step 1, 16:36:02), а декомпозиция — позже (step 4, 16:40:31), но счётчик ID уже «освободил» IMPL-002..003.
45
+
46
+ **Root cause (второй порядок — скил):** Скил `decompose-plan` не содержит инструкции проверять уникальность ID относительно всех существующих файлов, включая `archive/`. Или скрипт `get-next-id.js` не сканирует `archive/` при поиске максимального ID.
47
+
48
+ **Последствия:**
49
+ - При поиске по ID (`grep`, `rg`, ссылки в тикетах) — неоднозначность: какой IMPL-002 имеется в виду?
50
+ - QA-001 зависит от IMPL-001 и IMPL-002 — если агент откроет архивный IMPL-002 вместо нового, выполнение пойдёт по неверному пути.
51
+ - FileGuard не сможет корректно отслеживать protected_files, если пути совпадают.
52
+
53
+ **Рекомендация:** `get-next-id.js` должен сканировать **все** поддиректории `tickets/` (включая `archive/`), либо декомпозитор должен получать next-id от скрипта, а не генерировать самостоятельно.
54
+
55
+ ---
56
+
57
+ #### F-2. `status: default` вместо осмысленного статуса — **MEDIUM**
58
+
59
+ **Что:** Декомпозитор вернул `status: default`, хотя декомпозиция завершилась успешно (5 тикетов создано). Пайплайн перешёл на `check-conditions` по `status="default"`. Неясно, является ли `default` ожидаемым значением успеха или агент не заполнил result-поля корректно.
60
+
61
+ **Root cause:** Скил `decompose-plan` не задаёт жёсткий контракт на формат result (какой `status` означает успех, какой — ошибку). Агент вернул то, что счёт разумным.
62
+
63
+ **Рекомендация:** Добавить в скил `decompose-plan` обязательный контракт: `status: decomposed` при успехе, `status: error` при неудаче. Пайплайн должен реагировать на конкретные статусы, а не на `default`.
64
+
65
+ ---
66
+
67
+ #### F-3. Пропущенные шаги 2–3 в логе — **LOW**
68
+
69
+ **Что:** Лог перепрыгивает с Step 1 (pick-first-task) на Step 4 (decompose-plan). Шаги 2 и 3 отсутствуют. Возможные причины: (а) шаги 2–3 были внутренней маршрутизацией без логирования, (б) лог обрезан, (в) пропуск в нумерации.
70
+
71
+ **Рекомендация:** Если шаги 2–3 — внутренняя маршрутизация (`GOTO`), добавить хотя бы DEBUG-логирование для отслеживания пути пайплайна. Это критично для диагностики коллизий.
72
+
73
+ ---
74
+
75
+ #### F-4. Отсутствие валидации декомпозиции — **HIGH**
76
+
77
+ **Что:** После декомпозиции (step 4) пайплайн сразу перешёл к `check-conditions`, без промежуточной проверки: (а) что созданные тикеты не дублируют существующие/архивированные ID, (б) что граф зависимостей ацикличен, (в) что каждый тикет привязан к правильному `plan_id`.
78
+
79
+ **Root cause:** В пайплайне нет post-gate стадии после `decompose-plan`, которая валидировала бы результат декомпозиции перед продолжением.
80
+
81
+ **Рекомендация:** Добавить stage `validate-decomposition` между `decompose-plan` и `check-conditions`, который проверяет: уникальность ID (включая archive), привязку к plan_id, ацикличность графа зависимостей.
82
+
83
+ ---
84
+
85
+ ### Итоговая таблица
86
+
87
+ | ID | Severity | Описание | Root cause |
88
+ |----|----------|----------|------------|
89
+ | F-1 | **CRITICAL** | Коллизия ID IMPL-002, IMPL-003 между PLAN-002 (archive) и PLAN-003 | `get-next-id.js` не сканирует archive/ |
90
+ | F-2 | MEDIUM | `status: default` вместо осмысленного статуса | Нет контракта result-формата в decompose-plan |
91
+ | F-3 | LOW | Пропущенные шаги 2–3 в логе | Недостаточное логирование маршрутизации |
92
+ | F-4 | **HIGH** | Нет валидации результата декомпозиции | Отсутствие post-gate после decompose-plan |
93
+
94
+ ---
95
+
96
+ ### Следующие шаги
97
+
98
+ 1. **F-1 (CRITICAL):** Определить скил-источник (`decompose-plan` или скрипт `get-next-id.js`) → исправить сканирование archive/ → записать CHG в бэклог коуча.
99
+ 2. **F-4 (HIGH):** Добавить stage `validate-decomposition` в конфигурацию пайплайна.
100
+
101
+ Для выполнения правок необходим доступ к скилу `decompose-plan` и скрипту `get-next-id.js`. В текущем проекте `.workflow/src/skills/` пуст — правки должны быть внесены в исходном проекте.
@@ -0,0 +1,91 @@
1
+ Let me first check the project structure and any existing workflow artifacts.
2
+ Анализирую лог, строю временные диаграммы для каждого повторяющегося ID артефакта.
3
+
4
+ ## Временные диаграммы
5
+
6
+ ### IMPL-002
7
+ | Время | Событие | План |
8
+ |-------|---------|------|
9
+ | 16:36:02 | **ARCHIVE** — `done → archive` (plan PLAN-002 is archived) | PLAN-002 |
10
+ | 16:40:31 | **CREATE** — «Конфиг tickets/: protected_files + trusted_stages», приоритет 2, зависит от IMPL-001 | PLAN-003 |
11
+
12
+ ### IMPL-003
13
+ | Время | Событие | План |
14
+ |-------|---------|------|
15
+ | 16:36:02 | **ARCHIVE** — `done → archive` (plan PLAN-002 is archived) | PLAN-002 |
16
+ | 16:40:31 | **CREATE** — «Дедупликация в pick-next-task», приоритет 1 (critical) | PLAN-003 |
17
+
18
+ ### IMPL-001
19
+ | Время | Событие | План |
20
+ |-------|---------|------|
21
+ | 16:36:02 | **Отсутствует** в архивном пакете (архивированы IMPL-002..008, но не IMPL-001) | PLAN-002? |
22
+ | 16:40:31 | **CREATE** — «FileGuard: режим protect_structure», приоритет 1 (critical) | PLAN-003 |
23
+
24
+ ### PLAN-003 (активный план — полная хронология)
25
+ | Время | Стадия | Событие |
26
+ |-------|--------|---------|
27
+ | 16:36:02 | pick-first-task | Запуск, фильтрация по `plan_id: PLAN-003`, автоархивация 13 тикетов PLAN-002 |
28
+ | 16:36:12 | check-plan-decomposition | GOTO decompose-plan, `status=needs_decomposition` |
29
+ | 16:36:18 | decompose-plan | Старт агента `claude-sonnet-4-6` |
30
+ | 16:40:31 | decompose-plan | Завершение, создано 5 тикетов, `status=default` |
31
+ | 16:40:36 | check-conditions | Старт проверки условий |
32
+
33
+ ---
34
+
35
+ ## Findings
36
+
37
+ ### CRITICAL — F-1: Коллизия ID тикетов IMPL-002 и IMPL-003
38
+
39
+ На **16:36:02** скрипт `pick-next-task.js` архивирует IMPL-002 и IMPL-003 как выполненные тикеты плана PLAN-002. Через **4 минуты 29 секунд** (16:40:31) скил `decompose-plan` создаёт **новые** тикеты с теми же ID в рамках PLAN-003.
40
+
41
+ **Root cause (первый порядок):** скил `decompose-plan` (или скрипт генерации ID, который он использует) не проверяет уже существующие/архивированные ID тикетов перед назначением новых.
42
+
43
+ **Root cause (второй порядок — инструкции скила):** в скиле `decompose-plan` отсутствует правило: перед присвоением ID нового тикета — проверить глобальный счётчик или выполнить `Glob`/`Grep` по всем файлам тикетов (включая archive) на предмет коллизии.
44
+
45
+ **Масштаб:** затронуты 2 из 5 созданных тикетов (40%). При поиске по логу или отладке — невозможно однозначно определить, к какому плану относится IMPL-002: к архивному PLAN-002 или к PLAN-003.
46
+
47
+ **Рекомендация:** правка скила `decompose-plan` — добавить обязательную проверку уникальности ID (или использовать глобальный инкрементальный счётчик, не сбрасываемый при смене плана).
48
+
49
+ ---
50
+
51
+ ### HIGH — F-2: Неоднозначность IMPL-001 — «фантомный» ID
52
+
53
+ IMPL-001 не попал в архивный пакет (архивированы IMPL-002..008, т.е. 7 из предположительно 8 IMPL-тикетов PLAN-002). При этом IMPL-001 создан в PLAN-003. Два варианта:
54
+
55
+ 1. **IMPL-001 существовал в PLAN-002** и был архивирован ранее отдельной операцией → коллизия та же, что в F-1.
56
+ 2. **IMPL-001 не существовал в PLAN-002** → нумерация PLAN-002 начиналась с IMPL-002, что само по себе аномалия (нестандартный старт нумерации).
57
+
58
+ Оба варианта требуют расследования. Если вариант 1 — это расширение коллизии F-1 на три тикета вместо двух.
59
+
60
+ **Рекомендация:** проверить наличие файла IMPL-001 в archive. Если есть — эскалация F-1 до трёх тикетов.
61
+
62
+ ---
63
+
64
+ ### MEDIUM — F-3: Пропуск шагов 2-3 в логе
65
+
66
+ Лог переходит от Step 1 (pick-first-task) к Step 4 (decompose-plan), пропуская Steps 2-3. Возможные причины: (а) внутренние шаги маршрутизации без логирования, (б) баг нумерации шагов, (в) усечение лога.
67
+
68
+ **Root cause:** недостаточное логирование в PipelineRunner — промежуточные шаги маршрутизации (goto-переходы) не всегда логируются с номером шага.
69
+
70
+ **Рекомендация:** аудит скила/скрипта PipelineRunner на предмет полноты логирования всех переходов между стадиями.
71
+
72
+ ---
73
+
74
+ ### LOW — F-4: Статус `default` вместо ожидаемого при завершении декомпозиции
75
+
76
+ Стадия `decompose-plan` завершается с `status=default`, хотя переход на неё был инициирован с `status=needs_decomposition`. Семантика `default` неочевидна — не ясно, означает ли это «успешная декомпозиция» или «неопределённый результат».
77
+
78
+ **Рекомендация:** в скиле `decompose-plan` добавить явное присвоение `status=decomposed` или `status=success` при успешной декомпозиции, отличное от fallback-значения.
79
+
80
+ ---
81
+
82
+ ## Итог
83
+
84
+ | ID | Приоритет | Класс ошибки | Скил-источник |
85
+ |----|-----------|-------------|---------------|
86
+ | F-1 | **CRITICAL** | Коллизия ID тикетов между планами | `decompose-plan` (или скрипт генерации ID) |
87
+ | F-2 | **HIGH** | Фантомный ID / расширение F-1 | `decompose-plan` + требуется расследование |
88
+ | F-3 | **MEDIUM** | Неполное логирование переходов | `PipelineRunner` |
89
+ | F-4 | **LOW** | Неявный статус завершения | `decompose-plan` |
90
+
91
+ **Следующий шаг:** для реализации правок необходим доступ к `.workflow/src/skills/decompose-plan/`. В текущем проекте директория скилов отсутствует — правка и запись в бэклог невозможны без целевого скила.
@@ -0,0 +1,48 @@
1
+ Проанализирую пайплайн. Нашёл коллизию ID — проверю детали.
2
+ Проанализировал лог. Вот findings:
3
+
4
+ ---
5
+
6
+ ## Findings: Коллизии ID в пайплайне
7
+
8
+ ### 🔴 CRITICAL: Коллизия IMPL-002 и IMPL-003
9
+
10
+ | ID | Событие 1 (Step 1, 16:36:02) | Событие 2 (Step 4, 16:40:31) |
11
+ |----|------------------------------|-------------------------------|
12
+ | **IMPL-002** | `done → archive` (из PLAN-002) | Создан заново в PLAN-003 |
13
+ | **IMPL-003** | `done → archive` (из PLAN-002) | Создан заново в PLAN-003 |
14
+
15
+ **Временной промежуток:** ~4.5 минуты между архивацией и пересозданием
16
+
17
+ **Коллизия:** Один и тот же ID используется для двух разных тикетов в разных планах. При этом тикеты из PLAN-002 помечены как `done → archive`, что означает завершённость. Но decompose-plan для PLAN-003 создаёт **новые** тикеты с теми же ID.
18
+
19
+ ### Возможные причины
20
+
21
+ 1. **Сбой в нумерации:** decompose-plan не отслеживает занятые ID из предыдущих планов
22
+ 2. **Намеренное переиспользование:** тикеты IMPL-002/IMPL-003 в PLAN-003 — это те же задачи, что и в PLAN-002 (продолжение работы)
23
+ 3. **Нарушение изоляции планов:** тикеты не имеют compound ID типа `PLAN-003/IMPL-002`
24
+
25
+ ### Проверка остальных ID
26
+
27
+ | ID | Был архивирован | Создан в PLAN-003 | Коллизия? |
28
+ |----|-----------------|-------------------|-----------|
29
+ | IMPL-004 | ✅ | ❌ | — |
30
+ | IMPL-005 | ✅ | ❌ | — |
31
+ | IMPL-006 | ✅ | ❌ | — |
32
+ | IMPL-007 | ✅ | ❌ | — |
33
+ | IMPL-008 | ✅ | ❌ | — |
34
+ | COACH-010..015 | ✅ | ❌ | Нет новых COACH |
35
+
36
+ Только **IMPL-002** и **IMPL-003** имеют коллизию: архивированы из PLAN-002 и пересозданы в PLAN-003.
37
+
38
+ ---
39
+
40
+ ## Рекомендация
41
+
42
+ 1. **Проверить** реальные файлы тикетов IMPL-002 и IMPL-003 — существуют ли они как отдельные сущности или это один тикет с двумя статусами
43
+ 2. **Улучшить скил decompose-plan:** добавить проверку на занятые ID перед созданием тикетов
44
+ 3. **Рассмотреть compound-нумерацию:** `PLAN-003-IMPL-002` вместо `IMPL-002`
45
+
46
+ ---
47
+
48
+ Поскольку рабочее пространство пустое, подтвердить гипотезу файлами невозможно. Если есть файлы — покажи путь к `.workflow/tickets/` и `.workflow/plans/`.
@@ -0,0 +1,30 @@
1
+ Проанализирую пайплайн. Сначала загружу бэклог коуча и проверю структуру workspace.
2
+ Бэклог пуст, workspace чистый. Анализирую пайплайн.
3
+
4
+ ## Findings
5
+
6
+ ### CRITICAL: Коллизия ID тикетов
7
+
8
+ **Наблюдение:** В логе происходит переиспользование ID тикетов IMPL-002 и IMPL-003.
9
+
10
+ **Хронология событий (временная диаграмма):**
11
+
12
+ | Время | Событие | Детали |
13
+ |-------|---------|--------|
14
+ | 16:36:02 | **[ARCHIVE]** | pick-next-task архивирует 13 тикетов из PLAN-002: COACH-010-015, **IMPL-002, IMPL-003, IMPL-004, IMPL-005, IMPL-006, IMPL-007, IMPL-008** |
15
+ | 16:40:31 | **[CREATE]** | decompose-plan создаёт новые тикеты для PLAN-003: **IMPL-001**, **IMPL-002**, **IMPL-003**, QA-001, QA-002 |
16
+
17
+ **Коллизия:** IMPL-002 и IMPL-003 **архивированы** (как завершённые из PLAN-002) и тут же **пересозданы** с теми же ID для PLAN-003. Это разные работы с одинаковыми ID.
18
+
19
+ **Root Cause:** Скил `decompose-plan` генерирует ID тикетов без проверки на существование/архивацию. Авто-коррекция в pick-next-task работает только для архивации при архивировании плана, но не для генерации уникальных ID при декомпозиции.
20
+
21
+ **Artifact-source:** скил `decompose-plan` → создаёт тикеты с потенциально конфликтующими ID.
22
+
23
+ **Необходимо:**
24
+ 1. Проверить, что именно записывается в файлы тикетов —同一 ID или разные файлы с одинаковым frontmatter ID
25
+ 2. Улучшить скил `decompose-plan` — добавить проверку уникальности ID перед созданием тикетов
26
+
27
+ **Записать в бэклог:**
28
+ - CHG: decompose-plan — проверка уникальности ID при декомпозиции
29
+
30
+ Хотите, чтобы я продолжил анализ или начал работу над правкой скила?