flutter-skill 0.7.4 → 0.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,100 +1,68 @@
1
- # Flutter Skill
1
+ <p align="center">
2
+ <img src="assets/social-preview.jpg" alt="flutter-skill" width="640">
3
+ </p>
4
+
5
+ <h1 align="center">flutter-skill</h1>
6
+
7
+ <p align="center">
8
+ <strong>Give your AI eyes and hands inside any app.</strong><br>
9
+ E2E testing bridge for Claude, Cursor, Windsurf — across 8 platforms.
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="https://pub.dev/packages/flutter_skill"><img src="https://img.shields.io/pub/v/flutter_skill.svg" alt="pub.dev"></a>
14
+ <a href="https://www.npmjs.com/package/flutter-skill"><img src="https://img.shields.io/npm/v/flutter-skill.svg" alt="npm"></a>
15
+ <a href="https://github.com/ai-dashboad/flutter-skill/actions"><img src="https://img.shields.io/github/actions/workflow/status/ai-dashboad/flutter-skill/ci.yml?label=tests" alt="CI"></a>
16
+ <a href="https://github.com/ai-dashboad/flutter-skill/stargazers"><img src="https://img.shields.io/github/stars/ai-dashboad/flutter-skill?style=social" alt="Stars"></a>
17
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a>
18
+ <a href="https://skills.sh/ai-dashboad/flutter-skill/flutter-skill-testing"><img src="https://img.shields.io/badge/skills.sh-agent%20skill-black" alt="Agent Skill"></a>
19
+ </p>
20
+
21
+ <p align="center">
22
+ <a href="#quick-start">Quick Start</a> •
23
+ <a href="#platforms">Platforms</a> •
24
+ <a href="#what-can-it-do">Features</a> •
25
+ <a href="#install">Install</a> •
26
+ <a href="docs/USAGE_GUIDE.md">Docs</a>
27
+ </p>
2
28
 
3
- > **AI-Powered End-to-End Testing for Flutter Apps**
29
+ ---
4
30
 
5
- ![Version](https://img.shields.io/pub/v/flutter_skill.svg)
6
- ![npm](https://img.shields.io/npm/v/flutter-skill.svg)
7
- ![License](https://img.shields.io/badge/license-MIT-blue.svg)
8
- ![Platform](https://img.shields.io/badge/Platform-Flutter%20%7C%20Web%20%7C%20React%20Native%20%7C%20iOS%20%7C%20Android-02569B)
31
+ <p align="center">
32
+ <strong>🎬 AI tests a full TikTok clone — 28 actions, zero test code</strong>
33
+ </p>
9
34
 
10
- **Flutter Skill** is an E2E testing bridge that gives AI agents (Claude Code, Cursor, Windsurf, etc.) full control over running apps across **Flutter, Web, React Native, iOS, and Android**. Describe what you want to test in natural language, and the AI sees the screen, taps buttons, fills forms, scrolls, and verifies results - just like a human tester would.
35
+ https://github.com/user-attachments/assets/d4617c73-043f-424c-9a9a-1a61d4c2d3c6
11
36
 
12
37
  ```
13
- You: "Test the login flow - enter test@example.com and password123, tap Login, verify Dashboard appears"
38
+ You: "Test the login flow enter test@example.com and password123, tap Login, verify Dashboard"
14
39
 
15
40
  AI Agent:
16
- 1. screenshot() → sees the login screen
17
- 2. enter_text("email") → types the email
18
- 3. enter_text("password") → types the password
19
- 4. tap("Login") → taps the button
41
+ 1. screenshot() → sees the login screen
42
+ 2. enter_text("email") → types the email
43
+ 3. enter_text("pass") → types the password
44
+ 4. tap("Login") → taps the button
20
45
  5. wait_for_element("Dashboard") → confirms navigation
21
- 6. screenshot() → captures the result
22
46
  ✅ Login flow verified!
23
47
  ```
24
48
 
25
- ## Why Flutter Skill?
26
-
27
- | Traditional E2E Testing | Flutter Skill |
28
- |------------------------|---------------|
29
- | Write Dart test code manually | Describe tests in natural language |
30
- | Learn WidgetTester API | AI handles the automation |
31
- | Maintain brittle test scripts | AI adapts to UI changes |
32
- | Debug test failures manually | AI sees screenshots and self-corrects |
33
- | Setup takes hours | Setup takes 2 minutes |
34
-
35
- **Flutter Skill is for you if:**
36
- - You want E2E tests without writing test code
37
- - You're using AI coding agents (Claude Code, Cursor, Windsurf)
38
- - You want to automate QA workflows with natural language
39
- - You need to test real app behavior on simulators/emulators
49
+ **No test code. No selectors. Just tell the AI what to test.**
40
50
 
41
51
  ---
42
52
 
43
- ## Quick Start (2 minutes)
53
+ ## Quick Start
44
54
 
45
- ### 1. Install
55
+ **1. Install**
46
56
 
47
57
  ```bash
48
- # One-click install (macOS/Linux) - recommended
49
- curl -fsSL https://raw.githubusercontent.com/ai-dashboad/flutter-skill/main/install.sh | bash
50
-
51
- # Or: npm (all platforms)
52
- npm install -g flutter-skill
53
-
54
- # Or: Homebrew (macOS/Linux)
55
- brew tap ai-dashboad/flutter-skill && brew install flutter-skill
56
-
57
- # Or: Dart
58
- dart pub global activate flutter_skill
58
+ npm install -g flutter-skill # npm (recommended)
59
+ # or: brew install ai-dashboad/flutter-skill/flutter-skill
60
+ # or: dart pub global activate flutter_skill
61
+ # or: npx skills add ai-dashboad/flutter-skill # Agent Skill (Claude Code, Cursor, Copilot, Cline, etc.)
59
62
  ```
60
63
 
61
- <details>
62
- <summary>More installation methods (Windows, Docker, IDE extensions...)</summary>
63
-
64
- | Method | Command | Platform |
65
- |--------|---------|----------|
66
- | **One-click** | `curl -fsSL .../install.sh \| bash` | macOS/Linux |
67
- | **Windows** | `iwr .../install.ps1 -useb \| iex` | Windows |
68
- | **npm** | `npm install -g flutter-skill` | All |
69
- | **Homebrew** | `brew install ai-dashboad/flutter-skill/flutter-skill` | macOS/Linux |
70
- | **Scoop** | `scoop install flutter-skill` | Windows |
71
- | **Docker** | `docker pull ghcr.io/ai-dashboad/flutter-skill` | All |
72
- | **pub.dev** | `dart pub global activate flutter_skill` | All |
73
- | **VSCode** | Extensions -> "Flutter Skill" | All |
74
- | **IntelliJ** | Plugins -> "Flutter Skill" | All |
75
-
76
- </details>
77
-
78
- ### 2. Configure Your AI Agent
79
-
80
- Add to your agent's MCP config:
81
-
82
- **Claude Code** (`~/.claude/settings.json`):
83
- ```json
84
- {
85
- "mcpServers": {
86
- "flutter-skill": {
87
- "command": "flutter-skill",
88
- "args": ["server"]
89
- }
90
- }
91
- }
92
- ```
93
-
94
- <details>
95
- <summary>Cursor, Windsurf, and other agents</summary>
64
+ **2. Add to your MCP config** (Claude Code / Cursor / Windsurf)
96
65
 
97
- **Cursor** (`~/.cursor/mcp.json`):
98
66
  ```json
99
67
  {
100
68
  "mcpServers": {
@@ -106,335 +74,262 @@ Add to your agent's MCP config:
106
74
  }
107
75
  ```
108
76
 
109
- Any MCP-compatible agent uses the same config format.
110
-
111
- </details>
112
-
113
- ### 3. Add to Your Flutter App
114
-
115
- ```yaml
116
- # pubspec.yaml
117
- dependencies:
118
- flutter_skill: ^0.7.4
119
- ```
77
+ **3. Add to your app** (2 lines)
120
78
 
121
79
  ```dart
122
- // main.dart
123
- import 'package:flutter/foundation.dart';
124
80
  import 'package:flutter_skill/flutter_skill.dart';
125
81
 
126
82
  void main() {
127
- if (kDebugMode) {
128
- FlutterSkillBinding.ensureInitialized();
129
- }
83
+ if (kDebugMode) FlutterSkillBinding.ensureInitialized();
130
84
  runApp(MyApp());
131
85
  }
132
86
  ```
133
87
 
134
- > **Tip:** `launch_app` can auto-add this for you. The `kDebugMode` guard ensures it's stripped from release builds.
88
+ **4. Test** just talk to your AI:
135
89
 
136
- ### 4. Start Testing
90
+ > *"Launch my app, tap Sign Up, fill the form, and verify the success screen"*
137
91
 
138
- Just tell your AI agent what to test:
92
+ That's it. Zero configuration.
139
93
 
140
- ```
141
- "Launch my app on iPhone simulator, tap the Sign Up button, fill in the form, and verify the success screen"
142
- ```
94
+ <details>
95
+ <summary><strong>📦 More install methods</strong> (Windows, Docker, IDE extensions)</summary>
96
+
97
+ | Method | Command | Platform |
98
+ |--------|---------|----------|
99
+ | npm | `npm install -g flutter-skill` | All |
100
+ | Homebrew | `brew install ai-dashboad/flutter-skill/flutter-skill` | macOS/Linux |
101
+ | Scoop | `scoop install flutter-skill` | Windows |
102
+ | One-click | `curl -fsSL .../install.sh \| bash` | macOS/Linux |
103
+ | Windows | `iwr .../install.ps1 -useb \| iex` | Windows |
104
+ | Docker | `docker pull ghcr.io/ai-dashboad/flutter-skill` | All |
105
+ | pub.dev | `dart pub global activate flutter_skill` | All |
106
+ | VSCode | Extensions → "Flutter Skill" | All |
107
+ | IntelliJ | Plugins → "Flutter Skill" | All |
108
+ | Agent Skill | `npx skills add ai-dashboad/flutter-skill` | All (28+ agents) |
109
+
110
+ </details>
111
+
112
+ <details>
113
+ <summary><strong>🔧 Zero-config onboarding</strong> (auto-detect & patch your app)</summary>
143
114
 
144
- Or use tools directly:
145
- ```javascript
146
- flutter-skill.launch_app({ project_path: "." })
147
- flutter-skill.inspect() // See all interactive elements
148
- flutter-skill.tap({ text: "Sign Up" }) // Tap by text
149
- flutter-skill.enter_text({ key: "email", text: "user@test.com" })
150
- flutter-skill.screenshot() // Visual verification
115
+ ```bash
116
+ cd your-app/
117
+ flutter-skill init # Detects platform, patches entry point, configures MCP
118
+ flutter-skill demo # Launches built-in demo app to try it out
151
119
  ```
152
120
 
121
+ `init` auto-detects Flutter, iOS, Android, React Native, or Web projects and patches them automatically.
122
+
123
+ </details>
124
+
153
125
  ---
154
126
 
155
- ## Multi-Platform Support
127
+ ## Platforms
156
128
 
157
- Flutter Skill isn't just for Flutter — it works with **5 platforms**, giving AI agents control over any app:
129
+ flutter-skill works across **8 platforms** with a unified bridge protocol:
158
130
 
159
- | Platform | SDK | Status |
160
- |----------|-----|--------|
161
- | **Flutter** (Dart) | Core — `flutter_skill` package | ✅ Stable |
162
- | **Web** (JavaScript) | `sdks/web/flutter-skill.js` | Stable |
163
- | **React Native** | `sdks/react-native/` npm package | Stable |
164
- | **iOS** (Swift/SwiftUI) | `sdks/ios/` Swift Package | Stable |
165
- | **Android** (Kotlin) | `sdks/android/` Gradle dependency | Stable |
131
+ | Platform | SDK | Tests | Status |
132
+ |----------|-----|-------|--------|
133
+ | **Flutter iOS** | `flutter_skill` (pub.dev) | 21/21 | Stable |
134
+ | **Flutter Web** | `flutter_skill` (pub.dev) | 20/20 | Stable |
135
+ | **Electron** | [`sdks/electron`](sdks/electron/) | 24/24 | Stable |
136
+ | **Android** (Kotlin) | [`sdks/android`](sdks/android/) | 24/24 | Stable |
137
+ | **KMP Desktop** | [`sdks/kmp`](sdks/kmp/) | 22/22 | Stable |
138
+ | **Tauri** (Rust) | [`sdks/tauri`](sdks/tauri/) | 23/24 ✅ | Stable |
139
+ | **.NET MAUI** | [`sdks/dotnet-maui`](sdks/dotnet-maui/) | 23/24 ✅ | Stable |
140
+ | **React Native** | [`sdks/react-native`](sdks/react-native/) | 24/24 ✅ | Stable |
166
141
 
167
- ### Web
142
+ > **181/183 tests passing** across all platforms (99% pass rate)
168
143
 
144
+ Each SDK README has platform-specific setup instructions. The same CLI and MCP tools work for all platforms.
145
+
146
+ <details>
147
+ <summary><strong>Platform setup examples</strong></summary>
148
+
149
+ **Web** — add one script tag:
169
150
  ```html
170
151
  <script src="flutter-skill.js"></script>
171
- <script>
172
- FlutterSkill.start({ port: 50000 });
173
- </script>
152
+ <script>FlutterSkill.start({ port: 50000 });</script>
174
153
  ```
175
154
 
176
- ### React Native
177
-
155
+ **React Native** — npm install:
178
156
  ```bash
179
157
  npm install flutter-skill
180
158
  ```
181
-
182
159
  ```js
183
160
  import FlutterSkill from 'flutter-skill';
184
161
  FlutterSkill.start();
185
162
  ```
186
163
 
187
- ### iOS (Swift / SwiftUI)
188
-
189
- Add via Swift Package Manager:
190
- ```
191
- https://github.com/ai-dashboad/flutter-skill (sdks/ios)
192
- ```
193
-
164
+ **iOS (Swift/SwiftUI)** — Swift Package Manager:
194
165
  ```swift
195
166
  import FlutterSkill
196
-
197
- // Initialize in your app
198
167
  FlutterSkillBridge.shared.start()
199
168
 
200
- // Register SwiftUI elements for AI interaction
201
- Text("Hello")
202
- .flutterSkillId("greeting")
203
-
204
- Button("Submit") { submit() }
205
- .flutterSkillButton("submitBtn")
206
-
207
- TextField("Email", text: $email)
208
- .flutterSkillTextField("emailField")
209
- ```
210
-
211
- ### Android (Kotlin)
212
-
213
- ```kotlin
214
- // build.gradle.kts
215
- implementation("com.flutterskill:flutter-skill:0.7.3")
169
+ Text("Hello").flutterSkillId("greeting")
170
+ Button("Submit") { submit() }.flutterSkillButton("submitBtn")
216
171
  ```
217
172
 
173
+ **Android (Kotlin)** — Gradle:
218
174
  ```kotlin
219
- // In your Activity
220
- import com.flutterskill.FlutterSkillBridge
221
-
175
+ implementation("com.flutterskill:flutter-skill:0.7.5")
222
176
  FlutterSkillBridge.start(this)
223
177
  ```
224
178
 
225
- ### Connecting the AI Agent
179
+ **Electron / Tauri / KMP / .NET** — see each SDK's README for details.
226
180
 
227
- Once integrated, **the same CLI and MCP tools work for all platforms**:
228
-
229
- ```bash
230
- flutter_skill inspect # See all UI elements
231
- flutter_skill act tap "login" # Tap a button
232
- flutter_skill act enter_text "email" "user@test.com"
233
- flutter_skill act screenshot # Capture the screen
234
- ```
235
-
236
- All platforms support the same 14 capabilities: inspect, tap, enter_text, scroll, screenshot, get_text, find_element, wait_for_element, and more.
181
+ </details>
237
182
 
238
183
  ---
239
184
 
240
185
  ## What Can It Do?
241
186
 
242
- ### 40+ MCP Tools for Complete App Control
243
-
244
- **Launch & Connect**
245
- | Tool | What it does |
246
- |------|-------------|
247
- | `launch_app` | Launch app with dart-defines, flavors, custom targets |
248
- | `scan_and_connect` | Auto-find and connect to any running Flutter app |
249
- | `hot_reload` / `hot_restart` | Reload code without restarting |
250
-
251
- **See the Screen**
252
- | Tool | What it does |
253
- |------|-------------|
254
- | `screenshot` | Full app screenshot (configurable quality) |
255
- | `screenshot_region` | Screenshot a specific area |
256
- | `screenshot_element` | Screenshot a single widget |
257
- | `native_screenshot` | OS-level screenshot (native dialogs, permission popups) |
258
- | `inspect` | List all interactive elements with coordinates |
259
- | `get_widget_tree` | Full widget tree structure |
260
- | `find_by_type` | Find widgets by type (e.g., `ElevatedButton`) |
261
- | `get_text_content` | Extract all visible text |
262
-
263
- **Interact Like a User**
264
- | Tool | What it does |
265
- |------|-------------|
266
- | `tap` | Tap by Key, text, or coordinates |
267
- | `double_tap` | Double tap |
268
- | `long_press` | Long press with configurable duration |
269
- | `enter_text` | Type into text fields (by key or focused field) |
270
- | `swipe` | Swipe gestures (up/down/left/right) |
271
- | `scroll_to` | Scroll until element is visible |
272
- | `drag` | Drag from one element to another |
273
- | `go_back` | Navigate back |
274
- | `native_tap` | Tap native UI (permission dialogs, photo pickers) |
275
- | `native_input_text` | Type into native text fields |
276
- | `native_swipe` | Scroll native views |
277
-
278
- **Verify & Assert**
279
- | Tool | What it does |
280
- |------|-------------|
281
- | `assert_text` | Verify element contains expected text |
282
- | `assert_visible` | Verify element is visible |
283
- | `assert_not_visible` | Verify element is gone |
284
- | `assert_element_count` | Verify number of matching elements |
285
- | `wait_for_element` | Wait for element to appear (with timeout) |
286
- | `wait_for_gone` | Wait for element to disappear |
287
- | `get_checkbox_state` | Read checkbox/switch state |
288
- | `get_slider_value` | Read slider value |
289
- | `get_text_value` | Read text field value |
290
-
291
- **Debug & Monitor**
292
- | Tool | What it does |
293
- |------|-------------|
294
- | `get_logs` | Read application logs |
295
- | `get_errors` | Read application errors |
296
- | `get_performance` | Performance metrics |
297
- | `get_memory_stats` | Memory usage stats |
298
-
299
- **Multi-Session**
300
- | Tool | What it does |
301
- |------|-------------|
302
- | `list_sessions` | See all connected apps |
303
- | `switch_session` | Switch between apps |
304
- | `close_session` | Disconnect from an app |
305
-
306
- ---
187
+ **40+ MCP tools** organized in 4 categories:
188
+
189
+ <table>
190
+ <tr>
191
+ <td width="50%" valign="top">
192
+
193
+ ### 👀 See the Screen
194
+ - `screenshot` full app screenshot
195
+ - `inspect` — list all interactive elements
196
+ - `get_widget_tree` — full widget hierarchy
197
+ - `find_by_type` find by widget type
198
+ - `get_text_content` — extract all text
199
+
200
+ </td>
201
+ <td width="50%" valign="top">
202
+
203
+ ### 👆 Interact Like a User
204
+ - `tap` / `double_tap` / `long_press`
205
+ - `enter_text` type into fields
206
+ - `swipe` / `scroll_to` / `drag`
207
+ - `go_back` — navigate back
208
+ - Native: `native_tap`, `native_swipe`
209
+
210
+ </td>
211
+ </tr>
212
+ <tr>
213
+ <td valign="top">
214
+
215
+ ### Verify & Assert
216
+ - `assert_text` / `assert_visible`
217
+ - `wait_for_element` / `wait_for_gone`
218
+ - `get_checkbox_state` / `get_slider_value`
219
+ - `assert_element_count`
220
+
221
+ </td>
222
+ <td valign="top">
223
+
224
+ ### 🚀 Launch & Control
225
+ - `launch_app` — launch with flavors/defines
226
+ - `scan_and_connect` find running apps
227
+ - `hot_reload` / `hot_restart`
228
+ - `list_sessions` / `switch_session`
229
+
230
+ </td>
231
+ </tr>
232
+ </table>
307
233
 
308
- ## Example Workflows
309
-
310
- ### Login Flow Test
311
- ```
312
- You: "Test login with test@example.com / password123, verify it reaches the dashboard"
313
- ```
314
- The AI agent will:
315
- 1. `launch_app` or `scan_and_connect` to your app
316
- 2. `screenshot` to see the current screen
317
- 3. `enter_text(key: "email_field", text: "test@example.com")`
318
- 4. `enter_text(key: "password_field", text: "password123")`
319
- 5. `tap(text: "Login")`
320
- 6. `wait_for_element(text: "Dashboard")`
321
- 7. `screenshot` to confirm
322
-
323
- ### Form Validation Test
324
- ```
325
- You: "Submit the registration form empty and check that all validation errors appear"
326
- ```
327
-
328
- ### Navigation Test
329
- ```
330
- You: "Navigate through all tabs, take a screenshot of each, and verify the back button works"
331
- ```
234
+ <details>
235
+ <summary><strong>Full tool reference (40+ tools)</strong></summary>
332
236
 
333
- ### Visual Regression
334
- ```
335
- You: "Take screenshots of the home, profile, and settings pages - compare them with last time"
336
- ```
237
+ **Launch & Connect:** `launch_app`, `scan_and_connect`, `hot_reload`, `hot_restart`, `list_sessions`, `switch_session`, `close_session`
337
238
 
338
- ---
239
+ **Screen:** `screenshot`, `screenshot_region`, `screenshot_element`, `native_screenshot`, `inspect`, `get_widget_tree`, `find_by_type`, `get_text_content`
339
240
 
340
- ## Native Platform Support
241
+ **Interaction:** `tap`, `double_tap`, `long_press`, `enter_text`, `swipe`, `scroll_to`, `drag`, `go_back`, `native_tap`, `native_input_text`, `native_swipe`
341
242
 
342
- Flutter Skill can interact with **native dialogs** that Flutter can't see (permission popups, photo pickers, share sheets):
243
+ **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`
343
244
 
344
- | Tool | iOS Simulator | Android Emulator |
345
- |------|--------------|-----------------|
346
- | `native_screenshot` | `xcrun simctl screenshot` | `adb screencap` |
347
- | `native_tap` | macOS Accessibility API | `adb input tap` |
348
- | `native_input_text` | Pasteboard + Cmd+V | `adb input text` |
349
- | `native_swipe` | Accessibility scroll | `adb input swipe` |
245
+ **Debug:** `get_logs`, `get_errors`, `get_performance`, `get_memory_stats`
350
246
 
351
- No external tools needed - works with built-in OS capabilities.
247
+ </details>
352
248
 
353
249
  ---
354
250
 
355
- ## Flutter 3.x Compatibility
356
-
357
- Flutter 3.x defaults to the DTD protocol. Flutter Skill auto-adds `--vm-service-port=50000` to ensure VM Service protocol is available. No manual configuration needed.
251
+ ## Example Workflows
358
252
 
359
- If you see "no VM Service URI" errors:
360
- ```javascript
361
- // Explicitly set a port
362
- flutter-skill.launch_app({
363
- project_path: ".",
364
- extra_args: ["--vm-service-port=50000"]
365
- })
366
253
  ```
254
+ "Test login with test@example.com / password123, verify it reaches the dashboard"
367
255
 
368
- ---
369
-
370
- ## Tool Priority Setup (Claude Code)
256
+ "Submit the registration form empty and check that all validation errors appear"
371
257
 
372
- For Claude Code users, ensure it always uses Flutter Skill for Flutter testing:
258
+ "Navigate through all tabs, screenshot each one, verify back button works"
373
259
 
374
- ```bash
375
- flutter_skill setup
260
+ "Take screenshots of home, profile, and settings — compare with last time"
376
261
  ```
377
262
 
378
- This installs priority rules so Claude Code automatically chooses Flutter Skill over Dart MCP, giving you full UI automation (tap, screenshot, swipe) instead of read-only inspection.
263
+ The AI agent figures out the steps. No test code needed.
379
264
 
380
265
  ---
381
266
 
382
- ## IDE Extensions
267
+ ## Native Platform Support
268
+
269
+ Flutter Skill sees through native dialogs that Flutter can't — permission popups, photo pickers, share sheets:
383
270
 
384
- ### VSCode Extension
385
- - Auto-detects Flutter projects
386
- - Status bar shows connection state
387
- - Commands: Launch, Inspect, Screenshot
271
+ | Capability | iOS Simulator | Android Emulator |
272
+ |-----------|--------------|-----------------|
273
+ | Screenshot | `xcrun simctl` | `adb screencap` |
274
+ | Tap | macOS Accessibility | `adb input tap` |
275
+ | Text input | Pasteboard + Cmd+V | `adb input text` |
276
+ | Swipe | Accessibility scroll | `adb input swipe` |
388
277
 
389
- ### IntelliJ / Android Studio Plugin
390
- - Same features as VSCode
391
- - Integrates with IDE notifications
278
+ No external tools needed uses built-in OS capabilities.
392
279
 
393
280
  ---
394
281
 
395
282
  ## Troubleshooting
396
283
 
397
- ### "Not connected to Flutter app"
398
- ```javascript
399
- flutter-skill.get_connection_status() // Shows suggestions
400
- flutter-skill.scan_and_connect() // Auto-find running apps
401
- ```
284
+ | Problem | Fix |
285
+ |---------|-----|
286
+ | "Not connected" | `flutter-skill scan_and_connect` to auto-find apps |
287
+ | "Unknown method" | `flutter pub add flutter_skill` then restart (not hot reload) |
288
+ | No VM Service URI | Add `--vm-service-port=50000` to launch args |
289
+ | Claude Code priority | Run `flutter_skill setup` for priority rules |
402
290
 
403
- ### "Unknown method ext.flutter.flutter_skill.xxx"
404
- Your app doesn't have the flutter_skill package:
405
- ```bash
406
- flutter pub add flutter_skill
407
- ```
408
- Then restart the app (hot reload is not enough for new packages).
409
-
410
- ### More help
411
- - [Usage Guide](docs/USAGE_GUIDE.md)
412
- - [Architecture](docs/ARCHITECTURE.md)
413
- - [Troubleshooting](docs/TROUBLESHOOTING.md)
414
- - [Flutter 3.x Fix](docs/FLUTTER_3X_FIX.md)
291
+ 📖 **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)
415
292
 
416
293
  ---
417
294
 
418
295
  ## Links
419
296
 
420
- - [GitHub](https://github.com/ai-dashboad/flutter-skill)
297
+ <table>
298
+ <tr>
299
+ <td>
300
+
301
+ 📦 **Install**
421
302
  - [pub.dev](https://pub.dev/packages/flutter_skill)
422
303
  - [npm](https://www.npmjs.com/package/flutter-skill)
304
+ - [Homebrew](https://github.com/ai-dashboad/homebrew-flutter-skill)
305
+
306
+ </td>
307
+ <td>
308
+
309
+ 🔌 **IDE Extensions**
423
310
  - [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=ai-dashboad.flutter-skill)
424
311
  - [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/29991-flutter-skill)
425
- - [Roadmap](docs/ROADMAP.md)
426
-
427
- ## Support This Project
428
312
 
429
- If Flutter Skill helps you build better Flutter apps, consider supporting its development:
313
+ </td>
314
+ <td>
430
315
 
431
- - [GitHub Sponsors](https://github.com/sponsors/ai-dashboad)
432
- - [Buy Me a Coffee](https://buymeacoffee.com/ai-dashboad)
316
+ 📖 **Docs**
317
+ - [Roadmap](docs/ROADMAP.md)
318
+ - [Changelog](CHANGELOG.md)
319
+ - [Architecture](docs/ARCHITECTURE.md)
433
320
 
434
- Your support helps maintain the project, add new features, and keep it free and open source.
321
+ </td>
322
+ </tr>
323
+ </table>
435
324
 
436
325
  ---
437
326
 
438
- ## License
327
+ <p align="center">
328
+ <strong>If flutter-skill saves you time, <a href="https://github.com/ai-dashboad/flutter-skill">⭐ star it on GitHub</a>!</strong>
329
+ </p>
330
+
331
+ <p align="center">
332
+ <a href="https://github.com/sponsors/ai-dashboad">GitHub Sponsors</a> · <a href="https://buymeacoffee.com/ai-dashboad">Buy Me a Coffee</a>
333
+ </p>
439
334
 
440
- MIT
335
+ <p align="center">MIT License</p>
@@ -101,10 +101,7 @@ class FlutterMcpServer {
101
101
  _sendResult(id, {
102
102
  "capabilities": {"tools": {}, "resources": {}},
103
103
  "protocolVersion": "2024-11-05",
104
- "serverInfo": {
105
- "name": "flutter-skill",
106
- "version": _currentVersion
107
- },
104
+ "serverInfo": {"name": "flutter-skill", "version": _currentVersion},
108
105
  });
109
106
  } else if (method == 'notifications/initialized') {
110
107
  // No op
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flutter-skill",
3
- "version": "0.7.4",
3
+ "version": "0.7.7",
4
4
  "description": "MCP Server for app automation - Give your AI Agent eyes and hands inside any app (Flutter, React, Web, Native)",
5
5
  "main": "index.js",
6
6
  "bin": {