workflow-ai 1.0.62 → 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 (505) hide show
  1. package/README.md +61 -0
  2. package/agent-templates/CLAUDE.md.tpl +2 -0
  3. package/agent-templates/QWEN.md.tpl +2 -0
  4. package/configs/config.yaml +134 -0
  5. package/configs/pipeline.yaml +884 -0
  6. package/configs/ticket-movement-rules.yaml +80 -0
  7. package/package.json +2 -1
  8. package/src/global-dir.mjs +25 -1
  9. package/src/init.mjs +5 -4
  10. package/src/lib/agent-spawner.mjs +338 -0
  11. package/src/runner.mjs +15 -14
  12. package/src/scripts/get-next-test-id.js +94 -0
  13. package/src/scripts/migrate-backlog-to-tests.js +406 -0
  14. package/src/scripts/run-skill-tests.js +1703 -0
  15. package/src/scripts/scan-fixtures-for-secrets.js +248 -0
  16. package/src/scripts/tests/timeout-cascade.test.js +28 -0
  17. package/src/skills/analyze-report/README.md +44 -0
  18. package/src/skills/analyze-report/SKILL.md +121 -0
  19. package/src/skills/analyze-report/algorithms/progress-assessment.md +108 -0
  20. package/src/skills/analyze-report/knowledge/analysis-frameworks.md +66 -0
  21. package/src/skills/analyze-report/knowledge/report-structure.md +61 -0
  22. package/src/skills/analyze-report/scripts/calc-plan-metrics.js +234 -0
  23. package/src/skills/analyze-report/templates/analysis-report.md +80 -0
  24. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-1.md +69 -0
  25. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-2.md +103 -0
  26. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-3.md +99 -0
  27. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/judge.json +163 -0
  28. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-1.md +89 -0
  29. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-2.md +88 -0
  30. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-3.md +100 -0
  31. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-1.md +77 -0
  32. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-2.md +64 -0
  33. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-3.md +110 -0
  34. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-1.md +74 -0
  35. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-2.md +38 -0
  36. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-3.md +61 -0
  37. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/meta.json +115 -0
  38. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001-evidence-from-log.yaml +60 -0
  39. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-1.md +90 -0
  40. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-2.md +89 -0
  41. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-3.md +77 -0
  42. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/judge.json +163 -0
  43. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-1.md +84 -0
  44. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-2.md +77 -0
  45. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-3.md +89 -0
  46. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-1.md +103 -0
  47. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-2.md +103 -0
  48. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-3.md +103 -0
  49. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-1.md +93 -0
  50. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-2.md +93 -0
  51. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-3.md +86 -0
  52. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/meta.json +115 -0
  53. package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002-result-block-format.yaml +44 -0
  54. package/src/skills/analyze-report/tests/fixtures/REPORT-002-incorrect-attribution.md +27 -0
  55. package/src/skills/analyze-report/tests/fixtures/pipeline-2026-04-06_qa-001-skip.log +32 -0
  56. package/src/skills/analyze-report/tests/index.yaml +25 -0
  57. package/src/skills/analyze-report/tests/rubrics/evidence-from-log.md +22 -0
  58. package/src/skills/analyze-report/tests/rubrics/result-block-format.md +22 -0
  59. package/src/skills/analyze-report/workflows/progress.md +158 -0
  60. package/src/skills/analyze-report/workflows/retrospective.md +143 -0
  61. package/src/skills/coach/README.md +43 -0
  62. package/src/skills/coach/SKILL.md +166 -0
  63. package/src/skills/coach/SKILL.md.legacy +157 -0
  64. package/src/skills/coach/algorithms/gap-analysis.md +69 -0
  65. package/src/skills/coach/algorithms/improvement-prioritization.md +62 -0
  66. package/src/skills/coach/algorithms/skill-scoring.md +80 -0
  67. package/src/skills/coach/knowledge/audit-applied-changes-clean.txt +11 -0
  68. package/src/skills/coach/knowledge/backlog-management.md +67 -0
  69. package/src/skills/coach/knowledge/backlog-management.md.legacy +90 -0
  70. package/src/skills/coach/knowledge/common-antipatterns.md +76 -0
  71. package/src/skills/coach/knowledge/prompt-engineering.md +45 -0
  72. package/src/skills/coach/knowledge/shared-knowledge-guide.md +44 -0
  73. package/src/skills/coach/knowledge/skill-anatomy.md +49 -0
  74. package/src/skills/coach/knowledge/test-authorship.md +141 -0
  75. package/src/skills/coach/templates/audit-report.md +39 -0
  76. package/src/skills/coach/templates/coach-backlog-init.yaml +14 -0
  77. package/src/skills/coach/templates/coach-backlog-init.yaml.legacy +10 -0
  78. package/src/skills/coach/templates/improvement-plan.md +42 -0
  79. package/src/skills/coach/templates/new-skill.md +95 -0
  80. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-1.md +58 -0
  81. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-2.md +65 -0
  82. package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-3.md +58 -0
  83. package/src/skills/coach/tests/cases/TC-COACH-001/current/judge.json +151 -0
  84. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-1.md +46 -0
  85. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-2.md +0 -0
  86. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-3.md +75 -0
  87. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-1.md +81 -0
  88. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-2.md +101 -0
  89. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-3.md +91 -0
  90. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-1.md +48 -0
  91. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-2.md +30 -0
  92. package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-3.md +55 -0
  93. package/src/skills/coach/tests/cases/TC-COACH-001/current/meta.json +95 -0
  94. package/src/skills/coach/tests/cases/TC-COACH-001-evidence-based-temporal-diagram.yaml +53 -0
  95. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-1.md +46 -0
  96. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-2.md +50 -0
  97. package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-3.md +48 -0
  98. package/src/skills/coach/tests/cases/TC-COACH-002/current/judge.json +151 -0
  99. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-1.md +0 -0
  100. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-2.md +37 -0
  101. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-3.md +30 -0
  102. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-1.md +23 -0
  103. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-2.md +29 -0
  104. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-3.md +35 -0
  105. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-1.md +13 -0
  106. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-2.md +19 -0
  107. package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-3.md +33 -0
  108. package/src/skills/coach/tests/cases/TC-COACH-002/current/meta.json +95 -0
  109. package/src/skills/coach/tests/cases/TC-COACH-002-root-cause-first.yaml +57 -0
  110. package/src/skills/coach/tests/fixtures/pipeline-2026-04-06_id-collision.log +77 -0
  111. package/src/skills/coach/tests/index.yaml +29 -0
  112. package/src/skills/coach/tests/rubrics/calibration/evidence-based-bad.md +13 -0
  113. package/src/skills/coach/tests/rubrics/calibration/evidence-based-good.md +29 -0
  114. package/src/skills/coach/tests/rubrics/evidence-based.md +26 -0
  115. package/src/skills/coach/tests/rubrics/root-cause-first.md +21 -0
  116. package/src/skills/coach/workflows/analyze.md +79 -0
  117. package/src/skills/coach/workflows/analyze.md.legacy +64 -0
  118. package/src/skills/coach/workflows/audit.md +74 -0
  119. package/src/skills/coach/workflows/audit.md.legacy +59 -0
  120. package/src/skills/coach/workflows/create.md +80 -0
  121. package/src/skills/coach/workflows/create.md.legacy +67 -0
  122. package/src/skills/coach/workflows/improve.md +71 -0
  123. package/src/skills/coach/workflows/improve.md.legacy +60 -0
  124. package/src/skills/coach/workflows/research.md +55 -0
  125. package/src/skills/coach/workflows/review.md +52 -0
  126. package/src/skills/coach/workflows/review.md.legacy +48 -0
  127. package/src/skills/coach/workflows/test.md +97 -0
  128. package/src/skills/create-plan/README.md +39 -0
  129. package/src/skills/create-plan/SKILL.md +104 -0
  130. package/src/skills/create-plan/algorithms/risk-assessment.md +73 -0
  131. package/src/skills/create-plan/knowledge/plan-completeness.md +67 -0
  132. package/src/skills/create-plan/knowledge/plan-lifecycle.md +33 -0
  133. package/src/skills/create-plan/knowledge/task-verification-pairs.md +151 -0
  134. package/src/skills/create-plan/scripts/validate-completeness.js +182 -0
  135. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-1.md +5 -0
  136. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-2.md +39 -0
  137. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-3.md +35 -0
  138. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/judge.json +167 -0
  139. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-1.md +5 -0
  140. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-2.md +10 -0
  141. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-3.md +5 -0
  142. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-1.md +26 -0
  143. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-2.md +86 -0
  144. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-3.md +5 -0
  145. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-1.md +11 -0
  146. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-2.md +15 -0
  147. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-3.md +14 -0
  148. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/meta.json +119 -0
  149. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001-validate-completeness.yaml +41 -0
  150. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-1.md +25 -0
  151. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-2.md +30 -0
  152. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-3.md +37 -0
  153. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/judge.json +164 -0
  154. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-1.md +3 -0
  155. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-2.md +11 -0
  156. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-3.md +13 -0
  157. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-1.md +44 -0
  158. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-2.md +5 -0
  159. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-3.md +49 -0
  160. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-1.md +6 -0
  161. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-2.md +11 -0
  162. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-3.md +16 -0
  163. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/meta.json +116 -0
  164. package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002-task-granularity.yaml +39 -0
  165. package/src/skills/create-plan/tests/index.yaml +25 -0
  166. package/src/skills/create-plan/tests/rubrics/task-granularity.md +21 -0
  167. package/src/skills/create-plan/tests/rubrics/validate-completeness.md +21 -0
  168. package/src/skills/create-plan/workflows/create.md +136 -0
  169. package/src/skills/create-report/README.md +40 -0
  170. package/src/skills/create-report/SKILL.md +73 -0
  171. package/src/skills/create-report/algorithms/metric-calculation.md +93 -0
  172. package/src/skills/create-report/knowledge/report-metrics.md +82 -0
  173. package/src/skills/create-report/scripts/calc-metrics.js +383 -0
  174. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-1.md +25 -0
  175. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-2.md +26 -0
  176. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-3.md +28 -0
  177. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/judge.json +163 -0
  178. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-1.md +4 -0
  179. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-2.md +3 -0
  180. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-3.md +6 -0
  181. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-1.md +8 -0
  182. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-2.md +12 -0
  183. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-3.md +7 -0
  184. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-1.md +12 -0
  185. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-2.md +22 -0
  186. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-3.md +13 -0
  187. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/meta.json +115 -0
  188. package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001-root-cause-attribution.yaml +57 -0
  189. package/src/skills/create-report/tests/index.yaml +20 -0
  190. package/src/skills/create-report/tests/rubrics/root-cause-attribution.md +21 -0
  191. package/src/skills/create-report/workflows/standard.md +175 -0
  192. package/src/skills/decompose-gaps/README.md +39 -0
  193. package/src/skills/decompose-gaps/SKILL.md +78 -0
  194. package/src/skills/decompose-gaps/algorithms/scope-check.md +110 -0
  195. package/src/skills/decompose-gaps/knowledge/scope-validation.md +65 -0
  196. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-1.md +49 -0
  197. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +56 -0
  198. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +39 -0
  199. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/judge.json +164 -0
  200. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-1.md +25 -0
  201. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-2.md +11 -0
  202. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +26 -0
  203. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +19 -0
  204. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-2.md +5 -0
  205. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-3.md +28 -0
  206. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +23 -0
  207. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +27 -0
  208. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +25 -0
  209. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/meta.json +116 -0
  210. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001-scope-exclusion.yaml +46 -0
  211. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-1.md +32 -0
  212. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +20 -0
  213. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +26 -0
  214. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +164 -0
  215. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +7 -0
  216. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +16 -0
  217. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-3.md +7 -0
  218. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-1.md +5 -0
  219. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +11 -0
  220. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +13 -0
  221. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +13 -0
  222. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +12 -0
  223. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +5 -0
  224. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +116 -0
  225. package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002-glob-before-write.yaml +36 -0
  226. package/src/skills/decompose-gaps/tests/index.yaml +25 -0
  227. package/src/skills/decompose-gaps/tests/rubrics/glob-before-write.md +21 -0
  228. package/src/skills/decompose-gaps/tests/rubrics/scope-exclusion.md +21 -0
  229. package/src/skills/decompose-gaps/workflows/decompose.md +120 -0
  230. package/src/skills/decompose-plan/README.md +43 -0
  231. package/src/skills/decompose-plan/SKILL.md +87 -0
  232. package/src/skills/decompose-plan/algorithms/deduplication.md +101 -0
  233. package/src/skills/decompose-plan/knowledge/atomicity-checklist.md +113 -0
  234. package/src/skills/decompose-plan/knowledge/capabilities.md +44 -0
  235. package/src/skills/decompose-plan/knowledge/human-task-rules.md +67 -0
  236. package/src/skills/decompose-plan/knowledge/scope-guard-checklist.md +73 -0
  237. package/src/skills/decompose-plan/scripts/check-atomicity-limit.js +47 -0
  238. package/src/skills/decompose-plan/scripts/check-duplicates.js +323 -0
  239. package/src/skills/decompose-plan/scripts/verify-atomicity.js +408 -0
  240. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-1.md +30 -0
  241. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-2.md +36 -0
  242. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-3.md +37 -0
  243. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/judge.json +163 -0
  244. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-1.md +20 -0
  245. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-2.md +17 -0
  246. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-3.md +28 -0
  247. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-1.md +114 -0
  248. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-2.md +137 -0
  249. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-3.md +188 -0
  250. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-1.md +0 -0
  251. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-2.md +32 -0
  252. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-3.md +110 -0
  253. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/meta.json +115 -0
  254. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001-atomicity-no-1to1.yaml +56 -0
  255. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-1.md +47 -0
  256. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-2.md +54 -0
  257. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-3.md +43 -0
  258. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/judge.json +163 -0
  259. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-1.md +15 -0
  260. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-2.md +5 -0
  261. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-3.md +12 -0
  262. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-1.md +34 -0
  263. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-2.md +30 -0
  264. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-3.md +35 -0
  265. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-1.md +0 -0
  266. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-2.md +31 -0
  267. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-3.md +0 -0
  268. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/meta.json +115 -0
  269. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002-get-next-id-mandatory.yaml +44 -0
  270. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-1.md +21 -0
  271. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-2.md +38 -0
  272. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-3.md +30 -0
  273. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/judge.json +163 -0
  274. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-1.md +31 -0
  275. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-2.md +35 -0
  276. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-3.md +48 -0
  277. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-1.md +167 -0
  278. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-2.md +62 -0
  279. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-3.md +174 -0
  280. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-1.md +0 -0
  281. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-2.md +0 -0
  282. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-3.md +0 -0
  283. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/meta.json +115 -0
  284. package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003-verbatim-dod-transfer.yaml +42 -0
  285. package/src/skills/decompose-plan/tests/index.yaml +30 -0
  286. package/src/skills/decompose-plan/tests/rubrics/atomicity-no-1to1.md +21 -0
  287. package/src/skills/decompose-plan/tests/rubrics/get-next-id-mandatory.md +21 -0
  288. package/src/skills/decompose-plan/tests/rubrics/verbatim-dod-transfer.md +21 -0
  289. package/src/skills/decompose-plan/workflows/decompose.md +272 -0
  290. package/src/skills/deep-research/README.md +36 -0
  291. package/src/skills/deep-research/SKILL.md +106 -0
  292. package/src/skills/deep-research/algorithms/source-scoring.md +63 -0
  293. package/src/skills/deep-research/algorithms/synthesis.md +67 -0
  294. package/src/skills/deep-research/knowledge/data-validation.md +44 -0
  295. package/src/skills/deep-research/knowledge/perplexity-config.md +30 -0
  296. package/src/skills/deep-research/knowledge/research-methodology.md +54 -0
  297. package/src/skills/deep-research/knowledge/source-evaluation.md +33 -0
  298. package/src/skills/deep-research/scripts/perplexity-research.js +315 -0
  299. package/src/skills/deep-research/templates/brief-summary.md +25 -0
  300. package/src/skills/deep-research/templates/research-report.md +76 -0
  301. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-1.md +48 -0
  302. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-2.md +88 -0
  303. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-3.md +56 -0
  304. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/judge.json +163 -0
  305. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-1.md +58 -0
  306. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-2.md +249 -0
  307. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-3.md +44 -0
  308. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-1.md +96 -0
  309. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-2.md +56 -0
  310. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-3.md +94 -0
  311. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-1.md +11 -0
  312. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-2.md +1 -0
  313. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-3.md +1 -0
  314. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/meta.json +115 -0
  315. package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001-self-check-url.yaml +58 -0
  316. package/src/skills/deep-research/tests/index.yaml +20 -0
  317. package/src/skills/deep-research/tests/rubrics/self-check-url.md +34 -0
  318. package/src/skills/deep-research/workflows/base-checklist.md +19 -0
  319. package/src/skills/deep-research/workflows/benchmark.md +38 -0
  320. package/src/skills/deep-research/workflows/competitor.md +44 -0
  321. package/src/skills/deep-research/workflows/custom.md +32 -0
  322. package/src/skills/deep-research/workflows/market.md +44 -0
  323. package/src/skills/deep-research/workflows/technology.md +40 -0
  324. package/src/skills/deep-research/workflows/trend.md +40 -0
  325. package/src/skills/execute-task/README.md +44 -0
  326. package/src/skills/execute-task/SKILL.md +292 -0
  327. package/src/skills/execute-task/algorithms/execution-strategy.md +136 -0
  328. package/src/skills/execute-task/knowledge/context-checkpoints.md +75 -0
  329. package/src/skills/execute-task/knowledge/ticket-structure.md +70 -0
  330. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-1.md +5 -0
  331. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-2.md +5 -0
  332. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-3.md +5 -0
  333. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/judge.json +124 -0
  334. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-1.md +4 -0
  335. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-2.md +4 -0
  336. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-3.md +4 -0
  337. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-1.md +4 -0
  338. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-2.md +4 -0
  339. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-3.md +11 -0
  340. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/meta.json +89 -0
  341. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001-no-ticket-creation.yaml +48 -0
  342. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-1.md +5 -0
  343. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-2.md +6 -0
  344. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-3.md +5 -0
  345. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/judge.json +124 -0
  346. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-1.md +4 -0
  347. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-2.md +4 -0
  348. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-3.md +8 -0
  349. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-1.md +9 -0
  350. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-2.md +26 -0
  351. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-3.md +4 -0
  352. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/meta.json +89 -0
  353. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002-no-duplicate-dod.yaml +44 -0
  354. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-1.md +5 -0
  355. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-2.md +5 -0
  356. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-3.md +5 -0
  357. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/judge.json +46 -0
  358. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/meta.json +37 -0
  359. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003-verification-proportionality.yaml +46 -0
  360. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-1.md +18 -0
  361. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-2.md +16 -0
  362. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-3.md +14 -0
  363. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/judge.json +124 -0
  364. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-1.md +5 -0
  365. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-2.md +5 -0
  366. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-3.md +1 -0
  367. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-1.md +8 -0
  368. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-2.md +5 -0
  369. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-3.md +4 -0
  370. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/meta.json +89 -0
  371. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004-no-foreign-ticket-edit.yaml +50 -0
  372. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-1.md +5 -0
  373. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-2.md +5 -0
  374. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-3.md +5 -0
  375. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/judge.json +124 -0
  376. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-1.md +15 -0
  377. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-2.md +4 -0
  378. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-3.md +5 -0
  379. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-1.md +11 -0
  380. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-2.md +11 -0
  381. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-3.md +4 -0
  382. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/meta.json +89 -0
  383. package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005-ticket-fields-updated.yaml +39 -0
  384. package/src/skills/execute-task/tests/fixtures/IMPL-902-create-file.md +41 -0
  385. package/src/skills/execute-task/tests/fixtures/IMPL-904-current-task.md +40 -0
  386. package/src/skills/execute-task/tests/fixtures/IMPL-906-fill-ticket.md +42 -0
  387. package/src/skills/execute-task/tests/fixtures/QA-901-button-click.md +41 -0
  388. package/src/skills/execute-task/tests/fixtures/QA-903-visual-figma.md +40 -0
  389. package/src/skills/execute-task/tests/fixtures/TASK-905-done-with-typo.md +36 -0
  390. package/src/skills/execute-task/tests/index.yaml +39 -0
  391. package/src/skills/execute-task/tests/rubrics/no-duplicate-dod.md +22 -0
  392. package/src/skills/execute-task/tests/rubrics/no-foreign-ticket-edit.md +20 -0
  393. package/src/skills/execute-task/tests/rubrics/no-ticket-creation.md +21 -0
  394. package/src/skills/execute-task/tests/rubrics/ticket-fields-updated.md +23 -0
  395. package/src/skills/execute-task/tests/rubrics/verification-proportionality.md +22 -0
  396. package/src/skills/execute-task/workflows/execute.md +104 -0
  397. package/src/skills/manual-testing/README.md +63 -0
  398. package/src/skills/manual-testing/SKILL.md +174 -0
  399. package/src/skills/manual-testing/algorithms/blocked-tool-strategy.md +74 -0
  400. package/src/skills/manual-testing/algorithms/bug-severity.md +73 -0
  401. package/src/skills/manual-testing/algorithms/mcp-budget.md +97 -0
  402. package/src/skills/manual-testing/algorithms/test-prioritization.md +69 -0
  403. package/src/skills/manual-testing/knowledge/browser-extension-testing.md +102 -0
  404. package/src/skills/manual-testing/knowledge/browser-tools.md +114 -0
  405. package/src/skills/manual-testing/knowledge/desktop-tools-advanced.md +92 -0
  406. package/src/skills/manual-testing/knowledge/desktop-tools-core.md +76 -0
  407. package/src/skills/manual-testing/knowledge/sandbox-advanced.md +83 -0
  408. package/src/skills/manual-testing/knowledge/sandbox-core.md +67 -0
  409. package/src/skills/manual-testing/knowledge/stateful-edge-cases.md +69 -0
  410. package/src/skills/manual-testing/knowledge/test-case-design.md +107 -0
  411. package/src/skills/manual-testing/knowledge/testing-types.md +45 -0
  412. package/src/skills/manual-testing/templates/bug-report.md +52 -0
  413. package/src/skills/manual-testing/templates/test-case.md +34 -0
  414. package/src/skills/manual-testing/templates/test-plan.md +97 -0
  415. package/src/skills/manual-testing/templates/test-session-report.md +56 -0
  416. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-1.md +21 -0
  417. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +65 -0
  418. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +35 -0
  419. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/judge.json +163 -0
  420. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-1.md +0 -0
  421. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-2.md +7 -0
  422. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-3.md +0 -0
  423. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-1.md +4 -0
  424. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-2.md +15 -0
  425. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-3.md +8 -0
  426. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-1.md +5 -0
  427. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-2.md +7 -0
  428. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-3.md +7 -0
  429. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/meta.json +114 -0
  430. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001-sandbox-mandatory.yaml +38 -0
  431. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md +47 -0
  432. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +39 -0
  433. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +40 -0
  434. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/judge.json +163 -0
  435. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-1.md +19 -0
  436. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-2.md +15 -0
  437. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-3.md +24 -0
  438. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-1.md +19 -0
  439. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-2.md +13 -0
  440. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-3.md +18 -0
  441. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-1.md +21 -0
  442. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-2.md +15 -0
  443. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-3.md +14 -0
  444. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/meta.json +114 -0
  445. package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002-visual-tc-screenshot.yaml +37 -0
  446. package/src/skills/manual-testing/tests/index.yaml +25 -0
  447. package/src/skills/manual-testing/tests/last-run-tc001-sonnet.log +140 -0
  448. package/src/skills/manual-testing/tests/last-run-tc002.log +1 -0
  449. package/src/skills/manual-testing/tests/last-run.log +1469 -0
  450. package/src/skills/manual-testing/tests/rubrics/sandbox-mandatory.md +20 -0
  451. package/src/skills/manual-testing/tests/rubrics/visual-tc-screenshot.md +21 -0
  452. package/src/skills/manual-testing/workflows/acceptance.md +80 -0
  453. package/src/skills/manual-testing/workflows/exploratory.md +84 -0
  454. package/src/skills/manual-testing/workflows/regression.md +76 -0
  455. package/src/skills/manual-testing/workflows/smoke.md +109 -0
  456. package/src/skills/manual-testing/workflows/test-plan.md +75 -0
  457. package/src/skills/review-result/README.md +59 -0
  458. package/src/skills/review-result/SKILL.md +138 -0
  459. package/src/skills/review-result/algorithms/verification.md +112 -0
  460. package/src/skills/review-result/knowledge/dod-patterns.md +115 -0
  461. package/src/skills/review-result/scripts/verify-artifacts.js +354 -0
  462. package/src/skills/review-result/templates/verdict.md +153 -0
  463. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-1.md +22 -0
  464. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-2.md +7 -0
  465. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-3.md +21 -0
  466. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-1.md +6 -0
  467. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-2.md +6 -0
  468. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-3.md +18 -0
  469. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/judge.json +164 -0
  470. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-1.md +5 -0
  471. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-2.md +7 -0
  472. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-3.md +6 -0
  473. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-1.md +49 -0
  474. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-2.md +28 -0
  475. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-3.md +37 -0
  476. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-1.md +22 -0
  477. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-2.md +13 -0
  478. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-3.md +21 -0
  479. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/meta.json +116 -0
  480. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001-visual-tc-trigger.yaml +51 -0
  481. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-1.md +23 -0
  482. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-2.md +22 -0
  483. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-3.md +28 -0
  484. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-1.md +4 -0
  485. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-2.md +36 -0
  486. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-3.md +4 -0
  487. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/judge.json +163 -0
  488. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-1.md +4 -0
  489. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-2.md +0 -0
  490. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-3.md +4 -0
  491. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-1.md +39 -0
  492. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-2.md +25 -0
  493. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-3.md +32 -0
  494. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-1.md +34 -0
  495. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-2.md +8 -0
  496. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-3.md +23 -0
  497. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/meta.json +115 -0
  498. package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002-path-line-suffix.yaml +39 -0
  499. package/src/skills/review-result/tests/fixtures/IMPL-902-path-with-line.md +43 -0
  500. package/src/skills/review-result/tests/fixtures/QA-901-visual-button.md +46 -0
  501. package/src/skills/review-result/tests/index.yaml +25 -0
  502. package/src/skills/review-result/tests/rubrics/path-line-suffix.md +19 -0
  503. package/src/skills/review-result/tests/rubrics/visual-tc-trigger.md +19 -0
  504. package/src/skills/review-result/workflows/review.md +209 -0
  505. package/templates/plan-template.md +1 -0
@@ -0,0 +1,44 @@
1
+ # Валидация данных
2
+
3
+ Правила проверки найденных данных перед включением в отчёт.
4
+
5
+ ## Методы валидации
6
+
7
+ ### Triangulation (триангуляция)
8
+ Подтверждение факта через 3 типа источников:
9
+ 1. Официальный/первичный источник
10
+ 2. Независимый отраслевой отчёт
11
+ 3. Экспертное мнение или пользовательские данные
12
+
13
+ ### Sanity Check (проверка здравым смыслом)
14
+ - Соотносятся ли числа с известными базовыми метриками?
15
+ - Возможен ли такой рост/падение физически?
16
+ - Нет ли ошибки в порядке величины (тысячи vs миллионы)?
17
+
18
+ ### Time Consistency (временная согласованность)
19
+ - Данные из одного периода сопоставимы?
20
+ - Нет ли смешения годовых и месячных метрик?
21
+ - Учтена ли сезонность?
22
+
23
+ ## Обязательные проверки
24
+
25
+ | Тип данных | Проверка | Действие при провале |
26
+ |------------|----------|---------------------|
27
+ | Размер рынка | Сравни с GDP сектора | Помечай `[UNVERIFIED]` |
28
+ | Рост метрики | Проверь базу и период | Пересчитай или помечай |
29
+ | Конверсии | Сравни с отраслевыми бенчмарками | Помечай аномалии |
30
+ | Цены/стоимости | Проверь валюту и дату | Конвертируй к единому |
31
+ | Доли рынка | Сумма долей ≈ 100%? | Найди пропущенных игроков |
32
+
33
+ ## Шаблон маркировки данных
34
+
35
+ ```
36
+ [VERIFIED: 2+ sources] — подтверждено
37
+ [SINGLE SOURCE: {source}] — один источник
38
+ [UNVERIFIED] — не удалось подтвердить
39
+ [ESTIMATED] — расчётная оценка на основе {метод}
40
+ [OUTDATED: {year}] — данные старше 1 года
41
+ [CONFLICTING] — источники противоречат друг другу
42
+ ```
43
+
44
+ <!-- РАСШИРЕНИЕ: добавляй правила валидации для специфических доменов ниже -->
@@ -0,0 +1,30 @@
1
+ # Perplexity Research — конфигурация
2
+
3
+ **Основной инструмент** для всех RSH-тикетов. Запрещено подменять web_search/web_fetch.
4
+
5
+ ## Вызов
6
+
7
+ ```bash
8
+ node .workflow/src/skills/deep-research/scripts/perplexity-research.js "тема"
9
+ # Быстрый: --model perplexity/sonar "тема"
10
+ # Системный промпт: --system "Ты аналитик..." "тема"
11
+ ```
12
+
13
+ ## Модели
14
+
15
+ | Модель | Время | Когда |
16
+ |--------|-------|-------|
17
+ | `perplexity/sonar-deep-research` | 5-10 мин | По умолчанию |
18
+ | `perplexity/sonar-pro` | 10-30 сек | Быстрый ответ с источниками |
19
+ | `perplexity/sonar` | 5-15 сек | Справки, проверка фактов |
20
+ | `perplexity/sonar-reasoning-pro` | 30-60 сек | Аналитика с рассуждениями |
21
+
22
+ ## Workflow
23
+
24
+ 1. Сформируй запрос из тикета → запусти скрипт через bash → оформи отчёт в `reports/`
25
+ 2. В «Agent used» укажи `perplexity-research.js` + модель
26
+ 3. Требуется HTTPS_PROXY (настроен в env)
27
+
28
+ ## Fallback
29
+
30
+ Если скрипт не работает (сеть, 403, таймаут) → зафиксируй ошибку, используй WebSearch/WebFetch, укажи причину.
@@ -0,0 +1,54 @@
1
+ # Методология проведения исследований
2
+
3
+ Базовая методология для всех типов исследовательских задач.
4
+
5
+ ## Этапы исследования
6
+
7
+ | Этап | Описание | Выход |
8
+ |------|----------|-------|
9
+ | **1. Скоупинг** | Определить границы: что ищем, зачем, для кого | Чёткий исследовательский вопрос |
10
+ | **2. Сбор данных** | Поиск по множеству источников | Сырые данные с ссылками |
11
+ | **3. Фильтрация** | Отсеять нерелевантные, устаревшие, ненадёжные | Валидированный пул данных |
12
+ | **4. Анализ** | Выявить паттерны, противоречия, пробелы | Аналитические находки |
13
+ | **5. Синтез** | Сформулировать выводы и рекомендации | Структурированный отчёт |
14
+ | **6. Валидация** | Проверить ключевые выводы через доп. источники | Верифицированный отчёт |
15
+
16
+ ## Типы источников и их приоритет
17
+
18
+ | Приоритет | Тип источника | Примеры |
19
+ |-----------|---------------|---------|
20
+ | 1 (высший) | Первичные данные | Официальная статистика, API, базы данных |
21
+ | 2 | Отраслевые отчёты | Statista, SimilarWeb, Sensor Tower, App Annie |
22
+ | 3 | Авторитетные издания | TechCrunch, The Verge, Ars Technica, отраслевые блоги |
23
+ | 4 | Экспертные мнения | Блоги экспертов, конференции, подкасты |
24
+ | 5 (низший) | Пользовательский контент | Reddit, форумы, отзывы, комментарии |
25
+
26
+ ## Стратегии поиска
27
+
28
+ ### Breadth-First (для обзорных исследований)
29
+ 1. Начни с широких запросов
30
+ 2. Выяви ключевые подтемы и терминологию
31
+ 3. Углубись в каждую подтему
32
+ 4. Собери перекрёстные ссылки
33
+
34
+ ### Depth-First (для точечных вопросов)
35
+ 1. Начни с конкретного запроса
36
+ 2. Найди авторитетный источник
37
+ 3. Пройди по его ссылкам и цитатам
38
+ 4. Верифицируй через альтернативные источники
39
+
40
+ ### Adversarial (для верификации)
41
+ 1. Сформулируй тезис
42
+ 2. Целенаправленно ищи опровержения
43
+ 3. Оцени силу аргументов за и против
44
+ 4. Сформулируй взвешенный вывод
45
+
46
+ ## Правила работы с данными
47
+
48
+ - **Числа**: всегда указывай источник, дату, методологию сбора
49
+ - **Проценты**: указывай базу (% от чего)
50
+ - **Прогнозы**: отделяй от фактов, указывай автора прогноза
51
+ - **Цитаты**: только прямые с указанием автора и контекста
52
+ - **Устаревшие данные**: помечай `[DATA: YYYY]` если старше 1 года
53
+
54
+ <!-- РАСШИРЕНИЕ: добавляй новые методологические подходы ниже -->
@@ -0,0 +1,33 @@
1
+ # Оценка надёжности источников
2
+
3
+ Критерии для оценки качества и надёжности найденных источников.
4
+
5
+ ## CRAAP-тест (адаптированный)
6
+
7
+ | Критерий | Вопрос | Вес |
8
+ |----------|--------|-----|
9
+ | **Currency** (актуальность) | Когда опубликовано? Обновлялось ли? | 20% |
10
+ | **Relevance** (релевантность) | Напрямую отвечает на вопрос? | 25% |
11
+ | **Authority** (авторитетность) | Кто автор? Какой опыт/квалификация? | 25% |
12
+ | **Accuracy** (точность) | Есть ли ссылки на первоисточники? Подтверждается другими? | 20% |
13
+ | **Purpose** (цель) | Информирование vs продажа vs мнение? | 10% |
14
+
15
+ ## Красные флаги источников
16
+
17
+ | Флаг | Описание | Действие |
18
+ |------|----------|----------|
19
+ | Нет автора | Анонимный контент | Понизить доверие, искать подтверждение |
20
+ | Нет даты | Неизвестная актуальность | Помечать `[DATE: unknown]` |
21
+ | Affiliate/sponsored | Коммерческая заинтересованность | Помечать `[SPONSORED]`, не использовать как единственный |
22
+ | Circular citation | Источники ссылаются друг на друга | Найти первоисточник |
23
+ | Outlier data | Данные сильно отличаются от консенсуса | Отдельно исследовать причину |
24
+
25
+ ## Уровни доверия
26
+
27
+ | Уровень | Условие | Маркировка |
28
+ |---------|---------|------------|
29
+ | **HIGH** | 2+ независимых авторитетных источника подтверждают | `[HIGH]` |
30
+ | **MEDIUM** | 1 авторитетный источник ИЛИ 2+ неавторитетных совпадают | `[MEDIUM]` |
31
+ | **LOW** | 1 неавторитетный источник ИЛИ данные противоречивы | `[LOW]` |
32
+
33
+ <!-- РАСШИРЕНИЕ: добавляй критерии оценки специфических типов источников ниже -->
@@ -0,0 +1,315 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * perplexity-research.js — обёртка для вызова Perplexity через kilo proxy без tool use.
5
+ *
6
+ * Проблема: kilo CLI всегда отправляет tool definitions → Perplexity через OpenRouter
7
+ * не поддерживает tool use и возвращает ошибку.
8
+ *
9
+ * Решение: вызываем OpenRouter API через kilo proxy напрямую (без tools),
10
+ * получаем текстовый ответ и выводим в stdout.
11
+ *
12
+ * Использование:
13
+ * node perplexity-research.js "тема исследования"
14
+ * node perplexity-research.js --model perplexity/sonar "тема"
15
+ * node perplexity-research.js --system "Ты исследователь..." "тема"
16
+ *
17
+ * Результат (markdown) выводится в stdout.
18
+ * Прогресс и ошибки — в stderr.
19
+ */
20
+
21
+ import fs from 'fs';
22
+ import path from 'path';
23
+ import http from 'http';
24
+ import https from 'https';
25
+ import { findProjectRoot } from '../../../lib/find-root.mjs';
26
+ import { createLogger } from '../../../lib/logger.mjs';
27
+
28
+ const logger = createLogger();
29
+
30
+ const AUTH_FILE = path.join(
31
+ process.env.HOME || process.env.USERPROFILE,
32
+ '.local', 'share', 'kilo', 'auth.json'
33
+ );
34
+
35
+ const API_URL = 'https://api.kilo.ai/api/openrouter/chat/completions';
36
+ const DEFAULT_MODEL = 'perplexity/sonar-deep-research';
37
+
38
+ const DEFAULT_SYSTEM_PROMPT = `Ты — опытный исследователь-аналитик. Проводи глубокие исследования по заданным темам.
39
+
40
+ Принципы:
41
+ - Каждый факт подкреплён ссылкой на источник. Нет источника = нет факта.
42
+ - Ключевые данные подтверждай минимум 2 независимыми источниками. Если не удалось — помечай [SINGLE SOURCE].
43
+ - Помечай уровень уверенности: [HIGH], [MEDIUM], [LOW].
44
+ - Всегда указывай дату данных.
45
+ - Отделяй факты от прогнозов и мнений.
46
+
47
+ Формат ответа:
48
+ 1. Executive Summary (3-5 предложений)
49
+ 2. Ключевые находки (с уровнями уверенности)
50
+ 3. Детальный анализ (данные, таблицы, сравнения)
51
+ 4. Выводы и рекомендации
52
+ 5. Пробелы и ограничения
53
+ 6. Источники (полный список с URL)
54
+
55
+ Язык: русский. Формат: markdown.`;
56
+
57
+ function parseArgs(argv) {
58
+ const args = argv.slice(2);
59
+ const result = {
60
+ model: DEFAULT_MODEL,
61
+ system: DEFAULT_SYSTEM_PROMPT,
62
+ message: null,
63
+ };
64
+
65
+ let i = 0;
66
+ const messageParts = [];
67
+
68
+ while (i < args.length) {
69
+ if (args[i] === '--model' && i + 1 < args.length) {
70
+ result.model = args[++i];
71
+ } else if (args[i] === '--system' && i + 1 < args.length) {
72
+ result.system = args[++i];
73
+ } else if (args[i] === '--help' || args[i] === '-h') {
74
+ console.log(`
75
+ Использование: node perplexity-research.js [опции] "тема исследования"
76
+
77
+ Результат (markdown) выводится в stdout.
78
+
79
+ Опции:
80
+ --model <id> Модель Perplexity (по умолчанию: ${DEFAULT_MODEL})
81
+ --system <text> Системный промпт (по умолчанию: встроенный промпт исследователя)
82
+ -h, --help Показать справку
83
+ `);
84
+ process.exit(0);
85
+ } else {
86
+ messageParts.push(args[i]);
87
+ }
88
+ i++;
89
+ }
90
+
91
+ result.message = messageParts.join(' ');
92
+ return result;
93
+ }
94
+
95
+ function loadKiloToken() {
96
+ if (!fs.existsSync(AUTH_FILE)) {
97
+ throw new Error(`Kilo auth file not found: ${AUTH_FILE}\nRun 'kilo auth login' first.`);
98
+ }
99
+
100
+ const auth = JSON.parse(fs.readFileSync(AUTH_FILE, 'utf-8'));
101
+ const kiloAuth = auth.kilo;
102
+
103
+ if (!kiloAuth || !kiloAuth.access) {
104
+ throw new Error('Kilo OAuth token not found in auth.json. Run "kilo auth login" first.');
105
+ }
106
+
107
+ if (kiloAuth.expires && Date.now() > kiloAuth.expires) {
108
+ throw new Error('Kilo OAuth token expired. Run "kilo auth login" to refresh.');
109
+ }
110
+
111
+ return kiloAuth.access;
112
+ }
113
+
114
+ function loadEnvFile() {
115
+ const PROJECT_DIR = findProjectRoot();
116
+ const envPath = path.join(PROJECT_DIR, '.workflow', 'config', '.env');
117
+ if (!fs.existsSync(envPath)) return;
118
+
119
+ const content = fs.readFileSync(envPath, 'utf-8');
120
+ for (const line of content.split('\n')) {
121
+ const trimmed = line.trim();
122
+ if (!trimmed || trimmed.startsWith('#')) continue;
123
+ const eq = trimmed.indexOf('=');
124
+ if (eq === -1) continue;
125
+ const key = trimmed.slice(0, eq).trim();
126
+ const val = trimmed.slice(eq + 1).trim();
127
+ if (!process.env[key]) {
128
+ process.env[key] = val;
129
+ }
130
+ }
131
+ }
132
+
133
+ function getProxyUrl() {
134
+ return process.env.HTTPS_PROXY || process.env.https_proxy
135
+ || process.env.HTTP_PROXY || process.env.http_proxy
136
+ || process.env.ALL_PROXY || process.env.all_proxy
137
+ || null;
138
+ }
139
+
140
+ function callPerplexityAPI(token, model, systemPrompt, userMessage) {
141
+ return new Promise((resolve, reject) => {
142
+ const payload = JSON.stringify({
143
+ model,
144
+ messages: [
145
+ { role: 'system', content: systemPrompt },
146
+ { role: 'user', content: userMessage },
147
+ ],
148
+ });
149
+
150
+ const targetUrl = new URL(API_URL);
151
+ const proxyUrl = getProxyUrl();
152
+
153
+ const requestHeaders = {
154
+ 'Content-Type': 'application/json',
155
+ 'Authorization': `Bearer ${token}`,
156
+ 'Content-Length': Buffer.byteLength(payload),
157
+ };
158
+
159
+ function handleResponse(res) {
160
+ let data = '';
161
+ res.on('data', (chunk) => { data += chunk; });
162
+ res.on('end', () => {
163
+ if (res.statusCode !== 200) {
164
+ reject(new Error(`API error ${res.statusCode}: ${data}`));
165
+ return;
166
+ }
167
+ try {
168
+ const json = JSON.parse(data);
169
+ resolve(json);
170
+ } catch (e) {
171
+ reject(new Error(`Failed to parse API response: ${e.message}\n${data}`));
172
+ }
173
+ });
174
+ }
175
+
176
+ let req;
177
+
178
+ if (proxyUrl) {
179
+ const proxy = new URL(proxyUrl);
180
+ const proxyAuth = proxy.username && proxy.password
181
+ ? `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`
182
+ : null;
183
+
184
+ const connectOptions = {
185
+ hostname: proxy.hostname,
186
+ port: parseInt(proxy.port) || 8080,
187
+ method: 'CONNECT',
188
+ path: `${targetUrl.hostname}:443`,
189
+ headers: {
190
+ 'Host': `${targetUrl.hostname}:443`,
191
+ },
192
+ };
193
+
194
+ if (proxyAuth) {
195
+ connectOptions.headers['Proxy-Authorization'] =
196
+ 'Basic ' + Buffer.from(proxyAuth).toString('base64');
197
+ }
198
+
199
+ logger.info(`Using proxy: ${proxy.hostname}:${proxy.port}`);
200
+
201
+ const proxyReq = http.request(connectOptions);
202
+
203
+ proxyReq.on('connect', (res, socket) => {
204
+ if (res.statusCode !== 200) {
205
+ reject(new Error(`Proxy CONNECT failed: ${res.statusCode}`));
206
+ socket.destroy();
207
+ return;
208
+ }
209
+
210
+ const tlsOptions = {
211
+ hostname: targetUrl.hostname,
212
+ path: targetUrl.pathname,
213
+ method: 'POST',
214
+ headers: requestHeaders,
215
+ socket,
216
+ agent: false,
217
+ };
218
+
219
+ req = https.request(tlsOptions, handleResponse);
220
+ req.on('error', (e) => reject(new Error(`Request failed: ${e.message}`)));
221
+ req.setTimeout(600000, () => {
222
+ req.destroy();
223
+ reject(new Error('Request timeout (10 minutes)'));
224
+ });
225
+ req.write(payload);
226
+ req.end();
227
+ });
228
+
229
+ proxyReq.on('error', (e) => reject(new Error(`Proxy connection failed: ${e.message}`)));
230
+ proxyReq.setTimeout(30000, () => {
231
+ proxyReq.destroy();
232
+ reject(new Error('Proxy connection timeout'));
233
+ });
234
+ proxyReq.end();
235
+
236
+ } else {
237
+ const options = {
238
+ hostname: targetUrl.hostname,
239
+ port: 443,
240
+ path: targetUrl.pathname,
241
+ method: 'POST',
242
+ headers: requestHeaders,
243
+ };
244
+
245
+ req = https.request(options, handleResponse);
246
+ req.on('error', (e) => reject(new Error(`Request failed: ${e.message}`)));
247
+ req.setTimeout(600000, () => {
248
+ req.destroy();
249
+ reject(new Error('Request timeout (10 minutes)'));
250
+ });
251
+ req.write(payload);
252
+ req.end();
253
+ }
254
+ });
255
+ }
256
+
257
+ function formatOutput(apiResponse, model, userMessage) {
258
+ const choice = apiResponse.choices?.[0];
259
+ if (!choice) throw new Error('No response from API');
260
+
261
+ const content = choice.message?.content || '';
262
+ const annotations = choice.message?.annotations || [];
263
+
264
+ let output = content;
265
+
266
+ if (annotations.length > 0) {
267
+ const urlCitations = annotations.filter(a => a.type === 'url_citation' && a.url_citation?.url);
268
+ const uniqueUrls = [...new Set(urlCitations.map(a => a.url_citation.url))];
269
+
270
+ if (uniqueUrls.length > 0) {
271
+ output += '\n\n---\n\n## Источники (автоматические цитаты)\n\n';
272
+ uniqueUrls.forEach((url, i) => {
273
+ const citation = urlCitations.find(a => a.url_citation.url === url);
274
+ const title = citation.url_citation.title || url;
275
+ output += `${i + 1}. [${title}](${url})\n`;
276
+ });
277
+ }
278
+ }
279
+
280
+ return output;
281
+ }
282
+
283
+ async function main() {
284
+ loadEnvFile();
285
+ const args = parseArgs(process.argv);
286
+
287
+ if (!args.message) {
288
+ console.error('Ошибка: не указана тема исследования');
289
+ console.error('Использование: node perplexity-research.js "тема исследования"');
290
+ process.exit(1);
291
+ }
292
+
293
+ logger.info(`Research query: ${args.message}`);
294
+ logger.info(`Model: ${args.model}`);
295
+
296
+ const token = loadKiloToken();
297
+
298
+ console.error(`Запуск исследования через ${args.model}...`);
299
+ console.error(`Ожидание ответа (deep research может занять до 5-10 минут)...`);
300
+
301
+ const response = await callPerplexityAPI(token, args.model, args.system, args.message);
302
+ const output = formatOutput(response, args.model, args.message);
303
+ const usage = response.usage || {};
304
+
305
+ // Результат — в stdout
306
+ console.log(output);
307
+
308
+ // Метаданные — в stderr
309
+ console.error(`Готово. Токены: ${usage.total_tokens || 'N/A'}, стоимость: $${usage.cost || 'N/A'}`);
310
+ }
311
+
312
+ main().catch((err) => {
313
+ console.error(`Ошибка: ${err.message}`);
314
+ process.exit(1);
315
+ });
@@ -0,0 +1,25 @@
1
+ # Шаблон: Краткая справка
2
+
3
+ Используется для быстрых исследовательских ответов, когда полный отчёт избыточен.
4
+
5
+ ## Структура
6
+
7
+ ```markdown
8
+ # Справка: {Тема}
9
+
10
+ **Дата:** {YYYY-MM-DD} | **Заказчик:** {тикет-ID}
11
+
12
+ ## Ответ
13
+
14
+ {2-3 абзаца с ключевыми данными и выводами}
15
+
16
+ ## Ключевые данные
17
+
18
+ | Метрика | Значение | Источник | Уверенность |
19
+ |---------|----------|----------|-------------|
20
+ | {метрика} | {значение} | {источник} | [HIGH/MEDIUM/LOW] |
21
+
22
+ ## Источники
23
+
24
+ 1. {Название} — {URL} ({дата})
25
+ ```
@@ -0,0 +1,76 @@
1
+ # Шаблон: Исследовательский отчёт
2
+
3
+ ## Структура отчёта
4
+
5
+ ```markdown
6
+ # {Тема исследования}
7
+
8
+ **Дата исследования:** {YYYY-MM-DD}
9
+ **Заказчик:** {тикет-ID, скил}
10
+ **Исследовательский вопрос:** {формулировка}
11
+ **Скоуп:** {что входит и не входит}
12
+
13
+ ---
14
+
15
+ ## Executive Summary
16
+
17
+ {3-5 предложений: главные находки, ключевой вывод, уровень уверенности}
18
+
19
+ ---
20
+
21
+ ## Ключевые находки
22
+
23
+ ### 1. {Находка}
24
+ **Уверенность:** [HIGH/MEDIUM/LOW]
25
+
26
+ {Описание находки}
27
+
28
+ | Источник | Данные | Дата |
29
+ |----------|--------|------|
30
+ | {название} | {факт/число} | {дата} |
31
+
32
+ ### 2. {Находка}
33
+ ...
34
+
35
+ ---
36
+
37
+ ## Детальный анализ
38
+
39
+ ### {Подтема 1}
40
+
41
+ {Развёрнутый анализ с данными, таблицами, сравнениями}
42
+
43
+ ### {Подтема 2}
44
+ ...
45
+
46
+ ---
47
+
48
+ ## Выводы и рекомендации
49
+
50
+ | # | Вывод | Уверенность | Рекомендация |
51
+ |---|-------|-------------|--------------|
52
+ | 1 | {тезис} | [HIGH] | {что делать} |
53
+ | 2 | {тезис} | [MEDIUM] | {что делать} |
54
+
55
+ ---
56
+
57
+ ## Пробелы и ограничения
58
+
59
+ - {Что не удалось найти и почему}
60
+ - {Какие данные требуют дополнительной верификации}
61
+ - {Известные ограничения методологии}
62
+
63
+ ---
64
+
65
+ ## За пределами скоупа
66
+
67
+ {Интересные находки, не входящие в скоуп, но потенциально полезные}
68
+
69
+ ---
70
+
71
+ ## Источники
72
+
73
+ | # | Название | URL | Тип | Дата | Оценка |
74
+ |---|----------|-----|-----|------|--------|
75
+ | 1 | {название} | {url} | {тип} | {дата} | {A/B/C} |
76
+ ```
@@ -0,0 +1,48 @@
1
+ Спасибо за ясные ограничения. Проведу исследование в рамках известного мне, с честной маркировкой пробелов.
2
+
3
+ ## Исследование: форматы файлов в Chrome Extension Manifest V3
4
+
5
+ ### Executive Summary
6
+ Chrome Extension Manifest V3 поддерживает стандартные веб-форматы: JSON для конфигурации, JavaScript для скриптов, HTML/CSS для интерфейса и изображения для иконок. MV3 ввёл строгие требования к структуре файлов и запретил некоторые форматы, используемые в MV2.
7
+
8
+ ### Основные находки
9
+
10
+ 1. **manifest.json** — обязательный конфигурационный файл в JSON формате, определяющий метаданные расширения, разрешения и структуру. [Источник: стандартный файл конфигурации всех Chrome Extensions, документированный на https://developer.chrome.com]
11
+
12
+ 2. **JavaScript (.js)** — поддерживаются для service workers (в MV3 замена background pages), content scripts, popup scripts и других скриптов расширения. [данные не найдены — конкретная ссылка на MV3 спецификацию не подтверждена]
13
+
14
+ 3. **HTML (.html)** — используются для UI элементов: popup страница, options страница, side panel и прочие интерфейсные окна. [данные не найдены]
15
+
16
+ 4. **CSS (.css)** — стандартные таблицы стилей для оформления HTML элементов расширения. [данные не найдены]
17
+
18
+ 5. **Форматы изображений для иконок** — PNG и JPG/JPEG документированы как поддерживаемые форматы иконок в различных размерах (16x16, 48x48, 128x128 пиксели). [данные не найдены — точный список форматов требует проверки в docs]
19
+
20
+ 6. **WebAssembly (.wasm)** — поддержка требует дополнительной проверки для MV3 специфично. [данные не найдены]
21
+
22
+ 7. **JSON данные (кроме manifest.json)** — возможно использование JSON для хранения данных в расширении, но это не задокументировано явно как отдельный формат. [данные не найдены]
23
+
24
+ 8. **Запрещённые форматы MV3**: inline скрипты в HTML (требуют отдельных .js файлов), eval() и подобные динамические выполнение кода, удалённые скрипты без Content Security Policy. [Источник: известное требование MV3 для безопасности, но конкретный URL требует проверки]
25
+
26
+ ### Выводы
27
+ Поддерживаемые форматы ограничены **веб-стандартами** (JSON, JS, HTML, CSS, изображения). MV3 более строгий к безопасности и требует явной структуры файлов — нет inline скриптов или eval(). Для полной спецификации всех поддерживаемых форматов требуется обращение к официальной документации Chrome.
28
+
29
+ ### Источники
30
+ - [Chrome Extensions Documentation](https://developer.chrome.com/docs/extensions/) — основной источник спецификаций (дата доступа: статическая, точная дата проверки недоступна)
31
+
32
+ ---
33
+
34
+ ## Self-check перед завершением тикета
35
+
36
+ - [x] **Result секция заполнена реальным содержимым** — отчёт содержит 8 фактов о форматах файлов MV3
37
+ - [x] **Артефакт существует и содержит реальные данные** — этот отчёт является полным результатом исследования
38
+ - [x] **Каждый пункт DoD пройден явно**:
39
+ - ✓ Executive Summary (3 предложения)
40
+ - ✓ Основные находки (8 фактов)
41
+ - ✓ Inline-маркировка источников/пробелов для каждого факта
42
+ - ✓ Уровень уверенности указан через `[данные не найдены]` или конкретный источник
43
+ - ✓ Multi-source verification: факты, требующие верификации, явно помечены
44
+ - [x] **Дисциплина пробелов соблюдена** — нет выдуманных URL, нет суррогатных пометок «требует верификации» без маркировки пробела; используются явные маркеры `[данные не найдены]` где источник неизвестен
45
+
46
+ **Ограничения этого исследования**: без доступа к живым инструментам поиска, отчёт основан на базовых знаниях о Chrome Extensions MV3. Для полной и актуальной информации требуется обращение к https://developer.chrome.com/docs/extensions/ с живым доступом.
47
+
48
+ ---RESULT---