Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude/skills/maui-ai-debugging/references/linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ standard MAUI platforms (iOS, Android, macCatalyst, Windows).
### MauiProgram.cs

```csharp
using MauiDevFlow.Agent.Gtk;
using MauiDevFlow.Blazor.Gtk; // Blazor Hybrid only
using Microsoft.Maui.DevFlow.Agent.Gtk;
using Microsoft.Maui.DevFlow.Blazor.Gtk; // Blazor Hybrid only

var builder = MauiApp.CreateBuilder();
// ... your existing setup ...
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/maui-ai-debugging/references/macos.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ using Microsoft.Maui.Platform.MacOS;
using Microsoft.Maui.Platform.MacOS.Controls;

#if DEBUG
using MauiDevFlow.Agent;
using MauiDevFlow.Blazor;
using Microsoft.Maui.DevFlow.Agent;
using Microsoft.Maui.DevFlow.Blazor;
#endif

public static class MauiProgram
Expand Down
8 changes: 4 additions & 4 deletions .claude/skills/maui-ai-debugging/references/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ Linux/GTK apps (using Maui.Gtk) use separate packages:
## 3. Register in MauiProgram.cs

```csharp
using MauiDevFlow.Agent;
using MauiDevFlow.Blazor; // Blazor Hybrid only
using Microsoft.Maui.DevFlow.Agent;
using Microsoft.Maui.DevFlow.Blazor; // Blazor Hybrid only

var builder = MauiApp.CreateBuilder();
// ... your existing setup ...
Expand All @@ -93,8 +93,8 @@ builder.AddMauiBlazorDevFlowTools(); // Blazor Hybrid only
For Linux/GTK apps, use the GTK-specific namespaces and add the agent startup call:

```csharp
using MauiDevFlow.Agent.Gtk;
using MauiDevFlow.Blazor.Gtk; // Blazor Hybrid only
using Microsoft.Maui.DevFlow.Agent.Gtk;
using Microsoft.Maui.DevFlow.Blazor.Gtk; // Blazor Hybrid only

var builder = MauiApp.CreateBuilder();
// ... your existing setup ...
Expand Down
1 change: 1 addition & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<PackageVersion Include="Spectre.Console.Testing" Version="$(SpectreConsoleVersion)" />
<PackageVersion Include="System.CommandLine" Version="$(SystemCommandLineStableVersion)" />
<PackageVersion Include="System.Text.Json" Version="$(SystemTextJsonVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisCSharpVersion)" />
<PackageVersion Include="Websocket.Client" Version="$(WebsocketClientVersion)" />
<PackageVersion Include="XenoAtom.Terminal.UI" Version="$(XenoAtomTerminalUIVersion)" />
<PackageVersion Include="ModelContextProtocol" Version="$(ModelContextProtocolVersion)" />
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ This repository is also a marketplace for distributable agent skills for .NET MA
# Install via Copilot CLI
/plugin marketplace add dotnet/maui-labs
/plugin install dotnet-maui@dotnet-maui-labs

# Then say:
# "Set up DevFlow in this project"
```

See [plugins/](plugins/) for the full catalog and [plugins/CONTRIBUTING.md](plugins/CONTRIBUTING.md) for how to add skills.
Expand Down
1 change: 1 addition & 0 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
<SkiaSharpVersion>3.119.2</SkiaSharpVersion>
<SpectreConsoleVersion>0.54.0</SpectreConsoleVersion>
<SystemCommandLineStableVersion>2.0.5</SystemCommandLineStableVersion>
<MicrosoftCodeAnalysisCSharpVersion>4.14.0</MicrosoftCodeAnalysisCSharpVersion>
<WebsocketClientVersion>5.3.0</WebsocketClientVersion>
<XenoAtomTerminalUIVersion>1.7.1</XenoAtomTerminalUIVersion>
<ModelContextProtocolVersion>1.1.0</ModelContextProtocolVersion>
Expand Down
6 changes: 5 additions & 1 deletion plugins/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ Distributable agent skills for .NET MAUI development. Installable via the Copilo

| Plugin | Skill | Description |
|--------|-------|-------------|
| [dotnet-maui](dotnet-maui/) | [devflow-connect](dotnet-maui/skills/devflow-connect/) | DevFlow automation — agent connectivity, visual tree inspection, screenshots, app interactions. Requires the `maui` CLI. |
| [dotnet-maui](dotnet-maui/) | [devflow-onboard](dotnet-maui/skills/devflow-onboard/) | DevFlow onboarding — workspace setup, MAUI project selection, AI bootstrap, and report-driven follow-up. Requires the `maui` CLI. |
| | [devflow-connect](dotnet-maui/skills/devflow-connect/) | DevFlow automation — agent connectivity, visual tree inspection, screenshots, app interactions. Requires the `maui` CLI. |
| | [android-slim-bindings](dotnet-maui/skills/android-slim-bindings/) | Create Android slim bindings using the Native Library Interop approach. |
| | [ios-slim-bindings](dotnet-maui/skills/ios-slim-bindings/) | Create iOS slim bindings using the Native Library Interop approach. |
| | [dotnet-workload-info](dotnet-maui/skills/dotnet-workload-info/) | Discover installed .NET workloads, SDK versions, and dependency requirements. |
Expand All @@ -19,6 +20,9 @@ Distributable agent skills for .NET MAUI development. Installable via the Copilo

# Install the plugin
/plugin install dotnet-maui@dotnet-maui-labs

# Then say:
# "Set up DevFlow in this project"
```

## Adding Skills
Expand Down
2 changes: 1 addition & 1 deletion plugins/dotnet-maui/skills/devflow-connect/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ grep -r "Microsoft.Maui.DevFlow.Agent" *.csproj
The agent must be initialized in `MauiProgram.cs`:

```csharp
builder.Services.AddMauiDevFlowAgent();
builder.AddMauiDevFlowAgent();
```

### 2. Check Broker Status
Expand Down
71 changes: 71 additions & 0 deletions plugins/dotnet-maui/skills/devflow-onboard/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
name: devflow-onboard
description: >-
Set up .NET MAUI projects for MAUI DevFlow using the maui CLI. USE FOR:
first-run DevFlow onboarding, adding DevFlow packages and MauiProgram.cs
registration, choosing one or more MAUI projects in a workspace, reading the
MAUI-DEVFLOW-INIT-REPORT.md report, and continuing after partial setup. DO
NOT USE FOR: troubleshooting an already-integrated app that cannot connect
(use devflow-connect), generic build failures, or non-MAUI projects.
---

# DevFlow Onboard

Use this skill to set up DevFlow in a workspace and then continue from the CLI-authored report.

## When to Use

- DevFlow is not yet integrated into the current MAUI workspace
- The user has just installed the plugin and needs the next gesture
- A workspace contains multiple MAUI apps and the user wants to choose one or more
- The user needs to resume from a previous init run and inspect `MAUI-DEVFLOW-INIT-REPORT.md`

## Workflow

1. Ensure the `maui` CLI is available. If it is missing, install or update it:

```bash
dotnet tool install -g Microsoft.Maui.Cli --prerelease || dotnet tool update -g Microsoft.Maui.Cli --prerelease
```

2. Run DevFlow onboarding from the workspace root:

```bash
maui devflow init
```

Useful variants:

```bash
maui devflow init --project path/to/App.csproj
maui devflow init --all
maui devflow init --no-ai
```

3. After `init` completes, read:

```text
MAUI-DEVFLOW-INIT-REPORT.md
```

4. Treat the report as the source of truth for:

- which projects were changed
- which steps succeeded, were skipped, or need manual follow-up
- which AI host was selected
- whether repo-local skills were synced

5. If setup succeeded, continue with normal DevFlow verification:

```bash
maui devflow diagnose
maui devflow wait
```

6. If the report says setup is complete but the app still will not connect, switch to `devflow-connect`.

## Important Rules

- Prefer `maui devflow init` over hand-editing project files when possible.
- Do not treat an empty `maui devflow list` result as proof that DevFlow is not integrated.
- If `MAUI-DEVFLOW-INIT-REPORT.md` exists, read it before guessing what the CLI did.
12 changes: 12 additions & 0 deletions src/Cli/Microsoft.Maui.Cli.UnitTests/CommandConstructionTests.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
using System.CommandLine;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Maui.Cli.Commands;
using Microsoft.Maui.Cli.DevFlow;
using Xunit;

namespace Microsoft.Maui.Cli.UnitTests;

[RequiresUnreferencedCode("DevFlow command construction uses MSBuild-evaluation-annotated methods.")]
[RequiresDynamicCode("DevFlow command construction uses MSBuild-evaluation-annotated methods.")]
public class CommandConstructionTests
{
[Fact]
Expand Down Expand Up @@ -39,6 +42,15 @@ public void DevFlowCommand_UsesMcpAsPrimaryCommandName()
Assert.Contains("mcp-serve", mcpCommand.Aliases);
}

[Fact]
public void DevFlowCommand_ContainsInitCommand()
{
var jsonOption = new Option<bool>("--json");
var devflowCommand = DevFlowCommands.CreateDevFlowCommand(jsonOption);

Assert.Contains(devflowCommand.Subcommands, command => command.Name == "init");
}

private static void AssertNoWhitespaceAliases(Command command)
{
foreach (var option in command.Options)
Expand Down
Loading
Loading