dotnet-breaking-changes
dotnet-breaking-changes is a skill in dotnet/skills, last changed 3 Nov 2026. It can run shell commands.
Use before changing .NET/C# code whose callers you do not control: a NuGet library, or a repo with PublicAPI.Shipped/Unshipped.txt, ApiCompat, multiple TargetFrameworks, InternalsVisibleTo, or generated (.g.cs) partials. Green builds miss silent breaks from optional parameters, parameter names, sealing, const values, nullability, and #if. USE FOR: "without breaking existing callers"; adding a public method, overload, optional parameter, or interface member to a shipped library; renaming a public method or an internal helper a friend assembly uses; consolidating duplicated logic; changing a signature, nullability, default, or attribute; adding a target framework; RS0016/RS0017 or ApiCompat errors; "is this PR breaking?". For a rename, extract, or merge, also invoke csharp-refactoring. DO NOT USE FOR: an executable whose callers all live in one project; renaming a local variable or private member, even in a shipped library; formatting; framework/SDK/NuGet upgrades (use dotnet-upgrade).
At a glance
Pattern check
Nothing flagged
That isn't proof the skill is harmless.
Commit 26a0658 · 6 Nov 2026
How the check worksPattern check: nothing flagged
That isn't proof the skill is harmless.
QAI Index
We rate every listed skill the same way, from 0 to 100.
A guide to compare by, not a verdict on the skill.
How it's scoredInstall
Each tab says whether it installs commit 26a0658, the one we checked, or the latest version.
OpenCode also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Goose also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Windsurf (Devin Desktop) also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Zed also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Roo Code also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Factory Droid also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Junie also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
Amp also looks in .agents/skills/ and ~/.agents/skills/, so use the Any agent steps.
No install command here reaches Kiro. Copy the skill's folder into .kiro/skills/ in your project, or ~/.kiro/skills/ for all your projects. dotnet/skills/plugins/dotnet/skills/dotnet-breaking-changes (opens in a new tab)
Antigravity also looks in .agents/skills/, so the Any agent steps reach it with This project. For All projects, see where Antigravity looks.
Cline also looks in .claude/skills/, so the Claude Code steps reach it with This project. For All projects, see where Cline looks.
Claude Code
Pinned to commit 26a0658, 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 26a06585630870595c4fba50e313621989f58fc7 &&git -C "$tmp" sparse-checkout set -- plugins/dotnet/skills/dotnet-breaking-changes &&git -C "$tmp" checkout -q 26a06585630870595c4fba50e313621989f58fc7 &&mkdir -p .claude/skills &&mkdir .claude/skills/dotnet-breaking-changes &&cp -R "$tmp"/plugins/dotnet/skills/dotnet-breaking-changes/. .claude/skills/dotnet-breaking-changes/ &&rm -rf "$tmp"If Claude Code was already running and this created the skills folder, run /reload-skills.
Claude apps
Pinned to commit 26a0658, the one we checked.
Skills in the Claude apps belong to your account rather than to a project.
Make dotnet-breaking-changes.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 26a06585630870595c4fba50e313621989f58fc7 &&git -C "$tmp" sparse-checkout set -- plugins/dotnet/skills/dotnet-breaking-changes &&git -C "$tmp" checkout -q 26a06585630870595c4fba50e313621989f58fc7 &&out="$(mktemp -d)" &&cp -R "$tmp"/plugins/dotnet/skills/dotnet-breaking-changes "$out"/dotnet-breaking-changes &&(cd "$out" && zip -qr - dotnet-breaking-changes) > dotnet-breaking-changes.zip &&rm -rf "$tmp" "$out"In Claude, open Customize > Skills, select +, then + Create skill > Upload a skill, and choose dotnet-breaking-changes.zip.
On Free, Pro and Max plans, turn on Code execution and file creation (Create and edit files in newer settings) under Settings > Capabilities.
Codex
Pinned to commit 26a0658, 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 26a06585630870595c4fba50e313621989f58fc7 &&git -C "$tmp" sparse-checkout set -- plugins/dotnet/skills/dotnet-breaking-changes &&git -C "$tmp" checkout -q 26a06585630870595c4fba50e313621989f58fc7 &&mkdir -p .agents/skills &&mkdir .agents/skills/dotnet-breaking-changes &&cp -R "$tmp"/plugins/dotnet/skills/dotnet-breaking-changes/. .agents/skills/dotnet-breaking-changes/ &&rm -rf "$tmp"Codex picks up new skills on its own; restart it if this one does not appear.
Cursor
Pinned to commit 26a0658, 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 26a06585630870595c4fba50e313621989f58fc7 &&git -C "$tmp" sparse-checkout set -- plugins/dotnet/skills/dotnet-breaking-changes &&git -C "$tmp" checkout -q 26a06585630870595c4fba50e313621989f58fc7 &&mkdir -p .cursor/skills &&mkdir .cursor/skills/dotnet-breaking-changes &&cp -R "$tmp"/plugins/dotnet/skills/dotnet-breaking-changes/. .cursor/skills/dotnet-breaking-changes/ &&rm -rf "$tmp"Copilot & VS Code
Pinned to commit 26a0658, 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 26a06585630870595c4fba50e313621989f58fc7 &&git -C "$tmp" sparse-checkout set -- plugins/dotnet/skills/dotnet-breaking-changes &&git -C "$tmp" checkout -q 26a06585630870595c4fba50e313621989f58fc7 &&mkdir -p .github/skills &&mkdir .github/skills/dotnet-breaking-changes &&cp -R "$tmp"/plugins/dotnet/skills/dotnet-breaking-changes/. .github/skills/dotnet-breaking-changes/ &&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/skills/dotnet-breaking-changes/SKILL.md@26a06585630870595c4fba50e313621989f58fc7 --agent github-copilot --scope projectGemini CLI
Pinned to commit 26a0658, 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 26a06585630870595c4fba50e313621989f58fc7 &&git -C "$tmp" sparse-checkout set -- plugins/dotnet/skills/dotnet-breaking-changes &&git -C "$tmp" checkout -q 26a06585630870595c4fba50e313621989f58fc7 &&mkdir -p .gemini/skills &&mkdir .gemini/skills/dotnet-breaking-changes &&cp -R "$tmp"/plugins/dotnet/skills/dotnet-breaking-changes/. .gemini/skills/dotnet-breaking-changes/ &&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/skills/dotnet-breaking-changes --scope workspaceAny agent
Pinned to commit 26a0658, the one we checked.
OpenCode, Goose, Windsurf (Devin Desktop), Zed, Roo Code, Factory Droid, Junie, Amp and Antigravity read .agents/skills in a project.
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 26a06585630870595c4fba50e313621989f58fc7 &&git -C "$tmp" sparse-checkout set -- plugins/dotnet/skills/dotnet-breaking-changes &&git -C "$tmp" checkout -q 26a06585630870595c4fba50e313621989f58fc7 &&mkdir -p .agents/skills &&mkdir .agents/skills/dotnet-breaking-changes &&cp -R "$tmp"/plugins/dotnet/skills/dotnet-breaking-changes/. .agents/skills/dotnet-breaking-changes/ &&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 dotnet-breaking-changesWhat it can touch
From the files and frontmatter at commit 26a0658. This is how much a skill can do, not whether it is risky.
Pattern check
Pattern check: nothing flagged · commit 26a0658 · 6 Nov 2026
We checked every text file in this skill, at commit 26a0658 on 6 Nov 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.
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
- Claude CodePasses
Claude apps & API uploadPasses
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.
- Note
The description is 998 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
- OpenAI (Codex & API)Passes
- VS Code & CopilotPasses
SKILL.md
Files
More from dotnet/skills
Other Coding & code review skills
Same category, most repo stars first.