← Voltar aos Artigos
Cover image for SINTESE newsletter
Generated by Sinal AI — SINTESE agentSinal / Recraft V3
Artigo07 de março de 2026

CLAUDE.md: como um arquivo de texto transforma o Claude Code em um engenheiro sênior

Eu uso Claude Code todo dia. Há 6 meses, era uma ferramenta que economizava tempo. Hoje é um membro do time que entende como eu penso, como o projeto funciona, e o que eu espero de cada code review. A diferença entre os dois? Um arquivo de texto.

Fabiano Cruz

Autor

O problema real

Todo agente de IA começa zerado. Não sabe a arquitetura do seu projeto. Não conhece suas convenções. Não entende por que você prefere testes explícitos a mocks inteligentes. Não sabe que seu time usa feature branches e nunca commita direto na main.

Você explica isso na primeira conversa. Funciona. Na segunda conversa, explica de novo. Na terceira, desiste de explicar e aceita o output genérico.

A pergunta não é "o Claude Code é bom o suficiente?" A pergunta é: "você está dando contexto suficiente para ele ser bom?"

O que é o CLAUDE.md

CLAUDE.md é um arquivo de configuração que vive na raiz do seu repositório. Quando o Claude Code abre um projeto, ele lê esse arquivo automaticamente e carrega tudo como contexto persistente.

Pense assim: se o código-fonte é o que o projeto faz, o CLAUDE.md é como o projeto pensa.

Na prática, é onde você documenta:

  • Status atual do projeto (o que está pronto, o que falta)
  • Preferências de engenharia (DRY, cobertura de testes, nível de abstração)
  • Protocolos de trabalho (como fazer code review, como planejar antes de codar)
  • Comandos úteis (como rodar testes, migrations, dev server)
  • O que não fazer (regras explícitas para evitar erros recorrentes)

O resultado: toda conversa com o Claude Code começa calibrada. Sem repetição. Sem reexplicar o óbvio.

O comando /init

Se você nunca criou um CLAUDE.md, o caminho mais rápido é rodar /init no Claude Code. Ele analisa o codebase e gera um arquivo inicial baseado no que encontra: linguagens, frameworks, estrutura de pastas, scripts existentes.

O output é um ponto de partida. Não é o destino. O valor real do CLAUDE.md vem quando você calibra ele com as decisões que só você conhece: por que o projeto é estruturado assim, quais são os tradeoffs que você aceitou, o que você espera de quem (ou do que) contribui com código.

CLAUDE.md na prática: um exemplo real

Vou mostrar o CLAUDE.md que uso no meu projeto principal. Depois, analiso seção por seção para explicar o raciocínio por trás de cada bloco.

O projeto é o sinal-lab: um monorepo Python + Next.js com API, agentes de IA, pipeline editorial, e um mapa de startups LATAM. 1970 testes Python, 998 testes frontend. O CLAUDE.md evoluiu junto com o projeto ao longo de meses.


# CLAUDE.md: Code Review & Plan Mode

> **Mantenha este arquivo conciso.** Cada linha compete por atenção no context window do Claude.
> Revise regularmente. Se remover uma linha não causa erros, remova.

---

## Status do Projeto (Atualizado: 2026-02-22)

**Repositório:** https://github.com/fabianocruz/sinal-lab
**Branch:** feature/startup-map (em progresso)
**Cobertura de Testes:** 1970 testes Python + 998 testes frontend (Vitest)

### Concluído:
- ✅ Estrutura inicial do projeto + repositório GitHub
- ✅ Routers da API testados (7/7 = 100%, inclui auth + waitlist)
- ✅ Pacote editorial testado (3/3 = 100%)
- ✅ Sistema de agentes documentado e testado
- ✅ Newsletter SSR dinâmica (API → frontend com paginação)
- ✅ Seed expandido (20 newsletters, 5 agents, 5 meses)
- ✅ Logout + área do usuário (UserMenu dropdown + /conta)
- ✅ Waitlist-auth unificado (form auth-aware + upgrade waitlist→active)
- ✅ Agente INDEX: pipeline de dados de startups LATAM (collectors, pipeline, scorer, persistência)
- ✅ Startup Map: /startups listing + /startup/[slug] páginas de detalhe
- ✅ API de Companies: envelope paginado, busca, filtros por tags, schema expandido (22 campos)
- ✅ SEO: JSON-LD Organization, sitemap assíncrono com páginas de empresas
- ✅ Paginação Generalizada + SearchBar com prop `basePath`

### Próximos Passos:
- Rodar testes antes de cada commit: `pytest apps/ packages/ -v && pnpm test`
- Manter branch main estável (sem commits diretos, exceto hotfixes)

---

## Preferências de Engenharia

IMPORTANTE: use estas para guiar toda recomendação, revisão e mudança de código.

- **DRY é importante.** Aponte repetição agressivamente.
- **Código bem testado é inegociável.** Prefiro testes demais a testes de menos.
- **"Engenharia na medida":** nem sub-engenharia (frágil, gambiarra) nem super-engenharia (abstração prematura, complexidade desnecessária).
- **Cubra mais edge cases, não menos.** Cuidado > velocidade.
- **Explícito sobre esperto.** Priorize legibilidade.
- **Legibilidade sobre esperteza.** Se é difícil de seguir, simplifique.

---

## Plan Mode: Protocolo de Code Review

Revise este plano a fundo antes de fazer qualquer mudança no código. Para cada issue ou recomendação, explique os tradeoffs concretos, dê uma recomendação com opinião, e peça meu input antes de assumir uma direção.

### ANTES DE COMEÇAR

Pergunte se eu quero uma de duas opções:

1. **MUDANÇA GRANDE:** Trabalhar interativamente, uma seção por vez (Arquitetura → Qualidade de Código → Testes → Performance) com no máximo 4 issues por seção.
2. **MUDANÇA PEQUENA:** Trabalhar interativamente com UMA pergunta por seção.

### 1. Revisão de Arquitetura

Avalie:

- Design geral do sistema e fronteiras entre componentes
- Grafo de dependências e problemas de acoplamento
- Padrões de fluxo de dados e gargalos potenciais
- Características de escala e pontos únicos de falha
- Arquitetura de segurança (auth, acesso a dados, fronteiras da API)

### 2. Revisão de Qualidade de Código

Avalie:

- Organização do código e estrutura de módulos
- Violações de DRY. Seja agressivo aqui.
- Padrões de tratamento de erro e edge cases ausentes (aponte explicitamente)
- Hotspots de débito técnico
- Áreas super-engenheiradas ou sub-engenheiradas relativo às minhas preferências

### 3. Revisão de Testes

Avalie:

- Lacunas de cobertura (unitários, integração, e2e)
- Qualidade dos testes e força das assertions
- Cobertura de edge cases ausentes. Seja minucioso.
- Modos de falha e caminhos de erro não testados

### 4. Revisão de Performance

Avalie:

- Queries N+1 e padrões de acesso ao banco
- Preocupações com uso de memória
- Oportunidades de cache
- Caminhos de código lentos ou de alta complexidade

### Para Cada Issue Encontrada

Para cada issue específica (bug, smell, concern de design, ou risco):

1. **Descreva o problema concretamente**, com referência a arquivo e linha.
2. **Apresente 2–3 opções**, incluindo "não fazer nada" quando razoável.
3. **Para cada opção especifique:** esforço de implementação, risco, impacto em outro código, e custo de manutenção.
4. **Dê sua opção recomendada e porquê**, mapeada às minhas preferências acima.
5. **Então pergunte explicitamente** se eu concordo ou quero escolher outra direção antes de prosseguir.

### Regras de Interação

- NUMERE todas as issues (ex: Issue #1, Issue #2).
- Dê LETRAS para opções (ex: A, B, C).
- Ao usar AskUserQuestion, rotule claramente cada opção com o NÚMERO da issue e a LETRA da opção.
- IMPORTANTE: A opção recomendada deve ser sempre a 1ª opção.
- Não assuma minhas prioridades de prazo ou escala.
- Após cada seção, pause e peça meu feedback antes de avançar.

---

## Padrões de Workflow

### Planeje Antes de Codar

Para qualquer coisa além de mudanças triviais:

1. **Explore:** leia os arquivos relevantes, entenda o contexto. NÃO escreva código ainda.
2. **Planeje:** pense bem na abordagem. Proponha um plano com tradeoffs. Use um arquivo scratchpad (`PLAN.md`) para tarefas complexas.
3. **Implemente:** somente após eu aprovar o plano. Verifique a corretude durante a implementação.
4. **Teste:** rode os testes. Se falharem, itere até passarem.
5. **Commite:** escreva uma mensagem de commit descritiva. Atualize docs se necessário.

### Test-Driven Development (Preferência)

Leia a análise completa

  • Acesso completo a todas as edições
  • 5 relatórios semanais por agente de IA
  • Newsletter no email toda semana

Grátis. Sem spam. Cancele quando quiser.