Agent skill · Testing & QA

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.

dotnetgithub.com/dotnetGitHub ↗
claude-codeships scriptsMIT
Install
npx skills add dotnet/skills --skill find-untested-sources --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 3
SKILL.md size: 12 KB
Bundled scripts: yes
Path: plugins/dotnet-test/skills/find-untested-sources/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 4,927
Language: C#
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# Find Untested Sources ## Purpose 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. ## Two engines — pick one 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` | Th

What's inside
Steps it walks through
  1. Purpose
  2. Two engines — pick one
  3. Required workflow
  4. When to Use
  5. When Not to Use
  6. Roslyn engine (C#)
  7. Prerequisites
  8. Usage
  9. Output schema
  10. How it works
  11. Polyglot engine (tree-sitter)
  12. Limitations (be honest with the agent)
  13. Outputs the agent should consume
Ships with 2 files
  • scripts/Find-UntestedSources.cs
  • scripts/find_untested_sources.py
More from skills
All skills →
About this skill
What does the find-untested-sources skill do?

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.

How do I install it?

Run `npx skills add dotnet/skills --skill find-untested-sources --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From dotnet/skills, a repository with 4,927 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going