test-effectiveness-auditor

Replays historical bugs at pre-fix commits to measure whether test suites catch real defects.

1|Updated Apr 16, 2026
One-click install
npx skills add https://github.com/wan-huiyan/claude-ecosystem-hygiene --skill test-effectiveness-auditor-wan-huiyan
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: test-effectiveness-auditor
Source: https://github.com/wan-huiyan/claude-ecosystem-hygiene/tree/main/plugins/test-effectiveness-auditor
Command: npx skills add https://github.com/wan-huiyan/claude-ecosystem-hygiene --skill test-effectiveness-auditor-wan-huiyan

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Teams judge test quality by coverage percentages or test counts, which say nothing about whether tests actually fail when behavior is wrong. This Skill answers "do our tests catch real bugs?" with evidence: it replays documented incidents at the commit just before each fix and observes whether the suite fails, then classifies CI failure history to separate real catches from lint noise and flakes. ## Core Features & Use Cases - Historical incident replay: Mines docs/findings, docs/issues, and git history for candidate bugs, checks out each pre-fix SHA in a temporary git worktree, runs the project's canonical test command, and records pass/fail with failed test names. - Conservative classification: Labels each incident as caught, gap_testable, gap_hard, ambiguous, or unrunnable using a documented taxonomy, producing an honest effective catch rate rather than inflated numbers. - CI history analysis: Pulls GitHub Actions or Cloud Build runs from the last 6 months and splits PR-blocking failures into real catches, author hygiene, flakes, and infra noise. - Use Case: After a production incident slipped through CI, run the audit to learn whether the suite should have caught it, and get a prioritized gap backlog of tests worth writing before investing in more coverage. ## Quick Start Ask the assistant to audit how effective this project's test suite is at catching real bugs and generate the test effectiveness report.

Frequently Asked Questions about test-effectiveness-auditor

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I measure whether my test suite actually catches bugs?

Replay historical bugs against your test suite: check out the commit just before each fix in a git worktree, run the tests, and record whether they fail. This skill automates that replay, classifies results, and computes an effective catch rate.

Why is code coverage a bad measure of test effectiveness?

Coverage only shows which lines executed, not whether any assertion would fail when behavior is wrong. A line can be fully covered by a test that passes under the bug, so this audit instead replays real incidents to observe actual catches.

Does the test effectiveness audit modify my project code?

No. The audit is read-only relative to project source: it creates temporary git worktrees under the system temp directory, runs tests there, and always cleans up. It never edits code or auto-writes tests.

Can I analyze CI failure history from GitHub Actions or Cloud Build?

Yes. The fetch_ci_history script pulls the last 6 months of runs via the gh CLI for GitHub Actions or gcloud for Cloud Build, then classifies PR-blocking failures as real catches, author hygiene, flakes, or infra issues.

What happens when a replayed incident cannot run its tests?

The incident is classified as unrunnable rather than forced into caught or gap. Unrunnable cases are excluded from the catch-rate denominator and reported separately as an environment or data-quality note.

What are the limitations of historical incident replay for test audits?

Replay needs a runnable test environment, so projects with heavy external-service dependencies may yield many unrunnable results. Classification uses conservative textual matching, and mutation testing or coverage-delta analysis are out of scope.