Claude Code - Dicas de Fluxo de trabalho


  Hoje veremos algumas dicas de como ter mais produtividade e extrair mais do Claude Code no dia a dia

A seguir vou apresentar sete dicas para otimizar o fluxo de trabalho usando o Claude Code.

 

1. Inicie o projeto com o comando /init para criar o contexto do projeto para o Claude

Uma das primeiras coisas a se fazer ao começar a trabalhar em um novo projeto é enviar o comando ao Claude Code:  /init

O Claude criará um arquivo CLAUDE.md com informações contextuais sobre este projeto específico.

Como exemplo vemos o arquivo CLAUDE.md gerado para a execução do comando  /init em um projeto Blazor Web App de controle financeiro:

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with 
code in this repository.
## Project status
This is a Blazor Server (.NET 9) application scaffolded from the default 
`dotnet new blazor` template. It is named "ControleFinanceiro" (personal 
finance management, per the project name) but no domain-specific functionality 
has been built yet — all files under `Components/` are still the template's stock
 pages (Home, Counter, Weather, layout, routing).
## Commands
Run all commands from the repository root (`D:\projetos\controlefinanceiro`), 
where `ControleFinanceiro.sln` / `ControleFinanceiro.csproj` live.
- Build: `dotnet build`
- Run (dev server with hot reload): `dotnet watch run`
- Run (no watch): `dotnet run`
- Restore packages: `dotnet restore`
There is no test project in the solution yet. When adding tests, create a separate 
test project (e.g. `ControleFinanceiro.Tests`) and add it to `ControleFinanceiro.sln`;
 standard command would then be `dotnet test`.
Dev server ports (from `Properties/launchSettings.json`):
- HTTP: `http://localhost:5210`
- HTTPS: `https://localhost:7245`
## Architecture
- **App model**: Blazor Server with interactive server-side render mode, configured 
in `Program.cs` via `AddRazorComponents().AddInteractiveServerComponents()` 
and `MapRazorComponents<App>().AddInteractiveServerRenderMode()`. 
All UI runs as server-rendered Razor components with a SignalR circuit 
— there is no WebAssembly/client-side component host set up.

- **Entry point**: `Program.cs` builds the `WebApplication`, wires the exception 
handler + HSTS for non-Development environments, and maps static assets + root 
component `App`.

- **Root composition**: `Components/App.razor` is the HTML shell (doctype, head, 
`<Routes />`, blazor.web.js). `Components/Routes.razor` sets up the `Router` over
 the assembly. `Components/_Imports.razor` holds shared `@using` directives for all 
`.razor` files.

- **Layout**: `Components/Layout/MainLayout.razor` + `Components/Layout/NavMenu.razor`
 define the page chrome and left nav.
- **Pages**: `Components/Pages/*.razor` — each page is a routable component 
(`@page` directive at the top). Currently only the template samples (`Home`,
 `Counter`, `Weather`, `Error`) exist.

- **Static assets**: served from `wwwroot/`, referenced in markup via the 
`Assets[...]` map (ASP.NET Core's asset fingerprinting), e.g. `@Assets["app.css"]`.

- **No data layer yet**: no `DbContext`, no EF Core package reference, no services 
registered beyond Razor Components. When adding persistence or business logic for 
finance tracking, this is greenfield — there's no existing pattern in-repo to conform
 to yet, so establish one deliberately (e.g. a `Services/` or `Data/` folder, DI 
registration in `Program.cs`).

Depois você pode otimizar o CLAUDE.md gerado refinando o seu conteúdo.

2. Use o modo "Plan" (Planejamento) para qualquer tarefa complexa.

Não parta direto para a implementação. Em vez disso, crie o contexto adequado para que a IA gere o melhor resultado possível.

No modo "Plan" antes de escrever uma única linha de código, o Claude elabora um plano que explica sua abordagem e faz perguntas importantes a você. Isso me poupa de muitas idas e vindas.

Uma dica valiosa para o planejamento com o Claude Code:

Use o Codex para o planejamento.

Dois modelos são melhores do que um. E o grande diferencial do Claude Code é que você pode integrar o Codex ao seu ambiente do Claude. Para isso, você precisará instalar o plugin do Codex:

/plugin install codex@openai-codex

Assim, você pode usar o Codex para revisar o plano do Claude antes da implementação, utilizando o seguinte comando:

/codex:adversarial-review

Uma revisão feita por outra IA (de confronto crítico) identificará diversos problemas no plano, poupando muitos tokens que, de outra forma, seriam gastos em iterações desnecessárias.

3. Comece pequeno

Ao trabalhar no design de um novo produto, raramente construímos o produto inteiro de uma só vez. Na maioria das vezes, dividimos uma tarefa grande (criar um novo produto) em subtarefas e as executamos uma a uma. A mesma abordagem se aplica ao trabalho com IA.

Se você pedir ao Claude para "implementar o produto inteiro", ele o fará, mas há uma grande chance de que muitas áreas desses novos recursos exijam refinamento e iterações adicionais. Ao lidar com tarefas menores, você reduz a probabilidade de enfrentar problemas.

Como exemplo se você tentar fazer tudo de uma vez para criar um projeto de Pedidos com ASP.NET Core usando o prompt:

"Crie o sistema completo de Pedidos com banco de dados, injeção de dependência, validações e o Factory Method."

O Claude vai gerar dezenas de arquivos, mas a chance de você ter problemas com namespaces errados, métodos faltando ou erros de compilação é enorme.

A aplicação prática dessa dica é quebrar isso em 3 passos cirúrgicos:

Passo 1: Focar apenas no Domínio (As Regras e a Factory)

Primeiro, você isola a lógica pura do C#, sem se preocupar com Web API ou banco de dados.

O seu comando para o Claude:

"Claude, crie apenas a interface IPedido, as classes PedidoNacional e PedidoInternacional, e a classe abstrata PedidoFactory com suas respectivas implementações. Não crie controllers ou endpoints ainda."

Você compila, vê se a lógica da Factory faz sentido e se o C# não acusa erros.

Passo 2: Focar na Integração (A Web API)

Com a Factory funcionando e testada no domínio, você passa para a camada de exposição.

O seu comando para o Claude:

"Agora que a Factory está pronta, crie o PedidosController (ou uma Minimal API) que receba essa Factory via Injeção de Dependência e exponha um endpoint POST /api/pedidos para criar os pedidos."

Você roda o projeto, abre o Swagger e testa se o endpoint está respondendo corretamente.

Passo 3: Focar na Persistência (O Banco de Dados)

Por fim, você adiciona a infraestrutura que faltava.

O seu comando para o Claude:

"O endpoint está funcionando com dados em memória. Agora, configure o DbContext do Entity Framework Core para salvar esses pedidos gerados pela Factory no banco de dados."

Por que isso funciona melhor?

Se der um erro no Passo 2, você sabe com 100% de certeza que o problema está na rota ou na injeção de dependência da API, e não na lógica da Factory (que já foi validada no Passo 1). Fica infinitamente mais fácil debugar.

Dica valiosa para otimizar o trabalho com o Claude Code:

Use uma prévia visual da sua solução.

Uma grande vantagem do Claude Code é que ele pode exibir uma prévia do seu futuro produto. É possível até pedir ao Claude Code para mostrar uma parte específica do produto, caso você queira entender como ela funciona.

Por exemplo, você pode pedir ao Claude Code para visualizar um novo recurso do produto dentro do contexto de um fluxo de usuário específico. O melhor de tudo é que o protótipo não precisa ser criado na mesma pilha tecnológica do seu aplicativo; você pode pedir ao Claude Code para criar um protótipo simples em HTML para testar o recurso.

Como exemplo, suponha que você esta implementando o padrão factory method em um projeto de Pedidos (ASP.NET Core Web API)

Como eu faria para ele me mostrar a visualização final disso ?

Para ver a visualização funcional da sua fábrica no ASP.NET Core sem precisar criar todo o banco de dados ou a interface definitiva, a melhor estratégia é pedir ao Claude Code para gerar um mecanismo de teste rápido (Console ou Minimal API) que isole e simule a criação dos objetos.

Como o Claude Code lê a estrutura do seu projeto, você pode pedir para ele simular os diferentes cenários. Veja o passo a passo de como fazer isso na prática utilizando a ferramenta:

Passo 1: O Comando no Claude Code

No terminal onde o Claude Code está rodando, você deve pedir para ele criar um cenário de teste visual isolado. Digite algo como:

"Claude, crie uma Minimal API temporária (ou um program de console) que utilize o meu Factory Method de Pedidos. Quero que ela simule a criação de 3 tipos de pedidos diferentes e retorne o resultado formatado em JSON na tela para eu validar o comportamento visual final."

Passo 2: O que o Claude Code vai estruturar

Ele vai entender o seu padrão Factory. Imagine que você tem uma estrutura parecida com esta no seu projeto:

// O produto que sua fábrica cria
public interface IPedido { string Processar(); }
// As implementações reais
public class PedidoNacional : IPedido { public string Processar() => 
               "Pedido Nacional processado via Frete Padrão."; }

public class PedidoInternacional : IPedido { public string Processar() => 
          "Pedido Internacional processado via DHL com taxas alfandegárias."; }
// A Fábrica (Factory Method)
public abstract class PedidoFactory 
{
    public abstract IPedido CriarPedido();
}

 Para te dar a visualização final, o Claude Code criará um arquivo de teste rápido (como um endpoint direto no seu Program.cs ou um arquivo factory-test.http).

Ele simulará a execução criando um endpoint visual assim:

// Endpoint temporário que o Claude pode injetar para você visualizar
app.MapGet("/visualizar-factory/{tipo}", (string tipo) => 
{
    PedidoFactory factory = tipo.ToLower() switch
    {
        "nacional" => new NacionalFactory(),
        "internacional" => new InternacionalFactory(),
        _ => throw new ArgumentException("Tipo inválido")
    };
    IPedido pedido = factory.CriarPedido();
    // O retorno visual imediato
    return Results.Ok(new {
        Cenario = $"Simulação de Pedido {tipo}",
        ResultadoFactory = pedido.Processar(),
        TipoObjetoCriado = pedido.GetType().Name,
        Timestamp = DateTime.UtcNow
    });
});

Passo 3: Como você visualiza o resultado?

Uma vez que o Claude Code gerar esse trecho de teste, você tem duas formas excelentes de enxergar o resultado final:

Opção A: Via arquivo .http (A mais limpa)

Você pode pedir: "Claude, crie um arquivo teste.http para disparar requisições contra essa factory".

Ele gerará um arquivo no seu projeto. Se você usa o VS Code ou Visual Studio, basta clicar em "Send Request" diretamente no arquivo para ver a resposta formatada ao lado:

GET http://localhost:5000/visualizar-factory/internacional
Accept: application/json

Resultado visual que você verá na tela:

{
   "cenario": "Simulação de Pedido internacional",
   "resultadoFactory": "Pedido Internacional processado via DHL com taxas    alfandegárias.",
   "tipoObjetoCriado": "PedidoInternacional",
   "timestamp": "2026-07-20T12:15:00Z"
}

Opção B: Via Swagger UI

Como você está em uma ASP.NET Core Web API, se o Swagger estiver ativo, você pode simplesmente pedir para o Claude rodar o projeto (dotnet run). Abra o navegador no endereço do Swagger (http://localhost:XXXX/swagger) e você verá o endpoint da Factory pronto para ser testado com um clique no botão "Try it out".

Dica de ouro com o Claude Code:

Se você não quiser mexer em nada do código do seu projeto atual para não "sujar" o repositório, peça expressamente: "Claude, crie um arquivo FactorySimulacao.cs isolado com um método Main contendo um protótipo em texto limpo rodando essa lógica, e execute-o via terminal para mim". Ele rodará e te mostrará o fluxo printado no próprio terminal da ferramenta.

4. Não tente explicar bugs com suas próprias palavras

Quando o Claude gerar um design para você e você se deparar com um erro durante a interação com seu produto, não tente explicar o problema usando suas próprias palavras.

Em vez disso, copie e cole o código de erro e peça ao Claude para corrigir a falha. O Claude foi treinado com uma enorme base de dados de códigos de erro; muitas vezes, é muito mais fácil para a IA identificar a causa raiz do problema quando você fornece o código de erro bruto.

Dica valiosa: Peça ao Claude para realizar uma auditoria de segurança no seu código-fonte.

O fato de o produto funcionar conforme o esperado não significa que ele seja seguro para uso. É sempre recomendável realizar uma auditoria de segurança antes de lançar um produto.

Vamos a um exemplo prático de como aplicar essa dica em um projeto ASP.NET Core / .NET 8 ou 9, dividida em duas partes: o erro bruto e a auditoria de segurança.

Parte 1: Aplicando a regra do "Erro Bruto"

Imagine que você tentou rodar sua API de Pedidos após implementar o Factory Method e o terminal cuspiu este erro gigante e intimidador:

Unhandled exception. System.InvalidOperationException: Unable to resolve
service for type 'Pedidos.Factories.PedidoFactory' while attempting to
activate 'Pedidos.Controllers.PedidosController'.
at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type type, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider.<>c__DisplayClass7_0.<CreateActivator>b__0(ControllerContext controllerContext)

❌ O jeito ruim (Explicando com suas palavras):

"Claude, deu um erro de InvalidOperationException dizendo que não conseguiu resolver o serviço da minha factory no controller de pedidos quando fui rodar a API. Arrume para mim."

O jeito certo (Copiar o erro bruto):

Você joga o erro exatamente como está e digita apenas:

"Claude, montei a factory de pedidos mas ao rodar a API deu este erro. Corrija o código:" [Colar o erro bruto no terminal do Claude Code]

O que o Claude identifica imediatamente no erro .NET:

Ao ler Unable to resolve service for type..., o Claude não precisa adivinhar. Ele vai direto na raiz do ecossistema .NET: você esqueceu de registrar sua Factory no container de Injeção de Dependência (DI) do ASP.NET Core.

Ele te devolverá o ajuste exato para o seu Program.cs:

Parte 2: A Dica de Ouro (Auditoria de Segurança no .NET)

Como o texto mencionou, o fato de a Factory estar funcionando e criando pedidos não significa que ela é segura. No .NET, falhas de segurança comuns envolvem injeção de dados ou exposição de estados.

Veja um exemplo de código que funciona perfeitamente, mas falharia feio em uma auditoria de segurança que você pediria ao Claude:

public class PedidoFactory 
{
    // O código funciona, mas tem uma falha grave de segurança (.NET SQL Injection)
    public IPedido CriarPedidoPorQueryString(string tipoPedido, string conexaoBanco)
    {
        // VULNERABILIDADE: Concatenando string diretamente para buscar regras no banco
        string query = $"SELECT * FROM RegrasPedidos WHERE Tipo = '{tipoPedido}'";

        // Executa a query...

        if (tipoPedido == "Internacional") return new PedidoInternacional();
        return new PedidoNacional();
    }
}

Como pedir a auditoria ao Claude:

Você envia sua Factory e escreve:

"Claude, esta Factory de Pedidos está funcionando perfeitamente nos meus testes de endpoint. No entanto, realize uma auditoria de segurança estrita focada em vulnerabilidades comuns do ecossistema .NET (OWASP Top 10, SQL Injection, Resource Leak) neste trecho e reescreva-o com as correções."

O Diagnóstico que o Claude retornará:

O Claude identificará que a interpolação de string '{tipoPedido}' abre as portas para um ataque de SQL Injection. Se um usuário passar no parâmetro da API algo como Nacional'; DROP TABLE RegrasPedidos; --, ele pode apagar seu banco de dados.

Ele reescreverá o código utilizando Consultas Parametrizadas (via Dapper ou ADO.NET) ou o ecossistema seguro do Entity Framework Core:

// Código corrigido pelo Claude após a auditoria
public async Task<IPedido> CriarPedidoSeguroAsync(string tipoPedido, MyDbContext context)
{
    // O EF Core parametriza isso automaticamente, tornando-o imune a SQL Injection
    var regra = await context.RegrasPedidos
        .FirstOrDefaultAsync(r => r.Tipo == tipoPedido);
    if (tipoPedido == "Internacional") return new PedidoInternacional();
    return new PedidoNacional();
}

5. Transferir o contexto para a sessão quando você se deparar com o excesso de contexto

Se você precisar iniciar uma nova sessão devido ao excesso de contexto e não quiser perder detalhes contextuais importantes, você pode pedir ao Claude Code para criar um dump com essas informações.

Aqui está uma recomendação de prompt:

"Quero iniciar uma nova sessão e preparar todas as informações necessárias para isso antes de encerrar a sessão atual."

O Claude salvará os detalhes da sessão no arquivo MEMORY.md.

6. Execute /simplify antes de revisar o código-fonte

O Claude tende a complicar excessivamente a implementação, escrevendo mais código — e código mais complexo — do que o necessário. Este comando

/simplify

fará com que o Claude Code revise e otimize o código-fonte antes da revisão manual.

No ecossistema .NET, isso se traduz em um Claude que cria interfaces desnecessárias, estruturas de herança complexas para problemas simples, ou blocos gigantescos de LINQ difíceis de ler.

Abaixo, veja os detalhes de como esse comando funciona na prática, o que ele faz nos bastidores e um exemplo real em C#.

O que o /simplify faz nos bastidores?

Quando você executa esse comando antes de começar a revisar manualmente ou implementar uma nova feature, você força o Claude Code a aplicar um "filtro de navalha de Ockham" no arquivo. Ele realiza três ações principais:

- Ele elimina código redundante, variáveis temporárias desnecessárias e estruturas de controle (if/else) excessivamente aninhadas.

- No .NET, ele converte sintaxes antigas para recursos modernos do C# (como Pattern Matching, Primary Constructors, Switch Expressions e Target-typed new expressions), que reduzem drasticamente as linhas de código mantendo a legibilidade.

-  Se uma função estiver tentando fazer três coisas ao mesmo tempo, o comando a quebra ou enxuga para que ela faça apenas o essencial.

Exemplo Prático: O "Efeito Claude" no .NET

Imagine que você pediu para o Claude criar um validador simples para o seu fluxo de Pedidos. Por padrão (tendendo à superengenharia), ele pode te entregar algo assim:

❌ O código gerado inicialmente pelo Claude (Overengineering ou Superengenharia)

public class ValidadorPedido
{
    public bool ValidarPedidoParaProcessamento(Pedido pedido)
    {
        if (pedido == null)
        {
            throw new ArgumentNullException(nameof(pedido), "O pedido não pode ser nulo.");
        }
        bool resultadoStatus = false;
        if (pedido.Status == StatusPedido.Pendente)
        {
            resultadoStatus = true;
        }
        else
        {
            resultadoStatus = false;
        }
        bool resultadoItens = false;
        if (pedido.Itens != null && pedido.Itens.Count > 0)
        {
            resultadoItens = true;
        }
        if (resultadoStatus == true && resultadoItens == true)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

O código acima funciona perfeitamente, mas é verboso, cheio de flags booleanas desnecessárias e difícil de bater o olho e entender instantaneamente.

Se você rodar o comando no terminal do Claude Code apontando para essa classe, ele reescreverá o código aplicando as melhores práticas de concisão do C# moderno:

public class ValidadorPedido
{
    public bool ValidarPedidoParaProcessamento(Pedido pedido)
    {
        ArgumentNullException.ThrowIfNull(pedido);
        return pedido.Status == StatusPedido.Pendente && pedido.Itens?.Any() == true;
    }
}

O que mudou?

- Substituiu o if (pedido == null) throw... pelo moderno - ArgumentNullException.ThrowIfNull(pedido).
- Eliminou todas as variáveis locais (resultadoStatus, resultadoItens).
- Trocou a verificação manual de contagem da lista pelo método de extensão .Any() com o operador null-conditional (?.).
- Reduziu a lógica complexa de if/else para uma única expressão booleana limpa.

Por que usar ANTES da sua revisão manual?

É muito mais rápido revisar 5 linhas de código limpo do que 30 linhas cheias de blocos repetitivos.

Se você aceitar o primeiro código que o Claude gera, seu projeto começará a inflar muito rápido. Rodar o /simplify garante que apenas a essência do código seja integrada ao seu repositório.

Quando você abrir um Pull Request, sua equipe focará na lógica do negócio implementada, e não em apontar detalhes de sintaxe que poderiam ser mais limpos.

7. Peça ao Claude para resumir a conversa ao final de cada sessão

Assim como as equipes de produto que praticam sprints semanais fazem uma retrospectiva do trabalho após cada sprint, faz sentido realizar uma retrospectiva com o Claude ao final de cada sessão.

Você pode enviar uma mensagem ao Claude:  "O que você aprendeu durante esta sessão? "

Ou criar uma skill específica para o Claude (como uma skill personalizada de /retro) que gere os insights que ele obteve durante a sessão.

Em seguida, você pode analisar e corrigir os insights coletados pelo Claude. Esta é uma ótima maneira de consolidar o conhecimento institucional que o Claude armazena na memória de longo prazo.

Dicas valiosas

Você pode criar um arquivo Markdown separado no seu projeto para as anotações de retrospectiva do Claude (por exemplo, `retro-notes.md`); isso facilita tanto para você quanto para o Claude a revisão e o refinamento dessas anotações.

Exemplo:  Você pode emitir o seguinte prompt : "Documente as decisões de design que tomamos hoje na Factory e salve no arquivo retro-notes.md."

O Claude irá criar o arquivo na raiz do seu projeto (se não existir) e escreve o resumo técnico.

No Claude Code, como as notas estão salvas em um arquivo real dentro do seu projeto, basta você iniciar o chat no dia seguinte e dizer:

"Claude, leia o arquivo retro-notes.md para lembrar o que fizemos ontem e vamos continuar a partir dali."

O arquivo funciona como uma memória física externa para a IA saber exatamente em que pé está a arquitetura do seu sistema.

Essa abordagem também oferece uma vantagem muito útil: o Claude pode usar esse arquivo para carregar contextos específicos sob demanda.

Outra dica importante para o seu próprio aprimoramento, e digitar `/insights` no chat, e o Claude criará um arquivo HTML com sugestões sobre o que você pode melhorar.

O resultado é realmente muito bom.

Faça isso com frequência. 

Encerramento

A conclusão prática dessas dicas para o seu dia a dia com .NET é uma só: use o Claude Code para o trabalho pesado e objetivo, mas controle o código.

Valide rápido: Use protótipos simples para testar a lógica antes de gastar tempo acoplando tudo na arquitetura do ASP.NET Core.

Seja direto nos erros: Cole o erro bruto do Roslyn ou EF Core sem tentar explicar. A IA resolve mais rápido se ler o código de erro original.

Corte o excesso: Force a simplificação do código. O Claude adora complicar o que o C# moderno resolve em uma linha.

Em resumo: trate a IA como uma ferramenta de execução rápida, passe o filtro da simplicidade e mantenha o foco na segurança.

E estamos conversados...  

"Bendito seja o Deus e Pai de nosso Senhor Jesus Cristo, o Pai das misericórdias e o Deus de toda a consolação"
2 Coríntios 1:3

Referências:


José Carlos Macoratti