flutter-skill 0.7.8 → 0.8.1

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,67 +1,66 @@
1
1
  <p align="center">
2
- <img src="assets/social-preview.jpg" alt="flutter-skill" width="640">
2
+ <a href="https://github.com/ai-dashboad/flutter-skill">
3
+ <img src="assets/demo-teaser.gif" alt="AI testing a TikTok clone across 8 platforms" width="640">
4
+ </a>
3
5
  </p>
4
6
 
5
7
  <h1 align="center">flutter-skill</h1>
6
8
 
7
9
  <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
+ <strong>Give any AI agent eyes and hands inside any running app.</strong><br>
11
+ 8 platforms. Zero test code. One MCP server.
10
12
  </p>
11
13
 
12
14
  <p align="center">
15
+ <a href="https://github.com/ai-dashboad/flutter-skill/stargazers"><img src="https://img.shields.io/github/stars/ai-dashboad/flutter-skill?style=flat&color=yellow" alt="Stars"></a>
13
16
  <a href="https://pub.dev/packages/flutter_skill"><img src="https://img.shields.io/pub/v/flutter_skill.svg" alt="pub.dev"></a>
14
17
  <a href="https://www.npmjs.com/package/flutter-skill"><img src="https://img.shields.io/npm/v/flutter-skill.svg" alt="npm"></a>
15
18
  <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
19
  <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
20
  </p>
20
21
 
21
22
  <p align="center">
23
+ <a href="#30-second-demo">Demo</a> •
22
24
  <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> •
25
+ <a href="#8-platforms-one-tool">Platforms</a> •
26
+ <a href="#why-not-playwright--appium--detox">vs Others</a> •
26
27
  <a href="docs/USAGE_GUIDE.md">Docs</a>
27
28
  </p>
28
29
 
29
30
  ---
30
31
 
31
- <p align="center">
32
- <strong>🎬 AI tests a full TikTok clone — 28 actions, zero test code</strong>
33
- </p>
32
+ ## 30-Second Demo
34
33
 
35
34
  https://github.com/user-attachments/assets/d4617c73-043f-424c-9a9a-1a61d4c2d3c6
36
35
 
36
+ > **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.
37
+
38
+ ---
39
+
40
+ ## Why This Exists
41
+
42
+ Writing E2E tests is painful. Maintaining them is worse.
43
+
44
+ **flutter-skill** connects your AI agent (Claude, Cursor, Windsurf, Copilot, OpenClaw) directly to your running app via [MCP](https://modelcontextprotocol.io/). The agent can see the screen, tap buttons, type text, scroll — like a human tester who never sleeps.
45
+
37
46
  ```
38
- You: "Test the login flow enter test@example.com and password123, tap Login, verify Dashboard"
39
-
40
- AI Agent:
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
45
- 5. wait_for_element("Dashboard") → confirms navigation
46
- ✅ Login flow verified!
47
- ```
47
+ You: "Test the checkout flow with an empty cart, then add 3 items and complete purchase"
48
48
 
49
- **No test code. No selectors. Just tell the AI what to test.**
49
+ Your AI agent handles the rest screenshots, taps, text entry, assertions, navigation.
50
+ No Page Objects. No XPath. No brittle selectors. Just plain English.
51
+ ```
50
52
 
51
53
  ---
52
54
 
53
55
  ## Quick Start
54
56
 
55
- **1. Install**
57
+ **1. Install** (30 seconds)
56
58
 
57
59
  ```bash
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.)
60
+ npm install -g flutter-skill
62
61
  ```
63
62
 
64
- **2. Add to your MCP config** (Claude Code / Cursor / Windsurf)
63
+ **2. Add to your AI** (copy-paste into MCP config)
65
64
 
66
65
  ```json
67
66
  {
@@ -74,7 +73,9 @@ npm install -g flutter-skill # npm (recommended)
74
73
  }
75
74
  ```
76
75
 
77
- **3. Add to your app** (2 lines)
76
+ > Works with **Claude Desktop, Cursor, Windsurf, Copilot, Cline, OpenClaw** any MCP-compatible agent.
77
+
78
+ **3. Add to your app** (2 lines for Flutter)
78
79
 
79
80
  ```dart
80
81
  import 'package:flutter_skill/flutter_skill.dart';
@@ -87,158 +88,118 @@ void main() {
87
88
 
88
89
  **4. Test** — just talk to your AI:
89
90
 
90
- > *"Launch my app, tap Sign Up, fill the form, and verify the success screen"*
91
-
92
- That's it. Zero configuration.
91
+ > *"Launch my app, explore every screen, and report any bugs"*
93
92
 
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>
93
+ That's it. **Zero configuration. Zero test code.**
111
94
 
112
95
  <details>
113
- <summary><strong>🔧 Zero-config onboarding</strong> (auto-detect & patch your app)</summary>
114
-
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
119
- ```
120
-
121
- `init` auto-detects Flutter, iOS, Android, React Native, or Web projects and patches them automatically.
96
+ <summary>📦 More install methods (Homebrew, Scoop, Docker, IDE, Agent Skill)</summary>
97
+
98
+ | Method | Command |
99
+ |--------|---------|
100
+ | npm | `npm install -g flutter-skill` |
101
+ | Homebrew | `brew install ai-dashboad/flutter-skill/flutter-skill` |
102
+ | Scoop | `scoop install flutter-skill` |
103
+ | Docker | `docker pull ghcr.io/ai-dashboad/flutter-skill` |
104
+ | pub.dev | `dart pub global activate flutter_skill` |
105
+ | VSCode | Extensions → "Flutter Skill" |
106
+ | JetBrains | Plugins → "Flutter Skill" |
107
+ | Agent Skill | `npx skills add ai-dashboad/flutter-skill` |
108
+ | Zero-config | `flutter-skill init` (auto-detects & patches your app) |
122
109
 
123
110
  </details>
124
111
 
125
112
  ---
126
113
 
127
- ## Platforms
114
+ ## 8 Platforms, One Tool
128
115
 
129
- flutter-skill works across **8 platforms** with a unified bridge protocol:
116
+ Most testing tools work on 1-2 platforms. flutter-skill works on **8**.
130
117
 
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 |
141
-
142
- > **181/183 tests passing** across all platforms (99% pass rate)
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>
118
+ | Platform | SDK | Test Score |
119
+ |----------|-----|:----------:|
120
+ | **Flutter** (iOS/Android/Web) | [`flutter_skill`](https://pub.dev/packages/flutter_skill) | ✅ 188/195 |
121
+ | **React Native** | [`sdks/react-native`](sdks/react-native/) | ✅ 75/75 |
122
+ | **Electron** | [`sdks/electron`](sdks/electron/) | ✅ 75/75 |
123
+ | **Tauri** (Rust) | [`sdks/tauri`](sdks/tauri/) | ✅ 75/75 |
124
+ | **Android** (Kotlin) | [`sdks/android`](sdks/android/) | ✅ 74/75 |
125
+ | **KMP Desktop** | [`sdks/kmp`](sdks/kmp/) | ✅ 75/75 |
126
+ | **.NET MAUI** | [`sdks/dotnet-maui`](sdks/dotnet-maui/) | ✅ 75/75 |
127
+ | **iOS** (Swift/UIKit) | [`sdks/ios`](sdks/ios/) | ✅ 19/19 |
148
128
 
149
- **Web** — add one script tag:
150
- ```html
151
- <script src="flutter-skill.js"></script>
152
- <script>FlutterSkill.start({ port: 50000 });</script>
153
- ```
154
-
155
- **React Native** — npm install:
156
- ```bash
157
- npm install flutter-skill
158
- ```
159
- ```js
160
- import FlutterSkill from 'flutter-skill';
161
- FlutterSkill.start();
162
- ```
129
+ **Total: 656/664 tests passing (98.8%)** — each platform tested against a complex social media app with 50+ elements.
163
130
 
164
- **iOS (Swift/SwiftUI)** — Swift Package Manager:
165
- ```swift
166
- import FlutterSkill
167
- FlutterSkillBridge.shared.start()
131
+ ---
168
132
 
169
- Text("Hello").flutterSkillId("greeting")
170
- Button("Submit") { submit() }.flutterSkillButton("submitBtn")
171
- ```
133
+ ## Why Not Playwright / Appium / Detox?
172
134
 
173
- **Android (Kotlin)** Gradle:
174
- ```kotlin
175
- implementation("com.flutterskill:flutter-skill:0.7.5")
176
- FlutterSkillBridge.start(this)
177
- ```
178
-
179
- **Electron / Tauri / KMP / .NET** see each SDK's README for details.
135
+ | | flutter-skill | Playwright | Appium | Detox |
136
+ |---|:---:|:---:|:---:|:---:|
137
+ | **Setup time** | 30 sec | Minutes | Hours | Hours |
138
+ | **Test code needed** | ❌ None | ✅ Yes | ✅ Yes | ✅ Yes |
139
+ | **AI-native (MCP)** | ✅ | ❌ | ❌ | ❌ |
140
+ | **Platforms** | 8 | 3 (web) | Mobile | React Native |
141
+ | **Natural language** | | | | |
142
+ | **Maintenance** | Zero | High | High | Medium |
143
+ | **Flutter support** | ✅ Native | Partial | Partial | ❌ |
144
+ | **Desktop apps** | ✅ | ✅ | ❌ | ❌ |
180
145
 
181
- </details>
146
+ **flutter-skill is the only AI-native E2E testing tool that works across mobile, web, and desktop.**
182
147
 
183
148
  ---
184
149
 
185
- ## What Can It Do?
186
-
187
- **40+ MCP tools** organized in 4 categories:
150
+ ## What It Can Do
188
151
 
189
152
  <table>
190
153
  <tr>
191
154
  <td width="50%" valign="top">
192
155
 
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
156
+ ### 👀 See
157
+ - `screenshot` — capture the screen
158
+ - `inspect_interactive` — all tappable/typeable elements with semantic refs
159
+ - `find_element` / `wait_for_element`
160
+ - `get_elements` — full element tree
199
161
 
200
162
  </td>
201
163
  <td width="50%" valign="top">
202
164
 
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`
165
+ ### 👆 Interact
166
+ - `tap` / `long_press` / `swipe` / `drag`
167
+ - `enter_text` / `set_text` / `clear_text`
168
+ - `scroll` all directions
169
+ - `go_back` / `press_key`
209
170
 
210
171
  </td>
211
172
  </tr>
212
173
  <tr>
213
174
  <td valign="top">
214
175
 
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`
176
+ ### 🔍 Inspect (v0.8.0)
177
+ - **Semantic refs**: `button:Login`, `input:Email`
178
+ - Stable across UI changes
179
+ - `tap(ref: "button:Submit")`
180
+ - 7 roles: button, input, toggle, slider, select, link, item
220
181
 
221
182
  </td>
222
183
  <td valign="top">
223
184
 
224
- ### 🚀 Launch & Control
225
- - `launch_app` — launch with flavors/defines
226
- - `scan_and_connect` — find running apps
185
+ ### 🚀 Control
186
+ - `launch_app` — launch with flavors
227
187
  - `hot_reload` / `hot_restart`
228
- - `list_sessions` / `switch_session`
188
+ - `get_logs` / `get_errors`
189
+ - `scan_and_connect` — auto-find apps
229
190
 
230
191
  </td>
231
192
  </tr>
232
193
  </table>
233
194
 
234
195
  <details>
235
- <summary><strong>Full tool reference (40+ tools)</strong></summary>
196
+ <summary><strong>40+ tools full reference</strong></summary>
236
197
 
237
198
  **Launch & Connect:** `launch_app`, `scan_and_connect`, `hot_reload`, `hot_restart`, `list_sessions`, `switch_session`, `close_session`
238
199
 
239
- **Screen:** `screenshot`, `screenshot_region`, `screenshot_element`, `native_screenshot`, `inspect`, `get_widget_tree`, `find_by_type`, `get_text_content`
200
+ **Screen:** `screenshot`, `screenshot_region`, `screenshot_element`, `native_screenshot`, `inspect`, `inspect_interactive`, `get_widget_tree`, `find_by_type`, `get_text_content`
240
201
 
241
- **Interaction:** `tap`, `double_tap`, `long_press`, `enter_text`, `swipe`, `scroll_to`, `drag`, `go_back`, `native_tap`, `native_input_text`, `native_swipe`
202
+ **Interaction:** `tap`, `double_tap`, `long_press`, `enter_text`, `set_text`, `clear_text`, `swipe`, `scroll_to`, `drag`, `go_back`, `press_key`, `native_tap`, `native_input_text`, `native_swipe`
242
203
 
243
204
  **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`
244
205
 
@@ -248,88 +209,145 @@ FlutterSkillBridge.start(this)
248
209
 
249
210
  ---
250
211
 
251
- ## Example Workflows
212
+ ## Platform Setup
213
+
214
+ <details>
215
+ <summary><strong>Flutter</strong> (iOS / Android / Web)</summary>
216
+
217
+ ```yaml
218
+ dependencies:
219
+ flutter_skill: ^0.8.1
220
+ ```
221
+
222
+ ```dart
223
+ import 'package:flutter_skill/flutter_skill.dart';
224
+
225
+ void main() {
226
+ if (kDebugMode) FlutterSkillBinding.ensureInitialized();
227
+ runApp(MyApp());
228
+ }
229
+ ```
230
+
231
+ </details>
232
+
233
+ <details>
234
+ <summary><strong>React Native</strong></summary>
235
+
236
+ ```bash
237
+ npm install flutter-skill-react-native
238
+ ```
252
239
 
240
+ ```js
241
+ import FlutterSkill from 'flutter-skill-react-native';
242
+ FlutterSkill.start();
253
243
  ```
254
- "Test login with test@example.com / password123, verify it reaches the dashboard"
255
244
 
256
- "Submit the registration form empty and check that all validation errors appear"
245
+ </details>
257
246
 
258
- "Navigate through all tabs, screenshot each one, verify back button works"
247
+ <details>
248
+ <summary><strong>Electron</strong></summary>
259
249
 
260
- "Take screenshots of home, profile, and settings — compare with last time"
250
+ ```bash
251
+ npm install flutter-skill-electron
261
252
  ```
262
253
 
263
- The AI agent figures out the steps. No test code needed.
254
+ ```js
255
+ const { FlutterSkillBridge } = require('flutter-skill-electron');
256
+ FlutterSkillBridge.start(mainWindow);
257
+ ```
264
258
 
265
- ---
259
+ </details>
266
260
 
267
- ## Native Platform Support
261
+ <details>
262
+ <summary><strong>iOS (Swift)</strong></summary>
268
263
 
269
- Flutter Skill sees through native dialogs that Flutter can't — permission popups, photo pickers, share sheets:
264
+ ```swift
265
+ // Swift Package Manager: FlutterSkillSDK
266
+ import FlutterSkill
267
+ FlutterSkillBridge.shared.start()
270
268
 
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` |
269
+ Text("Hello").flutterSkillId("greeting")
270
+ ```
277
271
 
278
- No external tools needed — uses built-in OS capabilities.
272
+ </details>
279
273
 
280
- ---
274
+ <details>
275
+ <summary><strong>Android (Kotlin)</strong></summary>
281
276
 
282
- ## Troubleshooting
277
+ ```kotlin
278
+ implementation("com.flutterskill:flutter-skill:0.8.0")
283
279
 
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 |
280
+ FlutterSkillBridge.start(this)
281
+ ```
290
282
 
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)
283
+ </details>
292
284
 
293
- ---
285
+ <details>
286
+ <summary><strong>Tauri (Rust)</strong></summary>
294
287
 
295
- ## Links
288
+ ```toml
289
+ [dependencies]
290
+ flutter-skill-tauri = "0.8.0"
291
+ ```
296
292
 
297
- <table>
298
- <tr>
299
- <td>
293
+ </details>
300
294
 
301
- 📦 **Install**
302
- - [pub.dev](https://pub.dev/packages/flutter_skill)
303
- - [npm](https://www.npmjs.com/package/flutter-skill)
304
- - [Homebrew](https://github.com/ai-dashboad/homebrew-flutter-skill)
295
+ <details>
296
+ <summary><strong>KMP Desktop</strong></summary>
305
297
 
306
- </td>
307
- <td>
298
+ Add Gradle dependency — see [`sdks/kmp`](sdks/kmp/) for details.
308
299
 
309
- 🔌 **IDE Extensions**
310
- - [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=ai-dashboad.flutter-skill)
311
- - [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/29991-flutter-skill)
300
+ </details>
312
301
 
313
- </td>
314
- <td>
302
+ <details>
303
+ <summary><strong>.NET MAUI</strong></summary>
315
304
 
316
- 📖 **Docs**
317
- - [Roadmap](docs/ROADMAP.md)
318
- - [Changelog](CHANGELOG.md)
319
- - [Architecture](docs/ARCHITECTURE.md)
305
+ Add NuGet package — see [`sdks/dotnet-maui`](sdks/dotnet-maui/) for details.
320
306
 
321
- </td>
322
- </tr>
323
- </table>
307
+ </details>
324
308
 
325
309
  ---
326
310
 
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>
311
+ ## Example Prompts
312
+
313
+ Just tell your AI what to test:
314
+
315
+ | Prompt | What happens |
316
+ |--------|-------------|
317
+ | *"Test login with wrong password"* | Screenshots → enters creds → taps login → verifies error |
318
+ | *"Explore every screen and report bugs"* | Systematically navigates all screens, tests all elements |
319
+ | *"Fill registration with edge cases"* | Tests emoji 🌍, long strings, empty fields, special chars |
320
+ | *"Compare checkout flow on iOS and Android"* | Runs same test on both platforms, compares screenshots |
321
+ | *"Take screenshots of all 5 tabs"* | Taps each tab, captures state |
322
+
323
+ ---
324
+
325
+ ## Contributing
326
+
327
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
328
+
329
+ ```bash
330
+ git clone https://github.com/ai-dashboad/flutter-skill
331
+ cd flutter-skill
332
+ dart pub get
333
+ dart run bin/flutter_skill.dart server # Start MCP server
334
+ ```
335
+
336
+ ---
337
+
338
+ ## Links
339
+
340
+ | | |
341
+ |---|---|
342
+ | 📦 [pub.dev](https://pub.dev/packages/flutter_skill) | 🧩 [VSCode](https://marketplace.visualstudio.com/items?itemName=AIDashboard.flutter-skill) |
343
+ | 📦 [npm](https://www.npmjs.com/package/flutter-skill) | 🧩 [JetBrains](https://plugins.jetbrains.com/plugin/29991-flutter-skill) |
344
+ | 🍺 [Homebrew](https://github.com/ai-dashboad/homebrew-flutter-skill) | 📖 [Docs](docs/USAGE_GUIDE.md) |
345
+ | 🤖 [Agent Skill](https://skills.sh/ai-dashboad/flutter-skill) | 📋 [Changelog](CHANGELOG.md) |
346
+
347
+ ---
330
348
 
331
349
  <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>
350
+ <strong>⭐ If flutter-skill saves you time, star it so others can find it too!</strong>
333
351
  </p>
334
352
 
335
- <p align="center">MIT License</p>
353
+ <p align="center">MIT License © 2025</p>
package/dart/pubspec.yaml CHANGED
@@ -1,9 +1,9 @@
1
- name: flutter_skill
1
+ name: flutter_skill_npm
2
2
  description: Give your AI Agent eyes and hands inside your Flutter app.
3
3
  version: 0.2.0
4
+ publish_to: 'none'
4
5
  homepage: https://github.com/ai-dashboad/flutter-skill
5
6
  repository: https://github.com/ai-dashboad/flutter-skill
6
- # publish_to: 'none' # Remove this when ready to publish to pub.dev
7
7
 
8
8
  executables:
9
9
  flutter_skill: flutter_skill
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "flutter-skill",
3
- "mcpName": "io.github.telsav/flutter-skill",
4
- "version": "0.7.8",
3
+ "mcpName": "io.github.ai-dashboad/flutter-skill",
4
+ "version": "0.8.1",
5
5
  "description": "MCP Server for app automation - Give your AI Agent eyes and hands inside any app (Flutter, React, Web, Native)",
6
6
  "main": "index.js",
7
7
  "bin": {