CLAUDE.md
~20 min Iniciante Parte 1

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.

Dica: Um bom CLAUDE.md elimina a necessidade de repetir contexto a cada sessão. Em vez de começar cada conversa com "Este é um projeto Next.js com TypeScript e Prisma...", você escreve isso uma vez no CLAUDE.md e o Claude Code já sabe. É uma das formas mais eficazes de aumentar a qualidade das respostas sem custo adicional de tokens.

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.

Global~/.claude/CLAUDE.md

Carregado em todas as sessões, qualquer diretório. Para preferências pessoais.

↓ sobrescrito por
Projeto/seu/projeto/CLAUDE.md

Carregado quando você inicia Claude Code na raiz do projeto.

↓ sobrescrito por
Subdiretório/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
Info: O CLAUDE.md de projeto deve ser commitado no repositório e versionado junto com o código. Assim toda a equipe se beneficia do mesmo contexto. Use o CLAUDE.md global apenas para preferências pessoais que não devem ser compartilhadas com o time.

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]
Dica: Trate o CLAUDE.md como código vivo. Quando o Claude Code fizer algo errado por falta de contexto, adicione aquela informação ao CLAUDE.md. Com o tempo, você terá um arquivo que captura todo o conhecimento importante do projeto de forma que o Claude Code entende perfeitamente.

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.

  1. Navegue até um projeto existente ou crie um novo diretório de exemplo
  2. Execute claude para iniciar uma sessão interativa
  3. Peça: "Explore este projeto e crie um CLAUDE.md completo com: contexto, stack, convenções, comandos principais e arquivos críticos"
  4. Revise o arquivo gerado e adicione informações que o Claude Code não sabia
  5. Encerre a sessão com Ctrl+D
  6. Inicie uma nova sessão com claude e verifique que o Claude Code já sabe o contexto sem você precisar explicar
  7. Teste perguntando: "Qual é o stack deste projeto?" — deve responder corretamente baseado apenas no CLAUDE.md
Resultado esperado: Um arquivo CLAUDE.md criado na raiz do projeto com pelo menos 5 seções: contexto, stack, estrutura, comandos e convenções. Na segunda sessão, o Claude Code deve demonstrar conhecimento do projeto sem que você precise explicar nada.

Exercício 2 — Configurando o CLAUDE.md global

Crie um CLAUDE.md global com suas preferências pessoais de desenvolvimento.

  1. Crie o diretório se não existir: mkdir -p ~/.claude
  2. Abra o arquivo para edição: claude ~/.claude/CLAUDE.md ou use seu editor favorito
  3. Adicione suas preferências: package manager preferido, estilo de código, ferramentas que usa, idioma preferido para comunicação
  4. Salve o arquivo
  5. Inicie uma nova sessão do Claude Code em qualquer diretório
  6. Peça para o Claude Code confirmar que entendeu suas preferências: "Quais são minhas preferências de desenvolvimento?"
Resultado esperado: O Claude Code deve responder com as preferências exatas que você definiu no CLAUDE.md global, confirmando que o arquivo foi carregado corretamente.

Recursos

0%