CLAUDE.md
Configure comportamento persistente e contexto de projeto com o arquivo de instruções do Claude Code
Objetivos
- Entender o que é o CLAUDE.md e por que ele é importante
- Conhecer a hierarquia de arquivos CLAUDE.md (global, projeto, subdiretório)
- Criar um CLAUDE.md eficaz para um projeto real
- Usar a diretiva @ para importar outros arquivos de documentação
- Configurar o CLAUDE.md global para preferências pessoais
- Aplicar boas práticas para maximizar a eficácia do arquivo
O que é CLAUDE.md
CLAUDE.md é um arquivo Markdown especial que o Claude Code lê automaticamente ao iniciar uma sessão. Ele funciona como um conjunto de instruções persistentes que define:
- O contexto do projeto (o que é, qual o stack, qual o domínio)
- Convenções de código da equipe
- Comandos importantes que Claude deve conhecer
- Arquivos críticos que merecem atenção especial
- Restrições e comportamentos desejados
Pense nele como um README, mas escrito especificamente para o Claude Code — quanto melhor documentado, menos você precisa explicar em cada nova sessão.
Hierarquia de arquivos CLAUDE.md
O Claude Code suporta múltiplos arquivos CLAUDE.md em diferentes níveis de hierarquia. Todos são carregados e combinados, com o mais específico tendo precedência sobre o mais geral.
~/.claude/CLAUDE.md
Carregado em todas as sessões, qualquer diretório. Para preferências pessoais.
/seu/projeto/CLAUDE.md
Carregado quando você inicia Claude Code na raiz do projeto.
/seu/projeto/src/CLAUDE.md
Carregado apenas quando você trabalha naquele subdiretório específico.
# 1. Global — carregado em TODAS as sessões, qualquer diretório
~/.claude/CLAUDE.md
# 2. Projeto — carregado quando você inicia Claude Code na raiz do projeto
/seu/projeto/CLAUDE.md
# 3. Subdiretório — carregado apenas quando você trabalha naquele subdiretório
/seu/projeto/src/CLAUDE.md
/seu/projeto/packages/api/CLAUDE.md
# Exemplo de estrutura em monorepo
meu-monorepo/
├── CLAUDE.md # Contexto geral do monorepo
├── packages/
│ ├── api/
│ │ └── CLAUDE.md # Contexto específico da API
│ └── web/
│ └── CLAUDE.md # Contexto específico do frontend
└── docs/
└── CLAUDE.md # Instruções para documentação
Estrutura típica de um CLAUDE.md de projeto
Um CLAUDE.md bem estruturado cobre contexto, stack, arquitetura, convenções, comandos e restrições. Veja um exemplo completo para uma aplicação Next.js:
# Project Context
Este é um app Next.js para gestão de tarefas empresariais.
O backend é uma API REST com autenticação JWT.
## Tech Stack
- Next.js 15 App Router (TypeScript)
- Prisma ORM + PostgreSQL
- NextAuth.js para autenticação
- shadcn/ui + Tailwind CSS v4
- Jest + Testing Library para testes
- pnpm como package manager
## Architecture
- `src/app/` — rotas e páginas (App Router)
- `src/components/` — componentes reutilizáveis
- `src/lib/` — utilitários e configurações
- `src/server/` — lógica server-side e Server Actions
- `prisma/` — schema e migrations do banco
## Code Conventions
- TypeScript strict mode (sem `any` explícito)
- Use `async/await`, nunca `.then()/.catch()` encadeados
- Componentes em PascalCase, funções em camelCase
- Sem default exports — sempre use named exports
- Server Actions em `src/server/actions/`
- Validação de input com Zod sempre
## Important Commands
- `pnpm dev` — inicia servidor de desenvolvimento (porta 3000)
- `pnpm build` — build de produção
- `pnpm test` — executa todos os testes
- `pnpm test:watch` — testes em modo watch
- `pnpm db:migrate` — aplica migrations do Prisma
- `pnpm db:seed` — popula banco com dados de desenvolvimento
- `pnpm lint` — verifica linting
## Critical Files
- `src/lib/db.ts` — instância do Prisma Client (singleton)
- `src/lib/auth.ts` — configuração do NextAuth
- `src/types/index.ts` — tipos TypeScript compartilhados
- `prisma/schema.prisma` — schema do banco de dados
- `.env.example` — template de variáveis de ambiente
## Do Not
- Não faça commit de arquivos `.env` ou segredos
- Não use `npm` — sempre use `pnpm`
- Não modifique `prisma/migrations/` manualmente
Importando arquivos com @
Uma feature poderosa do CLAUDE.md é a diretiva @, que permite importar o conteúdo de outros arquivos. Isso é útil para modularizar documentação grande ou reutilizar convenções de equipe.
# CLAUDE.md — com imports de outros arquivos
# Projeto: Plataforma de E-commerce
## Contexto Geral
Este arquivo combina contexto do projeto com documentação existente.
## Documentação Importada
@docs/api-reference.md
@.claude/team-conventions.md
@.claude/architecture-decisions.md
## Contexto Adicional
Além da documentação acima, sempre:
- Verifique os testes antes de modificar código de produção
- Consulte o CHANGELOG.md para entender mudanças recentes
Exemplo de um arquivo de convenções de equipe importado via @:
# Team Conventions
## Git Workflow
- Branches: `feat/`, `fix/`, `chore/`, `docs/`
- Commits: Conventional Commits (feat, fix, refactor, test, docs)
- PRs: sempre requerem pelo menos 1 review
- Never force push to `main` or `develop`
## Code Review Checklist
- [ ] Testes adicionados/atualizados
- [ ] Sem `console.log` de debugging
- [ ] Tipos TypeScript corretos (sem `any`)
- [ ] Componentes acessíveis (WCAG 2.1 AA)
- [ ] Performance considerada (lazy loading, memoization)
## Naming Conventions
- Arquivos de componente: `ComponentName.tsx`
- Hooks: `use-hook-name.ts`
- Utilitários: `kebab-case.ts`
- Constantes: `UPPER_SNAKE_CASE`
- Tipos/Interfaces: `PascalCase` (sem prefixo I)
CLAUDE.md global (~/.claude/CLAUDE.md)
O arquivo global é carregado em todas as sessões, independente do projeto. Use-o para configurar preferências pessoais, ferramentas favoritas e comportamentos que você quer em todo lugar.
# Global Instructions — Minhas preferências pessoais
## Preferred Tools
- Git: use `gh` CLI para operações GitHub (não `git push origin` manual)
- Package manager: prefira `pnpm` sobre `npm` ou `yarn`
- Shell: zsh, então scripts devem ser compatíveis com zsh
## Code Style Preferences
- TypeScript strict mode por padrão
- Sem default exports — sempre named exports
- Nomes descritivos (sem `tmp`, `data`, `result` genéricos)
- Comentários em inglês, comunicação comigo em português
## GitHub Access
- GitHub CLI (`gh`) está instalado e autenticado como @meu-usuario
- Use `gh` para todas as operações remotas: PRs, issues, releases
- Sempre confirme antes de ações destrutivas (force push, deletar branches)
## Workflow Preferences
- Antes de modificar código, leia os arquivos relevantes primeiro
- Explique o que vai fazer antes de fazer
- Prefiro edições cirúrgicas (Edit) a reescritas completas (Write)
- Quando encontrar bugs, explique a causa raiz antes de corrigir
Boas práticas para CLAUDE.md
Um CLAUDE.md bem escrito é a diferença entre um Claude Code genérico e um assistente que realmente entende seu projeto. Siga estas práticas para máxima eficácia:
| Incluir | Evitar |
|---|---|
| Stack completo com versões | Segredos e API keys |
| Comandos de desenvolvimento (dev, test, build) | Informações óbvias que qualquer dev já sabe |
| Convenções específicas da equipe | Documentação excessivamente longa (use @ para importar) |
| Arquivos críticos do projeto | Instruções contraditórias |
| Restrições importantes (não use X, sempre faça Y) | Conteúdo que muda frequentemente (use arquivos separados) |
| Contexto do domínio do negócio | Dados sensíveis de usuários ou produção |
Template starter para novos projetos
# [Nome do Projeto]
[Uma frase descrevendo o que o projeto faz e para quem]
## Tech Stack
- [Framework principal + versão]
- [Banco de dados + ORM]
- [Autenticação]
- [UI library]
- [Package manager]
## Project Structure
- `src/` — código fonte principal
- [Outras pastas importantes]
## Code Conventions
- [Convenção 1]
- [Convenção 2]
## Key Commands
- `[comando]` — [o que faz]
- `[comando]` — [o que faz]
## Critical Files
- `[arquivo]` — [por que é crítico]
## Do Not
- [Restrição importante]
- [Restrição importante]
Exercício Prático
Exercício 1 — Criando seu primeiro CLAUDE.md de projeto
Crie um CLAUDE.md completo para um projeto existente (ou crie um projeto de exemplo), incluindo todas as seções principais.
- Navegue até um projeto existente ou crie um novo diretório de exemplo
- Execute
claudepara iniciar uma sessão interativa - Peça: "Explore este projeto e crie um CLAUDE.md completo com: contexto, stack, convenções, comandos principais e arquivos críticos"
- Revise o arquivo gerado e adicione informações que o Claude Code não sabia
- Encerre a sessão com
Ctrl+D - Inicie uma nova sessão com
claudee verifique que o Claude Code já sabe o contexto sem você precisar explicar - Teste perguntando: "Qual é o stack deste projeto?" — deve responder corretamente baseado apenas no CLAUDE.md
Exercício 2 — Configurando o CLAUDE.md global
Crie um CLAUDE.md global com suas preferências pessoais de desenvolvimento.
- Crie o diretório se não existir:
mkdir -p ~/.claude - Abra o arquivo para edição:
claude ~/.claude/CLAUDE.mdou use seu editor favorito - Adicione suas preferências: package manager preferido, estilo de código, ferramentas que usa, idioma preferido para comunicação
- Salve o arquivo
- Inicie uma nova sessão do Claude Code em qualquer diretório
- Peça para o Claude Code confirmar que entendeu suas preferências: "Quais são minhas preferências de desenvolvimento?"