Flutter Skill
AI-powered E2E testing for 10 platforms. 253 MCP tools. Zero config. Works with Claude, Cursor, Windsurf, Copilot. Test Flutter, React Native, iOS, Android, Web, Electron, Tauri, KMP, .NET MAUI — all from natural language.
Install / Use
/learn @ai-dashboad/Flutter SkillQuality Score
Category
Development & EngineeringSupported Platforms
README
30-Second Demo
https://github.com/user-attachments/assets/d4617c73-043f-424c-9a9a-1a61d4c2d3c6
One prompt. 28 AI-driven actions. Zero test code. The AI explores a TikTok clone, navigates tabs, scrolls feeds, tests search, fills forms — all autonomously.
Why This Exists
Writing E2E tests is painful. Maintaining them is worse. flutter-skill takes a different approach:
- 🔌 Connects any AI agent (Claude, Cursor, Windsurf, Copilot, OpenClaw) directly to your running app via MCP
- 👀 The agent sees your screen — taps buttons, types text, scrolls, navigates — like a human tester who never sleeps
- ✅ Zero test code — no Page Objects, no XPath, no brittle selectors. Just plain English
- ⚡ Zero config — 2 lines of code, works on all 10 platforms
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.
Quick Start
1. Install (30 seconds)
npm install -g flutter-skill
2. Add to your AI (copy-paste into MCP config)
{
"mcpServers": {
"flutter-skill": {
"command": "flutter-skill",
"args": ["server"]
}
}
}
Works with Claude Desktop, Cursor, Windsurf, Copilot, Cline, OpenClaw — any MCP-compatible agent.
3. Add to your app (2 lines for Flutter)
import 'package:flutter_skill/flutter_skill.dart';
void main() {
if (kDebugMode) FlutterSkillBinding.ensureInitialized();
runApp(MyApp());
}
4. Test — just talk to your AI:
"Launch my app, explore every screen, and report any bugs"
That's it. Zero configuration. Zero test code. Works in under 60 seconds.
<details> <summary>📦 More install methods (Homebrew, Scoop, Docker, IDE, Agent Skill)</summary>| Method | Command |
|--------|---------|
| npm | npm install -g flutter-skill |
| Homebrew | brew install ai-dashboad/flutter-skill/flutter-skill |
| Scoop | scoop install flutter-skill |
| Docker | docker pull ghcr.io/ai-dashboad/flutter-skill |
| pub.dev | dart pub global activate flutter_skill |
| VSCode | Extensions → "Flutter Skill" |
| JetBrains | Plugins → "Flutter Skill" |
| Agent Skill | npx skills add ai-dashboad/flutter-skill |
| Zero-config | flutter-skill init (auto-detects & patches your app) |
Use with AI Platforms
MCP Server Mode (IDE Integration)
Works with any MCP-compatible AI tool. One config line:
{
"mcpServers": {
"flutter-skill": {
"command": "flutter-skill",
"args": ["server"]
}
}
}
| Platform | Config File | Status |
|----------|-------------|--------|
| Cursor | .cursor/mcp.json | ✅ |
| Claude Desktop | claude_desktop_config.json | ✅ |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | ✅ |
| VSCode Copilot | .vscode/mcp.json | ✅ |
| Cline | VSCode Settings → Cline → MCP | ✅ |
| OpenClaw | Skill or MCP config | ✅ |
| Continue.dev | .continue/config.json | ✅ |
HTTP Serve Mode (CLI & Automation)
For standalone browser automation, CI/CD pipelines, or remote access:
# 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
| Command | Description |
|---------|-------------|
| nav <url> | Navigate to URL |
| snap | Accessibility tree snapshot |
| screenshot [path] | Take screenshot |
| tap <text\|ref\|x y> | Tap element |
| type <text> | Type via keyboard |
| key <key> [mod] | Press key |
| eval <js> | Execute JavaScript |
| title | Get page title |
| text | Get visible text |
| hover <text> | Hover element |
| upload <sel> <file> | Upload file |
| tools | List tools |
| call <tool> [json] | Call any tool |
Supports --port=N, --host=H flags and FS_PORT/FS_HOST env vars.
Two Modes Compared
| | server (MCP stdio) | serve (HTTP) |
|---|---|---|
| Use case | IDE / AI agent integration | CLI / automation / CI/CD |
| Protocol | MCP (JSON-RPC over stdio) | HTTP REST |
| Tools | 253 (dynamic per page) | 246 (generic) |
| Browser | Auto-launches Chrome | Connects to existing Chrome |
| Best for | Cursor, Claude, VSCode | OpenClaw, scripts, pipelines |
Full CLI client reference: docs/CLI_CLIENT.md
10 Platforms, One Tool
Most testing tools work on 1-2 platforms. flutter-skill works on 10.
| Platform | SDK | Test Score |
|----------|-----|:----------:|
| Flutter (iOS/Android/Web) | flutter_skill | ✅ 188/195 |
| React Native | sdks/react-native | ✅ 75/75 |
| Electron | sdks/electron | ✅ 75/75 |
| Tauri (Rust) | sdks/tauri | ✅ 75/75 |
| Android (Kotlin) | sdks/android | ✅ 74/75 |
| KMP Desktop | sdks/kmp | ✅ 75/75 |
| .NET MAUI | sdks/dotnet-maui | ✅ 75/75 |
| iOS (Swift/UIKit) | sdks/ios | ✅ 19/19 |
| Web (any website) | sdks/web | ✅ |
| Web CDP (zero-config) | No SDK needed | ✅ 141/156 |
Total: 656/664 tests passing (98.8%) — each platform tested against a complex social media app with 50+ elements.
⚡ Performance
Real benchmarks from automated test runs against a complex social media app:
| Operation | Web (CDP) | Electron | Android |
|-----------|:---------:|:--------:|:-------:|
| connect | 93 ms | 55 ms | 103 ms |
| tap | 1 ms | 1 ms | 2 ms |
| enter_text | 1 ms | 1 ms | 2 ms |
| inspect | 3 ms | 12 ms | 10 ms |
| snapshot | 2 ms | 8 ms | 29 ms |
| screenshot | 31 ms | 80 ms | 88 ms |
| eval | 1 ms | — | — |
Token efficiency: snapshot() returns a structured element tree instead of an image — 87–99% fewer tokens than sending screenshots to your AI agent.
How fast is that? A tap takes 1–2 ms end-to-end. Browser automation tools like Playwright and Selenium typically take 50–100 ms for the same operation. That's 50–100× faster, because flutter-skill talks directly to the app runtime instead of going through WebDriver or CDP indirection.
Heavy DOM Sites (Real-World)
Tested 15 MCP tools against production websites — 75/75 passed, zero timeouts:
| Site | Tools | Total Time | snapshot | screenshot | count_elements |
|------|:-----:|:----------:|:----------:|:------------:|:----------------:|
| YouTube | 15/15 ✅ | 6.9s | 43 ms | 30 ms | 4 ms |
| Amazon | 15/15 ✅ | 14.2s | 1 ms | 5 ms | 2 ms |
| Reddit | 15/15 ✅ | 17.9s | 6 ms | 32 ms | 51 ms |
| Hacker News | 15/15 ✅ | 4.8s | 53 ms | 188 ms | 1 ms |
| Wikipedia | 15/15 ✅ | 7.8s | 15 ms | 336 ms | 1 ms |
Total time includes page load. Tool execution is consistently sub-100ms even on heavy DOM sites.
Why Not Playwright / Appium / Detox?
| | flutter-skill | Playwright MCP | Appium | Detox | |---|:---:|:---:|:---:|:---:| | MCP tools | 253 | ~33 | ❌ | ❌ | | Platforms | 10 | 1 (web) | Mobile | React Native | | Setup time | 30 sec | Minutes | Hours | Hours | | Test code needed | ❌ None | ✅ Yes | ✅ Yes | ✅ Yes | | AI-native (MCP) | ✅ | ✅ | ❌ | ❌ | | Self-healing tests | ✅ | ❌ | ❌ | ❌ | | Monkey/fuzz testing | ✅ | ❌ | ❌ | ❌ | | Visual regression | ✅ | ❌ | ❌ | ❌ | | Network mock/replay | ✅ | ❌ | ❌ | ❌ | | API + UI testing | ✅ | ❌ | ❌ | ❌ | | Multi-device sync | ✅ | ❌ | Partial | ❌ | | Accessibility audit | ✅ | ❌ | ❌ | ❌ | | i18n testing | ✅ | ❌ | ❌ | ❌ | | Performance monitoring | ✅ | ❌ | ❌ | ❌ | | Natural language | ✅ | ❌ | ❌ | ❌ | | Flutter support | ✅ Native | Partial | Partial | ❌ | | Desktop apps | ✅ | ✅ | ❌ | ❌ |
| **AI page u
