Give any AI agent eyes and hands inside any running app. 10 platforms. Zero test code. One MCP server.
Choose your use case. Each path is one or two commands โ you'll be running in under 60 seconds.
Automate any website with zero config โ no SDK, no code changes.
# Install + run (that's it!)
npm install -g flutter-skill
flutter-skill serve https://your-website.com
Now use the CLI to interact:
flutter-skill snap # See the page (accessibility tree) flutter-skill tap "Login" # Click a button flutter-skill type "hello" # Type text flutter-skill screenshot # Take a screenshot
Add to Cursor, Claude Desktop, Windsurf, VSCode Copilot, or any MCP-compatible AI.
# Step 1: Install
npm install -g flutter-skill
// Step 2: Add to your MCP config { "mcpServers": { "flutter-skill": { "command": "flutter-skill", "args": ["server"] } } }
Then just ask your AI: "Open https://example.com, find the login button, and test it"
Add the SDK to your Flutter app for deep integration (widget tree, semantics, gestures).
# Step 1: Install CLI + add SDK to your app
npm install -g flutter-skill
flutter pub add flutter_skill --dev
// Step 2: Add 2 lines to main.dart import 'package:flutter_skill/flutter_skill.dart'; void main() { if (kDebugMode) FlutterSkillBinding.ensureInitialized(); runApp(MyApp()); }
# Step 3: Run your app + connect
flutter run
flutter-skill server
Test native iOS/Android apps. Requires the platform SDK in your app.
npm install -g flutter-skill # Add sdks/ios to your Xcode project # Run your app on simulator flutter-skill server
npm install -g flutter-skill # Add sdks/android to your Gradle project # Run your app on emulator flutter-skill server
Also supports: React Native, Electron, Tauri, KMP, .NET MAUI. See Platforms for details.
Most testing tools work on 1-2 platforms. flutter-skill works on 10.
| Platform | SDK | 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 |
Choose the mode that fits your workflow.
server โ MCP stdioFor IDE and AI agent integration. Communicates via MCP (JSON-RPC over stdio). 253 dynamic tools. Auto-launches Chrome.
Best for: Cursor, Claude Desktop, VSCode Copilot, Windsurf, Cline
serve โ HTTP RESTFor CLI, automation, and CI/CD pipelines. HTTP API on configurable port. 246 generic tools. Connects to existing Chrome.
Best for: OpenClaw, scripts, CI/CD, remote access
flutter-skill connects to any Chromium-based browser via CDP. Choose your browser and copy the commands.
flutter-skill can auto-launch a headless Chrome โ zero setup required.
# Auto-launches Chrome, opens the URL, starts the MCP server
flutter-skill serve https://your-app.com --port=3000
Use your regular Chrome with existing login sessions.
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir=$HOME/.flutter-skill/chrome-profile
# Linux
google-chrome --remote-debugging-port=9222 \
--user-data-dir=$HOME/.flutter-skill/chrome-profile
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" ^
--remote-debugging-port=9222 ^
--user-data-dir=%USERPROFILE%\.flutter-skill\chrome-profile
Then connect flutter-skill:
flutter-skill serve https://your-app.com --port=3000 --chrome-port=9222 --no-launch
Isolated Chrome build designed for automation. Recommended for CI/CD.
# Install via npx
npx @anthropic-ai/cft install
# Or download directly (macOS ARM64 example)
npx @anthropic-ai/cft install --platform=mac-arm64
Edge is Chromium-based and supports CDP.
# macOS
/Applications/Microsoft\ Edge.app/Contents/MacOS/Microsoft\ Edge \
--remote-debugging-port=9222
# Windows
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" ^
--remote-debugging-port=9222
# macOS
/Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser \
--remote-debugging-port=9222
For CI/CD and server environments.
# Run headless Chrome in Docker
docker run -d --name chrome -p 9222:9222 \
zenika/alpine-chrome \
--no-sandbox --remote-debugging-address=0.0.0.0 \
--remote-debugging-port=9222
# Connect from host
flutter-skill serve https://your-app.com --chrome-port=9222 --no-launch
| Flag | Description |
|---|---|
--remote-debugging-port=9222 | Enable CDP on port 9222 (required) |
--user-data-dir=PATH | Persistent profile (keeps login sessions) |
--headless=new | Headless mode (no UI window) |
--no-sandbox | Required in Docker/CI |
--disable-gpu | Disable GPU acceleration (CI) |
--window-size=1920,1080 | Set viewport size |
--proxy-server=host:port | Route through proxy |
--ignore-certificate-errors | Skip SSL verification |
| Flag | Default | Description |
|---|---|---|
--port | 3000 | HTTP API port |
--chrome-port | 9222 | Chrome CDP port to connect to |
--no-launch | false | Don't auto-launch Chrome (connect to existing) |
--headless | false | Launch Chrome in headless mode |
--proxy | - | Proxy URL for Chrome |
--ignore-ssl | false | Ignore SSL certificate errors |
--max-tabs | 5 | Maximum open tabs |
Command-line access to a running flutter-skill serve instance.
# Start server flutter-skill serve https://your-app.com # Navigation flutter-skill nav https://google.com # Accessibility tree (99% fewer tokens than screenshot) flutter-skill snap # Screenshot flutter-skill screenshot /tmp/ss.jpg # Interaction flutter-skill tap "Login" flutter-skill type "hello@example.com" flutter-skill key Enter # JavaScript flutter-skill eval "document.title" # All tools flutter-skill 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 all tools |
call <tool> [json] | Call any tool directly |
wait [ms] | Wait (default 1000ms) |
One config line. Works with all MCP-compatible AI tools.
Add to .cursor/mcp.json
Add to claude_desktop_config.json
Add to ~/.codeium/windsurf/mcp_config.json
Add to .vscode/mcp.json
VSCode Settings → Cline → MCP
Skill or MCP config. Also supports serve mode.
Add to .continue/config.json
Detailed guides for every aspect of flutter-skill.
Complete walkthrough of all features and workflows.
Command-line client reference for serve mode.
Configuration guides for all supported AI platforms.
Technical deep-dive into how flutter-skill works.
Common issues and solutions.
Version history and release notes.