From dotnet-wpf
Configura e audita projetos C#/.NET desktop (WinForms, WPF, Avalonia) para desenvolvimento assistido por Claude Code em Windows. Gera ou atualiza CLAUDE.md (global e por projeto), regras escopadas em .claude/rules/, .editorconfig, Directory.Build.props, global.json e hooks de pre-commit. Audita codebase existente para detectar acoplamento UI/logica, God Classes, e violacoes arquiteturais, recomendando refatoracao estrutural e desacoplamento. Use quando o usuario quiser: configurar projeto .NET desktop para Claude Code; criar ou melhorar CLAUDE.md de projeto C#; adicionar padroes de codificacao e convencoes de teste ao projeto; auditar acoplamento ou arquitetura do codebase; preparar ambiente de desenvolvimento Windows para IA; migrar projeto .NET Framework para .NET 8+ e reconfigurar tooling. NAO use para: escrever testes ou codigo especifico, resolver erros de compilacao, deploy/CI-CD, projetos web/API/mobile, adicionar bibliotecas, ou otimizacao de performance.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dotnet-wpf:dotnet-desktop-setupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Skill de setup para projetos C#/.NET desktop no Claude Code. Funciona como um wizard que analisa
Skill de setup para projetos C#/.NET desktop no Claude Code. Funciona como um wizard que analisa o estado atual do ambiente e codebase, depois gera ou atualiza arquivos de configuracao para maximizar a qualidade do codigo gerado pelo Claude.
Usa progressive disclosure — este arquivo contem o workflow e decisoes. Templates e guias
detalhados ficam em references/ e sao lidos sob demanda.
Execute os passos em ordem. Cada passo verifica o estado atual antes de agir — nunca sobrescreve arquivos existentes sem apresentar diff ao usuario.
Tente executar scripts/audit-environment.sh (requer Git Bash no Windows).
Se bash nao estiver disponivel, execute os comandos equivalentes inline usando as ferramentas
Bash, Grep e Glob do Claude Code:
dotnet --list-sdks para listar SDKsO script/auditoria coleta:
dotnet --list-sdks)MessageBox.Show() em arquivos que NAO sao Form*.csSystem.Windows.Forms em classes fora da camada UIpublic static mutaveis (padrao Global.cs)Apresente o relatorio ao usuario antes de prosseguir. Se o usuario pediu apenas auditoria, pare aqui.
Gere global.json na raiz da solution para fixar a versao do SDK:
{
"sdk": {
"version": "<versao-mais-alta-instalada>",
"rollForward": "latestFeature"
}
}
rollForward: latestFeature permite patch updates sem quebrarglobal.json ja existe, mostre diff e pergunte ao usuarioLeia references/global-claude-md-template.md para o template completo.
Este arquivo contem convencoes que se aplicam a qualquer projeto C#/.NET do usuario:
Regra: Se ~/.claude/CLAUDE.md ja existe, NAO sobrescreva. Leia o conteudo atual, identifique
lacunas comparando com o template, e proponha apenas as adicoes necessarias.
Leia references/project-claude-md-template.md para o template.
O CLAUDE.md do projeto segue o framework WHAT-WHY-HOW:
Limite: 300 linhas maximo. Se o existente ja esta bom (como projetos com CLAUDE.md detalhado), proponha apenas melhorias incrementais:
Services/LicenseValidationService.cs")Leia references/scoped-rules-templates.md para os 4 templates.
Regras escopadas usam YAML frontmatter com paths: para ativar apenas em arquivos relevantes:
| Arquivo | Escopo | Conteudo |
|---|---|---|
testing.md | **/*Tests*/** | Convencoes xUnit, Arrange/Act/Assert, nomenclatura |
ui-decoupling.md | **/*.cs | Onde MessageBox e permitido, separacao de camadas |
architecture.md | **/*.cs | Direcao de dependencias, DI, camadas |
domain.md | **/*.cs | Glossario de dominio, regras de validacao especificas |
Para domain.md, analise o CLAUDE.md existente e extraia terminologia do projeto.
Crie o diretorio .claude/rules/ se nao existir. Para regras que ja existem, mostre diff.
Leia references/editorconfig-template.md para o template completo.
Pontos criticos para projetos .NET desktop:
charset = utf-8-bom — necessario para caracteres especiais (portugues, acentos)end_of_line = crlf — padrao Windowswarning (nao error) para adocao gradualSe .editorconfig ja existe, mostre diff. Nunca sobrescreva.
Gere Directory.Build.props na raiz da solution com propriedades compartilhadas.
Cuidado com frameworks mistos! Se a solution tem projetos em net5.0, net6.0 e net8.0, use condicoes para nao quebrar builds:
<Project>
<PropertyGroup>
<Nullable>enable</Nullable>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))">
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
Apos gerar, sempre valide: dotnet build <solution>.sln
Se Directory.Build.props ja existe, mostre diff. Nunca sobrescreva.
Apresente ao usuario como recomendacao, nao aplique automaticamente:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "dotnet build --no-restore -v q 2>&1 | tail -5",
"description": "Build rapido apos editar arquivo C#"
}
],
"PreCommit": [
{
"command": "dotnet test --no-build -v q",
"description": "Roda testes antes de commit"
}
]
}
}
Explique: hooks de build a cada edicao podem ser lentos em solutions grandes. O usuario decide.
Execute todos os 8 passos na ordem.
Execute apenas Passo 1, apresente relatorio.
Execute Passo 1 (rapido) + Passo 5.
Leia estes arquivos somente quando necessario no passo correspondente:
| Arquivo | Leia quando... |
|---|---|
references/global-claude-md-template.md | Passo 3 — criando/atualizando CLAUDE.md global |
references/project-claude-md-template.md | Passo 4 — criando/atualizando CLAUDE.md do projeto |
references/scoped-rules-templates.md | Passo 5 — criando regras em .claude/rules/ |
references/editorconfig-template.md | Passo 6 — criando .editorconfig |
references/decoupling-guide.md | Usuario pede ajuda com desacoplamento UI ou arquitetura |
references/testing-guide.md | Usuario pede ajuda com setup/padroes de testes xUnit |
Estes pontos falharam consistentemente quando a skill NAO foi usada — preste atencao especial:
utf-8-bom, NAO utf-8 — Projetos em portugues PRECISAM de charset = utf-8-bom no .editorconfig. utf-8 sem BOM causa problemas com acentos em builds do Visual Studio.
YAML frontmatter nas regras escopadas — Toda regra em .claude/rules/ DEVE ter frontmatter com paths:. Sem isso, a regra carrega em todo contexto e polui o prompt.
Condicoes no Directory.Build.props — Solutions com frameworks mistos (net5.0 + net8.0) QUEBRAM se voce aplicar <ImplicitUsings>enable</ImplicitUsings> sem condicao de framework. Sempre use Condition="$([MSBuild]::IsTargetFrameworkCompatible(...))".
CLAUDE.md global vs projeto — O modelo sem skill nao conhece a hierarquia ~/.claude/CLAUDE.md (global) vs ./CLAUDE.md (projeto). Sempre crie ambos.
Nunca sobrescrever CLAUDE.md existente — Proponha adicoes como diff. O usuario pode ter contexto importante que seria perdido.
Global.cs e estado estatico — Sempre incluir na auditoria a busca por public static mutavel. E o acoplamento mais insidioso e facil de esquecer.
Atualizar docs apos migracao UI — Quando a skill gera CLAUDE.md para um projeto que depois migra de WinForms para WPF, os nomes de arquivos UI e a descricao do stack ficam desatualizados. Sempre verificar se referencias a Form*.cs ainda existem apos migracao. Veja references/decoupling-guide.md secao "Checklist Pos-Migracao".
Evite estes erros ao executar o workflow:
dotnet --list-sdks retornanpx claudepluginhub j0ruge/skills_commands_manager --plugin dotnet-wpfGuides .NET developers through project initialization with customized CLAUDE.md generation, codebase health analysis using MCP tools, and .NET version migration.
Working with .NET, C#, ASP.NET Core, or related frameworks. Routes to specialist skills.
Bootstraps .claude/ dotclaude config from template if missing, then customizes all files to match project's tech stack, conventions, and patterns. Interactive via user confirmations.