Install any skill in seconds. Free to start, no credit card required.
Get Started Free →dotnet/find-untested-sources
MANDATORY for static requests to find, identify, or list untested source files or modules, sources without tests, source-to-test pairing, test-gap worklists, or suggested test locations. Invoke even for a tiny package; do not substitute manual globbing. Uses Roslyn for C#/.NET and tree-sitter for Python, TS/JS, Go, Java, Rust, and Ruby. DO NOT USE FOR: line/branch coverage, CRAP risk, or grading existing tests.
Passed 17 of 20 test cases with the skill, and 8 of 20 without it.
and 8 more in the full report
10 fixed9 passed either way4 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 10 test cases the skill fixed. Same model, same prompt, with and without the skill.
I am running the tree-sitter static analyzer on `packages/search`. By default, it only lists untested source files, but I need the output to also include all successfully paired source files so I can audit existing coverage mappings. Which flag should be passed?
| Checked | Without skill | With skill |
|---|---|---|
| Passes the --include-tested flag to the polyglot analyzer script. | Missed | Passed |
The instructions your model reads when the skill loads.
Coverage tools answer "which lines were executed?" — they require a green build and a passing test run, which is minutes-to-tens-of-minutes on a real repo. The question this skill answers is different and much cheaper:
Which source files have no test file referencing any of their declared types/symbols?
That's the question an agent asks before writing a new test — and it can be answered statically in a few seconds by parsing source files, with no build, no dependency resolution, and no compilation. The output is a deterministic test-pairing map that lets the agent pick the next file to test without reading the entire codebase first.
This skill ships two interchangeable analyzers with a compatible JSON contract:
| Engine | Script | Use when |
|---|---|---|
| Roslyn (C#) | scripts/Find-UntestedSources.cs | The repo is .NET-only. Parses every .cs file with the Roslyn syntax API and does strict namespace disambiguation, so it is materially more accurate on duplicated short names like Settings or Context. |
| tree-sitter (polyglot) | scripts/find_untested_sources.py | The repo is not exclusively C#, or you want one tool across Python, TypeScript/JavaScript, Go, Java, Rust, Ruby, and C#. |
For a .NET-only repository, prefer the Roslyn engine — its namespace-aware pairing beats the polyglot engine's identifier overlap.
--include-tested when the answer must distinguish
paired sources from unpaired sources.
"Static pairing only" prohibits compiling the target repository and running
its tests; it does not prohibit launching this skill's parse-only analyzer.
State that distinction briefly when the caller also says "do not build."test cases passed, vs 8 / 20 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.