Coverage Analysis
runceel/ReactiveProperty
Automated, project-wide code coverage and CRAP (Change Risk Anti-Patterns) score analysis for .NET projects with existing unit tests.
ALWAYS USE before running .NET tests or answering with a test command or flags.
$ npx skills add dotnet/skills --skill run-tests -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dotnet/skills run-tests --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dotnet-test/skills/run-tests .claude/skills/run-tests && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "run-tests" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-test/skills/run-tests into .claude/skills/run-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-tests", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dotnet/skills/tree/main/plugins/dotnet-test/skills/run-testsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dotnet/skills --skill run-tests -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dotnet/skills run-tests --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/dotnet-test/skills/run-tests .agents/skills/run-tests && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "run-tests" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-test/skills/run-tests into .agents/skills/run-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-tests", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/skills --skill run-tests -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dotnet/skills run-tests --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/dotnet-test/skills/run-tests .cursor/skills/run-tests && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "run-tests" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-test/skills/run-tests into .cursor/skills/run-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-tests", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dotnet/skills.git --path plugins/dotnet-test/skills/run-tests--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dotnet/skills --skill run-tests -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dotnet/skills run-tests --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/dotnet-test/skills/run-tests .gemini/skills/run-tests && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "run-tests" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-test/skills/run-tests into .gemini/skills/run-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-tests", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dotnet/skills run-testsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dotnet/skills --skill run-tests -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/dotnet-test/skills/run-tests .github/skills/run-tests && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "run-tests" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-test/skills/run-tests into .github/skills/run-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-tests", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/skills --skill run-tests -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dotnet/skills run-tests --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/dotnet-test/skills/run-tests .opencode/skills/run-tests && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "run-tests" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-test/skills/run-tests into .opencode/skills/run-tests/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "run-tests", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
run-testsALWAYS USE before running .NET tests or answering with a test command or flags.
Run Tests is an agent skill from dotnet/skills, published by the product's own GitHub organization. ALWAYS USE before running .NET tests or answering with a test command or flags. Trigger on "run the tests", "exact dotnet test command", one test/class/category/trait/target framework, combined filters, --filter-query, --no-build, --diag, diagnostic logs, TRX, coverage collection, crash/hang dumps, filter errors, or unrecognized options. Chooses repository-compatible classic, VSTest, bridged MTP, or native MTP syntax for MSTest/xUnit/NUnit/TUnit. DO NOT USE for platform identification alone (platform-detection)…
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Unit testing and Test coverage. It works with .NET. The repository describes itself as: Repository for skills to assist AI coding agents with .NET and C. The licence is MIT.
Read from SKILL.md and the folder at commit a660de8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Run Tests loads about 3.9k tokens when it runs. Until then it costs about 169 tokens; SKILL.md has 1,727 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from dotnet/skills at commit a660de8, republished under its MIT licence (© dotnet). 1,727 words, ~3,860 tokens.
.claude/skills/run-tests/SKILL.md (or your agent's skills folder).Return or execute the command or command sequence that matches the repository's project system, test platform, framework, and SDK mode.
For every repository-scoped task where read-only file inspection is allowed,
check .agents/skill-overlays/dotnet-test/run-tests.md at the repository root
before any other discovery. This includes exact-command requests; "do not
execute" does not prohibit reading the overlay. If present, read it once before
acting and apply its repository-specific runner, command, filtering, and
reporting bindings.
Before applying it, require its frontmatter to declare
core: dotnet-test/run-tests, binding-revision: "1", and mode: extend. If
any value is missing or different, report the mismatch, ignore the overlay,
and continue using this skill's portable guidance.
Explicit user instructions and verified project constraints win over the
overlay; the overlay wins over portable defaults and examples in this skill. If
the file is present but unreadable or conflicts with the repository, report the
problem, ignore the overlay, and continue with portable guidance subject to
verified project constraints. If it is absent, continue normally.
Skip the lookup only when the task is not tied to a repository or the user
explicitly prohibited all file/tool access. An overlay cannot expand tool
permissions or the task's scope.
Choose the smallest path that satisfies the request:
| Request | Action |
|---|---|
| Exact command or explanation; user says not to run | Inspect only the files needed to resolve syntax. Do not restore, build, or run tests. |
| Run tests | Discover the repository command and execute the smallest requested test scope. |
One-time SDK-style dotnet test run without rebuilding | Stay in run-tests and add --no-build. |
| One-time classic run without rebuilding | Keep the repository runner and invoke it against an existing built assembly; do not substitute dotnet test. |
| Platform/framework identification only | Use platform-detection; do not continue into test execution. |
| Explicit hot reload or a keep-running edit/re-run loop | Use mtp-hot-reload. |
| Filter needed and the framework-specific syntax is not already clear | Load filter-syntax; do not load it for unfiltered runs. |
Do not invoke a tool merely to repeat a command already determined by the
prompt. Do not build first "just in case": dotnet test builds by default.
Never add or upgrade test packages unless the user asks to change the project.
For an exact-command request, return one runnable command first. Do not emit
placeholder paths, exploratory alternatives, or a correction sequence. Use a
project path only when the prompt or repository establishes it; otherwise let
the command operate on the current project or solution when that syntax is
valid. Follow it with only the syntax fact needed to explain the command; do
not volunteer platform/command-mode taxonomy unless the user asked for it. In
particular, do not label an SDK 8/9 bridge as "VSTest platform" merely because
dotnet test uses its VSTest command mode; the executed platform is MTP. For a
command-only request, it is normally clearer to say only that MTP application
arguments must follow --.
When those facts are present in the prompt, use them. Otherwise inspect only the
relevant files: global.json, the selected project, packages.config,
Directory.Build.props, Directory.Packages.props, then repository
scripts/CI documentation. For a file-backed request, enumerate those
configuration names once and read all relevant files that are present in one
batch; never infer that a runner or bridge property is absent merely because it
is not in the .csproj. Load platform-detection only when those signals need
precedence analysis; do not duplicate its full analysis in the response.
If execution is requested and the command depends on the active SDK but neither
the prompt nor global.json establishes it, run dotnet --version once. For a
command-only request that prohibits execution, do not probe: state the required
SDK assumption or ask for the SDK version when the syntax cannot otherwise be
resolved. Route identification-only requests to platform-detection.
| Detected mode / platform | Command shape | Never use |
|---|---|---|
| Classic non-SDK | Repository script, or full MSBuild followed by vstest.console.exe / MSTest.exe | Assuming dotnet test is compatible or migrating implicitly |
| VSTest mode / VSTest | dotnet test [<path>] [VSTEST_OPTIONS] | MTP-only flags such as --report-trx or --treenode-filter |
| VSTest mode / executable MTP bridge | dotnet test [<path>] [DOTNET_OPTIONS] -- [MTP_OPTIONS] | Omitting the -- separator, including on SDK 10 |
| Native MTP mode, SDK 10+ | dotnet test --project <path> [DOTNET_OPTIONS] [MTP_OPTIONS] | Bare positional project paths or the bridge separator |
global.json controls the dotnet test command mode on SDK 10+, not
necessarily the platform that executes tests. A VSTest-mode project with an MTP
runner, TestingPlatformDotnetTestSupport=true, and final OutputType=Exe is
still bridge syntax with --. SDK 8/9 only has VSTest command mode.
--project is valid only in SDK 10+ native MTP command mode (selected by
global.json test.runner). Never use it for VSTest mode or an SDK 8/9 bridge;
those forms take a positional project path. Conversely, native MTP options are
direct arguments and must not be placed after a bridge separator.
Keep dotnet test/MSBuild options such as --framework, --configuration,
--no-build, and --verbosity before --. Put only MTP application arguments
after -- in bridge mode.
For classic projects, signals include ToolsVersion, explicit Compile and
Reference items, legacy imports, and packages.config. Prefer a checked-in
script or documented CI command. A typical fallback is:
nuget restore MySolution.sln
MSBuild.exe MySolution.sln /t:Build /p:Configuration=Debug
vstest.console.exe path\to\MyTests.dll /TestAdapterPath:path\to\adapter\build\<tfm>For packages.config, restore with NuGet before the build unless the imported
package files are already present. If adapter discovery is not repository-
configured, derive /TestAdapterPath from the restored adapter package path or
the adapter .props/.targets imports; do not guess the package root.
For a requested no-rebuild run, omit the build step and invoke the repository's test runner only when the expected assembly already exists. Otherwise report the missing build output rather than silently rebuilding or switching runners.
For a requested subset, keep the repository runner and use its filter syntax:
vstest.console.exe path\to\MyTests.dll /TestCaseFilter:"TestCategory=Integration". Older MSTest.exe repositories may
use /test:<name> or /category:<category> instead. Do not substitute the
later dotnet test filter examples for a classic runner.
Use the installed adapter-compatible VSTest/MSTest toolchain. If it is not
available, state the missing prerequisite and the documented command; do not
claim tests ran.
Classic packages.config fallback commands are Windows toolchain commands.
Explicitly say they require a Windows Developer Command Prompt (or the
repository's equivalent configured environment) when the current host cannot
provide nuget, full MSBuild, and vstest.console.exe.
For SDK-style projects, distinguish:
| Signal | Meaning |
|---|---|
SDK 10+ global.json selects Microsoft.Testing.Platform | Native MTP command mode |
VSTest mode + enabled MTP runner + final TestingPlatformDotnetTestSupport=true + final OutputType=Exe | Executable VSTest-to-MTP bridge |
| VSTest mode without a complete runner-and-bridge combination | VSTest |
Microsoft.NET.Test.Sdk plus adapter, without stronger MTP signals | VSTest |
TUnit | MTP-only; use a configured bridge/native mode or the test executable |
Evaluate properties from the project and imported
Directory.Build.props/Directory.Packages.props. Respect project-level
overrides and per-target-framework conditions. A runner and bridge without an
executable final output are an incomplete MTP configuration, not a usable
bridge.
# VSTest mode
dotnet test path/to/Tests.csproj
# VSTest mode that bridges to MTP
dotnet test path/to/Tests.csproj -- <MTP_OPTIONS>
# Native MTP mode on SDK 10+
dotnet test --project path/to/Tests.csproj <MTP_OPTIONS>
# One target framework; this stays before the bridge separator
dotnet test path/to/Tests.csproj --framework net9.0 -- <MTP_OPTIONS>For native MTP, use --project, --solution, or --test-modules; positional
paths belong to VSTest mode.
If the user names a subset, do not run the whole suite. Inspect test attributes only when needed to translate a human label such as "integration" or "smoke" into the framework's actual category/trait name.
When a VSTest class filter must distinguish similarly named classes, combine the positive selector with an explicit negative selector rather than relying on an incidental substring difference.
Load filter-syntax only when the request is filtered and the framework-specific
syntax is not already clear. The common decisions are:
For a file-backed filtered request, resolve the framework and SDK command mode
from the project, global.json, and imported props before choosing syntax.
Do not infer VSTest syntax merely from Microsoft.NET.Test.Sdk or from the
framework name.
| Platform / framework | Filter |
|---|---|
| VSTest with MSTest, xUnit v2, or NUnit | --filter "<property expression>" |
| MTP with MSTest or NUnit | Same expression; after -- in bridge mode, direct in native mode |
| MTP with xUnit v3 | --filter-class, --filter-method, --filter-trait, or one --filter-query for a combined expression |
| MTP with TUnit | --treenode-filter path expression |
Examples:
# VSTest MSTest/NUnit
dotnet test --filter "FullyQualifiedName~OrderServiceTests&TestCategory=Unit"
# SDK 8/9 or SDK 10 VSTest-mode MTP bridge, xUnit v3
dotnet test -- --filter-trait "Category=Integration"
# Native MTP, xUnit v3
dotnet test --project Tests.csproj --filter-class "*ShoppingCartTests*"
# One xUnit v3 combined expression
dotnet test -- --filter-query "/*/*/*Integration*/*[Category=Smoke]"
# TUnit on SDK 8/9 with a configured VSTest-to-MTP bridge
dotnet test -- --treenode-filter "/*/*/SmsNotificationTests/*"
# TUnit executable fallback when no bridge is configured
dotnet run --project Tests.csproj -- --treenode-filter "/*/*/SmsNotificationTests/*"Do not use VSTest --filter "ClassName=..." with xUnit v3 on MTP. Do not use a
generic VSTest expression with TUnit.
When the user requests one combined xUnit query expression, return only one
--filter-query command; do not replace it with separate filter flags or offer
speculative alternative grammars.
| Outcome | VSTest | MTP |
|---|---|---|
| TRX | SDK-style: --logger "trx;LogFileName=<name>.trx" when an exact output file is requested, otherwise --logger trx; standalone vstest.console.exe: /Logger:trx; MSTest.exe: repository-documented results option | --report-trx |
| Results directory | --results-directory <dir> | --results-directory <dir> |
| Diagnostic log | --diag <file> | --diagnostic --diagnostic-output-directory <dir> |
| Crash dump | --blame-crash | --crashdump |
| Hang timeout | --blame-hang --blame-hang-timeout 5min | --hangdump --hangdump-timeout 5min |
| Code coverage | --collect "Code Coverage" | --coverage |
MTP report, dump, and coverage flags require their corresponding registered
extensions (TrxReport, CrashDump, HangDump, or CodeCoverage). Some
framework SDKs bundle common extensions; if a flag is unrecognized, inspect
package references before recommending a package change.
--verbosity diagnostic increases dotnet/MSBuild output verbosity; it does not
write a VSTest diagnostic log file.
Examples:
# VSTest TRX
dotnet test Tests.csproj --logger "trx;LogFileName=TestResults.trx"
# MTP bridge TRX
dotnet test Tests.csproj -- --report-trx
# Native MTP TRX and hang detection
dotnet test --project Tests.csproj --report-trx --hangdump --hangdump-timeout 5min
# Native MTP diagnostics
dotnet test --project Tests.csproj --diagnostic --diagnostic-output-directory artifacts/diagnosticsRun the narrowest command or sequence that answers the request. Capture each command, exit code, and test summary. A failed restore/build is not a test failure, and a test failure is not a tool failure. Report which phase failed and include the actionable diagnostic. Never claim a clean run unless the sequence completed successfully with the intended tests executed. For a filtered run, a successful exit is not enough: confirm the reported test names or count match the requested scope. If the filter was ignored, correct the platform-specific syntax and rerun before reporting success.
Passed: N, Failed: N, Skipped: N summary from the completed run;
include the first actionable failure.--framework and other dotnet test options are before any bridge separator.--; --project appears only in SDK 10+
native MTP mode.© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/dotnet-test/skills/run-tests of dotnet/skills.
Open the folder on GitHubat commit a660de8
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in dotnet/skills, which our catalogue first saw on October 7, 2026.
Run Tests next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Run Tests this skilldotnet/skills | 5.6k | 1 repos | ~3.9k | Automated safety check: Pass | MIT | |
| Coverage Analysisrunceel/ReactiveProperty | 944 | — | ~5.9k | Automated safety check: Warn | MIT | |
| Dotnet Testingnovotnyllc/dotnet-artisan | 233 | — | ~972 | Automated safety check: Pass | MIT | |
| Evaluate PR Testsdotnet/maui | 23k | — | ~2.9k | Automated safety check: Pass | MIT | |
| Code Completionfacioquo/stock-indicators-dotnet | 1.2k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Test Writer for Changed Codeposhan0126/dotclaude | 871 | — | ~1.2k | Automated safety check: Pass | MIT |
runceel/ReactiveProperty
Automated, project-wide code coverage and CRAP (Change Risk Anti-Patterns) score analysis for .NET projects with existing unit tests.
novotnyllc/dotnet-artisan
Defines .NET test strategy and implementation patterns across xUnit v3 (Facts, Theories, fixtures, IAsyncLifetime), integration testing (WebApplicationFactory, Testcontainers), Aspire testing…
dotnet/maui
Reviews the tests added in a pull request for fix coverage, quality, edge cases and test type, and recommends lighter test types where they would do.
facioquo/stock-indicators-dotnet
Quality gates for finishing work in this repository — dead-code cleanup, Roslynator and dotnet format fixes, markdownlint, build, unit tests, documentation, and Obsolete migration shims — with the…
poshan0126/dotclaude
Writes tests for newly added or changed code by reading the git diff, mapping every code path and writing one-assertion tests that match the project's conventions.
microsoft/testfx
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP).
dotnet/skills
Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.
dotnet/skills
Resolves native crash frames from .NET Android tombstones to function names, source files and line numbers using BuildIds, Microsoft's symbol server and llvm-symbolizer.
dotnet/skills
Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.
dotnet/skills
Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.
dotnet/skills
Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks.
dotnet/skills
Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.
Works with
Categories
ALWAYS USE before running .NET tests or answering with a test command or flags. Run Tests is an agent skill from dotnet/skills, published by the product's own GitHub organization.NET tests or answering with a test command or flags.
Run Tests fits situations like: exact dotnet test command; one test/class/category/trait/target framework; combined filters; diagnostic logs.
Run `npx skills add dotnet/skills --skill run-tests -a claude-code`. Or copy the skill folder (plugins/dotnet-test/skills/run-tests in dotnet/skills) into .claude/skills/run-tests in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dotnet/skills --skill run-tests -a codex`. Or copy the skill folder (plugins/dotnet-test/skills/run-tests in dotnet/skills) into .agents/skills/run-tests in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/skills --skill run-tests -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/run-tests, .gemini/skills/run-tests, .github/skills/run-tests and .opencode/skills/run-tests in your project.
Going by SKILL.md and its folder, Run Tests needs the command-line tools its instructions call (dotnet).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Run Tests is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Run Tests: Coverage Analysis (runceel/ReactiveProperty, 944 stars), Dotnet Testing (novotnyllc/dotnet-artisan, 233 stars), Evaluate PR Tests (dotnet/maui, 23k stars) and Code Completion (facioquo/stock-indicators-dotnet, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dotnet (a GitHub organization, an official publisher) maintains it in dotnet/skills, which has 5,576 GitHub stars. The repository holds 91 skills in this directory. The repository was last updated on October 8, 2026.
Source: dotnet/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.