Claude
no .NET - Dissecando o CLAUDE.md
![]() |
Hoje veremos o que é , como funciona e como usar o arquivo CLAUDE.md. |
Se você está usando IA para desenvolver aplicações .NET, provavelmente já percebeu que a qualidade das respostas depende muito do contexto fornecido.
É exatamente aqui que entra o arquivo CLAUDE.md.
O que é o CLAUDE.md e por que ele é importante?
O
CLAUDE.md é um arquivo Markdown especial que se torna parte do
prompt do sistema do Claude. Sempre que você inicia uma sessão do Claude Code em
um diretório que contém esse arquivo, seu conteúdo é carregado automaticamente
no contexto.
Pense nisso como escrever a documentação de integração para
um novo membro da equipe — só que este membro da equipe:
- Tem memória perfeita durante a sessão
- Segue as instruções com precisão
- Nunca se irrita quando você se repete
- Pode armazenar 1.000.000 tokens de contexto
(Sonnet 4.6 e o Opus 4.6 no plano Max)
Sem o CLAUDE.md, o Claude inicia cada sessão às cegas. Ele
não conhece a estrutura do seu projeto, suas convenções de codificação, seus
padrões preferidos ou mesmo como executar seus testes. Você acaba repetindo o
mesmo contexto várias vezes.
Com um CLAUDE.md bem
elaborado, o Claude começa a funcionar imediatamente. Ele conhece sua
arquitetura, respeita seus padrões e toma decisões alinhadas com sua base de
código desde o primeiro prompt.
Nota: De acordo com a documentação oficial do Claude Code da Anthropic, os arquivos CLAUDE.md devem ser "aprimorados como qualquer outro prompt usado com frequência". Equipes que iteram em seus arquivos CLAUDE.md obtêm resultados significativamente melhores do que aquelas que os configuram e os esquecem.
Hierarquia de Memória do Código Claude - Como o Contexto é Carregado
Antes de escrevermos uma única linha, você precisa entender o
sistema de memória do Código Claude. Ele é hierárquico, e saber como funciona
ajuda você a organizar suas instruções de forma eficaz.

Níveis de Memória (Prioridade Mais Alta para Mais Baixa)
Política Empresarial - Regras de nível organizacional (se
estiver usando o Claude para Equipes)
Memória do Projeto
- Arquivo CLAUDE.md na raiz do seu repositório
Preferências Pessoais - Arquivo CLAUDE.local.md
Regras do Projeto - Arquivos no diretório .claude/rules/
Memória do Usuário - Arquivo ~/.claude/CLAUDE.md
para preferências globais pessoais
Ponto-chave: Todos os
níveis se combinam - eles não se substituem. Regras mais específicas têm
prioridade em caso de conflito. Isso significa que você pode ter preferências
globais no seu diretório pessoal e configurações específicas do projeto em cada
repositório.
Localização dos arquivos e seu propósito
| Localização | Propósito | Commit ou Git ? |
| ./.CLAUDE.md |
Instruções para todo o projeto compartilhadas com a equipe |
Sim |
| ./.CLAUDE.local.md | Suas preferências pessoais de projeto | Não |
| ./.claude/rules/*md | Regras específicas para tarefas ou pastas | Sim |
| ~/.claude/CLAUDE.md | Preferências globais para todos os projetos | N/A |
Sintaxe de Importação
Para projetos maiores, você pode
dividir as instruções em vários arquivos usando a sintaxe de importação:
| @.claude/rules/architecture.md @.claude/rules/testing.md @.claude/rules/api-conventions.md |
Isso mantém seu arquivo CLAUDE.md raiz organizado, ao mesmo tempo que permite
organizar instruções detalhadas em arquivos específicos. As importações são
resolvidas recursivamente em até 5 níveis de profundidade.
Dica
profissional: Use importações para referenciar arquivos nos diretórios
pessoais dos membros da equipe para preferências individuais que não devem ser
incluídas no commit:
@~/personal-dotnet-preferences.md
A Estrutura: O QUE-PORQUÊ-COMO
A Anthropic recomenda organizar seu CLAUDE.md em três camadas. Essa
estrutura garante que Claude tenha o contexto completo, sem informações
desnecessárias.
O QUE -
Seu Conjunto de Tecnologias e Estrutura
Informe a Claude
exatamente quais tecnologias você está usando e como o projeto está organizado.
| ## Tecnologias - .NET 10, APIs mínimas da ASP.NET Core - Entity Framework Core 10 com PostgreSQL - Mediator para o padrão CQRS (gerado a partir do código-fonte) - FluentValidation para validação de requisições - Scalar para documentação da API (OpenAPI) ## Estrutura do Projeto - `src/Api/` - Ponto de entrada, endpoints, middleware - `src/Application/` - Comandos, consultas, handlers, DTOs - `src/Domain/` - Entidades, objetos de valor, eventos de domínio - `src/Infrastructure/` - EF Core, integrações externas - `tests/` - Testes unitários e de integração |
O PORQUÊ - Propósito e
Decisões Arquitetônicas
Explique o raciocínio por trás da sua
arquitetura. Isso ajuda Claude a tomar decisões que estejam alinhadas com a sua
filosofia de projeto.
| ## Filosofia de Arquitetura Seguimos a Arquitetura Limpa com separação CQRS: - **Domain** não possui dependências - pura lógica de negócios - **Application** orquestra casos de uso por meio de manipuladores Mediator - **Infrastructure** implementa interfaces definidas na Aplicação - **API** é enxuta - apenas definições de endpoints e injeção de dependência (DI) Por que CQRS? Precisamos de modelos de leitura/escrita diferentes para otimizar o desempenho. Por que Mediator ? Desacopla os manipuladores da camada HTTP, permite comportamentos em pipeline e é gerado a partir do código-fonte para melhor desempenho. |
O COMO - Comandos e Regras de Fluxo de
Trabalho
Documente os comandos que Claude deve conhecer e as
regras de fluxo de trabalho que você espera que ele siga.
| ## Comandos - Build: `dotnet build` - Test: `dotnet test --no-build` - Run: `dotnet run --project src/Api` - Migrations: `dotnet ef migrations add <Nome> --project src/Infrastructure --startup-project src/Api` ## Regras de Fluxo de Trabalho - SEMPRE crie uma branch de recurso antes de fazer alterações - Execute `dotnet test` após cada implementação - Nunca modifique arquivos em `src/Domain/` sem aprovação explícita - Mantenha os commits atômicos - uma alteração lógica por commit |
O que incluir (e o que NÃO incluir)
É aqui que a maioria
dos desenvolvedores erra. Ou incluem muito pouco (Claude opera às cegas)
ou muito (desperdiçando tokens de contexto com detalhes irrelevantes).
Inclua o seguinte:
Tecnologias e versões
- Seja específico: “Entity Framework Core 10”, não apenas “EF Core”
Estrutura do projeto - Mapeie as pastas para suas respectivas
finalidades
Comandos comuns - Build, test, run, migrations
Convenções de codificação - Nomenclatura, padrões, preferências
de estilo
Padrões utilizados - Mediator, Result pattern,
CQRS
Padrões NÃO utilizados - Igualmente importante para
evitar sugestões indesejadas
Terminologia de domínio -
Termos de negócio que se relacionam com entidades de código
Instruções de teste - Como executar testes, quais frameworks são
utilizados
Fluxo de trabalho do repositório - Nomenclatura
de branches, convenções de commits, processo de Pull Requests
NÃO
inclua:
Segredos ou credenciais - Nunca inclua
chaves de API, strings de conexão ou senhas
Regras de estilo de
código que os linters processam - Utilize Prettier/ESLint/formato
dotnet
Conhecimento óbvio do framework - Claude sabe como o
ASP.NET Core funciona
Documentação excessiva - Inclua links
para a documentação em vez de copiar o conteúdo
Contexto histórico
- Concentre-se no estado atual, não no histórico do projeto
IMPORTANTE: Cada palavra em CLAUDE.md consome tokens de
contexto. Mantenha o arquivo com menos de 200 linhas. Idealmente, busque um
arquivo raiz com 50 a 100 linhas, incluindo as importações para as seções
detalhadas.
O Modelo Completo de CLAUDE.md para .NET
Aqui está uma sugestão de um modelo para projetos .NET. Você pode ajustar
para se adequar à sua pilha de tecnologias e convenções específicas.
(Sistema de Vendas)
| # CLAUDE.md - [Nome do Projeto] ## Visão Geral [Descrição em uma frase do que este projeto faz] ## Tecnologias Utilizadas - .NET 10, APIs Mínimas do ASP.NET Core - Entity Framework Core 10 com PostgreSQL - Mediator para CQRS (gerado a partir do código-fonte, https://github.com/martinothamar/Mediator) - FluentValidation para validação de requisições - Scalar para documentação OpenAPI - xUnit + FluentAssertions para testes ## Estrutura do Projeto - `src/Api/` - Endpoints, middleware, configuração de Injeção de Dependência (DI) - `src/Application/` - Comandos, consultas, manipuladores, validadores - `src/Domain/` - Entidades, objetos de valor, enums, eventos de domínio - `src/Infrastructure/` - EF Core, serviços externos, repositórios - `tests/UnitTests/` - Testes de domínio e de aplicação - `tests/IntegrationTests/` - Testes de API e banco de dados ## Comandos - Construir: `dotnet build` - Testar: `dotnet test` - Executar API: `dotnet run --project src/Api` - Adicionar Migração: `dotnet ef migrations add <Nome> -p src/Infrastructure -s src/Api` - Atualizar Banco de Dados: `dotnet ef database update -p src/Infrastructure -s src/Api` - Formatar: `dotnet format` ## Regras de Arquitetura - A camada de domínio NÃO possui dependências externas - A camada de aplicação define as interfaces, a infraestrutura as implementa - Todo o acesso ao banco de dados passa pelo DbContext do EF Core (sem padrão de repositório) - Usar Mediator para todo o tratamento de comandos/consultas - A camada de API é enxuta - apenas definições de endpoints ## Convenções de Código ### Nomenclatura - Comandos: `Create[Entity]Command`, `Update[Entity]Command` - Consultas: `Get[Entity]Query`, `List[Entities]Query` - Manipuladores: `[Command/Query]Handler` - DTOs: `[Entity]Dto`, `Create[Entity]Request` ### Padrões que usamos - Construtores primários para injeção de dependência - Registros para DTOs e comandos - Padrão Result<T> para tratamento de erros (sem exceções para controle de fluxo) - Namespaces com escopo de arquivo - Sempre passe CancellationToken para métodos assíncronos ### Padrões que NÃO usamos (Nunca sugerimos) - Padrão Repository (use o EF Core diretamente) - AutoMapper (escreva mapeamentos explícitos) - Exceções para erros de lógica de negócios - Procedimentos armazenados ## Validação - Toda a validação de requisições em validadores FluentValidation - Validadores registrados automaticamente via varredura de assemblies - A validação é executada no pipeline do Mediator Comportamento ## Testes - Testes unitários: Lógica de domínio e manipuladores - Padrão Triple A: Use o padrão AAA: Arrange, Act e Assert - Testes de integração: Teste completo dos endpoints da API com WebApplicationFactory - Use FluentAssertions para asserções legíveis - Nomenclatura de testes: `[Método]_[Cenário]_[ResultadoEsperado]` ## Fluxo de trabalho Git - Nomenclatura de branches: `feature/`, `bugfix/`, `hotfix/` - Formato de commit: `tipo: descrição` (feature, fix, refactor, test, docs) - Sempre crie uma branch antes de fazer alterações - Execute os testes antes de fazer o commit ## Termos de Domínio - Pedido → Entidade `Order` - Cliente → Entidade `Customer` - Item do Pedido → Entidade `OrderItem` - Cancelamento → Comando `CancelOrderCommand` - Total do Pedido → Propriedade `Order.TotalAmount` |
Obs: Nesta sugestão não recomandamos usar o padrão
Repository
mas isso pode ser diferente para o seu cenário.
Organizando o
CLAUDE.md para Grandes Projetos .NET
Para soluções corporativas
com várias equipes ou módulos, um único arquivo CLAUDE.md torna-se difícil de
gerenciar. Use o diretório .claude/rules/ para organizar as instruções.
Estrutura de Diretórios (Para um projeto específico)
| .claude/ ├── rules/ │ ├── architecture.md # Regras e dependências das camadas │ ├── api-conventions.md # Padrões de endpoints │ ├── testing.md # Padrões e nomenclatura de testes │ ├── database.md # Convenções do EF Core │ └── modules/ │ ├── identity.md # Especificidades do módulo Identity │ ├── catalog.md # Especificidades do módulo Catalog │ └── orders.md # Especificidades do módulo Orders |
Regras com Escopo usando Frontmatter
Você pode
restringir o escopo das regras a caminhos específicos usando frontmatter YAML:
| --- paths: - src/Modules/Identity/** - tests/**/Identity* --- # Regras do Módulo de Identidade Este módulo gerencia autenticação e autorização. ## Padrões - Usar o ASP.NET Core Identity para gerenciamento de usuários - Tokens JWT para autenticação de API - Rotação de token de atualização habilitada - Regras de senha definidas em IdentitySettings ## Testes - Simular o serviço IIdentityService para testes unitários - Usar usuários de teste definidos em IdentityTestData |
Erros comuns e como evitá-los
Erro 1: Usar o CLAUDE.md como um linter
Errado:
|
-
Use 4
espaços para indentação - Sempre adicione vírgulas no final - Comprimento máximo da linha: 120 caracteres |
Correto:
- Criar um arquivo
.editorconfig na raiz da solução
definindo regras como indentação, uso de
var,
espaçamento e convenções de código
- Executar
dotnet format
no projeto para aplicar automaticamente as regras de estilo definidas no
.editorconfig
|
Erro 2: Incluir tudo do /init
O comando /init
gera um CLAUDE.md inicial ao analisar seu projeto. Sempre revise e reduza o
conteúdo. O conteúdo gerado automaticamente geralmente inclui:
-
Descrições redundantes
- Padrões de framework óbvios
- Listagens de pastas
excessivas
Mantenha apenas o que é exclusivo do SEU projeto.
Erro 3: Esquecer de atualizar
Seu CLAUDE.md deve
evoluir com sua base de código. Quando você:
Adicionar uma nova
biblioteca → Atualize a pilha de tecnologias
Alterar os padrões de
arquitetura → Atualize as regras
Adicionar novos módulos → Adicione regras
específicas do módulo
Trate-o como documentação viva, não como uma
configuração única.
Erro 4: Duplicar a documentação oficial
Errado:
| ## Como o Mediator funciona O Mediator é uma biblioteca que implementa o padrão Mediator... [500 palavras explicando o Mediator] |
Correto:
| ## Utilização do Mediator Utilizamos o Mediator para CQRS. Consulte: https://github.com/martinothamar/Mediator Nossas convenções: - Um manipulador por arquivo - Manipuladores na mesma pasta que o comando/consulta - Comportamentos do pipeline: Validação → Registro → Transação |
Resultados Reais: Antes e Depois
DVejamos agora a
diferença que um bom CLAUDE.md faz.
Antes do CLAUDE.md
Prompt: “Adicione um
novo endpoint para criar um produto”
Resposta do Claude:
Cria um controlador com o padrão Repository, adiciona a configuração do
AutoMapper, coloca a validação no controlador e ignora os padrões existentes.
Resultado: 30 minutos ajustando as suposições do Claude
para corresponder à sua arquitetura.
Depois do CLAUDE.md
Prompt: “Adicione um
novo endpoint para criar um produto”
Resposta do Claude:
Cria um CreateProductCommand com Mediator, adiciona o validador
FluentValidation, usa seus padrões DTO, segue sua estrutura de pastas e até cria
a branch primeiro.
Resultado: Código que corresponde
perfeitamente à sua base de código. Mescle e siga em frente.
Comparando o CLAUDE.md com outras ferramentas de IA
Se você já
usou outros assistentes de codificação com IA, veja como o CLAUDE.md se compara
a arquivos de contexto de projeto semelhantes.
| Ferramenta | Arquivo | Principais diferenças |
| Claude Code | CLAUDE.md | Memória hierárquica, suporte a importações e regras com escopo por diretório |
| Github Copilot | github/copilot-instructions | Instruções versionadas no repositório, foco em contexto de código e integração com GitHub |
| Gemini CLI | GEMINI.md | Personaliza o comportamento do agente para a pasta específica onde está localizado |
| Codex | AGENTS.md | Atual como guia de contexto e oriente a IA a trabalhar com o projeto |
O que torna o CLAUDE.md diferente:
Carregamento
hierárquico - Combina os níveis de usuário, projeto e regras
Sintaxe de importação - Referencie outros arquivos com
@caminho/para/arquivo.md
Regras com escopo - Aplique regras
a caminhos específicos por meio do frontmatter
Integração com o contexto do modelo
– Permite fornecer instruções mais ricas dentro do limite de contexto da IA
(isso pode variar conforme o modelo)
Dicas práticas
1. Atualize o arquivo CLAUD.md em tempo real
Durante uma sessão, peça ao Claude diretamente na conversa:
"Adicione ao CLAUDE.md: sempre usar Result<T> em vez de exceções"
Ou use /memory para abrir e editar os arquivos de memória manualmente;
Ou edite o CLAUDE.md diretamente como qualquer outro arquivo do projeto;
O Claude adiciona isso ao seu arquivo CLAUDE.md sem interromper seu fluxo de trabalho.
2. Documente seus comandos "não óbvios"
Todo projeto tem
comandos que não são óbvios. Documente-os:
| ## Comandos Não Óbvios - Reiniciar o banco de dados de teste: `docker-compose down -v && docker-compose up -d db` - Gerar o cliente: `npm run generate-api-client --prefix src/Web` - Limpar o Redis: `docker exec redis redis-cli FLUSHALL` |
3. Inclua soluções alternativas para erros
Se o seu projeto tiver
problemas conhecidos ou soluções alternativas, documente-os:
| ## Problemas Conhecidos e Soluções Alternativas - A migração do EF Core falha no Mac M1: Adicione a flag `--runtime osx-arm64` - O hot reload quebra o SignalR: Reinicie o `dotnet watch` após alterações no hub - Os testes atingem o tempo limite na primeira execução: Execute `dotnet build` primeiro para aquecer |
4. Exemplos de Código Canônico de Referência
Em vez de
explicar padrões em prosa, aponte para exemplos de código existentes:
| ## Exemplos de código - Nova implementação de comando: Consulte `src/Application/Products/Commands/CreateProduct/` - Padrão de teste de integração: Consulte `tests/IntegrationTests/Products/CreateProductTests.cs` - Endpoint com autenticação: Consulte `src/Api/Endpoints/Orders/CreateOrderEndpoint.cs` |
Isso utiliza menos tokens e mostra padrões reais do seu código.
5. Especifique os diretórios de trabalho para os comandos
Os comandos que precisam ser executados a partir de diretórios específicos
devem indicar isso:
| ## Comandos - Testes de API: `dotnet test` (executar a partir de `tests/Api.IntegrationTests/`) - Gerar migrações: `dotnet ef migrations add <Nome>` (executar a partir da raiz da solução) - Compilação do frontend: `npm run build` (executar a partir de `src/Web/`) |
Guia Rápido: Lista de Verificação do
CLAUDE.md
Antes de enviar seu CLAUDE.md, verifique:
- A pilha de tecnologias com as versões
específicas listadas
- A
estrutura do projeto com a finalidade de cada pasta
- Os comandos de compilação, teste e execução
- A filosofia da arquitetura (o porquê, e não apenas o
quê)
- As convenções de
nomenclatura para seus padrões
- Os padrões que você usa E os padrões que você evita
- O fluxo de trabalho do Git e a nomenclatura de
branches
- A
terminologia do domínio mapeada para o código
- Sem segredos, credenciais ou strings de conexão
- Menos de 200 linhas (consulte
a documentação para obter detalhes)
- Testado com um prompt real para verificar a eficácia
Conclusão:
O uso do CLAUDE.md vai muito além de uma simples configuração — ele se torna uma peça estratégica para alinhar a IA com a arquitetura, padrões e decisões reais do seu projeto.
Quando bem estruturado, reduz drasticamente retrabalho, melhora a qualidade do código gerado e transforma a IA em um verdadeiro membro produtivo da equipe.
Em vez de lutar contra suposições genéricas, você passa a orientar o agente com contexto preciso, garantindo consistência, escala e velocidade no desenvolvimento.
E estamos conversados...
'Porque éreis como ovelhas desgarradas; mas agora
tendes voltado ao Pastor e Bispo das vossas almas.'
1 Pedro 2:25
Referências:
NET - Unit of Work - Padrão Unidade de ...