🎯 Cases reais de Claude Code
3 cases focados em onde N4 dói mais: claude.md mal feito, refactor caro por skip do plan mode, e coordenação de worktrees paralelas. Cada um com diff antes/depois, custo evitado e padrão pra replicar.
⚠ Esses cases são técnicos. Se você ainda está no N3, salve pra depois. Aqui assumimos familiaridade com git, branches, PRs, testes e prompts complexos. Se algo não fizer sentido, volte pro 4.1.
📜 claude.md: a evolução em 4 atualizações reais
Cenário
Lucas é tech lead numa startup B2B SaaS de logística (TypeScript/Next.js + Supabase). Projeto tem 6 devs. Começou com Claude Code há 2 meses. Claude erra coisas básicas — usa enum diferente, ignora convenção de naming, gera teste com mock errado. Lucas atualiza claude.md 1x por semana.
❌ claude.md v1 (semana 1) — "tudo que eu acho importante"
Problemas:
- • 180 linhas — claude.md inflado dispara muitos tokens em toda sessão
- • Conteúdo MISTURA "informação universal" (stack) com "detalhes específicos de módulos"
- • Não diz NUNCA — só "convenções", como se fossem sugestões
- • Falta diretriz sobre tipos repetidos de erro do Claude (não fala de mocks, enums, formas de teste)
🟡 v2 (semana 2) — depois de 3 erros recorrentes
Claude usou Date.now() em 4 lugares diferentes (codebase usa useNow() hook custom). Mockou Supabase de jeitos diferentes em cada teste. Adicionou ponto-e-vírgula em 1 PR.
Lucas adicionou seção "Regras":
Resultado: melhor, mas claude.md já tem 200 linhas. E os 130 linhas de "detalhes de módulos" ainda estão lá inflando contexto.
🟡 v3 (semana 4) — extração via @ pra detalhes longos
Lucas percebe que 70% do claude.md é "info que Claude só precisa quando toca naquele módulo". Cria pasta /docs/claude/ e extrai detalhes:
Resultado: claude.md em 95 linhas. Claude lê @docs apenas quando entra no módulo correspondente. Tokens de baseline caíram 65%.
✅ v4 (semana 8) — a versão madura
Após 4 semanas de uso real, Lucas refinou. claude.md final tem 87 linhas. Estrutura que parou de mudar:
## Quem sou eu (e quem você tá lidando)
Time de 6 devs sêniors. Sem juniors. Não explique conceitos básicos.
Linguagem técnica direta, sem preâmbulo, sem "ótimo, vou agora...".
## Stack (resumo)
Next.js 14 App Router · TS estrito · Supabase · Tailwind+shadcn · Vitest · Vercel
Detalhes em @docs/claude/stack.md
## Regras NUNCA-SEMPRE (atualizadas conforme Claude erra)
- NUNCA Date.now()/new Date() — SEMPRE useNow() de @/hooks/useNow
- NUNCA mockar Supabase manual — SEMPRE mockSupabase() de @/test/utils
- NUNCA semicolon — Prettier reclama
- NUNCA criar arquivo >500 linhas — splita em sub-arquivos
- NUNCA `any` em TS — se precisar, comente o motivo na linha de cima
- NUNCA push direto em main
- SEMPRE prefixar PR (FREIGHT-, AUTH-, USERS-...)
- SEMPRE testar a função que você adicionou (e a que você alterou se mudou comportamento)
- SEMPRE rodar npm run typecheck antes de pedir review
## Mapa de módulos (leia quando entrar em cada um)
- Auth → @docs/claude/auth.md
- Frete (core) → @docs/claude/freight.md
- Faturamento → @docs/claude/billing.md
- Schema DB → @docs/claude/db-schema.md
- Testes → @docs/claude/testing.md
- Deploy → @docs/claude/deploy.md
## PRs
Template em @docs/claude/pr-template.md
Padrão obrigatório: contexto, plano executado, arquivos com motivo, evidência de teste, riscos.
## Workflow esperado
1. Sempre plan mode antes de mexer em >3 arquivos
2. Sempre subagente "tests" pra rodar e analisar testes
3. Sempre subagente "code-reviewer" antes de eu te chamar
4. Você NÃO mergeia. Eu mergeio.
## Quando errar
Se eu te dizer "atualize o claude.md pra não fazer X de novo", adicione a regra na seção NUNCA-SEMPRE — não na seção de stack ou módulos.
🧠 Como evoluir o seu
📊 Métricas — antes vs depois v4
📋 Pular Plan Mode custou um dia (e quase a feature)
Cenário
Patrícia (PR Pleno+, 3 anos) precisa implementar feature de "exportação de relatório customizável" — usuário escolhe colunas, filtros, formato (CSV/PDF/XLSX), salva como template. Issue diz "5 dias estimados". Patrícia está confiante: "é só mais uma feature de exportação".
❌ Sem plan mode — terça 9h
Patrícia abre Claude Code direto pelo terminal:
Claude lê, parte pra ação. Cria componente CustomReportExporter, mexe em 7 arquivos, adiciona endpoint, cria 3 hooks. Testes rodam, passam. PR aberto às 17h.
Revisão do tech lead, manhã seguinte:
"Patrícia, esse novo endpoint/api/reports/exportconflita com o/api/v2/reports/exportque já tava sendo desenhado no PR #882. Você não viu? Estamos migrando pra v2 esse mês. E o CustomReportExporter virou frankenstein — duplica lógica do ExportTrigger que já existe. Vamos ter que refazer."
Custo do erro: 1 dia perdido. Patrícia precisou rebase pesado em PR #882, reescrever de fato, refazer testes. Em vez de 5 dias estimados, gastou 7.
✅ Com plan mode — quarta retomada
Patrícia recomeça. Abre plan mode (Shift+Tab×2 + Opus Plan setting):
Claude retorna 8 minutos depois:
Conflitos detectados (auditei branches ativas):
- PR #882 (em progresso) está desenhando /api/v2/reports/export. SUA feature DEVE usar v2, não criar v1 paralela.
- Já existe ExportTrigger em /components/reports/ — extender em vez de criar CustomReportExporter.
- Tipo ExportFormat já existe em /types/reports/. Não criar enum novo.
Arquivos NOVOS (3):
- /components/reports/ReportColumnPicker.tsx
- /components/reports/ReportFilterBuilder.tsx
- /lib/reports/exportTemplate.ts (salvar/carregar template)
Arquivos a ALTERAR (4):
- /components/reports/ExportTrigger.tsx (adicionar entrada "customizado")
- /api/v2/reports/export/route.ts (adicionar params customizados — coordenar com PR #882)
- /db/migrations/2026_05_xx_report_templates.sql (nova tabela)
- /types/reports/index.ts (estender ExportFormat, adicionar ReportTemplate)
Riscos:
1. PR #882 ainda não mergeou — preciso esperar OU coordenar com Felipe (autor) pra trabalhar em branch encadeada
2. Migration nova requer aprovação do DBA antes de aplicar em staging
3. Performance: customização vai aceitar até X colunas e Y filtros? Sem limite pode gerar queries lentas
Esforço estimado: 4 dias com PR #882 já mergeado. 6 dias se precisar trabalhar em paralelo coordenando.
Aprova plano? Quer ajustar antes de eu começar?
Patrícia coordena com Felipe (15 min de Slack), decide esperar PR #882 mergeer (vai ser amanhã), e começa quinta. Termina sábado 14h, sem dia perdido. Tech lead aprova PR sem refactor pesado.
🔀 Variações testadas pro plan mode
⚠ Erros ao usar plan mode
- • "Já sei o que fazer, plan mode é overhead" — esse é o pensamento que custou 1 dia da Patrícia. Plan mode em features >3 arquivos é não-negociável.
- • Aprovar plano sem ler direito — se você não absorveu, peça pra Claude resumir em 5 bullets antes.
- • Não auditar conflitos com PRs abertos — peça explicitamente "audite branches ativas e me liste conflitos".
- • Esquecer Opus Plan setting — Opus planeja, Sonnet executa. Custo de Sonnet, qualidade de Opus.
📊 Custo evitado
🌳 3 worktrees em paralelo — coordenação real
Cenário
Igor, dev sênior. Segunda 9h. Lista do dia: (1) feature de "tags de cliente" (4-6h), (2) bug de timezone no relatório semanal (1-2h), (3) documentação da API pública v2 (2-3h). Total estimado 7-11h. Igor decide rodar paralelo.
✅ Setup das 3 worktrees
cd ~/work/saas-main
claude-worktree feature-customer-tags
# abre cd ~/work/.worktrees/feature-customer-tags
# Terminal 2 (outra aba)
cd ~/work/saas-main
claude-worktree bug-timezone-weekly-report
# Terminal 3 (outra aba)
cd ~/work/saas-main
claude-worktree docs-api-public-v2
Cada uma em branch própria, working tree isolada, contexto separado. Claude em cada terminal não vê o que os outros estão fazendo (eles trabalham em arquivos provavelmente diferentes).
⏱ Como o dia rodou na prática
🧠 O que tornou paralelo funcional
⚠ Quando NÃO usar 3 worktrees
- • Mesma área do código: se T1 e T2 mexem nas mesmas pastas, conflito de merge é certo. Sequencial.
- • Você ainda baba cada uma: se não confia em /focus, paralelo vira caos. Domine 1 antes de subir.
- • Pra refactor amplo (1 grande): melhor 1 sessão concentrada que 3 com pedaços.
- • Sweet spot é 3-4: 5+ vira gerenciamento manual. Bori Cherny diz 5, mas ele é o criador. Comece em 3.
📊 Métricas do dia
(9h → 12h22)
(resto Claude trabalha sozinho)
🧠 O padrão N4 dos 3 cases
- 1. claude.md evolui REAGINDO a erro, não previsão. Cada erro recorrente → 1 linha de NUNCA-SEMPRE.
- 2. Plan mode em features >3 arquivos é não-negociável. O custo de 8min de plan ≠ o custo de 1 dia de refactor.
- 3. Worktrees isoladas + /focus + slash commands customizados = você opera time de 3-4 sem virar babá.
- 4. Claude DEVE perguntar quando algo é ambíguo (schema inconsistente, contexto incerto). Coloca isso no claude.md.
- 5. Você NÃO mergeia. Claude entrega PR. Você revisa. Você mergeia. Regra explícita evita acidente.
🎓 Resumo do Módulo
Próximo Módulo:
4.5 — Walkthrough: bug report sexta 23h ao PR mergeado segunda 8h, sem queimar fim de semana.