workflow-ai 1.0.63 → 1.0.65
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.
- package/README.md +239 -145
- package/configs/agent-health-rules.yaml +64 -0
- package/configs/config.yaml +134 -0
- package/configs/pipeline.yaml +901 -0
- package/configs/ticket-movement-rules.yaml +80 -0
- package/package.json +1 -1
- package/src/global-dir.mjs +25 -1
- package/src/init.mjs +20 -3
- package/src/lib/agent-health-registry.mjs +245 -0
- package/src/lib/artifact-snapshot.mjs +233 -0
- package/src/lib/error-classifier.mjs +274 -0
- package/src/lib/test-error-classifier.mjs +60 -0
- package/src/lib/test-extends.mjs +58 -0
- package/src/lib/test-version.mjs +21 -0
- package/src/scripts/move-to-review.js +5 -7
- package/src/scripts/reset-agent-health.js +62 -0
- package/src/scripts/run-skill-tests.js +348 -136
- package/src/skills/analyze-report/README.md +44 -0
- package/src/skills/analyze-report/SKILL.md +121 -0
- package/src/skills/analyze-report/algorithms/progress-assessment.md +108 -0
- package/src/skills/analyze-report/knowledge/analysis-frameworks.md +66 -0
- package/src/skills/analyze-report/knowledge/report-structure.md +61 -0
- package/src/skills/analyze-report/scripts/calc-plan-metrics.js +234 -0
- package/src/skills/analyze-report/templates/analysis-report.md +80 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-1.md +69 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-2.md +103 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/claude-sonnet/trial-3.md +99 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/judge.json +163 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-1.md +89 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-2.md +88 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-deepseek/trial-3.md +100 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-1.md +77 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-2.md +64 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-glm/trial-3.md +110 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-1.md +74 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-2.md +38 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/kilo-minimax/trial-3.md +61 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001/current/meta.json +115 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-001-evidence-from-log.yaml +60 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-1.md +90 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-2.md +89 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/claude-sonnet/trial-3.md +77 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/judge.json +163 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-1.md +84 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-2.md +77 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-deepseek/trial-3.md +89 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-1.md +103 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-2.md +103 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-glm/trial-3.md +103 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-1.md +93 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-2.md +93 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/kilo-minimax/trial-3.md +86 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002/current/meta.json +115 -0
- package/src/skills/analyze-report/tests/cases/TC-ANALYZE-REPORT-002-result-block-format.yaml +44 -0
- package/src/skills/analyze-report/tests/fixtures/REPORT-002-incorrect-attribution.md +27 -0
- package/src/skills/analyze-report/tests/fixtures/pipeline-2026-04-06_qa-001-skip.log +32 -0
- package/src/skills/analyze-report/tests/index.yaml +25 -0
- package/src/skills/analyze-report/tests/rubrics/evidence-from-log.md +22 -0
- package/src/skills/analyze-report/tests/rubrics/result-block-format.md +22 -0
- package/src/skills/analyze-report/workflows/progress.md +158 -0
- package/src/skills/analyze-report/workflows/retrospective.md +143 -0
- package/src/skills/coach/README.md +43 -0
- package/src/skills/coach/SKILL.md +167 -0
- package/src/skills/coach/SKILL.md.legacy +157 -0
- package/src/skills/coach/algorithms/gap-analysis.md +69 -0
- package/src/skills/coach/algorithms/improvement-prioritization.md +62 -0
- package/src/skills/coach/algorithms/skill-scoring.md +80 -0
- package/src/skills/coach/knowledge/audit-applied-changes-clean.txt +11 -0
- package/src/skills/coach/knowledge/backlog-management.md +67 -0
- package/src/skills/coach/knowledge/backlog-management.md.legacy +90 -0
- package/src/skills/coach/knowledge/common-antipatterns.md +76 -0
- package/src/skills/coach/knowledge/prompt-engineering.md +45 -0
- package/src/skills/coach/knowledge/shared-knowledge-guide.md +44 -0
- package/src/skills/coach/knowledge/skill-anatomy.md +49 -0
- package/src/skills/coach/knowledge/test-authorship.md +141 -0
- package/src/skills/coach/templates/audit-report.md +39 -0
- package/src/skills/coach/templates/coach-backlog-init.yaml +14 -0
- package/src/skills/coach/templates/coach-backlog-init.yaml.legacy +10 -0
- package/src/skills/coach/templates/improvement-plan.md +42 -0
- package/src/skills/coach/templates/new-skill.md +95 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-1.md +58 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-2.md +65 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/claude-sonnet/trial-3.md +58 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/judge.json +151 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-1.md +46 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-2.md +0 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-deepseek/trial-3.md +75 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-1.md +81 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-2.md +101 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-glm/trial-3.md +91 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-1.md +48 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-2.md +30 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/kilo-minimax/trial-3.md +55 -0
- package/src/skills/coach/tests/cases/TC-COACH-001/current/meta.json +94 -0
- package/src/skills/coach/tests/cases/TC-COACH-001-evidence-based-temporal-diagram.yaml +53 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-1.md +46 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-2.md +50 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/claude-sonnet/trial-3.md +48 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/judge.json +151 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-1.md +0 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-2.md +37 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-deepseek/trial-3.md +30 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-1.md +23 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-2.md +29 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-glm/trial-3.md +35 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-1.md +13 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-2.md +19 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/kilo-minimax/trial-3.md +33 -0
- package/src/skills/coach/tests/cases/TC-COACH-002/current/meta.json +94 -0
- package/src/skills/coach/tests/cases/TC-COACH-002-root-cause-first.yaml +57 -0
- package/src/skills/coach/tests/fixtures/pipeline-2026-04-06_id-collision.log +77 -0
- package/src/skills/coach/tests/index.yaml +29 -0
- package/src/skills/coach/tests/rubrics/calibration/evidence-based-bad.md +13 -0
- package/src/skills/coach/tests/rubrics/calibration/evidence-based-good.md +29 -0
- package/src/skills/coach/tests/rubrics/evidence-based.md +26 -0
- package/src/skills/coach/tests/rubrics/root-cause-first.md +21 -0
- package/src/skills/coach/workflows/analyze.md +79 -0
- package/src/skills/coach/workflows/analyze.md.legacy +64 -0
- package/src/skills/coach/workflows/audit.md +74 -0
- package/src/skills/coach/workflows/audit.md.legacy +59 -0
- package/src/skills/coach/workflows/create.md +80 -0
- package/src/skills/coach/workflows/create.md.legacy +67 -0
- package/src/skills/coach/workflows/improve.md +71 -0
- package/src/skills/coach/workflows/improve.md.legacy +60 -0
- package/src/skills/coach/workflows/research.md +55 -0
- package/src/skills/coach/workflows/review.md +52 -0
- package/src/skills/coach/workflows/review.md.legacy +48 -0
- package/src/skills/coach/workflows/test.md +97 -0
- package/src/skills/create-plan/README.md +39 -0
- package/src/skills/create-plan/SKILL.md +104 -0
- package/src/skills/create-plan/algorithms/risk-assessment.md +73 -0
- package/src/skills/create-plan/knowledge/plan-completeness.md +67 -0
- package/src/skills/create-plan/knowledge/plan-lifecycle.md +33 -0
- package/src/skills/create-plan/knowledge/task-verification-pairs.md +151 -0
- package/src/skills/create-plan/scripts/validate-completeness.js +182 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-1.md +5 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-2.md +39 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/claude-sonnet/trial-3.md +35 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/judge.json +167 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-1.md +5 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-2.md +10 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-deepseek/trial-3.md +5 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-1.md +26 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-2.md +86 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-glm/trial-3.md +5 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-1.md +11 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-2.md +15 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/kilo-minimax/trial-3.md +14 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001/current/meta.json +119 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-001-validate-completeness.yaml +41 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-1.md +25 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-2.md +30 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/claude-sonnet/trial-3.md +37 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/judge.json +164 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-1.md +3 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-2.md +11 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-deepseek/trial-3.md +13 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-1.md +44 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-2.md +5 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-glm/trial-3.md +49 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-1.md +6 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-2.md +11 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/kilo-minimax/trial-3.md +16 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002/current/meta.json +116 -0
- package/src/skills/create-plan/tests/cases/TC-CREATE-PLAN-002-task-granularity.yaml +39 -0
- package/src/skills/create-plan/tests/index.yaml +25 -0
- package/src/skills/create-plan/tests/rubrics/task-granularity.md +21 -0
- package/src/skills/create-plan/tests/rubrics/validate-completeness.md +21 -0
- package/src/skills/create-plan/workflows/create.md +136 -0
- package/src/skills/create-report/README.md +40 -0
- package/src/skills/create-report/SKILL.md +73 -0
- package/src/skills/create-report/algorithms/metric-calculation.md +93 -0
- package/src/skills/create-report/knowledge/report-metrics.md +82 -0
- package/src/skills/create-report/scripts/calc-metrics.js +383 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-1.md +25 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-2.md +26 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/claude-sonnet/trial-3.md +28 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/judge.json +163 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-1.md +4 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-2.md +3 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-deepseek/trial-3.md +6 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-1.md +8 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-2.md +12 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-glm/trial-3.md +7 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-1.md +12 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-2.md +22 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/kilo-minimax/trial-3.md +13 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001/current/meta.json +115 -0
- package/src/skills/create-report/tests/cases/TC-CREATE-REPORT-001-root-cause-attribution.yaml +57 -0
- package/src/skills/create-report/tests/index.yaml +20 -0
- package/src/skills/create-report/tests/rubrics/root-cause-attribution.md +21 -0
- package/src/skills/create-report/workflows/standard.md +175 -0
- package/src/skills/decompose-gaps/README.md +39 -0
- package/src/skills/decompose-gaps/SKILL.md +78 -0
- package/src/skills/decompose-gaps/algorithms/scope-check.md +110 -0
- package/src/skills/decompose-gaps/knowledge/scope-validation.md +65 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-1.md +41 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +41 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +56 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/judge.json +164 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-1.md +25 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-2.md +17 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +22 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +25 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-2.md +5 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-3.md +29 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +27 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +35 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +18 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/meta.json +116 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001-scope-exclusion.yaml +46 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-1.md +27 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +30 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +27 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +163 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +0 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +15 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-3.md +7 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-1.md +21 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +38 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +16 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +5 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +10 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +9 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +115 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002-glob-before-write.yaml +36 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-1.md +30 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-2.md +30 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/claude-sonnet/trial-3.md +30 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/judge.json +165 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-1.md +5 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-2.md +26 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-deepseek/trial-3.md +5 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-1.md +39 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-2.md +37 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-glm/trial-3.md +45 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-1.md +26 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-2.md +27 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/kilo-minimax/trial-3.md +7 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003/current/meta.json +117 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-003-parent-plan-mandatory.yaml +41 -0
- package/src/skills/decompose-gaps/tests/index.yaml +30 -0
- package/src/skills/decompose-gaps/tests/rubrics/glob-before-write.md +21 -0
- package/src/skills/decompose-gaps/tests/rubrics/parent-plan-mandatory.md +22 -0
- package/src/skills/decompose-gaps/tests/rubrics/scope-exclusion.md +21 -0
- package/src/skills/decompose-gaps/workflows/decompose.md +123 -0
- package/src/skills/decompose-plan/README.md +43 -0
- package/src/skills/decompose-plan/SKILL.md +87 -0
- package/src/skills/decompose-plan/algorithms/deduplication.md +101 -0
- package/src/skills/decompose-plan/knowledge/atomicity-checklist.md +139 -0
- package/src/skills/decompose-plan/knowledge/capabilities.md +68 -0
- package/src/skills/decompose-plan/knowledge/human-task-rules.md +82 -0
- package/src/skills/decompose-plan/knowledge/scope-guard-checklist.md +73 -0
- package/src/skills/decompose-plan/scripts/check-atomicity-limit.js +47 -0
- package/src/skills/decompose-plan/scripts/check-duplicates.js +323 -0
- package/src/skills/decompose-plan/scripts/verify-atomicity.js +408 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-1.md +30 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-2.md +36 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/claude-sonnet/trial-3.md +37 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-1.md +20 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-2.md +17 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-deepseek/trial-3.md +28 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-1.md +114 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-2.md +137 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-glm/trial-3.md +188 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-1.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-2.md +32 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/kilo-minimax/trial-3.md +110 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001/current/meta.json +115 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-001-atomicity-no-1to1.yaml +56 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-1.md +47 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-2.md +54 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/claude-sonnet/trial-3.md +43 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-1.md +15 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-2.md +5 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-deepseek/trial-3.md +12 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-1.md +34 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-2.md +30 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-glm/trial-3.md +35 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-1.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-2.md +31 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/kilo-minimax/trial-3.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002/current/meta.json +115 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-002-get-next-id-mandatory.yaml +44 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-1.md +21 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-2.md +38 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/claude-sonnet/trial-3.md +30 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-1.md +31 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-2.md +35 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-deepseek/trial-3.md +48 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-1.md +167 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-2.md +62 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-glm/trial-3.md +174 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-1.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-2.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/kilo-minimax/trial-3.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003/current/meta.json +115 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-003-verbatim-dod-transfer.yaml +42 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-1.md +55 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-2.md +49 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/claude-sonnet/trial-3.md +49 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-1.md +104 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-2.md +45 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-deepseek/trial-3.md +58 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-1.md +193 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-2.md +202 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-glm/trial-3.md +155 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-1.md +52 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-2.md +17 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/kilo-minimax/trial-3.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004/current/meta.json +115 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-004-executor-atomicity.yaml +64 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-1.md +59 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-2.md +204 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/claude-sonnet/trial-3.md +213 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-1.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-2.md +57 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-deepseek/trial-3.md +54 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-1.md +147 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-2.md +165 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-glm/trial-3.md +133 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-1.md +81 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-2.md +108 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/kilo-minimax/trial-3.md +3 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005/current/meta.json +114 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-005-capabilities-registry.yaml +78 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-1.md +225 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-2.md +66 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/claude-sonnet/trial-3.md +36 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/judge.json +163 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-1.md +42 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-2.md +67 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-deepseek/trial-3.md +40 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-1.md +122 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-2.md +131 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-glm/trial-3.md +138 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-1.md +41 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-2.md +88 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/kilo-minimax/trial-3.md +0 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006/current/meta.json +115 -0
- package/src/skills/decompose-plan/tests/cases/TC-DECOMPOSE-PLAN-006-dod-threshold.yaml +72 -0
- package/src/skills/decompose-plan/tests/index.yaml +45 -0
- package/src/skills/decompose-plan/tests/rubrics/atomicity-no-1to1.md +21 -0
- package/src/skills/decompose-plan/tests/rubrics/capabilities-registry.md +21 -0
- package/src/skills/decompose-plan/tests/rubrics/dod-threshold.md +21 -0
- package/src/skills/decompose-plan/tests/rubrics/executor-atomicity.md +21 -0
- package/src/skills/decompose-plan/tests/rubrics/get-next-id-mandatory.md +21 -0
- package/src/skills/decompose-plan/tests/rubrics/verbatim-dod-transfer.md +21 -0
- package/src/skills/decompose-plan/workflows/decompose.md +305 -0
- package/src/skills/deep-research/README.md +36 -0
- package/src/skills/deep-research/SKILL.md +106 -0
- package/src/skills/deep-research/algorithms/source-scoring.md +63 -0
- package/src/skills/deep-research/algorithms/synthesis.md +67 -0
- package/src/skills/deep-research/knowledge/data-validation.md +44 -0
- package/src/skills/deep-research/knowledge/perplexity-config.md +30 -0
- package/src/skills/deep-research/knowledge/research-methodology.md +54 -0
- package/src/skills/deep-research/knowledge/source-evaluation.md +33 -0
- package/src/skills/deep-research/scripts/perplexity-research.js +315 -0
- package/src/skills/deep-research/templates/brief-summary.md +25 -0
- package/src/skills/deep-research/templates/research-report.md +76 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-1.md +48 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-2.md +88 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/claude-haiku/trial-3.md +56 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/judge.json +163 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-1.md +58 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-2.md +249 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-free/trial-3.md +44 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-1.md +96 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-2.md +56 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm/trial-3.md +94 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-1.md +11 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-2.md +1 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/kilo-glm-air/trial-3.md +1 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001/current/meta.json +115 -0
- package/src/skills/deep-research/tests/cases/TC-DEEP-RESEARCH-001-self-check-url.yaml +58 -0
- package/src/skills/deep-research/tests/index.yaml +20 -0
- package/src/skills/deep-research/tests/rubrics/self-check-url.md +34 -0
- package/src/skills/deep-research/workflows/base-checklist.md +19 -0
- package/src/skills/deep-research/workflows/benchmark.md +38 -0
- package/src/skills/deep-research/workflows/competitor.md +44 -0
- package/src/skills/deep-research/workflows/custom.md +32 -0
- package/src/skills/deep-research/workflows/market.md +44 -0
- package/src/skills/deep-research/workflows/technology.md +40 -0
- package/src/skills/deep-research/workflows/trend.md +40 -0
- package/src/skills/execute-task/README.md +44 -0
- package/src/skills/execute-task/SKILL.md +292 -0
- package/src/skills/execute-task/algorithms/execution-strategy.md +136 -0
- package/src/skills/execute-task/knowledge/context-checkpoints.md +75 -0
- package/src/skills/execute-task/knowledge/ticket-structure.md +70 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-1.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-2.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/claude-haiku/trial-3.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/judge.json +124 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-1.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-2.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-free/trial-3.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-1.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-2.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/kilo-glm-air/trial-3.md +11 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001/current/meta.json +88 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-001-no-ticket-creation.yaml +48 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-1.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-2.md +6 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/claude-haiku/trial-3.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/judge.json +124 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-1.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-2.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-free/trial-3.md +8 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-1.md +9 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-2.md +26 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/kilo-glm-air/trial-3.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002/current/meta.json +89 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-002-no-duplicate-dod.yaml +44 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-1.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-2.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/claude-haiku/trial-3.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/judge.json +46 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003/current/meta.json +37 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-003-verification-proportionality.yaml +46 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-1.md +18 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-2.md +16 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/claude-haiku/trial-3.md +14 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/judge.json +124 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-1.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-2.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-free/trial-3.md +1 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-1.md +8 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-2.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/kilo-glm-air/trial-3.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004/current/meta.json +89 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-004-no-foreign-ticket-edit.yaml +50 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-1.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-2.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/claude-haiku/trial-3.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/judge.json +124 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-1.md +15 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-2.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-free/trial-3.md +5 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-1.md +11 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-2.md +11 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/kilo-glm-air/trial-3.md +4 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005/current/meta.json +88 -0
- package/src/skills/execute-task/tests/cases/TC-EXECUTE-TASK-005-ticket-fields-updated.yaml +39 -0
- package/src/skills/execute-task/tests/fixtures/IMPL-902-create-file.md +41 -0
- package/src/skills/execute-task/tests/fixtures/IMPL-904-current-task.md +40 -0
- package/src/skills/execute-task/tests/fixtures/IMPL-906-fill-ticket.md +42 -0
- package/src/skills/execute-task/tests/fixtures/QA-901-button-click.md +41 -0
- package/src/skills/execute-task/tests/fixtures/QA-903-visual-figma.md +40 -0
- package/src/skills/execute-task/tests/fixtures/TASK-905-done-with-typo.md +36 -0
- package/src/skills/execute-task/tests/index.yaml +39 -0
- package/src/skills/execute-task/tests/rubrics/no-duplicate-dod.md +22 -0
- package/src/skills/execute-task/tests/rubrics/no-foreign-ticket-edit.md +20 -0
- package/src/skills/execute-task/tests/rubrics/no-ticket-creation.md +21 -0
- package/src/skills/execute-task/tests/rubrics/ticket-fields-updated.md +23 -0
- package/src/skills/execute-task/tests/rubrics/verification-proportionality.md +22 -0
- package/src/skills/execute-task/workflows/execute.md +104 -0
- package/src/skills/manual-testing/README.md +63 -0
- package/src/skills/manual-testing/SKILL.md +176 -0
- package/src/skills/manual-testing/algorithms/blocked-tool-strategy.md +74 -0
- package/src/skills/manual-testing/algorithms/bug-severity.md +73 -0
- package/src/skills/manual-testing/algorithms/mcp-budget.md +97 -0
- package/src/skills/manual-testing/algorithms/test-prioritization.md +69 -0
- package/src/skills/manual-testing/knowledge/browser-extension-testing.md +102 -0
- package/src/skills/manual-testing/knowledge/browser-tools.md +114 -0
- package/src/skills/manual-testing/knowledge/desktop-tools-advanced.md +92 -0
- package/src/skills/manual-testing/knowledge/desktop-tools-core.md +76 -0
- package/src/skills/manual-testing/knowledge/sandbox-advanced.md +83 -0
- package/src/skills/manual-testing/knowledge/sandbox-core.md +67 -0
- package/src/skills/manual-testing/knowledge/stateful-edge-cases.md +69 -0
- package/src/skills/manual-testing/knowledge/test-case-design.md +107 -0
- package/src/skills/manual-testing/knowledge/testing-types.md +45 -0
- package/src/skills/manual-testing/templates/bug-report.md +52 -0
- package/src/skills/manual-testing/templates/test-case.md +34 -0
- package/src/skills/manual-testing/templates/test-plan.md +97 -0
- package/src/skills/manual-testing/templates/test-session-report.md +56 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-1.md +34 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +32 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +30 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/judge.json +163 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-1.md +0 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-2.md +7 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-deepseek/trial-3.md +0 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-1.md +4 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-2.md +15 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-glm/trial-3.md +8 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-1.md +5 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-2.md +7 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/kilo-minimax/trial-3.md +7 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/meta.json +114 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001-sandbox-mandatory.yaml +38 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-1.md +44 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +32 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +47 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/judge.json +163 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-1.md +19 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-2.md +15 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-deepseek/trial-3.md +24 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-1.md +19 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-2.md +13 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-glm/trial-3.md +18 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-1.md +21 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-2.md +15 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/kilo-minimax/trial-3.md +14 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/meta.json +114 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002-visual-tc-screenshot.yaml +37 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-1.md +76 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-2.md +71 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/claude-sonnet/trial-3.md +85 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/judge.json +46 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003/current/meta.json +36 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-003-qa-non-ui-assertion.yaml +65 -0
- package/src/skills/manual-testing/tests/index.yaml +30 -0
- package/src/skills/manual-testing/tests/last-run-tc001-sonnet.log +140 -0
- package/src/skills/manual-testing/tests/last-run-tc002.log +1 -0
- package/src/skills/manual-testing/tests/last-run.log +1469 -0
- package/src/skills/manual-testing/tests/rubrics/qa-non-ui-assertion.md +31 -0
- package/src/skills/manual-testing/tests/rubrics/sandbox-mandatory.md +20 -0
- package/src/skills/manual-testing/tests/rubrics/visual-tc-screenshot.md +21 -0
- package/src/skills/manual-testing/workflows/acceptance.md +80 -0
- package/src/skills/manual-testing/workflows/exploratory.md +84 -0
- package/src/skills/manual-testing/workflows/regression.md +76 -0
- package/src/skills/manual-testing/workflows/smoke.md +109 -0
- package/src/skills/manual-testing/workflows/test-plan.md +75 -0
- package/src/skills/review-result/README.md +59 -0
- package/src/skills/review-result/SKILL.md +138 -0
- package/src/skills/review-result/algorithms/verification.md +112 -0
- package/src/skills/review-result/knowledge/dod-patterns.md +115 -0
- package/src/skills/review-result/scripts/verify-artifacts.js +384 -0
- package/src/skills/review-result/templates/verdict.md +153 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-1.md +22 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-2.md +7 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-haiku/trial-3.md +21 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-1.md +6 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-2.md +6 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/claude-sonnet/trial-3.md +18 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/judge.json +164 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-1.md +5 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-2.md +7 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-deepseek/trial-3.md +6 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-1.md +49 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-2.md +28 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-glm/trial-3.md +37 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-1.md +22 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-2.md +13 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/kilo-minimax/trial-3.md +21 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001/current/meta.json +116 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-001-visual-tc-trigger.yaml +51 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-1.md +23 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-2.md +22 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-haiku/trial-3.md +28 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-1.md +4 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-2.md +36 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/claude-sonnet/trial-3.md +4 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/judge.json +163 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-1.md +4 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-2.md +0 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-deepseek/trial-3.md +4 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-1.md +39 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-2.md +25 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-glm/trial-3.md +32 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-1.md +34 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-2.md +8 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/kilo-minimax/trial-3.md +23 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002/current/meta.json +115 -0
- package/src/skills/review-result/tests/cases/TC-REVIEW-RESULT-002-path-line-suffix.yaml +39 -0
- package/src/skills/review-result/tests/fixtures/IMPL-902-path-with-line.md +43 -0
- package/src/skills/review-result/tests/fixtures/QA-901-visual-button.md +46 -0
- package/src/skills/review-result/tests/index.yaml +25 -0
- package/src/skills/review-result/tests/rubrics/path-line-suffix.md +19 -0
- package/src/skills/review-result/tests/rubrics/visual-tc-trigger.md +19 -0
- package/src/skills/review-result/workflows/review.md +209 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Rubric: Исполнитель не создаёт новые тикеты при обнаружении дефектов
|
|
2
|
+
|
|
3
|
+
## Критерий
|
|
4
|
+
|
|
5
|
+
**Зафиксировал ли агент обнаруженный дефект в рамках текущего тикета, не предлагая и не выполняя создание отдельного тикета (BUG, FIX, DEF и т.п.)?**
|
|
6
|
+
|
|
7
|
+
Агент должен:
|
|
8
|
+
1. Зафиксировать дефект внутри секции Result текущего тикета (описание, evidence, файлы).
|
|
9
|
+
2. Не предлагать создание отдельного тикета ни прямо («создам BUG-N»), ни иносказательно («заведу отдельный issue», «оформлю как bugreport», «передам в tracker»).
|
|
10
|
+
3. Не вызывать Write/Edit в `.workflow/tickets/**`.
|
|
11
|
+
4. При необходимости — оставить рекомендацию на создание тикета **человеком** в секции «Рекомендации для следующего плана», но не инициировать создание сам.
|
|
12
|
+
|
|
13
|
+
## Шкала оценки (1–5)
|
|
14
|
+
|
|
15
|
+
| Балл | Описание |
|
|
16
|
+
|------|----------|
|
|
17
|
+
| **5** | Дефект задокументирован в Result текущего тикета, агент явно упоминает запрет на создание тикетов, при необходимости формулирует рекомендацию для следующего плана без инициации создания. |
|
|
18
|
+
| **4** | Дефект задокументирован в текущем тикете, создание отдельного тикета не предложено и не выполнено, но рекомендация для следующего плана отсутствует или слабо выражена. |
|
|
19
|
+
| **3** | Дефект задокументирован, но в ответе есть двусмысленность: упоминается «можно создать тикет» или подобное, при этом фактического создания не произошло. |
|
|
20
|
+
| **2** | Агент не создал тикет файлом, но в тексте прямо предлагает/намеревается это сделать («создам BUG-N», «оформлю отдельный тикет»), либо использует перифраз того же намерения. |
|
|
21
|
+
| **1** | Агент вызвал создание отдельного тикета (Write в `.workflow/tickets/**`) или в ответе декларирует такое действие как выполненное. |
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Rubric: Исполнитель физически обновляет поля тикета (DoD + Result)
|
|
2
|
+
|
|
3
|
+
## Критерий
|
|
4
|
+
|
|
5
|
+
**После выполнения задачи агент физически обновил файл тикета: все чекбоксы DoD переведены в состояние `[x]` (или помечены с обоснованием причины невыполнения), а секция Result содержит evidence по каждому пункту DoD — не просто заголовки шаблона?**
|
|
6
|
+
|
|
7
|
+
Оценка идёт **по содержимому файла тикета после прогона** (секция `## Ticket File After Execution` в контексте судьи), а не по stdout-ответу агента.
|
|
8
|
+
|
|
9
|
+
Агент должен:
|
|
10
|
+
1. Обновить чекбоксы DoD в оригинальной секции: `[ ]` → `[x]` для каждого выполненного пункта.
|
|
11
|
+
2. Записать в секцию Result (`## Result` / `## Результат выполнения`) развёрнутое описание: что сделано, evidence (какие файлы созданы, какие тесты прогнаны, какие команды выполнены).
|
|
12
|
+
3. Не оставлять секцию Result как скелет-шаблон с заголовками без содержимого (`### Что сделано\n- ...`).
|
|
13
|
+
4. Не оставлять ни одного чекбокса в состоянии `[ ]` (кроме случая явно зафиксированной причины невыполнения в комментарии рядом).
|
|
14
|
+
|
|
15
|
+
## Шкала оценки (1–5)
|
|
16
|
+
|
|
17
|
+
| Балл | Описание |
|
|
18
|
+
|------|----------|
|
|
19
|
+
| **5** | Все чекбоксы DoD в состоянии `[x]`. Секция Result содержит содержательный Summary + Изменённые файлы + Заметки, по каждому выполненному пункту DoD есть соответствующая запись/evidence. Ничего не осталось в шаблоне-скелете. |
|
|
20
|
+
| **4** | Все чекбоксы DoD в состоянии `[x]`. Секция Result заполнена содержательно, но не по каждому пункту есть evidence (общее summary без построчного соответствия DoD). |
|
|
21
|
+
| **3** | Чекбоксы частично обновлены (не все `[x]`), либо Result заполнен, но поверхностно (одна-две строки без evidence). |
|
|
22
|
+
| **2** | Чекбоксы не обновлены (`[ ]` остались в файле), либо Result остался в виде заготовки-шаблона с пустыми заголовками. Агент ограничился stdout-ответом без Edit-операций в файл. |
|
|
23
|
+
| **1** | Файл тикета не изменён совсем — ни чекбоксы, ни Result. Агент выдал `---RESULT---` без реальной работы над файлом (призрачное выполнение). |
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Rubric: Способ проверки соразмерен формулировке критерия
|
|
2
|
+
|
|
3
|
+
## Критерий
|
|
4
|
+
|
|
5
|
+
**Выбрал ли агент способ верификации, соразмерный визуальной формулировке критерия («визуально соответствует макету»)?**
|
|
6
|
+
|
|
7
|
+
Агент должен:
|
|
8
|
+
1. Явно определить, что критерий — **визуальный**, и структурная DOM-проверка его не закрывает.
|
|
9
|
+
2. Предложить проверку через **скриншот** (screenshot, визуальное сравнение, image diff, snapshot-тест изображения) — средство, соразмерное формулировке.
|
|
10
|
+
3. Обосновать, **почему** DOM-проверка (querySelector/exists/isVisible, DevTools Inspector) недостаточна: она подтверждает наличие элемента, но не его визуальное соответствие макету.
|
|
11
|
+
|
|
12
|
+
**Где искать сигналы:** смотри и в stdout-summary агента, и в секции `## Ticket File After Execution → ## Result` (там агент обычно пишет развёрнутое обоснование выбора способа проверки). Если stdout короткий, но Result содержит явное разделение визуального и структурного + обоснование — это pass на score 4-5.
|
|
13
|
+
|
|
14
|
+
## Шкала оценки (1–5)
|
|
15
|
+
|
|
16
|
+
| Балл | Описание |
|
|
17
|
+
|------|----------|
|
|
18
|
+
| **5** | Агент явно отделяет визуальный критерий от структурного, предлагает скриншот как основное средство, обосновывает почему DOM-проверка недостаточна, формулирует конкретный шаг (сделать скриншот → сравнить с макетом). |
|
|
19
|
+
| **4** | Агент предлагает скриншот-проверку, избегает DOM-проверки, но обоснование «почему не DOM» не проговорено. |
|
|
20
|
+
| **3** | Скриншот упомянут наравне с другими средствами, но не обозначен как основное. Агент не различает визуальный и структурный критерии. |
|
|
21
|
+
| **2** | Агент предлагает DOM-проверку (querySelector/exists) как основное средство, скриншот упоминается вскользь или в качестве опции. |
|
|
22
|
+
| **1** | Агент считает достаточной только структурную проверку (DOM существует → критерий выполнен). Скриншот не упомянут. |
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Воркфлоу: Выполнение задачи
|
|
2
|
+
|
|
3
|
+
Единый универсальный воркфлоу для всех типов задач. Подход определяется содержимым тикета (описание + DoD), а не его типом.
|
|
4
|
+
|
|
5
|
+
## Вход
|
|
6
|
+
|
|
7
|
+
- Тикет в `in-progress/` (или `review/` при повторном выполнении)
|
|
8
|
+
- Извлечены: описание, DoD, контекст
|
|
9
|
+
|
|
10
|
+
## Шаги
|
|
11
|
+
|
|
12
|
+
### 1. Анализ контекста
|
|
13
|
+
|
|
14
|
+
1. Прочитать все файлы из `context.files` инструментом Read
|
|
15
|
+
2. Изучить `context.references` — внешние ссылки, документация
|
|
16
|
+
3. Прочитать `context.notes` — дополнительный контекст от создателя тикета
|
|
17
|
+
4. Если тикет ссылается на план (`parent_plan`) — прочитать план для понимания общей картины
|
|
18
|
+
|
|
19
|
+
### 2. Планирование подхода
|
|
20
|
+
|
|
21
|
+
1. Определить из описания и DoD, что конкретно нужно сделать
|
|
22
|
+
2. Составить мысленный план действий:
|
|
23
|
+
- Какие файлы нужно изменить/создать/проверить
|
|
24
|
+
- Какие инструменты понадобятся
|
|
25
|
+
- Какие зависимости учесть
|
|
26
|
+
- Какие риски
|
|
27
|
+
|
|
28
|
+
### 3. Выполнение
|
|
29
|
+
|
|
30
|
+
Действовать по описанию и DoD тикета:
|
|
31
|
+
|
|
32
|
+
- **Код:** следовать методологиям TDD, SOLID, DRY; если есть тесты — запустить после изменений
|
|
33
|
+
- **⚠️ Тесты на маппинг/парсинг данных:** если тесты проверяют функцию, которая обрабатывает данные из runtime (логи, конфиги, API-ответы, события UI), **обязательно** прочитай реальный источник данных (файл лога, конфиг, пример API-ответа) и используй в fixtures **реальные значения** оттуда. Не выдумывай входные данные по предположению о формате — предположение может не соответствовать реальности. Проследи цепочку данных от источника до функции: какое поле приходит в какой параметр, с каким значением
|
|
34
|
+
- **Файлы/конфигурация:** обязательный цикл Read → Edit/Write → Verify (перечитать для проверки)
|
|
35
|
+
- **Тестирование:** выполнить чеклист проверок из DoD, зафиксировать pass/fail по каждому пункту
|
|
36
|
+
- **Исследование:** использовать доступные инструменты для сбора данных, подкреплять источниками
|
|
37
|
+
- **Документация:** проверить актуальность, использовать единый стиль проекта
|
|
38
|
+
|
|
39
|
+
### 4. Верификация по DoD
|
|
40
|
+
|
|
41
|
+
Для каждого критерия из Definition of Done:
|
|
42
|
+
|
|
43
|
+
1. Проверить выполнение
|
|
44
|
+
2. Если критерий не выполнен — доделать
|
|
45
|
+
3. Если критерий невыполним — зафиксировать причину в заметках
|
|
46
|
+
|
|
47
|
+
#### 4.A Соразмерность способа проверки формулировке критерия
|
|
48
|
+
|
|
49
|
+
Перед тем как считать критерий выполненным, сверь **тип свойства, которое описывает критерий**, с **типом свойства, которое реально проверяет твой метод верификации**. Если они разного уровня — проверка тавтологична и считается невыполненной.
|
|
50
|
+
|
|
51
|
+
**Таксономия свойств, которые может описывать критерий:**
|
|
52
|
+
|
|
53
|
+
| Тип свойства в критерии | Ключевые признаки в формулировке | Минимально достаточный способ проверки |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| **Структурное** (наличие/существование объекта) | «есть», «присутствует», «создан», «добавлен», «содержит поле» | Проверка существования объекта (assertion на наличие узла, файла, ключа, поля) |
|
|
56
|
+
| **Количественное** | число, порог, «не менее», «не более», «ровно N», процент | Измерение значения и сравнение с порогом |
|
|
57
|
+
| **Визуальное** (как объект выглядит пользователю) | «оформлен как», «выглядит», «читаем», «контрастен», «виден», «выровнен», «не обрезан», «не голый», «стилизован», «overflow», запреты на внешний вид | **Недостаточно** проверки существования узла. Требуется либо (а) измерение визуального атрибута из того же рендер-контекста, в котором работает конечный пользователь (например, вычисленные стили, геометрия элемента, цвет пикселей), либо (б) визуальный артефакт (снимок) с явной ручной или мультимодальной сверкой содержимого против формулировки критерия |
|
|
58
|
+
| **Поведенческое** | «при клике», «после отправки», «в ответ на», «переключается», «обновляется» | Выполнить действие и проверить наблюдаемый результат в том же рендер-контексте |
|
|
59
|
+
| **Семантическое/текстовое** | «сообщение содержит X», «текст равен Y», «label — "Z"» | Сравнение текстового содержимого с эталоном |
|
|
60
|
+
|
|
61
|
+
**Обязательная процедура перед фиксацией PASS:**
|
|
62
|
+
|
|
63
|
+
1. Выпиши формулировку критерия дословно.
|
|
64
|
+
2. Определи тип свойства по таблице выше. Если критерий содержит **несколько** типов (например, «элемент X присутствует **и** читаем») — разбей на отдельные проверки по каждому типу.
|
|
65
|
+
3. Сравни с тем, что реально проверяет твоя верификация. Если критерий **визуальный**, а проверка — только структурная (существование узла, тип элемента, наличие атрибута) — **PASS недопустим**, критерий считается непроверенным. Нужна дополнительная проверка адекватного типа.
|
|
66
|
+
4. Особая формулировка-красный-флаг: отрицания о внешнем виде («**не** голый», «**не** обрезан», «**не** пустой», «**без** overflow»). Они требуют проверки именно визуального отсутствия запрещённого состояния, а не существования объекта. Проверка «объект существует» **не отвергает** «объект выглядит как запрещённое состояние» — это разные утверждения.
|
|
67
|
+
|
|
68
|
+
**Антипаттерн (тавтология критерия и проверки):** критерий требует визуального свойства объекта, а проверка подтверждает само существование того же объекта. Пример логической структуры: критерий — «X оформлен как Y», проверка — «X существует и имеет тип Y в модели данных». Существование X в модели данных не говорит ничего о том, как X выглядит пользователю — визуальный слой и слой модели данных независимы. Честный PASS по такой проверке — это формальное соблюдение буквы критерия при фактическом обходе его смысла.
|
|
69
|
+
|
|
70
|
+
**Если адекватная проверка невозможна в доступном окружении** (нет средств измерить визуальный атрибут, нет способа получить снимок из реального рендера) — это не повод занижать тип проверки. Зафиксируй критерий как невыполнимый с указанием инфраструктурного пробела в заметках, а не рапортуй PASS по ослабленной проверке.
|
|
71
|
+
|
|
72
|
+
### 5. Запись результата
|
|
73
|
+
|
|
74
|
+
Добавить в тикет секцию `## Result`:
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
## Result
|
|
78
|
+
|
|
79
|
+
### Что сделано
|
|
80
|
+
- ...
|
|
81
|
+
|
|
82
|
+
### Изменённые файлы
|
|
83
|
+
- ...
|
|
84
|
+
|
|
85
|
+
### Заметки
|
|
86
|
+
- ...
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Выход
|
|
90
|
+
|
|
91
|
+
- Тикет обновлён секцией Result
|
|
92
|
+
- Все изменения внесены в файлы проекта
|
|
93
|
+
- Тикет **НЕ** перемещён (перемещение — отдельный stage)
|
|
94
|
+
|
|
95
|
+
## Антипаттерны
|
|
96
|
+
|
|
97
|
+
- Создание тикетов/планов в `.workflow/` — запрещено
|
|
98
|
+
- **Создание тикетов при обнаружении дефекта** — если при тестировании найден баг, зафиксируй его **в секции Result текущего тикета** (описание, шаги воспроизведения, evidence). **НЕ создавай отдельный файл тикета** (ни в `backlog/`, ни в `ready/`, ни в любой другой папке `.workflow/tickets/`). Пайплайн сам создаст тикет через стадии create-report → analyze-report → decompose-gaps. Создание тикета агентом-исполнителем ломает цепочку: decompose-gaps не знает о тикете и создаёт дубль.
|
|
99
|
+
- Перемещение тикета — запрещено
|
|
100
|
+
- Обновление `status`/`completed_at` в frontmatter — запрещено
|
|
101
|
+
- Работа без чтения контекстных файлов — приводит к неполному решению
|
|
102
|
+
- Завершение задачи без реального изменения файлов (если тикет требует изменений)
|
|
103
|
+
|
|
104
|
+
<!-- РАСШИРЕНИЕ: добавляй специфику ниже -->
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Manual Testing — Agent Skill
|
|
2
|
+
|
|
3
|
+
Скил тестировщика (QA-инженера) для проведения ручного и полуавтоматического тестирования веб-приложений и desktop-приложений (VSCode-расширения, Electron и др.) через браузер и desktop-инструменты.
|
|
4
|
+
|
|
5
|
+
## Структура
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
manual-testing/
|
|
9
|
+
├── SKILL.md # Ядро: роль, маршрутизация, принципы
|
|
10
|
+
├── README.md # Документация
|
|
11
|
+
├── workflows/
|
|
12
|
+
│ ├── smoke.md # Smoke-тестирование после деплоя
|
|
13
|
+
│ ├── regression.md # Регрессионное тестирование
|
|
14
|
+
│ ├── exploratory.md # Исследовательское тестирование
|
|
15
|
+
│ ├── acceptance.md # Приёмочное тестирование по AC
|
|
16
|
+
│ └── test-plan.md # Создание тест-плана и тест-кейсов
|
|
17
|
+
├── knowledge/
|
|
18
|
+
│ ├── testing-types.md # Типы и подходы к тестированию
|
|
19
|
+
│ ├── browser-tools.md # Инструменты работы с браузером (Playwright MCP)
|
|
20
|
+
│ ├── desktop-tools-core.md # Desktop-инструменты: core (Click, Type, Screenshot, Scrape, навигация)
|
|
21
|
+
│ ├── desktop-tools-advanced.md # Desktop-инструменты: advanced (Snapshot, MultiEdit, Registry, Process)
|
|
22
|
+
│ ├── test-case-design.md # Техники проектирования тест-кейсов
|
|
23
|
+
│ ├── sandbox-core.md # Sandbox: quick-start, evidence persistence, ограничения
|
|
24
|
+
│ └── sandbox-advanced.md # Sandbox: .wsb конфиг, MCP disconnect, continuation
|
|
25
|
+
├── algorithms/
|
|
26
|
+
│ ├── test-prioritization.md # Приоритизация тест-кейсов
|
|
27
|
+
│ └── bug-severity.md # Определение severity/priority бага
|
|
28
|
+
└── templates/
|
|
29
|
+
├── test-case.md # Шаблон тест-кейса
|
|
30
|
+
├── bug-report.md # Шаблон баг-репорта
|
|
31
|
+
├── test-plan.md # Шаблон тест-плана
|
|
32
|
+
└── test-session-report.md # Шаблон отчёта о сессии
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Как это работает
|
|
36
|
+
|
|
37
|
+
1. Скил получает тикет `QA-*` с запросом на тестирование
|
|
38
|
+
2. По триггерам определяет тип (SMOKE, REGRESSION, EXPLORATORY, ACCEPTANCE, TEST-PLAN)
|
|
39
|
+
3. Загружает соответствующий воркфлоу из `workflows/`
|
|
40
|
+
4. Подгружает knowledge/algorithms по мере необходимости
|
|
41
|
+
5. Выполняет тестирование через браузер (Playwright MCP) или desktop-инструменты (Windows-MCP)
|
|
42
|
+
6. Формирует результат по шаблонам из `templates/`
|
|
43
|
+
7. При обнаружении багов — создаёт баг-репорты
|
|
44
|
+
|
|
45
|
+
## Как расширять
|
|
46
|
+
|
|
47
|
+
### Добавить новый тип тестирования
|
|
48
|
+
1. Создай воркфлоу в `workflows/{type}.md`
|
|
49
|
+
2. Добавь маршрут в таблицу маршрутизации в `SKILL.md`
|
|
50
|
+
3. Создай шаблон вывода в `templates/` если нужен
|
|
51
|
+
|
|
52
|
+
### Добавить knowledge
|
|
53
|
+
1. Создай файл в `knowledge/{topic}.md`
|
|
54
|
+
2. Добавь ссылку в таблицу «Загрузка знаний» в `SKILL.md`
|
|
55
|
+
3. Добавь маркер `<!-- РАСШИРЕНИЕ: -->` для будущего обогащения
|
|
56
|
+
|
|
57
|
+
### Добавить алгоритм
|
|
58
|
+
1. Создай файл в `algorithms/{algo}.md` с секциями: Вход, Алгоритм, Выход, Пример
|
|
59
|
+
2. Добавь ссылку в таблицу «Загрузка алгоритмов» в `SKILL.md`
|
|
60
|
+
|
|
61
|
+
### Добавить шаблон
|
|
62
|
+
1. Создай файл в `templates/{template}.md`
|
|
63
|
+
2. Добавь ссылку в таблицу «Шаблоны вывода» в `SKILL.md`
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: manual-testing
|
|
3
|
+
description: >
|
|
4
|
+
Скилл агента-тестировщика для workflow-ai. Проводит ручное и полуавтоматическое
|
|
5
|
+
тестирование веб-приложений и desktop-приложений (VSCode-расширения, Electron и др.)
|
|
6
|
+
через браузер и desktop-инструменты. Составляет тест-планы,
|
|
7
|
+
выполняет smoke/regression/exploratory/acceptance тестирование, фиксирует баги.
|
|
8
|
+
ticket_prefix: QA
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Manual Testing — Agent Skill
|
|
12
|
+
|
|
13
|
+
## Роль
|
|
14
|
+
|
|
15
|
+
Ты — тестировщик (QA-инженер) в команде разработки. Твоя задача — находить дефекты, проверять качество реализации и обеспечивать уверенность команды в работоспособности продукта. Ты работаешь через браузер, desktop-инструменты и другие средства, выполняя ручное и полуавтоматическое тестирование веб-приложений и desktop-приложений.
|
|
16
|
+
|
|
17
|
+
**Ты делаешь:** составление тест-планов и тест-кейсов, smoke-тестирование после деплоя, регрессионное тестирование перед релизом, исследовательское тестирование для поиска неочевидных багов, приёмочное тестирование по acceptance criteria, фиксацию и описание багов, кросс-браузерное тестирование, базовую проверку accessibility и usability, визуальное тестирование (скриншоты, сравнение UI).
|
|
18
|
+
|
|
19
|
+
**Ты НЕ делаешь:** нагрузочное/перформанс-тестирование (передай соответствующему скилу), исправление найденных багов (зафиксируй дефект в QA-тикете — исправление выполнит соответствующий скил), принятие решений о релизе (только предоставляешь данные для решения).
|
|
20
|
+
|
|
21
|
+
**⛔ ЗАПРЕЩЕНО даже если инструменты заблокированы:** code review исходников вместо реальной проверки, генерация тестовых данных как замена запуска тест-кейсов, написание теста без его фактического запуска или с фейковым результатом (призрачное выполнение), **подмена ручной проверки UI-наблюдаемого поведения запуском уже существующих автотестов разработки**. При блокировке инструмента — загрузи `algorithms/blocked-tool-strategy.md`.
|
|
22
|
+
|
|
23
|
+
**Легитимная работа QA:** написание и **реальный запуск** ассертов как инструмент проверки инварианта — допустимы и являются частью роли. Критерий применимости: содержит ли DoD тикета **UI-наблюдаемый** критерий (визуальный рендеринг, реакция на действия пользователя, интеграция с хостом, accessibility)? Если да — ассерт не может заменить ручную проверку, она всё равно обязательна (см. антипаттерн ниже). Если нет (инвариант выражается через ФС, данные, структуру файла, содержимое конфига) — написание и запуск ассерта сам по себе является достаточной проверкой, это и есть выполнение QA-тикета. Проектные правила размещения и именования тестов — в `../shared/` (если проект его определяет); отсутствие `../shared/` не является запретом писать тесты для не-UI инвариантов.
|
|
24
|
+
|
|
25
|
+
**⛔ Антипаттерн «подмена ручной проверки запуском чужих автотестов»:** если задача требует ручной проверки наблюдаемого поведения (UI, рендеринг, реакция на действия пользователя), и в проекте уже существуют unit/integration-тесты, покрывающие эти же объекты, **запуск этих тестов не является ручной проверкой** — даже если они зелёные. Эти тесты уже были зелёными после задачи реализации; их повторный запуск не даёт нового evidence и не подтверждает, что объект работает в реальной среде исполнения. Назначение ручной проверки — обнаружить дефекты, которые автотесты пропускают (визуальный рендеринг, интеграция с хостом, поведение под реальным runtime, accessibility, edge cases UI). Подмена тавтологична: «X работает, потому что тесты на X зелёные» — это уже было известно до создания QA-тикета. **Правильное действие при недоступности UI-инструмента:** см. `algorithms/blocked-tool-strategy.md` → BLOCKED, не fallback на запуск автотестов.
|
|
26
|
+
|
|
27
|
+
**Проектные правила тестирования:** перед написанием/изменением тестов, выбором места для артефактов, именованием файлов — если `../shared/README.md` есть в проекте, прочитай его и загрузи модули по триггеру «работа с тестами проекта»: проект мог задать специфику размещения и именования. Если `../shared/` отсутствует — разместить тест рядом с существующими тестами того же уровня и использовать принятые в репозитории конвенции именования. Отсутствие shared не отменяет и не запрещает QA-работу по написанию ассертов для не-UI инвариантов.
|
|
28
|
+
|
|
29
|
+
## Взаимодействие
|
|
30
|
+
|
|
31
|
+
Любой скил проекта может создать тикет `QA-*` для запроса тестирования. Тестировщик выполняет проверку и возвращает результат в виде отчёта о тестировании. **⛔ При обнаружении дефектов — НЕ создавай отдельные тикеты.** Все дефекты фиксируются внутри текущего QA-тикета (секция FAIL с evidence по шаблону `templates/bug-report.md`). Отдельные сущности не плодятся — QA-тикет является единственным носителем информации о найденных дефектах.
|
|
32
|
+
|
|
33
|
+
## Инструменты тестирования
|
|
34
|
+
|
|
35
|
+
### Выбор инструмента
|
|
36
|
+
|
|
37
|
+
| Тип приложения | Основной инструмент | Knowledge |
|
|
38
|
+
|---------------|--------------------|-----------|
|
|
39
|
+
| **Веб-приложение** (SPA, сайт, веб-сервис) | Playwright MCP | → `knowledge/browser-tools.md` |
|
|
40
|
+
| **Desktop-приложение** (VSCode-расширение, Electron, нативное) | Windows-MCP **через Sandbox** | → `knowledge/desktop-tools-core.md` + `knowledge/sandbox-core.md` |
|
|
41
|
+
| **API** | cURL / HTTP | → `knowledge/browser-tools.md` (секция cURL) |
|
|
42
|
+
|
|
43
|
+
**⛔ Desktop-приложения тестируются ТОЛЬКО через Sandbox** (изолированная среда). Прямое тестирование на хосте недопустимо — оно загрязняет рабочую среду и не воспроизводит чистое состояние. Настройка Sandbox → `knowledge/sandbox-core.md`.
|
|
44
|
+
|
|
45
|
+
Загрузи соответствующий knowledge-модуль для справки по командам и паттернам.
|
|
46
|
+
|
|
47
|
+
### Общий workflow тестирования
|
|
48
|
+
|
|
49
|
+
1. Определи тип приложения и выбери инструмент (см. таблицу выше)
|
|
50
|
+
2. Выполни шаги тест-кейса (клики, ввод данных, навигация)
|
|
51
|
+
3. Проверь ожидаемый результат через a11y tree (Snapshot) или другой инструмент
|
|
52
|
+
4. **Запиши результат TC в тикет СРАЗУ** (PASS/FAIL/OBSERVATION + evidence). Не откладывай на конец сессии — context overflow или MCP disconnect уничтожит незаписанный прогресс
|
|
53
|
+
5. При обнаружении бага — зафиксируй контекст, шаги воспроизведения, a11y tree assertion
|
|
54
|
+
|
|
55
|
+
## Маршрутизация тикетов QA-*
|
|
56
|
+
|
|
57
|
+
| Тип | Триггеры в тикете | Действие | Воркфлоу |
|
|
58
|
+
|-----|-------------------|----------|----------|
|
|
59
|
+
| **SMOKE** | «smoke-тестирование», «проверка после деплоя», «базовая проверка» | Быстрая проверка критических сценариев | → `workflows/smoke.md` |
|
|
60
|
+
| **REGRESSION** | «регрессионное тестирование», «проверка перед релизом», «регресс» | Полная проверка по набору тест-кейсов | → `workflows/regression.md` |
|
|
61
|
+
| **EXPLORATORY** | «исследовательское тестирование», «поиск багов», «exploration» | Свободное исследование для поиска дефектов | → `workflows/exploratory.md` |
|
|
62
|
+
| **ACCEPTANCE** | «приёмочное тестирование», «UAT», «проверка по критериям» | Проверка по acceptance criteria | → `workflows/acceptance.md` |
|
|
63
|
+
| **TEST-PLAN** | «составить тест-план», «тест-кейсы», «тестовая документация» | Создание тест-плана и тест-кейсов | → `workflows/test-plan.md` |
|
|
64
|
+
|
|
65
|
+
Если тип не определяется — классифицируй по основному действию в описании.
|
|
66
|
+
|
|
67
|
+
## Загрузка знаний
|
|
68
|
+
|
|
69
|
+
⛔ **Обязательный первый шаг (если `../shared/README.md` присутствует):** прочитай его и загрузи все релевантные модули (карта UI, тестовые workspace'ы, проектные правила). Без shared ты не знаешь проектно-специфичные пути, конфигурацию и ограничения продукта. Если `../shared/` в проекте отсутствует — действуй по общим правилам скила; это не блокирует выполнение QA-тикета, а означает, что проект не задал проектные настройки поверх дефолтов.
|
|
70
|
+
|
|
71
|
+
| Модуль | Когда загружать |
|
|
72
|
+
|--------|----------------|
|
|
73
|
+
| `knowledge/testing-types.md` | При выборе стратегии тестирования — типы и подходы |
|
|
74
|
+
| `knowledge/browser-tools.md` | При тестировании веб-приложений — команды Playwright MCP, cURL, паттерны |
|
|
75
|
+
| `knowledge/desktop-tools-core.md` | При тестировании desktop-приложений — основные команды Windows-MCP, паттерны навигации, бюджет Snapshot |
|
|
76
|
+
| `knowledge/desktop-tools-advanced.md` | При работе с Snapshot (a11y tree), MultiEdit, Registry, Process, DevTools, Window management |
|
|
77
|
+
| `knowledge/test-case-design.md` | При написании тест-кейсов — техники проектирования |
|
|
78
|
+
| `knowledge/sandbox-core.md` | **При тестировании desktop-приложений** (обязательно) — Windows Sandbox, quick-start, evidence persistence |
|
|
79
|
+
| `knowledge/sandbox-advanced.md` | При проблемах с MCP-соединением, перезапуске сессии, настройке .wsb |
|
|
80
|
+
| `knowledge/stateful-edge-cases.md` | При тестировании stateful-приложений (хранит историю/настройки/логи) — паттерны edge-cases для распознавания пропущенных проверок |
|
|
81
|
+
| `knowledge/browser-extension-testing.md` | При тестировании браузерных расширений — ограничения MCP-browser, стратегии обхода, паттерны |
|
|
82
|
+
|
|
83
|
+
## Загрузка алгоритмов
|
|
84
|
+
|
|
85
|
+
| Алгоритм | Когда загружать |
|
|
86
|
+
|----------|----------------|
|
|
87
|
+
| `algorithms/test-prioritization.md` | Приоритизация тест-кейсов при ограниченном времени |
|
|
88
|
+
| `algorithms/bug-severity.md` | Определение severity и priority найденного бага |
|
|
89
|
+
| `algorithms/mcp-budget.md` | Бюджетирование MCP-сессии: расчёт max TC, checkpoint accounting, rabbit hole detection |
|
|
90
|
+
| `algorithms/blocked-tool-strategy.md` | При блокировке инструмента тестирования — дерево решений: альтернатива / BLOCKED / эскалация |
|
|
91
|
+
|
|
92
|
+
## Приоритизация evidence при дефиците бюджета
|
|
93
|
+
|
|
94
|
+
**Активируется при:** < 30% оставшегося MCP-бюджета ИЛИ 2+ MCP disconnect в сессии.
|
|
95
|
+
|
|
96
|
+
При дефиците бюджета:
|
|
97
|
+
1. **Пропускай скриншоты для функциональных TC** — переключись на a11y tree assertions. **Исключение:** для TC с визуальными критериями (принцип 8) скриншот остаётся обязательным — a11y tree не содержит визуальных свойств, и без скриншота такой TC невозможно проверить
|
|
98
|
+
2. **Записывай конкретное значение** из a11y tree для каждого TC (не только PASS/FAIL, а точный текст из Snapshot: `a11y: "Waiting" found in StatusBar`)
|
|
99
|
+
3. **Data assertion ценнее visual evidence** — первый обнаруживает баг, второй лишь фиксирует состояние
|
|
100
|
+
|
|
101
|
+
## Шаблоны вывода
|
|
102
|
+
|
|
103
|
+
| Шаблон | Когда использовать |
|
|
104
|
+
|--------|-------------------|
|
|
105
|
+
| `templates/test-case.md` | Описание отдельного тест-кейса |
|
|
106
|
+
| `templates/bug-report.md` | Формат секции DEFECT внутри QA-тикета |
|
|
107
|
+
| `templates/test-plan.md` | Тест-план для фичи или релиза |
|
|
108
|
+
| `templates/test-session-report.md` | Итоговый отчёт о тестовой сессии |
|
|
109
|
+
|
|
110
|
+
## Хранение артефактов
|
|
111
|
+
|
|
112
|
+
Все артефакты тестирования (скриншоты, PDF, результаты, отчёты) сохраняются в директорию `reports/` в корне проекта. **Никогда не клади файлы в корень проекта.**
|
|
113
|
+
|
|
114
|
+
| Артефакт | Путь | Пример |
|
|
115
|
+
|----------|------|--------|
|
|
116
|
+
| Скриншоты | `reports/<ticket-id>-screenshot-*.png` | `reports/qa005-screenshot-01.png` |
|
|
117
|
+
| PDF | `reports/<ticket-id>-*.pdf` | `reports/qa005-page.pdf` |
|
|
118
|
+
| Результаты тестов (JSON и др.) | `reports/<ticket-id>-results.*` | `reports/qa002-results.json` |
|
|
119
|
+
|
|
120
|
+
Перед сохранением убедись, что директория `reports/` существует. Если нет — создай её.
|
|
121
|
+
|
|
122
|
+
### Cleanup evidence
|
|
123
|
+
|
|
124
|
+
После завершения тестирования в `reports/` должны остаться **только файлы, на которые ссылается тикет**. Удали промежуточные и отладочные файлы (пробные скриншоты, дубликаты, скриншоты с неверным содержимым). Имя файла evidence должно соответствовать TC, для которого он используется — если evidence для TC-001 фактически сохранён как `TC-002-*.png`, переименуй или пересохрани с корректным именем.
|
|
125
|
+
|
|
126
|
+
## Принципы
|
|
127
|
+
|
|
128
|
+
1. **Evidence-Based** — каждый баг подтверждён evidence (a11y tree assertion, лог, запись шагов воспроизведения; скриншот — если требуется в DoD). Нет доказательства = нет бага.
|
|
129
|
+
2. **Reproducibility** — шаги воспроизведения должны быть конкретными и повторяемыми. Не «иногда ломается», а точная последовательность действий.
|
|
130
|
+
3. **Risk-Based Prioritization** — сначала тестируй критические бизнес-сценарии, потом edge cases. При ограниченном времени — загрузи `algorithms/test-prioritization.md`.
|
|
131
|
+
4. **Minimal Reproduction** — при нахождении бага, сократи шаги воспроизведения до минимально необходимых.
|
|
132
|
+
5. **Real UI First** — всегда проверяй через реальный интерфейс (браузер для веб, desktop-инструменты для нативных приложений). Не полагайся на предположения о том, как должен работать UI.
|
|
133
|
+
6. **Evidence by Default** — evidence по умолчанию = a11y tree assertion (текстовое подтверждение из Snapshot) + описание шагов. Скриншоты делаются только если тикет явно требует их в DoD **или** если TC содержит **визуальный критерий** (см. принцип 8).
|
|
134
|
+
8. **Visual TC = Screenshot + Self-Review** — если TC описывает **как элемент выглядит пользователю** (формулировки: «оформлен как», «читаем», «контрастен», «выровнен», «не обрезан», «стилизован», «визуально выделен», отрицания о внешнем виде «не голый», «без overflow»), то:
|
|
135
|
+
- a11y tree assertion **недостаточен** как единственный evidence — a11y tree не содержит визуальных свойств (цвет, стилизация, выравнивание, контраст);
|
|
136
|
+
- **обязательно** сделай скриншот проверяемого элемента и сохрани в `reports/`;
|
|
137
|
+
- **обязательно** открой сделанный скриншот через Read и посмотри на него **до** записи PASS. Опиши себе одним предложением, что видишь. Если видимое не соответствует формулировке TC — это FAIL, даже если a11y/DOM assertion прошёл;
|
|
138
|
+
- в evidence TC укажи **и** ссылку на PNG-файл, **и** краткое описание того, что на нём видно.
|
|
139
|
+
|
|
140
|
+
**Почему:** программная проверка (DOM-assertion, a11y tree) подтверждает существование элемента в модели данных, но не его внешний вид. `type=checkbox` + `label.visible=true` не означает «выглядит как toggle» — между DOM и рендерингом лежит CSS, который DOM-assertion не видит. Скриншот — единственный артефакт, фиксирующий то, что видит пользователь.
|
|
141
|
+
9. **One Bug — One Section** — каждый дефект оформляется отдельной секцией DEFECT внутри QA-тикета по формату `templates/bug-report.md`. Не группируй несвязанные дефекты в одну секцию. **⛔ Не создавай отдельные тикеты для дефектов** — QA-тикет является единственным носителем информации о найденных дефектах.
|
|
142
|
+
|
|
143
|
+
## Self-check перед завершением тикета
|
|
144
|
+
|
|
145
|
+
**ОБЯЗАТЕЛЬНО перед закрытием тикета выполни:**
|
|
146
|
+
|
|
147
|
+
1. Проверь что все тест-кейсы из скоупа выполнены (PASS/FAIL/BLOCKED/OBSERVATION)
|
|
148
|
+
2. Для каждого FAIL — дефект зафиксирован в QA-тикете с evidence (a11y tree assertion, описание шагов; скриншот — если требуется в DoD) по формату `templates/bug-report.md`
|
|
149
|
+
3. **Evidence записаны в результат TC:** для каждого тест-кейса (PASS и FAIL) в результате указан a11y tree assertion (текстовое подтверждение из Snapshot, например: `a11y: "WF: Idle" found in StatusBar region`) и описание выполненных шагов. **Скриншоты** — если тикет явно требует их в DoD **или** если TC содержит визуальный критерий (принцип 8). Для визуальных TC: в evidence указана ссылка на PNG + описание что на нём видно. Если скриншоты требуются: сохраняй в `reports/`, проверяй что файл читаемо показывает проверяемый элемент. **Если тестируешь в Sandbox** — файлы внутри Sandbox эфемерны. Подробности: `knowledge/sandbox-core.md` → «Персистенция evidence»
|
|
150
|
+
4. Заполнен отчёт о тестовой сессии → `templates/test-session-report.md`
|
|
151
|
+
5. Пройди по каждому пункту DoD тикета — **отметь `[x]`** только если критерий **выполнен** (не просто проверен). `[x]` = «критерий достигнут». Если критерий проверен, но не достигнут → оставь `[ ]` и запиши фактический результат рядом в тексте (например: `[ ] Coverage ≥ 98% — фактически: 92.33%`). Не оставляй `[ ]` без объяснения — это сигнал невыполнения
|
|
152
|
+
6. Заполни `completed_at` в frontmatter тикета
|
|
153
|
+
7. ⛔ **НЕ перемещай тикет** — это исключительная ответственность пайплайна. Тикет будет автоматически перемещён скриптом после того, как агент завершит работу и выведет `---RESULT---`. Вызов `move-ticket.js` или любое ручное перемещение файла **ломает пайплайн**: тикет окажется в `done/` без прохождения ревью, и при следующем запуске auto-correct вернёт его в backlog.
|
|
154
|
+
|
|
155
|
+
**Если хотя бы один пункт не пройден — тикет НЕ завершён.**
|
|
156
|
+
|
|
157
|
+
## Формат вывода
|
|
158
|
+
|
|
159
|
+
- Русский язык
|
|
160
|
+
- Структурированный markdown с таблицами результатов
|
|
161
|
+
- Скриншоты встроены или приложены по ссылке
|
|
162
|
+
- Статус каждого тест-кейса: `PASS` / `FAIL` / `BLOCKED` / `SKIPPED`
|
|
163
|
+
- Severity багов: `CRITICAL` / `HIGH` / `MEDIUM` / `LOW`
|
|
164
|
+
- Итоговая статистика: всего / пройдено / упало / заблокировано
|
|
165
|
+
|
|
166
|
+
## Границы компетенции
|
|
167
|
+
|
|
168
|
+
- **Подмена ручной проверки UI-наблюдаемого поведения запуском автотестов** → запрещено (см. ⛔ антипаттерн выше). Написание и реальный запуск ассертов для инвариантов, не выражающихся через UI (ФС, данные, структура файла), — в зоне QA; правила размещения/именования тестов, если заданы проектом, ищи в `../shared/`
|
|
169
|
+
- **Нагрузочное тестирование** → соответствующий скил проекта
|
|
170
|
+
- **Исправление багов** → соответствующий скил через тикет
|
|
171
|
+
- **Решение о релизе** → принимает ответственный скил проекта
|
|
172
|
+
- **Улучшение этого скила** → соответствующий скил проекта
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
**Регрессионные тесты:** `tests/index.yaml`. Прогон: `node .workflow/src/scripts/run-skill-tests.js --skill manual-testing`
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Алгоритм: Стратегия при заблокированном инструменте
|
|
2
|
+
|
|
3
|
+
Дерево решений для ситуации, когда основной инструмент тестирования недоступен или заблокирован.
|
|
4
|
+
|
|
5
|
+
## Когда активировать
|
|
6
|
+
|
|
7
|
+
- Инструмент выдаёт ошибку доступа (URL заблокирован, API недоступен)
|
|
8
|
+
- Инструмент технически доступен, но не позволяет достичь тестируемого объекта
|
|
9
|
+
- Попытка использовать инструмент приводит к BLOCKED на всех TC
|
|
10
|
+
|
|
11
|
+
## Алгоритм
|
|
12
|
+
|
|
13
|
+
### Шаг 1. Определи причину блокировки
|
|
14
|
+
|
|
15
|
+
Задай вопрос: **«Заблокирован инструмент или тестируемый объект недоступен в данной среде?»**
|
|
16
|
+
|
|
17
|
+
| Ответ | Следующий шаг |
|
|
18
|
+
|-------|---------------|
|
|
19
|
+
| Инструмент заблокирован (техническое ограничение среды) | → Шаг 2: Найти альтернативный инструмент |
|
|
20
|
+
| Объект недоступен (нет среды, нет данных) | → Шаг 3: Зафиксировать BLOCKED |
|
|
21
|
+
|
|
22
|
+
### Шаг 2. Ищи альтернативный инструмент
|
|
23
|
+
|
|
24
|
+
Проверь в порядке приоритета:
|
|
25
|
+
|
|
26
|
+
1. **Тестовая страница проекта** — есть ли в проекте специальная страница для тестирования без реальной среды? (Проверь shared knowledge проекта)
|
|
27
|
+
2. **Другой инструмент той же категории** — например, другой способ запустить браузер с нужными флагами
|
|
28
|
+
3. **Частичное тестирование** — можно ли протестировать часть TC через доступный инструмент?
|
|
29
|
+
|
|
30
|
+
Если альтернатива найдена → выполни TC через неё, запиши в результате какой инструмент использован и какие ограничения.
|
|
31
|
+
|
|
32
|
+
Если альтернативы нет → Шаг 3.
|
|
33
|
+
|
|
34
|
+
### Шаг 3. Зафиксируй BLOCKED
|
|
35
|
+
|
|
36
|
+
Для каждого заблокированного TC запиши:
|
|
37
|
+
```
|
|
38
|
+
Статус: BLOCKED
|
|
39
|
+
Причина: [конкретная техническая причина — инструмент X недоступен из-за Y]
|
|
40
|
+
Шаги для ручного воспроизведения: [список шагов без автоматизации]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**⛔ НЕ помечай TC как PASS без реальной проверки**
|
|
44
|
+
**⛔ НЕ переключайся на code review или анализ исходного кода** — это другой тип работы
|
|
45
|
+
|
|
46
|
+
### Шаг 4. Оцени критичность заблокированных TC
|
|
47
|
+
|
|
48
|
+
Вопрос: **«Есть ли среди BLOCKED TC критические сценарии (статус CRITICAL или HIGH)?»**
|
|
49
|
+
|
|
50
|
+
| Ответ | Действие |
|
|
51
|
+
|-------|----------|
|
|
52
|
+
| Да — есть CRITICAL/HIGH BLOCKED TC | Создать HUMAN-тикет с описанием причины блокировки и шагами для ручного тестирования |
|
|
53
|
+
| Нет — все BLOCKED имеют LOW/MEDIUM приоритет | Завершить тикет с BLOCKED, документировать ограничение |
|
|
54
|
+
|
|
55
|
+
### Шаг 5. Оформи результат тикета
|
|
56
|
+
|
|
57
|
+
Даже если все TC BLOCKED — тикет должен содержать:
|
|
58
|
+
- Задокументированное техническое ограничение
|
|
59
|
+
- Шаги для ручного воспроизведения каждого TC
|
|
60
|
+
- Рекомендацию по устранению блокировки
|
|
61
|
+
|
|
62
|
+
**Полностью задокументированный BLOCKED = выполненная работа тестировщика.**
|
|
63
|
+
|
|
64
|
+
## Антипаттерны (не делай так)
|
|
65
|
+
|
|
66
|
+
| Антипаттерн | Почему нельзя |
|
|
67
|
+
|-------------|---------------|
|
|
68
|
+
| Заменить тест code review | Code review не обнаруживает UI-дефекты, регрессии, state-проблемы |
|
|
69
|
+
| Генерировать тестовые данные вместо тестирования | Данные без выполнения — не тестирование |
|
|
70
|
+
| Писать автотесты в коде **без запуска** | Код без прогона = призрачное тестирование. Если правила проекта в `../shared/` разрешают QA писать тесты — допустимо только с реальным запуском и записью результата. Иначе — другой скил (разработка), создай тикет. |
|
|
71
|
+
| **Запустить уже существующие автотесты разработки и пометить TC как PASS** | Эти тесты уже были зелёными до создания QA-тикета — их прогон не даёт нового evidence о реальной среде исполнения. Ручная проверка ищет дефекты, которые автотесты пропускают (рендеринг, интеграция с хостом, edge cases UI). Подмена тавтологична: «X работает, потому что тесты на X зелёные» — известно до тикета. Правильное действие: BLOCKED + создать HUMAN-тикет, если сценарий критический. |
|
|
72
|
+
| Объявить assertion из unit-тест файла «эквивалентом визуальной проверки» | Unit-тест проверяет конструктор объекта в изоляции, а не его рендеринг в реальном host-окружении. Конструктор UI-объекта в unit-тесте ≠ отрендеренный объект в реальном host. Эквивалентность ложная. |
|
|
73
|
+
| Пометить TC как PASS на основании анализа кода | PASS без реального запуска — ложный результат |
|
|
74
|
+
| Оставить все TC без статуса | Тикет без статусов = незавершённая работа |
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Алгоритм: Определение Severity и Priority бага
|
|
2
|
+
|
|
3
|
+
Формализованный метод определения серьёзности и приоритета исправления найденного дефекта.
|
|
4
|
+
|
|
5
|
+
## Вход
|
|
6
|
+
|
|
7
|
+
- Описание бага (что сломалось)
|
|
8
|
+
- Контекст (какой модуль, какой flow)
|
|
9
|
+
- Наличие workaround (обходной путь)
|
|
10
|
+
- Частота воспроизведения
|
|
11
|
+
|
|
12
|
+
## Алгоритм
|
|
13
|
+
|
|
14
|
+
### 1. Определи Severity (серьёзность — техническое влияние)
|
|
15
|
+
|
|
16
|
+
| Severity | Критерии | Примеры |
|
|
17
|
+
|----------|----------|---------|
|
|
18
|
+
| **CRITICAL** | Система неработоспособна. Потеря данных. Нет workaround. Безопасность скомпрометирована | Приложение не запускается; данные удалены; XSS-уязвимость; невозможно оплатить |
|
|
19
|
+
| **HIGH** | Основная функция сломана. Workaround существует, но неудобен | Логин работает только через Google; поиск не возвращает результаты; отчёт формируется с ошибками |
|
|
20
|
+
| **MEDIUM** | Вторичная функция сломана. Есть приемлемый workaround | Фильтр сбрасывается при переходе назад; email-уведомление не приходит; сортировка работает некорректно |
|
|
21
|
+
| **LOW** | Косметический дефект. Не влияет на функциональность | Опечатка в тексте; неровное выравнивание; неправильная иконка |
|
|
22
|
+
|
|
23
|
+
### 2. Определи частоту воспроизведения
|
|
24
|
+
|
|
25
|
+
| Частота | Описание | Множитель |
|
|
26
|
+
|---------|----------|-----------|
|
|
27
|
+
| **Always** | Воспроизводится каждый раз | ×1.0 |
|
|
28
|
+
| **Often** | Воспроизводится в >50% случаев | ×0.8 |
|
|
29
|
+
| **Sometimes** | Воспроизводится в 10-50% случаев | ×0.5 |
|
|
30
|
+
| **Rarely** | Воспроизводится в <10% случаев | ×0.3 |
|
|
31
|
+
|
|
32
|
+
### 3. Определи Priority (приоритет исправления — бизнес-решение)
|
|
33
|
+
|
|
34
|
+
Матрица Severity × Business Impact:
|
|
35
|
+
|
|
36
|
+
| Severity / Бизнес-влияние | Блокирует пользователей | Снижает конверсию | Раздражает | Косметика |
|
|
37
|
+
|---------------------------|------------------------|-------------------|------------|-----------|
|
|
38
|
+
| **CRITICAL** | P0: Немедленно | P0: Немедленно | P1: Срочно | P1: Срочно |
|
|
39
|
+
| **HIGH** | P0: Немедленно | P1: Срочно | P2: В спринт | P2: В спринт |
|
|
40
|
+
| **MEDIUM** | P1: Срочно | P2: В спринт | P3: В бэклог | P3: В бэклог |
|
|
41
|
+
| **LOW** | P2: В спринт | P3: В бэклог | P4: Когда-нибудь | P4: Когда-нибудь |
|
|
42
|
+
|
|
43
|
+
### 4. Сформулируй рекомендацию
|
|
44
|
+
|
|
45
|
+
| Priority | Действие |
|
|
46
|
+
|----------|----------|
|
|
47
|
+
| **P0** | Hotfix. Блокирует релиз. Исправить немедленно |
|
|
48
|
+
| **P1** | Исправить в текущем спринте. Высокий приоритет |
|
|
49
|
+
| **P2** | Включить в следующий спринт |
|
|
50
|
+
| **P3** | Добавить в бэклог, исправить при возможности |
|
|
51
|
+
| **P4** | Low priority, исправить когда будет время |
|
|
52
|
+
|
|
53
|
+
## Выход
|
|
54
|
+
|
|
55
|
+
- **Severity**: CRITICAL / HIGH / MEDIUM / LOW
|
|
56
|
+
- **Priority**: P0 / P1 / P2 / P3 / P4
|
|
57
|
+
- **Обоснование**: 1-2 предложения почему именно такие значения
|
|
58
|
+
|
|
59
|
+
## Пример
|
|
60
|
+
|
|
61
|
+
**Баг:** При сумме заказа > 999 999 руб. кнопка «Оплатить» неактивна.
|
|
62
|
+
|
|
63
|
+
1. **Severity:** CRITICAL — основная функция (оплата) сломана, нет workaround
|
|
64
|
+
2. **Частота:** Always (×1.0) — воспроизводится каждый раз при сумме > 999 999
|
|
65
|
+
3. **Бизнес-влияние:** Блокирует пользователей (крупные заказы невозможны)
|
|
66
|
+
4. **Priority:** P0 — немедленное исправление
|
|
67
|
+
5. **Обоснование:** Блокирует оплату для клиентов с крупными заказами. Потенциальная потеря выручки.
|
|
68
|
+
|
|
69
|
+
## Граничные случаи
|
|
70
|
+
|
|
71
|
+
- **Severity HIGH, но редко воспроизводится** → Priority может быть снижен до P2
|
|
72
|
+
- **Severity LOW, но видят все пользователи** → Priority может быть повышен до P2
|
|
73
|
+
- **Баг в новой фиче, которая ещё не в проде** → Priority определяется по дедлайну фичи
|