Find tests that verify nothing, from the .NET team.
From Microsoft's .NET skills. Your agent audits a test file or suite and produces a severity-ranked report of problems such as tests that check nothing and missing or circular assertions.
Install this skill
npx skills add https://github.com/dotnet/skills --skill test-anti-patternsRuns the open-source skills CLI in your own terminal. It asks which agents to add the skill to. Read what it tells your agent to do before you install it.
Install for your agent
Claude Code
Run this in your project
npx skills add https://github.com/dotnet/skills --skill test-anti-patterns -a claude-codeAdd
-gto install it for every project instead.Or ask Claude Code to do it
Install the "test-anti-patterns" skill from https://github.com/dotnet/skills for Claude Code. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .claude/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.claude/skills/for this project, or~/.claude/skills/for all your projects.Picked up in the current session, no restart needed.
Claude Code skills docsClaude.ai
Upload the ZIP
- In Settings > Capabilities, turn on Code execution and file creation.
- Go to Customize > Skills, press +, then Create skill.
- Choose Upload a skill and pick the ZIP you downloaded.
Free, Pro and Max plans. On Team and Enterprise, an owner turns skills on in Organization settings first.
Claude.ai skills docsChatGPT
Upload the ZIP
- Open Skills in ChatGPT and select Create.
- Select Upload from your computer and pick the ZIP you downloaded.
- Wait for ChatGPT's safety scan. A skill marked Needs Review asks you to check it before use.
Skills that rely on scripts or a terminal may not work unchanged in ChatGPT.
ChatGPT skills docsCodex
Run this in your project
npx skills add https://github.com/dotnet/skills --skill test-anti-patterns -a codexAdd
-gto install it for every project instead.Or ask Codex to do it
Install the "test-anti-patterns" skill from https://github.com/dotnet/skills for Codex. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .agents/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.agents/skills/for this project, or~/.agents/skills/for all your projects.Restart Codex if the skill does not show up.
Codex skills docsCursor
Run this in your project
npx skills add https://github.com/dotnet/skills --skill test-anti-patterns -a cursorAdd
-gto install it for every project instead.Or ask Cursor to do it
Install the "test-anti-patterns" skill from https://github.com/dotnet/skills for Cursor. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .cursor/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.cursor/skills/for this project, or~/.cursor/skills/for all your projects.Run it by typing / and the skill name in chat.
Cursor skills docsGitHub Copilot
Run this in your project
npx skills add https://github.com/dotnet/skills --skill test-anti-patterns -a github-copilotAdd
-gto install it for every project instead.Or ask GitHub Copilot to do it
Install the "test-anti-patterns" skill from https://github.com/dotnet/skills for GitHub Copilot. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .github/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.github/skills/for this project, or~/.copilot/skills/for all your projects.Works in Copilot CLI, the cloud agent and agent mode in VS Code and JetBrains.
GitHub Copilot skills docsAntigravity
Run this in your project
npx skills add https://github.com/dotnet/skills --skill test-anti-patterns -a antigravityAdd
-gto install it for every project instead.Or ask Antigravity to do it
Install the "test-anti-patterns" skill from https://github.com/dotnet/skills for Antigravity. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .agents/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Antigravity skills docsOr copy the folder yourself
Unzip the download into
.agents/skills/for this project, or~/.gemini/config/skills/for all your projects.Gemini CLI
Run this in your project
npx skills add https://github.com/dotnet/skills --skill test-anti-patterns -a gemini-cliAdd
-gto install it for every project instead.Or ask Gemini CLI to do it
Install the "test-anti-patterns" skill from https://github.com/dotnet/skills for Gemini CLI. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .gemini/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.gemini/skills/for this project, or~/.gemini/skills/for all your projects.Run /skills to check it was found.
Gemini CLI skills docs
- Installs
- 2.5K via skills.sh
- GitHub
- 5.4K stars ↗
- Last updated
- 13 Sept 2026
- Licence
- MIT
Security checks
Run by independent scanners and published on skills.sh. Their results, not a Viberation review.
- 15 May 2026
Gen Agent Trust Hub Pass
This skill provides a diagnostic tool for reviewing .NET test code to identify quality issues and anti-patterns. It operates entirely as a set of analytical instructions and contains no executable scripts or external dependencies.
- 15 May 2026
Socket Pass
No alerts
- 15 May 2026
Snyk Pass
Risk: LOW · No issues
- 16 Apr 2026
ZeroLeaks Pass
Score: 93/100 · 2 sections analyzed
What's inside (1 file)
SKILL.md26.3K chars
SKILL.md, first part. Shown as plain text.
--- name: test-anti-patterns description: > Audit a test file or suite; produce a severity-ranked diagnostic report. ALWAYS USE for tests that verify nothing, missing/tautological assertions, swallowed/broad exceptions, flaky/order-dependent tests, duplication, or magic values. Polyglot. DO NOT USE for direct edits: writing-mstest-tests owns supplied MSTest assertions/attributes/lifecycle; code-testing-agent owns new tests. Exclude running tests, migration, assertion metrics (assertion-quality), raw .NET coverage collection (run-tests), non-.NET coverage collection/analysis (native tooling), project-wide .NET coverage/CRAP (coverage-analysis), named-target .NET CRAP (crap-score), behavioral/pseudo-mutation gaps (test-gap-analysis), test-mix/ happy-vs-error classification and trait distributions (test-tagging), or the testsmells.org catalog (test-smell-detection). license: MIT --- # Test Anti-Pattern Detection Quick, pragmatic analysis of test code in any supported language for anti-patterns and quality issues that undermine test reliability, maintainability, and diagnostic value. > **Language-specific guidance**: Try `test-analysis-extensions` once. If it is > unavailable, continue immediately with this skill's built-in framework rules; > never block the audit on the helper. ## When to Use - User asks to review test quality or find test smells - User wants to know why tests are flaky or unreliable - User asks "are my tests good?" or "what's wrong with my tests?" - User requests a test audit or test code review - User wants diagnostic findings before deciding what to improve ## When Not to Use - User wants to write new tests from scratch (use `code-testing-agent`) - User wants direct implementation fixes rather than a diagnostic review (use the relevant write/edit skill) - User asks to fix swapped `Assert.AreEqual` argument order in MSTest (use `writing-mstest-tests`) - User asks to convert MSTest `DynamicData` from `IEnumerable<object[]>` to `ValueTuple` (use `writing-mstest-tests`) - User wants to run or execute tests (use `run-tests` for .NET) - User wants to migrate between test frameworks or versions (use migration skills) - User wants raw .NET coverage collection (use `run-tests`), non-.NET coverage collection or analysis (use native tooling), project-wide .NET coverage/CRAP metrics (use `coverage-analysis`), or named-target .NET CRAP (use `crap-score`) - User asks whether tests would catch a bug or wants behavioral/pseudo-mutation gaps (use `test-gap-analysis`) - User wants test-mix or happy-vs-error-path classification, standardized tagging, or trait/category distributions (use `test-tagging`) - User wants a deep formal test smell audit with academic taxonomy and extended catalog (use `test-smell-detection`) ## Inputs | Input | Required | Description | |-------|----------|-------------| | Test scope | No | Test files, classes, directory, or project to analyze. Discover from the current workspace when omitted. | | Production code | No | The code under test, for context on what tests should verify | | Specific concern | No | A focused area like "flakiness" or "naming" to narrow the review | ## Workflow ### Step 1: Detect language and load extension Resolve the named test path from the current workspace before asking for input. When no path is supplied, discover test files under the current directory using the repository manifests and conventional test markers. The skill context's `Base directory` is documentation storage, not the user's workspace; never resolve target files relative to it. If one reader says a path is missing but a workspace glob/search finds it, normalize that exact path and retry. Use a shell text reader (`sed`/`cat` on Unix, `Get-Content` on PowerShell) only for a confirmed reader availability, transport, or path-normalization failure and only after verifying the canonical path remains inside the current workspace. Stop on content-exclusion, permission/policy, works
Key info
- Pricing
- Open source
- Category
- Skills
Related reading
- Fundamentals
Reviewing code you did not write
You are going to merge a lot of code you did not type. Reviewing it is a different skill from writing it, and it is the one that actually keeps a vibe-coded…
Intermediate