Boas Práticas & Padrões
~25 min Intermediário Parte 5

Boas Práticas & Padrões

CLAUDE.md eficaz, prompts de qualidade, padrões de uso diário, segurança e debug de sessões — tudo que separa um uso casual de um uso profissional do Claude Code.

CLAUDE.md eficaz

O arquivo CLAUDE.md é o principal mecanismo para contextualizar o Claude sobre seu projeto. Um CLAUDE.md bem escrito pode reduzir drasticamente o tempo gasto explicando o projeto a cada sessão. A chave é ser específico e útil — não genérico.

# O que INCLUIR no CLAUDE.md

✓ Stack técnico específico (ex: "Next.js 14 App Router + Prisma + PostgreSQL")
✓ Comandos do projeto (npm run dev, npm test, npm run build)
✓ Convenções de código (ex: "usamos kebab-case para arquivos, PascalCase para componentes")
✓ Arquivos críticos com propósito (ex: "src/lib/db.ts — cliente Prisma singleton")
✓ Exemplos de padrões usados (ex: "Server Actions em src/actions/")
✓ Restrições importantes (ex: "nunca modificar migrations existentes")

# O que EVITAR no CLAUDE.md

✗ Secrets e API keys (use .env)
✗ Informações genéricas que Claude já sabe (ex: "JavaScript é case-sensitive")
✗ Instruções longas demais — Claude lê tudo, contexto tem custo
✗ Regras contraditorias ou desatualizadas

Estrutura recomendada de CLAUDE.md

Um template que funciona bem para a maioria dos projetos:

# Projeto: [Nome]

## Stack
- Runtime: Node.js 20 + TypeScript 5
- Framework: Next.js 14 (App Router)
- DB: PostgreSQL via Prisma ORM
- Testes: Vitest + Testing Library

## Comandos
- `npm run dev` — servidor de desenvolvimento (porta 3000)
- `npm test` — roda testes com Vitest
- `npm run db:push` — sincroniza schema Prisma
- `npm run lint` — ESLint + Prettier

## Convenções
- Componentes: PascalCase em src/components/
- Arquivos: kebab-case
- Server Actions: src/actions/*.ts
- Tipos compartilhados: src/types/index.ts

## Arquivos Críticos
- src/lib/db.ts — cliente Prisma (singleton, não reinstanciar)
- src/lib/auth.ts — NextAuth config
- src/middleware.ts — proteção de rotas

## Padrões
- Sempre usar Server Components por padrão
- Client Components apenas quando necessário (useState, useEffect, eventos)
- Erros: usar Result type de src/lib/result.ts

Prompts eficazes

A qualidade dos seus prompts determina diretamente a qualidade do output. Prompts vagos geram resultados genéricos; prompts específicos geram resultados precisos e acionáveis.

# Prompts ruins vs. bons

✗ "Melhore meu código"
✓ "Refatore src/auth.ts para usar async/await em vez de .then()/.catch()
    e adicione tratamento de erros com Result type de src/lib/result.ts"

✗ "Faça testes"
✓ "Crie testes unitários para todas as funções exportadas em src/utils/format.ts
    usando Vitest. Mock dependências externas. Cobertura mínima: 80%."

✗ "Isso está errado"
✓ "Este código tem N+1 query problem na linha 45 de src/api/users.ts.
    Corrija usando include do Prisma para eager loading de posts."

✗ "Adicione autenticação"
✓ "Adicione autenticação JWT em src/api/middleware.ts. Use o padrão já
    existente em src/api/auth.ts. Tokens expiram em 24h. Retorne 401 para
    tokens inválidos com { error: 'Unauthorized' }."

Padrões de uso diário

Uma rotina estruturada maximiza produtividade e minimiza desperdício de contexto. O contexto de uma sessão é um recurso finito — use com intencionalidade.

# Rotina recomendada

Manhã — iniciar sessão limpa
  claude "o que foi modificado ontem? resume o estado atual do projeto"
  claude "qual é a tarefa prioritária de hoje?"

Durante o trabalho — sessões focadas
  Uma sessão por tarefa/feature quando possível
  /compact ao contexto crescer demais (~70% da janela)
  /status para monitorar tokens consumidos

Antes de parar
  claude "faça commit das mudanças com mensagem semântica"
  claude "resume o que foi feito para retomar amanhã" > HANDOFF.md

Revisão de PR
  claude "revise este diff e aponte: bugs, edge cases, melhorias de performance"
  git diff main..feature/branch | claude --stdin "revise este diff"

Gestão de contexto na prática

Saber quando e como gerenciar o contexto de uma sessão é uma habilidade central para uso avançado do Claude Code.

# Monitorando a sessão
/status                    # tokens usados, modelo, custo estimado

# Quando compactar
/compact                   # resume a sessão mantendo contexto essencial
# Use quando: tarefa longa, mudança de assunto, contexto > 70% da janela

# Quando reiniciar
# Use nova sessão quando: comportamento estranho, tarefa completamente diferente,
# bugs de raciocínio circulares

# Passando contexto entre sessões
claude "leia HANDOFF.md e retome de onde paramos"

# Referenciando arquivos em vez de colar conteúdo
# RUIM: colar 500 linhas de código no prompt
# BOM:  "analise src/components/UserCard.tsx e sugira melhorias"

Segurança

Claude Code tem acesso ao seu filesystem e pode executar comandos. Use com responsabilidade — especialmente em ambientes de produção ou ao trabalhar com dados sensíveis.

# Regras essenciais de segurança

✗ Nunca cole API keys, tokens ou senhas no prompt
✗ Não peça ao Claude para fazer push diretamente em main sem review
✗ Cuidado com --dangerously-skip-permissions em máquinas de produção
✗ Não aprovem ações destrutivas sem ler o diff (rm -rf, DROP TABLE, etc.)

✓ Use allow/deny lists em settings.json para restringir ferramentas
✓ Revise cada ação destrutiva antes de aprovar
✓ Use plan mode antes de mudanças grandes ou arriscadas
✓ Configure .claudeignore para excluir arquivos sensíveis
✓ Em CI/CD: use ANTHROPIC_API_KEY como secret do sistema, nunca hardcoded
✓ Prefira sessões com auto-accept DESLIGADO em produção

Configurando allow/deny lists

O settings.json permite controlar precisamente quais ferramentas e comandos Claude pode usar. Isso é especialmente importante em ambientes compartilhados ou sensíveis.

{
  "permissions": {
    "allow": [
      "Read",
      "Write",
      "Bash(git *)",
      "Bash(npm run *)",
      "Bash(npx *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force *)",
      "Bash(sudo *)",
      "WebFetch"
    ]
  }
}

Debug de sessões problemáticas

Quando Claude não está se comportando como esperado, siga este processo de diagnóstico antes de desistir da sessão.

# Diagnóstico de sessão

# 1. Verifique o status da sessão
/status

# 2. Ative verbose para ver todas as chamadas de ferramentas
claude --verbose

# 3. Se o contexto estiver muito pesado
/compact

# 4. Se o comportamento for circular ou errado
# Inicie nova sessão — não tente "corrigir" uma sessão com reasoning falho

# 5. Se uma ferramenta específica não funcionar
# Verifique settings.json e permissões
cat ~/.claude/settings.json

# 6. Se resultados forem inconsistentes entre sessões
# Revise e atualize seu CLAUDE.md — pode estar desatualizado

# Flags úteis para debug
claude --verbose          # mostra cada chamada de tool
claude --output-format json  # saída estruturada para scripts
claude --no-auto-accept   # review manual de cada ação

Padrão de revisão de código

Claude Code é excelente para code review. Um fluxo estruturado garante reviews consistentes e úteis.

# Review de um PR completo
git diff main..HEAD | claude --stdin \
  "Revise este diff. Foque em:
   1. Bugs e edge cases não tratados
   2. Problemas de segurança (SQL injection, XSS, auth bypass)
   3. Performance (N+1 queries, loops desnecessários)
   4. Conformidade com padrões do projeto (ver CLAUDE.md)
   Formato: lista de issues por categoria, severidade (alta/média/baixa)"

# Review de arquivo específico
claude "revise src/api/payments.ts focando em segurança e tratamento de erros"

# Review antes de cada commit (via hook)
# Ver módulo 15 para integração com pre-commit hooks

Trabalhando em equipe

Quando múltiplos desenvolvedores usam Claude Code no mesmo projeto, algumas convenções evitam conflitos e garantem consistência.

# Boas práticas para times

CLAUDE.md compartilhado no repositório
  - Versionado junto ao código
  - Revisado em PRs como qualquer outro arquivo
  - Atualizado quando padrões mudam

Separar configurações pessoais das do projeto
  ~/.claude/settings.json  — configurações pessoais (não versionar)
  .claude/settings.json    — configurações do projeto (versionar)

Documentar decisões de arquitetura
  "claude, por que foi escolhido X em vez de Y?" → save em ADR.md

Compartilhar prompts que funcionam bem
  Criar src/prompts/ com prompts reutilizáveis para tarefas comuns
  Ex: prompts/review-security.md, prompts/generate-tests.md

Comparativo de boas práticas

Área Prática ruim Prática recomendada
Prompts Vagos, sem contexto Específicos, com arquivo e linha
Contexto Sessão de dias sem /compact Sessões focadas por tarefa
Segurança Auto-accept sempre ativo Review manual em ações destrutivas
CLAUDE.md Genérico ou inexistente Específico ao projeto, atualizado
Debug Continuar sessão problemática Nova sessão + --verbose
Times Cada dev com sua configuração CLAUDE.md compartilhado no repo

Exercício

Audite seu setup atual do Claude Code em três etapas:

  1. CLAUDE.md: Abra (ou crie) o CLAUDE.md do seu projeto principal. Verifique se contém stack, comandos, convenções e arquivos críticos. Remova informações genéricas que Claude já sabe.
  2. Segurança: Revise seu settings.json (em ~/.claude/ e .claude/ do projeto). Adicione pelo menos uma regra de deny para comandos que nunca devem ser executados automaticamente no seu contexto.
  3. Prompt: Pegue um prompt que você usa frequentemente e reescreva-o seguindo o padrão: ação + arquivo específico + critérios + formato de saída. Compare os resultados antes e depois.

Recursos

0%