{
  "markdown": "<p align=\"center\">\n  <a href=\"https://github.com/ai-dashboad/flutter-skill\">\n    <img src=\"assets/demo-teaser.gif\" alt=\"flutter-skill CLI demo — nav, tap, type, screenshot across websites\" width=\"640\">\n  </a>\n</p>\n\n<h1 align=\"center\">flutter-skill</h1>\n\n<p align=\"center\">\n  <strong>Give any AI agent eyes and hands inside any running app.</strong><br>\n  10 platforms. Zero test code. One MCP server.\n</p>\n\n<p align=\"center\">\n  <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>\n  <a href=\"https://pub.dev/packages/flutter_skill\"><img src=\"https://img.shields.io/pub/v/flutter_skill.svg\" alt=\"pub.dev\"></a>\n  <a href=\"https://www.npmjs.com/package/flutter-skill\"><img src=\"https://img.shields.io/npm/v/flutter-skill.svg\" alt=\"npm\"></a>\n  <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>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#30-second-demo\">Demo</a> •\n  <a href=\"#quick-start\">Quick Start</a> •\n  <a href=\"#use-with-ai-platforms\">AI Platforms</a> •\n  <a href=\"#10-platforms-one-tool\">Platforms</a> •\n  <a href=\"#why-not-playwright--appium--detox\">vs Others</a> •\n  <a href=\"docs/USAGE_GUIDE.md\">Docs</a>\n</p>\n\n<p align=\"center\"><b>🚀 Zero config. Zero test code. Just talk to your AI.</b></p>\n\n<p align=\"center\"><sub>If this saves you time, please consider <a href=\"https://github.com/ai-dashboad/flutter-skill/stargazers\">starring the repo ⭐</a> — it helps others find it!</sub></p>\n\n---\n\n## 30-Second Demo\n\nhttps://github.com/user-attachments/assets/d4617c73-043f-424c-9a9a-1a61d4c2d3c6\n\n> **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.\n\n---\n\n## Why This Exists\n\nWriting E2E tests is painful. Maintaining them is worse. **flutter-skill** takes a different approach:\n\n- 🔌 **Connects any AI agent** (Claude, Cursor, Windsurf, Copilot, OpenClaw) directly to your running app via [MCP](https://modelcontextprotocol.io/)\n- 👀 **The agent sees your screen** — taps buttons, types text, scrolls, navigates — like a human tester who never sleeps\n- ✅ **Zero test code** — no Page Objects, no XPath, no brittle selectors. Just plain English\n- ⚡ **Zero config** — 2 lines of code, works on all 10 platforms\n\n```\nYou: \"Test the checkout flow with an empty cart, then add 3 items and complete purchase\"\n\nYour AI agent handles the rest — screenshots, taps, text entry, assertions, navigation.\nNo Page Objects. No XPath. No brittle selectors. Just plain English.\n```\n\n---\n\n## Quick Start\n\n**1. Install** (30 seconds)\n\n```bash\nnpm install -g flutter-skill\n```\n\n**2. Add to your AI** (copy-paste into MCP config)\n\n```json\n{\n  \"mcpServers\": {\n    \"flutter-skill\": {\n      \"command\": \"flutter-skill\",\n      \"args\": [\"server\"]\n    }\n  }\n}\n```\n\n> Works with **Claude Desktop, Cursor, Windsurf, Copilot, Cline, OpenClaw** — any MCP-compatible agent.\n\n**3. Add to your app** (2 lines for Flutter)\n\n```dart\nimport 'package:flutter_skill/flutter_skill.dart';\n\nvoid main() {\n  if (kDebugMode) FlutterSkillBinding.ensureInitialized();\n  runApp(MyApp());\n}\n```\n\n**4. Test** — just talk to your AI:\n\n> *\"Launch my app, explore every screen, and report any bugs\"*\n\nThat's it. **Zero configuration. Zero test code. Works in under 60 seconds.**\n\n<details>\n<summary>📦 More install methods (Homebrew, Scoop, Docker, IDE, Agent Skill)</summary>\n\n| Method | Command |\n|--------|---------|\n| npm | `npm install -g flutter-skill` |\n| Homebrew | `brew install ai-dashboad/flutter-skill/flutter-skill` |\n| Scoop | `scoop install flutter-skill` |\n| Docker | `docker pull ghcr.io/ai-dashboad/flutter-skill` |\n| pub.dev | `dart pub global activate flutter_skill` |\n| VSCode | Extensions → \"Flutter Skill\" |\n| JetBrains | Plugins → \"Flutter Skill\" |\n| Agent Skill | `npx skills add ai-dashboad/flutter-skill` |\n| Zero-config | `flutter-skill init` (auto-detects & patches your app) |\n\n</details>\n\n---\n\n## Use with AI Platforms\n\n### MCP Server Mode (IDE Integration)\n\nWorks with any MCP-compatible AI tool. One config line:\n\n```json\n{\n  \"mcpServers\": {\n    \"flutter-skill\": {\n      \"command\": \"flutter-skill\",\n      \"args\": [\"server\"]\n    }\n  }\n}\n```\n\n| Platform | Config File | Status |\n|----------|-------------|--------|\n| **Cursor** | `.cursor/mcp.json` | ✅ |\n| **Claude Desktop** | `claude_desktop_config.json` | ✅ |\n| **Windsurf** | `~/.codeium/windsurf/mcp_config.json` | ✅ |\n| **VSCode Copilot** | `.vscode/mcp.json` | ✅ |\n| **Cline** | VSCode Settings → Cline → MCP | ✅ |\n| **OpenClaw** | Skill or MCP config | ✅ |\n| **Continue.dev** | `.continue/config.json` | ✅ |\n\n### HTTP Serve Mode (CLI & Automation)\n\nFor standalone browser automation, CI/CD pipelines, or remote access:\n\n```bash\n# Start server\nflutter-skill serve https://your-app.com\n\n# Use CLI client commands\nflutter-skill nav https://google.com\nflutter-skill snap                    # Accessibility tree (99% fewer tokens)\nflutter-skill screenshot /tmp/ss.jpg\nflutter-skill tap \"Login\"\nflutter-skill type \"hello@example.com\"\nflutter-skill eval \"document.title\"\nflutter-skill tools                   # List all available tools\n```\n\n| Command | Description |\n|---------|-------------|\n| `nav <url>` | Navigate to URL |\n| `snap` | Accessibility tree snapshot |\n| `screenshot [path]` | Take screenshot |\n| `tap <text\\|ref\\|x y>` | Tap element |\n| `type <text>` | Type via keyboard |\n| `key <key> [mod]` | Press key |\n| `eval <js>` | Execute JavaScript |\n| `title` | Get page title |\n| `text` | Get visible text |\n| `hover <text>` | Hover element |\n| `upload <sel> <file>` | Upload file |\n| `tools` | List tools |\n| `call <tool> [json]` | Call any tool |\n\nSupports `--port=N`, `--host=H` flags and `FS_PORT`/`FS_HOST` env vars.\n\n### Two Modes Compared\n\n| | `server` (MCP stdio) | `serve` (HTTP) |\n|---|---|---|\n| **Use case** | IDE / AI agent integration | CLI / automation / CI/CD |\n| **Protocol** | MCP (JSON-RPC over stdio) | HTTP REST |\n| **Tools** | 253 (dynamic per page) | 246 (generic) |\n| **Browser** | Auto-launches Chrome | Connects to existing Chrome |\n| **Best for** | Cursor, Claude, VSCode | OpenClaw, scripts, pipelines |\n\n> **Full CLI client reference:** [docs/CLI_CLIENT.md](docs/CLI_CLIENT.md)\n\n---\n\n## 10 Platforms, One Tool\n\nMost testing tools work on 1-2 platforms. flutter-skill works on **10**.\n\n| Platform | SDK | Test Score |\n|----------|-----|:----------:|\n| **Flutter** (iOS/Android/Web) | [`flutter_skill`](https://pub.dev/packages/flutter_skill) | ✅ 188/195 |\n| **React Native** | [`sdks/react-native`](sdks/react-native/) | ✅ 75/75 |\n| **Electron** | [`sdks/electron`](sdks/electron/) | ✅ 75/75 |\n| **Tauri** (Rust) | [`sdks/tauri`](sdks/tauri/) | ✅ 75/75 |\n| **Android** (Kotlin) | [`sdks/android`](sdks/android/) | ✅ 74/75 |\n| **KMP Desktop** | [`sdks/kmp`](sdks/kmp/) | ✅ 75/75 |\n| **.NET MAUI** | [`sdks/dotnet-maui`](sdks/dotnet-maui/) | ✅ 75/75 |\n| **iOS** (Swift/UIKit) | [`sdks/ios`](sdks/ios/) | ✅ 19/19 |\n| **Web** (any website) | [`sdks/web`](sdks/web/) | ✅ |\n| **Web CDP** (zero-config) | No SDK needed | ✅ 141/156 |\n\n**Total: 656/664 tests passing (98.8%)** — each platform tested against a complex social media app with 50+ elements.\n\n---\n\n## ⚡ Performance\n\nReal benchmarks from automated test runs against a complex social media app:\n\n| Operation | Web (CDP) | Electron | Android |\n|-----------|:---------:|:--------:|:-------:|\n| `connect` | 93 ms | 55 ms | 103 ms |\n| `tap` | **1 ms** | **1 ms** | **2 ms** |\n| `enter_text` | **1 ms** | **1 ms** | **2 ms** |\n| `inspect` | 3 ms | 12 ms | 10 ms |\n| `snapshot` | **2 ms** | **8 ms** | **29 ms** |\n| `screenshot` | **31 ms** | **80 ms** | **88 ms** |\n| `eval` | **1 ms** | — | — |\n\n**Token efficiency:** `snapshot()` returns a structured element tree instead of an image — **87–99% fewer tokens** than sending screenshots to your AI agent.\n\n**How fast is that?** A `tap` takes 1–2 ms end-to-end. Browser automation tools like Playwright and Selenium typically take 50–100 ms for the same operation. That's 50–100× faster, because flutter-skill talks directly to the app runtime instead of going through WebDriver or CDP indirection.\n\n### Heavy DOM Sites (Real-World)\n\nTested 15 MCP tools against production websites — **75/75 passed, zero timeouts:**\n\n| Site | Tools | Total Time | `snapshot` | `screenshot` | `count_elements` |\n|------|:-----:|:----------:|:----------:|:------------:|:----------------:|\n| YouTube | 15/15 ✅ | 6.9s | 43 ms | 30 ms | 4 ms |\n| Amazon | 15/15 ✅ | 14.2s | 1 ms | 5 ms | 2 ms |\n| Reddit | 15/15 ✅ | 17.9s | 6 ms | 32 ms | 51 ms |\n| Hacker News | 15/15 ✅ | 4.8s | 53 ms | 188 ms | 1 ms |\n| Wikipedia | 15/15 ✅ | 7.8s | 15 ms | 336 ms | 1 ms |\n\n> Total time includes page load. Tool execution is consistently sub-100ms even on heavy DOM sites.\n\n---\n\n## Why Not Playwright / Appium / Detox?\n\n| | flutter-skill | Playwright MCP | Appium | Detox |\n|---|:---:|:---:|:---:|:---:|\n| **MCP tools** | **253** | ~33 | ❌ | ❌ |\n| **Platforms** | **10** | 1 (web) | Mobile | React Native |\n| **Setup time** | 30 sec | Minutes | Hours | Hours |\n| **Test code needed** | ❌ None | ✅ Yes | ✅ Yes | ✅ Yes |\n| **AI-native (MCP)** | ✅ | ✅ | ❌ | ❌ |\n| **Self-healing tests** | ✅ | ❌ | ❌ | ❌ |\n| **Monkey/fuzz testing** | ✅ | ❌ | ❌ | ❌ |\n| **Visual regression** | ✅ | ❌ | ❌ | ❌ |\n| **Network mock/replay** | ✅ | ❌ | ❌ | ❌ |\n| **API + UI testing** | ✅ | ❌ | ❌ | ❌ |\n| **Multi-device sync** | ✅ | ❌ | Partial | ❌ |\n| **Accessibility audit** | ✅ | ❌ | ❌ | ❌ |\n| **i18n testing** | ✅ | ❌ | ❌ | ❌ |\n| **Performance monitoring** | ✅ | ❌ | ❌ | ❌ |\n| **Natural language** | ✅ | ❌ | ❌ | ❌ |\n| **Flutter support** | ✅ Native | Partial | Partial | ❌ |\n| **Desktop apps** | ✅ | ✅ | ❌ | ❌ |\n\n| **AI page understanding** | ✅ AX Tree | ❌ Screenshots | ❌ | ❌ |\n| **Boundary/security test** | ✅ 13 payloads | ❌ | ❌ | ❌ |\n| **Batch actions** | ✅ 5+/call | 1/call | 1/call | 1/call |\n\n**flutter-skill is the only AI-native E2E testing tool that works across mobile, web, and desktop — with 7× more tools than the nearest competitor.**\n\n---\n\n## CLI Commands\n\n```bash\n# 🤖 AI autonomous exploration — finds bugs automatically\nflutter-skill explore https://my-app.com --depth=3\n\n# 🐒 Monkey/fuzz testing — random actions, crash detection\nflutter-skill monkey https://my-app.com --actions=100 --seed=42\n\n# 🚀 Parallel multi-platform testing\nflutter-skill test --url https://my-app.com --platforms web,electron,android\n\n# 🌐 Zero-config WebMCP server — any website becomes testable\nflutter-skill serve https://my-app.com\n```\n\n---\n\n## 🧠 AI-Native: 95% Fewer Tokens\n\nMost AI testing tools send **screenshots** to the LLM — each one costs ~4,000 tokens.\n\nflutter-skill uses Chrome's **Accessibility Tree** to give your AI a compact semantic summary of any page:\n\n```json\n// page_summary → ~200 tokens (vs ~4,000 for a screenshot)\n{\n  \"title\": \"Shopping Cart\",\n  \"nav\": [\"Home\", \"Products\", \"Cart\", \"Account\"],\n  \"forms\": [{\"input:Coupon Code\": \"text\"}],\n  \"buttons\": [\"Apply\", \"Checkout\", \"Continue Shopping\"],\n  \"features\": {\"search\": true, \"pagination\": true},\n  \"links\": 47, \"inputs\": 3\n}\n```\n\nThen batch multiple actions in one call:\n\n```json\n// explore_actions → 5 actions per call (vs 5 separate tool calls)\n{\"actions\": [\n  {\"type\": \"fill\", \"target\": \"input:Coupon Code\", \"value\": \"SAVE20\"},\n  {\"type\": \"tap\", \"target\": \"button:Apply\"},\n  {\"type\": \"tap\", \"target\": \"button:Checkout\"},\n  {\"type\": \"fill\", \"target\": \"input:Email\", \"value\": \"test@example.com\"},\n  {\"type\": \"tap\", \"target\": \"button:Continue\"}\n]}\n```\n\n**Result:** Your AI agent tests faster, costs less, and understands pages better than screenshot-based tools.\n\n| | flutter-skill | Screenshot-based tools |\n|---|:---:|:---:|\n| Tokens per page | **~200** | ~4,000 |\n| Actions per call | **5+** | 1 |\n| Understands semantics | ✅ roles, names, state | ❌ pixels only |\n| Works with Shadow DOM | ✅ | ❌ |\n\n---\n\n## What It Can Do\n\n<table>\n<tr>\n<td width=\"50%\" valign=\"top\">\n\n### 👀 See\n- `screenshot` — capture the screen\n- `inspect_interactive` — all tappable/typeable elements with semantic refs\n- `find_element` / `wait_for_element`\n- `get_elements` — full element tree\n\n</td>\n<td width=\"50%\" valign=\"top\">\n\n### 👆 Interact\n- `tap` / `long_press` / `swipe` / `drag`\n- `enter_text` / `set_text` / `clear_text`\n- `scroll` — all directions\n- `go_back` / `press_key`\n\n</td>\n</tr>\n<tr>\n<td valign=\"top\">\n\n### 🔍 Inspect (v0.8.0)\n- **Semantic refs**: `button:Login`, `input:Email`\n- Stable across UI changes\n- `tap(ref: \"button:Submit\")`\n- 7 roles: button, input, toggle, slider, select, link, item\n\n</td>\n<td valign=\"top\">\n\n### 🚀 Control\n- `launch_app` — launch with flavors\n- `hot_reload` / `hot_restart`\n- `get_logs` / `get_errors`\n- `scan_and_connect` — auto-find apps\n\n</td>\n</tr>\n</table>\n\n<details>\n<summary><strong>253 tools — full reference</strong></summary>\n\n**AI Explore:** `page_summary`, `explore_actions`, `boundary_test`, `explore_report`\n\n**Launch & Connect:** `launch_app`, `scan_and_connect`, `connect_cdp`, `hot_reload`, `hot_restart`, `list_sessions`, `switch_session`, `close_session`, `disconnect`, `stop_app`\n\n**Screen:** `screenshot`, `screenshot_region`, `screenshot_element`, `native_screenshot`, `inspect`, `inspect_interactive`, `snapshot`, `get_widget_tree`, `find_by_type`, `get_text_content`, `get_visible_text`\n\n**Interaction:** `tap`, `double_tap`, `long_press`, `enter_text`, `set_text`, `clear_text`, `swipe`, `scroll_to`, `drag`, `go_back`, `press_key`, `type_text`, `hover`, `fill`, `select_option`, `set_checkbox`, `focus`, `blur`, `native_tap`, `native_input_text`, `native_swipe`\n\n**Smart Testing:** `smart_tap`, `smart_enter_text`, `smart_assert` (self-healing with fuzzy match)\n\n**Assertions:** `assert_text`, `assert_visible`, `assert_not_visible`, `assert_element_count`, `assert_batch`, `wait_for_element`, `wait_for_gone`, `wait_for_idle`, `wait_for_stable`, `wait_for_url`, `wait_for_text`, `wait_for_element_count`\n\n**Visual Regression:** `visual_baseline_save`, `visual_baseline_compare`, `visual_baseline_update`, `visual_regression_report`, `visual_verify`, `visual_diff`, `compare_screenshot`\n\n**Network Mock:** `mock_api`, `mock_clear`, `record_network`, `replay_network`, `intercept_requests`, `clear_interceptions`, `block_urls`, `http_request`\n\n**API Testing:** `api_request`, `api_assert`\n\n**Coverage & Reliability:** `coverage_start`, `coverage_stop`, `coverage_report`, `coverage_gaps`, `retry_on_fail`, `stability_check`\n\n**Data-Driven:** `test_with_data`, `generate_test_data`\n\n**Multi-Device:** `multi_connect`, `multi_action`, `multi_compare`, `multi_disconnect`, `parallel_snapshot`, `parallel_tap`\n\n**Accessibility:** `accessibility_audit`, `a11y_full_audit`, `a11y_tab_order`, `a11y_color_contrast`, `a11y_screen_reader`\n\n**i18n:** `set_locale`, `verify_translations`, `i18n_snapshot`\n\n**Performance:** `perf_start`, `perf_stop`, `perf_report`, `get_performance`, `get_frame_stats`, `get_memory_stats`\n\n**Session:** `save_session`, `restore_session`, `session_diff`\n\n**Recording & Export:** `record_start`, `record_stop`, `record_export` (Playwright, Cypress, XCUITest, Espresso, Detox, Maestro, +5 more), `video_start`, `video_stop`\n\n**Auth:** `auth_inject_session`, `auth_biometric`, `auth_otp`, `auth_deeplink`\n\n**CDP Browser:** `navigate`, `reload`, `go_forward`, `get_title`, `get_page_source`, `eval`, `get_tabs`, `new_tab`, `switch_tab`, `close_tab`, `get_cookies`, `set_cookie`, `clear_cookies`, `get_local_storage`, `set_local_storage`, `clear_local_storage`, `generate_pdf`, `set_viewport`, `emulate_device`, `throttle_network`, `go_offline`, `set_geolocation`, `set_timezone`, `set_color_scheme`\n\n**Debug:** `get_logs`, `get_errors`, `get_console_messages`, `get_network_requests`, `diagnose`, `diagnose_project`, `reset_app`\n\n</details>\n\n---\n\n## Platform Setup\n\n<details>\n<summary><strong>Flutter</strong> (iOS / Android / Web)</summary>\n\n```yaml\ndependencies:\n  flutter_skill: ^0.9.37\n```\n\n```dart\nimport 'package:flutter_skill/flutter_skill.dart';\n\nvoid main() {\n  if (kDebugMode) FlutterSkillBinding.ensureInitialized();\n  runApp(MyApp());\n}\n```\n\n</details>\n\n<details>\n<summary><strong>React Native</strong></summary>\n\n```bash\nnpm install flutter-skill-react-native\n```\n\n```js\nimport FlutterSkill from 'flutter-skill-react-native';\nFlutterSkill.start();\n```\n\n</details>\n\n<details>\n<summary><strong>Electron</strong></summary>\n\n```bash\nnpm install flutter-skill-electron\n```\n\n```js\nconst { FlutterSkillBridge } = require('flutter-skill-electron');\nFlutterSkillBridge.start(mainWindow);\n```\n\n</details>\n\n<details>\n<summary><strong>iOS (Swift)</strong></summary>\n\n```swift\n// Swift Package Manager: FlutterSkillSDK\nimport FlutterSkill\nFlutterSkillBridge.shared.start()\n\nText(\"Hello\").flutterSkillId(\"greeting\")\n```\n\n</details>\n\n<details>\n<summary><strong>Android (Kotlin)</strong></summary>\n\n```kotlin\nimplementation(\"com.flutterskill:flutter-skill:0.8.0\")\n\nFlutterSkillBridge.start(this)\n```\n\n</details>\n\n<details>\n<summary><strong>Tauri (Rust)</strong></summary>\n\n```toml\n[dependencies]\nflutter-skill-tauri = \"0.8.0\"\n```\n\n</details>\n\n<details>\n<summary><strong>KMP Desktop</strong></summary>\n\nAdd Gradle dependency — see [`sdks/kmp`](sdks/kmp/) for details.\n\n</details>\n\n<details>\n<summary><strong>.NET MAUI</strong></summary>\n\nAdd NuGet package — see [`sdks/dotnet-maui`](sdks/dotnet-maui/) for details.\n\n</details>\n\n---\n\n## Example Prompts\n\nJust tell your AI what to test:\n\n| Prompt | What happens |\n|--------|-------------|\n| *\"Test login with wrong password\"* | Screenshots → enters creds → taps login → verifies error |\n| *\"Explore every screen and report bugs\"* | Systematically navigates all screens, tests all elements |\n| *\"Fill registration with edge cases\"* | Tests emoji 🌍, long strings, empty fields, special chars |\n| *\"Compare checkout flow on iOS and Android\"* | Runs same test on both platforms, compares screenshots |\n| *\"Take screenshots of all 5 tabs\"* | Taps each tab, captures state |\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n```bash\ngit clone https://github.com/ai-dashboad/flutter-skill\ncd flutter-skill\ndart pub get\ndart run bin/flutter_skill.dart server  # Start MCP server\n```\n\n---\n\n## Links\n\n| | |\n|---|---|\n| 📦 [pub.dev](https://pub.dev/packages/flutter_skill) | 🧩 [VSCode](https://marketplace.visualstudio.com/items?itemName=AIDashboard.flutter-skill) |\n| 📦 [npm](https://www.npmjs.com/package/flutter-skill) | 🧩 [JetBrains](https://plugins.jetbrains.com/plugin/29991-flutter-skill) |\n| 🍺 [Homebrew](https://github.com/ai-dashboad/homebrew-flutter-skill) | 📖 [Docs](docs/USAGE_GUIDE.md) |\n| 🤖 [Agent Skill](https://skills.sh/ai-dashboad/flutter-skill) | 📋 [Changelog](CHANGELOG.md) |\n\n---\n\n<p align=\"center\">\n  <strong>⭐ If flutter-skill saves you time, star it so others can find it too!</strong>\n</p>\n\n<p align=\"center\">MIT License © 2025</p>\n",
  "bytes": 19145,
  "sha": "319b74157f29a5dcff2308fe38aa8941747e2b0b78525cd91ba761eabe3b1177",
  "repo_slug": "ai-dashboad/flutter-skill",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ai_dashboad_flutter_skill_36fa4e54/readme"
}