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,248 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { findProjectRoot } from 'workflow-ai/lib/find-root.mjs';
|
|
6
|
+
import { printResult } from 'workflow-ai/lib/utils.mjs';
|
|
7
|
+
|
|
8
|
+
const PROJECT_DIR = findProjectRoot();
|
|
9
|
+
|
|
10
|
+
const DEFAULT_ALLOWLIST = [
|
|
11
|
+
'localhost',
|
|
12
|
+
'127.0.0.1',
|
|
13
|
+
'::1',
|
|
14
|
+
'example.com',
|
|
15
|
+
'example.org',
|
|
16
|
+
'example.net'
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const BASE_PATTERNS = [
|
|
20
|
+
{ name: 'api[_-]?key', regex: /api[_-]?key\s*[:=]\s*\S+/gi },
|
|
21
|
+
{ name: 'bearer', regex: /bearer\s+[A-Za-z0-9._-]+/gi },
|
|
22
|
+
{ name: 'openai-key', regex: /sk-[a-zA-Z0-9]{20,}/gi },
|
|
23
|
+
{ name: 'jwt', regex: /eyJ[a-zA-Z0-9_-]{20,}\.[a-zA-Z0-9_-]+\./gi },
|
|
24
|
+
{ name: 'password', regex: /password\s*[:=]\s*\S+/gi },
|
|
25
|
+
{ name: 'token', regex: /token\s*[:=]\s*\S+/gi }
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const STRICT_PATTERNS = [
|
|
29
|
+
{ name: 'aws-access-key', regex: /AKIA[0-9A-Z]{16}/g },
|
|
30
|
+
{ name: 'github-token', regex: /(gh[pousr]_[a-zA-Z0-9_]{36,})/g },
|
|
31
|
+
{ name: 'slack-token', regex: /xox[baprs]-[0-9a-zA-Z-]+/g },
|
|
32
|
+
{ name: 'private-key', regex: /-----BEGIN (RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/g },
|
|
33
|
+
{ name: 'google-api-key', regex: /AIza[0-9A-Za-z-_]{35}/g },
|
|
34
|
+
{ name: 'stripe-key', regex: /(sk|pk)_(test|live)_[0-9a-zA-Z]{24,}/g },
|
|
35
|
+
{ name: 'sendgrid-key', regex: /SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}/g },
|
|
36
|
+
{ name: 'mailchimp-key', regex: /[a-f0-9]{32}-us[0-9]{1,2}/g },
|
|
37
|
+
{ name: 'generic-secret', regex: /secret\s*[:=]\s*["']?\S+["']?/gi },
|
|
38
|
+
{ name: 'client-secret', regex: /client[_-]?secret\s*[:=]\s*\S+/gi }
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
let PATTERNS = [...BASE_PATTERNS];
|
|
42
|
+
|
|
43
|
+
const IP_PRIVATE_REGEX = /(^127\.)|(^10\.)|(^172\.(1[6-9]|2[0-9]|3[0-1])\.)|(^192\.168\.)|(^::1$)|(^fe80:)|(^fc)|(^fd)/i;
|
|
44
|
+
const DOMAIN_PRIVATE_REGEX = /(localhost|127\.[0-9]+\.[0-9]+\.[0-9]+|::1|example\.(com|org|net))$/i;
|
|
45
|
+
|
|
46
|
+
function parseArgs() {
|
|
47
|
+
const args = process.argv.slice(2);
|
|
48
|
+
const options = {
|
|
49
|
+
path: null,
|
|
50
|
+
strict: false
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
for (let i = 0; i < args.length; i++) {
|
|
54
|
+
if (args[i] === '--path' && args[i + 1]) {
|
|
55
|
+
options.path = args[i + 1];
|
|
56
|
+
i++;
|
|
57
|
+
} else if (args[i] === '--strict') {
|
|
58
|
+
options.strict = true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return options;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function getDefaultScanPaths() {
|
|
66
|
+
const skillsDir = path.join(PROJECT_DIR, 'src', 'skills');
|
|
67
|
+
if (!fs.existsSync(skillsDir)) {
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const paths = [];
|
|
72
|
+
try {
|
|
73
|
+
const skills = fs.readdirSync(skillsDir);
|
|
74
|
+
for (const skill of skills) {
|
|
75
|
+
const fixturesPath = path.join(skillsDir, skill, 'tests', 'fixtures');
|
|
76
|
+
if (fs.existsSync(fixturesPath)) {
|
|
77
|
+
paths.push(fixturesPath);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
} catch (e) {
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return paths;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function isPrivateIp(ip, allowlist) {
|
|
87
|
+
if (!ip) return false;
|
|
88
|
+
const normalized = ip.trim().toLowerCase();
|
|
89
|
+
if (DEFAULT_ALLOWLIST.includes(normalized) || allowlist.includes(normalized)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
return IP_PRIVATE_REGEX.test(normalized);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function isPrivateDomain(domain, allowlist) {
|
|
96
|
+
if (!domain) return false;
|
|
97
|
+
const normalized = domain.trim().toLowerCase();
|
|
98
|
+
if (DEFAULT_ALLOWLIST.includes(normalized) || allowlist.includes(normalized)) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return DOMAIN_PRIVATE_REGEX.test(normalized);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function scanFile(filePath, allowlist = []) {
|
|
105
|
+
const findings = [];
|
|
106
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
107
|
+
const lines = content.split('\n');
|
|
108
|
+
|
|
109
|
+
for (let i = 0; i < lines.length; i++) {
|
|
110
|
+
const line = lines[i];
|
|
111
|
+
const lineNum = i + 1;
|
|
112
|
+
|
|
113
|
+
for (const pattern of PATTERNS) {
|
|
114
|
+
let match;
|
|
115
|
+
pattern.regex.lastIndex = 0;
|
|
116
|
+
while ((match = pattern.regex.exec(line)) !== null) {
|
|
117
|
+
findings.push({
|
|
118
|
+
file: filePath,
|
|
119
|
+
line: lineNum,
|
|
120
|
+
pattern: pattern.name,
|
|
121
|
+
match: match[0]
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const ipRegex = /\b(?:\d{1,3}\.){3}\d{1,3}\b/g;
|
|
127
|
+
let ipMatch;
|
|
128
|
+
while ((ipMatch = ipRegex.exec(line)) !== null) {
|
|
129
|
+
if (isPrivateIp(ipMatch[0], allowlist)) {
|
|
130
|
+
findings.push({
|
|
131
|
+
file: filePath,
|
|
132
|
+
line: lineNum,
|
|
133
|
+
pattern: 'private-ip',
|
|
134
|
+
match: ipMatch[0]
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const domainRegex = /\b(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}\b/g;
|
|
140
|
+
let domainMatch;
|
|
141
|
+
while ((domainMatch = domainRegex.exec(line)) !== null) {
|
|
142
|
+
if (isPrivateDomain(domainMatch[0], allowlist)) {
|
|
143
|
+
findings.push({
|
|
144
|
+
file: filePath,
|
|
145
|
+
line: lineNum,
|
|
146
|
+
pattern: 'private-domain',
|
|
147
|
+
match: domainMatch[0]
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return findings;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function scanDirectory(dirPath, allowlist = []) {
|
|
157
|
+
const findings = [];
|
|
158
|
+
|
|
159
|
+
if (!fs.existsSync(dirPath)) {
|
|
160
|
+
return findings;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
164
|
+
|
|
165
|
+
for (const entry of entries) {
|
|
166
|
+
const fullPath = path.join(dirPath, entry.name);
|
|
167
|
+
|
|
168
|
+
if (entry.isDirectory()) {
|
|
169
|
+
findings.push(...scanDirectory(fullPath, allowlist));
|
|
170
|
+
} else if (entry.isFile()) {
|
|
171
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
172
|
+
const scannable = ['.js', '.json', '.yaml', '.yml', '.txt', '.log', '.md', '.env', '.sh', '.bash', '.ts', '.tsx'];
|
|
173
|
+
if (scannable.includes(ext) || ext === '') {
|
|
174
|
+
findings.push(...scanFile(fullPath, allowlist));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return findings;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function printFindings(findings) {
|
|
183
|
+
if (findings.length === 0) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
console.log('---RESULT---');
|
|
188
|
+
console.log('status: failed');
|
|
189
|
+
console.log('findings:');
|
|
190
|
+
|
|
191
|
+
for (const f of findings) {
|
|
192
|
+
console.log(` - file: ${f.file}`);
|
|
193
|
+
console.log(` line: ${f.line}`);
|
|
194
|
+
console.log(` pattern: "${f.pattern}"`);
|
|
195
|
+
console.log(` match: "${f.match}"`);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
console.log('---RESULT---');
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
async function main() {
|
|
202
|
+
const options = parseArgs();
|
|
203
|
+
const allowlist = [...DEFAULT_ALLOWLIST];
|
|
204
|
+
|
|
205
|
+
if (options.strict) {
|
|
206
|
+
PATTERNS = [...BASE_PATTERNS, ...STRICT_PATTERNS];
|
|
207
|
+
console.log('[Scanner] Running in STRICT mode');
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
let scanPaths = [];
|
|
211
|
+
|
|
212
|
+
if (options.path) {
|
|
213
|
+
const absolutePath = path.isAbsolute(options.path)
|
|
214
|
+
? options.path
|
|
215
|
+
: path.join(PROJECT_DIR, options.path);
|
|
216
|
+
scanPaths.push(absolutePath);
|
|
217
|
+
} else {
|
|
218
|
+
scanPaths = getDefaultScanPaths();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
if (scanPaths.length === 0) {
|
|
222
|
+
console.log('---RESULT---');
|
|
223
|
+
console.log('status: passed');
|
|
224
|
+
console.log('findings:');
|
|
225
|
+
console.log('---RESULT---');
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const allFindings = [];
|
|
230
|
+
|
|
231
|
+
for (const scanPath of scanPaths) {
|
|
232
|
+
const findings = scanDirectory(scanPath, allowlist);
|
|
233
|
+
allFindings.push(...findings);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
printFindings(allFindings);
|
|
237
|
+
|
|
238
|
+
if (allFindings.length > 0) {
|
|
239
|
+
process.exit(1);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
printResult({ status: 'passed', findings: [] });
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
main().catch(e => {
|
|
246
|
+
console.error(`[ERROR] ${e.message}`);
|
|
247
|
+
process.exit(1);
|
|
248
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
function parseTimeout(testCase, index) {
|
|
2
|
+
return testCase.execution?.timeout_s || index.execution?.default_timeout_s || 300;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
function testTimeoutCascade() {
|
|
6
|
+
const index = { execution: { default_timeout_s: 300 } };
|
|
7
|
+
|
|
8
|
+
const testCases = [
|
|
9
|
+
{ name: 'TC-001', execution: { timeout_s: 600 } },
|
|
10
|
+
{ name: 'TC-002', execution: {} },
|
|
11
|
+
{ name: 'TC-003' }
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
const results = testCases.map(tc => ({
|
|
15
|
+
case: tc.name,
|
|
16
|
+
timeout: parseTimeout(tc, index)
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
console.log('Timeout cascade results:', results);
|
|
20
|
+
|
|
21
|
+
const expected = [600, 300, 300];
|
|
22
|
+
const passed = results.every((r, i) => r.timeout === expected[i]);
|
|
23
|
+
|
|
24
|
+
console.log(`Test ${passed ? 'PASSED' : 'FAILED'}`);
|
|
25
|
+
process.exit(passed ? 0 : 1);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
testTimeoutCascade();
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Analyze Report — Agent Skill
|
|
2
|
+
|
|
3
|
+
Аналитик отчётов для workflow-ai. Анализирует отчёты о выполненных задачах, оценивает прогресс по планам, проводит ретроспективы и формирует actionable рекомендации.
|
|
4
|
+
|
|
5
|
+
## Структура
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
analyze-report/
|
|
9
|
+
├── SKILL.md # Ядро: роль, маршрутизация, принципы
|
|
10
|
+
├── README.md # Документация
|
|
11
|
+
├── workflows/
|
|
12
|
+
│ ├── progress.md # Оценка прогресса по плану
|
|
13
|
+
│ └── retrospective.md # Ретроспектива завершённого плана
|
|
14
|
+
├── knowledge/
|
|
15
|
+
│ ├── analysis-frameworks.md # Методологии анализа, метрики, паттерны
|
|
16
|
+
│ └── report-structure.md # Структура отчётов, правила извлечения данных
|
|
17
|
+
├── algorithms/
|
|
18
|
+
│ └── progress-assessment.md # Алгоритм оценки прогресса (формулы, пороги)
|
|
19
|
+
└── templates/
|
|
20
|
+
└── analysis-report.md # Шаблон результата анализа
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Как это работает
|
|
24
|
+
|
|
25
|
+
1. Любой скил проекта создаёт тикет `ANL-*` с запросом на анализ
|
|
26
|
+
2. Analyze Report определяет тип (PROGRESS / RETROSPECTIVE)
|
|
27
|
+
3. Загружает соответствующий workflow
|
|
28
|
+
4. Собирает данные из отчётов, тикетов, планов
|
|
29
|
+
5. Рассчитывает метрики, выявляет проблемы, формулирует рекомендации
|
|
30
|
+
6. Формирует структурированный результат анализа
|
|
31
|
+
|
|
32
|
+
## Как расширять
|
|
33
|
+
|
|
34
|
+
### Новый тип анализа
|
|
35
|
+
1. Создай файл в `workflows/{type}.md`
|
|
36
|
+
2. Добавь запись в таблицу маршрутизации в `SKILL.md`
|
|
37
|
+
|
|
38
|
+
### Новый knowledge-модуль
|
|
39
|
+
1. Создай файл в `knowledge/{module}.md`
|
|
40
|
+
2. Добавь запись в таблицу загрузки знаний в `SKILL.md`
|
|
41
|
+
|
|
42
|
+
### Новый шаблон вывода
|
|
43
|
+
1. Создай файл в `templates/{template}.md`
|
|
44
|
+
2. Добавь запись в таблицу шаблонов в `SKILL.md`
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analyze-report
|
|
3
|
+
description: >
|
|
4
|
+
Скилл аналитика отчётов для workflow-ai. Анализирует отчёты о выполненных
|
|
5
|
+
задачах, оценивает прогресс по планам, проводит ретроспективы завершённых
|
|
6
|
+
планов, выявляет проблемы и формирует actionable рекомендации.
|
|
7
|
+
ticket_prefix: ANL
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Analyze Report — Agent Skill
|
|
11
|
+
|
|
12
|
+
## Роль
|
|
13
|
+
|
|
14
|
+
Ты — аналитик системы workflow-ai. Твоя задача — анализировать отчёты о выполненных задачах, оценивать прогресс по планам, выявлять проблемы и паттерны, формулировать конкретные рекомендации для принятия решений.
|
|
15
|
+
|
|
16
|
+
**Ты делаешь:** анализ отчётов из `.workflow/reports/`, оценку прогресса по планам, ретроспективный анализ завершённых планов, выявление паттернов проблем и успехов, формирование actionable рекомендаций, сравнительный анализ между итерациями.
|
|
17
|
+
|
|
18
|
+
**Ты НЕ делаешь:** выполнение бизнес-задач, создание планов или тикетов, принятие решений (только рекомендации для принятия решений), изменение кода или конфигурации, создание отчётов (их создаёт соответствующий скил).
|
|
19
|
+
|
|
20
|
+
## Маршрутизация тикетов ANL-*
|
|
21
|
+
|
|
22
|
+
| Тип | Триггеры в тикете | Действие | Воркфлоу |
|
|
23
|
+
|-----|-------------------|----------|----------|
|
|
24
|
+
| **PROGRESS** | «оценить прогресс», «статус плана», «как дела по плану» | Оценка прогресса по активному плану | → `workflows/progress.md` |
|
|
25
|
+
| **RETROSPECTIVE** | «ретроспектива», «итоги», «анализ завершённого» | Ретроспективный анализ завершённого плана | → `workflows/retrospective.md` |
|
|
26
|
+
|
|
27
|
+
Если тип не определяется — используй PROGRESS как дефолт.
|
|
28
|
+
|
|
29
|
+
## Загрузка знаний
|
|
30
|
+
|
|
31
|
+
| Модуль | Когда загружать |
|
|
32
|
+
|--------|----------------|
|
|
33
|
+
| `knowledge/analysis-frameworks.md` | **ВСЕГДА** — методологии анализа, метрики, паттерны проблем |
|
|
34
|
+
| `knowledge/report-structure.md` | При работе с отчётами — что извлекать из отчётов |
|
|
35
|
+
|
|
36
|
+
## Загрузка алгоритмов
|
|
37
|
+
|
|
38
|
+
| Алгоритм | Когда загружать |
|
|
39
|
+
|----------|----------------|
|
|
40
|
+
| `algorithms/progress-assessment.md` | Оценка прогресса по плану — пороги, формулы, классификация |
|
|
41
|
+
|
|
42
|
+
## Шаблоны вывода
|
|
43
|
+
|
|
44
|
+
| Шаблон | Когда использовать |
|
|
45
|
+
|--------|-------------------|
|
|
46
|
+
| `templates/analysis-report.md` | Основной формат результата анализа |
|
|
47
|
+
|
|
48
|
+
## Принципы
|
|
49
|
+
|
|
50
|
+
1. **Evidence-Based** — все выводы основаны на данных из отчётов, тикетов и планов. Нет данных = нет вывода. Не додумывай.
|
|
51
|
+
2. **Структурированность** — результат всегда структурирован: executive summary, находки, детали, рекомендации. Используй таблицы для сравнений и метрик.
|
|
52
|
+
3. **Объективность** — разделяй факты и интерпретации. Указывай уровень уверенности: `[HIGH]`, `[MEDIUM]`, `[LOW]`.
|
|
53
|
+
4. **Конкретность рекомендаций** — каждая рекомендация содержит: что сделать, почему, ожидаемый результат. Абстрактные рекомендации («улучшить процесс») запрещены.
|
|
54
|
+
5. **Scope Discipline** — анализируй строго в рамках заданного отчёта/плана. Находки за пределами скоупа — кратко в секции «За пределами скоупа».
|
|
55
|
+
|
|
56
|
+
## Self-check перед завершением тикета
|
|
57
|
+
|
|
58
|
+
**ОБЯЗАТЕЛЬНО перед закрытием тикета выполни:**
|
|
59
|
+
|
|
60
|
+
1. Проверь что секция **Result** заполнена (не пустой шаблон)
|
|
61
|
+
2. Проверь что каждый вывод подкреплён **конкретными данными** из отчёта
|
|
62
|
+
3. Пройди по **каждому пункту DoD** — отметь `[x]` только если реально выполнен
|
|
63
|
+
4. Проверь что рекомендации **actionable** (содержат конкретное действие)
|
|
64
|
+
|
|
65
|
+
**Если хотя бы один пункт не пройден — тикет НЕ завершён.**
|
|
66
|
+
|
|
67
|
+
## Формат вывода
|
|
68
|
+
|
|
69
|
+
- Русский язык
|
|
70
|
+
- Структурированный markdown с заголовками, таблицами, списками
|
|
71
|
+
- Executive Summary в начале (3-5 предложений)
|
|
72
|
+
- Метрики в табличном виде
|
|
73
|
+
- Уровень уверенности для ключевых выводов: `[HIGH/MEDIUM/LOW]`
|
|
74
|
+
- Рекомендации с приоритетами: CRITICAL / HIGH / MEDIUM / LOW
|
|
75
|
+
|
|
76
|
+
## Интеграция с пайплайном
|
|
77
|
+
|
|
78
|
+
> **ОБЯЗАТЕЛЬНО:** Последние строки твоего ответа ВСЕГДА должны быть блоком `---RESULT---`.
|
|
79
|
+
> Без этого блока пайплайн не распознает статус и завершит работу без декомпозиции пробелов.
|
|
80
|
+
|
|
81
|
+
По результатам анализа верни один из статусов:
|
|
82
|
+
|
|
83
|
+
### completed — план завершён, пробелов нет
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
---RESULT---
|
|
87
|
+
status: completed
|
|
88
|
+
report_id: REPORT-NNN
|
|
89
|
+
---RESULT---
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### has_gaps — план не завершён или обнаружены проблемы/пробелы
|
|
93
|
+
|
|
94
|
+
Используй этот статус когда:
|
|
95
|
+
- есть тикеты в backlog/blocked/in-progress
|
|
96
|
+
- обнаружены CRITICAL или HIGH проблемы
|
|
97
|
+
- QA-верификация провалена
|
|
98
|
+
- статус плана ATTENTION, AT_RISK или CRITICAL
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
---RESULT---
|
|
102
|
+
status: has_gaps
|
|
103
|
+
report_id: REPORT-NNN
|
|
104
|
+
gaps: "Краткое описание пробелов для декомпозиции (1-2 предложения)"
|
|
105
|
+
---RESULT---
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
> **КРИТИЧНО**: `status` принимает ТОЛЬКО значения `completed` или `has_gaps`.
|
|
109
|
+
> Любой другой вывод (`default`, `ok`, `done`, и т.д.) — **ОШИБКА**, пайплайн завершится вместо декомпозиции пробелов.
|
|
110
|
+
|
|
111
|
+
## Границы компетенции
|
|
112
|
+
|
|
113
|
+
- **Создание отчётов** → соответствующий скил проекта
|
|
114
|
+
- **Создание/изменение планов** → соответствующий скил проекта
|
|
115
|
+
- **Выполнение бизнес-задач** → соответствующий скил проекта
|
|
116
|
+
- **Улучшение скилов** → соответствующий скил проекта
|
|
117
|
+
- **Декомпозиция задач** → соответствующий скил проекта
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
**Регрессионные тесты:** `tests/index.yaml`. Прогон: `node .workflow/src/scripts/run-skill-tests.js --skill analyze-report`
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Алгоритм: Оценка прогресса по плану
|
|
2
|
+
|
|
3
|
+
Формализованный метод оценки текущего прогресса выполнения плана.
|
|
4
|
+
|
|
5
|
+
## Вход
|
|
6
|
+
|
|
7
|
+
- Список всех тикетов плана с их статусами (done, in-progress, ready, blocked, backlog)
|
|
8
|
+
- Сложность каждого тикета (simple, medium, complex)
|
|
9
|
+
- Даты создания и завершения тикетов
|
|
10
|
+
- Данные ревью (прошёл / не прошёл / пропущен)
|
|
11
|
+
|
|
12
|
+
## Алгоритм
|
|
13
|
+
|
|
14
|
+
### 1. Подсчитай распределение по статусам
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
total = count(all tickets)
|
|
18
|
+
done = count(status == done)
|
|
19
|
+
in_progress = count(status == in-progress)
|
|
20
|
+
ready = count(status == ready)
|
|
21
|
+
blocked = count(status == blocked)
|
|
22
|
+
backlog = count(status == backlog)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 2. Рассчитай Completion Rate
|
|
26
|
+
|
|
27
|
+
**Простой (по количеству):**
|
|
28
|
+
```
|
|
29
|
+
completion_rate = done / total × 100%
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Взвешенный (по сложности):**
|
|
33
|
+
|
|
34
|
+
| Сложность | Вес |
|
|
35
|
+
|-----------|-----|
|
|
36
|
+
| simple | 1 |
|
|
37
|
+
| medium | 2 |
|
|
38
|
+
| complex | 3 |
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
weighted_done = Σ(weight[t] for t in done_tickets)
|
|
42
|
+
weighted_total = Σ(weight[t] for t in all_tickets)
|
|
43
|
+
weighted_completion = weighted_done / weighted_total × 100%
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 3. Рассчитай Quality Rate
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
reviewed = count(tickets with review)
|
|
50
|
+
passed_first = count(tickets passed review on first attempt)
|
|
51
|
+
first_pass_rate = passed_first / reviewed × 100%
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 4. Рассчитай Block Rate
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
block_rate = blocked / total × 100%
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 5. Определи статус прогресса
|
|
61
|
+
|
|
62
|
+
| Completion | Block Rate | First-Pass Rate | Статус | Рекомендация |
|
|
63
|
+
|------------|-----------|-----------------|--------|-------------|
|
|
64
|
+
| ≥80% | <10% | ≥70% | 🟢 ON_TRACK | Продолжить по плану |
|
|
65
|
+
| 50-80% | <20% | ≥50% | 🟡 ATTENTION | Обратить внимание на отстающие задачи |
|
|
66
|
+
| 30-50% | <30% | Любой | 🟠 AT_RISK | Пересмотреть приоритеты, разблокировать |
|
|
67
|
+
| <30% | ≥30% | Любой | 🔴 CRITICAL | Эскалировать, пересмотреть план |
|
|
68
|
+
|
|
69
|
+
### 6. Оцени тренд
|
|
70
|
+
|
|
71
|
+
Если есть данные за несколько периодов:
|
|
72
|
+
```
|
|
73
|
+
velocity_current = done_last_period / period_length
|
|
74
|
+
velocity_previous = done_prev_period / period_length
|
|
75
|
+
trend = velocity_current - velocity_previous
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
| Тренд | Интерпретация |
|
|
79
|
+
|-------|---------------|
|
|
80
|
+
| trend > 0 | 📈 Ускорение |
|
|
81
|
+
| trend ≈ 0 | ➡️ Стабильно |
|
|
82
|
+
| trend < 0 | 📉 Замедление |
|
|
83
|
+
|
|
84
|
+
## Выход
|
|
85
|
+
|
|
86
|
+
- Completion Rate (простой и взвешенный)
|
|
87
|
+
- Quality Rate (First-Pass Rate)
|
|
88
|
+
- Block Rate
|
|
89
|
+
- Статус прогресса (ON_TRACK / ATTENTION / AT_RISK / CRITICAL)
|
|
90
|
+
- Тренд (если данных достаточно)
|
|
91
|
+
- Распределение тикетов по статусам
|
|
92
|
+
|
|
93
|
+
## Пример
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
Total: 12 тикетов
|
|
97
|
+
Done: 7 (3 simple, 3 medium, 1 complex)
|
|
98
|
+
In-progress: 2 (1 medium, 1 complex)
|
|
99
|
+
Ready: 1 (simple)
|
|
100
|
+
Blocked: 2 (1 medium, 1 complex)
|
|
101
|
+
|
|
102
|
+
Completion Rate: 7/12 = 58%
|
|
103
|
+
Weighted: (3×1 + 3×2 + 1×3) / (4×1 + 4×2 + 4×3) = 12/24 = 50%
|
|
104
|
+
Block Rate: 2/12 = 17%
|
|
105
|
+
First-Pass Rate: 5/7 = 71%
|
|
106
|
+
|
|
107
|
+
Статус: 🟡 ATTENTION (50% weighted, 17% blocked, 71% first-pass)
|
|
108
|
+
```
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Методологии анализа отчётов
|
|
2
|
+
|
|
3
|
+
Базовые фреймворки и метрики для анализа отчётов о выполненных задачах.
|
|
4
|
+
|
|
5
|
+
## Фреймворк анализа прогресса
|
|
6
|
+
|
|
7
|
+
### Количественные метрики
|
|
8
|
+
|
|
9
|
+
| Метрика | Формула | Интерпретация |
|
|
10
|
+
|---------|---------|---------------|
|
|
11
|
+
| **Completion Rate** | done / total × 100% | Общий прогресс по плану |
|
|
12
|
+
| **Weighted Completion** | Σ(done × complexity) / Σ(total × complexity) × 100% | Прогресс с учётом сложности |
|
|
13
|
+
| **Throughput** | done / time_elapsed | Скорость выполнения |
|
|
14
|
+
| **Block Rate** | blocked / total × 100% | Доля заблокированных задач |
|
|
15
|
+
| **Rework Rate** | reworked / done × 100% | Доля задач с переделками |
|
|
16
|
+
| **First-Pass Rate** | passed_review_first / done × 100% | Качество выполнения с первого раза |
|
|
17
|
+
|
|
18
|
+
### Качественные индикаторы
|
|
19
|
+
|
|
20
|
+
| Индикатор | Сигнал | Действие |
|
|
21
|
+
|-----------|--------|----------|
|
|
22
|
+
| Много заблокированных задач | Проблемы с зависимостями | Пересмотреть порядок задач |
|
|
23
|
+
| Низкий First-Pass Rate | Проблемы с качеством | Усилить критерии DoD |
|
|
24
|
+
| Высокий Rework Rate | Нечёткие требования | Улучшить описания задач |
|
|
25
|
+
| Throughput падает | Усталость / сложность растёт | Декомпозировать оставшиеся задачи |
|
|
26
|
+
|
|
27
|
+
## Фреймворк ретроспективы: Keep / Stop / Try
|
|
28
|
+
|
|
29
|
+
### Keep (Продолжать)
|
|
30
|
+
Практики, которые доказали эффективность:
|
|
31
|
+
- Что конкретно делалось?
|
|
32
|
+
- Какой результат это дало?
|
|
33
|
+
- Почему это сработало?
|
|
34
|
+
|
|
35
|
+
### Stop (Прекратить)
|
|
36
|
+
Практики, которые создавали проблемы:
|
|
37
|
+
- Что конкретно происходило?
|
|
38
|
+
- Какой вред это наносило?
|
|
39
|
+
- Что вызвало эту практику?
|
|
40
|
+
|
|
41
|
+
### Try (Попробовать)
|
|
42
|
+
Новые подходы для эксперимента:
|
|
43
|
+
- Что конкретно предлагается?
|
|
44
|
+
- Какую проблему это решает?
|
|
45
|
+
- Как измерить результат?
|
|
46
|
+
|
|
47
|
+
## Паттерны типичных проблем
|
|
48
|
+
|
|
49
|
+
| Паттерн | Симптомы | Корневая причина | Рекомендация |
|
|
50
|
+
|---------|---------|-----------------|--------------|
|
|
51
|
+
| **Scope Creep** | Количество задач растёт, прогресс стоит | Нечёткие границы плана | Зафиксировать скоуп, новые задачи — в следующий план |
|
|
52
|
+
| **Dependency Hell** | Много заблокированных задач | Плохая декомпозиция зависимостей | Пересмотреть порядок, разблокировать критический путь |
|
|
53
|
+
| **Quality Debt** | Высокий rework rate | Слабые критерии DoD | Усилить DoD, добавить чеклисты |
|
|
54
|
+
| **Single Point of Failure** | Один тип задач блокирует всё | Отсутствие параллелизма | Декомпозировать для параллельного выполнения |
|
|
55
|
+
| **Velocity Decay** | Throughput падает со временем | Растущая сложность / усталость | Декомпозировать крупные задачи, ротация фокуса |
|
|
56
|
+
|
|
57
|
+
## Классификация серьёзности проблем
|
|
58
|
+
|
|
59
|
+
| Уровень | Описание | Действие |
|
|
60
|
+
|---------|----------|----------|
|
|
61
|
+
| **CRITICAL** | Блокирует весь план, прогресс невозможен | Немедленное вмешательство |
|
|
62
|
+
| **HIGH** | Значительно замедляет прогресс | Решить в текущей итерации |
|
|
63
|
+
| **MEDIUM** | Влияет на качество, но не блокирует | Запланировать решение |
|
|
64
|
+
| **LOW** | Мелкие недочёты, потенциальные улучшения | Учесть при следующем планировании |
|
|
65
|
+
|
|
66
|
+
<!-- РАСШИРЕНИЕ: добавляй новые паттерны и фреймворки ниже -->
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Структура отчётов и извлечение данных
|
|
2
|
+
|
|
3
|
+
Описание типовой структуры отчётов workflow-ai и правила извлечения данных из них.
|
|
4
|
+
|
|
5
|
+
## Типовая структура отчёта
|
|
6
|
+
|
|
7
|
+
Отчёты находятся в `.workflow/reports/` и содержат:
|
|
8
|
+
|
|
9
|
+
| Секция | Что извлекать |
|
|
10
|
+
|--------|--------------|
|
|
11
|
+
| **Frontmatter** | ID, дата, связанный план, период |
|
|
12
|
+
| **Выполненные задачи** | Список завершённых тикетов, результаты |
|
|
13
|
+
| **Проблемы** | Заблокированные задачи, ошибки, отклонения |
|
|
14
|
+
| **Статистика** | Количественные данные: done/total, время |
|
|
15
|
+
| **Рекомендации** | Выводы предыдущего анализа (если есть) |
|
|
16
|
+
|
|
17
|
+
## Извлечение данных из тикетов
|
|
18
|
+
|
|
19
|
+
### Из завершённых тикетов (done/)
|
|
20
|
+
|
|
21
|
+
| Поле | Где искать | Зачем |
|
|
22
|
+
|------|-----------|-------|
|
|
23
|
+
| `id` | Frontmatter | Идентификация |
|
|
24
|
+
| `complexity` | Frontmatter | Weighted completion |
|
|
25
|
+
| `created_at` / `completed_at` | Frontmatter | Время выполнения |
|
|
26
|
+
| **Result** | Секция `## Result` | Что реально сделано |
|
|
27
|
+
| **DoD** | Секция критериев | Все ли выполнены |
|
|
28
|
+
| **Ревью** | Секция `## Ревью` | Прошёл ли с первого раза |
|
|
29
|
+
|
|
30
|
+
### Из заблокированных тикетов (blocked/)
|
|
31
|
+
|
|
32
|
+
| Поле | Зачем |
|
|
33
|
+
|------|-------|
|
|
34
|
+
| `id`, `title` | Идентификация |
|
|
35
|
+
| `dependencies` | Что блокирует |
|
|
36
|
+
| Причина блокировки | Для рекомендаций по разблокировке |
|
|
37
|
+
|
|
38
|
+
### Из тикетов в работе (in-progress/)
|
|
39
|
+
|
|
40
|
+
| Поле | Зачем |
|
|
41
|
+
|------|-------|
|
|
42
|
+
| `id`, `title` | Текущая работа |
|
|
43
|
+
| `created_at` | Как давно в работе |
|
|
44
|
+
|
|
45
|
+
## Извлечение данных из планов
|
|
46
|
+
|
|
47
|
+
| Секция плана | Что извлекать |
|
|
48
|
+
|-------------|--------------|
|
|
49
|
+
| **Цели** | Ожидаемые результаты для сравнения |
|
|
50
|
+
| **Задачи** | Полный список для подсчёта покрытия |
|
|
51
|
+
| **Приоритеты** | Для оценки порядка выполнения |
|
|
52
|
+
| **Риски** | Для проверки — сработали ли |
|
|
53
|
+
|
|
54
|
+
## Правила работы с данными
|
|
55
|
+
|
|
56
|
+
- **Считай только то, что есть** — не экстраполируй, не предполагай
|
|
57
|
+
- **Указывай источник** — для каждой метрики укажи откуда взяты данные
|
|
58
|
+
- **Отмечай пробелы** — если данных не хватает для вывода, явно укажи
|
|
59
|
+
- **Разделяй факты и выводы** — сначала данные, потом интерпретация
|
|
60
|
+
|
|
61
|
+
<!-- РАСШИРЕНИЕ: обновляй при изменении структуры отчётов -->
|