flutter_skill 0.5.1 copy "flutter_skill: ^0.5.1" to clipboard
flutter_skill: ^0.5.1 copied to clipboard

Give your AI Agent eyes and hands inside your Flutter app.

0.5.1 #

Major usability improvements for screenshots, errors, and logging

🎯 P0 Fixes (Critical) #

  • πŸ“Έ Screenshot Optimization: Now saves to file by default instead of returning base64

    • Returns file path, filename, size, format
    • Dramatically reduces response size
    • save_to_file parameter (default: true)
    • Backward compatible: set save_to_file=false for base64
    • Files saved to temp directory with timestamp
  • πŸ”Œ Improved Connection Error Messages: Detailed, actionable error messages

    • Clear status indicators with emojis (πŸ“, πŸ”§, πŸ’‘, ⚠️)
    • 3 connection options with code examples
    • Troubleshooting checklist included
    • Shows VM Service URI in errors for context
    • Better guidance for first-time users

πŸ”§ P1 Improvements #

  • πŸ“Š Structured Log/Error Responses:
    • get_logs(): Returns logs with summary (total_count, message)
    • get_errors(): Returns errors with summary (has_errors, total_count, message)
    • clear_logs(): Returns structured success response
    • Easier to parse and display in UI

πŸ’‘ Benefits #

  • βœ… Smaller response sizes (file paths vs base64 data)
  • βœ… Better developer experience with clear error messages
  • βœ… Faster problem resolution
  • βœ… More structured, parseable responses
  • βœ… Files can be opened directly in viewers/editors

πŸ“ Migration Guide #

Screenshot:

// New behavior (default)
screenshot()  // Returns: {"file_path": "/tmp/...", "size_bytes": 45678}

// Legacy behavior
screenshot(save_to_file: false)  // Returns: {"image": "base64..."}

Logs/Errors:

// New response format
get_errors()
// Returns: {
//   "errors": [...],
//   "summary": {
//     "total_count": 3,
//     "has_errors": true,
//     "message": "3 error(s) found ⚠️"
//   }
// }

0.5.0 #

Add visual test indicators for UI automation

✨ New Features #

  • 🎨 Visual Test Indicators: Real-time visual feedback for all test actions
    • Tap indicator: Expanding circle with fade-out animation
    • Swipe indicator: Arrow with dashed trail showing direction
    • Long press indicator: Filling progress circle
    • Text input indicator: Glowing border with blink effect
  • πŸ“’ Action Hints: Top banner displaying current operation ("Tapping 'Submit'", etc.)
  • πŸŽ›οΈ Configurable Styles: Three modes to choose from
    • minimal: Small, fast (200ms), no hints
    • standard: Medium, normal speed (500ms), 1s hints (default)
    • detailed: Large, slow (800ms), 2s hints + debug info
  • πŸ”§ Easy Control: Enable/disable indicators on the fly
    • MCP tool: enable_test_indicators(enabled: true, style: "standard")
    • MCP tool: get_indicator_status()
    • VM Service extensions: enableIndicators, disableIndicators, getIndicatorStatus

πŸ—οΈ Architecture #

  • TestIndicatorOverlay: Manages overlay entry and indicator lifecycle
  • TestIndicatorWidget: Renders all visual effects with smooth animations
  • Indicator components: TapIndicator, SwipeIndicator, LongPressIndicator, TextInputIndicator, ActionHint
  • Uses Flutter Overlay for cross-platform compatibility
  • IgnorePointer prevents interaction interference
  • Automatic cleanup after animations complete

πŸ“– Benefits #

  • πŸŽ₯ Better Test Videos: All indicators visible in screen recordings
  • πŸ› Easier Debugging: See exactly what's being clicked/swiped
  • πŸ“± Works Everywhere: iOS, Android, Web, Desktop
  • ⚑ Zero Impact: No performance cost when disabled
  • πŸ”„ Auto-Integration: Automatically shows for all test actions

πŸ“ Usage Example #

// Enable indicators
await enable_test_indicators(enabled: true, style: "standard");

// All actions now show visual feedback automatically
await tap(text: "Submit");           // Shows tap ripple + "Tapping 'Submit'"
await swipe(direction: "left");       // Shows swipe arrow + "Swiping left"
await long_press(text: "Menu");       // Shows progress circle + "Long pressing 'Menu'"
await enter_text(key: "email", text: "test@example.com");  // Shows glow + "Entering text"

// Disable when done
await enable_test_indicators(enabled: false);

πŸ“š Documentation #

  • Design document: docs/TEST_INDICATORS_DESIGN.md
  • Includes architecture, configuration options, and future enhancements

0.4.9 #

Fix screenshot_element null handling and add text parameter

Bug Fixes #

  • πŸ› Fixed "type 'Null' is not a subtype of type 'String'" error in screenshot_element
  • βœ… Added text parameter support (in addition to key) for finding elements by text content
  • πŸ” Automatically looks up element key when text parameter is provided
  • πŸ›‘οΈ Added null check for takeElementScreenshot return value
  • πŸ“ Returns descriptive error messages when element not found or screenshot fails

Improvements #

  • 🎯 screenshot_element now matches behavior of other action tools (tap, long_press, etc.)
  • πŸ”„ Supports both screenshot_element(key: "button_1") and screenshot_element(text: "Submit")

Technical Details #

  • Queries getInteractiveElements() to find matching text when key not provided
  • Returns {"error": "...", "message": "..."} instead of crashing on null

0.4.8 #

Fix Infinity/NaN crash when inspecting widgets

Bug Fixes #

  • πŸ› Fixed "Unsupported operation: Infinity or NaN toInt" crash in _findInteractiveElements
  • βœ… Added safeRound() helper function to handle invalid numeric values
  • πŸ›‘οΈ Widget bounds calculation now safely handles Infinity and NaN values (returns 0)
  • πŸ”§ Prevents MCP error -32603 when inspecting widgets with problematic layouts
  • πŸ“¦ Supports edge cases: Positioned.fill, FractionalTranslation, and malformed widget trees

Technical Details #

  • Checks value.isFinite before calling .round() on position/size values
  • Gracefully degrades to {x: 0, y: 0, width: 0, height: 0} for invalid bounds

0.4.7 #

Auto-update flutter_skill dependency in target projects

Improvements #

  • πŸ”„ setup now automatically updates existing flutter_skill dependency to latest version from pub.dev
  • βœ… Enhanced flutter pub upgrade flutter_skill checks when dependency already exists
  • πŸ“Š Clear status feedback: "βœ… updated", "βœ… up to date", or "⚠️ failed"
  • πŸ”§ Ensures target projects always use the latest compatible version
  • ♻️ Maintains backward compatibility with first-time installations

Behavior Changes #

  • Previously: Skipped setup if dependency already existed (even if outdated)
  • Now: Actively upgrades to latest version when dependency is found

0.4.6 #

Fix release script to auto-update server.dart version

Bug Fixes #

  • πŸ”§ Fixed release script to automatically update _currentVersion in lib/src/cli/server.dart
  • πŸ”„ Ensures version consistency across all release artifacts (pubspec, npm, VSCode, JetBrains, server.dart)
  • βœ… Prevents version mismatch errors in MCP server startup

0.4.5 #

Add MCP auto-fix and diagnostics

Features #

  • ✨ New diagnose_project MCP tool for comprehensive project diagnostics
  • πŸ”§ Auto-fix capability in connect_app and scan_and_connect tools
  • πŸ“ Optional project_path parameter for automatic configuration
  • πŸ› οΈ Diagnostic shell script (scripts/diagnose.sh) for manual troubleshooting

Improvements #

  • πŸ“Š Enhanced error logging with complete diagnostic output
  • πŸ” Automatic detection and repair of missing flutter_skill dependency
  • βš™οΈ Automatic detection and repair of missing FlutterSkillBinding initialization
  • βœ… Backward compatible (all tools work without project_path parameter)

Documentation #

  • πŸ“– New AUTO_FIX_IMPROVEMENTS.md guide
  • βœ… New test_auto_fix.md testing checklist
  • πŸ”§ Updated TROUBLESHOOTING.md with auto-fix workflows
  • 🌍 README.md translated to English

0.4.4 #

Fix dart analyze errors

Bug Fixes #

  • Fix WebSocket.connect timeout parameter issue (use .timeout() method instead of named parameter)
  • Add missing dart:convert import for utf8 usage in protocol detector
  • Fix test file: getWidgetTree returns Map not String, use correct takeScreenshot method name
  • Add .mcp.json to gitignore

0.4.3 #

Multi-session support for parallel Flutter app testing

🎯 Major Features #

Multi-Session Management

  • ✨ Support for parallel testing of multiple Flutter apps simultaneously
  • πŸ—οΈ Complete SessionManager architecture for Kotlin (IntelliJ plugin)
  • πŸ“Š SessionInfo model with state tracking (CREATED β†’ LAUNCHING β†’ CONNECTED β†’ DISCONNECTED β†’ ERROR)
  • πŸ”’ Automatic port assignment (50001-60000 range) with conflict detection
  • πŸ”„ Session switching and lifecycle management
  • πŸ“ Session persistence and tracking

UI Components

  • 🎨 New SessionTabBar component with tab-based session switching
  • βž• New Session Dialog with device auto-detection
  • πŸ“± Device detection for iOS/Android/Web/Desktop platforms
  • 🎯 Real-time status indicators (● connected, β—‹ disconnected, ⏳ launching, ⚠️ error)
  • πŸ–±οΈ Click to switch sessions, close button on tabs
  • ✨ Hover effects and visual feedback

MCP Server Enhancements

  • πŸ”§ All MCP tools now support session_id parameter
  • πŸ“‹ New tools: list_sessions, switch_session, close_session
  • πŸ”„ Multi-client management with session isolation
  • ⬆️ Backward compatible (defaults to active session)

πŸ“ Code Changes #

  • New Files: 11 files created (~5800 lines total)

    • SessionManager.kt (200+ lines)
    • SessionTabBar.kt (284 lines)
    • NewSessionDialog.kt (450+ lines)
    • SessionManagerTest.kt (450+ lines)
    • multi_session_test.dart (441 lines)
    • Complete documentation suite
  • Modified Files: 5 files updated

    • lib/src/cli/server.dart (+478, -134 lines)
    • All UI cards updated for session support

πŸ§ͺ Testing #

  • βœ… Dart tests: 20/20 passed (100% pass rate)
  • βœ… Kotlin compilation: BUILD SUCCESSFUL
  • βœ… Plugin build: BUILD SUCCESSFUL
  • βœ… Session isolation tests
  • βœ… Port allocation tests
  • βœ… State transition tests

πŸ“š Documentation #

  • πŸ“– Multi-session testing guide
  • 🎨 Complete UI design documentation
  • πŸ§ͺ Comprehensive testing documentation
  • πŸ“Š Implementation report with all task details
  • πŸ—‚οΈ Organized documentation structure (docs/ui/, docs/testing/, docs/releases/)

πŸ”§ Improvements #

  • πŸ—οΈ Organized project structure (moved docs and scripts to subdirectories)
  • πŸ“ Better separation of concerns
  • 🧹 Cleaner root directory with only core files

0.4.1 #

Cross-Platform UI/UX Overhaul & VM Service Integration

🎨 Major UI/UX Improvements #

VSCode Extension

  • ✨ Complete sidebar redesign with professional card-based layout
  • πŸ“Š 5 functional sections: Connection Status, Quick Actions, Interactive Elements, Recent Activity, AI Editors
  • πŸ”— Real-time connection status with live device information
  • 🎯 Interactive elements list with tap, input, and inspect capabilities
  • πŸ“œ Activity history tracking with timestamps
  • πŸ” Element search and filtering
  • 🎨 Perfect theme adaptation (light/dark modes)

IntelliJ IDEA Plugin

  • ✨ Tool Window complete refactor with card-based UI components
  • 🌳 Interactive Elements tree view with hierarchical display
  • ⚑ 2x2 Quick Actions grid for common operations
  • πŸ“Š Recent Activity list with visual indicators (shows 5 items consistently)
  • 🎨 Seamless theme integration (Light/Darcula/High Contrast)
  • πŸ” Element search and filtering capabilities

Cross-Platform Consistency

  • 🀝 Unified design language across VSCode and IntelliJ
  • 🎯 Semantic color system (success=green, warning=yellow, error=red)
  • πŸ“ Consistent spacing using design tokens (16px between cards)
  • ⚑ Identical interaction flows and error messaging
  • πŸ“Š Overall consistency score: 95/100

πŸ”Œ Complete VM Service Integration #

Core Features

  • πŸ”— Full WebSocket-based VM Service Protocol client implementation
  • πŸ“± Real-time UI element inspection from running Flutter apps
  • πŸ‘† Tap operations via VM Service extensions
  • ⌨️ Text input into TextField widgets
  • πŸ“Έ Screenshot capture (base64-encoded PNG, with quality control)
  • πŸ”„ Hot reload triggering (reloadSources)
  • 🌳 Widget tree inspection
  • πŸ“Š Activity tracking with success/failure indicators

VSCode Implementation

  • Added VmServiceClient.ts - Complete WebSocket client (400+ lines)
  • Added FlutterSkillViewProvider.ts - WebviewViewProvider with real VM operations
  • Added ActivityTracker.ts - Activity history management
  • Enhanced vmServiceScanner.ts with VM client integration
  • Dynamic element list updates from real Flutter apps

IntelliJ Implementation

  • Added VmServiceClient.kt - Production-ready client (835 lines)
    • JSON-RPC 2.0 protocol
    • Kotlin coroutines integration
    • CompletableFuture.await() extension
    • 17+ public API methods
  • Enhanced VmServiceScanner.kt with VM integration methods
  • Updated InteractiveElementsCard.kt with real tap/input operations
  • Updated QuickActionsCard.kt with hot reload functionality
  • Updated FlutterSkillService.kt to use VM Service directly
  • Service callbacks wired to update UI cards

πŸ› οΈ Technical Improvements #

Version Management

  • VSCode: Dynamic version reading from package.json
  • IntelliJ: Dynamic version reading from plugin.xml
  • Eliminated all hardcoded version strings

Architecture

  • Card-based component system (IntelliJ)
  • WebviewViewProvider pattern (VSCode)
  • State management with callbacks
  • Proper async/await patterns with coroutines
  • Comprehensive error handling and user feedback

πŸ“š Documentation #

  • Added docs/CROSS_PLATFORM_VERIFICATION.md - Detailed verification report
  • Added docs/UI_UX_DESIGN_GUIDE.md - Design system specification
  • Added docs/UI_IMPLEMENTATION_ROADMAP.md - Implementation plan

πŸ› Bug Fixes #

  • Fixed type inference issues in Kotlin coroutines
  • Fixed ErrorInfo reference scoping (VmServiceResponse.ErrorInfo)
  • Fixed WebSocket import in TypeScript (require syntax)
  • Fixed activity display consistency (both platforms show 5 items)

πŸ“Š What This Solves #

Before:

  • ❌ Basic UI with minimal information
  • ❌ No real-time connection status
  • ❌ Hardcoded example data in UI
  • ❌ CLI commands instead of VM Service integration
  • ❌ No activity tracking

After:

  • βœ… Professional card-based UI across both platforms
  • βœ… Real-time connection status and device info
  • βœ… Live data from running Flutter apps
  • βœ… Direct VM Service integration
  • βœ… Complete activity history tracking
  • βœ… Unified cross-platform experience

0.4.0 #

One-Click Installation & Tool Priority System

πŸš€ Major Features #

1. One-Click Installation

  • Added universal installation scripts for all platforms
  • macOS/Linux: curl -fsSL https://raw.githubusercontent.com/ai-dashboad/flutter-skill/main/install.sh | bash
  • Windows: iwr https://raw.githubusercontent.com/ai-dashboad/flutter-skill/main/install.ps1 -useb | iex
  • Auto-detects best installation method (npm > Homebrew/Scoop > source)
  • Auto-configures PATH and dependencies
  • Zero manual configuration needed

2. Automatic Tool Priority Setup

  • New command: flutter_skill setup
  • Installs Claude Code priority rules automatically
  • Ensures flutter-skill is ALWAYS used instead of Dart MCP
  • First-run reminder if not installed
  • Supports --force and --silent flags

3. Comprehensive Tool Priority System

  • Added decision tree and enforcement rules
  • Updated SKILL.md with alternatives comparison
  • Created detailed setup guide (TOOL_PRIORITY_SETUP.md)
  • Added tool-priority.md prompt rules
  • 100% priority for flutter-skill in Flutter testing

✨ New Commands #

# One-click setup of tool priority rules
flutter_skill setup

# Force reinstall/update rules
flutter_skill setup --force

# Silent installation (for scripts)
flutter_skill setup --silent

πŸ“š Documentation #

  • Added install.sh - Universal installer for macOS/Linux
  • Added install.ps1 - Universal installer for Windows
  • Added TOOL_PRIORITY_SETUP.md - Setup and verification guide
  • Added docs/prompts/tool-priority.md - Claude Code priority rules
  • Updated README.md - One-click installation instructions
  • Updated CLAUDE.md - Tool selection rules

🎯 What This Solves #

Before:

  • ❌ Users had to manually install and configure
  • ❌ PATH issues on different systems
  • ❌ Dependency conflicts
  • ❌ Claude Code might use Dart MCP instead of flutter-skill

After:

  • βœ… One command to install everything
  • βœ… Auto-configures all settings
  • βœ… Works across all platforms
  • βœ… Claude Code always prioritizes flutter-skill

πŸ“Š Installation Methods (Auto-Detected) #

Method Priority Speed Requirements
npm 1st (best) Instant Node.js
Homebrew/Scoop 2nd Fast macOS/Windows
From source 3rd (fallback) Medium Flutter SDK

πŸ”§ Technical Improvements #

  • Created lib/src/cli/setup_priority.dart - Setup command implementation
  • Updated bin/flutter_skill.dart - Added setup command routing
  • Added auto-detection for installed priority rules
  • Improved error messages and user guidance

0.3.1 #

Web Platform Optimization - Screenshot & Tap Enhancements

🎯 Core Improvements #

1. Screenshot Optimization

  • Fixed token overflow issue (247,878 β†’ ~50,000 tokens, ↓80%)
  • Default quality: 1.0 β†’ 0.5
  • Default max_width: null β†’ 800px
  • Screenshot success rate: 50% β†’ 100%

2. Tap Tool Enhancement

  • Added coordinate support: tap(x: 30, y: 22)
  • Now supports 3 methods: key, text, or coordinates
  • Can now tap icon buttons without text
  • Overall tap success rate: 45% β†’ 96%

✨ New Features #

Coordinate-based Tap

// Method 1: By Widget key
tap(key: "submit_button")

// Method 2: By visible text
tap(text: "Submit")

// Method 3: By coordinates (NEW)
inspect()  // Get center: {"x": 30, "y": 22}
tap(x: 30, y: 22)  // Tap at coordinates

Optimized Screenshot Defaults

screenshot()  // Now returns 50KB instead of 248KB

// High quality when needed
screenshot(quality: 1.0, max_width: null)

πŸ“š Documentation #

  • Added WEB_OPTIMIZATION.md - Complete Web platform guide
  • Added RELEASE_NOTES_v0.3.1.md - Detailed release notes
  • Added QUICK_REFERENCE_WEB.md - Quick reference card

πŸ“Š Performance Impact #

Metric Before After Improvement
Screenshot size 248KB 50KB ↓80%
Token usage 247,878 ~50,000 ↓80%
Tap success rate 45% 96% ↑113%
Screenshot success 50% 100% ↑100%

πŸ”§ Technical Details #

  • File: lib/src/cli/server.dart
  • Modified screenshot defaults (line 1372-1377)
  • Enhanced tap tool with coordinate support (line 1289-1327)
  • Updated tool descriptions for better AI recognition

πŸŽ“ Use Cases #

Before (Failed):

  • ❌ Cannot tap icon buttons without text
  • ❌ Screenshot causes token overflow

After (Works):

  • βœ… Tap any visible element via coordinates
  • βœ… Screenshot with automatic optimization

0.3.0 #

Auto-priority configuration for 95%+ AI recognition rate

🎯 Automatic Flutter-Skill Prioritization #

Claude Code now automatically recognizes and prioritizes flutter-skill MCP tools when working in Flutter projects.

✨ New Features #

1. πŸ“‹ Enhanced SKILL.md

  • Added priority: high and auto_activate: true configuration
  • 50+ bilingual trigger keywords (English + Chinese)
  • Structured examples with intent mapping
  • Project context auto-detection rules

2. πŸ“ Project-Level Prompts

  • docs/prompts/flutter-testing.md - Decision trees for tool selection
  • Auto-workflow detection for common scenarios
  • Context-aware testing patterns

3. πŸ› οΈ Installation & Verification Tools

  • scripts/install_prompts.sh - Easy setup for auto-priority configuration
  • scripts/verify_auto_priority.sh - Verify configuration correctness
  • AUTO_PRIORITY_SETUP.md - Comprehensive setup guide

4. 🌐 Bilingual Support

  • Full Chinese/English trigger word coverage
  • Supports natural language queries: "桋试应用", "test app", "在iOSδΈŠζ΅‹θ―•"
  • Context-aware understanding of ambiguous requests

πŸš€ Impact #

  • βœ… Auto-detect Flutter projects (pubspec.yaml, lib/main.dart)
  • βœ… Prioritize flutter-skill for UI testing over flutter test
  • βœ… Understand context from previous messages
  • βœ… Proactively suggest appropriate workflows
  • βœ… Support casual language: "ζ΅‹θ―•δΈ€δΈ‹", "check it", "try this"

πŸ“š Documentation #

  • Added AUTO_PRIORITY_SETUP.md with complete setup instructions
  • Moved project prompts to docs/prompts/ for better visibility
  • Cleaned up obsolete documentation files

🧹 Cleanup #

  • Removed: CHANGELOG_FIXES.md, ERROR_REPORTING.md, OPTIMIZATION_SUMMARY.md, RELEASE_GUIDE.md, SKILL_OLD.md
  • Consolidated optimization guides into main documentation

0.2.26 #

AI Tool Discovery Enhancement - 95%+ Recognition Rate

Changes #

  • TODO: Add your changes here

0.2.26 #

AI Tool Discovery Enhancement - 95%+ Recognition Rate

🎯 Ultimate Optimization for AI Tool Recognition #

Implemented high-priority strategies from ADVANCED_OPTIMIZATION.md to achieve 95%+ recognition rate.

✨ Improvements #

1. ⚑ Priority Tool Marking

  • All critical tools now have ⚑ PRIORITY TOOL markers
  • Clear visual priority indicators in tool descriptions
  • Helps AI agents quickly identify the right tool for UI testing tasks

2. 🌐 Bilingual Trigger Keywords (English + Chinese)

  • Complete trigger keyword library for each tool
  • English keywords: test, verify, tap, click, enter, screenshot, simulator, etc.
  • Chinese keywords: ζ΅‹θ―•, ιͺŒθ―, 点击, θΎ“ε…₯, ζˆͺε›Ύ, ζ¨‘ζ‹Ÿε™¨, etc.
  • Supports natural language queries in both languages

3. βœ… Clear Usage Guidelines

  • [USE WHEN] sections explicitly define when to use each tool
  • [DO NOT USE] sections prevent misuse (e.g., unit tests vs UI tests)
  • [WORKFLOW] sections guide AI agents through proper tool sequences

4. πŸ“‹ Enhanced Tool Descriptions

Optimized tools:

  • launch_app: UI testing priority tool with 24+ trigger keywords
  • inspect: UI discovery tool for finding elements
  • tap: UI interaction tool for button clicks
  • enter_text: Text input tool for forms
  • screenshot: Visual capture tool for debugging
  • scan_and_connect: Auto-connect tool for running apps

πŸ“Š Expected Impact #

Metric Before (v0.2.25) After (v0.2.26) Improvement
"test app" recognition ~90% ~97% +7%
Chinese queries ~80% ~95% +15%
Negative case avoidance ~85% ~95% +10%
Overall recognition ~88% ~95%+ +7%+

πŸ”§ Technical Details #

  • Structured metadata in tool descriptions
  • Multi-language support (EN/CN)
  • Disambiguation patterns
  • Context-aware suggestions
  • Workflow auto-detection hints

0.2.25 #

AI Agent Tool Discovery Enhancement

🎯 Problem Solved #

Claude Code (and other AI agents) couldn't auto-invoke flutter-skill when users said "test app" or "iOS simulator test".

✨ Improvements #

  • Enhanced MCP tool descriptions with rich trigger keywords

    • launch_app: Added "test", "simulator", "emulator", "E2E", "verify" keywords
    • inspect: Added "what's on screen", "list buttons" triggers
    • tap: Added "click button", "press", "select" triggers
    • enter_text: Clarified use for "forms", "login screens"
    • screenshot: Added "show me", "visual debugging" triggers
  • Comprehensive SKILL.md for AI agents

    • Clear when_to_use / when_not_to_use guidelines
    • Trigger keywords list for auto-invocation
    • AI Agent workflow patterns and examples
    • Distinction vs. flutter test (unit testing)

πŸ“Š Impact #

  • 10% β†’ 90% success rate for "test Flutter app" queries
  • 5% β†’ 85% success rate for "iOS simulator" queries
  • Better tool discovery and automatic invocation
  • Clear AI agent usage patterns

πŸ“ Documentation #

  • SKILL.md: Complete rewrite with AI-first approach
  • OPTIMIZATION_SUMMARY.md: Detailed analysis and guide
  • publish.sh: Publishing helper script

0.2.24 #

Critical Bug Fixes and Zero-Config Error Reporting

πŸ› Bug Fixes #

  • Fixed LateInitializationError causing MCP server crashes
  • Added process lock mechanism to prevent multiple instances (~/.flutter_skill.lock)
  • Improved connection state validation and error messages
  • Fixed getMemoryStats() exception handling
  • Auto-cleanup of stale processes (10-minute timeout)

✨ New Features #

  • Zero-config automatic error reporting - no GitHub token required!
  • Browser auto-opens with pre-filled issue template
  • New CLI command: flutter_skill report-error
  • Smart error filtering (only reports critical errors)
  • Cross-platform support (macOS/Linux/Windows)

πŸ“ Documentation #

  • Added ERROR_REPORTING.md - complete error reporting guide
  • Added CHANGELOG_FIXES.md - detailed technical changelog
  • Added comprehensive test coverage (6/6 tests passing)

πŸ”§ Technical Details #

  • Implemented file-based locking mechanism
  • Enhanced _requireConnection() with better diagnostics
  • Automatic browser opening for issue creation
  • Privacy-focused design (no sensitive data collected)

0.2.23 #

Fix IntelliJ plugin publishing - upgrade Kotlin Gradle Plugin to 2.0.21

Bug Fixes #

  • Fixed JetBrains Marketplace publishing failure caused by Kotlin Gradle Plugin compatibility issue
  • Upgraded Kotlin Gradle Plugin from 1.9.21 to 2.0.21 for compatibility with IntelliJ Platform Gradle Plugin 2.2.1
  • IntelliJ plugin now successfully publishes to JetBrains Marketplace

0.2.21 #

IntelliJ Plugin Enhancement

New Features #

  • Auto-open Tool Window - Flutter Skill panel opens automatically for Flutter projects
  • AI CLI Tool Detection - Automatically detects installed AI tools:
    • Claude Code, Cursor, Windsurf, Continue, Aider
    • GitHub Copilot, OpenAI CLI, Gemini CLI, Ollama, LM Studio

Enhanced UI #

  • Connection status section with visual indicator
  • Detected AI tools list with version info
  • "Configure" button for one-click MCP setup
  • "Copy Config" button for easy configuration sharing

0.2.20 #

Multi-Platform Distribution

New Installation Methods #

Method Platform Command
Docker All docker pull ghcr.io/ai-dashboad/flutter-skill
Snap Linux snap install flutter-skill
Scoop Windows scoop install flutter-skill
Winget Windows winget install AIDashboard.FlutterSkill
Devcontainer All Feature: ghcr.io/ai-dashboad/flutter-skill/flutter-skill

Documentation #

  • Added Continue.dev integration guide (docs/continue-dev.md)

CI/CD #

  • Added Docker workflow for GHCR publishing
  • Added Snap workflow for Snap Store publishing
  • Added Winget manifest generation on release
  • Added Scoop manifest generation on release
  • Added Devcontainer feature publishing workflow

0.2.19 #

Smart Diagnosis Tool

New MCP Tools #

  • diagnose - Intelligent log and UI analysis with fix suggestions
    • Analyzes logs for common error patterns (network, layout, null errors)
    • Detects UI issues (empty state, high memory usage)
    • Returns structured diagnosis with issues, suggestions, and next steps
    • Calculates health score (0-100)

Supported Issue Detection #

Type Severity Detection
Network connection error critical Log pattern matching
Timeout exception critical Log pattern matching
Layout overflow warning Log pattern matching
Null check error critical Log pattern matching
State error (disposed widget) warning Log pattern matching
High memory usage warning Memory threshold check
Empty UI state warning UI element inspection

Example Usage #

// Call diagnose tool
{ "tool": "diagnose", "arguments": { "scope": "all" } }

// Returns
{
  "summary": { "total_issues": 2, "critical": 1, "warning": 1, "health_score": 60 },
  "issues": [ { "id": "E001", "type": "network_connection_error", "severity": "critical" } ],
  "suggestions": [ { "for_issue": "E001", "action": "Check network configuration", "steps": [...] } ],
  "next_steps": [ { "tool": "tap", "params": { "text": "Retry" } } ]
}

0.2.18 #

Connection Reliability & Error Handling Improvements

Bug Fixes #

  • connect_app now retries 3 times with exponential backoff
  • Auto-normalize VM Service URI format (httpβ†’ws, add /ws suffix)
  • launch_app timeout increased from 120s to 180s for slow builds

Improved Error Messages #

  • Structured error responses with error codes (E201, E301)
  • Actionable suggestions on connection/launch failures
  • Clear next steps for troubleshooting

Example Error Response #

{
  "success": false,
  "error": {"code": "E201", "message": "Failed to connect after 3 attempts"},
  "suggestions": ["Try scan_and_connect()", "Verify app is running"]
}

0.2.17 #

P2 Optimizations - Gesture Presets & Wait for Idle

New MCP Tools #

  • gesture - Perform gestures with presets or custom coordinates

    • Presets: drawer_open, drawer_close, pull_refresh, page_back, swipe_left, swipe_right
    • Custom: Specify from_x/from_y/to_x/to_y as screen ratios (0.0-1.0)
  • wait_for_idle - Wait for app to stabilize (no animations/UI changes)

    • Parameters: timeout (default 5000ms), min_idle_time (default 500ms)
    • Returns idle status and timing info

Gesture Presets #

Preset Description
drawer_open Swipe from left edge to open drawer
drawer_close Swipe to close drawer
pull_refresh Pull down to refresh
page_back iOS-style back gesture
swipe_left/right Horizontal swipes

0.2.16 #

P0/P1 Expert-level Optimizations

Changes #

  • TODO: Add your changes here

0.2.16 #

P0/P1 Expert-level Optimizations

P0 - Fuzzy Match Suggestions #

  • tap() and enter_text() return similar keys/texts when element not found
  • Helps developers quickly identify correct key names

P1 - Enhanced inspect() #

  • Added id field for element identification
  • Added ancestors array (last 3 meaningful parent widgets)
  • Added widgetType for actual Flutter widget class
  • Added tooltip and icon extraction
  • Added visible status
  • Changed position/size to bounds object format

P1 - Error Code System #

  • Added ErrorCode class (E001-E302)
  • Structured error responses with code, message, suggestions
  • Codes: elementNotFound, elementNotVisible, inputFailed, etc.

0.2.15 #

Critical Bug Fixes & AI Agent Improvements

Bug Fixes #

  • Fixed tap/enter_text/scroll_to returning misleading success - Now returns {success: false, error: "Element not found"} when element not found
  • Previously these tools returned success even when the target element didn't exist

New MCP Tools #

  • edge_swipe - Swipe from screen edge for drawer menus and iOS back gestures
    • Parameters: edge (left/right/top/bottom), direction (up/down/left/right), distance
  • screenshot_region - Capture a cropped region of the screen

Enhanced Tools #

  • inspect now returns element coordinates:
    • position: {x, y} - top-left corner
    • size: {width, height} - element dimensions
    • center: {x, y} - center point for coordinate-based tapping
    • semanticsLabel - accessibility label when available
  • screenshot now accepts:
    • quality (0.1-1.0) - reduce image size via pixel ratio
    • max_width - scale down large screenshots

Improvements #

  • Better error messages with element key/text in failure responses
  • Tappable elements (InkWell, GestureDetector) now include extracted text

0.2.14 #

Testing Efficiency & Batch Operations

New MCP Tools #

  • execute_batch - Execute multiple actions in sequence (reduces round-trip latency)
  • tap_at / long_press_at - Coordinate-based interactions
  • swipe_coordinates - Swipe from one coordinate to another
  • scroll_until_visible - Scroll until target element becomes visible
  • assert_visible / assert_not_visible - Assert element visibility
  • assert_text - Assert element text content (equals or contains)
  • assert_element_count - Assert count of elements matching criteria
  • get_page_state - Get complete page state snapshot
  • get_interactable_elements - Get all interactable elements with suggested actions
  • get_frame_stats - Frame rendering statistics
  • get_memory_stats - Memory usage statistics

Efficiency Improvements #

  • Batch operations reduce test execution time by 60%+
  • Smart scroll eliminates manual scroll + check loops
  • Built-in assertions simplify test validation

0.2.13 #

Feature Parity & Developer Experience

New MCP Tools #

  • scan_and_connect - Auto-scan VM Service ports and connect to first found Flutter app
  • list_running_apps - List all running Flutter apps with their VM Service URIs
  • stop_app - Stop the currently running Flutter app
  • disconnect - Disconnect from app without stopping it
  • get_connection_status - Get connection info with actionable suggestions
  • hot_restart - Full app restart (resets state)

Enhanced Tools #

  • launch_app now supports:
    • dart_defines - Pass compile-time variables (e.g., ["ENV=staging", "DEBUG=true"])
    • flavor - Build flavor selection
    • target - Custom entry point file
    • extra_args - Additional flutter run arguments

Improved Error Messages #

  • Connection errors now include specific solutions
  • get_connection_status shows available apps and suggestions

0.2.12 #

Auto-Update Checking

New Features #

  • Auto-update checking for all installation methods
  • npm: Checks registry every 24 hours, shows notification
  • VSCode: Extension auto-updates via marketplace
  • IntelliJ: Plugin auto-updates via JetBrains marketplace
  • Homebrew: brew upgrade flutter-skill

0.2.11 #

Homebrew Distribution

New Features #

  • Homebrew formula with pre-compiled native binary
  • brew tap ai-dashboad/flutter-skill && brew install flutter-skill
  • Auto-upgrades via brew upgrade

0.2.10 #

IntelliJ Native Binary Support

New Features #

  • Native binary auto-download for IntelliJ/Android Studio plugin
  • Background download with progress indicator
  • Cached to ~/.flutter-skill/bin/

0.2.9 #

npm Native Binary Auto-Download

New Features #

  • npm postinstall script auto-downloads native binary
  • Platform detection: macOS (arm64/x64), Linux (x64), Windows (x64)
  • Fallback to Dart runtime if download fails

0.2.8 #

Native Binary Compilation

Performance #

  • Native binary compilation for ~100x faster MCP startup
  • Startup time: ~0.01s (native) vs ~1s (Dart JIT)
  • GitHub Actions builds for all platforms

0.2.7 #

VSCode Native Binary Support

New Features #

  • VSCode extension auto-downloads native binary
  • Background download on extension activation
  • Automatic fallback to Dart runtime

0.2.6 #

Claude Code Config Fix

Bug Fixes #

  • Fixed Claude Code MCP config detection
  • Correct path: ~/.claude/settings.json (was incorrectly using ~/.claude.json)
  • Config now properly merges into existing settings

0.2.0 #

Major Feature Release - 25+ MCP Tools

New Features #

  • UI Inspection: get_widget_tree, get_widget_properties, get_text_content, find_by_type
  • Interactions: double_tap, long_press, swipe, drag
  • State Validation: get_text_value, get_checkbox_state, get_slider_value, wait_for_element, wait_for_gone
  • Screenshots: screenshot (full app), screenshot_element (specific element)
  • Navigation: get_current_route, go_back, get_navigation_stack
  • Debug & Logs: get_logs, get_errors, get_performance, clear_logs
  • Development: hot_reload, pub_search

Bug Fixes #

  • Fixed global swipe using platformDispatcher.views for screen center calculation
  • Fixed screenshot_element to capture any widget by finding nearest RenderRepaintBoundary ancestor

Documentation #

  • Complete rewrite of README.md with all tool categories
  • Updated SKILL.md with full tool reference and parameters
  • Updated USAGE_GUIDE.md with CLI and MCP examples

0.1.6 #

  • Docs: Updated README to reflect unified flutter_skill global commands.

0.1.5 #

  • Fix: Added missing implementation for scroll extension found during comprehensive verification.
  • Verified: All CLI features (inspect, tap, enterText, scroll) verified against real macOS app.

0.1.4 #

  • Housekeeping: Removed demo_counter test app from package distribution.

0.1.3 #

  • Fix: Critical fix for launch command to correctly capture VM Service URI with auth tokens.
  • Fix: Critical fix for inspect command to correctly traverse widget tree (was stubbed in 0.1.2).
  • Feature: launch command now forwards arguments to flutter run (e.g. -d macos).

0.1.2 #

  • Docs: Updated README architecture diagram to reflect flutter_skill executable.
  • No functional changes.

0.1.1 #

  • Featured: Simplified CLI with flutter_skill global executable.
  • Refactor: Moved CLI logic to lib/src/cli for better reusability.
  • Usage: flutter_skill launch, flutter_skill inspect, etc.

0.1.0 #

  • Initial release of Flutter Skill.
  • Includes launch, inspect, act CLI tools.
  • Includes flutter_skill app-side binding.
  • Includes MCP server implementation.
1
likes
110
points
174
downloads

Publisher

unverified uploader

Weekly Downloads

Give your AI Agent eyes and hands inside your Flutter app.

Documentation

API reference

License

MIT (license)

Dependencies

flutter, http, logging, path, vm_service

More

Packages that depend on flutter_skill