roveflow init creates every file Roveflow needs. After that, you wire four small things into your own app code. The one-liner is the only truly unavoidable edit — the rest is optional or depends on your project already having certain helpers.
Add the registration call to main.dart
Import the tools file and call The registration only runs in debug mode. Release builds do not include the tools and pay zero runtime cost.
registerMcpInteractionTools() inside your kDebugMode block:Add mcp_toolkit to pubspec
flutter pub get. Roveflow uses MCPToolkitBinding for tool registration; it is the only runtime dependency the interaction tools pull in.Provide a navigate.pop() helper
The bundled Then attach the key in If your project already exposes a
lib/core/mcp/mcp_interaction_tools.dart (written by roveflow init) imports a top-level navigate.pop() to back out of routes and modals. The CLI does not write this helper; add it yourself:MaterialApp:navigate.pop() helper elsewhere, point the import in mcp_interaction_tools.dart at that file instead of adding a new one.Verify .mcp.json
roveflow init writes .mcp.json using env-var substitution:ROVEFLOW_FLUTTER_INSPECTOR is exported to the absolute path of your locally built flutter_inspector_mcp binary (see Build flutter_inspector_mcp). To avoid the env var, replace the command field with the absolute path directly.The flags matter:--dart-vm-port=8181must match the port you pass toflutter run(--vm-service-port=8181). If port 8181 is occupied by another Flutter process, change both to the same free port (e.g., 8182).--resourcesenables the screenshot resource the agent uses for before/after assertions.--imageslets the agent read screenshot blobs back.
Fill in docs/roveflow/scenarios.md
roveflow init wrote a starter inventory. Replace cold-setup with your app’s real first-run flow — screen titles, login touches, onboarding dismissals — so the agent can reach a known home state from a clean install.Authoring guide: Authoring scenarios. Field reference: Scenario schema.What you don’t have to touch
- Widget code — the default navigation strategy uses visible text, the Flutter semantics tree, and vision reasoning.
ValueKeyis a tuning step, not a prerequisite. - Release builds — the registration only runs under
kDebugMode. - CI config — Roveflow is informational today. Run it locally and pre-merge. Safe CI gating and the determinism knobs land next.