flutter-skill
Control and automate Flutter applications - inspect UI, perform gestures, validate state, take screenshots, and debug. Connects AI agents to running Flutter apps via Dart VM Service Protocol.
Best use case
flutter-skill is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Control and automate Flutter applications - inspect UI, perform gestures, validate state, take screenshots, and debug. Connects AI agents to running Flutter apps via Dart VM Service Protocol.
Teams using flutter-skill should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/flutter-skill/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How flutter-skill Compares
| Feature / Agent | flutter-skill | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Control and automate Flutter applications - inspect UI, perform gestures, validate state, take screenshots, and debug. Connects AI agents to running Flutter apps via Dart VM Service Protocol.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Flutter Skill
Give your AI Agent eyes and hands inside your Flutter app. This skill enables comprehensive control of Flutter applications for testing, debugging, and automation.
## Installation
### Option 1: npx (Recommended)
```json
{
"flutter-skill": {
"command": "npx",
"args": ["flutter-skill"]
}
}
```
### Option 2: Global Install
```bash
dart pub global activate flutter_skill
```
Then configure:
```json
{
"flutter-skill": {
"command": "flutter_skill",
"args": ["server"]
}
}
```
## Available Tools
### Connection
- `connect_app` - Connect to a running Flutter app via WebSocket URI
- `launch_app` - Launch a Flutter app with auto-setup (adds dependencies, patches main.dart)
### UI Inspection
- `inspect` - Get interactive elements (buttons, text fields, etc.)
- `get_widget_tree` - Full widget tree structure with configurable depth
- `get_widget_properties` - Widget details (size, position, visibility)
- `get_text_content` - Extract all visible text from screen
- `find_by_type` - Find all widgets of a specific type
### Interactions
- `tap` - Tap element by key or text
- `double_tap` - Double tap gesture
- `long_press` - Long press gesture
- `swipe` - Swipe up/down/left/right
- `drag` - Drag from one element to another
- `scroll_to` - Scroll element into view
- `enter_text` - Input text into text field
### State Validation
- `get_text_value` - Get text field value
- `get_checkbox_state` - Get checkbox checked state
- `get_slider_value` - Get slider current value
- `wait_for_element` - Wait for element to appear (with timeout)
- `wait_for_gone` - Wait for element to disappear
### Screenshots
- `screenshot` - Capture full app screenshot (base64 PNG)
- `screenshot_element` - Capture specific element screenshot
### Navigation
- `get_current_route` - Get current route name
- `go_back` - Navigate back
- `get_navigation_stack` - Get navigation history
### Debug & Logs
- `get_logs` - Application logs
- `get_errors` - Error messages
- `get_performance` - Performance metrics
- `clear_logs` - Clear log buffer
- `hot_reload` - Trigger hot reload
## Usage Examples
### Test a Counter App
```
1. Launch the app: launch_app with project_path="/path/to/app"
2. Inspect UI: inspect
3. Tap increment: tap with key="increment_button"
4. Verify: get_text_content to see updated counter
```
### Test a Login Flow
```
1. Enter email: enter_text with key="email_field", text="user@example.com"
2. Enter password: enter_text with key="password_field", text="password123"
3. Tap login: tap with key="login_button"
4. Wait for home: wait_for_element with key="home_screen", timeout=5000
```
### Debug an Issue
```
1. Connect: connect_app with uri="ws://127.0.0.1:xxxxx/ws"
2. Check errors: get_errors
3. View logs: get_logs
4. Take screenshot: screenshot
```
## Best Practices
### Use Widget Keys
For reliable element identification, target apps should use `ValueKey`:
```dart
ElevatedButton(
key: const ValueKey('submit_button'),
onPressed: _submit,
child: const Text('Submit'),
)
```
### Element Finding Priority
1. **Key** (most reliable): `tap with key="submit_button"`
2. **Text content**: `tap with text="Submit"`
3. **Widget type**: `find_by_type with type="ElevatedButton"`
## Links
- [GitHub Repository](https://github.com/ai-dashboad/flutter-skill)
- [pub.dev Package](https://pub.dev/packages/flutter_skill)
- [npm Package](https://www.npmjs.com/package/flutter-skill)Related Skills
e2e-testing
AI-powered E2E testing for any app — Flutter, React Native, iOS, Android, Electron, Tauri, KMP, .NET MAUI. Test 8 platforms with natural language through MCP. No test code needed. Just describe what to test and the agent sees screenshots, taps elements, enters text, scrolls, and verifies UI state automatically.
flutter-dart-code-review
库无关的Flutter/Dart代码审查清单,涵盖Widget最佳实践、状态管理模式(BLoC、Riverpod、Provider、GetX、MobX、Signals)、Dart惯用法、性能、可访问性、安全性和整洁架构。
flutter-expert
Master Flutter development with Dart 3, advanced widgets, and multi-platform deployment.
dart-flutter-patterns
Production-ready Dart and Flutter patterns covering null safety, immutable state, async composition, widget architecture, popular state management frameworks (BLoC, Riverpod, Provider), GoRouter navigation, Dio networking, Freezed code generation, and clean architecture.
flutter-expert
Master Flutter development with Dart 3, advanced widgets, and multi-platform deployment.
flutter-dev
Flutter cross-platform development guide covering widget patterns, Riverpod/Bloc state management, GoRouter navigation, performance optimization, and platform-specific implementations. Includes const optimization, responsive layouts, testing strategies, and DevTools profiling. Use when: building Flutter apps, implementing state management (Riverpod/Bloc), setting up GoRouter navigation, creating custom widgets, optimizing performance, writing widget tests, cross-platform development.
flutterfire-configure
Sets up Firebase for Flutter apps using FlutterFire CLI. Use when initializing a Firebase project, running flutterfire configure, initializing Firebase in main.dart, or configuring multiple app flavors.
flutter-errors
Diagnoses and fixes common Flutter errors. Use when encountering layout errors (RenderFlex overflow, unbounded constraints, RenderBox not laid out), scroll errors, or setState-during-build errors.
flutter-app-architecture
Provides best practices for Flutter app architecture, including layered architecture, data flow, state management patterns, and extensibility guidelines.
flutter-change-notifier
Implements state management with ChangeNotifier and Provider in Flutter. Use when setting up ChangeNotifier models, providing them to the widget tree, consuming state with Consumer or Provider.of, or optimizing rebuilds.
Flutter/Dart Development
Specialized skill for Flutter app development and Dart programming
flutter-desktop-config
Configure Flutter for desktop platforms with platform channels and native integrations