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.

173 stars

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

$curl -o ~/.claude/skills/flutter-skill/SKILL.md --create-dirs "https://raw.githubusercontent.com/ai-dashboad/flutter-skill/main/skills-submission/flutter-skill/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/flutter-skill/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How flutter-skill Compares

Feature / Agentflutter-skillStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

173
from ai-dashboad/flutter-skill

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

144923
from affaan-m/everything-claude-code

库无关的Flutter/Dart代码审查清单,涵盖Widget最佳实践、状态管理模式(BLoC、Riverpod、Provider、GetX、MobX、Signals)、Dart惯用法、性能、可访问性、安全性和整洁架构。

DevelopmentClaude

flutter-expert

31392
from sickn33/antigravity-awesome-skills

Master Flutter development with Dart 3, advanced widgets, and multi-platform deployment.

Text AnalysisClaude

dart-flutter-patterns

144923
from affaan-m/everything-claude-code

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

24269
from davila7/claude-code-templates

Master Flutter development with Dart 3, advanced widgets, and multi-platform deployment.

flutter-dev

9532
from MiniMax-AI/skills

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

520
from evanca/flutter-ai-rules

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

520
from evanca/flutter-ai-rules

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

520
from evanca/flutter-ai-rules

Provides best practices for Flutter app architecture, including layered architecture, data flow, state management patterns, and extensibility guidelines.

flutter-change-notifier

520
from evanca/flutter-ai-rules

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

509
from a5c-ai/babysitter

Specialized skill for Flutter app development and Dart programming

flutter-desktop-config

509
from a5c-ai/babysitter

Configure Flutter for desktop platforms with platform channels and native integrations