Claude Code alternatives: como migrar para outra ferramenta sem perder o setup que você construiu

Migração de setup entre Claude Code alternatives usando skills e MCP
Resposta rápida

Se você está pesquisando claude code alternatives, o medo real não é a ferramenta, é perder o setup que você levou meses montando. A boa notícia é que hoje boa parte dele é texto versionado: instruções de projeto em Markdown, skills em pasta com SKILL.md e servidores MCP declarados em arquivo de config. O AGENTS.md é formato aberto e o MCP é padrão aberto, então os dois viajam entre agentes. O que muda mesmo é o caminho de cada arquivo e a regra de precedência. Este guia mostra o inventário, o mapa de equivalência e como testar a alternativa em paralelo numa worktree 🙂

Fala aí, beleza? O medo de trocar de agente de código quase nunca é pela ferramenta em si

É pelo setup

Aquelas instruções do projeto que você foi lapidando por meses, os comandos padrão que você digita sem pensar, as conexões com as ferramentas externas, o fluxo de revisão de diff que finalmente ficou redondo… a sensação é que trocar significa começar do zero

Só que a maior parte disso hoje é arquivo de texto dentro do repositório

E arquivo de texto viaja =)

O que segue é um roteiro de decisão: o que é portátil, o que fica pra trás, e como rodar a alternativa em paralelo antes de cravar qualquer coisa

Antes de migrar: faça o inventário do seu setup atual

Antes de mexer em QUALQUER coisa, você precisa saber o que tem na mão

Migração às cegas é o jeito mais rápido de descobrir que metade do seu contexto sumiu

O que procurar no repositório:

  • <code>CLAUDE.md</code> na raiz: a memória persistente do projeto
  • <code>.mcp.json</code> na raiz: os servidores MCP de escopo de projeto
  • <code>.worktreeinclude</code> na raiz
  • a pasta <code>.claude/</code> do projeto, onde vivem os arquivos de escopo do repositório (skills, rules e o <code>commands/</code> no formato legado)

O que procurar no home:

  • <code>~/.claude/</code>: tudo que é escopo global, aquilo que te acompanha em todo projeto

Aqui tem uma pegadinha que pega muita gente

No Claude Code, os níveis de <code>CLAUDE.md</code> são aditivos: se existe um arquivo de projeto e um de usuário, o agente enxerga os dois ao mesmo tempo, sem regra dura de precedência entre níveis

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

O que isso significa na prática? Aquele comportamento que você acha que vem do repositório pode estar vindo do seu home, e quem clonar o projeto não vai ter aquilo

O Claude Code carrega o <code>CLAUDE.md</code> do diretório de trabalho e de todos os diretórios acima logo no início da sessão, e os arquivos de subdiretório entram sob demanda quando o agente lê um arquivo daquela pasta

Olha os dois antes de assumir de onde veio a regra

Vale também listar o que você montou por fora do padrão, tipo ferramentas da comunidade em volta do agente, porque essa parte costuma ser a menos portátil de todas

Tome cuidado! Antes do primeiro comando de migração: repositório limpo e commit feito

Migração boa é migração revertível

Mapa de equivalência: onde cada peça do setup vive em cada ferramenta

Isso aqui não é ranking e não é comparação de recurso nem de preço

É tabela de TRADUÇÃO: você já sabe onde a peça mora hoje, e quer saber o endereço dela do outro lado

Peça do setup Claude Code Cursor Codex
Instruções de projeto <code>CLAUDE.md</code> na raiz + arquivos em <code>.claude/</code> <code>AGENTS.md</code> na raiz (alternativa simples a <code>.cursor/rules</code>) e em subpastas; o CLI também lê <code>CLAUDE.md</code> da raiz <code>AGENTS.md</code> concatenado da raiz para baixo
Instruções globais <code>~/.claude/</code> <code>~/.cursor/</code> <code>~/.codex</code> (ou o caminho da variável <code>CODEX_HOME</code>), com config de usuário em <code>~/.codex/config.toml</code>
Skills <code>.claude/skills/&lt;nome&gt;/SKILL.md</code> <code>.agents/skills/</code>, <code>.cursor/skills/</code>, <code>~/.agents/skills/</code>, <code>~/.cursor/skills/</code> e, por compatibilidade, <code>.claude/skills/</code> e <code>.codex/skills/</code> <code>$CODEX_HOME/skills</code> (padrão <code>~/.codex/skills</code>) e <code>.agents/skills</code> em cada diretório até a raiz do repo
Servidores MCP <code>.mcp.json</code> na raiz, sob a chave <code>mcpServers</code> <code>.cursor/mcp.json</code> no projeto e <code>~/.cursor/mcp.json</code> no home, ambos com a chave <code>mcpServers</code> configuração de usuário em <code>~/.codex/config.toml</code>, com override de projeto em <code>.codex/config.toml</code>

Repare na linha das skills: o Cursor documenta compatibilidade com os diretórios do Claude e do Codex

Ou seja, em alguns casos a peça nem precisa se mudar de endereço, só ser encontrada 😀

A precedência é o detalhe que mais morde:

Essa é a parte que ninguém lê e depois vira dor de cabeça

  • <code>AGENTS.md</code>: agentes leem o arquivo mais próximo na árvore de diretórios, então o mais específico tem precedência e cada subprojeto pode ter o seu
  • Codex: os arquivos são concatenados da raiz para baixo, e os mais próximos do diretório atual prevalecem justamente por aparecerem depois no prompt combinado
  • Cursor: <code>AGENTS.md</code> na raiz e em subpastas se combinam, com precedência para os mais específicos
  • Claude Code: comportamento aditivo, o modelo vê os níveis juntos e o conflito acaba sendo resolvido pela interpretação dele

Mesmo texto, comportamento diferente

Guarda isso, porque o problema (c) lá embaixo é exatamente esse

Como migrar o setup passo a passo (e testar a alternativa em paralelo)

São sete passos, e eles se dividem em duas metades

Do 1 ao 5 você porta o setup pro formato aberto, e do 6 ao 7 você roda a alternativa em paralelo numa worktree, sem encostar no teu trabalho do dia a dia

  1. Extraia as instruções do agente para um <code>AGENTS.md</code> na raiz

O AGENTS.md é um formato aberto de Markdown puro, e o site oficial diz que ele é usado por mais de 60 mil projetos open source

A analogia que funciona: pensa nele como um README voltado ao agente, não ao humano

Build, testes, convenções do projeto

Aquilo que você explicaria pra um dev novo no primeiro dia, incluindo o tipo de contexto pra bug que não reproduz na sua máquina

Se o repositório tem mais de um contexto (um front, um back, um pacote interno), usa um arquivo por subprojeto, já que o agente lê o mais próximo na árvore

<pre><code>AGENTS.md apps/web/AGENTS.md apps/api/AGENTS.md</code></pre>

O erro comum deste passo: despejar o <code>CLAUDE.md</code> inteiro na raiz e deixar instrução específica de uma pasta valendo pro repositório todo

  1. Decida como os dois arquivos vão conviver

O CLI do Cursor lê <code>AGENTS.md</code> e também <code>CLAUDE.md</code> na raiz do projeto, e aplica os dois como rules, junto com <code>.cursor/rules</code>

Então duplicar conteúdo entre eles não é neutro: é instrução repetida chegando duas vezes

Decida quem é a fonte da verdade antes de sair copiando

O erro comum deste passo: copiar e colar o mesmo bloco nos dois arquivos e esquecer de atualizar um deles depois

  1. Converta os comandos personalizados para o formato de skill

Uma skill é simplesmente uma pasta com um arquivo <code>SKILL.md</code>, cujo frontmatter YAML exige os campos <code>name</code> e <code>description</code>, mais scripts e referências opcionais

No Claude Code, o formato recomendado hoje é <code>.claude/skills/&lt;nome&gt;/SKILL.md</code>, e o <code>.claude/commands/</code> é formato legado que continua funcionando

A equivalência é documentada: um <code>.claude/commands/deploy.md</code> cria o comando <code>/deploy</code> e funciona igual a uma skill em <code>.claude/skills/deploy/SKILL.md</code>

<pre><code>.claude/skills/deploy/SKILL.md</code></pre>

<pre><code>— name: deploy description: Descreve quando e como rodar o deploy deste projeto —</code></pre>

O erro comum deste passo: criar a pasta e esquecer <code>name</code> ou <code>description</code> no frontmatter, que são obrigatórios

  1. Centralize as regras compartilhadas e linke entre projetos

O diretório <code>.claude/rules/</code> aceita symlinks, o que te deixa manter um conjunto de regras num lugar só e apontar vários projetos pra ele

Os exemplos documentados são estes:

<pre><code>ln -s ~/shared-claude-rules .claude/rules/shared ln -s ~/company-standards/security.md .claude/rules/security.md</code></pre>

Muito massa pra quem tem cinco repositórios com a mesma convenção de commit

O erro comum deste passo: criar o symlink e achar que acabou (spoiler: o alvo fora do diretório de trabalho tem regra própria, e é o primeiro problema da próxima seção)

  1. Recrie as conexões MCP no formato do destino

Aqui a notícia é boa

O MCP é um padrão aberto pra conectar aplicações de IA a sistemas externos, com suporte em clientes como Claude, ChatGPT, VS Code e Cursor

Então o servidor é o MESMO: o que muda é onde você declara ele

No Claude Code os servidores de escopo de projeto ficam em <code>.mcp.json</code> na raiz, sob a chave <code>mcpServers</code>, com entradas do tipo http (campo <code>url</code>) ou stdio (campos <code>command</code> e <code>args</code>), e o arquivo é lido no início da sessão

No Cursor a chave <code>mcpServers</code> também vale, em <code>.cursor/mcp.json</code> no projeto ou <code>~/.cursor/mcp.json</code> no home, e o arquivo de projeto tem prioridade quando o mesmo nome de servidor aparece nos dois

O erro comum deste passo: esquecer que o <code>.mcp.json</code> do Claude Code exige uma aprovação única, gerenciável em <code>/mcp</code>, e concluir que o servidor está quebrado quando ele só não foi aprovado ainda

Rodando a alternativa em paralelo (passos 6 e 7):

Setup portado, agora vem a parte que o título prometeu: testar o outro agente sem parar o teu trabalho

  1. Crie uma worktree pra rodar a alternativa em paralelo

Esse é o pulo do gato pra testar sem bagunçar o trabalho em andamento

O <code>git worktree add</code> cria uma árvore de trabalho adicional ligada ao mesmo repositório, compartilhando quase tudo exceto os arquivos por worktree, como <code>HEAD</code> e o index

<pre><code>git worktree add ../projeto-teste-agente git worktree list</code></pre>

O <code>git worktree list</code> mostra a worktree principal e as vinculadas, então dá pra conferir na hora se deu certo

Na prática: teu checkout principal continua com o agente de sempre, e a worktree nova é onde a alternativa roda

O erro comum deste passo: tentar reusar um branch que já está checado out em outra worktree (o git recusa, e com razão)

  1. Compare os dois agentes na MESMA tarefa e revise o diff antes de decidir

Nada de tarefa de brinquedo

Pega uma tarefa real do backlog, roda nos dois, e lê o diff dos dois lados com o mesmo rigor que você leria um PR de outra pessoa

É o único jeito honesto de comparar, porque demo bonita todo mundo tem

O erro comum deste passo: julgar pela velocidade da primeira resposta em vez de julgar pelo diff que você teria que revisar todo dia

Três problemas que aparecem no meio da migração

Sintoma: você criou o symlink dentro de <code>.claude/rules/</code> e o conteúdo simplesmente não aparece no comportamento do agente

Causa: symlink cujo alvo está FORA do diretório de trabalho é tratado como import externo, e só carrega depois da aprovação de imports externos no projeto

Solução: aprova os imports externos no projeto, ou, se você quer evitar esse passo, mantém as regras em <code>~/.claude/rules/</code>

Como prevenir: decide isso ANTES de espalhar o mesmo symlink em dez repositórios

(b) O <code>git worktree add</code> recusa criar a worktree:

Sintoma: o comando falha e você não sai do lugar

Causa: por padrão, o <code>git worktree add</code> recusa criar uma nova worktree quando o branch informado já está checado out em outra worktree, e também quando o caminho já foi atribuído

Solução: usa outro branch ou outro caminho

Como prevenir: roda <code>git worktree list</code> antes, pra ver o que já existe (já me ferrei uma vez tentando adivinhar)

(c) Instruções conflitantes depois de duplicar arquivos:

Sintoma: o mesmo texto de instrução produz comportamentos diferentes em cada ferramenta, e você jura que está ficando louco

Causa: a regra de resolução MUDA

No Claude Code os níveis são aditivos e o conflito acaba resolvido pela interpretação do modelo

No <code>AGENTS.md</code> e no Codex, o arquivo mais próximo prevalece, e no Codex isso acontece pela ordem da concatenação da raiz para baixo

Solução: para de escrever a mesma regra em dois níveis e deixa cada arquivo responsável por um escopo

Como prevenir: instrução genérica na raiz, instrução específica no subprojeto, sem sobreposição

Quatro cenários de migração e o que fazer em cada um

Não existe resposta única aqui, existe o SEU caso

1. Troca definitiva de agente:

Foco total em portar duas coisas: instruções e skills

Instruções viram <code>AGENTS.md</code> na raiz (mais os arquivos por subprojeto), e cada comando personalizado vira pasta com <code>SKILL.md</code>

O resto do fluxo você reconstrói em cima disso

2. Uso híbrido, duas ferramentas no mesmo repositório:

Aqui o formato aberto trabalha a seu favor

O CLI do Cursor lê <code>AGENTS.md</code> e <code>CLAUDE.md</code> na raiz, e o Cursor carrega skills também de <code>.claude/skills/</code> e <code>.codex/skills/</code> por compatibilidade

Aposta nos diretórios com compatibilidade cruzada em vez de manter dois setups paralelos na unha

3. Time em que cada pessoa usa um agente diferente:

Instrução de projeto versionada no repositório, sempre

Se está no <code>AGENTS.md</code> commitado, vale pra todo mundo, independente do agente que a pessoa abriu

O padrão de empresa (segurança, convenções) pode ficar centralizado e entrar por symlink em <code>.claude/rules/</code>, lembrando da regra de import externo do problema (a)

4. Avaliação sem compromisso:

Você não precisa decidir nada pra testar

Cria a worktree, roda a alternativa lá por uma tarefa real, e deixa o teu trabalho principal intocado na worktree original

Se não gostou, remove e segue a vida 😀

O setup que vale a pena construir é o que não depende de uma ferramenta

A conclusão é meio chata de tão simples

Quanto mais o seu setup vive como Markdown versionado no repositório e como padrão aberto, menor é o custo de trocar de agente

E não é papo de comunidade só: o <code>AGENTS.md</code> é mantido sob governança da Agentic AI Foundation, dentro da Linux Foundation, e o MCP foi doado pela Anthropic pra essa mesma fundação, um fundo dirigido cofundado com Block e OpenAI e com apoio de Google, Microsoft, AWS, Cloudflare e Bloomberg

Ou seja: os dois pedaços mais importantes do seu setup, instrução e conexão, estão em formato que ninguém é dono sozinho

O que fica pra trás numa migração é sempre o que você amarrou no específico de uma ferramenta

Então o próximo passo é hoje mesmo: abre o repositório, escreve o <code>AGENTS.md</code> como se fosse o README do agente, e roda a alternativa numa worktree por UMA tarefa real antes de qualquer decisão definitiva

Decisão com diff na mão é bem diferente de decisão por hype…

Até o próximo post!

Perguntas frequentes

Dá pra rodar Claude Code e Codex no mesmo repositório pra comparar antes de decidir?

Dá sim, usando git worktree add pra criar uma árvore de trabalho adicional ligada ao mesmo repositório. Ela compartilha quase tudo com a worktree principal, exceto arquivos por worktree como HEAD e index, então você testa a alternativa sem mexer no checkout que já está funcionando. Uma ressalva: o Git recusa criar a nova worktree se o branch escolhido já estiver checado out em outro lugar.

O AGENTS.md substitui o CLAUDE.md ou preciso manter os dois arquivos?

Não substitui automaticamente. No Claude Code os níveis de CLAUDE.md são aditivos, e o CLI do Cursor lê tanto AGENTS.md quanto CLAUDE.md na raiz do projeto, aplicando os dois como rules. Por isso o passo importante da migração é decidir qual arquivo é a fonte da verdade, pra não acabar com a mesma instrução duplicada chegando duas vezes pro agente.

As skills que criei pro Claude Code funcionam direto no Cursor sem converter?

Em boa parte dos casos sim. O Cursor carrega skills de .agents/skills/, .cursor/skills/, ~/.agents/skills/ e ~/.cursor/skills/, e documenta compatibilidade também com os diretórios do Claude (.claude/skills/) e do Codex (.codex/skills/). Contanto que a skill seja uma pasta com SKILL.md e frontmatter YAML com name e description, ela tende a ser encontrada sem precisar mudar de lugar.

Preciso reconfigurar os servidores MCP toda vez que troco de ferramenta?

Sim, porque o MCP é um padrão aberto, mas cada cliente guarda a própria configuração em arquivo separado. No Claude Code isso fica em .mcp.json na raiz, sob a chave mcpServers; no Cursor, em .cursor/mcp.json do projeto ou ~/.cursor/mcp.json no home. É preciso recriar as entradas no arquivo da ferramenta nova.

Por que a precedência do AGENTS.md muda tanto entre Codex, Cursor e Claude Code?

Porque cada ferramenta resolve conflito de um jeito diferente mesmo lendo o mesmo arquivo. O Codex concatena os arquivos da raiz pra baixo, e os mais próximos do diretório atual prevalecem por aparecerem depois no prompt; o Cursor combina raiz e subpastas dando precedência pro mais específico. Já o Claude Code é aditivo: ele enxerga os níveis juntos e quem resolve o conflito é a interpretação do modelo, não uma regra fixa.

É seguro testar uma alternativa direto na branch principal do projeto?

Não é a forma mais segura. O ideal é garantir que o repositório está limpo e com commit feito antes do primeiro passo da migração, porque migração boa é migração revertível. Isolar o teste numa worktree separada, criada com git worktree add, evita que qualquer ajuste de setup contamine o branch que você já usa no dia a dia.



Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares