flutter-skill

Pruebas E2E impulsadas por IA para 10 plataformas. 253 herramientas MCP. Sin configuración. Prueba Flutter, React Native, iOS, Android, Web, Electron, Tauri, KMP, .NET MAUI desde lenguaje natural.

Documentación

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

flutter-skill

Dale ojos y manos a cualquier agente de IA dentro de cualquier aplicación en ejecución.
10 plataformas. Cero código de prueba. Un servidor MCP.

Stars pub.dev npm CI License

Demo • Inicio rápido • Plataformas de IA • Plataformas • vs Otros • Documentación

🚀 Cero configuración. Cero código de prueba. Solo habla con tu IA.

Si esto te ahorra tiempo, considera dar una estrella al repositorio ⭐ — ¡ayuda a que otros lo encuentren!


Demo de 30 segundos

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

Un solo prompt. 28 acciones impulsadas por IA. Cero código de prueba. La IA explora un clon de TikTok, navega pestañas, desplaza feeds, prueba la búsqueda, rellena formularios — todo de forma autónoma.


Por qué existe esto

Escribir pruebas E2E es doloroso. Mantenerlas es peor. flutter-skill adopta un enfoque diferente:

  • 🔌 Conecta cualquier agente de IA (Claude, Cursor, Windsurf, Copilot, OpenClaw) directamente a tu aplicación en ejecución mediante MCP
  • 👀 El agente ve tu pantalla — toca botones, escribe texto, desplaza, navega — como un probador humano que nunca duerme
  • ✅ Cero código de prueba — sin Page Objects, sin XPath, sin selectores frágiles. Solo inglés sencillo
  • ⚡ Cero configuración — 2 líneas de código, funciona en las 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.

Inicio rápido

1. Instala (30 segundos)

npm install -g flutter-skill

2. Añádelo a tu IA (copia y pega en la configuración de MCP)

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

Funciona con Claude Desktop, Cursor, Windsurf, Copilot, Cline, OpenClaw — cualquier agente compatible con MCP.

3. Añádelo a tu aplicación (2 líneas para Flutter)

import 'package:flutter_skill/flutter_skill.dart';

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

4. Prueba — solo habla con tu IA:

"Lanza mi aplicación, explora cada pantalla y reporta cualquier error"

Eso es todo. Cero configuración. Cero código de prueba. Funciona en menos de 60 segundos.

📦 Más métodos de instalación (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
VSCodeExtensiones → "Flutter Skill"
JetBrainsPlugins → "Flutter Skill"
Agent Skillnpx skills add ai-dashboad/flutter-skill
Cero configuraciónflutter-skill init (detecta y parchea tu aplicación automáticamente)

Uso con plataformas de IA

Modo servidor MCP (integración con IDE)

Funciona con cualquier herramienta de IA compatible con MCP. Una línea de configuración:

{
  "mcpServers": {
    "flutter-skill": {
      "command": "flutter-skill",
      "args": ["server"]
    }
  }
}
PlataformaArchivo de configuraciónEstado
Cursor.cursor/mcp.json✅
Claude Desktopclaude_desktop_config.json✅
Windsurf~/.codeium/windsurf/mcp_config.json✅
VSCode Copilot.vscode/mcp.json✅
ClineConfiguración de VSCode → Cline → MCP✅
OpenClawSkill o configuración de MCP✅
Continue.dev.continue/config.json✅

Modo servidor HTTP (CLI y automatización)

Para automatización de navegador independiente, pipelines de CI/CD o acceso 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
ComandoDescripción
nav <url>Navegar a una URL
snapInstantánea del árbol de accesibilidad
screenshot [path]Tomar captura de pantalla
tap <text|ref|x y>Tocar un elemento
type <text>Escribir mediante teclado
key <key> [mod]Pulsar una tecla
eval <js>Ejecutar JavaScript
titleObtener el título de la página
textObtener texto visible
hover <text>Pasar el cursor sobre un elemento
upload <sel> <file>Subir archivo
toolsListar herramientas
call <tool> [json]Llamar a cualquier herramienta

Admite las banderas --port=N, --host=H y las variables de entorno FS_PORT/FS_HOST.

Comparación de los dos modos

server (MCP stdio)serve (HTTP)
Caso de usoIntegración con IDE / agente de IACLI / automatización / CI/CD
ProtocoloMCP (JSON-RPC sobre stdio)HTTP REST
Herramientas253 (dinámicas por página)246 (genéricas)
NavegadorLanza Chrome automáticamenteSe conecta a Chrome existente
Ideal paraCursor, Claude, VSCodeOpenClaw, scripts, pipelines

Referencia completa del cliente CLI: docs/CLI_CLIENT.md


10 plataformas, una herramienta

La mayoría de las herramientas de prueba funcionan en 1-2 plataformas. flutter-skill funciona en 10.

PlataformaSDKPuntuación de prueba
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 (cualquier sitio web)sdks/web✅
Web CDP (cero configuración)No se necesita SDK✅ 141/156

Total: 656/664 pruebas aprobadas (98.8%) — cada plataforma probada contra una aplicación compleja de redes sociales con más de 50 elementos.


⚡ Rendimiento

Puntos de referencia reales de ejecuciones de pruebas automatizadas contra una aplicación compleja de redes sociales:

OperaciónWeb (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——

Eficiencia de tokens: snapshot() devuelve un árbol de elementos estructurado en lugar de una imagen — 87–99% menos tokens que enviar capturas de pantalla a tu agente de IA.

¿Qué tan rápido es? Un tap toma 1–2 ms de principio a fin. Las herramientas de automatización de navegador como Playwright y Selenium suelen tardar 50–100 ms para la misma operación. Eso es 50–100× más rápido, porque flutter-skill habla directamente con el runtime de la aplicación en lugar de pasar por la indirección de WebDriver o CDP.

Sitios con DOM pesado (mundo real)

Se probaron 15 herramientas MCP contra sitios web de producción — 75/75 aprobadas, cero tiempos de espera:

SitioHerramientasTiempo 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

El tiempo total incluye la carga de la página. La ejecución de herramientas es consistentemente inferior a 100 ms incluso en sitios con DOM pesado.


¿Por qué no Playwright / Appium / Detox?

flutter-skillPlaywright MCPAppiumDetox
Herramientas MCP253~33❌❌
Plataformas101 (web)MóvilReact Native
Tiempo de configuración30 segMinutosHorasHoras
Código de prueba necesario❌ Ninguno✅ Sí✅ Sí✅ Sí
Nativo para IA (MCP)✅✅❌❌
Pruebas auto-reparables✅❌❌❌
Pruebas monkey/fuzz✅❌❌❌
Regresión visual✅❌❌❌
Simulación/reproducción de red✅❌❌❌
Pruebas de API + UI✅❌❌❌
Sincronización multi-dispositivo✅❌Parcial❌
Auditoría de accesibilidad✅❌❌❌
Pruebas de i18n✅❌❌❌
Monitoreo de rendimiento✅❌❌❌
Lenguaje natural✅❌❌❌
Soporte de Flutter✅ NativoParcialParcial❌
Aplicaciones de escritorio✅✅❌❌

| Comprensión de página por IA | ✅ Árbol AX | ❌ Capturas de pantalla | ❌ | ❌ | | Pruebas de límites/seguridad | ✅ 13 payloads | ❌ | ❌ | ❌ | | Acciones por lotes | ✅ 5+/llamada | 1/llamada | 1/llamada | 1/llamada |

flutter-skill es la única herramienta de pruebas E2E nativa para IA que funciona en móvil, web y escritorio — con 7× más herramientas que el competidor más cercano.


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

La mayoría de las herramientas de prueba con IA envían capturas de pantalla al LLM — cada una cuesta ~4,000 tokens.

flutter-skill usa el Árbol de Accesibilidad de Chrome para dar a tu IA un resumen semántico compacto de cualquier 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
}

Luego agrupa múltiples acciones en una sola llamada:

// 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: Tu agente de IA prueba más rápido, cuesta menos y comprende las páginas mejor que las herramientas basadas en capturas de pantalla.

flutter-skillHerramientas basadas en capturas
Tokens por página~200~4,000
Acciones por llamada5+1
Comprende semántica✅ roles, nombres, estado❌ solo píxeles
Funciona con Shadow DOM✅❌

Qué puede hacer

👀 Ver

  • screenshot — capturar la pantalla
  • inspect_interactive — todos los elementos tocables/escribibles con referencias semánticas
  • find_element / wait_for_element
  • get_elements — árbol de elementos completo

👆 Interactuar

  • tap / long_press / swipe / drag
  • enter_text / set_text / clear_text
  • scroll — todas las direcciones
  • go_back / press_key

🔍 Inspeccionar (v0.8.0)

  • Referencias semánticas: button:Login, input:Email
  • Estables ante cambios de UI
  • tap(ref: "button:Submit")
  • 7 roles: botón, entrada, interruptor, deslizador, selector, enlace, elemento

🚀 Controlar

  • launch_app — lanzar con flavors
  • hot_reload / hot_restart
  • get_logs / get_errors
  • scan_and_connect — encontrar aplicaciones automáticamente
253 herramientas — referencia completa

Exploración con IA: page_summary, explore_actions, boundary_test, explore_report

Lanzar y conectar: launch_app, scan_and_connect, connect_cdp, hot_reload, hot_restart, list_sessions, switch_session, close_session, disconnect, stop_app

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

Interacción: 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

Pruebas inteligentes: smart_tap, smart_enter_text, smart_assert (auto-reparables con coincidencia difusa)

Afirmaciones: 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 Regresión Visual: visual_baseline_save, visual_baseline_compare, visual_baseline_update, visual_regression_report, visual_verify, visual_diff, compare_screenshot

Simulación de Red: mock_api, mock_clear, record_network, replay_network, intercept_requests, clear_interceptions, block_urls, http_request

Pruebas de API: api_request, api_assert

Cobertura y Fiabilidad: coverage_start, coverage_stop, coverage_report, coverage_gaps, retry_on_fail, stability_check

Basado en Datos: test_with_data, generate_test_data

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

Accesibilidad: accessibility_audit, a11y_full_audit, a11y_tab_order, a11y_color_contrast, a11y_screen_reader

i18n: set_locale, verify_translations, i18n_snapshot

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

Sesión: save_session, restore_session, session_diff

Grabación y Exportación: record_start, record_stop, record_export (Playwright, Cypress, XCUITest, Espresso, Detox, Maestro, +5 más), video_start, video_stop

Autenticación: 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

Depuración: get_logs, get_errors, get_console_messages, get_network_requests, diagnose, diagnose_project, reset_app


Configuración de 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

Añade la dependencia de Gradle — consulta sdks/kmp para más detalles.

.NET MAUI

Añade el paquete NuGet — consulta sdks/dotnet-maui para más detalles.


Ejemplos de Prompts

Solo dile a tu IA qué probar:

PromptQué sucede
"Probar inicio de sesión con contraseña incorrecta"Capturas de pantalla → introduce credenciales → toca iniciar sesión → verifica el error
"Explorar cada pantalla y reportar errores"Navega sistemáticamente por todas las pantallas, prueba todos los elementos
"Completar registro con casos límite"Prueba emojis 🌍, cadenas largas, campos vacíos, caracteres especiales
"Comparar flujo de pago en iOS y Android"Ejecuta la misma prueba en ambas plataformas, compara capturas de pantalla
"Tomar capturas de pantalla de las 5 pestañas"Toca cada pestaña, captura el estado

Contribuciones

Consulta CONTRIBUTING.md para las pautas.

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

Enlaces

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

⭐ Si flutter-skill te ahorra tiempo, ¡dale una estrella para que otros también lo encuentren!

Licencia MIT © 2025