workflow-ai 1.0.62 → 1.0.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -0
- package/agent-templates/CLAUDE.md.tpl +2 -0
- package/agent-templates/QWEN.md.tpl +2 -0
- package/configs/config.yaml +134 -0
- package/configs/pipeline.yaml +884 -0
- package/configs/ticket-movement-rules.yaml +80 -0
- package/package.json +2 -1
- package/src/global-dir.mjs +25 -1
- package/src/init.mjs +5 -4
- package/src/lib/agent-spawner.mjs +338 -0
- package/src/runner.mjs +15 -14
- package/src/scripts/get-next-test-id.js +94 -0
- package/src/scripts/migrate-backlog-to-tests.js +406 -0
- package/src/scripts/run-skill-tests.js +1703 -0
- package/src/scripts/scan-fixtures-for-secrets.js +248 -0
- package/src/scripts/tests/timeout-cascade.test.js +28 -0
- 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 +166 -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 +95 -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 +95 -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 +49 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-2.md +56 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/claude-sonnet/trial-3.md +39 -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 +11 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-deepseek/trial-3.md +26 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-glm/trial-1.md +19 -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 +28 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-1.md +23 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-2.md +27 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-001/current/kilo-minimax/trial-3.md +25 -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 +32 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-2.md +20 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/claude-sonnet/trial-3.md +26 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/judge.json +164 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-1.md +7 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-deepseek/trial-2.md +16 -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 +5 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-2.md +11 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-glm/trial-3.md +13 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-1.md +13 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-2.md +12 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/kilo-minimax/trial-3.md +5 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002/current/meta.json +116 -0
- package/src/skills/decompose-gaps/tests/cases/TC-DECOMPOSE-GAPS-002-glob-before-write.yaml +36 -0
- package/src/skills/decompose-gaps/tests/index.yaml +25 -0
- package/src/skills/decompose-gaps/tests/rubrics/glob-before-write.md +21 -0
- package/src/skills/decompose-gaps/tests/rubrics/scope-exclusion.md +21 -0
- package/src/skills/decompose-gaps/workflows/decompose.md +120 -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 +113 -0
- package/src/skills/decompose-plan/knowledge/capabilities.md +44 -0
- package/src/skills/decompose-plan/knowledge/human-task-rules.md +67 -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/index.yaml +30 -0
- package/src/skills/decompose-plan/tests/rubrics/atomicity-no-1to1.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 +272 -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 +89 -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 +89 -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 +174 -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 +21 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-2.md +65 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-001/current/claude-sonnet/trial-3.md +35 -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 +47 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-2.md +39 -0
- package/src/skills/manual-testing/tests/cases/TC-MANUAL-TESTING-002/current/claude-sonnet/trial-3.md +40 -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/index.yaml +25 -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/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 +354 -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
- package/templates/plan-template.md +1 -0
|
@@ -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 определяется по дедлайну фичи
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Алгоритм: Бюджетирование MCP-сессии
|
|
2
|
+
|
|
3
|
+
Формализованный расчёт и контроль расхода MCP-вызовов на тестовую сессию.
|
|
4
|
+
|
|
5
|
+
## Вход
|
|
6
|
+
|
|
7
|
+
- Бюджет MCP-вызовов из `context.notes` тикета (или значение по умолчанию: 80)
|
|
8
|
+
- Количество тест-кейсов (TC) в скоупе
|
|
9
|
+
- Тип тестирования (smoke, regression, exploratory)
|
|
10
|
+
|
|
11
|
+
## Формула распределения
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
avg_cost_per_TC = 10 # среднее по 11 QA-сессиям (диапазон 8-12)
|
|
15
|
+
setup_reserve = 5 # Quick-start checklist (3-4 вызова + запуск приложения)
|
|
16
|
+
safety_margin = 0.1 # 10% резерв на непредвиденные ситуации
|
|
17
|
+
|
|
18
|
+
effective_budget = budget - setup_reserve
|
|
19
|
+
max_TC_per_session = floor(effective_budget * (1 - safety_margin) / avg_cost_per_TC)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Пример:** бюджет = 80 → effective = 75 → max_TC = floor(75 × 0.9 / 10) = **6 TC за сессию**.
|
|
23
|
+
|
|
24
|
+
## Таблица быстрого расчёта
|
|
25
|
+
|
|
26
|
+
| Бюджет | Setup | Effective | Max TC | Примечание |
|
|
27
|
+
|--------|-------|-----------|--------|------------|
|
|
28
|
+
| 50 | 5 | 45 | 4 | Минимальная сессия |
|
|
29
|
+
| 80 | 5 | 75 | 6 | Стандартный бюджет |
|
|
30
|
+
| 100 | 5 | 95 | 8 | Расширенная сессия |
|
|
31
|
+
| 140 | 5 | 135 | 12 | Максимальная сессия |
|
|
32
|
+
|
|
33
|
+
## Правила
|
|
34
|
+
|
|
35
|
+
### Планирование continuation
|
|
36
|
+
|
|
37
|
+
Если тикет содержит больше TC, чем `max_TC_per_session`:
|
|
38
|
+
|
|
39
|
+
1. **Перед началом** запиши в тикет: «Запланирована continuation: TC-001..TC-006 в сессии 1, TC-007..TC-010 в сессии 2»
|
|
40
|
+
2. Выполняй TC по приоритету (быстрые → средние → длительные)
|
|
41
|
+
3. После завершения `max_TC` — зафиксируй прогресс и заверши сессию
|
|
42
|
+
|
|
43
|
+
### Checkpoint accounting
|
|
44
|
+
|
|
45
|
+
В начале каждого TC записывай номер текущего MCP-вызова:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
TC-001 starts at call #6 → done at call #14 (8 calls)
|
|
49
|
+
TC-002 starts at call #14 → done at call #22 (8 calls)
|
|
50
|
+
TC-003 starts at call #22 → done at call #35 (13 calls) ← ПРЕВЫШЕНИЕ
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Это даёт данные для калибровки `avg_cost_per_TC` в будущих сессиях.
|
|
54
|
+
|
|
55
|
+
### Жёсткий порог BLOCKED
|
|
56
|
+
|
|
57
|
+
- **TC > 12 MCP-вызовов = BLOCKED**, без исключений
|
|
58
|
+
- Зафиксируй: что наблюдалось, на чём застрял, сколько вызовов потрачено
|
|
59
|
+
- Переходи к следующему TC
|
|
60
|
+
|
|
61
|
+
### Явное намерение перед вызовом (Explicit Intent)
|
|
62
|
+
|
|
63
|
+
**Источник:** Advanced Tool Calling in LLM Agents (sparkco.ai, 2025)
|
|
64
|
+
|
|
65
|
+
Перед каждым **не очевидным** инструментальным вызовом задай себе вопрос:
|
|
66
|
+
> «Зачем именно этот вызов и что он подтвердит в рамках текущего TC?»
|
|
67
|
+
|
|
68
|
+
Если ответ не формулируется за 1 строку — это сигнал rabbit hole.
|
|
69
|
+
|
|
70
|
+
| Ситуация | Действие |
|
|
71
|
+
|----------|----------|
|
|
72
|
+
| Вызов прямо следует из шага TC | Выполняй |
|
|
73
|
+
| Цель вызова — «разобраться как работает X» | СТОП — это rabbit hole |
|
|
74
|
+
| Вызов — третий подряд без видимого прогресса | BLOCKED → зафиксируй, переходи к следующему TC |
|
|
75
|
+
|
|
76
|
+
### Rabbit hole detection (decision tree)
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Текущее действие входит в шаги TC?
|
|
80
|
+
├── ДА → продолжай
|
|
81
|
+
└── НЕТ → это rabbit hole
|
|
82
|
+
├── Расследование инфраструктуры (Get-ChildItem, Test-Path, Get-Acl) → СТОП
|
|
83
|
+
├── Создание собственных инструментов (HTTP-клиент, скрипт обхода) → СТОП
|
|
84
|
+
├── Установка/запуск продукта из CLI при UI-тестировании → СТОП
|
|
85
|
+
└── Другое: задай вопрос «это в скоупе TC?» — если нет → BLOCKED
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 50% checkpoint (из smoke.md)
|
|
89
|
+
|
|
90
|
+
- Потрачено >50% бюджета И выполнено <50% TC → **экономный режим**
|
|
91
|
+
- Экономный режим: минимум Snapshot, пропуск длительных TC, OBSERVATION вместо полного расследования
|
|
92
|
+
|
|
93
|
+
## Выход
|
|
94
|
+
|
|
95
|
+
- Распределение бюджета по TC (таблица: TC → allocated → actual)
|
|
96
|
+
- Решение о необходимости continuation
|
|
97
|
+
- Фактический расход для калибровки будущих сессий
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Алгоритм: Приоритизация тест-кейсов
|
|
2
|
+
|
|
3
|
+
Определение порядка выполнения тест-кейсов при ограниченном времени на тестирование.
|
|
4
|
+
|
|
5
|
+
## Вход
|
|
6
|
+
|
|
7
|
+
- Список тест-кейсов с описанием
|
|
8
|
+
- Информация об изменениях (что задеплоено/изменено)
|
|
9
|
+
- Доступное время на тестирование
|
|
10
|
+
- Контекст (тип релиза, критичность)
|
|
11
|
+
|
|
12
|
+
## Алгоритм
|
|
13
|
+
|
|
14
|
+
### 1. Оцени бизнес-критичность каждого тест-кейса
|
|
15
|
+
|
|
16
|
+
| Уровень | Описание | Вес |
|
|
17
|
+
|---------|----------|-----|
|
|
18
|
+
| **CRITICAL** | Невозможность использования продукта. Оплата, авторизация, основной бизнес-flow | 10 |
|
|
19
|
+
| **HIGH** | Серьёзное нарушение работы. Основные фичи, данные пользователя | 7 |
|
|
20
|
+
| **MEDIUM** | Снижение качества. Вторичные фичи, UX-проблемы | 4 |
|
|
21
|
+
| **LOW** | Косметические. Тексты, вёрстка, edge cases | 1 |
|
|
22
|
+
|
|
23
|
+
### 2. Оцени вероятность регрессии
|
|
24
|
+
|
|
25
|
+
| Фактор | Вес |
|
|
26
|
+
|--------|-----|
|
|
27
|
+
| Код модуля менялся в этом релизе | +5 |
|
|
28
|
+
| Код смежного модуля менялся | +3 |
|
|
29
|
+
| Модуль часто ломается (история багов) | +3 |
|
|
30
|
+
| Модуль стабилен, давно не менялся | +0 |
|
|
31
|
+
| Сложная бизнес-логика | +2 |
|
|
32
|
+
| Простая статика | +0 |
|
|
33
|
+
|
|
34
|
+
### 3. Рассчитай приоритет
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Приоритет = Бизнес-критичность × Вероятность_регрессии
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 4. Распредели по группам
|
|
41
|
+
|
|
42
|
+
| Группа | Приоритет | Действие |
|
|
43
|
+
|--------|-----------|----------|
|
|
44
|
+
| **P0** | > 50 | Выполнить ОБЯЗАТЕЛЬНО, даже при минимальном времени |
|
|
45
|
+
| **P1** | 25-50 | Выполнить при наличии времени |
|
|
46
|
+
| **P2** | 10-24 | Выполнить при полной регрессии |
|
|
47
|
+
| **P3** | < 10 | Опционально |
|
|
48
|
+
|
|
49
|
+
### 5. При нехватке времени
|
|
50
|
+
|
|
51
|
+
1. Выполни все P0
|
|
52
|
+
2. Из P1 выбери те, чей модуль менялся в этом релизе
|
|
53
|
+
3. Для непроверенных P1/P2 — укажи `SKIPPED` с обоснованием в отчёте
|
|
54
|
+
|
|
55
|
+
## Выход
|
|
56
|
+
|
|
57
|
+
Упорядоченный список тест-кейсов с приоритетами P0-P3.
|
|
58
|
+
|
|
59
|
+
## Пример
|
|
60
|
+
|
|
61
|
+
Релиз включает изменения в модуле checkout. Время — 2 часа.
|
|
62
|
+
|
|
63
|
+
| Тест-кейс | Критичность | Вероятность | Приоритет | Группа |
|
|
64
|
+
|-----------|-------------|-------------|-----------|--------|
|
|
65
|
+
| Оплата картой | 10 (CRITICAL) | 8 (модуль менялся) | 80 | P0 |
|
|
66
|
+
| Логин | 10 (CRITICAL) | 0 (не менялся) | 0 | P3 |
|
|
67
|
+
| Корзина | 7 (HIGH) | 3 (смежный) | 21 | P2 |
|
|
68
|
+
| Фильтры товаров | 4 (MEDIUM) | 0 | 0 | P3 |
|
|
69
|
+
| Промокод при оплате | 7 (HIGH) | 8 (модуль менялся) | 56 | P0 |
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Тестирование браузерных расширений
|
|
2
|
+
|
|
3
|
+
Специфика, ограничения и стратегии тестирования браузерных расширений.
|
|
4
|
+
|
|
5
|
+
## Ограничения MCP-browser
|
|
6
|
+
|
|
7
|
+
MCP-browser запускает браузер без флага `--load-extension`, поэтому:
|
|
8
|
+
|
|
9
|
+
- `chrome://extensions` — заблокирован (политика безопасности браузера)
|
|
10
|
+
- Extension popup — недоступен через UI-клик на иконке расширения
|
|
11
|
+
- Extension API (хранилище, прокси и т.п.) — недоступны из внешнего контекста
|
|
12
|
+
- Service Worker расширения — недоступен через инструменты разработчика
|
|
13
|
+
|
|
14
|
+
**Это архитектурное ограничение MCP-browser, не баг.**
|
|
15
|
+
|
|
16
|
+
## Стратегии тестирования при ограничениях
|
|
17
|
+
|
|
18
|
+
### Стратегия 1: Тестовая HTML-страница (если есть в проекте)
|
|
19
|
+
|
|
20
|
+
Если проект предоставляет тестовую страницу расширения для локального запуска через HTTP-сервер — использовать её.
|
|
21
|
+
|
|
22
|
+
**Возможности:** UI-взаимодействия, формы, навигация.
|
|
23
|
+
|
|
24
|
+
**Ограничения:** Extension API (хранилище, прокси) могут быть недоступны или замоканы. Проверь shared knowledge проекта на наличие инструкций по тестовой среде.
|
|
25
|
+
|
|
26
|
+
### Стратегия 2: Прямой запуск с --load-extension (Playwright без MCP)
|
|
27
|
+
|
|
28
|
+
Используется в Playwright-тестах (не через MCP). Загрузка расширения при старте браузера:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
// Запуск браузера с расширением
|
|
32
|
+
const context = await chromium.launchPersistentContext('', {
|
|
33
|
+
headless: false, // headless:true не поддерживается для расширений
|
|
34
|
+
args: [
|
|
35
|
+
`--disable-extensions-except=${pathToExtension}`,
|
|
36
|
+
`--load-extension=${pathToExtension}`,
|
|
37
|
+
],
|
|
38
|
+
});
|
|
39
|
+
// Extension ID получается из URL service worker
|
|
40
|
+
const [background] = context.serviceWorkers();
|
|
41
|
+
const extensionId = background.url().split('/')[2];
|
|
42
|
+
// Popup открывается как обычная страница
|
|
43
|
+
const popup = await context.newPage();
|
|
44
|
+
await popup.goto(`chrome-extension://${extensionId}/popup.html`);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Возможности:** Весь функционал расширения включая API хранилища и service worker.
|
|
48
|
+
|
|
49
|
+
**Источник:** [Playwright docs: Chrome extensions](https://playwright.dev/docs/chrome-extensions)
|
|
50
|
+
|
|
51
|
+
### Стратегия 3: Документирование BLOCKED + эскалация
|
|
52
|
+
|
|
53
|
+
Если ни одна из стратегий недоступна:
|
|
54
|
+
1. Записать TC как `BLOCKED` с указанием причины
|
|
55
|
+
2. Задокументировать шаги для ручного воспроизведения
|
|
56
|
+
3. Создать HUMAN-тикет если сценарий критический
|
|
57
|
+
|
|
58
|
+
**⛔ НЕ переключайся на code review или генерацию тестовых данных как замену реального тестирования** — это не входит в скоуп manual-testing.
|
|
59
|
+
|
|
60
|
+
## Выбор стратегии
|
|
61
|
+
|
|
62
|
+
Применяй стратегии строго по приоритету (сначала Стратегия 2, затем 1, затем 3):
|
|
63
|
+
|
|
64
|
+
| Ситуация | Стратегия |
|
|
65
|
+
|----------|-----------|
|
|
66
|
+
| Доступен инструмент выполнения произвольного кода (например, `browser_run_code` / `execute_script`) | **Стратегия 2** — запусти Playwright programmatically, получи `chrome-extension://` URL |
|
|
67
|
+
| Инструмент выполнения кода недоступен, но проект имеет тестовую HTML-страницу | Стратегия 1 → проверь shared knowledge проекта |
|
|
68
|
+
| Оба варианта выше недоступны | Стратегия 3 |
|
|
69
|
+
|
|
70
|
+
**⚠️ Наличие helper-модуля в проекте (`e2e/helpers/extension.ts` или аналог) = сигнал использовать Стратегию 2.** Проверь shared knowledge проекта на наличие готового helper перед выбором стратегии.
|
|
71
|
+
|
|
72
|
+
**⛔ Стратегия 1 (HTTP-сервер) не заменяет Стратегию 2** — chrome.storage и другие Extension API недоступны в HTTP-контексте. Используй Стратегию 1 только если Стратегия 2 технически невозможна.
|
|
73
|
+
|
|
74
|
+
## Тестирование API хранилища (при Стратегии 2)
|
|
75
|
+
|
|
76
|
+
При наличии доступа к extension-контексту:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// Читать состояние хранилища
|
|
80
|
+
const data = await popup.evaluate(() =>
|
|
81
|
+
chrome.storage.local.get(null) // null = все ключи
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
// Подготовить тест-данные в хранилище
|
|
85
|
+
await popup.evaluate((testData) =>
|
|
86
|
+
chrome.storage.local.set(testData), testData
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
// Сбросить состояние между тестами
|
|
90
|
+
await popup.evaluate(() => chrome.storage.local.clear());
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Типичные артефакты тестирования расширений
|
|
94
|
+
|
|
95
|
+
| Тип артефакта | Что проверять |
|
|
96
|
+
|---------------|---------------|
|
|
97
|
+
| UI popup | Отображение элементов, навигация, формы |
|
|
98
|
+
| Storage state | Структура данных, корректность сохранения |
|
|
99
|
+
| Service Worker logs | Ошибки, предупреждения при операциях |
|
|
100
|
+
| Extension API responses | Корректность применения настроек |
|
|
101
|
+
|
|
102
|
+
<!-- РАСШИРЕНИЕ: добавляй специфические паттерны тестирования расширений ниже -->
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Инструменты работы с браузером
|
|
2
|
+
|
|
3
|
+
Справочник по инструментам и командам для тестирования через браузер.
|
|
4
|
+
|
|
5
|
+
## Playwright MCP — основной инструмент
|
|
6
|
+
|
|
7
|
+
### Навигация
|
|
8
|
+
|
|
9
|
+
| Команда | Описание | Пример |
|
|
10
|
+
|---------|----------|--------|
|
|
11
|
+
| `browser_navigate` | Перейти по URL | `url: "https://example.com/login"` |
|
|
12
|
+
| `browser_go_back` | Назад | — |
|
|
13
|
+
| `browser_go_forward` | Вперёд | — |
|
|
14
|
+
| `browser_wait` | Ожидание (мс) | `time: 2000` |
|
|
15
|
+
|
|
16
|
+
### Взаимодействие с элементами
|
|
17
|
+
|
|
18
|
+
| Команда | Описание | Параметры |
|
|
19
|
+
|---------|----------|-----------|
|
|
20
|
+
| `browser_click` | Клик по элементу | `element: "описание элемента"`, `ref: "ref_id"` |
|
|
21
|
+
| `browser_type` | Ввод текста | `element: "описание поля"`, `ref: "ref_id"`, `text: "значение"` |
|
|
22
|
+
| `browser_select_option` | Выбор из списка | `element: "описание"`, `ref: "ref_id"`, `values: ["value"]` |
|
|
23
|
+
| `browser_hover` | Наведение курсора | `element: "описание"`, `ref: "ref_id"` |
|
|
24
|
+
| `browser_drag` | Перетаскивание | `startElement`, `endElement` |
|
|
25
|
+
|
|
26
|
+
### Фиксация состояния
|
|
27
|
+
|
|
28
|
+
| Команда | Описание | Когда использовать |
|
|
29
|
+
|---------|----------|-------------------|
|
|
30
|
+
| `browser_screenshot` | Скриншот страницы | На каждом значимом шаге, при обнаружении бага |
|
|
31
|
+
| `browser_snapshot` | Снимок accessibility tree | Для анализа структуры страницы |
|
|
32
|
+
| `browser_console_messages` | Логи консоли | Проверка JS-ошибок |
|
|
33
|
+
| `browser_network_requests` | Сетевые запросы | Проверка API-вызовов |
|
|
34
|
+
|
|
35
|
+
### Управление вкладками
|
|
36
|
+
|
|
37
|
+
| Команда | Описание |
|
|
38
|
+
|---------|----------|
|
|
39
|
+
| `browser_tab_list` | Список открытых вкладок |
|
|
40
|
+
| `browser_tab_new` | Открыть новую вкладку |
|
|
41
|
+
| `browser_tab_select` | Переключиться на вкладку |
|
|
42
|
+
| `browser_tab_close` | Закрыть вкладку |
|
|
43
|
+
|
|
44
|
+
### Работа с файлами
|
|
45
|
+
|
|
46
|
+
| Команда | Описание |
|
|
47
|
+
|---------|----------|
|
|
48
|
+
| `browser_file_upload` | Загрузка файла в input[type=file] |
|
|
49
|
+
| `browser_pdf_save` | Сохранить страницу как PDF |
|
|
50
|
+
|
|
51
|
+
## Паттерны тестирования через браузер
|
|
52
|
+
|
|
53
|
+
### Проверка формы
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
1. browser_navigate → страница с формой
|
|
57
|
+
2. browser_screenshot → начальное состояние
|
|
58
|
+
3. browser_type → заполнить каждое поле
|
|
59
|
+
4. browser_click → отправить форму
|
|
60
|
+
5. browser_screenshot → результат
|
|
61
|
+
6. Проверить: URL изменился? Сообщение об успехе? Ошибки?
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Проверка авторизации
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
1. browser_navigate → /login
|
|
68
|
+
2. browser_type → email
|
|
69
|
+
3. browser_type → password
|
|
70
|
+
4. browser_click → кнопка входа
|
|
71
|
+
5. browser_wait → ожидание редиректа
|
|
72
|
+
6. browser_screenshot → проверка dashboard
|
|
73
|
+
7. Проверить: URL = /dashboard? Имя пользователя отображается?
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Проверка ошибок
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
1. browser_navigate → целевая страница
|
|
80
|
+
2. Выполнить действие, вызывающее ошибку
|
|
81
|
+
3. browser_console_messages → проверить JS-ошибки
|
|
82
|
+
4. browser_network_requests → проверить 4xx/5xx ответы
|
|
83
|
+
5. browser_screenshot → зафиксировать состояние
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## cURL — проверка API
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# GET запрос
|
|
90
|
+
curl -v https://api.example.com/endpoint
|
|
91
|
+
|
|
92
|
+
# POST с данными
|
|
93
|
+
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL
|
|
94
|
+
|
|
95
|
+
# С авторизацией
|
|
96
|
+
curl -H "Authorization: Bearer TOKEN" URL
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Проверяй:
|
|
100
|
+
- Статус-код (200, 201, 400, 401, 403, 404, 500)
|
|
101
|
+
- Тело ответа (структура JSON, данные)
|
|
102
|
+
- Заголовки ответа (Content-Type, Cache-Control)
|
|
103
|
+
- Время ответа
|
|
104
|
+
|
|
105
|
+
## Советы
|
|
106
|
+
|
|
107
|
+
- **Артефакты — в `reports/`** — все скриншоты и файлы сохраняй в `reports/` в корне проекта, не в корень
|
|
108
|
+
- **Всегда делай скриншот перед действием** — чтобы зафиксировать начальное состояние
|
|
109
|
+
- **Используй `browser_snapshot`** для получения ref-идентификаторов элементов
|
|
110
|
+
- **Проверяй консоль** после каждого значимого действия — JS-ошибки часто скрыты
|
|
111
|
+
- **Ожидание** — если страница загружается медленно, используй `browser_wait`
|
|
112
|
+
- **Несколько вкладок** — для тестирования одновременных сессий используй `browser_tab_new`
|
|
113
|
+
|
|
114
|
+
<!-- РАСШИРЕНИЕ: добавляй новые инструменты и паттерны тестирования ниже -->
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Desktop-инструменты: Advanced
|
|
2
|
+
|
|
3
|
+
Редко используемые команды и паттерны Windows-MCP. Загружай при работе со Snapshot, MultiEdit, Registry, Process, или при необходимости установки/настройки.
|
|
4
|
+
|
|
5
|
+
## Установка Windows-MCP
|
|
6
|
+
|
|
7
|
+
**Требования:** Python 3.13+, UV package manager (`pip install uv`).
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
// Claude Code (.mcp.json) — на Windows нужен враппер cmd /c
|
|
11
|
+
{ "mcpServers": { "windows-mcp": { "command": "cmd", "args": ["/c", "uvx", "windows-mcp"] } } }
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Управление приложениями
|
|
15
|
+
|
|
16
|
+
| Команда | Описание | Параметры |
|
|
17
|
+
|---------|----------|-----------|
|
|
18
|
+
| `app` | Запуск/resize/move/switch окон | `action`, `app_name`, размеры |
|
|
19
|
+
| `shell` | PowerShell-команды | `command: string` |
|
|
20
|
+
|
|
21
|
+
## Работа с данными
|
|
22
|
+
|
|
23
|
+
| Команда | Описание | Параметры |
|
|
24
|
+
|---------|----------|-----------|
|
|
25
|
+
| `clipboard` | Буфер обмена | `action: "read"/"set"`, `content` |
|
|
26
|
+
| `multi_select` | Множественный выбор | `coordinates: [[x,y], ...]`, `use_ctrl` |
|
|
27
|
+
| `multi_edit` | Ввод в несколько полей | `fields: [{x, y, text}, ...]` |
|
|
28
|
+
|
|
29
|
+
## Системные инструменты
|
|
30
|
+
|
|
31
|
+
| Команда | Описание | Параметры |
|
|
32
|
+
|---------|----------|-----------|
|
|
33
|
+
| `process` | Список/завершение процессов | `action: "list"/"terminate"`, `pid`/`name` |
|
|
34
|
+
| `notification` | Toast-уведомление | `title`, `message` |
|
|
35
|
+
| `registry` | Реестр Windows | `action: "read"/"write"/"delete"/"list"`, `path` |
|
|
36
|
+
|
|
37
|
+
## Accessibility Tree
|
|
38
|
+
|
|
39
|
+
Snapshot возвращает дерево UI Automation с:
|
|
40
|
+
- **ID элементов** — для точных кликов через `label: int`
|
|
41
|
+
- **Имена и роли** — Button, TreeItem, MenuItem
|
|
42
|
+
- **Координаты** — для click/type когда label недоступен
|
|
43
|
+
- **Состояния** — enabled/disabled, expanded/collapsed, checked/unchecked
|
|
44
|
+
|
|
45
|
+
## Batch-действия
|
|
46
|
+
|
|
47
|
+
Группируй 2-3 MCP-вызова перед проверочным Snapshot. Каждый цикл «действие → Wait → Snapshot» стоит ~30-40 сек.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
# ❌ Click(tab) → Wait → Snapshot → Click(button) → Wait → Snapshot
|
|
51
|
+
# ✅ Click(tab) → Click(button) → Snapshot (проверка результата)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Промежуточный Snapshot — только если следующее действие зависит от координат, которых ещё нет.
|
|
55
|
+
|
|
56
|
+
## Проверка Developer Console (DevTools)
|
|
57
|
+
|
|
58
|
+
1. `Shortcut("Ctrl+Shift+I")` — открыть DevTools
|
|
59
|
+
2. Snapshot → прочитать **счётчик ошибок** в заголовке Console (`🔴 N errors`)
|
|
60
|
+
3. Если счётчик > 0 — прокрутить лог вверх, проверить каждую ошибку
|
|
61
|
+
4. Отличить ошибки расширения от системных (Chromium, телеметрия)
|
|
62
|
+
5. PASS только если ошибок расширения = 0
|
|
63
|
+
|
|
64
|
+
**Антипаттерн:** игнорировать счётчик «19 errors» в заголовке, увидев одну строку внизу.
|
|
65
|
+
|
|
66
|
+
## Window management
|
|
67
|
+
|
|
68
|
+
Если `Shortcut` не закрыл/переключил окно:
|
|
69
|
+
1. `App(action: "switch", app_name: "...")` — перефокусировка
|
|
70
|
+
2. Click по title bar — альтернативная перефокусировка
|
|
71
|
+
3. Click по X — для закрытия через Snapshot + координаты
|
|
72
|
+
|
|
73
|
+
**Не повторяй тот же Shortcut** — если не сработал первый раз, повтор не поможет.
|
|
74
|
+
|
|
75
|
+
## Ctrl+Click альтернативы
|
|
76
|
+
|
|
77
|
+
| Задача | Альтернатива |
|
|
78
|
+
|--------|-------------|
|
|
79
|
+
| Go to Definition | F12 |
|
|
80
|
+
| Open Link | Command Palette → `Open Link` |
|
|
81
|
+
| Открыть файл по пути | `Ctrl+P` → ввести путь → Enter |
|
|
82
|
+
|
|
83
|
+
**Если TC требует Ctrl+Click — отметь BLOCKED** с причиной «MCP не поддерживает модификаторы + Click».
|
|
84
|
+
|
|
85
|
+
## Советы
|
|
86
|
+
|
|
87
|
+
- **Артефакты — в `reports/`**, не в корень проекта
|
|
88
|
+
- **Верификация перед действием** — убедись через Snapshot что элемент существует, не полагайся на визуальную интерпретацию
|
|
89
|
+
- **`shortcut` для навигации** — Command Palette быстрее поиска кнопок мышью
|
|
90
|
+
- **`shell` для подготовки** — создание тестовых файлов, запуск приложений с параметрами
|
|
91
|
+
|
|
92
|
+
<!-- РАСШИРЕНИЕ: добавляй advanced-паттерны ниже -->
|