https://github.com/ai-dashboad/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.
https://github.com/ai-dashboad/flutter-skill
ai ai-testing android automation claude cross-platform cursor e2e-testing electron flutter ios mcp mcp-server model-context-protocol playwright-alternative react-native tauri test-automation testing-tools web-testing
Last synced: 16 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/ai-dashboad/flutter-skill
- Owner: ai-dashboad
- License: mit
- Created: 2026-01-29T20:55:29.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-23T14:55:31.000Z (25 days ago)
- Last Synced: 2026-03-25T09:58:23.233Z (23 days ago)
- Topics: ai, ai-testing, android, automation, claude, cross-platform, cursor, e2e-testing, electron, flutter, ios, mcp, mcp-server, model-context-protocol, playwright-alternative, react-native, tauri, test-automation, testing-tools, web-testing
- Language: Dart
- Homepage: https://ai-dashboad.github.io/flutter-skill/
- Size: 66.6 MB
- Stars: 109
- Watchers: 1
- Forks: 15
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Roadmap: docs/ROADMAP.md
Awesome Lists containing this project
- awesome-testing - flutter-skill - AI-powered E2E testing via MCP for Flutter, React Native, iOS, Android, Electron, Tauri, KMP, and .NET MAUI. Zero test code. (Software / UI & End-to-End Testing)
- awesome-mcp-zh - flutter-skill
- awesome-mcp-servers - ai-dashboad/flutter-skill - powered E2E testing bridge for any app. Supports Flutter, iOS, Android, Web, Electron, Tauri, KMP, React Native, .NET MAUI. (๐ Browser Automation & Web Scraping)
- awesome-devops-mcp-servers - ai-dashboad/flutter-skill - AI-powered E2E testing bridge for any app. Supports Flutter, iOS, Android, Web, Electron, Tauri, KMP, React Native, .NET MAUI. (CI/CD & DevOps Pipelines / ๐งช Testing & Chaos Engineering)
README
flutter-skill
Give your AI eyes and hands inside any app.
E2E testing bridge for Claude, Cursor, Windsurf โ across 8 platforms.
Quick Start โข
Platforms โข
Features โข
Install โข
Docs
---
๐ฌ AI tests a full TikTok clone โ 28 actions, zero test code
https://github.com/user-attachments/assets/d4617c73-043f-424c-9a9a-1a61d4c2d3c6
```
You: "Test the login flow โ enter test@example.com and password123, tap Login, verify Dashboard"
AI Agent:
1. screenshot() โ sees the login screen
2. enter_text("email") โ types the email
3. enter_text("pass") โ types the password
4. tap("Login") โ taps the button
5. wait_for_element("Dashboard") โ confirms navigation
โ
Login flow verified!
```
**No test code. No selectors. Just tell the AI what to test.**
---
## Quick Start
**1. Install**
```bash
npm install -g flutter-skill # npm (recommended)
# or: brew install ai-dashboad/flutter-skill/flutter-skill
# or: dart pub global activate flutter_skill
# or: npx skills add ai-dashboad/flutter-skill # Agent Skill (Claude Code, Cursor, Copilot, Cline, etc.)
```
**2. Add to your MCP config** (Claude Code / Cursor / Windsurf)
```json
{
"mcpServers": {
"flutter-skill": {
"command": "flutter-skill",
"args": ["server"]
}
}
}
```
**3. Add to your app** (2 lines)
```dart
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, tap Sign Up, fill the form, and verify the success screen"*
That's it. Zero configuration.
๐ฆ More install methods (Windows, Docker, IDE extensions)
| Method | Command | Platform |
|--------|---------|----------|
| npm | `npm install -g flutter-skill` | All |
| Homebrew | `brew install ai-dashboad/flutter-skill/flutter-skill` | macOS/Linux |
| Scoop | `scoop install flutter-skill` | Windows |
| One-click | `curl -fsSL .../install.sh \| bash` | macOS/Linux |
| Windows | `iwr .../install.ps1 -useb \| iex` | Windows |
| Docker | `docker pull ghcr.io/ai-dashboad/flutter-skill` | All |
| pub.dev | `dart pub global activate flutter_skill` | All |
| VSCode | Extensions โ "Flutter Skill" | All |
| IntelliJ | Plugins โ "Flutter Skill" | All |
| Agent Skill | `npx skills add ai-dashboad/flutter-skill` | All (28+ agents) |
๐ง Zero-config onboarding (auto-detect & patch your app)
```bash
cd your-app/
flutter-skill init # Detects platform, patches entry point, configures MCP
flutter-skill demo # Launches built-in demo app to try it out
```
`init` auto-detects Flutter, iOS, Android, React Native, or Web projects and patches them automatically.
---
## Platforms
flutter-skill works across **8 platforms** with a unified bridge protocol:
| Platform | SDK | Tests | Status |
|----------|-----|-------|--------|
| **Flutter iOS** | `flutter_skill` (pub.dev) | 21/21 โ
| Stable |
| **Flutter Web** | `flutter_skill` (pub.dev) | 20/20 โ
| Stable |
| **Electron** | [`sdks/electron`](sdks/electron/) | 24/24 โ
| Stable |
| **Android** (Kotlin) | [`sdks/android`](sdks/android/) | 24/24 โ
| Stable |
| **KMP Desktop** | [`sdks/kmp`](sdks/kmp/) | 22/22 โ
| Stable |
| **Tauri** (Rust) | [`sdks/tauri`](sdks/tauri/) | 23/24 โ
| Stable |
| **.NET MAUI** | [`sdks/dotnet-maui`](sdks/dotnet-maui/) | 23/24 โ
| Stable |
| **React Native** | [`sdks/react-native`](sdks/react-native/) | 24/24 โ
| Stable |
> **181/183 tests passing** across all platforms (99% pass rate)
Each SDK README has platform-specific setup instructions. The same CLI and MCP tools work for all platforms.
Platform setup examples
**Web** โ add one script tag:
```html
FlutterSkill.start({ port: 50000 });
```
**React Native** โ npm install:
```bash
npm install flutter-skill
```
```js
import FlutterSkill from 'flutter-skill';
FlutterSkill.start();
```
**iOS (Swift/SwiftUI)** โ Swift Package Manager:
```swift
import FlutterSkill
FlutterSkillBridge.shared.start()
Text("Hello").flutterSkillId("greeting")
Button("Submit") { submit() }.flutterSkillButton("submitBtn")
```
**Android (Kotlin)** โ Gradle:
```kotlin
implementation("com.flutterskill:flutter-skill:0.7.5")
FlutterSkillBridge.start(this)
```
**Electron / Tauri / KMP / .NET** โ see each SDK's README for details.
---
## What Can It Do?
**40+ MCP tools** organized in 4 categories:
### ๐ See the Screen
- `screenshot` โ full app screenshot
- `inspect` โ list all interactive elements
- `get_widget_tree` โ full widget hierarchy
- `find_by_type` โ find by widget type
- `get_text_content` โ extract all text
### ๐ Interact Like a User
- `tap` / `double_tap` / `long_press`
- `enter_text` โ type into fields
- `swipe` / `scroll_to` / `drag`
- `go_back` โ navigate back
- Native: `native_tap`, `native_swipe`
### โ
Verify & Assert
- `assert_text` / `assert_visible`
- `wait_for_element` / `wait_for_gone`
- `get_checkbox_state` / `get_slider_value`
- `assert_element_count`
### ๐ Launch & Control
- `launch_app` โ launch with flavors/defines
- `scan_and_connect` โ find running apps
- `hot_reload` / `hot_restart`
- `list_sessions` / `switch_session`
Full tool reference (40+ tools)
**Launch & Connect:** `launch_app`, `scan_and_connect`, `hot_reload`, `hot_restart`, `list_sessions`, `switch_session`, `close_session`
**Screen:** `screenshot`, `screenshot_region`, `screenshot_element`, `native_screenshot`, `inspect`, `get_widget_tree`, `find_by_type`, `get_text_content`
**Interaction:** `tap`, `double_tap`, `long_press`, `enter_text`, `swipe`, `scroll_to`, `drag`, `go_back`, `native_tap`, `native_input_text`, `native_swipe`
**Assertions:** `assert_text`, `assert_visible`, `assert_not_visible`, `assert_element_count`, `wait_for_element`, `wait_for_gone`, `get_checkbox_state`, `get_slider_value`, `get_text_value`
**Debug:** `get_logs`, `get_errors`, `get_performance`, `get_memory_stats`
---
## Example Workflows
```
"Test login with test@example.com / password123, verify it reaches the dashboard"
"Submit the registration form empty and check that all validation errors appear"
"Navigate through all tabs, screenshot each one, verify back button works"
"Take screenshots of home, profile, and settings โ compare with last time"
```
The AI agent figures out the steps. No test code needed.
---
## Native Platform Support
Flutter Skill sees through native dialogs that Flutter can't โ permission popups, photo pickers, share sheets:
| Capability | iOS Simulator | Android Emulator |
|-----------|--------------|-----------------|
| Screenshot | `xcrun simctl` | `adb screencap` |
| Tap | macOS Accessibility | `adb input tap` |
| Text input | Pasteboard + Cmd+V | `adb input text` |
| Swipe | Accessibility scroll | `adb input swipe` |
No external tools needed โ uses built-in OS capabilities.
---
## Troubleshooting
| Problem | Fix |
|---------|-----|
| "Not connected" | `flutter-skill scan_and_connect` to auto-find apps |
| "Unknown method" | `flutter pub add flutter_skill` then restart (not hot reload) |
| No VM Service URI | Add `--vm-service-port=50000` to launch args |
| Claude Code priority | Run `flutter_skill setup` for priority rules |
๐ **Full docs:** [Usage Guide](docs/USAGE_GUIDE.md) ยท [Architecture](docs/ARCHITECTURE.md) ยท [Troubleshooting](docs/TROUBLESHOOTING.md) ยท [Flutter 3.x Fix](docs/FLUTTER_3X_FIX.md)
---
## Links
๐ฆ **Install**
- [pub.dev](https://pub.dev/packages/flutter_skill)
- [npm](https://www.npmjs.com/package/flutter-skill)
- [Homebrew](https://github.com/ai-dashboad/homebrew-flutter-skill)
๐ **IDE Extensions**
- [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=ai-dashboad.flutter-skill)
- [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/29991-flutter-skill)
๐ **Docs**
- [Roadmap](docs/ROADMAP.md)
- [Changelog](CHANGELOG.md)
- [Architecture](docs/ARCHITECTURE.md)
---
If flutter-skill saves you time, โญ star it on GitHub!
GitHub Sponsors ยท Buy Me a Coffee
MIT License