关于 flutter-mcp-cli-runtime-validation
该技能通过 `flutter-mcp-toolkit` 和简短的命令行流程验证运行中的 Flutter 应用,供执行运行时检查的 Agent 使用。它涵盖截图、布局信息和应用错误检查,并说明常见配置与捕获故障的处理方式。
主要功能
- 01两步运行时验证
- 02Doctor 预检
- 03截图与布局检查
- 04获取应用错误
- 05捕获回退与重试指引
适用场景
- 01验证 Flutter 应用变更
- 02检查截图捕获和布局元数据
- 03诊断缺失的工具包检测能力
- 04比较变更前后的视觉证据
MCP 相关
通过 `flutter-mcp-toolkit` 及其 MCP 工具包扩展,检查和验证运行中的 Flutter 应用。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ arenukvern/ mcp_flutter --skill flutter-mcp-cli-runtime-validation安装后在 Claude Code 中输入/flutter-mcp-cli-runtime-validation确认已加载。
详细介绍
Flutter MCP CLI 运行时验证
当你需要通过 flutter-mcp-toolkit 进行 Agent 式运行时验证,并尽量减少操作步骤时,使用此技能。
两步流程
- 以调试模式启动 Flutter 应用。
- 运行一条 CLI 命令:
dart run mcp_server_dart/bin/flutter_mcp_toolkit.dart --save-images --output-dir .flutter_mcp/runtime_validation validate-runtime \
--target ws://127.0.0.1:8181/<token>/ws \
--timeout-ms 10000 \
--post-reload-delay-ms 500 \
--after-reload
也可以在同一条命令中安装技能:
dart run mcp_server_dart/bin/flutter_mcp_toolkit.dart validate-runtime \
--target ws://127.0.0.1:8181/<token>/ws \
--install-skill
此流程的权限行为:
validate-runtime仅用于视觉捕获,保持只读/写入权限,并默认使用auto_request_once。doctor保持只读。- 在 macOS 上,屏幕录制权限属于运行
flutter-mcp-toolkit的宿主进程。 - 在 Web 上:
desktop_window使用 macOS ScreenCaptureKit,然后使用 Chrome CDP(Page.captureScreenshot);Linux/Windows 在远程调试可访问时使用 CDP。如果发现失败,请传入--web-browser-debugging-port。对于 Web 目标,请传入--flutter-device chrome,避免验证误选 macOS 宿主的desktop_window。 - 执行器恢复机制会重试一次宿主捕获(截图载荷中为
desktopCaptureRetried)。如果desktop_window仍然失败(包括检测到平台视图时),validate-runtime会使用flutter_layer重试一次。请检查data.summary.captureFallbackUsed。 - 如果只需要一个 URI,可以传入 VM URI 作为全局参数
--vm-service-uri,而不是使用validate-runtime --target。
validate-runtime 必须验证的内容
- Doctor 预检通过关键检查。
- 存在所需的工具包扩展:
ext.mcp.toolkit.app_errorsext.mcp.toolkit.view_detailsext.mcp.toolkit.view_screenshotsext.mcp.toolkit.inspect_widget_at_point
- 截图捕获正常。
- 可获取视图详情(布局元数据)。
- 可检索应用错误。
- 如果启用了
--after-reload,重新加载后的截图也能正常捕获。
输出处理
- 使用
data.summary作为自动化的通过/失败状态。 - 使用
data.summary.capturePlatformViewsDetected和captureFocusAttempted进行平台视图路由。 - 使用
data.summary.captureFallbackUsed查看desktop_window尝试失败后是否运行了flutter_layer重试(包括检测到平台视图时)。 - 使用
data.steps查看每个步骤的证据和重试情况。 - 使用
data.doctor.checks说明设置方面的阻碍。 - 启用
--save-images时,使用data.summary.screenshotFiles获取已保存的截图路径。 - 启用
--save-images时,从步骤数据中读取截图文件 URL。 - 对于视觉调试报告,还要运行:
exec --name capture_ui_snapshot --args '{"errorsCount":4,"compress":true,"includeViewDetails":true,"includeErrors":true}'exec --name inspect_widget_at_point --args '{"x":<int>,"y":<int>}'
失败规则
- 如果缺少工具包扩展,请停止并报告埋点缺失,并给出确切修复方法:
- 将
mcp_toolkit添加到应用依赖项 - 确保在
runApp之前运行MCPToolkitBinding.instance.bootstrapFlutter(...)或等效的手动初始化 - 热重启或重新运行应用
- 将
- 如果首次显式 URI 连接失败,对于可重试的连接错误会自动重试。
- 如果截图为空白,请确认应用窗口可见,然后重试。
- 如果 macOS 视觉捕获被拒绝,请使用:
dart run mcp_server_dart/bin/flutter_mcp_toolkit.dart permissions statusdart run mcp_server_dart/bin/flutter_mcp_toolkit.dart permissions requestdart run mcp_server_dart/bin/flutter_mcp_toolkit.dart permissions open-settings
- 如果应用无法埋点,不要声称已成功检查截图/布局/错误。
视觉 QA 与源码映射规则
- 始终比较更改前后的截图证据。
- 对于每个报告的视觉问题,提供坐标和
inspect_widget_at_point输出。 - 在可用时,使用
get_app_errors的顶部堆栈帧(file、line、column)将缺陷映射到源码。 - 除非明确要求,否则不要使用
debug_dump_*。
挑战场景(始终明确指出)
- 没有正在运行的调试应用:
doctor在vm_target_reachable上发生严重故障;继续前请先启动应用。 - 目标 URI/token 错误:视为连接不匹配,并使用准确的
app.debugPort.wsUri重试。 - 已添加工具包,但扩展仍缺失:热重载通常不够,必须热重启或完整重新运行。
- 应用无法修改(无法添加工具包):报告检查不可用,不要猜测。
评论
支持 Markdown