/ Diretório / Playground / .NET Skills
● Comunidade Aaronontheweb ⚡ Instantâneo

.NET Skills

por Aaronontheweb · Aaronontheweb/dotnet-skills

.NET 8/9 idiomático no Claude — skills para testes xUnit, performance BenchmarkDotNet, empacotamento NuGet, correção de async/await e estilo C#.

As .NET Skills de Aaron Stannard são um pacote battle-tested para desenvolvedores .NET sérios. Além de geração simples de código, cobrem as partes que o modelo habitualmente erra: cancelamento assíncrono, uso de ConfigureAwait, IDisposable, trade-offs entre struct e class, padrões BenchmarkDotNet, metadados de empacotamento NuGet e estilo moderno xUnit + FluentAssertions.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

pronto

Instalar

Escolha seu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "dotnet-skills-aaronontheweb": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/Aaronontheweb/dotnet-skills",
        "~/.claude/skills/dotnet"
      ],
      "_inferred": true
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "dotnet-skills-aaronontheweb": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/Aaronontheweb/dotnet-skills",
        "~/.claude/skills/dotnet"
      ],
      "_inferred": true
    }
  }
}

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "dotnet-skills-aaronontheweb": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/Aaronontheweb/dotnet-skills",
        "~/.claude/skills/dotnet"
      ],
      "_inferred": true
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "dotnet-skills-aaronontheweb": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/Aaronontheweb/dotnet-skills",
        "~/.claude/skills/dotnet"
      ],
      "_inferred": true
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "dotnet-skills-aaronontheweb",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/Aaronontheweb/dotnet-skills",
        "~/.claude/skills/dotnet"
      ]
    }
  ]
}

O Continue usa um array de objetos de servidor em vez de um map.

~/.config/zed/settings.json
{
  "context_servers": {
    "dotnet-skills-aaronontheweb": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/Aaronontheweb/dotnet-skills",
          "~/.claude/skills/dotnet"
        ]
      }
    }
  }
}

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

claude mcp add dotnet-skills-aaronontheweb -- git clone https://github.com/Aaronontheweb/dotnet-skills ~/.claude/skills/dotnet

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: .NET Skills

Audite um serviço para correção de async/await

👤 Times backend .NET ⏱ ~45 min advanced

Quando usar: Você herdou um serviço com deadlocks intermitentes e suspeita de problemas com async.

Pré-requisitos
  • Skill instalada — git clone https://github.com/Aaronontheweb/dotnet-skills ~/.claude/skills/dotnet
Fluxo
  1. Escaneie
    dotnet-skills async audit em src/. Sinalize: ConfigureAwait(false) faltando em bibliotecas, .Result/.Wait, async void (não-event), propagação de CancellationToken faltando.✓ Copiado
    → Lista concreta de file:line com severidade
  2. Corrija um cluster
    Escolha o cluster de maior severidade (risco de deadlock). Proponha patches, arquivo por arquivo. Mostre diffs.✓ Copiado
    → Patches cirúrgicos, não reescritas de arquivo inteiro

Resultado: Higiene async melhorada; uma fonte de deadlocks intermitentes eliminada.

Armadilhas
  • Correção ConfigureAwait quebra código de thread UI — A skill diferencia código de lib vs app; respeite essa fronteira
Combine com: filesystem

Faça benchmark de um hot path com BenchmarkDotNet

👤 Devs .NET curiosos sobre performance ⏱ ~60 min advanced

Quando usar: O profiler aponta para um método; você precisa de números rigorosos.

Fluxo
  1. Crie o benchmark
    Skill: crie um projeto BenchmarkDotNet para OrderCalc.Compute. Múltiplos tamanhos de input. Memory diagnoser habilitado. Markdown exporter.✓ Copiado
    → Projeto de benchmark compila; executa em Release
  2. Execute + interprete
    Execute o benchmark. Reporte mean, allocated, gen0. Qual é a principal alocação?✓ Copiado
    → Atribuição concreta ao alocador (provavelmente concatenação de string ou LINQ)
  3. Patch + re-benchmark
    Substitua LINQ por um loop manual. Execute novamente. Mostre antes/depois.✓ Copiado
    → Alocações caem de forma mensurável

Resultado: Melhoria de performance quantificada, não impressão subjetiva.

Armadilhas
  • Executando builds Debug — BenchmarkDotNet recusa Debug; garanta Release

Prepare uma biblioteca para release no NuGet

👤 Autores OSS ⏱ ~30 min intermediate

Quando usar: Primeiro release NuGet da sua lib; você quer que esteja polida.

Fluxo
  1. Audite o empacotamento
    dotnet-skills: audite MyLib.csproj para prontidão NuGet. Verifique Description, Authors, License, RepositoryUrl, source-link, multi-targeting.✓ Copiado
    → Lista concreta de campos faltando
  2. Revisão de superfície de API
    Gere a superfície de API pública; sinalize tipos internos vazados ou públicos com nomes estranhos.✓ Copiado
    → Dump de superfície de API com preocupações apontadas

Resultado: Pacote limpo pronto para publicar.

Armadilhas
  • Mismatch de licença (arquivo LICENSE vs <PackageLicenseExpression>) — A skill detecta isso; alinhe-os

Combinações

Combine com outros MCPs para 10× de alavancagem

dotnet-skills-aaronontheweb + filesystem

Aplique patches em todo o projeto

Aplique os patches do async_audit em src/. Um commit por arquivo.✓ Copiado
dotnet-skills-aaronontheweb + github

Abra PR com resultados de benchmark

Abra um PR com o patch de performance + benchmark antes/depois na descrição.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
async_audit path Verificação de saúde da codebase 0
scaffold_benchmark target_method Trabalho de performance 0
interpret_bench bench_md Após executar o benchmark 0
nuget_audit csproj Pré-release 0
api_surface assembly_or_proj Revisão de API 0
test_conventions_check test_path Revisão de PR 0

Custo e limites

O que custa rodar

Cota de API
N/A
Tokens por chamada
Auditorias escaneiam código = uso maior de tokens; 5k–30k por passagem
Monetário
Gratuito
Dica
Audite um projeto por vez; não espalhe por um monorepo de uma vez

Segurança

Permissões, segredos, alcance

Escopos mínimos: filesystem-read filesystem-write
Armazenamento de credenciais: Nenhum
Saída de dados: Nenhuma

Solução de problemas

Erros comuns e correções

Audit too noisy

Especifique o threshold de severidade; a skill tem padrão para todos

Benchmark won't run

Deve ser build Release; BenchmarkDotNet recusa Debug

Verificar: dotnet build -c Release
API surface includes internal types

Certifique-se de que InternalsVisibleTo está configurado corretamente; a skill reporta como configurado

Alternativas

.NET Skills vs. outros

AlternativaQuando usarTroca
Roslyn analyzers in repoVocê quer imposição em tempo de CIMais configuração; menos interativo
ReSharper / RiderVocê quer correções em tempo de IDEPago; não controlado por LLM
Aspire / .NET Cloud Native skillsFoco em cloud-nativeEscopo diferente

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills