Migração de Base de Código

Execute migrações de base de código em larga escala e refatorações de vários arquivos. Usa a CLI do Composio para coordenar rastreamento de issues, PRs em lote e verificação de CI enquanto o agente executa as transformações localmente em centenas de arquivos.

O que é Migração de Base de Código?

Esta skill capacita agentes de IA a orquestrar migrações de base de código em larga escala e refatorações estruturais em múltiplos arquivos, lidando com mudanças como upgrades de framework, renomeações de API, reescritas de configuração e migrações de formatos em centenas de arquivos. O agente executa as transformações localmente usando ferramentas como git, ripgrep, jscodeshift, ts-morph, comby ou ast-grep, enquanto a CLI do Composio gerencia o ciclo cerimonial: criação de issues de rastreamento, abertura de pull requests por lote e verificação de CI. É ideal para tarefas que exigem mudanças consistentes em muitos arquivos, mas precisam ser entregues em pedaços revisáveis, como migrar de Jest para Vitest ou de webpack para Vite. A skill suporta GitHub, Linear e Jira, e inclui diretrizes para definição precisa de transformações, execução em lotes seguros (~25 arquivos por PR), verificação de testes e rolagem reversa por lote.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ComposioHQ/awesome-codex-skills/tree/main/codebase-migrate

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Migração de Base de Código faz?

Coordene upgrades de frameworks, renomeações de API, reescritas de configuração e refatorações estruturais em centenas de arquivos. As edições locais são conduzidas pelo agente; a CLI do Composio lida com a cerimônia ao redor: rastreamento de issues, PRs por lote e verificação de CI.

Quando Usar

  • Upgrade de framework (React 17 → 19, Node 18 → 22, Django 4 → 5).
  • Renomeação de API em um monorepo (ex.: getUserById → users.byId).
  • Migração de configuração/formato (webpack → vite, eslint → biome, jest → vitest).
  • Qualquer tarefa "mudar 200 arquivos da mesma forma" que precise ser entregue em fatias revisáveis.

Pré-requisitos

curl -fsSL https://composio.dev/install | bash
composio login
composio link github        # para PRs + status de CI
composio link linear        # ou jira — para rastreamento de migração

Ferramentas locais que o agente usará diretamente: git, rg, jscodeshift/ts-morph/comby/ast-grep (apropriadas para a linguagem) e seu executor de testes.

Fase de Planejamento

  1. Defina a transformação com precisão. Ruim: "migrar para vitest." Bom: "substituir jest.mock por vi.mock, trocar jest.fn() por vi.fn(), renomear jest.config.js → vitest.config.ts usando template X."
  2. Escopo do raio de alcance:
    rg -l 'jest\.(mock|fn|spyOn)' | wc -l
    rg -l 'from "jest"' | sort
    
  3. Abra uma issue de rastreamento:
    composio execute LINEAR_CREATE_ISSUE -d '{
      "teamId":"TEAM_ID",
      "title":"Migrar executor de testes: jest → vitest",
      "description":"Lotes de ~25 arquivos. Checkpoint após cada PR ficar verde."
    }'
    

Executar em Lotes Revisáveis

Loop: pegue N arquivos → transforme → teste → PR → espere verde → mescle → próximo lote.

# Auxiliar de lote: primeiros 25 arquivos não tocados que correspondem ao padrão
BATCH=$(rg -l 'jest\.mock' | grep -v done.list | head -25)
echo "$BATCH" > batch.list

O agente executa o codemod em batch.list, depois:

git checkout -b migrate/vitest-batch-03
xargs < batch.list codemod-runner   # ex.: jscodeshift / ts-morph / comby
npm test -- --changed
git add -A && git commit -m "migrate(test): jest → vitest (batch 3)"
git push -u origin migrate/vitest-batch-03

composio execute GITHUB_CREATE_A_PULL_REQUEST -d '{
  "owner":"acme","repo":"app",
  "head":"migrate/vitest-batch-03","base":"main",
  "title":"migrate(test): jest → vitest (batch 3)",
  "body":"Parte de LIN-482. 25 arquivos. Codemod: `transforms/jest-to-vitest.ts`."
}'

Em seguida, consulte o CI e mescle quando estiver verde:

composio execute GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY \
  -d '{"owner":"acme","repo":"app","branch":"migrate/vitest-batch-03"}'

Script de Workflow

scripts/migrate-batch.ts, executado por lote via composio run --file scripts/migrate-batch.ts -- --batch 3:

const batch = process.argv[process.argv.indexOf("--batch") + 1];

const pr = await execute("GITHUB_CREATE_A_PULL_REQUEST", {
  owner: "acme", repo: "app",
  head: `migrate/vitest-batch-${batch}`, base: "main",
  title: `migrate(test): jest → vitest (batch ${batch})`,
  body: `Parte de LIN-482. Veja transforms/jest-to-vitest.ts.`
});

await execute("LINEAR_CREATE_COMMENT", {
  issueId: "LIN-482",
  body: `Aberto PR #${pr.number}: ${pr.html_url}`
});

Medidas de Segurança

  • Uma transformação por PR. Nunca misture uma renomeação com uma mudança de formato.
  • Mantenha um done.list dos arquivos já migrados para que o próximo lote os ignore.
  • Execute o conjunto completo de testes no último lote, mesmo que os PRs por lote tenham executado --changed.
  • Codemod primeiro, edição manual depois. Se o codemod perder 3 arquivos, corrija-os manualmente e anote no corpo do PR.
  • Reverter por lote, não globalmente. Cada PR deve reverter limpo.

Loop de Verificação

Após cada mesclagem:

rg 'jest\.(mock|fn|spyOn)' | wc -l     # deve tender a 0
npm test                                # suíte completa
composio execute GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY \
  -d '{"owner":"acme","repo":"app","branch":"main","event":"push"}' \
  | jq '.workflow_runs[0].conclusion'

Solução de Problemas

  • Regex do codemod pega demais → alterne para ferramentas baseadas em AST (ast-grep, ts-morph) para correspondências estruturais.
  • Testes passam localmente, CI falha → fixe a paridade da versão Node/Python; verifique .nvmrc / pyproject.toml.
  • PR grande demais para revisar → reduza o tamanho do lote pela metade; mantenedores não revisarão diffs de 800 linhas.
  • Conflitos entre lotes → faça rebase do lote aberto antes de mesclar o lote atual; nunca force push em lotes já mesclados.

Referência completa da CLI: docs.composio.dev/docs/cli

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

ComposioHQ/-21risk-automation

Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/-2chat-automation

Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/ably-automation

Automate Ably tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abstract-automation

Automate Abstract tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abuselpdb-automation

Automate Abuselpdb tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abyssale-automation

Automate Abyssale tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accelo-automation

Automate Accelo tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accredible-certificates-automation

Automate Accredible Certificates tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/acculynx-automation

Automate Acculynx tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/active-campaign-automation

Automate ActiveCampaign tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/addresszen-automation

Automate Addresszen tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adobe-automation

Automate Adobe tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adrapid-automation

Automate Adrapid tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adyntel-automation

Automate Adyntel tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aeroleads-automation

Automate Aeroleads tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aero-workflow-automation

Automate Aero Workflow tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinda-automation

Automate Affinda tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinity-automation

Automate Affinity tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agencyzoom-automation

Automate Agencyzoom tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agent-deep-links

Build, validate, and troubleshoot deep links for Codex, Cursor, VS Code, Visual Studio, and similar tools. Use when users ask for clickable links (especially in Slack) that open threads, files, folders, or app settings.

Habilidades Relacionadas