legacy-code-testing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited legacy-code-testing (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Untested code you must change is a trap: you can't refactor safely without tests, and you can't test cleanly without refactoring. The way out is characterization testing — pin down what the code currently does (not what it should do), then refactor under that safety net.
The golden rule: before refactoring, tests assert current behavior — even buggy behavior. A characterization test that "fails" because the code has a bug is wrong; the test must pass against today's code. Log suspected bugs separately for the team to triage.
change-likelihood × consequence-of-breaking. Do not attempt whole-codebase coverage — legacy coverage is bought module by module, just-in-time.// CHARACTERIZATION: verify against production behavior before trusting.SUSPECTED-BUGS.md (or ticket list): behavior pinned by a test that looks wrong, with the test name, why it looks wrong, and the blast radius of fixing it. Fixing comes after the net exists, as separate, deliberate changes.| Dependency problem | Seam technique |
|---|---|
Hard-coded new of a collaborator | Extract creation to overridable factory method, or parameterize the constructor |
| Static call / singleton | Wrap in an instance method or injectable adapter |
| Database / network / filesystem inline | Extract a gateway interface; in tests, substitute an in-memory fake |
| Clock / randomness | Inject a clock/seed provider |
| Global mutable state | Pass it in; or snapshot-and-restore around each test as a last resort |
| Monster method (hundreds of lines) | Test it as a black box first (inputs → outputs/side effects); extract pieces only under that net |
Prefer fakes over mocks for legacy work: characterization cares about end behavior, and deep mock setups just restate the implementation you're trying to free yourself from.
retains_trailing_whitespace_in_legacy_export beats test_export_3.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.