Configurar Claude Code do Zero: Guia Prática para Desenvolvimento em Terminal

Claude Code não é um editor — é um agente de desenvolvimento que vive no seu terminal. Você diz o que fazer, e ele lê seu código, planeja, implementa, executa comandos, roda testes e faz commits. Este guia leva você desde a instalação até um fluxo de trabalho real.

Pré-requisitos

  • Node.js 18+ instalado
  • Conta Anthropic (pode autenticar com sua conta Claude ou com API key)
  • Git configurado na sua máquina
  • Um projeto existente com repositório git inicializado

Passo 1: Instalação

npm install -g @anthropic-ai/claude-code

Verifique a instalação:

claude --version

Navegue até seu projeto:

cd seu-projeto
claude

Na primeira vez, Claude Code pedirá para você se autenticar. Você pode usar sua conta Anthropic diretamente ou configurar uma API key.

Passo 2: Sua Primeira Sessão

Ao executar claude, você entra em um modo conversacional no terminal. Tente algo simples primeiro:

> Analise a estrutura deste projeto e me dê um resumo da 
  arquitetura, as dependências principais, e qualquer problema 
  potencial que você note.

Claude Code vai:

  1. Ler sua estrutura de arquivos
  2. Analisar package.json, configurações e arquivos-chave
  3. Dar um resumo organizado do projeto

Isso é útil para confirmar que Claude Code entende seu projeto antes de pedir mudanças.

Passo 3: Criar CLAUDE.md

O arquivo CLAUDE.md na raiz do seu projeto é a peça mais importante para obter bons resultados. É o equivalente às Rules do Cursor ou às custom instructions do Copilot.

Crie CLAUDE.md:

# Projeto: API de Gestão de Inventário

## Stack
- Runtime: Node.js 20 com TypeScript
- Framework: Fastify
- ORM: Drizzle com PostgreSQL
- Auth: JWT com refresh tokens
- Testing: Vitest
- Linting: Biome

## Estrutura

src/
routes/ → Rotas do Fastify organizadas por recurso
services/ → Lógica de negócio
repositories/ → Acesso a dados com Drizzle
schemas/ → Validação com Zod
middleware/ → Auth, rate limiting, logging
utils/ → Helpers compartilhados


## Convenções
- Repository pattern: routes → services → repositories
- Validação de inputs sempre na camada de routes com Zod
- Erros tipados com classes custom (AppError, ValidationError, NotFoundError)
- Nomes de variáveis e funções em inglês
- Commits em inglês seguindo Conventional Commits
- Tests junto ao arquivo que testam (arquivo.test.ts)

## Comandos
- `npm run dev` — servidor de desenvolvimento
- `npm run test` — rodar todos os testes
- `npm run test:watch` — testes em modo watch
- `npm run lint` — linting com Biome
- `npm run db:migrate` — rodar migrações
- `npm run db:generate` — gerar migrações a partir do schema

## Notas Importantes
- O banco de dados está no Supabase, não criar migrações destrutivas sem confirmação
- Os endpoints públicos precisam de rate limiting
- Nunca hardcodear secrets, sempre usar variáveis de ambiente

Claude Code lê este arquivo automaticamente ao iniciar cada sessão.

Passo 4: Fluxo de Trabalho para Implementar uma Feature

Vamos ver um fluxo completo para adicionar funcionalidade:

> Preciso adicionar um endpoint para gerenciar categorias de produtos.
  Cada categoria tem: id, nome, descrição (opcional), slug 
  (gerado do nome), e timestamps.
  
  Preciso:
  1. Schema do Drizzle e migração
  2. Repository com CRUD completo
  3. Service com validação de negócio (nome único, slug único)
  4. Routes: GET /categories, GET /categories/:id, POST /categories, 
     PUT /categories/:id, DELETE /categories/:id
  5. Testes para o service
  
  Siga os padrões existentes do projeto.

Claude Code vai:

  1. Ler os arquivos existentes para entender os padrões (routes, services, repositories atuais)
  2. Planejar a implementação
  3. Criar cada arquivo seguindo as convenções do projeto
  4. Gerar a migração de banco de dados
  5. Escrever os testes

Depois de implementar, você pode pedir para ele executar os testes:

> Rode os testes para verificar que tudo funciona

Claude Code executa npm run test (ou o comando que você definiu em CLAUDE.md), vê os resultados, e se houver falhas, as corrige automaticamente.

Passo 5: Comandos Essenciais

Dentro de uma sessão de Claude Code:

  • /compact — resume a conversa atual para liberar espaço no context window. Essencial para sessões longas.
  • /clear — limpa o histórico da conversa
  • /cost — mostra quantos tokens você consumiu na sessão
  • /help — lista todos os comandos disponíveis

Permissões: Claude Code pedirá permissão antes de executar comandos no terminal ou escrever arquivos. Você pode configurar permissões mais permissivas se confiar no que está fazendo:

  • Pressione Allow para uma ação individual
  • Pressione Allow always para permitir esse tipo de ação no futuro

Passo 6: MCP (Model Context Protocol)

MCP permite conectar Claude Code a ferramentas externas. Configure MCP servers em ~/.claude/claude_desktop_config.json ou em .claude/settings.json do seu projeto:

{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": ["-y", "@supabase/mcp-server"],
      "env": {
        "SUPABASE_URL": "sua-url",
        "SUPABASE_SERVICE_KEY": "sua-chave"
      }
    }
  }
}

Com MCP configurado, Claude Code pode consultar seu banco de dados diretamente, ler schemas atuais e gerar código mais preciso.

Alguns MCP servers úteis:

  • Supabase — acesso direto ao seu banco de dados
  • GitHub — criar issues, PRs, revisar código
  • Filesystem — acesso expandido a arquivos fora do projeto
  • Brave Search — buscar documentação e soluções na web

Passo 7: Fluxo de Trabalho de Debugging

Claude Code é excelente para debugging. Fluxo prático:

> O endpoint POST /products está devolvendo 500 quando envio um 
  produto com preço decimal. Investigue o erro, identifique a 
  causa e corrija. Depois adicione um teste que cubra este caso.

Claude Code vai:

  1. Ler a rota, o service e o repository relevantes
  2. Identificar onde quebra (provavelmente validação de tipos ou parsing)
  3. Corrigir o bug
  4. Escrever um teste que reproduza o caso
  5. Executar os testes para confirmar que funciona

Passo 8: Hooks para Automação

Os hooks executam scripts antes ou depois de ações do Claude Code. Configure em .claude/settings.json:

{
  "hooks": {
    "afterWrite": {
      "command": "npx biome check --write {{file}}"
    }
  }
}

Isso roda o linter automaticamente depois de cada arquivo que Claude Code escreve, garantindo que o formato sempre esteja correto.

Outros hooks úteis:

  • afterWrite — lint, format, validação de tipos
  • beforeCommit — rodar testes antes de fazer commit
  • afterCommit — notificações, deploy preview

Erros Comuns

Não criar CLAUDE.md. Sem contexto, Claude Code gera código genérico. Com um bom CLAUDE.md, gera código que se integra naturalmente com seu projeto.

Sessões muito longas sem /compact. O context window se enche e a qualidade das respostas cai. Use /compact regularmente em sessões longas.

Não deixar que execute testes. Claude Code é mais eficaz quando pode iterar: escrever código → rodar testes → ver erros → corrigir. Se você não der permissão para executar comandos, perde essa capacidade.

Pedir muito em um único prompt. Para features grandes, divida em passos. “Primeiro crie o schema e a migração” → verifique → “Agora o repository e o service” → verifique → “Agora as routes e os testes”.

Resultado

Seu fluxo de trabalho com Claude Code:

  1. Você abre o terminal no seu projeto
  2. Claude Code lê CLAUDE.md e entende seu contexto
  3. Você descreve a tarefa em linguagem natural
  4. Ele planeja, implementa, testa e faz commit
  5. Você revisa as mudanças e ajusta se necessário

É como ter um desenvolvedor junior muito rápido e disponível 24/7 que segue suas convenções à risca — desde que você dê um bom CLAUDE.md.

Já usa Claude Code? Compartilhe seu CLAUDE.md e seus fluxos de trabalho. :backhand_index_pointing_down: