examples/counter_app/ directory in the Roveflow repo is a freshly-scaffolded Flutter counter app with Roveflow installed. It ships as the reference install for the roveflow init flow — if this example breaks, the CLI is broken.
Layout
roveflow init on demand):
.claude/skills/roveflow/.claude/commands/roveflow.md.claude/agents/roveflow-runner.md.mcp.json
Run it locally
From the Roveflow repo root:roveflow init, edit .mcp.json to point the flutter-inspector command at your local flutter_inspector_mcp binary.
Once the simulator shows the counter, in Claude Code:
What roveflow init wrote
.claude/skills/roveflow/— the full skill (SKILL.md + 10 references)..claude/commands/roveflow.md— slash command..claude/agents/roveflow-runner.md— agent body.lib/core/mcp/mcp_interaction_tools.dart— MCP tools drop-in..mcp.json—flutter-inspectorconfig.docs/roveflow/scenarios.md— starter template, overwritten in-repo with the counter-app cold-setup.
The hand-written pieces
Five files are committed in git becauseroveflow init cannot generate them automatically for an existing app:
-
lib/main.dart— the standard counter scaffold plus thekDebugModeblock: -
lib/core/general_helpers/utils/navigation_util.dart— a minimalnavigate.pop()helper usingGlobalKey<NavigatorState>. New Flutter apps don’t ship this, and the MCP tools import it. Roveflow installs point at this exact path. -
lib/core/mcp/mcp_interaction_tools.dart— the bundled interaction tools, with<your_app>already substituted for this example’s package name. -
docs/roveflow/scenarios.md— filled with the counter app’s realcold-setupand anincrement-counterextended scenario. -
pubspec.yaml— standard Flutter app plus themcp_toolkitdependency.
The scenarios
Known gaps
Surfaced while dogfooding this example:<your_app>placeholder substitution works for theinitcommand, but a team copying files manually needs to substitute<your_app>by hand. The bundled template ships with the placeholder so the CLI can substitute; a manual adopter cannot read past that.navigate.pop()assumption — the skill expects a top-level helper to exist. New Flutter apps don’t have one. Adopters without this helper must either create a stub (this example ships one as a reference) or adapt the MCP tool file.
examples/counter_app/README.md and tracked for a follow-up.