flutter-skill

Testes E2E com IA para 10 plataformas. 253 ferramentas MCP. Zero configuração. Teste Flutter, React Native, iOS, Android, Web, Electron, Tauri, KMP, .NET MAUI a partir de linguagem natural.

Documentação

flutter-skill CLI demo — nav, tap, type, screenshot across websites

flutter-skill

Dê olhos e mãos a qualquer agente de IA dentro de qualquer aplicativo em execução.
10 plataformas. Zero código de teste. Um servidor MCP.

Stars pub.dev npm CI License

Demonstração • Início Rápido • Plataformas de IA • Plataformas • vs Outros • Documentação

🚀 Zero configuração. Zero código de teste. Apenas converse com sua IA.

Se isso economizar seu tempo, considere dar uma estrela no repositório ⭐ — isso ajuda outras pessoas a encontrá-lo!


Demonstração em 30 Segundos

https://github.com/user-attachments/assets/d4617c73-043f-424c-9a9a-1a61d4c2d3c6

Um único comando. 28 ações orientadas por IA. Zero código de teste. A IA explora um clone do TikTok, navega pelas abas, rola feeds, testa a busca, preenche formulários — tudo de forma autônoma.


Por Que Isso Existe

Escrever testes E2E é doloroso. Mantê-los é pior. flutter-skill adota uma abordagem diferente:

  • 🔌 Conecta qualquer agente de IA (Claude, Cursor, Windsurf, Copilot, OpenClaw) diretamente ao seu aplicativo em execução via MCP
  • 👀 O agente vê sua tela — toca em botões, digita texto, rola, navega — como um testador humano que nunca dorme
  • ✅ Zero código de teste — sem Page Objects, sem XPath, sem seletores frágeis. Apenas inglês simples
  • ⚡ Zero configuração — 2 linhas de código, funciona em todas as 10 plataformas
You: "Test the checkout flow with an empty cart, then add 3 items and complete purchase"

Your AI agent handles the rest — screenshots, taps, text entry, assertions, navigation.
No Page Objects. No XPath. No brittle selectors. Just plain English.

Início Rápido

1. Instale (30 segundos)

npm install -g flutter-skill

2. Adicione à sua IA (copie e cole na configuração do MCP)

{
  "mcpServers": {
    "flutter-skill": {
      "command": "flutter-skill",
      "args": ["server"]
    }
  }
}

Funciona com Claude Desktop, Cursor, Windsurf, Copilot, Cline, OpenClaw — qualquer agente compatível com MCP.

3. Adicione ao seu aplicativo (2 linhas para Flutter)

import 'package:flutter_skill/flutter_skill.dart';

void main() {
  if (kDebugMode) FlutterSkillBinding.ensureInitialized();
  runApp(MyApp());
}

4. Teste — basta conversar com sua IA:

"Inicie meu aplicativo, explore cada tela e relate quaisquer bugs"

É isso. Zero configuração. Zero código de teste. Funciona em menos de 60 segundos.

📦 Mais métodos de instalação (Homebrew, Scoop, Docker, IDE, Agent Skill)
MétodoComando
npmnpm install -g flutter-skill
Homebrewbrew install ai-dashboad/flutter-skill/flutter-skill
Scoopscoop install flutter-skill
Dockerdocker pull ghcr.io/ai-dashboad/flutter-skill
pub.devdart pub global activate flutter_skill
VSCodeExtensões → "Flutter Skill"
JetBrainsPlugins → "Flutter Skill"
Agent Skillnpx skills add ai-dashboad/flutter-skill
Zero-configflutter-skill init (detecta e corrige seu aplicativo automaticamente)

Uso com Plataformas de IA

Modo Servidor MCP (Integração com IDE)

Funciona com qualquer ferramenta de IA compatível com MCP. Uma linha de configuração:

{
  "mcpServers": {
    "flutter-skill": {
      "command": "flutter-skill",
      "args": ["server"]
    }
  }
}
PlataformaArquivo de ConfiguraçãoStatus
Cursor.cursor/mcp.json✅
Claude Desktopclaude_desktop_config.json✅
Windsurf~/.codeium/windsurf/mcp_config.json✅
VSCode Copilot.vscode/mcp.json✅
ClineConfigurações do VSCode → Cline → MCP✅
OpenClawSkill ou configuração MCP✅
Continue.dev.continue/config.json✅

Modo Servidor HTTP (CLI e Automação)

Para automação de navegador independente, pipelines de CI/CD ou acesso remoto:

# Start server
flutter-skill serve https://your-app.com

# Use CLI client commands
flutter-skill nav https://google.com
flutter-skill snap                    # Accessibility tree (99% fewer tokens)
flutter-skill screenshot /tmp/ss.jpg
flutter-skill tap "Login"
flutter-skill type "hello@example.com"
flutter-skill eval "document.title"
flutter-skill tools                   # List all available tools
ComandoDescrição
nav <url>Navegar para URL
snapSnapshot da árvore de acessibilidade
screenshot [path]Tirar screenshot
tap <text|ref|x y>Tocar em elemento
type <text>Digitar via teclado
key <key> [mod]Pressionar tecla
eval <js>Executar JavaScript
titleObter título da página
textObter texto visível
hover <text>Passar o mouse sobre elemento
upload <sel> <file>Enviar arquivo
toolsListar ferramentas
call <tool> [json]Chamar qualquer ferramenta

Suporta flags --port=N, --host=H e variáveis de ambiente FS_PORT/FS_HOST.

Comparação dos Dois Modos

server (MCP stdio)serve (HTTP)
Caso de usoIntegração com IDE / agente de IACLI / automação / CI/CD
ProtocoloMCP (JSON-RPC sobre stdio)HTTP REST
Ferramentas253 (dinâmicas por página)246 (genéricas)
NavegadorInicia o Chrome automaticamenteConecta-se ao Chrome existente
Melhor paraCursor, Claude, VSCodeOpenClaw, scripts, pipelines

Referência completa do cliente CLI: docs/CLI_CLIENT.md


10 Plataformas, Uma Ferramenta

A maioria das ferramentas de teste funciona em 1-2 plataformas. O flutter-skill funciona em 10.

PlataformaSDKPontuação de Teste
Flutter (iOS/Android/Web)flutter_skill✅ 188/195
React Nativesdks/react-native✅ 75/75
Electronsdks/electron✅ 75/75
Tauri (Rust)sdks/tauri✅ 75/75
Android (Kotlin)sdks/android✅ 74/75
KMP Desktopsdks/kmp✅ 75/75
.NET MAUIsdks/dotnet-maui✅ 75/75
iOS (Swift/UIKit)sdks/ios✅ 19/19
Web (qualquer site)sdks/web✅
Web CDP (zero-config)Nenhum SDK necessário✅ 141/156

Total: 656/664 testes passando (98,8%) — cada plataforma testada com um aplicativo complexo de mídia social com mais de 50 elementos.


⚡ Desempenho

Benchmarks reais de execuções de testes automatizados contra um aplicativo complexo de mídia social:

OperaçãoWeb (CDP)ElectronAndroid
connect93 ms55 ms103 ms
tap1 ms1 ms2 ms
enter_text1 ms1 ms2 ms
inspect3 ms12 ms10 ms
snapshot2 ms8 ms29 ms
screenshot31 ms80 ms88 ms
eval1 ms——

Eficiência de tokens: snapshot() retorna uma árvore de elementos estruturada em vez de uma imagem — 87–99% menos tokens do que enviar screenshots para seu agente de IA.

Quão rápido é isso? Um tap leva 1–2 ms de ponta a ponta. Ferramentas de automação de navegador como Playwright e Selenium normalmente levam 50–100 ms para a mesma operação. Isso é 50–100× mais rápido, porque o flutter-skill fala diretamente com o runtime do aplicativo em vez de passar pela indireção do WebDriver ou CDP.

Sites com DOM Pesado (Mundo Real)

Testamos 15 ferramentas MCP em sites de produção — 75/75 passaram, zero timeouts:

SiteFerramentasTempo Totalsnapshotscreenshotcount_elements
YouTube15/15 ✅6,9s43 ms30 ms4 ms
Amazon15/15 ✅14,2s1 ms5 ms2 ms
Reddit15/15 ✅17,9s6 ms32 ms51 ms
Hacker News15/15 ✅4,8s53 ms188 ms1 ms
Wikipedia15/15 ✅7,8s15 ms336 ms1 ms

O tempo total inclui o carregamento da página. A execução das ferramentas é consistentemente abaixo de 100ms mesmo em sites com DOM pesado.


Por Que Não Playwright / Appium / Detox?

flutter-skillPlaywright MCPAppiumDetox
Ferramentas MCP253~33❌❌
Plataformas101 (web)MobileReact Native
Tempo de configuração30 segMinutosHorasHoras
Código de teste necessário❌ Nenhum✅ Sim✅ Sim✅ Sim
Nativo para IA (MCP)✅✅❌❌
Testes auto-reparáveis✅❌❌❌
Testes monkey/fuzz✅❌❌❌
Regressão visual✅❌❌❌
Mock/replay de rede✅❌❌❌
Testes de API + UI✅❌❌❌
Sincronização multi-dispositivo✅❌Parcial❌
Auditoria de acessibilidade✅❌❌❌
Testes de i18n✅❌❌❌
Monitoramento de desempenho✅❌❌❌
Linguagem natural✅❌❌❌
Suporte a Flutter✅ NativoParcialParcial❌
Aplicativos desktop✅✅❌❌

| Compreensão de página por IA | ✅ Árvore AX | ❌ Screenshots | ❌ | ❌ | | Teste de limite/segurança | ✅ 13 payloads | ❌ | ❌ | ❌ | | Ações em lote | ✅ 5+/chamada | 1/chamada | 1/chamada | 1/chamada |

O flutter-skill é a única ferramenta de teste E2E nativa para IA que funciona em mobile, web e desktop — com 7× mais ferramentas que o concorrente mais próximo.


Comandos CLI

# 🤖 AI autonomous exploration — finds bugs automatically
flutter-skill explore https://my-app.com --depth=3

# 🐒 Monkey/fuzz testing — random actions, crash detection
flutter-skill monkey https://my-app.com --actions=100 --seed=42

# 🚀 Parallel multi-platform testing
flutter-skill test --url https://my-app.com --platforms web,electron,android

# 🌐 Zero-config WebMCP server — any website becomes testable
flutter-skill serve https://my-app.com

🧠 Nativo para IA: 95% Menos Tokens

A maioria das ferramentas de teste com IA envia screenshots para o LLM — cada uma custa ~4.000 tokens.

O flutter-skill usa a Árvore de Acessibilidade do Chrome para dar à sua IA um resumo semântico compacto de qualquer página:

// page_summary → ~200 tokens (vs ~4,000 for a screenshot)
{
  "title": "Shopping Cart",
  "nav": ["Home", "Products", "Cart", "Account"],
  "forms": [{"input:Coupon Code": "text"}],
  "buttons": ["Apply", "Checkout", "Continue Shopping"],
  "features": {"search": true, "pagination": true},
  "links": 47, "inputs": 3
}

Depois, execute várias ações em lote em uma única chamada:

// explore_actions → 5 actions per call (vs 5 separate tool calls)
{"actions": [
  {"type": "fill", "target": "input:Coupon Code", "value": "SAVE20"},
  {"type": "tap", "target": "button:Apply"},
  {"type": "tap", "target": "button:Checkout"},
  {"type": "fill", "target": "input:Email", "value": "test@example.com"},
  {"type": "tap", "target": "button:Continue"}
]}

Resultado: Seu agente de IA testa mais rápido, custa menos e entende as páginas melhor do que ferramentas baseadas em screenshots.

flutter-skillFerramentas baseadas em screenshots
Tokens por página~200~4.000
Ações por chamada5+1
Entende semântica✅ papéis, nomes, estado❌ apenas pixels
Funciona com Shadow DOM✅❌

O Que Ele Pode Fazer

👀 Ver

  • screenshot — capturar a tela
  • inspect_interactive — todos os elementos tocáveis/digitáveis com referências semânticas
  • find_element / wait_for_element
  • get_elements — árvore completa de elementos

👆 Interagir

  • tap / long_press / swipe / drag
  • enter_text / set_text / clear_text
  • scroll — todas as direções
  • go_back / press_key

🔍 Inspecionar (v0.8.0)

  • Referências semânticas: button:Login, input:Email
  • Estáveis em mudanças de UI
  • tap(ref: "button:Submit")
  • 7 papéis: botão, entrada, alternância, controle deslizante, seleção, link, item

🚀 Controlar

  • launch_app — iniciar com flavors
  • hot_reload / hot_restart
  • get_logs / get_errors
  • scan_and_connect — encontrar aplicativos automaticamente
253 ferramentas — referência completa

Exploração por IA: page_summary, explore_actions, boundary_test, explore_report

Iniciar e Conectar: launch_app, scan_and_connect, connect_cdp, hot_reload, hot_restart, list_sessions, switch_session, close_session, disconnect, stop_app

Tela: screenshot, screenshot_region, screenshot_element, native_screenshot, inspect, inspect_interactive, snapshot, get_widget_tree, find_by_type, get_text_content, get_visible_text

Interação: tap, double_tap, long_press, enter_text, set_text, clear_text, swipe, scroll_to, drag, go_back, press_key, type_text, hover, fill, select_option, set_checkbox, focus, blur, native_tap, native_input_text, native_swipe

Testes Inteligentes: smart_tap, smart_enter_text, smart_assert (auto-reparáveis com correspondência difusa)

Asserções: assert_text, assert_visible, assert_not_visible, assert_element_count, assert_batch, wait_for_element, wait_for_gone, wait_for_idle, wait_for_stable, wait_for_url, wait_for_text, wait_for_element_count Regressão Visual: visual_baseline_save, visual_baseline_compare, visual_baseline_update, visual_regression_report, visual_verify, visual_diff, compare_screenshot

Mock de Rede: mock_api, mock_clear, record_network, replay_network, intercept_requests, clear_interceptions, block_urls, http_request

Testes de API: api_request, api_assert

Cobertura e Confiabilidade: coverage_start, coverage_stop, coverage_report, coverage_gaps, retry_on_fail, stability_check

Orientado a Dados: test_with_data, generate_test_data

Multi-Dispositivo: multi_connect, multi_action, multi_compare, multi_disconnect, parallel_snapshot, parallel_tap

Acessibilidade: accessibility_audit, a11y_full_audit, a11y_tab_order, a11y_color_contrast, a11y_screen_reader

i18n: set_locale, verify_translations, i18n_snapshot

Desempenho: perf_start, perf_stop, perf_report, get_performance, get_frame_stats, get_memory_stats

Sessão: save_session, restore_session, session_diff

Gravação e Exportação: record_start, record_stop, record_export (Playwright, Cypress, XCUITest, Espresso, Detox, Maestro, +5 mais), video_start, video_stop

Autenticação: auth_inject_session, auth_biometric, auth_otp, auth_deeplink

Navegador CDP: navigate, reload, go_forward, get_title, get_page_source, eval, get_tabs, new_tab, switch_tab, close_tab, get_cookies, set_cookie, clear_cookies, get_local_storage, set_local_storage, clear_local_storage, generate_pdf, set_viewport, emulate_device, throttle_network, go_offline, set_geolocation, set_timezone, set_color_scheme

Depuração: get_logs, get_errors, get_console_messages, get_network_requests, diagnose, diagnose_project, reset_app


Configuração da Plataforma

Flutter (iOS / Android / Web)
dependencies:
  flutter_skill: ^0.9.37
import 'package:flutter_skill/flutter_skill.dart';

void main() {
  if (kDebugMode) FlutterSkillBinding.ensureInitialized();
  runApp(MyApp());
}
React Native
npm install flutter-skill-react-native
import FlutterSkill from 'flutter-skill-react-native';
FlutterSkill.start();
Electron
npm install flutter-skill-electron
const { FlutterSkillBridge } = require('flutter-skill-electron');
FlutterSkillBridge.start(mainWindow);
iOS (Swift)
// Swift Package Manager: FlutterSkillSDK
import FlutterSkill
FlutterSkillBridge.shared.start()

Text("Hello").flutterSkillId("greeting")
Android (Kotlin)
implementation("com.flutterskill:flutter-skill:0.8.0")

FlutterSkillBridge.start(this)
Tauri (Rust)
[dependencies]
flutter-skill-tauri = "0.8.0"
KMP Desktop

Adicione a dependência Gradle — veja sdks/kmp para detalhes.

.NET MAUI

Adicione o pacote NuGet — veja sdks/dotnet-maui para detalhes.


Exemplos de Prompts

Basta dizer à sua IA o que testar:

PromptO que acontece
"Testar login com senha errada"Capturas de tela → insere credenciais → toca em login → verifica erro
"Explorar todas as telas e relatar bugs"Navega sistematicamente por todas as telas, testa todos os elementos
"Preencher cadastro com casos extremos"Testa emojis 🌍, strings longas, campos vazios, caracteres especiais
"Comparar fluxo de checkout no iOS e Android"Executa o mesmo teste em ambas as plataformas, compara capturas de tela
"Tirar capturas de tela das 5 abas"Toca em cada aba, captura o estado

Contribuindo

Veja CONTRIBUTING.md para diretrizes.

git clone https://github.com/ai-dashboad/flutter-skill
cd flutter-skill
dart pub get
dart run bin/flutter_skill.dart server  # Start MCP server

Links

📦 pub.dev🧩 VSCode
📦 npm🧩 JetBrains
🍺 Homebrew📖 Docs
🤖 Agent Skill📋 Changelog

⭐ Se o flutter-skill economizar seu tempo, dê uma estrela para que outros também possam encontrá-lo!

Licença MIT © 2025