Skip to main content
Roveflow ships one executable — roveflow — with the short alias rf. Install it with dart pub global activate roveflow (see Installation).

Synopsis

roveflow <command> [options]
rf <command> [options]
Both names run the same binary.

roveflow init

Installs Roveflow into a Flutter project. Zero source-code changes — every file lands in well-known locations and can be regenerated at any time.

Synopsis

roveflow init [--path <directory>] [--force]

Options

FlagShortDefaultDescription
--path-p.Target Flutter project path. Relative paths resolve against the current directory.
--force-ffalseOverwrite locally modified files with the bundled version. Use after a Roveflow upgrade to refresh the skill, slash command, and agent template.

Preflight

The command exits non-zero with an error message if the target directory is not a Flutter project (missing pubspec.yaml or no sdk: flutter dependency).

What it creates

Under the target directory:
  • .claude/skills/roveflow/ — the full skill (SKILL.md plus 10 reference files).
  • .claude/commands/roveflow.md — the /roveflow slash command.
  • .claude/agents/roveflow-runner.md — the agent template.
  • lib/core/mcp/mcp_interaction_tools.dart — MCP interaction tools drop-in, with <your_app> substituted to your pubspec name. You still need to add a navigate.pop() helper yourself (see Integrate into an existing app).
  • .mcp.jsonflutter-inspector MCP server config, written with env-var substitution (${ROVEFLOW_FLUTTER_INSPECTOR}) so the binary path stays out of your repo. Written fresh if absent; if a file already exists without a flutter-inspector entry, the command prints a warning and does not merge (merge manually from .claude/skills/roveflow/references/mcp-config.snippet.json).
  • docs/roveflow/scenarios.md — starter scenarios inventory. Skipped with a warning if a file already exists; pass --force to overwrite.
  • docs/roveflow/runs/ — empty directory for future session recordings.

Next steps the command prints

After a successful install, roveflow init prints the manual wiring steps:
  1. Add await registerMcpInteractionTools(); to the kDebugMode block in main.dart (imports lib/core/mcp/mcp_interaction_tools.dart).
  2. Export ROVEFLOW_FLUTTER_INSPECTOR to your flutter_inspector_mcp binary path.
  3. Add mcp_toolkit to pubspec.yaml dependencies.
  4. Fill in the cold-setup flow in docs/roveflow/scenarios.md.
  5. Boot the app in debug mode and run /roveflow --only=cold-setup in Claude Code.
Full walkthrough: Integrate into an existing app.

Exit codes

CodeMeaning
0Install succeeded.
1Target is not a Flutter project.

roveflow doctor

Diagnoses an existing Roveflow install. Checks the four load-bearing pieces roveflow init sets up and reports what’s missing — useful after an upgrade, after a merge conflict, or when a smoke run fails suspiciously early.

Synopsis

roveflow doctor [--path <directory>]

Options

FlagShortDefaultDescription
--path-p.Target Flutter project path. Relative paths resolve against the current directory.

Checks

CheckPasses when
pubspec.yaml declares mcp_toolkitpubspec.yaml has an mcp_toolkit: line under dependencies:.
main.dart calls registerMcpInteractionToolslib/main.dart invokes registerMcpInteractionTools( (typically inside a kDebugMode block).
.mcp.json present and resolves.mcp.json exists, declares a flutter-inspector server, and its command is not a <placeholder>.
skill installed at .claude/skills/roveflow.claude/skills/roveflow/SKILL.md exists.

Output

roveflow doctor — /path/to/project
  [ok]    pubspec.yaml declares mcp_toolkit
  [fail]  main.dart calls registerMcpInteractionTools
         Add `await registerMcpInteractionTools();` inside your `kDebugMode` block.
  [ok]    .mcp.json present and resolves
  [ok]    skill installed at .claude/skills/roveflow

1 check failed.
Failed checks print a one-line remediation hint.

Exit codes

CodeMeaning
0All checks passed.
1Target is not a Flutter project, or one or more checks failed.

roveflow version

Prints the installed Roveflow version and exits.

Synopsis

roveflow version

Output

0.1.0
The version number follows semver. Read the CHANGELOG for release notes.

The /roveflow slash command

roveflow init installs a Claude Code slash command, not a CLI subcommand. Invoke it from inside a Claude Code session whose working directory is the target Flutter project root:
/roveflow [--mode=critical|all] [--only=<id1,id2>] [--no-record]
FlagDefaultDescription
--modecriticalcritical runs only scenarios tagged criticality: critical. all runs every scenario.
--onlyunsetComma-separated scenario ids to run. Overrides --mode.
--no-recordoff (recording ON)Skip capturing the full-run recording.mov via xcrun simctl io booted recordVideo. Useful on headless CI simulators or for faster iteration loops.
See Running smoke tests for full usage.

Next

MCP tools

The interaction tools the agent can call.

Scenario schema

Every field in the YAML block.