Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add managedcode/dotnet-skills --skill migrate-vstest-to-mtpgit clone --depth 1 https://github.com/managedcode/dotnet-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/managedcode/dotnet-skills/migrate-vstest-to-mtp)<a href="https://agentmods.dev/skills/managedcode/dotnet-skills/migrate-vstest-to-mtp"><img src="https://agentmods.dev/badge/skills/managedcode/dotnet-skills/migrate-vstest-to-mtp/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/managedcode/dotnet-skills/migrate-vstest-to-mtp"><img src="https://agentmods.dev/badge/skills/managedcode/dotnet-skills/migrate-vstest-to-mtp.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00191 | $0.05578 |
| Opus 5.5 | $0.00076 | $0.02231 |
| Sonnet 5.5 | $0.00038 | $0.01116 |
| Haiku 4.5 | $0.00019 | $0.00558 |
Grade A, and why
migrate-vstest-to-mtp scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
92% identical to migrate-vstest-to-mtp — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 421 lines — stays where its author put it; the contents beside it link to each section on GitHub.
VSTest -> Microsoft.Testing.Platform Migration
Migrate a .NET test solution from VSTest to Microsoft.Testing.Platform (MTP). The outcome is a solution where all test projects run on MTP, dotnet test works correctly, and CI/CD pipelines are updated.
First Action
Inspect the supplied project, Directory.Build.props, global.json, and CI
files before searching the web or answering from memory. Resolve the framework
and SDK mode first: .NET 9 and earlier use the compatibility property plus the
-- separator; .NET 10 native MTP uses global.json, removes that property,
and passes MTP arguments without the separator. For central properties, never
condition on IsTestProject in Directory.Build.props; use a property already
available there, such as MSBuildProjectName.
Important: Do not mix VSTest-based and MTP-based .NET test projects in the same solution or run configuration -- this is an unsupported scenario.
When to Use
- Switching from VSTest to Microsoft.Testing.Platform for any supported test framework
- Enabling
dotnet run/dotnet watch/ direct executable execution for test projects - Enabling Native AOT or trimmed test execution
- Replacing
vstest.console.exewithdotnet teston MTP - Updating CI/CD pipelines from the VSTest task to the .NET Core CLI task
- Updating
dotnet testarguments from VSTest syntax to MTP syntax
When Not to Use
- The project already runs on Microsoft.Testing.Platform and there is no remaining MTP behavioral difference to resolve (e.g., exit code 8 for zero tests discovered)
- Migrating between test frameworks (e.g., MSTest to xUnit.net) -- different effort entirely
- The project builds UWP or packaged WinUI test projects -- MTP does not support these yet
- The solution mixes .NET and non-.NET test adapters (e.g., JavaScript or C++ adapters) -- VSTest is required
- Upgrading MSTest versions -- use
migrate-mstest-v1v2-to-v3ormigrate-mstest-v3-to-v4
Inputs
| Input | Required | Description |
|---|---|---|
| Project or solution path | No | The .csproj, .sln, or .slnx entry point containing test projects. Discover it yourself by globbing the working directory; ask only when nothing is found or the choice is genuinely ambiguous |
| Test framework | No | MSTest, NUnit, xUnit.net v2, or xUnit.net v3. Auto-detected from package references |
| .NET SDK version | No | Determines dotnet test integration mode. Prefer the repository's global.json or explicitly stated CI SDK; use host dotnet --version only when the repository does not pin or state one |
| CI/CD pipeline files | No | Paths to pipeline definitions that invoke vstest.console or dotnet test |
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +28 lines · -71 tokens per session e4984767f47f
- 1mo ago First seen · 393 lines · 262 tokens per session scan A 3d36d1296468
migrate-vstest-to-mtp is a skill published in the GitHub repository managedcode/dotnet-skills (495 stars, last pushed yesterday), licensed MIT. It adds 191 tokens to every session and 5,578 once invoked, about $0.0008 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 92% identical to migrate-vstest-to-mtp, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
e2e-testing-expert
Expert guide for End-to-End (E2E) testing with Playwright 1.50+, Clock API, ARIA snapshots, test fixtures, and Vitest 3+ / Panduan ahli pengujian E2E dengan Playwright 1.50+, Clock API, ARIA snapshots, dan Vitest 3+.
mutation-testing
Use when running mutation testing, killing mutants, verifying test quality, checking mutation score, or analyzing survivors after the test baseline is green.
generate-microcks-openapi-samples
Use when creating OpenAPI mock examples for Microcks, setting up request/response routing with dispatchers, or mapping request fields to mock responses.
outside-in-tdd
Use when writing tests from the outside-in, defining behavior before code, or any feature where tests should start from observable business behavior and let internal design emerge.
gherkin-gate
Use before writing any test or implementation task, when observable behavior needs to be captured in business language scenarios and approved by the user before code begins.
vibe-safe-deploy
Performs deployment with pre-flight checks, atomic replacement, post-deploy verification, provenance (proving the environment serves the exact commit you pushed), and automatic rollback. Use before any deployment to staging, preview, or production.