Semana passada, lançamos fluxos de trabalho dinâmicos no Claude Code. Agora, o Claude pode escrever seu próprio harness dinamicamente, criado sob medida para a tarefa em questão.
Embora o harness padrão do Claude Code seja feito para codificação, ele também é útil para muitos outros tipos de tarefas porque, como se vê, muitas tarefas se assemelham a tarefas de codificação. Mas há certas classes de tarefas para as quais tivemos que construir harnesses personalizados sobre o Claude Code para alcançar o desempenho máximo, como Pesquisa, análise de segurança, equipes de agentes ou Revisão de Código.
Os fluxos de trabalho permitem criar harnesses dinamicamente que capacitam o Claude a resolver todos esses problemas e muito mais nativamente dentro do Claude Code. Você também pode compartilhar e reutilizar esses fluxos de trabalho com outras pessoas.
Neste artigo, abordarei minhas experiências e aprendizados iniciais com fluxos de trabalho para que você possa aproveitá-los ao máximo.
Dito isso, as melhores práticas ainda estão em desenvolvimento! Fluxos de trabalho dinâmicos geralmente usam mais tokens, então pense cuidadosamente sobre quando e como usá-los.
Nota: esta postagem também está disponível no Blog do Claude
Exemplos de prompts
Antes de mergulharmos nos detalhes técnicos, gostaria de começar com alguns exemplos de prompts para despertar sua criatividade sobre as possibilidades com fluxos de trabalho:
- "Este teste falha talvez 1 em 50 execuções. Configure um fluxo de trabalho para reproduzi-lo, formar teorias e testá-las adversarialmente em worktrees /goal não pare até que uma teoria funcione."
- "Usando um fluxo de trabalho, analise minhas últimas 50 sessões e extraia correções que continuo fazendo e transforme as recorrentes em regras do CLAUDE.md"
- "Use um fluxo de trabalho para vasculhar #incidents no Slack dos últimos seis meses e encontrar causas raiz recorrentes para as quais ninguém abriu um ticket."
- "Pegue meu plano de negócios e execute um fluxo de trabalho onde diferentes agentes o analisem sob a perspectiva de um investidor, um cliente e um concorrente."
- "Aqui está uma pasta com 80 currículos, use um fluxo de trabalho para classificá-los para a vaga de backend e verifique novamente os dez primeiros. Entreviste-me usando a ferramenta AskUserQuestion para uma rubrica."
- "Preciso de um nome para esta ferramenta CLI. Use um fluxo de trabalho para gerar várias opções e execute um torneio para escolher as 3 melhores."
- "Use um fluxo de trabalho para renomear nosso modelo User para Account em todos os lugares."
- "Percorra o rascunho da minha postagem no blog e, usando um fluxo de trabalho, verifique cada afirmação técnica com relação ao código-fonte, não quero publicar nada errado."
Como funcionam os fluxos de trabalho dinâmicos
Fluxos de trabalho dinâmicos executam um arquivo JavaScript com algumas funções especiais que ajudam a gerar e coordenar subagentes:

Fluxos de trabalho dinâmicos também incluem funções JavaScript padrão como JSON, Math e Array, para ajudar a processar dados.
É particularmente útil saber que fluxos de trabalho dinâmicos podem decidir quais modelos um agente usa e se os subagentes são executados em seu próprio worktree, permitindo que o Claude escolha o nível de inteligência e isolamento necessários.
Se um fluxo de trabalho for interrompido, por exemplo, por uma ação do usuário ou ao fechar o terminal, retomar a sessão permitirá que o fluxo de trabalho continue de onde parou.
Por que fluxos de trabalho dinâmicos
Quando você pede ao harness padrão do Claude Code para realizar uma tarefa, ele precisa planejar e executar na mesma janela de contexto. Para muitas tarefas de codificação, isso é altamente eficaz, mas pode falhar em tarefas de longa duração, massivamente paralelas e/ou altamente estruturadas e adversariais.
Isso ocorre porque quanto mais o Claude trabalha em uma tarefa complexa em uma única janela de contexto, mais ele se torna suscetível a alguns modos de falha específicos:
- Preguiça agentiva refere-se a quando o Claude para antes de terminar uma tarefa particularmente complexa e de múltiplas partes e declara o trabalho concluído após progresso parcial, por exemplo, abordando 20 dos 50 itens em uma revisão de segurança.
- Viés autopreferencial refere-se à tendência do Claude de preferir seus próprios resultados ou descobertas, especialmente quando solicitado a verificá-los ou julgá-los com base em uma rubrica.
- Desvio de objetivo refere-se à perda gradual de fidelidade ao objetivo original ao longo de muitas iterações, especialmente após compactação. Cada etapa de sumarização é com perdas, e detalhes como requisitos de borda ou restrições do tipo "não faça X" podem ser perdidos.
Criar um fluxo de trabalho ajuda a combater esses problemas orquestrando Claudes separados com suas próprias janelas de contexto e objetivos focados e isolados.
Fluxos de trabalho dinâmicos vs. estáticos
Você pode ter criado anteriormente um fluxo de trabalho estático usando o Claude Agent SDK ou claude -p para coordenar várias instâncias do Claude Code juntas.
Mas, como os fluxos de trabalho estáticos precisam funcionar para todos os casos de borda, eles geralmente são mais genéricos. Com o Claude Opus 4.8 e fluxos de trabalho dinâmicos, o Claude agora é inteligente o suficiente para escrever um harness personalizado feito sob medida para o seu caso de uso.

Padrões úteis ao usar fluxos de trabalho dinâmicos
Você pode começar a usar fluxos de trabalho dinâmicos simplesmente pedindo ao Claude para criar um, ou usando a palavra-gatilho "ultracode" para garantir que o Claude Code crie um fluxo de trabalho.
Mas construir um modelo mental de como os fluxos de trabalho dinâmicos funcionam ajudará você a entender quando usá-los e como pode direcionar o Claude por meio de prompts.
Existem alguns padrões comuns que o Claude pode usar e compor ao construir fluxos de trabalho:

Classificar e agir
Use um agente classificador para decidir o tipo de tarefa e, em seguida, direcione para diferentes agentes ou comportamentos com base na tarefa. Ou, use um classificador no final para determinar a saída.
Dividir e sintetizar
Divida uma tarefa em muitas etapas menores, execute um agente em cada etapa e depois sintetize esses resultados. Isso é particularmente útil quando há um grande número de etapas menores, ou quando cada etapa se beneficia de sua própria janela de contexto limpa para que não interfiram ou se contaminem. A etapa de sintetização é uma barreira — ela espera que todos os agentes da divisão terminem e, em seguida, mescla suas saídas estruturadas em um único resultado.
Verificação adversarial
Para cada agente gerado, execute um agente gerado separado para verificar adversarialmente sua saída com relação a uma rubrica ou critério.
Gerar e filtrar
Gere várias ideias sobre um tópico e, em seguida, filtre-as por uma rubrica ou por verificação, remova duplicatas e retorne apenas as ideias de maior qualidade e testadas.
Torneio
Em vez de dividir o trabalho, faça com que os agentes concorram por ele. Gere N agentes que tentem a mesma tarefa usando abordagens diferentes. Em seguida, prompts ou modelos julgam os resultados em pares usando um agente julgador até que haja um vencedor.
Repetir até concluir
Para tarefas com uma quantidade desconhecida de trabalho, repita a geração de agentes até que uma condição de parada seja atendida (nenhuma nova descoberta, ou nenhum erro nos logs) em vez de um número fixo de passagens.
Casos de uso
Pense de forma criativa sobre quando e como pedir ao Claude Code para criar fluxos de trabalho dinâmicos. Descobri que os fluxos de trabalho às vezes são ainda mais úteis para trabalhos não técnicos.

Migrações e refatorações
O Bun foi reescrito de Zig para Rust usando fluxos de trabalho. Você pode ler mais sobre como isso foi feito no post de Jarred no X.
O segredo é dividir a tarefa em uma série de etapas que precisam ser operadas, por exemplo, locais de chamada, testes com falha, módulos, etc. Crie um subagente para cada correção em um worktree para fazer a correção, depois tenha outro agente para revisar adversarialmente e mesclar. Considere informar ao agente para não usar comandos que consomem muitos recursos para que você possa paralelizar ao máximo sem esgotar os recursos da sua máquina.
Pesquisa aprofundada
Publicamos uma habilidade de pesquisa aprofundada (/deep-research) dentro do Claude Code que usa fluxos de trabalho dinâmicos. Especificamente, ela divide as pesquisas na web, busca fontes, verifica adversarialmente suas alegações e sintetiza um relatório citado.
Mas você pode fazer esse tipo de pesquisa para mais do que apenas pesquisas na web. Por exemplo, pedir ao Claude para compilar um relatório de status a partir do contexto no Slack ou pesquisar como um recurso funciona explorando um código-fonte em profundidade.
Verificação aprofundada

Por outro lado, se você tem um relatório onde deseja verificar e referenciar cada alegação factual que ele menciona, pode gerar um fluxo de trabalho que tenha um agente identificando todas as alegações factuais e, em seguida, crie um subagente para verificar cada uma em detalhes. Você também pode ter um agente de verificação que verifique o subagente de origem para garantir que sua fonte seja de alta qualidade.
Classificação

Você pode ter uma lista de itens que deseja classificar por alguma medida qualitativa que acredita que o Claude Code seja bom em avaliar, por exemplo: tickets de suporte classificados por gravidade do bug. Mas se você tentar classificar mais de 1000 linhas em um único prompt, a qualidade diminui e não cabe no contexto. Em vez disso, execute um torneio, um pipeline de agentes de comparação em pares (o julgamento comparativo é mais confiável do que a pontuação absoluta), ou classifique em buckets em paralelo e depois mescle. Cada comparação é seu próprio agente, então o loop determinístico mantém o chaveamento e apenas a ordem de execução permanece no contexto.
Memória e adesão a regras

Se você tem um conjunto específico de regras que o Claude parece ignorar ou ter dificuldade em seguir, mesmo quando colocadas nos CLAUDE.mds, crie um fluxo de trabalho com uma lista de regras que devem ser verificadas por agentes verificadores — um verificador por regra. Criar um subagente com persona cética para revisar as regras e garantir que estejam alinhadas ajudará a evitar muitos falsos positivos.
O caminho inverso também funciona: analise suas sessões recentes e comentários de revisão de código em busca de correções que você continua fazendo, agrupe-as com agentes paralelos, verifique adversarialmente cada candidato (esta regra teria evitado um erro real?), e então destile os sobreviventes de volta para um CLAUDE.md.
Investigação de causa raiz
A depuração funciona melhor quando você cria várias hipóteses independentes e as testa, mas se você está usando apenas uma janela de contexto, o Claude pode se deparar com viés autopreferencial.
Um fluxo de trabalho pode evitar estruturalmente isso criando agentes para gerar hipóteses a partir de evidências desconexas. Por exemplo, agentes separados para logs, arquivos e dados. Cada hipótese pode então enfrentar um painel de verificadores e refutadores.
Isso não é apenas para código. Fluxos de trabalho podem ser usados para vendas (por que as vendas caíram em março?), engenharia de dados (por que este pipeline falhou?), ou qualquer exercício de post-mortem.
Triagem em escala

Toda equipe tem uma fila de suporte, relatórios de bugs ou algum outro backlog que não pode ser totalmente processado por humanos.
Um fluxo de trabalho de triagem classifica cada item, remove duplicatas do que já está registrado e toma uma ação. Isso pode significar tentar a correção ou escalar para um usuário humano.
Um padrão útil para fluxos de trabalho de triagem é a quarentena. Isso envolve impedir que os agentes que leem conteúdo público não confiável realizem ações de alto privilégio, que são feitas pelos agentes responsáveis por agir sobre as informações.
Combine fluxos de trabalho de triagem com /loop para fazer o Claude fazer isso continuamente.
Exploração e gosto
Fluxos de trabalho podem ser úteis ao explorar diferentes abordagens para uma solução, especialmente quando é baseada em gosto, como design ou nomenclatura, e se beneficiaria de uma rubrica.
Tente pedir ao Claude para explorar várias soluções e forneça a um agente de revisão uma rubrica sobre como é uma boa solução. A tarefa é concluída quando o agente de revisão sente que atingiu os critérios. As soluções também podem ser ordenadas ou selecionadas por meio de um torneio baseado na rubrica.
Avaliações
Você pode executar avaliações leves para tarefas específicas criando agentes separados em um worktree e, em seguida, criando agentes de comparação para comparar e classificar as saídas específicas com base em uma rubrica. Por exemplo, avaliar e depois refinar uma habilidade que você criou com base em um critério específico.
Roteamento de modelo e inteligência
Crie um agente classificador ajustado às suas tarefas que decide qual modelo usar. Isso pode ser útil quando sua tarefa envolver muitas chamadas de ferramentas e realizar pesquisa antes da execução pode identificar o melhor modelo para o trabalho.
Por exemplo, o melhor modelo para a tarefa "explique como o módulo de autenticação funciona" depende de quantos arquivos existem no módulo de autenticação e da forma do código-fonte. Um agente classificador pode fazer essa pesquisa e então direcionar para Sonnet ou Opus com base na complexidade esperada da tarefa.
Quando não usar fluxos de trabalho dinâmicos
Fluxos de trabalho são novos. Embora existam muitos casos de uso em que eles criarão resultados excepcionais, eles não são necessários para todas as tarefas e podem acabar usando significativamente mais tokens.
É melhor usar fluxos de trabalho de forma criativa para impulsionar o Claude Code de maneiras que você não fez antes. Para tarefas de codificação regulares, tente se perguntar: isso realmente precisa de mais computação? Por exemplo, a maioria das tarefas tradicionais de codificação não precisa de um painel de 5 revisores.
Dicas para construir fluxos de trabalho dinâmicos
Formulação de prompts
A formulação detalhada de prompts, usando as técnicas específicas que descrevemos acima, para fluxos de trabalho dinâmicos cria os melhores resultados.
Fluxos de trabalho não são apenas para tarefas grandes. Você pode instruir o modelo a usar um "fluxo de trabalho rápido". Por exemplo, você pode criar uma revisão adversarial rápida de uma suposição.
Combine com /goal e /loop
Ao usar fluxos de trabalho que podem ser repetidos, por exemplo, triagem, pesquisa ou verificação, combine-os com /loop para serem executados em intervalos regulares, e /goal para definir um requisito de conclusão rigoroso.
Orçamentos de uso de tokens
Você pode definir orçamentos de uso de tokens explícitos para fluxos de trabalho dinâmicos para limitar quantos tokens uma tarefa usa. Você pode instruí-lo com um orçamento como: "use 10k tokens", o que definirá o limite.
Salvando e compartilhando fluxos de trabalho dinâmicos
Você pode salvar fluxos de trabalho pressionando "s" no menu de fluxos de trabalho. Você pode verificá-los em ~/.claude/workflows ou distribuí-los por meio de uma habilidade.

Para compartilhá-los por meio de uma habilidade, coloque seus arquivos JavaScript de fluxo de trabalho na pasta da habilidade e faça referência a eles no SKILL.MD. Para permitir mais flexibilidade, você pode instruir o Claude a pensar nos fluxos de trabalho na habilidade como um modelo, em vez de um script que precisa ser executado exatamente como está.

Um mundo totalmente novo
Fluxos de trabalho são uma nova maneira útil de estender o Claude Code. Encorajo você a pensar nisso como um ponto de partida; ainda há muito a descobrir sobre como usá-los da melhor forma. Conte-nos o que você descobrir.
Thariq Shihipar e Sid Bidasaria (@sidbid) são membros da equipe técnica da Anthropic, trabalhando no Claude Code.





