Flutter Skill

io.github.telsav由 GitHub 帳號 telsav 發布v0.7.6更新於 Oct 24, 2026

AI E2E testing bridge — give AI eyes and hands inside any app. 8 platforms, 40+ tools.

已驗證STDIO僅桌面瀏覽器自動化開發者工具

概覽

AI 產生的概覽

讓 AI 助理透過點擊、輸入、捲動與檢查介面,驅動並測試正在執行的應用程式與網站。

可以做什麼
把 AI 助理連接到正在執行的應用程式或瀏覽器,讓它能檢視並操作介面:截圖、無障礙樹快照、元素檢查、點擊、文字輸入、捲動、導覽與斷言。另提供視覺回歸、網路模擬、API 測試、無障礙與 i18n 稽核、效能統計,以及匯出成其他測試框架的錄製功能。支援面向 IDE 助理的 MCP stdio 模式與面向 CLI 及 CI 的 HTTP serve 模式。
適用情境
適合想用自然語言讓助理探索或測試應用程式與網站、而不必撰寫測試程式碼的情境,涵蓋 Flutter、React Native、Electron、Tauri、Android、iOS、KMP、.NET MAUI 以及一般網頁。也適合 CI 流程與透過 CLI 進行的腳本化瀏覽器自動化。
執行需求
透過 npm(npm install -g flutter-skill)或 Homebrew、Scoop、Docker、pub.dev、IDE 外掛安裝的本機程序。npm 套件需要 Node.js。應用程式需整合對應平台 SDK,或可透過 CDP 存取;HTTP serve 模式會連接既有的 Chrome。serve 模式可選用 FS_PORT 與 FS_HOST 環境變數。
安裝前請注意
助理可以在你的應用程式內執行動作:點擊、輸入、導覽、上傳檔案、透過 eval 執行 JavaScript、設定 cookie 與本機儲存、模擬或封鎖網路請求,並可啟動、熱重載或停止應用程式。截圖、頁面內容與日誌會傳送給你所連接的 AI 模型。測試憑證與工作階段資料可能經過助理,應避免使用正式環境帳號與真實使用者資料。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Flutter Skill,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

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

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] [License]

Demo • Quick Start • AI Platforms • Platforms • vs Others • Docs

🚀 Zero config. Zero test code. Just talk to your AI.

If this saves you time, please consider starring the repo ⭐ — it helps others find it!


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)

bash
npm install -g flutter-skill

2. Add to your AI (copy-paste into MCP config)

json
{  "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)

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, explore every screen, and report any bugs"

That's it. Zero configuration. Zero test code. Works in under 60 seconds.

📦 More install methods (Homebrew, Scoop, Docker, IDE, Agent Skill)
MethodCommand
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
VSCodeExtensions → "Flutter Skill"
JetBrainsPlugins → "Flutter Skill"
Agent Skillnpx skills add ai-dashboad/flutter-skill
Zero-configflutter-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:

json
{  "mcpServers": {    "flutter-skill": {      "command": "flutter-skill",      "args": ["server"]    }  }}
PlatformConfig FileStatus
Cursor.cursor/mcp.json✅
Claude Desktopclaude_desktop_config.json✅
Windsurf~/.codeium/windsurf/mcp_config.json✅
VSCode Copilot.vscode/mcp.json✅
ClineVSCode Settings → Cline → MCP✅
OpenClawSkill or MCP config✅
Continue.dev.continue/config.json✅

HTTP Serve Mode (CLI & Automation)

For standalone browser automation, CI/CD pipelines, or remote access:

bash
# Start serverflutter-skill serve https://your-app.com
# Use CLI client commandsflutter-skill nav https://google.comflutter-skill snap                    # Accessibility tree (99% fewer tokens)flutter-skill screenshot /tmp/ss.jpgflutter-skill tap "Login"flutter-skill type "[email protected]"flutter-skill eval "document.title"flutter-skill tools                   # List all available 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 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 caseIDE / AI agent integrationCLI / automation / CI/CD
ProtocolMCP (JSON-RPC over stdio)HTTP REST
Tools253 (dynamic per page)246 (generic)
BrowserAuto-launches ChromeConnects to existing Chrome
Best forCursor, Claude, VSCodeOpenClaw, 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.

PlatformSDKTest Score
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 (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:

OperationWeb (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——

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:

SiteToolsTotal Timesnapshotscreenshotcount_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

Total time includes page load. Tool execution is consistently sub-100ms even on heavy DOM sites.


Why Not Playwright / Appium / Detox?

flutter-skillPlaywright MCPAppiumDetox
MCP tools253~33❌❌
Platforms101 (web)MobileReact Native
Setup time30 secMinutesHoursHours
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✅ NativePartialPartial❌
Desktop apps✅✅❌❌

| AI page understanding | ✅ AX Tree | ❌ Screenshots | ❌ | ❌ | | Boundary/security test | ✅ 13 payloads | ❌ | ❌ | ❌ | | Batch actions | ✅ 5+/call | 1/call | 1/call | 1/call |

flutter-skill is the only AI-native E2E testing tool that works across mobile, web, and desktop — with 7× more tools than the nearest competitor.


CLI Commands

bash
# 🤖 AI autonomous exploration — finds bugs automaticallyflutter-skill explore https://my-app.com --depth=3
# 🐒 Monkey/fuzz testing — random actions, crash detectionflutter-skill monkey https://my-app.com --actions=100 --seed=42
# 🚀 Parallel multi-platform testingflutter-skill test --url https://my-app.com --platforms web,electron,android
# 🌐 Zero-config WebMCP server — any website becomes testableflutter-skill serve https://my-app.com

🧠 AI-Native: 95% Fewer Tokens

Most AI testing tools send screenshots to the LLM — each one costs ~4,000 tokens.

flutter-skill uses Chrome's Accessibility Tree to give your AI a compact semantic summary of any page:

json
// 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}

Then batch multiple actions in one call:

json
// 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": "[email protected]"},  {"type": "tap", "target": "button:Continue"}]}

Result: Your AI agent tests faster, costs less, and understands pages better than screenshot-based tools.

flutter-skillScreenshot-based tools
Tokens per page~200~4,000
Actions per call5+1
Understands semantics✅ roles, names, state❌ pixels only
Works with Shadow DOM✅❌

What It Can Do

👀 See

  • screenshot — capture the screen
  • inspect_interactive — all tappable/typeable elements with semantic refs
  • find_element / wait_for_element
  • get_elements — full element tree

👆 Interact

  • tap / long_press / swipe / drag
  • enter_text / set_text / clear_text
  • scroll — all directions
  • go_back / press_key

🔍 Inspect (v0.8.0)

  • Semantic refs: button:Login, input:Email
  • Stable across UI changes
  • tap(ref: "button:Submit")
  • 7 roles: button, input, toggle, slider, select, link, item

🚀 Control

  • launch_app — launch with flavors
  • hot_reload / hot_restart
  • get_logs / get_errors
  • scan_and_connect — auto-find apps
253 tools — full reference

AI Explore: page_summary, explore_actions, boundary_test, explore_report

Launch & Connect: launch_app, scan_and_connect, connect_cdp, hot_reload, hot_restart, list_sessions, switch_session, close_session, disconnect, stop_app

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

Interaction: 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

Smart Testing: smart_tap, smart_enter_text, smart_assert (self-healing with fuzzy match)

Assertions: 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

Visual Regression: visual_baseline_save, visual_baseline_compare, visual_baseline_update, visual_regression_report, visual_verify, visual_diff, compare_screenshot

Network Mock: mock_api, mock_clear, record_network, replay_network, intercept_requests, clear_interceptions, block_urls, http_request

API Testing: api_request, api_assert

Coverage & Reliability: coverage_start, coverage_stop, coverage_report, coverage_gaps, retry_on_fail, stability_check

Data-Driven: test_with_data, generate_test_data

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

Accessibility: accessibility_audit, a11y_full_audit, a11y_tab_order, a11y_color_contrast, a11y_screen_reader

i18n: set_locale, verify_translations, i18n_snapshot

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

Session: save_session, restore_session, session_diff

Recording & Export: record_start, record_stop, record_export (Playwright, Cypress, XCUITest, Espresso, Detox, Maestro, +5 more), video_start, video_stop

Auth: auth_inject_session, auth_biometric, auth_otp, auth_deeplink

CDP Browser: 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

Debug: get_logs, get_errors, get_console_messages, get_network_requests, diagnose, diagnose_project, reset_app


Platform Setup

Flutter (iOS / Android / Web)
yaml
dependencies:  flutter_skill: ^0.9.37
dart
import 'package:flutter_skill/flutter_skill.dart';
void main() {  if (kDebugMode) FlutterSkillBinding.ensureInitialized();  runApp(MyApp());}
React Native
bash
npm install flutter-skill-react-native
js
import FlutterSkill from 'flutter-skill-react-native';FlutterSkill.start();
Electron
bash
npm install flutter-skill-electron
js
const { FlutterSkillBridge } = require('flutter-skill-electron');FlutterSkillBridge.start(mainWindow);
iOS (Swift)
swift
// Swift Package Manager: FlutterSkillSDKimport FlutterSkillFlutterSkillBridge.shared.start()
Text("Hello").flutterSkillId("greeting")
Android (Kotlin)
kotlin
implementation("com.flutterskill:flutter-skill:0.8.0")
FlutterSkillBridge.start(this)
Tauri (Rust)
toml
[dependencies]flutter-skill-tauri = "0.8.0"
KMP Desktop

Add Gradle dependency — see sdks/kmp for details.

.NET MAUI

Add NuGet package — see sdks/dotnet-maui for details.


Example Prompts

Just tell your AI what to test:

PromptWhat happens
"Test login with wrong password"Screenshots → enters creds → taps login → verifies error
"Explore every screen and report bugs"Systematically navigates all screens, tests all elements
"Fill registration with edge cases"Tests emoji 🌍, long strings, empty fields, special chars
"Compare checkout flow on iOS and Android"Runs same test on both platforms, compares screenshots
"Take screenshots of all 5 tabs"Taps each tab, captures state

Contributing

See CONTRIBUTING.md for guidelines.

bash
git clone https://github.com/ai-dashboad/flutter-skillcd flutter-skilldart pub getdart run bin/flutter_skill.dart server  # Start MCP server

Links

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

⭐ If flutter-skill saves you time, star it so others can find it too!

MIT License © 2025

來源:README.md,提交 c31a08e

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.7.6最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分