flutter-skill

Give any AI agent eyes and hands inside any running app. 10 platforms. Zero test code. One MCP server.

Stars pub.dev npm CI
npm install -g flutter-skill

Getting Started

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.

iOS (Swift)

npm install -g flutter-skill
# Add sdks/ios to your Xcode project
# Run your app on simulator
flutter-skill server

Android (Kotlin)

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.

10 Platforms, One Tool

Most testing tools work on 1-2 platforms. flutter-skill works on 10.

PlatformSDKScore
Flutter (iOS/Android/Web)flutter_skill188/195
React Nativesdks/react-native75/75
Electronsdks/electron75/75
Tauri (Rust)sdks/tauri75/75
Android (Kotlin)sdks/android74/75
KMP Desktopsdks/kmp75/75
.NET MAUIsdks/dotnet-maui75/75
iOS (Swift/UIKit)sdks/ios19/19
Web (any website)sdks/web-
Web CDP (zero-config)No SDK needed141/156

MCP Tools

253
Dynamic tools per page

Test Score

98.8%
656/664 tests passing

Two Modes

Choose the mode that fits your workflow.

server โ€” MCP stdio

For 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 REST

For 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

Browser Setup

flutter-skill connects to any Chromium-based browser via CDP. Choose your browser and copy the commands.

๐Ÿš€ Quick Start (Auto-launch)

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

๐ŸŒ System Chrome

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

๐Ÿงช Chrome for Testing (CfT)

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

๐Ÿ–ฅ๏ธ Microsoft Edge

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

๐Ÿฆ Brave Browser

# macOS
/Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser \
  --remote-debugging-port=9222

๐Ÿณ Docker (Headless)

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

โš™๏ธ Chrome Launch Options

FlagDescription
--remote-debugging-port=9222Enable CDP on port 9222 (required)
--user-data-dir=PATHPersistent profile (keeps login sessions)
--headless=newHeadless mode (no UI window)
--no-sandboxRequired in Docker/CI
--disable-gpuDisable GPU acceleration (CI)
--window-size=1920,1080Set viewport size
--proxy-server=host:portRoute through proxy
--ignore-certificate-errorsSkip SSL verification

๐Ÿ”— flutter-skill serve Options

FlagDefaultDescription
--port3000HTTP API port
--chrome-port9222Chrome CDP port to connect to
--no-launchfalseDon't auto-launch Chrome (connect to existing)
--headlessfalseLaunch Chrome in headless mode
--proxy-Proxy URL for Chrome
--ignore-sslfalseIgnore SSL certificate errors
--max-tabs5Maximum open tabs

CLI Client Reference

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
CommandDescription
nav <url>Navigate to URL
snapAccessibility 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
titleGet page title
textGet visible text
hover <text>Hover element
upload <sel> <file>Upload file
toolsList all tools
call <tool> [json]Call any tool directly
wait [ms]Wait (default 1000ms)

Full CLI client documentation →

IDE Setup

One config line. Works with all MCP-compatible AI tools.

Cursor

Add to .cursor/mcp.json

Claude Desktop

Add to claude_desktop_config.json

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json

VSCode Copilot

Add to .vscode/mcp.json

Cline

VSCode Settings → Cline → MCP

OpenClaw

Skill or MCP config. Also supports serve mode.

Continue.dev

Add to .continue/config.json

Full IDE setup guide →

Documentation

Detailed guides for every aspect of flutter-skill.

Usage Guide

Complete walkthrough of all features and workflows.

CLI Client

Command-line client reference for serve mode.

IDE Setup

Configuration guides for all supported AI platforms.

Architecture

Technical deep-dive into how flutter-skill works.

Troubleshooting

Common issues and solutions.

Changelog

Version history and release notes.