Chuyển đến nội dung chính

flutter-skill: let an AI agent drive your running app

flutter-skill is an MCP server that gives any AI agent eyes and hands inside your running app — 10 platforms, no test code. 360★, MIT, last pushed 2026-08-21.

What is flutter-skill?

Writing end-to-end tests is painful; maintaining them is worse. Page Objects rot, selectors break, and the suite ends up describing last quarter’s UI.

flutter-skill takes the other route. It exposes your running app to an AI agent over the Model Context Protocol, so the agent can see the widget tree, tap buttons, type text, scroll, navigate and take screenshots. You describe the intent in English:

“Test the checkout flow with an empty cart, then add 3 items and complete the purchase.”

No Page Objects, no XPath, no selectors.

The Flutter package is flutter_skill (0.9.36 on pub.dev), but the same MCP server drives React Native, Electron, Tauri, Android/Kotlin, KMP Desktop, .NET MAUI, iOS/UIKit, any website, and Chrome over CDP with no SDK at all.

Why it matters in 2026

Two design decisions make this more than a demo.

The snapshot is a tree, not a picture. snapshot() returns a structured accessibility/element tree rather than an image, which the project measures at 87–99% fewer tokens than sending screenshots to the model. If you have ever watched an agent burn its context window on PNGs, you know why that matters — it is the difference between an agent that explores twelve screens and one that runs out of room on the third.

It talks to the runtime, not through a driver. The published benchmarks put tap and enter_text at 1–2 ms and snapshot at 2–29 ms depending on platform, against the 50–100 ms typical of WebDriver-mediated automation. Numbers from a project’s own README always deserve a sceptical eye, but the architecture backs the claim: there is no WebDriver or CDP indirection in the Flutter path.

There are two modes. server speaks MCP over stdio for IDE integration and exposes 253 tools that vary per page. serve runs an HTTP server for CI and scripting, with a CLI client:

flutter-skill serve https://your-app.com
flutter-skill tap "Login"
flutter-skill snap

Getting started

Install the server:

npm install -g flutter-skill

Point your agent at it:

{
  "mcpServers": {
    "flutter-skill": {
      "command": "flutter-skill",
      "args": ["server"]
    }
  }
}

That block goes in .cursor/mcp.json, claude_desktop_config.json, .vscode/mcp.json or ~/.codeium/windsurf/mcp_config.json depending on your tool.

Then two lines in your app:

import 'package:flutter_skill/flutter_skill.dart';

void main() {
  if (kDebugMode) FlutterSkillBinding.ensureInitialized();
  runApp(const MyApp());
}

Keep the kDebugMode guard. A release build should never carry a binding that lets an external process drive the UI.

Homebrew, Scoop, Docker, dart pub global activate flutter_skill, VS Code and JetBrains plugins are all available too, and flutter-skill init auto-detects and patches an existing app.

When should you use flutter-skill?

  • you want exploratory testing — “walk every screen and tell me what breaks” — without writing it
  • you are already using Claude Code, Cursor or Copilot and want it to verify its own UI changes
  • you maintain apps on several platforms and want one automation surface across them
  • your agent keeps running out of context on screenshots

Where it falls short

Version 0.9.36 and 98.8% of a self-authored test suite are not the same thing as production maturity. The test scores in the README are the project grading its own homework against its own sample app; treat them as a signal of effort, not of coverage on your app.

More fundamentally, agent-driven testing is not deterministic. The same prompt will not produce the same 28 actions twice, which makes it excellent at finding bugs and poor at proving one stays fixed. It complements integration_test and golden tests; it does not replace them. Anyone planning to delete their regression suite should not.

The security surface deserves a thought too. You are opening a channel that lets an external process read and drive your UI. In debug builds on your own machine that is fine. Make sure it is never anywhere else.

And 10 platforms means 10 SDKs at 10 different levels of polish — Flutter is the flagship and scores 188/195; iOS is listed with 19 tests. Check the platform you actually care about.

Alternatives worth comparing

Frequently asked questions

How much code do I have to add to my Flutter app?

Two lines. import 'package:flutter_skill/flutter_skill.dart'; and if (kDebugMode) FlutterSkillBinding.ensureInitialized(); at the top of main(). Guard it with kDebugMode so the binding never ships in a release build.

Which AI tools can drive it?

Any MCP-compatible agent. The README lists Cursor, Claude Desktop, Windsurf, VS Code Copilot, Cline, Continue.dev and OpenClaw, each with the config file it expects. The server block itself is the same: flutter-skill server.

Why is it faster than Playwright or Appium?

It talks to the app runtime directly rather than through WebDriver or CDP indirection. The project’s own benchmarks put a tap at 1–2 ms against the 50–100 ms typical of browser automation — worth verifying on your own app rather than taking on faith.

Does it replace integration_test?

No. Agent-driven exploration is excellent at finding bugs and terrible at proving a fix stays fixed, because the same prompt does not produce the same run twice. Keep deterministic tests for regressions and use flutter-skill for exploration.


Part of FlutterCook — hands-on guides to the best open-source Flutter libraries, UI kits, and apps. Explore the live GitHub trends or browse YouTube guides.


Originally published on FlutterCook. Read the latest version there — that copy is the one kept up to date.

Nhận xét

Bài đăng phổ biến từ blog này

5 concepts every Flutter dev should know

  Phụ lục: State management architecture Testing IDE Shortcuts Platform channel Maintaining a project Tôi đã làm việc với Flagship trong một thời gian dài, và đây là những điều mà tôi phát hiện ra là điều cần phải có đối với bất kỳ nhà phát triển Flagship nào, về tổng thể nó sẽ khiến bạn trở thành một nhà phát triển Flagship giỏi trong thời gian dài. 1. State management architecture Đây là một trong những chủ đề quan trọng nhất trong cộng đồng thiết bị rung, nó khá quan trọng nếu bạn muốn duy trì một dự án rung kích thước trung bình hoặc lớn. Nó sẽ giúp tạo một dự án suôn sẻ và thêm các tính năng mới một cách hoàn hảo.  2. Testing Đây là một chủ đề duy nhất mà tôi không hiểu tại sao nó lại quan trọng trước đó trong sự nghiệp của tôi, nhưng khi tôi tiến lên trong sự nghiệp của mình và có kinh nghiệm với nhiều dự án và vấn đề xảy ra trong môi trường sản xuất. Tôi đã nhận ra một cách khó khăn, tại sao điều này lại quan trọng như vậy. Nếu bạn vẫn muốn có thêm lý do để cân nhắc thử...

Thiết kế giao diện với DotNetBar (Phần 1)

Đây là phiên bản DotNetBar hỗ trợ C# và Visual Basic https://www.dropbox.com/s/wx80jpvgnlrmtux/DotNetBar.rar  , phiên bản này hỗ trợ giao diện Metro cực kỳ “dễ thương” Các bạn load về và cài đặt, khi cài đặt xong sẽ có source code mẫu của tất cả các control. Để sử dụng được các control của DotNetBar các bạn nhớ add item vào controls box. Thiết kế giao diện với DotNetBar, giao diện sẽ rất đẹp. Link các video hướng dẫn chi tiết cách sử dụng và coding: http://www.devcomponents.com/dotnetbar/movies.aspx Hiện tại DotNetBar có rất nhiều công cụ cực mạnh, trong đó có 3 công cụ dưới đây: DotNetBar for Windows Forms Requires with Visual Studio 2003, 2005, 2008, 2010 or 2012.   DotNetBar for WPF Requires with Visual Studio 2010 or 2012 and Windows Presentation Foundation.   DotNetBar for Silverlight Requires with Visual Studio 2010 or 2012 and Silverlight. Dưới đây là một số hình ảnh về các control trong DotnetBar.   Metro User Interface  controls with Metro Tiles, toolba...

Announcing Flutter 2

  Phụ lục: Flutter on the web Flutter 2 on desktops, foldables, and embedded devices The growing Flutter ecosystem Dart: The secret sauce behind Flutter Flutter 2: Available now Hôm nay, chúng tôi sẽ công bố Flutter 2: một bản nâng cấp lớn cho Flutter cho phép các nhà phát triển tạo các ứng dụng đẹp, nhanh chóng và di động cho bất kỳ nền tảng nào. Với Flutter 2, bạn có thể sử dụng cùng một cơ sở mã để gửi các ứng dụng gốc cho năm hệ điều hành: IOS, Android, Windows, macOS và Linux; cũng như trải nghiệm web nhắm mục tiêu các trình duyệt như Chrome, Firefox, Safari hoặc Edge. Flutter thậm chí có thể được nhúng vào ô tô, TV và thiết bị gia dụng thông minh, mang đến trải nghiệm di động và lan tỏa nhất cho thế giới điện toán xung quanh. Mục tiêu của chúng tôi là thay đổi cơ bản cách các nhà phát triển nghĩ về việc xây dựng ứng dụng, bắt đầu không phải với nền tảng bạn đang nhắm mục tiêu mà là với trải nghiệm bạn muốn tạo. Flutter cho phép bạn tạo ra những trải nghiệm tuyệt đẹp trong đó ...