Migrar com um agente de IA
A saída do UltraGX foi escrita para que um agente de programação (Claude Code, Codex, Cursor, Antigravity ou outro) possa reconstruir o aplicativo em outra tecnologia sem abrir o GeneXus. O agente não precisa interpretar código GeneXus do zero: ele lê regras já explicadas, pseudocódigo por evento, o SQL implícito de cada For each, o modelo de dados com suas chaves e uma ordem de reconstrução.
Este capítulo descreve um método de trabalho que funciona bem. Não é a única forma, mas evita os erros mais comuns: pedir tudo de uma vez ao agente, ou deixar que ele invente estrutura que a KB já define.
1. Preparar o espaço de trabalho
- Gere a documentação com a edição completa e, se possível, com a narrativa em
okpara os objetos de negócio. Use o idioma em que a sua equipe trabalha. - Crie o repositório do novo aplicativo separado da saída do UltraGX.
- Deixe a saída acessível ao agente como material somente leitura: por exemplo, uma pasta irmã
(
../kb-docs/) ou um submódulo. Não é preciso copiarviewer/,_pipeline/nem_source_text/. - No novo repositório, escreva o arquivo de instruções do agente (
CLAUDE.md,AGENTS.mdou as regras do Cursor) com:- a tecnologia de destino e suas convenções (linguagem, framework, banco de dados, estrutura de pastas);
- a localização da documentação da KB e a indicação de ler primeiro o seu
README.md; - a regra de que os nomes de tabelas, atributos e regras vêm da documentação, não são inventados;
- que as notas do usuário prevalecem sobre o que foi inferido.
Exemplo de bloco para esse arquivo (se os seus documentos estiverem em português, as seções se chamam Notas do usuário e Limites desta análise):
## Legacy system knowledge
The GeneXus application being migrated is documented in ../kb-docs (UltraGX output, read-only).
Start with ../kb-docs/README.md. Locate objects through kb_index.json (doc_path column).
Table and column names, keys and business rules come from those documents; never invent them.
"User notes" sections override inferred statements. When a document lists something under
"Limits of this analysis", ask before assuming.
2. Ordem de leitura
O README.md da saída indica ao agente como percorrê-la. Em resumo:
README.md,kb_summary.mdekb_clusters_summary.md: o que existe e como está agrupado.datamodel/index.md: tabelas, chaves e qual transação define cada tabela.global_rebuild_roadmap.md: em que ordem reconstruir.- Para cada cluster:
clusters/cluster_NNN.knowledge.md,.flow.mde.rebuild.md. - Para cada objeto: o seu documento em
objects/(caminho emkb_index.json→doc_path). - Para seguir relações:
kb_graph.jsonou a seção Referências cruzadas de cada documento.
3. Trabalhar por fases e por cluster
- Modelo de dados primeiro. Peça ao agente o esquema do banco de dados e as entidades a partir de
datamodel/. Revise-o contra o banco real antes de seguir: todo o resto se apoia nisso. - Siga o roteiro. Pegue a primeira fase de
global_rebuild_roadmap.mde, dentro dela, um cluster por vez. - Um cluster, uma tarefa. Para cada cluster, o agente lê o seu plano de reconstrução e os documentos dos seus objetos, propõe o design, implementa e escreve testes a partir das regras de negócio.
- Feche o cluster antes de passar ao próximo: testes passando, revisão das regras uma a uma e notas do usuário com as decisões tomadas (elas ficam para as próximas sessões do agente).
4. Pedidos de exemplo
Orientação
Leia ../kb-docs/README.md, kb_summary.md e kb_clusters_summary.md. Resuma o que o aplicativo faz, suas áreas
funcionais e as 10 tabelas mais importantes. Não escreva código ainda.
Modelo de dados
A partir de ../kb-docs/datamodel/, gere as migrations do banco de dados para PostgreSQL e as entidades do
ORM. Respeite nomes, tipos e chaves primárias e estrangeiras. Liste qualquer tabela cuja
definição esteja incompleta.
Um cluster
Implemente o cluster cluster_004 conforme clusters/cluster_004.rebuild.md. Leia o documento de cada objeto membro
e reproduza suas regras de negócio e o SQL implícito dos seus For each. Para as telas, use a seção de
interface do usuário. Escreva um teste por regra de negócio e marque o que você não conseguir reproduzir com certeza.
Um objeto específico
Procure em kb_index.json o procedure CalcularDescuento, leia o seu documento e reimplemente-o como serviço. Explique
cada ramo do pseudocódigo em um comentário do teste correspondente.
Verificação
Compare o serviço InvoiceService com objects/Facturacion/Transaction.Factura.md: enumere cada regra de negócio
do documento e indique onde ela está implementada ou se está faltando.
5. Boas práticas
- Contexto delimitado. Não peça ao agente que leia a pasta inteira: com
kb_index.jsonedoc_pathele encontra o que precisa para cada tarefa. - Confiança. Priorize a revisão humana dos objetos com
confidence_levelbaixo e do que aparece em Limites desta análise. - Objetos de biblioteca e de padrões. Os objetos marcados como biblioteca (módulos importados do GeneXus ou de terceiros) e a estrutura gerada por padrões (Work With, K2BTools) não são migrados tal como estão: são substituídos pelos equivalentes do framework de destino.
- A KB continua viva. Se o aplicativo GeneXus receber mudanças durante a migração, exporte e execute de novo o pipeline sobre o mesmo projeto; as notas são preservadas e as diferenças ficam visíveis no controle de versão se a saída estiver versionada.