Install any skill in seconds. Free to start, no credit card required.
Get Started Free →dotnet/test-smell-detection
Deep-dive audit using the full testsmells.org 19-smell academic catalog for tests in any language. Every finding maps to a named, citable smell from the research literature (Assertion Roulette, Duplicate Assert, Mystery Guest, Eager Test, Sensitive Equality, Conditional Test Logic, Sleepy Test, Magic Number Test, etc.) with research-backed severity. Polyglot: .NET (MSTest/xUnit/NUnit/TUnit), Python (pytest/unittest), TS/JS (Jest/Vitest/Mocha/node:test), Java (JUnit/TestNG), Go, Ruby (RSpec/Minit
Passed 19 of 22 test cases with the skill, and 16 of 22 without it.
and 2 more in the full report
4 fixed18 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 4 test cases the skill fixed. Same model, same prompt, with and without the skill.
A C# test calls `Assert.Equal("User: Alice (ID: 42)", user.ToString());` where `ToString()` formatting is only used for internal debugging logs and is not part of the domain contract. What smell is present and what is the fix?
| Checked | Without skill | With skill |
|---|---|---|
| Classify asserting non-contract debug string formatting as Sensitive Equality. | Missed | Passed |
| Propose asserting specific domain fields instead of display formatting strings. | Passed | Passed |
The instructions your model reads when the skill loads.
Audit test code with the academic taxonomy, code evidence, calibrated framework idioms, and fixes native to the codebase.
test-analysis-extensions and read the
matching language extension.| Evidence | Academic finding | Do | Never |
|---|---|---|---|
Assertion behavior changes behind if, switch, or branching loops | Conditional Test Logic | Split cases or parameterize them | Flag table-driven or parametrized tests merely because a runner loop exists |
| A test relies on an undeclared file, network service, environment value, or database | Mystery Guest or Resource Optimism | Make the dependency explicit and hermetic; distinguish the two using the full catalog | Condemn an integration test merely for exercising its declared real resource |
| Fixed wall-clock sleep waits for an outcome | Sleepy Test | Await or poll the condition with a timeout | Downgrade it only because the test is an integration test |
| Executable test has no assertion, expected-exception marker, or mock verification | Unknown Test | Assert the observable outcome | Call an empty body Unknown Test; the formal name is Empty Test |
| Async assertion/coroutine is created but not awaited or returned | Critical non-catalog false-pass defect | Report it separately and show the required await/return | Force it into Unknown Test; the assertion statement exists |
test cases passed, vs 16 / 22 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.