一键导入
test-strength
Audits generated test strength on changed files using deterministic coverage and mutation measurement, then judges only surviving-mutant materiality.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Audits generated test strength on changed files using deterministic coverage and mutation measurement, then judges only surviving-mutant materiality.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Orchestration skill: chains the full ADLC Build Loop. PRD → Brief → Council → Scaffold → Codegen → LDD → TDD → Council → PR. Use when implementing a new feature end-to-end.
Generate a bounded, schema-valid goal prompt from one validated Build Brief task for zero-context external execution.
Applicability-aware Definition of Done checklist. Core checks apply to every task; overlay checks activate only when the applicability manifest says the surface exists. Binary verification — pass or fail. Triggers at Phase 4 completion and Phase 5 entry.
Score whether each task is specific enough for autonomous, one-shot, production-ready execution.
Reviews code changes for understanding, blast radius, state, secrets, assumptions, and explainability. Produces a blocking comprehension artifact when implications are unclear.
Resolve ambiguous triage outcomes in the middle confidence band.
| name | test-strength |
| description | Audits generated test strength on changed files using deterministic coverage and mutation measurement, then judges only surviving-mutant materiality. |
| contract_version | 1.0.0 |
| side_effect_profile | mutating |
Passing tests are necessary but not sufficient. SWE-ABS-style test strength asks whether the generated verifier suite actually exercises the changed code and detects wrong behavior instead of merely replaying the happy path. This skill keeps coverage and mutation measurement deterministic, and uses LLM judgement only when surviving mutants still need interpretation.
Run at phase 4 after qa passes and before slop_gate. In repos where slop_gate is still implicit, run after qa and before the next delivery gate.
Use these inputs:
git diff.adlc/test_plan.jsonMutation tooling is optional at the repo level, but not optional for a passing audit. If the repo language is unsupported or the standard mutator is unavailable, emit stuck instead of silently passing.
Judgement is not optional once mutants survive. Use mutant-materiality-judge via the active runtime's deep_judge slot to classify surviving mutants in batches.
Detect the dominant repo language from changed files and repo conventions:
mutmutstrykercargo-mutantsIf the changed files span multiple supported languages, audit the language that owns the generated tests in .adlc/test_plan.json and record the rationale in the report.
.adlc/test_plan.json and collect the generated test paths plus their target acceptance criteria.git diff for the files under audit.mutant-materiality-judge as trivial or material..adlc/test_strength_report.json with thresholds, per-file coverage, mutant counts, surviving-mutant classifications, language detection rationale, and the verdict, then write the canonical audit copy to the path returned by bin/adlc process-artifact-path --target-repo <target-repo> --task <task-id> --artifact-type audit --filename test-strength.json --json.>= 80% of changed executable lines must be covered by the generated tests..adlc/test_plan.json as the audit scope, not the whole suite.>= 60% mutation kill rate on changed files.mutmutstrykercargo-mutantsstuck.mutant-materiality-judge.material surviving mutant forces the overall verdict to weak, even when the aggregate kill rate is still above 0.6.Write .adlc/test_strength_report.json for the local workflow handoff and store the canonical audit copy in ADLC process artifact storage.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ADLC Test Strength Report",
"type": "object",
"additionalProperties": false,
"required": [
"report_path",
"language",
"language_detection_rationale",
"coverage_threshold",
"mutation_threshold",
"files",
"mutants_generated",
"mutants_killed",
"kill_rate",
"verdict"
],
"properties": {
"report_path": {
"type": "string",
"const": ".adlc/test_strength_report.json"
},
"language": {
"type": "string",
"enum": ["python", "javascript", "typescript", "rust", "unknown"]
},
"language_detection_rationale": {
"type": "string",
"minLength": 1
},
"coverage_threshold": {
"type": "number",
"const": 0.8
},
"mutation_threshold": {
"type": "number",
"const": 0.6
},
"files": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"path",
"changed_executable_lines",
"covered_changed_lines",
"coverage_ratio"
],
"properties": {
"path": {
"type": "string",
"minLength": 1
},
"changed_executable_lines": {
"type": "integer",
"minimum": 0
},
"covered_changed_lines": {
"type": "integer",
"minimum": 0
},
"coverage_ratio": {
"type": "number",
"minimum": 0,
"maximum": 1
}
}
}
},
"mutants_generated": {
"type": "integer",
"minimum": 0
},
"mutants_killed": {
"type": "integer",
"minimum": 0
},
"kill_rate": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"verdict": {
"type": "string",
"enum": ["pass", "weak", "stuck"]
},
"stuck_reason": {
"type": "string"
}
}
}
0.8 -> emit weak.0.6 -> emit weak.weak.stuck.stuck..adlc/test_plan.json -> emit stuck.Weak findings are for test strengthening, not for waving away. The current DAG routes weak into the repair loop; that loop must return through test authoring before the next audit, and the retry budget is capped at test_strength_retry = 2.
Before emitting pass, weak, or stuck, confirm:
.adlc/test_strength_report.json parses against the schema in this skill.coverage_threshold as 0.8 and mutation_threshold as 0.6.language_detection_rationale.bin/adlc process-artifact-path.pass: both thresholds metweak: coverage or mutation strength below thresholdstuck: no supported language, no available standard mutator, or invalid audit input