Claude Code - Boas práticas com Agentes de IA


  Neste artigo veremos como aplicar boas práticas para o desenvolvimento com IA Autônoma no Claude Code.

O Claude Code não é apenas mais um assistente de codificação com IA, é uma mudança completa de paradigma na forma como abordamos o desenvolvimento de software.

Diferente de ferramentas tradicionais de IA que exigem intervenção manual constante, o Claude Code vive no seu terminal, entende toda a sua base de código e pode executar ações reais: ler arquivos, rodar testes, fazer commits de mudanças e até criar pull requests. É codificação agentic em seu melhor nível.



O fluxo de trabalho dourado: Pesquisa -> Planejamento -> Implementação

O maior erro que desenvolvedores cometem com Claude Code é ir direto para a implementação. Embora o Claude possa escrever código sob demanda, pular a fase de pensamento reduz significativamente a qualidade para problemas complexos.

Existe um processo de 3 etapas para um fluxo de trabalho melhor.

Etapa 1 - Pesquisa

Peça ao Claude para explorar sua base de código e coletar contexto antes de tocar em qualquer código.

Pesquise como nosso sistema de autenticação funciona.
Encontre todos os arquivos relevantes e explique o fluxo atual

O Claude usará suas capacidades de busca de arquivos para entender sua arquitetura, identificar componentes-chave e trazer à tona possíveis casos extremos que você pode ter ignorado.

Etapa 2- Planejamento

Uma vez que o contexto foi obtido, peça ao Claude para criar um plano detalhado de implementação.

Agora elabore um plano detalhado para a implementação do suporte a OAuth.
Fragmente o processo em etapas e identifique potenciais gargalos ou problemas.

O Claude vai descrever:
• Arquivos que precisam ser modificados
• Novos arquivos a serem criados
• Dependências a serem instaladas
• Casos de teste a serem considerados
• Estratégias de migração

Etapa 3 - Implementação

Somente agora você deve pedir ao Claude para escrever código.

Implemente a solução OAuth com base no seu plano.
Verifique cada etapa à medida que avança e faça o commit quando concluir.

Exemplo em um cenário simulado:

Veja como esse fluxo de trabalho evitou um bug em produção para uma equipe:

Sem o fluxo de trabalho

"Adicione rate limiting à nossa API"
Resultado: Claude adicionou middleware básico mas ignorou o pool de conexões Redis que já estava configurado

Com o fluxo de trabalho

"Pesquise como lidamos atualmente com cache e conexões Redis"
Claude descobre infraestrutura existente

"Planeje como adicionar rate limiting que se integre à nossa configuração do Redis"

Claude cria um plano que reutiliza conexões existentes

"Implemente o rate limiting seguindo o seu plano"
Resultado: Implementação limpa que se encaixa na arquitetura

Desenvolvimento Orientado a Testes (TDD)

O TDD se torna exponencialmente mais poderoso com codificação agentic. O ciclo de escrever teste → implementar → verificar pode rodar de forma autônoma enquanto você foca em decisões de design de nível mais alto.

O loop de TDD com Claude Code 

Escreva testes para um endpoint de registro de usuário que deve:
Aceitar e-mail e senha
Validar o formato do e-mail
Realizar o hash das senhas com bcrypt
Retornar 201 em caso de sucesso
Retornar 400 para entradas inválidas
Então, implemente o endpoint para passar nesses testes.

Com base neste prompt o Claude vai fazer o seguinte:
 - Criar casos de teste abrangentes
 - Executar os testes (eles irão falhar)
 - Implementar a funcionalidade
 - Executar os testes novamente
 - Iterar até que tudo passe
 - Fazer commit com uma mensagem descritiva

Padrão Avançado de TDD

Para funcionalidades complexas, use uma etapa secundária de verificação adicionando detalhes no arquivo CLAUDE.md:

# No seu arquivo CLAUDE.md
Ao implementar funcionalidades:
1.Escreva os testes primeiro
2.Implemente a solução
3.Execute a suíte de testes completa
4.Se os testes passarem, verifique casos de borda (edge cases):
   -Inputs nulos
   -Condições de contorno
   -Acesso concorrente
5.Adicione testes de integração
6.Verifique vulnerabilidades de segurança

Personalize a Configuração da Sua Aplicação

Um dos passos fundamentais para uma codificação agentic eficaz com Claude Code é configurar seu ambiente para que a ferramenta “conheça seu mundo” antecipadamente.

Você pode definir diretrizes do projeto dentro da pasta .claude no diretório raiz com arquivos CLAUDE.md ou CLAUDE.local.md.

O que vai no CLAUDE.md ?

Pense no CLAUDE.md como o documento constitucional do seu projeto para interações com IA. Claude lê automaticamente esse arquivo e segue suas diretrizes durante toda a sessão.

Você pode definir essas diretrizes para si mesmo ou compartilhá-las com toda a equipe enviando ao repositório.

Exemplo:

#Contexto do Projeto
Esta é uma API ASP.NET Core utilizando C# e Entity Framework Core (EF Core).
## Estilo de Código
-Siga as C# Coding Conventions (Microsoft)
-Prefira async/await para todas as operações de I/O
-Comprimento máximo da linha: 100 caracteres
-Use nomes de variáveis descritivos (sem letras únicas,
 exceto em contadores de loop como i, j)
-Utilize Dependency Injection (DI) nativa para gerenciamento de serviços
## Requisitos de Teste
-Cada nova funcionalidade precisa de testes unitários
-Testes de integração para os endpoints da API (usando WebApplicationFactory)
-Use xUnit ou NUnit para os testes e FluentAssertions para validações
-Meta de cobertura superior a 80% (>80%)
## Comandos de Build
-dotnet watch run: Inicia o servidor de desenvolvimento com hot reload
-dotnet publish -c Release: Build de produção
-dotnet test: Executa a suíte de testes
-dotnet format: Verifica e corrige o estilo do código (linting)
## Erros Comuns (Pitfalls)
-Sempre valide os inputs do usuário (use FluentValidation ou Data Annotations)
-Use LINQ e EF Core corretamente para evitar queries parametrizadas manuais
 (evite FromSqlRaw com strings concatenadas)
-Verifique a autenticação e autorização via Policies ou Attributes antes do
 acesso aos dados
-Registre erros via ILogger, mas nunca exponha detalhes da exceção ou stack 
traces no ambiente de produção
## Convenções de Banco de Dados
-Use PascalCase para nomes de tabelas e colunas (padrão .NET) ou configure 
para snake_case via Fluent API
-Nomes de tabelas são no plural
-Sempre inclua propriedades de auditoria: CreatedAt e UpdatedAt
-Implemente Soft Delete utilizando filtros globais de consulta (HasQueryFilter) 
com a coluna DeletedAt

Dicas para CLAUDE.md

Atualização dinâmica:
Durante uma sessão, você pode atualizar o arquivo:

#Atualize o arquivo CLAUDE.md para registrar que agora estamos utilizando Zod para validação

Ajuste contínuo:
Como esse arquivo faz parte do contexto do prompt do agente, trate-o como qualquer prompt: refine, melhore e ajuste continuamente.

Exemplo:

IMPORTANTE: Utilize a pasta utils/ exclusivamente para funções utilitárias puras; não insira lógica de negócio/domínio neste local."

Use comandos slash personalizados
Você pode criar templates de prompt em .claude/commands que ficam disponíveis via menu / no Claude Code.

Exemplo:  Arquivo .claude/commands/fix-github-issue.md:

Por favor, analise e corrija a issue do GitHub: $ARGUMENTS.

Siga estas etapas:

1.Use gh issue view para obter os detalhes da issue
2.Pesquise na base de código por arquivos relevantes
3.Implemente as mudanças necessárias
4.Escreva e execute os testes
5.Garanta que o código passe no lint/typecheck
6.Faça o commit com uma mensagem descritiva
7.Faça o push e crie o PR"

Uso :  claude /fix-github-issue 1234

Use ferramentas bash

Como o Claude herda seu ambiente shell, ele pode executar comandos como ls, grep, npm run build.

Exemplo:  "Rode o comando npm run lint:ci seguido de npm test:unit. Caso ocorra alguma falha, interrompa o processo e exiba o log de erros."

Pensamento Estendido: Quando os Problemas Ficam Difíceis

Às vezes Claude precisa de mais tempo para pensar em problemas complexos.

Modos de pensamento:

# Pensamento padrão (4.000 tokens)
claude "Corrija este bug"

# Pensamento estendido (10.000 tokens)
claude "Pense profundamente sobre este problema de arquitetura e proponha uma solução"

# Pensamento máximo (32.000 tokens)
claude "Reflita exaustivamente sobre o design pattern ideal para este problema de comunicação entre microserviços"

Quando usar

Use pensamento estendido para:
• Decisões arquiteturais complexas
• Debugging difícil
• Refatoração de código legado
• Problemas de performance

Use modo padrão para:
• Correções simples
• Funcionalidades básicas
• Testes
• Documentação

Exemplo real:

Temos uma race condition (condição de corrida) em nosso sistema de processamento de pedidos. Pense profundamente sobre todas as causas possíveis e proponha uma solução abrangente.

Claude identificou:
- Falta de isolamento de transações no banco
- Handlers duplicados
- Colisão de chaves Redis
- Solução completa para os três

Segurança em Primeiro Lugar: Gerenciamento de Permissões

Claude Code pode executar comandos poderosos, o que significa que também pode causar danos.

Sistema de Permissões:

> Claude wants to run: rm -rf node_modules
Allow? (y/n/always)

Opções:

y → uma vez
always → sempre permitir
n → negar

Configurando permissões

claude /allowed-tools Edit Bash(git commit:*)
claude --allowedTools "Bash(npm run*),Bash(npm install*)"

Evite usar:  --dangerously-skip-permissions

No seu ambiente principal, e se for necessário :

• Use Docker
• Use VM descartável
• Desative a rede
• Use mounts somente leitura

Ao longo deste artigo, vimos que obter bons resultados com essa abordagem não depende apenas da ferramenta, mas principalmente de como estruturamos nosso fluxo de trabalho. O uso do ciclo Pesquisa → Planejamento → Implementação, aliado a práticas como TDD, definição de contexto com CLAUDE.md e uso consciente de permissões, permite extrair muito mais valor da ferramenta.

Além disso, técnicas como pensamento estendido e automação com comandos personalizados mostram que o Claude Code não é apenas um gerador de código, mas um verdadeiro parceiro no processo de desenvolvimento.

No entanto, com esse poder vem a responsabilidade. O uso seguro da ferramenta, especialmente no gerenciamento de permissões e execução de comandos, é essencial para evitar problemas no ambiente de desenvolvimento.

Ao aplicar essas boas práticas, desenvolvedores conseguem não apenas aumentar produtividade, mas também melhorar a qualidade e consistência das soluções entregues.

E estamos conversados...  

"Àquele que não conheceu pecado (Jesus), o fez pecado por nós; para que nele fôssemos feitos justiça de Deus. 2 Coríntios 5:21

Curso Spec-Driven Development com OpenSpec e Claude Code

Referências:


José Carlos Macoratti