Native-para-Flutter

Converte um aplicativo móvel nativo em produção (iOS, Android ou ambos) para um único app Flutter, passo a passo, com documentação, revisão independente e testes em dispositivo real.

O que é Native-para-Flutter?

Este skill gerencia a migração completa de um aplicativo nativo (Swift/Kotlin) para Flutter, seguindo um processo rigoroso e documentado. Ele começa analisando o código-fonte nativo, documenta diferenças de negócio entre os sistemas operacionais, gera um PRD, um inventário de UI e especificações de design, e então produz planos de implementação detalhados. A execução é feita por subagentes especializados que implementam módulos, enquanto um revisor independente (em um contexto separado) valida cada etapa contra o código original e as especificações antes de permitir o avanço. O skill suporta modos para migração de iOS, Android ou ambos, garantindo que nenhum usuário existente perca funcionalidades como login ou dados salvos. Ele é ativado por comandos como 'migrar app nativo para Flutter', 'unificar iOS e Android em Flutter' ou solicitações de PRD e especificações de migração, e também cobre solicitações parciais como 'apenas análise' ou 'apenas design'.

Funciona com~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/ParkGiTeak/native-to-flutter/tree/HEAD

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

Nativo → Flutter

Move um aplicativo nativo em produção para uma única base de código Flutter. Este skill funciona criando documentos primeiro, implementando com base neles, e só avança para a próxima etapa após aprovação de um revisor independente. A entrada é assumida como apenas a pasta de código-fonte nativo. Análises, PRDs, especificações e instruções são todas geradas pelo skill a cada etapa.

Por que fazer assim

  • Ambos os apps estão em produção. Se um usuário existente perder login, pagamento ou dados salvos após a migração, é uma falha. Portanto, "nenhum usuário de qualquer SO perde funcionalidades" tem precedência sobre qualquer outra decisão.
  • O original é a única verdade. Valores baseados em memória ou suposição sempre estarão errados em dispositivos reais. Todos os números, strings, APIs e comportamentos devem ser referenciados ao arquivo e linha originais (arquivo:linha). Se não houver referência, escreva (estimado).
  • Documentos acordados primeiro permitem implementação paralela. Vários agentes de módulo só podem trabalhar simultaneamente se as especificações que cada um lerá estiverem finalizadas. Especificações instáveis causam retrabalho (já houve caso de refazer toda a tela duas vezes: uma para funcionalidade, outra para UI -> este skill cria a especificação de design antes da implementação).
  • Separação entre escritor e revisor. Não confiamos no relatório de quem implementou; um revisor em outro contexto compara o código diretamente com a especificação e só aprova o avanço.

Modos de Entrada

No início, o modo é definido. A estrutura das etapas é a mesma, mas o trabalho dentro de cada etapa varia. As diferenças por modo estão na seção "Por Modo" de cada arquivo de referência.

ModoEntradaDiferença Principal
BOTHProjeto iOS + Projeto AndroidEncontra diferenças de negócio e UI entre os SOs e decide uma solução. Define o SO de referência para UI e gerencia exceções. Ambos os SOs são alvo de migração de usuários existentes
IOS_ONLYApenas projeto iOSSem diferenças entre SOs. Em vez disso, projeta "lacunas de nova plataforma" (botão voltar, permissões em tempo de execução, canais de notificação, barra do sistema, ID do app/assinatura/loja) para Android, agora nova plataforma
ANDROID_ONLYApenas projeto AndroidO oposto. Para iOS como nova plataforma, projeta textos de permissão do Info.plist, APNs/entitlements, gesto de voltar, assinatura/perfil/App Store

Mesmo no modo de SO único, as plataformas alvo do Flutter resultante (apenas o SO original / ambos os SOs) são perguntadas separadamente.

Papéis

PapelQuemO que faz
OrquestradorEsta sessão (eu)Avança as etapas, instrui e consolida agentes, modifica arquivos comuns, testa e compila tudo, reporta ao usuário
Agente de escrita/implementaçãoSubagentes (model: opus padrão, ou o modelo especificado pelo usuário)Escreve análises, documentos e código dentro do escopo atribuído
RevisorSubagente model: fable padrão (contexto independente). Se o usuário conectar um modelo externo (GPT, Gemini, etc.), esse modeloCompara documentos e código diretamente com o original e a especificação, aprova ou solicita correções
UsuárioTomador de decisãoEscolhe políticas e UX, testa em dispositivos reais, gerencia contas, chaves e lojas

Regras de coautoria e revisão (log de acréscimos apenas, aprovação apenas com nome próprio, ambas as aprovações na mesma revisão, transição de revisor) estão em references/collaboration.md. Ao trabalhar com modelos externos, o usuário transmite as mensagens, então a comunicação é baseada em arquivos de log.

Mapa das Etapas

Cada etapa produz artefatos e só avança para a próxima após passar pelo portão. Ao entrar em uma etapa, leia o arquivo de referência correspondente.

#EtapaArtefatos (em <ws>/docs/)PortãoArquivo a ler
0Início e verificação de ambiente00-kickoff.md (modo, plataformas alvo, arquitetura, princípios, lista de decisões pendentes)Confirmação do usuárioreferences/00-kickoff.md
1Análise do originalanalysis/<os>_analysis.md, analysis/api_inventory.md, analysis/screen_inventory.md, (BOTH) analysis/business_diff.md / (SO único) analysis/new_platform_gaps.mdAprovação do revisorreferences/01-analysis.md
2PRDprd.md (tabela de decisões D-número, contratos de API, requisitos de tela/funcionalidade, migração/segurança, etapas/portões, cenários de aceitação) + logs/prd_log.mdRevisor e eu declaramos a mesma revisão completa + decisões do usuário refletidasreferences/02-prd.md
3Inventário de UI e Especificação de Designdesign/<os>_ui_inventory.md, design_spec.md (tokens, componentes, assets, strings, por tela, exceções de plataforma, lista de verificação em dispositivo real), decisions.md (U-número) + logs/design_log.mdAprovação bilateral por telareferences/03-design-spec.md
4Instrução de Implementaçãoimpl_plan.md (convenções de arquitetura, IDs de trabalho por fase/módulo/camada, tabela de referência cruzada)Aprovação do revisor, zero omissõesreferences/04-impl-plan.md
5Base comum e POC de plataformaProjeto Flutter, flavor/env, core (rede, erro, MVI, sistema de design, strings, assets, roteador), adaptadores/plugins de plataformaPOC em dispositivo real aprovadoreferences/05-build.md
6Implementação por móduloPara cada módulo: data → domain → presentation → test, logs/impl_log.mdAprovação do revisor para cada móduloreferences/05-build.md
7Testes de integração e correçõesTodos os testes passam, portão de cobertura, compilação bem-sucedidaZero falhasreferences/05-build.md
8Loop de QA em dispositivo realqa_device_checklist.md, feedback do usuário → decisão U → correção → sincronização de documentosUsuário diz "concluído"references/06-device-qa.md
9Assinatura e distribuiçãoAssinatura, perfis, Firebase, CI, release_runbook.md (novo SO: novo registro)SO original: mesmo ID do app, certificado, versão superior / Novo SO: nova assinatura, upload possívelreferences/07-release.md
10Documentação de manutenção<flutter>/docs/01~07, README.mdAprovação do revisorreferences/08-maintenance-docs.md

Se o usuário solicitar pular uma etapa (ex.: "a análise já está pronta, comece pelo PRD"), verifique se os artefatos da etapa anterior existem. Se não, informe o que está faltando e prossiga conforme o usuário decidir. Solicitações para ajustar um app Flutter já implementado à UI original seguem o "caminho alternativo" em references/05-build.md.

Princípios a Seguir

Estes princípios devem ser copiados para o início de cada documento de etapa para que todos os agentes julguem com os mesmos critérios.

  1. Proibido bloquear usuários existentes. Se uma decisão impede que usuários de um SO possam fazer login, pagar ou usar seus ativos, essa decisão está errada. Validações que tocam dados existentes (ex.: formato de login) devem ser flexíveis; novas políticas de entrada devem seguir o servidor.
  2. Sem alterações no servidor como premissa básica. Salvo instrução específica, resolva dentro dos contratos de API atuais. Melhorias que exigem servidor devem ser separadas como "issues em aberto".
  3. Não reproduza defeitos. Não carregue bugs originais por "paridade". Defina o resultado esperado e fixe-o com testes de regressão. Se o resultado visível ao usuário mudar, coloque na lista de decisões e confirme com o usuário.
  4. SO de referência para UI (BOTH, durante a migração). Se o visual divergir, use o valor do SO de referência. Pergunte ao usuário qual SO será a referência; não defina um padrão. Este princípio é um critério de julgamento durante a migração do original. Quando a migração terminar, a regra muda para "o comportamento atual do Flutter é a referência; alterações dependem de decisão do usuário" (etapa 10). Exceções são apenas três tipos: (a) seguir o SO de referência quebra funcionalidades para usuários do outro SO ou quebra comportamento específico da plataforma, (b) o comportamento do SO de referência conflita com decisões do PRD, (c) o valor do SO de referência é claramente um bug (mantenha o visual, corrija apenas o comportamento).
  5. Evidência obrigatória. Referência arquivo:linha do original. Valores sem evidência: (estimado), valores que precisam ser medidos em dispositivo real: (dispositivo real), valores novos não encontrados no original: (nova definição).
  6. Não introduza o que não estava no original. Não adicione SDKs externos, serviços externos ou configurações extras (ex.: SDK de segurança comercial, endereço de e-mail de notificação) só porque "parece melhor". Migre primeiro a abordagem original; se quiser mudar, pergunte ao usuário com a justificativa.
  7. Não remova textos ou funcionalidades visíveis arbitrariamente. Mesmo que um texto informativo do original pareça incorreto em relação ao comportamento real, não o remova; pergunte ao usuário (manter o texto ou ajustar o comportamento ao texto).
  8. Decisões devem ser registradas com ID. Decisão de PRD D-n, decisão de UX do usuário U-n. Se uma decisão mudar, atualize código, testes, especificações e o registro de decisão simultaneamente. Ao final de cada rodada de trabalho, sincronize a documentação com o código.
  9. Não exiba valores secretos. Senhas de keystore, segredos de API, etc., devem ser transferidos apenas por arquivo, sem aparecer em diálogos ou logs. A política de commit no repositório segue a decisão do usuário (references/07-release.md).

Regras de Operação de Agentes

  • Propriedade de escopo. O agente de módulo só modifica sua própria pasta de módulo. Se precisar de arquivos comuns (core, app, dependências, assets, strings), não os modifica diretamente; em vez disso, registra na seção "Solicitações Comuns" do relatório final. O orquestrador coleta e aplica tudo de uma vez. É a maneira mais barata de evitar conflitos durante o trabalho paralelo.
  • Momento dos testes. Ao processar módulos sequencialmente, o agente executa os testes do seu módulo. Ao processar vários módulos em ondas paralelas, o agente só garante que dart analyze passe em sua pasta; o flutter test completo e a compilação são executados pelo orquestrador após o fim da onda. Múltiplos agentes usando o mesmo build/ simultaneamente quebram as ferramentas.
  • Revisor não confia em relatórios. Instrução de revisão deve incluir: "compare o código e a especificação diretamente, em vez do relatório do agente de implementação". O revisor não modifica código.
  • Relatórios curtos. O relatório final do agente tem limite de linhas (modelos em templates/). Conteúdo longo deve ser escrito em arquivos de log.
  • Execução paralela. Análises, módulos e tarefas de documentação independentes podem ser disparados com várias chamadas de agente simultâneas. O fato de este skill ter sido chamado já constitui concordância com o progresso multiagente; portanto, ondas grandes podem usar ferramentas de Workflow (pipeline de escrita → revisão → correção). Informe o tamanho da onda e o modelo ao usuário em uma linha antes de começar.
  • Retomada. Cada arquivo de log tem uma tabela de progresso no topo, sempre atualizada. Se a sessão for interrompida, leia apenas 00-kickoff.md e a tabela de progresso de cada log para continuar.

Quando Perguntar ao Usuário

Eu não decido o seguinte. Apresente opções e recomendações curtas com justificativa e aguarde resposta.

  • Lista de perguntas iniciais (references/00-kickoff.md)
  • Diferenças de negócio que alteram o resultado visível ao usuário ou que exigem confirmação do servidor
  • SO de referência para UI e exceções que mudam significativamente funcionalidade ou visual
  • Introdução de bibliotecas ou serviços não presentes no original, remoção de funcionalidades ou textos originais
  • Tarefas que exigem contas (Apple Developer, Play Console, Firebase Console), localização de valores secretos
  • Política de commit no repositório, se o repositório remoto será público

Se o usuário disser "faça como recomendado", registre a recomendação como decisão (U-número) e prossiga.

Relatório de Fim de Etapa

Ao final de cada etapa, reporte apenas o seguinte ao usuário: documentos criados (caminhos), resultado da revisão (número de apontamentos, acatados, rejeitados e motivos), itens que precisam de decisão do usuário (incluindo recomendações), e a próxima etapa. Se algo não foi verificado, escreva que não foi verificado.

Arquivos de Referência

ArquivoQuando usar
references/00-kickoff.mdNo início
references/01-analysis.mdAnálise original
references/02-prd.mdEscrita e acordo do PRD
references/03-design-spec.mdInventário de UI e especificação de design
references/04-impl-plan.mdInstrução de implementação
references/05-build.mdBase comum, implementação de módulo, testes de integração
references/06-device-qa.mdLoop de QA em dispositivo real
references/07-release.mdAssinatura, flavor, Firebase, CI, lançamento
references/08-maintenance-docs.mdDocumentação de manutenção
references/collaboration.mdRegras de coautoria, revisão e transição
references/pitfalls.mdProblemas reais de migração e prevenção — use após etapa 5, sempre que necessário
templates/*.mdModelos de instrução de agente, instrução de revisão e formato de relatório

Habilidades Relacionadas