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,97 @@
|
|
|
1
|
+
# Воркфлоу: TEST — Авторство тест-кейса регрессионного теста скила
|
|
2
|
+
|
|
3
|
+
> **⚠️ DRAFT — не активирован.** Подключение к маршрутизации SKILL.md произойдёт в отдельной задаче.
|
|
4
|
+
|
|
5
|
+
Воркфлоу описывает, как коуч создаёт регрессионный тест для скила при обнаружении инцидента.
|
|
6
|
+
|
|
7
|
+
**Знания:** загрузи `knowledge/test-authorship.md` перед выполнением шагов.
|
|
8
|
+
|
|
9
|
+
## Шаги 1–5: Подготовительный этап
|
|
10
|
+
|
|
11
|
+
### Шаг 1. CHG-идентификатор не нужен
|
|
12
|
+
|
|
13
|
+
Тест-кейс — это не изменение скила, а фиксация инцидента. Поэтому:
|
|
14
|
+
|
|
15
|
+
- **Не создавай** CHG-запись в `applied_changes[]` бэклога.
|
|
16
|
+
- Инцидент фиксируется через поле `origin` непосредственно в YAML тест-кейса.
|
|
17
|
+
|
|
18
|
+
### Шаг 2. Получить ID тест-кейса
|
|
19
|
+
|
|
20
|
+
Вызови скрипт из корня проекта:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
node .workflow/src/scripts/get-next-test-id.js --skill <имя-скила>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Скрипт вернёт следующий свободный ID в формате `TC-<SKILL>-NNN`.
|
|
27
|
+
Используй именно этот ID — не генерируй вручную.
|
|
28
|
+
|
|
29
|
+
### Шаг 3. Выбор слоёв (L0 / L1 / L2)
|
|
30
|
+
|
|
31
|
+
Полная логика выбора — в `knowledge/test-authorship.md`, раздел «Дерево выбора слоя».
|
|
32
|
+
|
|
33
|
+
Краткие правила:
|
|
34
|
+
|
|
35
|
+
| Слой | Когда использовать |
|
|
36
|
+
|------|--------------------|
|
|
37
|
+
| **L0** static | **Всегда** — если нужно проверить наличие инварианта в записанном файле. |
|
|
38
|
+
| **L1** deterministic | Когда у output есть наблюдаемая сигнатура (структура YAML/JSON, формат ID, наличие ключей). |
|
|
39
|
+
| **L2** rubric | Когда нужно проверить **принцип рассуждения** агента, а не конкретный текст. |
|
|
40
|
+
|
|
41
|
+
Правило минимума: сомневаешься между L0 и L1 — выбирай L0. L2 — только если L0/L1 физически неприменимы.
|
|
42
|
+
|
|
43
|
+
### Шаг 4. Построить фикстуру
|
|
44
|
+
|
|
45
|
+
- Возьми **реальный артефакт**, в котором произошёл инцидент (лог, тикет, отчёт).
|
|
46
|
+
- Вырежи **±20 строк вокруг инцидента** — не копируй весь файл.
|
|
47
|
+
- Для log-фикстур: только шаги, где произошёл инцидент + 5 строк контекста до и после.
|
|
48
|
+
- Критерий минимума: убери строку → тест перестаёт проверять нужное поведение? Если нет — строка лишняя.
|
|
49
|
+
|
|
50
|
+
Сохрани фикстуру в `tests/fixtures/` скила.
|
|
51
|
+
|
|
52
|
+
### Шаг 5. Написать YAML тест-кейса и проверить `index.yaml`
|
|
53
|
+
|
|
54
|
+
1. Создай файл `tests/cases/<ID>.yaml` по структуре существующих кейсов в `tests/cases/`.
|
|
55
|
+
2. В поле `origin` укажи ID инцидента (CHG или ссылку на артефакт).
|
|
56
|
+
3. Проверь `tests/index.yaml` скила:
|
|
57
|
+
- Содержит ли он актуальный список `target_agents[]`?
|
|
58
|
+
- Если список устарел — обнови его, сверившись с `pipeline.yaml` проекта.
|
|
59
|
+
4. Добавь запись о новом кейсе в секцию `cases:` файла `tests/index.yaml`.
|
|
60
|
+
|
|
61
|
+
## Шаги 6–9: Исполнительный этап
|
|
62
|
+
|
|
63
|
+
### Шаг 6. Прогон тестов
|
|
64
|
+
|
|
65
|
+
Запусти скрипт из корня проекта:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
node .workflow/src/scripts/run-skill-tests.js --skill <name> --relevant <TC-NNN>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Где `<name>` — имя скила, `<TC-NNN>` — ID тест-кейса, созданного на шаге 2.
|
|
72
|
+
|
|
73
|
+
### Шаг 7. Проверка verdict из `---RESULT---`
|
|
74
|
+
|
|
75
|
+
Прочитай поле `verdict` в блоке `---RESULT---` вывода скрипта:
|
|
76
|
+
|
|
77
|
+
| Verdict | Действие |
|
|
78
|
+
|---------|----------|
|
|
79
|
+
| `ready_for_user_review` | Перейти к шагу 8. |
|
|
80
|
+
| `regression_detected` | Доработать скил или тест, вернуться к шагу 6. |
|
|
81
|
+
| `relevant_case_failed` | Доработать скил или тест, вернуться к шагу 6. |
|
|
82
|
+
| `no_baseline_failures` | Доработать скил или тест, вернуться к шагу 6. |
|
|
83
|
+
|
|
84
|
+
### Шаг 8. Сообщить пользователю
|
|
85
|
+
|
|
86
|
+
Сообщи пользователю:
|
|
87
|
+
|
|
88
|
+
- **Список затронутых файлов:** `SKILL.md` и/или `workflows/`, `tests/cases/{id}.yaml`, `tests/index.yaml`, `tests/cases/{id}/current/`
|
|
89
|
+
- **Verdict** из шага 7.
|
|
90
|
+
|
|
91
|
+
**Остановиться.** Коуч не делает ничего сверх этого — коммит на стороне пользователя (шаг 9).
|
|
92
|
+
|
|
93
|
+
### Шаг 9. Коммит делает исключительно пользователь
|
|
94
|
+
|
|
95
|
+
Коуч **не выполняет** `git add`, `git commit`, `git push`, `git checkout`, `git reset` ни в каком виде.
|
|
96
|
+
|
|
97
|
+
В `applied_changes[]` бэклога **не пишем** — история правки живёт в git (скил + тест коммитятся пользователем одним коммитом).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Create Plan — Agent Skill
|
|
2
|
+
|
|
3
|
+
Архитектор планов. Создаёт самодостаточные стратегические планы из ТЗ, спецификаций и задач. План содержит все данные, необходимые исполнителям — SMART-цели, справочные данные, scope, риски и критерии успеха.
|
|
4
|
+
|
|
5
|
+
## Структура
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
create-plan/
|
|
9
|
+
├── SKILL.md # Ядро: роль, маршрутизация, принципы
|
|
10
|
+
├── README.md # Документация
|
|
11
|
+
├── algorithms/
|
|
12
|
+
│ └── risk-assessment.md # Матрица рисков, критерии, митигация
|
|
13
|
+
├── workflows/
|
|
14
|
+
│ └── create.md # Создание плана из ТЗ / спецификации
|
|
15
|
+
└── knowledge/
|
|
16
|
+
├── plan-completeness.md # Чеклист полноты плана
|
|
17
|
+
├── plan-lifecycle.md # Статусы планов
|
|
18
|
+
└── task-verification-pairs.md # Парные задачи верификации
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Как это работает
|
|
22
|
+
|
|
23
|
+
1. Скил получает запрос на создание плана (из ТЗ, спецификации или задачи)
|
|
24
|
+
2. Загружает `knowledge/plan-completeness.md` — чеклист полноты
|
|
25
|
+
3. Определяет сценарий и загружает `workflows/create.md`
|
|
26
|
+
4. Извлекает все конкретные данные из входного документа (credentials, URLs, параметры)
|
|
27
|
+
5. Формирует план: SMART-цели, справочные данные, scope, задачи, риски, критерии успеха
|
|
28
|
+
6. Проверяет план по чеклисту полноты
|
|
29
|
+
7. Сохраняет результат в `.workflow/plans/current/PLAN-{NNN}.md`
|
|
30
|
+
|
|
31
|
+
## Как расширять
|
|
32
|
+
|
|
33
|
+
### Новый тип воркфлоу
|
|
34
|
+
1. Создай файл в `workflows/{type}.md`
|
|
35
|
+
2. Добавь запись в таблицу маршрутизации в `SKILL.md`
|
|
36
|
+
|
|
37
|
+
### Новый knowledge-модуль
|
|
38
|
+
1. Создай файл в `knowledge/{module}.md`
|
|
39
|
+
2. Добавь запись в таблицу загрузки знаний в `SKILL.md`
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-plan
|
|
3
|
+
description: >
|
|
4
|
+
Создать стратегический план для проекта. Используй когда нужно спланировать
|
|
5
|
+
новую функциональность, проект или задачу. Создаёт самодостаточный файл плана
|
|
6
|
+
в .workflow/plans/current/ по шаблону со SMART-целями, справочными данными,
|
|
7
|
+
scope, рисками и критериями успеха. План содержит ВСЕ данные, необходимые
|
|
8
|
+
исполнителям — без обращения к внешним документам.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Создание плана
|
|
12
|
+
|
|
13
|
+
Этот skill создаёт стратегический план для достижения цели.
|
|
14
|
+
|
|
15
|
+
## Роль
|
|
16
|
+
|
|
17
|
+
Ты — архитектор планов. Твоя задача — создать **самодостаточный** план, по которому агенты-исполнители смогут выполнить все задачи **без обращения к исходному ТЗ или другим внешним документам**.
|
|
18
|
+
|
|
19
|
+
**Ты делаешь:** извлечение всех конкретных данных из входного документа, формулирование SMART-целей, определение scope, декомпозиция на задачи с полными деталями, анализ рисков, определение критериев успеха.
|
|
20
|
+
|
|
21
|
+
**Ты НЕ делаешь:** декомпозицию на тикеты (это задача скила декомпозиции), выполнение задач, принятие решений за стейкхолдера по scope.
|
|
22
|
+
|
|
23
|
+
## Когда использовать
|
|
24
|
+
|
|
25
|
+
- Начинается новый проект или крупная задача
|
|
26
|
+
- Нужно переосмыслить направление после отчёта
|
|
27
|
+
- Требуется структурированный план с декомпозицией
|
|
28
|
+
|
|
29
|
+
## Маршрутизация
|
|
30
|
+
|
|
31
|
+
| Сценарий | Воркфлоу |
|
|
32
|
+
|----------|----------|
|
|
33
|
+
| Создание плана из ТЗ / спецификации / задачи | → `workflows/create.md` |
|
|
34
|
+
|
|
35
|
+
## Загрузка знаний
|
|
36
|
+
|
|
37
|
+
| Модуль | Когда загружать |
|
|
38
|
+
|--------|----------------|
|
|
39
|
+
| `knowledge/plan-completeness.md` | **ВСЕГДА** — чеклист полноты плана, правила извлечения данных из ТЗ |
|
|
40
|
+
| `knowledge/plan-lifecycle.md` | **ВСЕГДА** — статусы планов и правила их установки |
|
|
41
|
+
| `knowledge/task-verification-pairs.md` | При наличии в плане задач тестирования/верификации ИЛИ задач, изменяющих код — правила TC-структуры: data assertions, entry points, config variations, persistence и парные задачи верификации |
|
|
42
|
+
| `../shared/*` | **Перед началом работы** проверь `../shared/README.md` — загрузи модули, релевантные текущему плану (карта UI продукта, предметные знания и др.) |
|
|
43
|
+
|
|
44
|
+
## Загрузка алгоритмов
|
|
45
|
+
|
|
46
|
+
Подгружай из `algorithms/` когда нужен формализованный метод:
|
|
47
|
+
|
|
48
|
+
| Алгоритм | Когда загружать |
|
|
49
|
+
|----------|----------------|
|
|
50
|
+
| `algorithms/risk-assessment.md` | При создании секции рисков плана — матрица вероятность × влияние, категории, митигация |
|
|
51
|
+
|
|
52
|
+
## Принципы
|
|
53
|
+
|
|
54
|
+
1. **Самодостаточность** — план содержит ВСЕ данные для исполнения. Если данных нет в плане — их нет у исполнителей. Никаких ссылок "см. ТЗ" или "URL уже создан".
|
|
55
|
+
2. **Конкретность** — credentials, URLs, параметры, конфигурации, code blocks — всё это переносится в план как есть.
|
|
56
|
+
3. **Полнота задач** — каждая задача содержит: какие файлы затрагиваются, какие значения использовать, edge cases, предупреждения.
|
|
57
|
+
4. **Самопроверка** — перед сохранением обязательна проверка по чеклисту из `knowledge/plan-completeness.md`.
|
|
58
|
+
5. **SMART-цели** — цель плана конкретна, измерима, достижима, релевантна, ограничена во времени.
|
|
59
|
+
6. **Верификация изменений кода** — каждая задача, изменяющая код продукта, сопровождается парными задачами: ручная проверка и актуализация автотестов. См. `knowledge/task-verification-pairs.md`.
|
|
60
|
+
7. **Актуализация shared knowledge** — если план меняет внешнее поведение продукта (новые команды, views, настройки, API, горячие клавиши, UI-элементы), добавь в план задачу на обновление соответствующих модулей в `../shared/`. Устаревший shared knowledge приводит к ошибкам во всех скилах-потребителях (планирование нереалистичных тест-кейсов, слепое тестирование, лишние MCP-вызовы).
|
|
61
|
+
8. **Гранулярность задач** — каждая задача плана должна описывать **одно действие** (один глагол) над **одним объектом**. Задача «Исправить X — сигнатура, порядок, удаление Y» содержит 3 независимых действия и должна быть разбита на 3 задачи уже на этапе плана. Декомпозитор работает со структурой плана как с якорем — крупная задача провоцирует маппинг «1 задача = 1 тикет», даже если чеклист атомарности требует разбиения. **Self-check:** перед сохранением плана для каждой задачи проверь: содержит ли название задачи 2+ глагола через запятую, «и», «а также», «плюс»? Содержат ли нумерованные шаги независимые (параллельные) действия? Если да — разбей задачу в плане.
|
|
62
|
+
|
|
63
|
+
## Правило назначения исполнителей
|
|
64
|
+
|
|
65
|
+
Не назначай HUMAN, если агент может выполнить задачу автономно. Агент имеет доступ к:
|
|
66
|
+
- **Playwright MCP-browser** — открывает URL в браузере, включая аутентифицированные сервисы (если сессия активна)
|
|
67
|
+
- **WebSearch / WebFetch** — публичные данные
|
|
68
|
+
- **Файлы проекта** — данные в корне
|
|
69
|
+
|
|
70
|
+
HUMAN назначается только когда агент **подтверждённо** не может получить доступ (2FA, оплата, физические действия). При неопределённости — назначай агента с `fallback: HUMAN`.
|
|
71
|
+
|
|
72
|
+
## Формат вывода
|
|
73
|
+
|
|
74
|
+
- Русский язык
|
|
75
|
+
- Markdown с таблицами и code blocks
|
|
76
|
+
- Секция "Справочные данные" обязательна при создании из ТЗ
|
|
77
|
+
- Все конкретные значения — в code blocks или таблицах
|
|
78
|
+
|
|
79
|
+
## Границы компетенции
|
|
80
|
+
|
|
81
|
+
- **Декомпозиция на тикеты** → скил декомпозиции
|
|
82
|
+
- **Анализ отчётов** → скил анализа отчётов
|
|
83
|
+
- **Выполнение задач** → скил выполнения задач
|
|
84
|
+
|
|
85
|
+
## Пример использования
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
Создай план на основе ТЗ dev-tasks-plan007.md
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Результат
|
|
92
|
+
|
|
93
|
+
Файл `.workflow/plans/current/PLAN-{NNN}.md` с:
|
|
94
|
+
- Целью и контекстом
|
|
95
|
+
- **Справочными данными** (все credentials, URLs, параметры, конфигурации из ТЗ)
|
|
96
|
+
- Scope (включено/исключено)
|
|
97
|
+
- Высокоуровневыми задачами с конкретными деталями
|
|
98
|
+
- Рисками и митигацией
|
|
99
|
+
- Критериями успеха
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
**Регрессионные тесты:** `tests/index.yaml`. Прогон: `node .workflow/src/scripts/run-skill-tests.js --skill create-plan`
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Алгоритм: Оценка рисков плана
|
|
2
|
+
|
|
3
|
+
## Вход
|
|
4
|
+
|
|
5
|
+
Описание задач плана, контекст проекта, внешние зависимости.
|
|
6
|
+
|
|
7
|
+
## Матрица рисков
|
|
8
|
+
|
|
9
|
+
Риск = **Вероятность (1–3)** × **Влияние (1–3)**. Итоговый уровень:
|
|
10
|
+
|
|
11
|
+
| Вероятность \ Влияние | 1 (Низкое) | 2 (Среднее) | 3 (Высокое) |
|
|
12
|
+
|----------------------:|:----------:|:-----------:|:-----------:|
|
|
13
|
+
| **3 (Высокая)** | MEDIUM (3) | HIGH (6) | CRITICAL (9)|
|
|
14
|
+
| **2 (Средняя)** | LOW (2) | MEDIUM (4) | HIGH (6) |
|
|
15
|
+
| **1 (Низкая)** | LOW (1) | LOW (2) | MEDIUM (3) |
|
|
16
|
+
|
|
17
|
+
## Критерии вероятности
|
|
18
|
+
|
|
19
|
+
| Уровень | Определение | Пример |
|
|
20
|
+
|:-------:|-------------|--------|
|
|
21
|
+
| 1 | Маловероятно, требует стечения обстоятельств | Сторонний API изменит контракт во время спринта |
|
|
22
|
+
| 2 | Возможно, случалось ранее или есть предпосылки | Интеграция потребует доработки из-за недокументированного поведения |
|
|
23
|
+
| 3 | Почти наверняка, есть объективные признаки | Задача зависит от компонента, находящегося в активной разработке другой командой |
|
|
24
|
+
|
|
25
|
+
## Критерии влияния
|
|
26
|
+
|
|
27
|
+
| Уровень | Определение | Пример |
|
|
28
|
+
|:-------:|-------------|--------|
|
|
29
|
+
| 1 | Задержка ≤1 дня, обходной путь очевиден | Мелкий баг в утилите, можно пропатчить на месте |
|
|
30
|
+
| 2 | Задержка 2–5 дней или частичное снижение качества | Нужен рефакторинг смежного модуля для интеграции |
|
|
31
|
+
| 3 | Блокер: задержка >5 дней, пересмотр scope или архитектуры | Ключевая зависимость недоступна, альтернатива требует переделки |
|
|
32
|
+
|
|
33
|
+
## Категории рисков
|
|
34
|
+
|
|
35
|
+
При идентификации рисков проверь каждую категорию:
|
|
36
|
+
|
|
37
|
+
| Категория | На что обращать внимание |
|
|
38
|
+
|-----------|--------------------------|
|
|
39
|
+
| **Технические** | Незнакомые технологии, сложные интеграции, legacy-код без тестов, производительность |
|
|
40
|
+
| **Ресурсные** | Доступность исполнителей, context budget агентов, необходимость ручных действий (HUMAN) |
|
|
41
|
+
| **Зависимости** | Внешние API, сторонние библиотеки, блокирующие задачи других команд, merge freeze |
|
|
42
|
+
| **Внешние** | Изменения требований, compliance-ограничения, доступность сред (staging, sandbox) |
|
|
43
|
+
|
|
44
|
+
## Стратегии митигации
|
|
45
|
+
|
|
46
|
+
| Уровень риска | Действие |
|
|
47
|
+
|:-------------:|----------|
|
|
48
|
+
| CRITICAL (6–9) | Обязательная митигация в плане. Определи fallback-вариант и условие переключения |
|
|
49
|
+
| HIGH (4–6) | Митигация рекомендована. Укажи план Б или запасной подход |
|
|
50
|
+
| MEDIUM (3–4) | Упомяни в секции рисков. Митигация по необходимости |
|
|
51
|
+
| LOW (1–2) | Фиксируй только если влияние = 3 (может перейти в MEDIUM при росте вероятности) |
|
|
52
|
+
|
|
53
|
+
## Применение
|
|
54
|
+
|
|
55
|
+
1. Составь список задач плана
|
|
56
|
+
2. Для каждой задачи пройди по 4 категориям — идентифицируй конкретные риски
|
|
57
|
+
3. Оцени вероятность и влияние каждого риска по критериям выше
|
|
58
|
+
4. Рассчитай уровень по матрице
|
|
59
|
+
5. Для CRITICAL/HIGH — опиши митигацию и fallback
|
|
60
|
+
6. Запиши в секцию «Риски и зависимости» плана
|
|
61
|
+
|
|
62
|
+
### Пример
|
|
63
|
+
|
|
64
|
+
> **Риск:** Sandbox нестабилен — MCP disconnect при длительных сессиях
|
|
65
|
+
> **Категория:** Техническая / Зависимости
|
|
66
|
+
> **Вероятность:** 3 (подтверждено инцидентами QA-004, QA-006)
|
|
67
|
+
> **Влияние:** 2 (задержка 2-3 дня, обходной путь — restart + continuation)
|
|
68
|
+
> **Уровень:** HIGH (6)
|
|
69
|
+
> **Митигация:** Ограничить сессию до N тест-кейсов, стратегия continuation
|
|
70
|
+
|
|
71
|
+
## Выход
|
|
72
|
+
|
|
73
|
+
Таблица рисков в плане: риск, категория, вероятность, влияние, уровень, митигация.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Полнота плана: чеклист для самопроверки
|
|
2
|
+
|
|
3
|
+
План — это **единственный источник правды** для исполнителей. Если данных нет в плане, их нет у агентов. Исполнители **не имеют доступа** к исходному ТЗ, переписке, устным договорённостям.
|
|
4
|
+
|
|
5
|
+
## Принцип: план = самодостаточный документ
|
|
6
|
+
|
|
7
|
+
> Агент-исполнитель, получив тикет из плана, должен иметь **всё необходимое** для реализации без обращения к другим документам.
|
|
8
|
+
|
|
9
|
+
## Чеклист извлечения данных из ТЗ
|
|
10
|
+
|
|
11
|
+
При создании плана на основе внешнего документа (ТЗ, спецификация, RFC, задача от стейкхолдера) — **извлеки и перенеси в план ВСЕ конкретные данные**:
|
|
12
|
+
|
|
13
|
+
### Обязательно переносить
|
|
14
|
+
|
|
15
|
+
| Категория | Примеры | Куда в плане |
|
|
16
|
+
|-----------|---------|-------------|
|
|
17
|
+
| **Credentials / ключи / токены** | API keys, secret keys, measurement IDs, tokens | Секция "Справочные данные" |
|
|
18
|
+
| **URLs и endpoints** | API endpoints, формы, debug URLs, webhook URLs | Секция "Справочные данные" |
|
|
19
|
+
| **Конфигурационные значения** | Константы, интервалы, лимиты, имена alarm'ов, storage keys | Секция "Справочные данные" |
|
|
20
|
+
| **Permissions / манифесты** | JSON-фрагменты, YAML-конфигурации, строки для конфигов | Секция "Справочные данные" |
|
|
21
|
+
| **Карты файлов** | Какой код → в какой файл → при каком триггере → с какими параметрами | Секция "Справочные данные" (таблица) |
|
|
22
|
+
| **Параметры событий/запросов** | Имена, типы, описания, допустимые значения каждого параметра | Секция "Справочные данные" (таблица) |
|
|
23
|
+
| **Схемы данных** | Storage keys, типы полей, форматы, валидация | Секция "Справочные данные" |
|
|
24
|
+
| **Бизнес-логика и edge cases** | Порядок операций, условия (ДО/ПОСЛЕ), only-if логика | Описание задач |
|
|
25
|
+
| **Troubleshooting** | Типичные ошибки, причины, решения | Задача тестирования |
|
|
26
|
+
| **Внешние ресурсы** | Описания форм, структура опросов, тексты | Секция "Справочные данные" |
|
|
27
|
+
|
|
28
|
+
### НЕ переносить (оставить в scope исключений)
|
|
29
|
+
|
|
30
|
+
- Инструкции по настройке внешних сервисов (если это ручная работа вне scope)
|
|
31
|
+
- Общие описания подходов (если они очевидны из контекста)
|
|
32
|
+
- Дублирование одних и тех же данных в нескольких местах плана
|
|
33
|
+
|
|
34
|
+
## Красные флаги неполного плана
|
|
35
|
+
|
|
36
|
+
Если в плане встречаются следующие формулировки — это сигнал, что данные не перенесены:
|
|
37
|
+
|
|
38
|
+
| Формулировка в плане | Проблема |
|
|
39
|
+
|---------------------|----------|
|
|
40
|
+
| "URL из ТЗ" / "URL уже создан" | URL не указан — исполнитель его не знает |
|
|
41
|
+
| "см. документацию" / "описано в спецификации" | Исполнитель не имеет доступа к спецификации |
|
|
42
|
+
| "настроить credentials" (без значений) | Какие credentials? Где взять? |
|
|
43
|
+
| "добавить параметры" (без списка) | Какие параметры? Какие типы? |
|
|
44
|
+
| "интегрировать событие" (без деталей) | Какое имя? Какие params? В какой файл? При каком триггере? |
|
|
45
|
+
| "обновить конфиг" (без конкретного JSON/YAML) | Что именно добавить? |
|
|
46
|
+
|
|
47
|
+
## Секция "Справочные данные" в плане
|
|
48
|
+
|
|
49
|
+
Каждый план, основанный на внешнем ТЗ, **должен содержать** секцию "Справочные данные" между "Контекст" и "Scope". Эта секция — справочник для всех задач плана.
|
|
50
|
+
|
|
51
|
+
Структура секции:
|
|
52
|
+
```markdown
|
|
53
|
+
## Справочные данные
|
|
54
|
+
|
|
55
|
+
### {Подсекция по категории}
|
|
56
|
+
{Таблицы, code blocks, конкретные значения}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Подсекции определяются содержимым ТЗ. Типичные:
|
|
60
|
+
- Credentials / API keys
|
|
61
|
+
- URLs и endpoints
|
|
62
|
+
- Карта событий / API / маршрутов
|
|
63
|
+
- Схема данных (storage, DB, state)
|
|
64
|
+
- Конфигурации (manifests, permissions, configs)
|
|
65
|
+
- Константы и интервалы
|
|
66
|
+
|
|
67
|
+
<!-- РАСШИРЕНИЕ: добавляй новые категории данных для извлечения ниже -->
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Жизненный цикл статусов плана
|
|
2
|
+
|
|
3
|
+
Каждый план проходит через определённые статусы. Скил `create-plan` должен знать их, чтобы корректно устанавливать начальный статус и не использовать невалидные значения.
|
|
4
|
+
|
|
5
|
+
## Статусы
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
draft → approved → active → completed → archived
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
| Статус | Описание | Кто устанавливает |
|
|
12
|
+
|--------|----------|-------------------|
|
|
13
|
+
| `draft` | Черновик. План создан, но ещё не утверждён стейкхолдером | Скил `create-plan` при создании |
|
|
14
|
+
| `approved` | Утверждён стейкхолдером. Готов к декомпозиции на тикеты | Стейкхолдер после ревью плана |
|
|
15
|
+
| `active` | В работе. Тикеты созданы и прошли машинную проверку атомарности | Pipeline: стадия `verify-atomicity` при `status: passed` (не декомпозитор) |
|
|
16
|
+
| `completed` | Все тикеты плана завершены | Pipeline после завершения всех тикетов |
|
|
17
|
+
| `archived` | Архивирован. Перемещён в `plans/archive/` | Команда `workflow.archivePlan` |
|
|
18
|
+
|
|
19
|
+
## Правила для скила create-plan
|
|
20
|
+
|
|
21
|
+
1. **Всегда создавай план со статусом `draft`** — план должен пройти ревью и утверждение стейкхолдером
|
|
22
|
+
2. **Не ставь `approved` автоматически** — утверждение делает стейкхолдер
|
|
23
|
+
3. **Не ставь `active`** — этот статус устанавливается после декомпозиции
|
|
24
|
+
|
|
25
|
+
## Связь с pipeline
|
|
26
|
+
|
|
27
|
+
Скрипт `check-plan-decomposed.js` сканирует планы в `plans/current/` и декомпозирует **только** планы со статусом `approved`. Планы в `draft` пропускаются.
|
|
28
|
+
|
|
29
|
+
Это значит: пока стейкхолдер не утвердит план (`status: approved`), pipeline **не будет** его декомпозировать.
|
|
30
|
+
|
|
31
|
+
**Переход `approved → active`** выполняется стадией `verify-atomicity` пайплайна (`src/skills/decompose-plan/scripts/verify-atomicity.js`), **не** декомпозитором и **не** скилом `create-plan`. Условие перехода: все тикеты плана прошли машинную проверку атомарности (`status: passed`). Если атомарность упала и счётчик попыток `atomicity_check_attempts` достиг `max: 3` — план остаётся в `approved`, в работу не уходит; стадия `increment-atomicity-counter` передаёт управление в `check-conditions` без активации плана.
|
|
32
|
+
|
|
33
|
+
<!-- РАСШИРЕНИЕ: добавляй новые статусы и правила ниже -->
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Парные задачи верификации
|
|
2
|
+
|
|
3
|
+
Каждая задача плана, которая изменяет код продукта, должна сопровождаться задачами верификации. Набор парных задач зависит от характера изменения.
|
|
4
|
+
|
|
5
|
+
## Правило
|
|
6
|
+
|
|
7
|
+
Если задача плана предполагает **изменение кода продукта** (исправление, доработка, новая функциональность), определи для неё необходимые задачи верификации:
|
|
8
|
+
|
|
9
|
+
1. **Актуализация автотестов** (обязательна всегда) — добавление или обновление unit/integration-тестов, покрывающих изменённое поведение
|
|
10
|
+
2. **Ручная проверка** (если изменение наблюдаемо пользователем) — тестировщик вручную проверяет исправление по шагам воспроизведения или acceptance criteria
|
|
11
|
+
|
|
12
|
+
## Определение набора парных задач
|
|
13
|
+
|
|
14
|
+
Для каждой задачи, изменяющей код, архитектор определяет какие верификационные задачи нужны, задавая два вопроса:
|
|
15
|
+
|
|
16
|
+
1. **Может ли пользователь заметить изменение?** (видимый эффект в UI, поведении, выводе) → если да, нужна **ручная проверка**
|
|
17
|
+
2. **Можно ли покрыть изменение автоматическим тестом?** (есть вход/выход, поведение формализуемо) → если да, нужна **актуализация автотестов**
|
|
18
|
+
|
|
19
|
+
| Ответы на вопросы | Автотесты | Ручная проверка |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Пользователь заметит + можно покрыть тестом | Да | Да |
|
|
22
|
+
| Пользователь заметит + нельзя покрыть тестом (чисто визуальное) | Нет | Да |
|
|
23
|
+
| Пользователь не заметит + можно покрыть тестом | Да | Нет |
|
|
24
|
+
| Пользователь не заметит + нельзя покрыть тестом | Обосновать в плане, почему верификация не нужна |
|
|
25
|
+
|
|
26
|
+
Если не очевидно — включай обе задачи (лучше проверить лишний раз).
|
|
27
|
+
|
|
28
|
+
## Структура группы задач
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
# Полная группа (изменение с наблюдаемым эффектом):
|
|
32
|
+
Задача N: Изменение кода (исполнитель: agent)
|
|
33
|
+
Задача N+1: Ручная проверка задачи N (исполнитель: agent, зависимость: задача N)
|
|
34
|
+
Задача N+2: Актуализация автотестов для задачи N (исполнитель: agent, зависимость: задача N)
|
|
35
|
+
|
|
36
|
+
# Сокращённая группа (внутреннее изменение без UI-эффекта):
|
|
37
|
+
Задача N: Изменение кода (исполнитель: agent)
|
|
38
|
+
Задача N+1: Актуализация автотестов для задачи N (исполнитель: agent, зависимость: задача N)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Когда применять
|
|
42
|
+
|
|
43
|
+
- **Применяется:** задача изменяет исходный код продукта (логику, UI, стили, конфигурацию продукта)
|
|
44
|
+
- **НЕ применяется:** задача изменяет только документацию, тестовые утилиты (mock, test helpers), workflow-артефакты, или является чисто исследовательской
|
|
45
|
+
|
|
46
|
+
## Исключения
|
|
47
|
+
|
|
48
|
+
Объединение ручных проверок нескольких задач в одну сводную задачу **по умолчанию запрещено**. Каждая задача изменения кода с наблюдаемым эффектом получает **свою** парную задачу ручной проверки рядом — не в конце плана.
|
|
49
|
+
|
|
50
|
+
**Когда сводная задача допустима** (все условия одновременно):
|
|
51
|
+
1. Объединяемые задачи изменяют **один и тот же UI-объект** (одна view, один компонент, один экран) — а не несколько независимых областей продукта
|
|
52
|
+
2. Каждая отдельная проверка тривиальна (1-2 шага) — иначе сводный сценарий распухает и теряет фокус
|
|
53
|
+
3. В плане **явно перечислены** ID объединяемых задач и обоснование, почему раздельная проверка избыточна
|
|
54
|
+
|
|
55
|
+
**Антипаттерн:** одна задача «Ручная проверка задач 1-7» в конце плана, охватывающая разные UI-области. Это не сводная проверка — это пропуск парных задач. Декомпозитор не сможет создать корректные парные тикеты, верификация теряет связь с исходной задачей, ревью затрудняется.
|
|
56
|
+
|
|
57
|
+
## Self-check перед сохранением плана
|
|
58
|
+
|
|
59
|
+
Перед записью файла плана пройди по списку задач и для **каждой** задачи, изменяющей код продукта с наблюдаемым эффектом, ответь:
|
|
60
|
+
|
|
61
|
+
1. Есть ли рядом с этой задачей парная задача ручной проверки именно для неё?
|
|
62
|
+
2. Если ручная проверка вынесена в сводную задачу — выполнены ли все три условия из секции «Исключения»?
|
|
63
|
+
3. Если не выполнены — разбей сводную задачу на парные и помести каждую рядом с её основной задачей.
|
|
64
|
+
|
|
65
|
+
Если задача изменения кода найдена без парной ручной проверки и без обоснованного исключения — план **не готов к сохранению**.
|
|
66
|
+
|
|
67
|
+
## Data assertions в QA-задачах
|
|
68
|
+
|
|
69
|
+
Каждый тест-кейс в QA-задаче плана должен содержать **ожидаемое значение**, а не только ожидаемое наличие элемента.
|
|
70
|
+
|
|
71
|
+
### Правило
|
|
72
|
+
|
|
73
|
+
Вместо «компонент X находится в состоянии Y» → «компонент X показывает конкретное значение `Z`».
|
|
74
|
+
|
|
75
|
+
### Критерий применения
|
|
76
|
+
|
|
77
|
+
Задай вопрос: **«Может ли значение измениться между запусками или зависит от входных данных?»**
|
|
78
|
+
|
|
79
|
+
| Ответ | Тип данных | Примеры | Нужен data assertion |
|
|
80
|
+
|-------|-----------|---------|----------------------|
|
|
81
|
+
| Да | Динамические: счётчики, имена, время, параметризованные статусы | «Прогресс: 3 из 5» | ✅ Да |
|
|
82
|
+
| Нет | Статические: иконки, фиксированные подписи, кнопки | «Кнопка «Открыть» видна» | ❌ Нет |
|
|
83
|
+
|
|
84
|
+
### Примеры переформулировки
|
|
85
|
+
|
|
86
|
+
| Слабое (только наличие) | Сильное (data assertion) |
|
|
87
|
+
|-------------------------|--------------------------|
|
|
88
|
+
| «Статус-строка показывает Running» | «Статус-строка показывает `Running \| <имя текущего шага>`» |
|
|
89
|
+
| «История содержит записи» | «История содержит N записей, каждая с временем > 0s» |
|
|
90
|
+
|
|
91
|
+
### Ограничения
|
|
92
|
+
|
|
93
|
+
- Не требуй data assertion для непредсказуемых значений (случайные ID, временны́е метки с миллисекундной точностью) — в таких случаях проверяй формат: «timestamp соответствует паттерну `ISO 8601`»
|
|
94
|
+
- Одна проверка значения на ключевой динамический элемент достаточна — не раздувай тест-кейс
|
|
95
|
+
|
|
96
|
+
<!-- РАСШИРЕНИЕ: добавляй уточнения и исключения ниже -->
|
|
97
|
+
|
|
98
|
+
## Entry points и config variations в QA-задачах
|
|
99
|
+
|
|
100
|
+
При создании QA-задачи для функции/команды необходимо перечислить ВСЕ способы её вызова и все конфигурации, влияющие на поведение.
|
|
101
|
+
|
|
102
|
+
### Правило
|
|
103
|
+
|
|
104
|
+
Для каждой тестируемой функции/команды выполни 4 шага:
|
|
105
|
+
|
|
106
|
+
1. **Определи все entry points** — изучи проектный манифест (конфиг, декларацию расширения/плагина) и код, чтобы найти ВСЕ точки входа (меню, сочетания клавиш, inline UI, контекстное меню, программный API). Каждый entry point — потенциально отдельный TC.
|
|
107
|
+
|
|
108
|
+
2. **Покрой каждый entry point TC-ом** — не ограничивайся «основным» способом запуска. Функция считается протестированной только если каждый задекларированный entry point проверен отдельно.
|
|
109
|
+
|
|
110
|
+
3. **Определи config variations** — найди все конфигурационные параметры, влияющие на поведение функции: допустимые значения, граничные значения, отсутствие опциональных параметров. Каждая значимая вариация — отдельный TC или параметризованный шаг.
|
|
111
|
+
|
|
112
|
+
4. **Добавь persistence TC для stateful-функций** — если функция сохраняет данные (история, кэш, настройки), включи TC: данные сохраняются после перезапуска приложения и корректно накапливаются при повторных запусках.
|
|
113
|
+
|
|
114
|
+
### Критерий применения
|
|
115
|
+
|
|
116
|
+
Задай вопрос: **«Может ли пользователь вызвать эту функцию более чем одним способом?»**
|
|
117
|
+
|
|
118
|
+
| Ответ | Действие |
|
|
119
|
+
|-------|----------|
|
|
120
|
+
| Да | Перечислить все entry points, добавить TC на каждый |
|
|
121
|
+
| Нет | Один TC на единственный entry point |
|
|
122
|
+
|
|
123
|
+
И: **«Зависит ли поведение от конфигурации или сохраняет ли функция данные между сессиями?»**
|
|
124
|
+
|
|
125
|
+
| Ответ | Действие |
|
|
126
|
+
|-------|----------|
|
|
127
|
+
| Да, конфиг влияет | TC для каждого значения/варианта, влияющего на поведение |
|
|
128
|
+
| Да, данные сохраняются | TC на persistence и накопление |
|
|
129
|
+
| Нет | Конфигурационные и persistence TC не нужны |
|
|
130
|
+
|
|
131
|
+
### Пример структуры анализа entry points (абстрактный)
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Функция: «Запустить проверку»
|
|
135
|
+
|
|
136
|
+
Entry points (из манифеста и кода):
|
|
137
|
+
[ ] Главное меню → «App: Run Check»
|
|
138
|
+
[ ] Клавиатурное сочетание → Ctrl+Shift+R
|
|
139
|
+
[ ] Контекстное меню → правый клик → «Run Check»
|
|
140
|
+
[ ] Inline-кнопка → иконка ▶ в строке элемента
|
|
141
|
+
[ ] Программный API → app.runCheck()
|
|
142
|
+
|
|
143
|
+
Config variations:
|
|
144
|
+
[ ] mode = fast (по умолчанию)
|
|
145
|
+
[ ] mode = full
|
|
146
|
+
[ ] mode отсутствует (edge case)
|
|
147
|
+
|
|
148
|
+
Persistence (если stateful):
|
|
149
|
+
[ ] История запусков сохраняется после перезапуска
|
|
150
|
+
[ ] Накопление: N запусков → N записей в истории
|
|
151
|
+
```
|