
Skill
maui-devflow-onboard
integrate DevFlow into MAUI apps
Description
Add DevFlow to a MAUI app. USE FOR: package refs, `MauiProgram` registration, Blazor WebView/GTK variants, verification after `maui devflow init`. DO NOT USE FOR: troubleshooting, debugging, UI inspection, or build failures. INVOKES: `maui devflow`, `dotnet`.
SKILL.md
DevFlow Onboard
Use this skill to add MAUI DevFlow to a project after maui devflow init has installed the DevFlow skills.
When to Use
- The project has no
Microsoft.Maui.DevFlow.*package references yet. - The user asks how to onboard, initialize, install, integrate, or set up DevFlow.
- The agent needs to choose between standard, Blazor, GTK, or GTK + Blazor DevFlow packages.
- The repo uses Central Package Management and package edits need to be split correctly.
maui devflow inithas installed skills and the user asks for the next project edits.
Route Elsewhere
- If package references and
AddMauiDevFlowAgent()are already present but the CLI cannot connect, usemaui-devflow-debug. - If an agent is reachable and the user wants to inspect, tap, screenshot, or debug UI, use
maui-devflow-debug.
Optional Session Feedback Nudge
If onboarding required repeated DevFlow attempts, unclear package/version
workarounds, or a long setup session, ask whether the user wants to run
maui-devflow-session-review to summarize friction for MAUI DevFlow product
feedback. Do not run it automatically.
Workflow
- Optionally run
maui devflow skills checkand update bundled skills before editing if it reportsupdate-available-from-current-cli. - Find MAUI app projects in the workspace. Prefer app projects with
UseMaui, platform TFMs such asnet*-android/net*-ios/net*-maccatalyst/net*-windows, or GTK MAUI package references. - Determine whether each target project is standard MAUI, MAUI + Blazor WebView, GTK, or GTK + Blazor.
- Add the correct DevFlow package references. Respect Central Package Management if
Directory.Packages.propsis present. - Register DevFlow in
MauiProgram.csinside#if DEBUG. - Build and run the app.
- Verify with:
maui devflow diagnose maui devflow wait maui devflow ui tree --depth 1
If verification fails after integration, switch to maui-devflow-debug for connectivity recovery.
Stop Signals
- Stop before editing if multiple MAUI app projects exist and the user has not indicated which one to onboard.
- Stop and ask before enabling DevFlow outside Debug builds.
- Stop after package/registration edits and verify with a build before doing runtime debugging.
Critical Anti-patterns
- Do not add versions to project
PackageReferenceitems whenDirectory.Packages.propsis managing package versions. - Do not add Blazor DevFlow packages unless the app uses Blazor WebView.
- Do not register DevFlow outside
#if DEBUGunless the user explicitly asks. - Do not use the old
builder.Services.AddMauiDevFlowAgent()pattern; usebuilder.AddMauiDevFlowAgent().
Package Selection
| Project flavor | Required packages |
|---|---|
| Standard MAUI | Microsoft.Maui.DevFlow.Agent |
| MAUI + Blazor WebView | Microsoft.Maui.DevFlow.Agent, Microsoft.Maui.DevFlow.Blazor |
| GTK MAUI | Microsoft.Maui.DevFlow.Agent.Gtk |
| GTK MAUI + Blazor WebView | Microsoft.Maui.DevFlow.Agent.Gtk, Microsoft.Maui.DevFlow.Blazor.Gtk |
Blazor WebView indicators include a Microsoft.AspNetCore.Components.WebView.Maui package reference or AddMauiBlazorWebView() in MauiProgram.cs.
GTK indicators include package references such as Maui.Gtk, Platform.Maui.Linux.Gtk4, GirCore.Gtk-4.0, or Platform.Maui.Linux.Gtk4.BlazorWebView.
Central Package Management
If the repo uses Directory.Packages.props, put versions there and leave project PackageReference entries versionless.
<!-- Directory.Packages.props -->
<PackageVersion Include="Microsoft.Maui.DevFlow.Agent" Version="<current-version>" />
<!-- App.csproj -->
<PackageReference Include="Microsoft.Maui.DevFlow.Agent" />
If the repo does not use Central Package Management, put the version on the PackageReference.
MauiProgram.cs Registration
For standard MAUI:
using Microsoft.Maui.DevFlow.Agent;
// inside CreateMauiApp(), before return builder.Build();
#if DEBUG
builder.AddMauiDevFlowAgent();
#endif
For MAUI + Blazor WebView:
using Microsoft.Maui.DevFlow.Agent;
using Microsoft.Maui.DevFlow.Blazor;
// inside CreateMauiApp(), before return builder.Build();
#if DEBUG
builder.AddMauiDevFlowAgent();
builder.AddMauiBlazorDevFlowTools();
#endif
For GTK, use the .Gtk namespaces and packages. GTK apps also need to start the agent after app activation, for example app.StartDevFlowAgent() in the platform app activation flow.
For Mac Catalyst, ensure the Debug entitlements allow the in-app HTTP server:
<key>com.apple.security.network.server</key>
<true/>
Validation Checklist
MauiProgram.csregisters DevFlow only in Debug builds.- The app project references the package flavor that matches the target platform.
- Blazor DevFlow tools are added only when the app uses Blazor WebView.
- GTK apps start the DevFlow agent after app activation.
- Mac Catalyst Debug entitlements include
com.apple.security.network.server. dotnet buildsucceeds.- Important controls in the flows you plan to automate have stable
AutomationIds. - A running app appears in
maui devflow list. maui devflow agent statusreturns the expected app name and platform.maui devflow ui tree --depth 1returns a visual tree.
References
- See
references/package-selection.mdfor package/flavor details. - See
references/mauiprogram-registration.mdfor registration patterns.
More skills from the maui-labs repository
View all 32 skillsandroid-slim-bindings
create Android slim bindings for .NET
Jul 12.NETAndroidJavaKotlin +1devflow-automation
automate .NET MAUI app state
Jul 12.NETAutomationMAUIMobiledevflow-connect
diagnose DevFlow agent connectivity issues
Jul 12DebuggingMAUINetworkingdotnet-workload-info
discover MAUI workload metadata
Jul 12C#CLIEngineeringMAUIios-slim-bindings
create iOS slim bindings for MAUI
Jul 12.NETiOSMAUISwift +1maui-accessibility
implement accessibility in .NET MAUI apps
Jul 12.NETAccessibilityMAUIMobile +1
More from .NET (Microsoft)
View publishermultithreaded-task-migration
migrate MSBuild tasks to multithreaded mode
msbuild
Jul 22.NETEngineeringPerformanceanalyzing-dotnet-performance
analyze .NET code for performance anti-patterns
skills
Jul 12.NETCode AnalysisDebuggingPerformanceandroid-tombstone-symbolication
symbolicate .NET runtime frames in Android tombstones
skills
Jul 12.NETAndroidDebuggingMicrosoftapple-crash-symbolication
symbolicate .NET runtime frames in crash logs
skills
Jul 12.NETDebuggingiOSmacOS +1assertion-quality
evaluate assertion quality in test suites
skills
Jul 12Code AnalysisQATestingauthor-component
create and review Blazor components
skills
Jul 15.NETBlazorC#UI Components +1