Find performance anti-patterns in .NET code.
From Microsoft's .NET skills. Your agent scans .NET code for performance problems across async, memory, strings, collections, LINQ, regex, serialisation and I/O, ranked by severity.
Install this skill
npx skills add https://github.com/dotnet/skills --skill analyzing-dotnet-performanceRuns the open-source skills CLI in your own terminal. It asks which agents to add the skill to. Read what it tells your agent to do before you install it.
Install for your agent
Claude Code
Run this in your project
npx skills add https://github.com/dotnet/skills --skill analyzing-dotnet-performance -a claude-codeAdd
-gto install it for every project instead.Or ask Claude Code to do it
Install the "analyzing-dotnet-performance" skill from https://github.com/dotnet/skills for Claude Code. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .claude/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.claude/skills/for this project, or~/.claude/skills/for all your projects.Picked up in the current session, no restart needed.
Claude Code skills docsClaude.ai
Upload the ZIP
- In Settings > Capabilities, turn on Code execution and file creation.
- Go to Customize > Skills, press +, then Create skill.
- Choose Upload a skill and pick the ZIP you downloaded.
Free, Pro and Max plans. On Team and Enterprise, an owner turns skills on in Organization settings first.
Claude.ai skills docsChatGPT
Upload the ZIP
- Open Skills in ChatGPT and select Create.
- Select Upload from your computer and pick the ZIP you downloaded.
- Wait for ChatGPT's safety scan. A skill marked Needs Review asks you to check it before use.
Skills that rely on scripts or a terminal may not work unchanged in ChatGPT.
ChatGPT skills docsCodex
Run this in your project
npx skills add https://github.com/dotnet/skills --skill analyzing-dotnet-performance -a codexAdd
-gto install it for every project instead.Or ask Codex to do it
Install the "analyzing-dotnet-performance" skill from https://github.com/dotnet/skills for Codex. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .agents/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.agents/skills/for this project, or~/.agents/skills/for all your projects.Restart Codex if the skill does not show up.
Codex skills docsCursor
Run this in your project
npx skills add https://github.com/dotnet/skills --skill analyzing-dotnet-performance -a cursorAdd
-gto install it for every project instead.Or ask Cursor to do it
Install the "analyzing-dotnet-performance" skill from https://github.com/dotnet/skills for Cursor. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .cursor/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.cursor/skills/for this project, or~/.cursor/skills/for all your projects.Run it by typing / and the skill name in chat.
Cursor skills docsGitHub Copilot
Run this in your project
npx skills add https://github.com/dotnet/skills --skill analyzing-dotnet-performance -a github-copilotAdd
-gto install it for every project instead.Or ask GitHub Copilot to do it
Install the "analyzing-dotnet-performance" skill from https://github.com/dotnet/skills for GitHub Copilot. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .github/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.github/skills/for this project, or~/.copilot/skills/for all your projects.Works in Copilot CLI, the cloud agent and agent mode in VS Code and JetBrains.
GitHub Copilot skills docsAntigravity
Run this in your project
npx skills add https://github.com/dotnet/skills --skill analyzing-dotnet-performance -a antigravityAdd
-gto install it for every project instead.Or ask Antigravity to do it
Install the "analyzing-dotnet-performance" skill from https://github.com/dotnet/skills for Antigravity. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .agents/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Antigravity skills docsOr copy the folder yourself
Unzip the download into
.agents/skills/for this project, or~/.gemini/config/skills/for all your projects.Gemini CLI
Run this in your project
npx skills add https://github.com/dotnet/skills --skill analyzing-dotnet-performance -a gemini-cliAdd
-gto install it for every project instead.Or ask Gemini CLI to do it
Install the "analyzing-dotnet-performance" skill from https://github.com/dotnet/skills for Gemini CLI. Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .gemini/skills/ in this project. Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.
Or copy the folder yourself
Unzip the download into
.gemini/skills/for this project, or~/.gemini/skills/for all your projects.Run /skills to check it was found.
Gemini CLI skills docs
- Installs
- 2.9K via skills.sh
- GitHub
- 5.4K stars ↗
- Last updated
- 13 Sept 2026
- Licence
- MIT
Security checks
Run by independent scanners and published on skills.sh. Their results, not a Viberation review.
- 12 May 2026
Gen Agent Trust Hub Pass
This skill provides a systematic approach to identifying .NET performance anti-patterns. It uses standard diagnostic commands to analyze source code and does not exhibit any suspicious or malicious behavior.
- 12 May 2026
Socket Pass
No alerts
- 12 May 2026
Snyk Pass
Risk: LOW · No issues
- 11 Mar 2026
Runlayer Warning
1/8 files flagged
- 16 Apr 2026
ZeroLeaks Pass
Score: 93/100 · 2 sections analyzed
What's inside (8 files)
references/async-patterns.md2.9K charsreferences/collections-and-linq.md7.7K charsreferences/critical-patterns.md6.7K charsreferences/io-and-serialization.md3.6K charsreferences/memory-and-strings.md5.8K charsreferences/regex-patterns.md3.3K charsreferences/structural-patterns.md1.7K charsSKILL.md12.6K chars
SKILL.md, first part. Shown as plain text.
--- name: analyzing-dotnet-performance description: >- 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. license: MIT --- # .NET Performance Patterns Scan C#/.NET code for performance anti-patterns and produce prioritized findings with concrete fixes. Patterns sourced from the official .NET performance blog series, distilled to customer-actionable guidance. ## When to Use - Reviewing C#/.NET code for performance optimization opportunities - Auditing hot paths for allocation-heavy or inefficient patterns - Systematic scan of a codebase for known anti-patterns before release - Second-opinion analysis after manual performance review ## When Not to Use - **Algorithmic complexity analysis** — this skill targets API usage patterns, not algorithm design - **Code not on a hot path** with no performance requirements — avoid premature optimization ## Inputs | Input | Required | Description | |-------|----------|-------------| | Source code | Yes | C# files, code blocks, or repository paths to scan | | Hot-path context | Recommended | Which code paths are performance-critical | | Target framework | Recommended | .NET version (some patterns require .NET 8+) | | Scan depth | Optional | `critical-only`, `standard` (default), or `comprehensive` | ## Workflow ### Step 1: Load Critical Reference Resolve bundled paths from the directory that contains this `SKILL.md`, not from the user's workspace. Load this reference file first: - `references/critical-patterns.md` If a direct read fails, list this skill's `references/` directory once and retry only when the listing shows the expected file. Do not use workspace file or text search to locate the skill installation. ### Step 2: Detect Code Signals and Select Topic Recipes Scan the code for signals that indicate which pattern categories to check. Use the `## Detection` section from the critical reference when available and the inline recipes in Step 3 for initial signal detection. After detecting signals, load only the topic-specific references selected by scan depth: - `critical-only`: No additional references (use only `critical-patterns.md`) - `standard` (default): Load references matching detected signals from this list: - `references/async-patterns.md` — async/Task/ValueTask signals - `references/memory-and-strings.md` — Span/Memory/string allocation signals - `references/regex-patterns.md` — Regex signals - `references/collections-and-linq.md` — Dictionary/List/LINQ signals - `references/io-and-serialization.md` — JsonSerializer/HttpClient/Stream signals - `references/structural-patterns.md` — always loaded (unsealed classes checked regardless) - `comprehensive`: Load all six topic-specific references above For coverage reporting, the selected references are `references/critical-patterns.md` plus only the topic-specific references selected above. If any selected reference remains unavailable after retry, use the inline recipes in Step 3 for the missing coverage. Include `Reference coverage: reduced; unavailable: <paths>; used inline recipes for missing references.` in the final report, with `<paths>` replaced by the missing relative paths of the selected references only. Use the `## Detection` sections from loaded reference files and the inline recipes in Step 3 for categories whose reference files are unavailable. | Signal in Code | Topic | |----------------|-------| | `async`, `await`, `Task`, `ValueTask` | Async patterns | | `Span<`, `Memory<`, `stackalloc`, `ArrayPool`, `string.Substring`, `.Replace(`, `.ToLower()`, `+=` in loops, `params` | Memory & strings | | `Regex`, `[GeneratedRegex]`, `Regex.Match`, `RegexOptions.Compiled` | Regex patterns | | `Dictionary<`, `List<`, `.ToList()`, `.Where(`, `.Select(`, LINQ me
Key info
- Pricing
- Open source
- Category
- Skills
Related reading
- Fundamentals
Reviewing code you did not write
You are going to merge a lot of code you did not type. Reviewing it is a different skill from writing it, and it is the one that actually keeps a vibe-coded…
Intermediate