skills/test-strength/SKILL.md
Audits generated test strength on changed files using deterministic coverage and mutation measurement, then judges only surviving-mutant materiality.
npx skillsauth add bigeasyfreeman/adlc test-strengthInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.>= 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.
{
"$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.pass: both thresholds metweak: coverage or mutation strength below thresholdstuck: no supported language, no available standard mutator, or invalid audit inputdevelopment
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.
development
# Skill: Helm & ArgoCD Deployment > Validates Helm charts and generates ArgoCD Application manifests when the ADLC pipeline produces infrastructure or service code. Ensures every deployable artifact has correct chart structure, environment-specific values, and a GitOps-ready Application manifest before code review. --- ## Why This Exists Without deployment validation in the pipeline, common failures slip through to production: - **Helm charts fail `helm template`** because of missing values,
testing
Decide whether an intersecting verifier actually exercises the semantic change.
development
# Skill: UX Flow Builder > Generates user flow diagrams (Mermaid) from PRD personas and screen specifications. Surfaces dead ends, missing screens, and disconnected flows before design or engineering starts. Helps PMs think in screens, not features. --- ## Trigger - Automatically during PRD Phase 4 (Personas & Flows) to visualize the user journey - On-demand when the PM says "show me the flow" or "map the user journey" - During PRD evaluation to verify screen connectivity --- ## Input ```