code-testing-extensions
code-testing-extensions is a skill in dotnet/skills, last changed 9 Oct 2026. It can run shell commands, reach the network and name web addresses — read the findings before installing. Our pattern check flagged nothing at commit 586f13f on 27 Oct 2026.
Pattern check: nothing flagged · commit 586f13f · 27 Oct 2026
InstallProvides file paths to language-specific extension files for the code-testing pipeline. Read this reference-only catalog for extension guidance files (e.g., dotnet.md for .NET, cpp.md for C++). Agents and skills read its bundled files directly; do not invoke this catalog through the model's skill tool.
- Licence
- MIT
- Repo stars
- 5.8k
- Folder last changed
- 9 Oct 2026 (opens in a new tab)
- Publisher
- dotnet
- Files
- 22 files
- Checked
- 586f13f (opens in a new tab) · 27 Oct 2026
Install
Each tab says whether it installs commit 586f13f, the one we checked, or the latest version.
No tab for your agent? Use Any agent for OpenCode, Goose, Windsurf (Devin Desktop), Zed, Roo Code, Factory Droid, Junie, Amp and Antigravity, and Claude Code for Cline. Kiro needs the folder copied by hand.
Pinned to commit 586f13f, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&
git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/dotnet/skills.git "$tmp" &&
git -C "$tmp" fetch -q --depth 1 origin 586f13f8d898a60583a3364f146a3b6f5a763164 &&
git -C "$tmp" sparse-checkout set -- plugins/dotnet-test/skills/code-testing-extensions &&
git -C "$tmp" checkout -q 586f13f8d898a60583a3364f146a3b6f5a763164 &&
mkdir -p .claude/skills &&
mkdir .claude/skills/code-testing-extensions &&
cp -R "$tmp"/plugins/dotnet-test/skills/code-testing-extensions/. .claude/skills/code-testing-extensions/ &&
rm -rf "$tmp"If Claude Code was already running and this created the skills folder, run /reload-skills.
Or install the dotnet-test plugin it ships in. Installs the latest version, not the one we checked. Installs everything in the plugin, including any hooks, MCP servers and scripts our check doesn't cover.
claude plugin marketplace add dotnet/skills --scope project &&
claude plugin install dotnet-test@dotnet-agent-skills --scope projectPinned to commit 586f13f, the one we checked.
Skills in the Claude apps belong to your account rather than to a project.
Make code-testing-extensions.zip, with the skill folder at the top level:
tmp="$(mktemp -d)" &&
git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/dotnet/skills.git "$tmp" &&
git -C "$tmp" fetch -q --depth 1 origin 586f13f8d898a60583a3364f146a3b6f5a763164 &&
git -C "$tmp" sparse-checkout set -- plugins/dotnet-test/skills/code-testing-extensions &&
git -C "$tmp" checkout -q 586f13f8d898a60583a3364f146a3b6f5a763164 &&
out="$(mktemp -d)" &&
cp -R "$tmp"/plugins/dotnet-test/skills/code-testing-extensions "$out"/code-testing-extensions &&
(cd "$out" && zip -qr - code-testing-extensions) > code-testing-extensions.zip &&
rm -rf "$tmp" "$out"In Claude, open Customize > Skills, select +, then + Create skill > Upload a skill, and choose code-testing-extensions.zip.
On Free, Pro and Max plans, turn on Code execution and file creation (Create and edit files in newer settings) under Settings > Capabilities.
Pinned to commit 586f13f, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&
git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/dotnet/skills.git "$tmp" &&
git -C "$tmp" fetch -q --depth 1 origin 586f13f8d898a60583a3364f146a3b6f5a763164 &&
git -C "$tmp" sparse-checkout set -- plugins/dotnet-test/skills/code-testing-extensions &&
git -C "$tmp" checkout -q 586f13f8d898a60583a3364f146a3b6f5a763164 &&
mkdir -p .agents/skills &&
mkdir .agents/skills/code-testing-extensions &&
cp -R "$tmp"/plugins/dotnet-test/skills/code-testing-extensions/. .agents/skills/code-testing-extensions/ &&
rm -rf "$tmp"Codex picks up new skills on its own; restart it if this one does not appear.
Pinned to commit 586f13f, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&
git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/dotnet/skills.git "$tmp" &&
git -C "$tmp" fetch -q --depth 1 origin 586f13f8d898a60583a3364f146a3b6f5a763164 &&
git -C "$tmp" sparse-checkout set -- plugins/dotnet-test/skills/code-testing-extensions &&
git -C "$tmp" checkout -q 586f13f8d898a60583a3364f146a3b6f5a763164 &&
mkdir -p .cursor/skills &&
mkdir .cursor/skills/code-testing-extensions &&
cp -R "$tmp"/plugins/dotnet-test/skills/code-testing-extensions/. .cursor/skills/code-testing-extensions/ &&
rm -rf "$tmp"Pinned to commit 586f13f, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&
git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/dotnet/skills.git "$tmp" &&
git -C "$tmp" fetch -q --depth 1 origin 586f13f8d898a60583a3364f146a3b6f5a763164 &&
git -C "$tmp" sparse-checkout set -- plugins/dotnet-test/skills/code-testing-extensions &&
git -C "$tmp" checkout -q 586f13f8d898a60583a3364f146a3b6f5a763164 &&
mkdir -p .github/skills &&
mkdir .github/skills/code-testing-extensions &&
cp -R "$tmp"/plugins/dotnet-test/skills/code-testing-extensions/. .github/skills/code-testing-extensions/ &&
rm -rf "$tmp"In a running Copilot CLI session, run /skills reload.
Or install it with gh skill, which also installs the commit we checked. Needs GitHub CLI 2.90 or later.
gh skill install dotnet/skills plugins/dotnet-test/skills/code-testing-extensions/SKILL.md@586f13f8d898a60583a3364f146a3b6f5a763164 --agent github-copilot --scope projectPinned to commit 586f13f, the one we checked.
From your project's root folder:
tmp="$(mktemp -d)" &&
git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/dotnet/skills.git "$tmp" &&
git -C "$tmp" fetch -q --depth 1 origin 586f13f8d898a60583a3364f146a3b6f5a763164 &&
git -C "$tmp" sparse-checkout set -- plugins/dotnet-test/skills/code-testing-extensions &&
git -C "$tmp" checkout -q 586f13f8d898a60583a3364f146a3b6f5a763164 &&
mkdir -p .gemini/skills &&
mkdir .gemini/skills/code-testing-extensions &&
cp -R "$tmp"/plugins/dotnet-test/skills/code-testing-extensions/. .gemini/skills/code-testing-extensions/ &&
rm -rf "$tmp"In a running session, run /skills reload.
Or use Gemini CLI’s own installer. Installs the latest version, not the one we checked.
gemini skills install https://github.com/dotnet/skills.git --path plugins/dotnet-test/skills/code-testing-extensions --scope workspacePinned to commit 586f13f, the one we checked.
Codex, Cursor, Copilot, VS Code, Gemini CLI, OpenCode, Goose, Amp and Zed all read .agents/skills; Claude Code and Kiro list only their own folders.
From your project's root folder:
tmp="$(mktemp -d)" &&
git clone -q --depth 1 --filter=blob:none --no-checkout https://github.com/dotnet/skills.git "$tmp" &&
git -C "$tmp" fetch -q --depth 1 origin 586f13f8d898a60583a3364f146a3b6f5a763164 &&
git -C "$tmp" sparse-checkout set -- plugins/dotnet-test/skills/code-testing-extensions &&
git -C "$tmp" checkout -q 586f13f8d898a60583a3364f146a3b6f5a763164 &&
mkdir -p .agents/skills &&
mkdir .agents/skills/code-testing-extensions &&
cp -R "$tmp"/plugins/dotnet-test/skills/code-testing-extensions/. .agents/skills/code-testing-extensions/ &&
rm -rf "$tmp"Or use the skills CLI from skills.sh. Installs the latest version, not the one we checked. The skills CLI reports installs to skills.sh unless you set DISABLE_TELEMETRY=1.
npx skills@1.7.4 add dotnet/skills --skill code-testing-extensionsWhat it can touch
From the files and frontmatter at commit 586f13f. This is how much a skill can do, not whether it is risky.
What it can touch: Shell, network or credentials
Runs shell commands
Its instructions or files give the agent commands to run on your computer.
Reaches the network
It sends or fetches data over the internet, for example with curl, an HTTP library or a package install.
Names web addresses
It mentions outside web addresses the agent may visit. We list them but don't follow them.
Pattern check
Pattern check: nothing flagged · commit 586f13f · 27 Oct 2026
We checked every text file in this skill, at commit 586f13f on 27 Oct 2026, against 45 published patterns such as download-and-run commands, hidden text and credential access. We don't run the skill, we don't read the web pages it points to, and we can't judge everything its instructions might lead an agent to do. In published tests, pattern checks like this one missed most malicious skills. Read the skill before you install it — especially anything it asks you to download or run.
How the check worksReport an incorrect finding
Outside links we did not follow
- https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
- https://github.com/catchorg/Catch2/archive/refs/tags/v3.5.4.zip
- https://github.com/apple/swift-collections.git
Format check
Each agent reads SKILL.md a little differently. We check the file against each one's published rules; we don't run the skill in any agent.
Agent Skills specPasses with warnings
The open format from agentskills.io, held to what the strictest agents enforce, so one folder loads everywhere.
- Warning
Fields outside the spec: user-invocable (read by Claude Code and VS Code) and disable-model-invocation (read by Claude Code and VS Code). Uploads to the Claude apps and API, and the spec's validator, reject the file; most agents ignore these fields. O1
Fix: Delete them for a portable skill, or keep them if you only target the agents that read them.
- Note
The description doesn't say when to use the skill. D6
Fix: Add a sentence such as "Use when …" naming the requests or files that should trigger it.
- Note
Reference files that SKILL.md doesn't link: extensions/cpp-examples.md, extensions/kotlin-examples.md, extensions/powershell-examples.md, extensions/ruby-examples.md and extensions/rust-examples.md. Anthropic suggests linking every reference file directly from SKILL.md. B4
Fix: Link each one from SKILL.md and say when to read it.
- Note
Reference files over 100 lines with no table of contents at the top: extensions/cpp-examples.md (299 lines), extensions/cpp.md (510 lines), extensions/dotnet-examples.md (371 lines), extensions/dotnet.md (219 lines), extensions/go-examples.md (397 lines) and 16 more. B5
Fix: Add a short list of the sections at the top of each.
- Warning
Claude CodePasses
Claude Code reads its own extra fields, ignores unknown ones, and still loads a skill whose frontmatter is broken, without its fields.
- Note
Reference files that SKILL.md doesn't link: extensions/cpp-examples.md, extensions/kotlin-examples.md, extensions/powershell-examples.md, extensions/ruby-examples.md and extensions/rust-examples.md. Anthropic suggests linking every reference file directly from SKILL.md. B4
Fix: Link each one from SKILL.md and say when to read it.
- Note
Reference files over 100 lines with no table of contents at the top: extensions/cpp-examples.md (299 lines), extensions/cpp.md (510 lines), extensions/dotnet-examples.md (371 lines), extensions/dotnet.md (219 lines), extensions/go-examples.md (397 lines) and 16 more. B5
Fix: Add a short list of the sections at the top of each.
- Note
Claude apps & API uploadFails
Uploading to claude.ai or the Claude API, or packaging with Anthropic's script, accepts only the six spec fields and stops on anything else.
- Error
Upload and packaging fail on fields outside the spec: user-invocable and disable-model-invocation. O1
Fix: Delete them, and keep your own data under metadata as text values.
- Note
The description is 303 characters. The claude.ai Help Center says 200 at most, though Anthropic's API docs and validator allow 1,024. D4
Fix: If the claude.ai upload refuses it, trim the description to 200 characters.
- Note
Reference files that SKILL.md doesn't link: extensions/cpp-examples.md, extensions/kotlin-examples.md, extensions/powershell-examples.md, extensions/ruby-examples.md and extensions/rust-examples.md. Anthropic suggests linking every reference file directly from SKILL.md. B4
Fix: Link each one from SKILL.md and say when to read it.
- Note
Reference files over 100 lines with no table of contents at the top: extensions/cpp-examples.md (299 lines), extensions/cpp.md (510 lines), extensions/dotnet-examples.md (371 lines), extensions/dotnet.md (219 lines), extensions/go-examples.md (397 lines) and 16 more. B5
Fix: Add a short list of the sections at the top of each.
- Error
OpenAI (Codex & API)Passes with warnings
Codex finds SKILL.md by its exact name and needs a description; OpenAI's Skills API checks the frontmatter against the spec and caps uploads.
- Warning
Fields outside the spec: user-invocable and disable-model-invocation. Codex ignores them; OpenAI doesn't say whether its upload accepts them. O1
Fix: Delete them, or move your own data under metadata as text values.
- Warning
- VS Code & CopilotPasses
SKILL.md
Files
22 files
Show 2 more
More from dotnet/skills
analyzing-dotnet-performance
dotnet/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.
- Runs shell commands
Pattern check: Nothing flaggedMIT · 5.8k repo stars · Updated 1 Sept 2026
android-tombstone-symbolication
dotnet/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.
- Runs shell commands
- Reaches the network
- +2 more
Pattern check: Nothing flaggedMIT · 5.8k repo stars · Updated 21 Apr 2026
assertion-quality
dotnet/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.
- Instructions only
Pattern check: Nothing flaggedMIT · 5.8k repo stars · Updated 9 Oct 2026
author-component
dotnet/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).
- Instructions only
Pattern check: Nothing flaggedMIT · 5.8k repo stars · Updated 25 May 2026
binlog-failure-analysis
dotnet/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.
- Runs shell commands
Pattern check: Nothing flaggedMIT · 5.8k repo stars · Updated 20 Oct 2026
binlog-generation
dotnet/skills
Generate MSBuild binary logs (binlogs) for build diagnostics and analysis. USE FOR: adding /bl:{} to any dotnet build, test, pack, publish, or restore command to capture a full build execution trace, prerequisite for binlog-failure-analysis and build-perf-diagnostics skills, enabling post-build investigation of errors or performance. Requires MSBuild 17.8+ / .NET 8 SDK+ for {} placeholder; PowerShell must quote the complete switch as '-bl:{}'. DO NOT USE FOR: non-MSBuild build systems (npm, Maven, CMake), analyzing an existing binlog (use binlog-failure-analysis instead), binlog MCP startup failures (use troubleshoot-binlog-mcp).
- Runs shell commands
Pattern check: Nothing flaggedMIT · 5.8k repo stars · Updated 20 Oct 2026