Agent Skill
Migrate Xunit To Xunit V3 skill
migrate-xunit-to-xunit-v3dotnet/skillsplugins/dotnet-test-migration/skills/migrate-xunit-to-xunit-v3/SKILL.md
Migrate .NET test projects from xUnit.net v2 to xunit.v3 and fix v3 breaks. Use for package/CPM conversion, OutputType=Exe, preserving the VSTest or MTP runner (including projects currently using YTest.MTP.XUnit2), incompatible TFMs, async void tests, string-to-Type attributes, custom Fact/Theory/BeforeAfterTest attributes, Xunit.SkippableFact, xunit.abstractions/extensibility consolidation, and Xunit.Combinatorial/StaFact compatibility. Do not use for framework conversion or a runner-only migration. For xUnit v3 MTP filter syntax, also use migrate-vstest-to-mtp.
always on
149 tokname + description
once used
3,441 tokSKILL.md body
bundled files
0
repo stars
5.7kGitHub
Install the Migrate Xunit To Xunit V3 skill
Skills CLI (Claude Code, Codex, Cursor and others)
npx skills add https://github.com/dotnet/skills --skill migrate-xunit-to-xunit-v3
Claude Code, by hand (all projects)
git clone --depth 1 https://github.com/dotnet/skills.git /tmp/skills mkdir -p ~/.claude/skills cp -R /tmp/skills/plugins/dotnet-test-migration/skills/migrate-xunit-to-xunit-v3 ~/.claude/skills/migrate-xunit-to-xunit-v3
For one project only, copy the folder into .claude/skills/ in that project instead. The agent picks it up when a task matches its description.
What it costs your context
Agent Skills load in three steps. Tokens counted with the o200k tokenizer; your model's count will differ a little.
| When | What loads | Cost |
|---|---|---|
| Every session | Name and description | 149 tok |
| When the agent uses it | The SKILL.md instructions | 3,441 tok |
| Only if opened | No bundled files | — |
Until it is used, migrate-xunit-to-xunit-v3 costs about 9.1× less than the median MCP server we measured (1,362 tokens on every turn). Installing all 114 skills from dotnet/skills would load 15,432 tokens of descriptions. Skills vs MCP study
Checks
Our checks found nothing to flag: it follows the Agent Skills specification's naming and size guidelines and doesn't pipe downloads into a shell.
Checked 2026-10-22 · method
What's inside
The headings of its SKILL.md. Read the full file on GitHub.
- xunit.v3 Migration
- When to Use
- When Not to Use
- Inputs
- Workspace and Completion Contract
- Workflow
- Decisions that change the result
- Step 1: Identify xUnit.net projects and verify compatibility
- Step 2: Update package references
- Step 3: Set OutputType to Exe
- Step 4: Configure test platform
- Step 5: Remove Xunit.Abstractions usings
- Step 6: Address async void breaking change (if applicable)
- Step 7: Address breaking change of attributes (if applicable)
- Step 8: Inheriting from FactAttribute or TheoryAttribute (if applicable)
- Step 9: Inheriting from BeforeAfterTestAttribute (if applicable)
- Step 10: Address new xUnit analyzer warnings (if applicable)
- Step 11: Migrate Xunit.SkippableFact (if applicable)
- Step 12: Update companion packages (if applicable)
- Step 13: Build and verify
More skills from dotnet/skills
- agentic-workflowsdotnet/skills
Route gh-aw workflow design/create/debug/upgrade requests to the right prompts.
5.7k20 tok idle · 1,336 in use - analyzing-dotnet-performancedotnet/skills
Scans .NET code for ~50 performance anti-patterns across async, memory, strings, collections, LINQ, regex, serialization, and I/O with tiered severity classification. Use when analyzing .NET code for optimization opportunities, reviewing hot paths, or auditing allocation-heavy patterns.
5.7k64 tok idle · 2,744 in use - android-tombstone-symbolicationdotnet/skills
Symbolicate the .NET runtime frames in an Android tombstone file. Extracts BuildIds and PC offsets from the native backtrace, downloads debug symbols from the Microsoft symbol server, and runs llvm-symbolizer to produce function names with source file and line numbers. USE FOR triaging a .NET MAUI or Mono Android app crash from a tombstone, resolving native backtrace frames in libmonosgen-2.0.so or libcoreclr.so to .NET runtime source code, or investigating SIGABRT, SIGSEGV, or other native signals originating from the .NET runtime on Android. DO NOT USE FOR pure Java/Kotlin crashes, managed .NET exceptions that are already captured in logcat, or iOS crash logs. INVOKES Symbolicate-Tombstone.ps1 script, llvm-symbolizer, Microsoft symbol server.
5.7k1176 tok idle · 1,948 in use - apple-crash-symbolicationdotnet/skills
Symbolicate .NET runtime frames in Apple platform .ips crash logs (iOS, tvOS, Mac Catalyst, macOS). Extracts UUIDs and addresses from the native backtrace, locates dSYM debug symbols, and runs atos to produce function names with source file and line numbers. Automatically downloads .dwarf symbols from the Microsoft symbol server using Mach-O UUIDs. USE FOR triaging a .NET MAUI or Mono app crash from an .ips file on any Apple platform, resolving native backtrace frames in libcoreclr or libmonosgen-2.0 to .NET runtime source code, retrieving .ips crash logs from a connected iOS device or iPhone, or investigating EXC_CRASH, EXC_BAD_ACCESS, SIGABRT, or SIGSEGV originating from the .NET runtime. DO NOT USE FOR pure Swift/Objective-C crashes with no .NET components, or Android tombstone files. INVOKES Symbolicate-Crash.ps1 script, atos, dwarfdump, idevicecrashreport.
5.7k1217 tok idle · 2,267 in use - assertion-qualitydotnet/skills
Analyze assertion quality, depth, variety, and false confidence in existing tests. ALWAYS USE when asked about weak, shallow, trivial, always-true, self-referential, assertion-free, presence/truthiness-only, or insufficiently diverse assertions, including MSTest, Jest, pytest, and Go. DO NOT USE for direct fixes: writing-mstest-tests owns supplied MSTest assertions; code-testing owns new cases. Use test-gap-analysis when asked whether tests would catch a production change, and test-anti-patterns for general severity-ranked audits.
5.7k114 tok idle · 4,201 in use - author-componentdotnet/skills
Create or review Blazor components (.razor files) with correct architecture. USE FOR: writing new Blazor components that do NOT involve JavaScript interop, implementing parameters and EventCallback, RenderFragment slots, component lifecycle (OnInitializedAsync, OnParametersSet), async patterns, IAsyncDisposable, CancellationToken, CSS isolation, code-behind. DO NOT USE FOR: creating new projects (use create-blazor-project), JavaScript interop or calling browser APIs from Blazor (use use-js-interop), forms and validation (use collect-user-input), prerendering issues (use support-prerendering), HTTP data fetching patterns (use fetch-and-send-data), coordinating state between unrelated components (use coordinate-components).
5.7k148 tok idle · 658 in use - authoring-github-workflowsdotnet/skills
Author and review GitHub Actions workflow YAML safely so syntactically-valid YAML can't ship a workflow that GitHub Actions refuses to run. USE FOR: editing, adding, or reviewing any file under .github/workflows/, writing run-name/name/if/env/run values that contain ${{ }} expressions, diagnosing a run that fails with 'This run likely failed because of a workflow file issue' and no jobs starting, deciding when a workflow scalar must be quoted, validating workflows with actionlint. DO NOT USE FOR: authoring application YAML unrelated to GitHub Actions, Azure Pipelines, GitLab CI, or non-workflow YAML. SCOPE: this skill covers *syntactic/structural* correctness of workflow YAML (quoting, parsing, actionlint); for *semantic and functional* workflow design (what a workflow should do, agentic-workflow behavior), see .github/agents/agentic-workflows.agent.md — the two are complementary. INVOKES: actionlint (downloaded pinned binary) plus git/grep for inspection.
5.7k218 tok idle · 1,990 in use - binlog-failure-analysisdotnet/skills
Analyze MSBuild binary logs to diagnose build failures. USE FOR: build errors that are unclear from console output, diagnosing cascading failures across multi-project builds, tracing MSBuild target execution order, and generally any MSBuild build issues. Requires an existing .binlog file. DO NOT USE FOR: generating binlogs (use binlog-generation), binlog MCP startup or connection failures (use troubleshoot-binlog-mcp), non-MSBuild build systems.
5.7k94 tok idle · 654 in use