Skip to content

Skills: retarget DevFlow skills to the unified maui CLI#198

Open
rmarinho wants to merge 5 commits into
mainfrom
skills/maui-cli-retarget-197
Open

Skills: retarget DevFlow skills to the unified maui CLI#198
rmarinho wants to merge 5 commits into
mainfrom
skills/maui-cli-retarget-197

Conversation

@rmarinho
Copy link
Copy Markdown
Member

@rmarinho rmarinho commented Apr 30, 2026

Summary

Retargets the maui-devflow-debug and maui-devflow-onboard agent skills (under plugins/dotnet-maui/skills/) so AI agents prefer the unified maui CLI (Microsoft.Maui.Cli) for device prep and management, instead of mixing androidsdk.tool (android …), appledev.tools (apple …), raw adb, and raw xcrun simctl.

Raw fallbacks are kept only for operations the maui CLI does not yet wrap, and are grouped under clearly labeled sections so future CLI work has a concrete target list.

Also adds inline JSON / error-troubleshooting guidance so agents pass --json, branch on error codes, and follow remediation hints emitted by MauiToolException.

Closes #197

What's in this PR (skill markdown only)

  • maui-devflow-debug/SKILL.md — INVOKES rewritten to lead with maui CLI; new "Reading machine-readable output" section covering --json, error code categories E1xxxE5xxx, remediation.type (autofixable/useraction/terminal — lowercase), and --ci. Explicitly notes that maui devflow commands use a different stderr JSON shape.
  • references/android.md — fully rewritten maui-first. Raw adb ops (port forwarding, install, logcat, screencap, push/pull/shell) grouped under "Raw fallbacks not yet in maui CLI". sdk install uses positional args (no --package flag).
  • references/ios-and-mac.md — restructured around maui apple xcode|runtime|simulator … including newly promoted commands: create, erase, install, uninstall, launch, terminate. Raw xcrun simctl ops (appearance/openurl/push/location/addmedia/screenshots) grouped under the labeled fallback section. Permission uses maui devflow ui permission with --bundle-id documented as required for per-app grants.
  • references/connectivity.md — leads with maui devflow diagnose + maui device list; new "Reading errors from the CLI" section scoped to non-DevFlow commands with the flat JSON error envelope (no "error" wrapper).
  • references/troubleshooting.md — new top section "Machine-readable output and error envelope" with flat JSON (no wrapper), code taxonomy, lowercase remediation types, manual_steps (snake_case), and a worked example (E2106 emulator binary missing → maui android sdk install emulator).
  • references/setup.mdMicrosoft.Maui.Cli is the only required global tool; optional extras shrunk to only truly unwrapped ops; maui doctor added to verify.
  • maui-devflow-onboard/SKILL.mdmaui doctor + --json error guidance added to verify step, scoped to non-DevFlow commands with DevFlow stderr shape noted.

references/macos.md, linux.md, and batch.md were verified clean (no changes needed).

Audit highlights

Verified against src/Cli/Microsoft.Maui.Cli/Commands/ and Models/ErrorResult.cs.

Replaced Kept as raw fallback
android avd|sdk|jdk|device …maui android emulator|sdk|jdk … adb reverse|forward (broker port + agent port)
apple simulator list/start/stop/delete/create/erase/install/launch/terminatemaui apple simulator … adb install|uninstall, am start|force-stop, pm uninstall
adb devices / xcrun simctl list devicesmaui device list --platform … adb logcat, adb shell screencap|screenrecord, adb push|pull|shell
Connectivity diagnostic surfaced as maui devflow diagnose first xcrun simctl appearance|openurl|push|location|addmedia
Environment health: maui doctor added to setup + onboard verify lsof -i :<port>, pgrep -f "App"

JSON / error troubleshooting improvements

Skills now teach agents to:

  1. Pass --json to any command that will be parsed.
  2. Branch on the top-level code field (flat JSON, no "error" wrapper):
    • E1xxx — tool/internal
    • E2xxx — platform/SDK (E20xx JDK, E21xx Android, E22xx Apple, E23xx Windows, E24xx .NET)
    • E3xxx — user action
    • E4xxx — network
    • E5xxx — permission
  3. When remediation.type == "autofixable" (lowercase), run remediation.command and retry.
  4. When remediation.type == "useraction", follow remediation.manual_steps (snake_case).
  5. Use --ci for non-interactive failure-fast runs.
  6. DevFlow commands (maui devflow …) use a different error shape ({"error":"…","type":"…","retryable":…}) written to stderr — not the ErrorResult envelope.

A worked example (auto-fixable E2106 recovery: missing emulator binary → maui android sdk install emulator) is included in references/troubleshooting.md.

Verification

rg -n '^\s*(android |apple |xcrun simctl |adb )' \
  plugins/dotnet-maui/skills/maui-devflow-debug \
  plugins/dotnet-maui/skills/maui-devflow-onboard

Every remaining match is inside a clearly labeled "Raw fallbacks not yet in maui CLI" section or is preceded by a # Not yet wrapped by 'maui' CLI comment.

Post-review fixes verified with multi-model code review (GPT-5.4, Claude Opus 4.7, Claude Haiku 4.5) and all 19 review threads resolved.

Out of scope

Test plan

These are markdown skill files only — no build/test target. Validation is by re-read + grep verification (above), automated code review (2 rounds), and multi-model review.

@rmarinho
Copy link
Copy Markdown
Member Author

Code review (3 models) — findings + fixes

Ran the changes through 3 parallel code-review agents (Claude Sonnet 4.6, Claude Opus 4.7, GPT-5.4), each with a different focus (factual correctness / agent usability / completeness). All three converged on the same set of factual bugs in the first commit. Pushed 9b4e967 to fix them. Summary:

CRITICAL — fixed

  1. JSON envelope shape was wrong. JsonOutputFormatter.WriteError serializes ErrorResult directly with no "error" wrapper. An agent following result["error"]["code"] would have gotten null on every error. Fixed in troubleshooting.md, connectivity.md, SKILL.md, and onboard SKILL.md to document the actual top-level shape.
  2. Property names are snake_case. [JsonPropertyName("native_error")], manual_steps, docs_url, correlation_id — not camelCase. Fixed.
  3. remediation.type is lowercase on the wire (autofixable / useraction / terminal / unknown) — ErrorResult.cs:81 does .ToString().ToLowerInvariant(). The first commit told agents to branch on "AutoFixable", which would never match. Fixed everywhere.
  4. maui android sdk install|uninstall takes positional package args, not --package <pkg>. The first commit had six broken install examples and one broken uninstall. Fixed in android.md (×6) and troubleshooting.md (×1).
  5. Removed fictional commands that were never registered: maui android sdk info, maui android sdk download, maui android jdk info, maui android sdk list --installed.

HIGH — fixed

  1. Worked E2106 example was wrong. The throw site at AndroidCommands.Emulator.cs:382 ("no AVD with that name") emits no remediation block. Only the AvdManager.cs:240 path ("emulator binary not installed") produces an autofixable remediation, and its command is maui android sdk install emulator (positional). Replaced the example, and added explicit guidance: when remediation is absent from the envelope, surface message and stop retrying.
  2. maui devflow ui permission grant|revoke|reset exists. Found in DevFlowCommands.cs:697-741 — wraps xcrun simctl privacy and auto-detects UDID + bundle id. The first commit incorrectly told agents to fall back to raw simctl privacy. Promoted the wrapper to the primary path in ios-and-mac.md, removed privacy from the SKILL.md fallback list, and added a cross-reference from the simctl utilities table.

Deferred (out of scope, follow-up)

  1. Legacy maui-ai-debugging skill still recommends the standalone toolchain. Confirmed in that skill's SKILL.md and references — but per the original task scope (user explicitly opted to skip the legacy skill since DevFlowSkillManager.s_legacySkillIds keeps it as a compatibility-only path that already redirects to maui-devflow-debug). Left untouched here; if we want hard parity it can be a follow-up PR — happy to do that if you'd prefer.
  2. Onboard --json claim is broad. Narrowed the claim in onboard SKILL.md to call out maui doctor / maui devflow diagnose specifically, since wait and ui tree don't emit the MauiToolException envelope on their normal failure modes.

Verification after fix

  • All remaining maui … snippets in the skills cross-checked against src/Cli/Microsoft.Maui.Cli/Commands/ (AndroidCommands.Sdk.cs, AndroidCommands.Jdk.cs, AndroidCommands.Emulator.cs, AppleCommands.cs, DeviceCommand.cs, DevFlowCommands.cs).
  • All JSON/error claims cross-checked against Models/ErrorResult.cs and Errors/MauiToolException.cs.
  • Repo-wide grep confirms no stale error.code / error.remediation / --package "..." (for sdk) / sdk info / sdk download / jdk info / list --installed / "AutoFixable" / nativeError / manualSteps references remain in the two updated skills.

Reviewers' raw output is preserved in the session log if anyone wants to dig in.

@github-actions

This comment has been minimized.

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Code Review: 4 findings posted inline (2 critical, 2 moderate). See the lean summary comment for methodology and details.

Generated by Expert Code Review (auto) for issue #198 · ● 45.9M

Comment thread plugins/dotnet-maui/skills/maui-devflow-debug/references/android.md
@rmarinho rmarinho force-pushed the skills/maui-cli-retarget-197 branch from 0bdb96f to 824dba6 Compare May 13, 2026 16:30
@rmarinho rmarinho marked this pull request as ready for review May 13, 2026 16:30
Copilot AI review requested due to automatic review settings May 13, 2026 16:30
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Retargets the DevFlow agent skill documentation under plugins/dotnet-maui/skills/ to prefer the unified maui CLI for device setup/management, and expands guidance around --json output and structured error handling so agents can branch on machine-readable failures.

Changes:

  • Update maui-devflow-debug / maui-devflow-onboard to lead with maui CLI commands (doctor/device/android/apple/devflow).
  • Rewrite Android and Apple reference docs to be maui-first, moving raw-tool usage into explicitly labeled fallback sections.
  • Add/expand JSON and error-envelope guidance (codes, remediation, --ci) across skills and troubleshooting references.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
plugins/dotnet-maui/skills/maui-devflow-onboard/SKILL.md Adds maui doctor and JSON/error-handling guidance to onboarding verification steps.
plugins/dotnet-maui/skills/maui-devflow-debug/SKILL.md Updates INVOKES to prefer unified maui CLI and adds a “Reading machine-readable output” section.
plugins/dotnet-maui/skills/maui-devflow-debug/references/android.md Rewrites Android workflows to use maui android/maui device first; keeps adb as labeled fallbacks.
plugins/dotnet-maui/skills/maui-devflow-debug/references/ios-and-mac.md Reorients Apple guidance around maui apple ... discovery/lifecycle and adds fallback sections for raw simctl.
plugins/dotnet-maui/skills/maui-devflow-debug/references/connectivity.md Leads with maui devflow diagnose and adds a CLI error-reading section.
plugins/dotnet-maui/skills/maui-devflow-debug/references/troubleshooting.md Adds a code taxonomy/remediation explanation and updates troubleshooting steps to reference maui commands/codes.
plugins/dotnet-maui/skills/maui-devflow-debug/references/setup.md Makes Microsoft.Maui.Cli the only required global tool; moves other tools to optional extras and adds verification steps.

Comment thread plugins/dotnet-maui/skills/maui-devflow-onboard/SKILL.md
Comment thread plugins/dotnet-maui/skills/maui-devflow-debug/SKILL.md
Comment thread plugins/dotnet-maui/skills/maui-devflow-debug/references/troubleshooting.md Outdated
Comment thread plugins/dotnet-maui/skills/maui-devflow-debug/SKILL.md
Comment thread plugins/dotnet-maui/skills/maui-devflow-debug/references/setup.md Outdated
@github-actions
Copy link
Copy Markdown
Contributor

Expert Code Review — PR #198

Methodology: 3 independent reviewers with adversarial consensus

6 findings posted as inline comments (2 🔴 critical, 3 🟡 moderate, 1 🟢 minor)

Findings Summary

# Severity Consensus File Finding
1 🔴 3/3 ios-and-mac.md + SKILL.md create/erase/install/launch are wrapped by maui apple simulator but docs claim they're "not yet wrapped"
2 🔴 3/3 (follow-up) troubleshooting.md E2106 worked example shows wrong remediation command (emulator create instead of sdk install emulator)
3 🟡 3/3 connectivity.md + setup.md Broken anchor #reading-machine-readable-output-and-errors (correct: #machine-readable-output-and-error-envelope)
4 🟡 2/3 troubleshooting.md Invalid --package flag (should be positional argument)
5 🟡 3/3 (follow-up) maui-devflow-onboard/SKILL.md maui devflow diagnose uses different error format than {code, remediation} envelope
6 🟢 2/3 troubleshooting.md Missing trailing newline (POSIX compliance)

Discarded Findings

  • maui device list --platform apple normalizes to ios only (1/3 — Reviewer 1 only, below follow-up cap)
  • <UDID> should say <name-or-udid> in troubleshooting entry (1/3 — Reviewer 2 only, below follow-up cap)
  • SKILL.md should caveat maui devflow ui permission as iOS-only (1/3 — Reviewer 2 only, failed follow-up: both other reviewers verified the SKILL.md frontmatter doesn't mention this command)

CI Status

All checks passing (license/cla ✅, Agent ✅, Upload results ✅). The current agent job (this review) is in progress.

Test Coverage

This PR contains only markdown skill documentation — no code changes requiring tests. Validation is by content accuracy review (which this review provides) and grep verification as noted in the PR description.

Generated by Expert Code Review · 3 independent reviewers with adversarial consensus

Generated by Expert Code Review (auto) for issue #198 · ● 35.6M ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Code Review: 6 findings posted inline (2 critical, 3 moderate, 1 minor omitted from inline). See the summary comment for full details.

Generated by Expert Code Review (auto) for issue #198 · ● 35.6M

Comment thread plugins/dotnet-maui/skills/maui-devflow-onboard/SKILL.md
Comment thread plugins/dotnet-maui/skills/maui-devflow-debug/SKILL.md
Comment thread plugins/dotnet-maui/skills/maui-devflow-debug/references/troubleshooting.md Outdated
Comment thread plugins/dotnet-maui/skills/maui-devflow-debug/references/troubleshooting.md Outdated
rmarinho and others added 3 commits June 2, 2026 15:06
Rewrite the `maui-devflow-debug` and `maui-devflow-onboard` skills so AI
agents prefer the unified `maui` CLI for device prep and management instead
of mixing `androidsdk.tool`, `appledev.tools`, raw `adb`, and raw `xcrun
simctl`. Raw fallbacks are kept only for operations the `maui` CLI does
not yet wrap, and are grouped under clearly labeled sections.

Also adds inline JSON / error troubleshooting guidance so agents pass
`--json`, branch on `error.code` (E1xxx tool, E2xxx platform/SDK, E3xxx
user, E4xxx network, E5xxx permission), and follow `error.remediation`
hints emitted by `MauiToolException`.

- maui-devflow-debug/SKILL.md: INVOKES rewritten; new "Reading machine-
  readable output" section.
- references/android.md: full rewrite, `maui android …` first; raw `adb`
  ops grouped as fallbacks.
- references/ios-and-mac.md: `maui apple xcode|runtime|simulator …`
  first; raw `xcrun simctl` (create/erase/install/launch/privacy/
  appearance/openurl/push/location/addmedia) grouped as fallbacks.
- references/connectivity.md: `maui devflow diagnose` + `maui device
  list` first; new "Reading errors from the CLI" section.
- references/troubleshooting.md: new "Reading machine-readable output and
  errors" top section with full envelope, code taxonomy, worked example
  (E2106).
- references/setup.md: `Microsoft.Maui.Cli` is the only required global
  tool; optional extras called out; raw `adb` port forwarding labeled;
  `maui doctor` added to verify.
- maui-devflow-onboard/SKILL.md: `maui doctor` + `--json`/error.code
  guidance added to verify step.

Closes #197

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Three-model code review (Sonnet 4.6, Opus 4.7, GPT-5.4) caught real
factual bugs in the previous commit. All converged on the same critical
issues:

1. **JSON envelope shape was wrong.** `JsonOutputFormatter.WriteError`
   serializes `ErrorResult` directly, with no `"error"` wrapper. Property
   names are `snake_case` (`native_error`, `manual_steps`, `docs_url`),
   not camelCase. Fixed all four files that documented the wrong shape:
   troubleshooting.md, connectivity.md, SKILL.md, onboard SKILL.md.

2. **`remediation.type` is lowercase on the wire** (`autofixable`,
   `useraction`, `terminal`, `unknown`) — see ErrorResult.cs:81
   `.ToString().ToLowerInvariant()`. Skills documented PascalCase, which
   would never match. Fixed everywhere.

3. **`maui android sdk install|uninstall` takes packages positionally**,
   not via `--package`. Replaced six call sites in android.md plus one
   in troubleshooting.md.

4. **Removed fictional commands**: `maui android sdk info`,
   `maui android sdk download`, `maui android jdk info`,
   `maui android sdk list --installed`. None are registered.

5. **Worked example (E2106) was misleading.** The `--name` throw site
   doesn't emit a `remediation` block; only the AvdManager
   "emulator binary not installed" path does, and its command is
   `maui android sdk install emulator` (positional). Replaced the example
   and added explicit guidance: when `remediation` is absent from the
   envelope, surface `message` and stop retrying.

6. **Promoted `maui devflow ui permission grant|revoke|reset` from raw
   fallback to primary path** in ios-and-mac.md. The wrapper exists
   (DevFlowCommands.cs:697-741) and auto-detects UDID + bundle id; the
   skill was sending agents past it to raw `xcrun simctl privacy`. Also
   removed `privacy` from the SKILL.md fallback list and added a
   cross-reference from the simctl utilities table.

Verified all `maui …` snippets remaining in the skills against
`src/Cli/Microsoft.Maui.Cli/Commands/` and `Models/ErrorResult.cs`.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace 'maui devflow ui logs' (does not exist) with 'maui devflow logs'
  in android.md and troubleshooting.md
- Fix E2106 example in connectivity.md — the 'no AVD with that name'
  throw site does NOT emit autofixable remediation; only the
  'emulator binary not installed' site does. Use the documented site
  and add note about the no-remediation variant.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rmarinho rmarinho force-pushed the skills/maui-cli-retarget-197 branch from 1306774 to bbc8e1b Compare June 2, 2026 15:02
@rmarinho
Copy link
Copy Markdown
Member Author

rmarinho commented Jun 2, 2026

/review

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

Expert Code Review completed successfully!

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 2, 2026

Expert Code Review — PR #198

Methodology: 3 independent reviewers with adversarial consensus

5 findings posted as inline comments (3 🔴 critical, 2 🟡 moderate)

Findings Summary

# Severity Consensus File Line Finding
1 🔴 3/3 references/ios-and-mac.md 6 Simulator create/erase/install/launch/uninstall/terminate are wrapped by CLI but documented as "not yet wrapped" — agents will use raw xcrun simctl unnecessarily
2 🔴 3/3 references/troubleshooting.md 18 DevFlow stderr caveat removed — agents will try to parse maui devflow output using the wrong JSON schema on the wrong stream
3 🔴 3/3 maui-devflow-onboard/SKILL.md 55 maui doctor --json uses DoctorReport schema (not flat code/remediation envelope) — guidance will cause agents to miss environment failures
4 🟡 2/3 references/troubleshooting.md 145 AutoFixable (PascalCase) contradicts documented lowercase convention — agents will fail string comparison
5 🟡 2/3 references/ios-and-mac.md 241 --bundle-id documented as optional but no agent auto-resolution exists — simctl privacy grant/revoke will fail

Discarded Findings (single reviewer only — no consensus)

  • Broken inline code span across line break in onboard SKILL.md (1/3 — CommonMark allows multi-line code spans; both follow-up reviewers disagreed)
  • SKILL.md frontmatter fallback list incomplete vs references/android.md raw ops (1/3)
  • setup.md lists privacy in optional extras but it's now partially wrapped (1/3)
  • connectivity.md lost auto-repair comment for maui devflow list (1/3)
  • Potential confusion between maui android install and maui android sdk install (1/3)

CI Status

All checks passing: ✅ license/cla, ✅ check, ✅ pr-status (evaluate/gate skipped — expected for docs-only PR)

Test Coverage

No tests needed — this PR modifies only markdown skill documentation files. Validation is by content review and rg verification (per PR description).


Generated by Expert Code Review · 3 independent reviewers with adversarial consensus

Warning

⚠️ Firewall blocked 3 domains

The following domains were blocked by the firewall during workflow execution:

  • pypi.org
  • spec.commonmark.org
  • talk.commonmark.org

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "pypi.org"
    - "spec.commonmark.org"
    - "talk.commonmark.org"

See Network Configuration for more information.

Generated by Expert Code Review for issue #198 · ● 34.3M ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Expert Code Review: 5 findings posted inline (3 critical, 2 moderate). See the lean summary comment for full details.

Warning

⚠️ Firewall blocked 3 domains

The following domains were blocked by the firewall during workflow execution:

  • pypi.org
  • spec.commonmark.org
  • talk.commonmark.org

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "pypi.org"
    - "spec.commonmark.org"
    - "talk.commonmark.org"

See Network Configuration for more information.

Generated by Expert Code Review for issue #198 · ● 34.3M

maui devflow ui tree --depth 1
```

For programmatic use, pass `--json` to `maui doctor` / `maui devflow
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 CRITICAL · 3/3 consensus (validated via dispute follow-up)

maui doctor --json does not output a flat code/remediation.command envelope. It outputs a DoctorReport schema:

{ "schema_version": "1.0", "status": "Unhealthy", "checks": [{ "name": "...", "status": "Error", "fix": { "auto_fixable": true, "command": "..." } }], "summary": {...} }

Agents following this guidance will find no code/remediation fields in normal output and may incorrectly declare the environment healthy.

Recommendation: For maui doctor --json, instruct agents to check top-level status (Healthy/Unhealthy/Degraded) and iterate checks[] for entries with status == "Error", acting on fix.command when fix.auto_fixable == true. Reserve code/remediation parsing for maui android *, maui apple *, and other non-doctor commands.

Prefer the unified `maui` CLI for simulator/runtime/Xcode discovery and basic
lifecycle. Permission management uses `maui devflow ui permission` (wraps
`xcrun simctl privacy` with auto-detection). Raw `xcrun simctl` is kept only
for operations not yet wrapped by the `maui` CLI (create / erase / install /
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 CRITICAL · 3/3 consensus

The CLI source (AppleCommands.cs) registers maui apple simulator create, erase, install, uninstall, launch, and terminate — these are wrapped. Listing them as "not yet wrapped" causes agents to use raw xcrun simctl instead of the unified CLI, losing --json output, structured errors, and --if-not-exists idempotency on create.

Recommendation: Move create, erase, install, uninstall, launch, and terminate to the "maui CLI" sections with correct syntax. Keep only appearance, openurl, push, location, addmedia, and io screenshot as true raw fallbacks.

error NETSDK1147: To build this project, the following workloads must be installed: maui-ios
```
Fix: `dotnet workload install maui` (installs all MAUI workloads).
Error code via `maui` JSON: `E2402` MauiWorkloadMissing (often `AutoFixable`).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MODERATE · 2/3 consensus

`AutoFixable` (PascalCase in backticks) contradicts the rest of this document which specifies that remediation.type is always lowercase (serialized via .ToString().ToLowerInvariant()). An agent comparing remediation.type == "AutoFixable" will miss the auto-fix opportunity.

Recommendation: Change to (often `autofixable`).

Comment on lines +16 to +18
### Error envelope

**Quick reference** — when a non-DevFlow command fails with `--json`, stdout is a top-level JSON object (no `"error"` wrapper). Note: `maui devflow ...` uses a different JSON error shape and writes errors to stderr.
When a `maui` command fails with `--json`, it writes a structured error object
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 CRITICAL · 3/3 consensus

The old text had an important caveat: "Note: maui devflow ... uses a different JSON error shape and writes errors to stderr." This was removed. Without it, agents will try to parse maui devflow diagnose --json output using the flat stdout code/remediation envelope described here, but DevFlow commands write {"error":"...","type":"...","retryable":...} to stderr.

Recommendation: Restore the caveat, e.g.: "Note: maui devflow ... commands emit errors to stderr in a different JSON shape ({error, type, retryable}). The flat error envelope described below applies only to non-DevFlow maui commands (maui android ..., maui apple ..., maui doctor, maui device ...)."


Available services: `all`, `calendar`, `contacts`, `contacts-limited`, `location`, `location-always`, `photos`, `photos-add`, `media-library`, `microphone`, `motion`, `reminders`, `siri`.
`--udid <UDID>` is optional and only needed if multiple simulators are
booted; `--bundle-id` may be omitted when the DevFlow agent has it cached.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MODERATE · 2/3 consensus (validated via dispute follow-up)

The claim "--bundle-id may be omitted when the DevFlow agent has it cached" is incorrect. The implementation (DevFlowCommands.cs) has no agent-state lookup for bundle ID — when omitted, it simply invokes xcrun simctl privacy <UDID> <action> <service> without a bundle identifier. Apple's simctl privacy requires a bundle ID for grant and revoke (only reset all works without one), so omitting it will cause silent failures.

Recommendation: Document --bundle-id as required for grant/revoke operations. Only mark it as optional for reset all.

@rmarinho
Copy link
Copy Markdown
Member Author

rmarinho commented Jun 3, 2026

/evaluate

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

Skill Evaluation Results

20260603-171744

No markdown report

Full results

- setup.md: add 'Guided environment setup' (maui android install, maui apple install --platform, --sdk/--jdk overrides); trim 'Optional extras' now that CLI wraps create/erase/install/launch/appearance.
- ios-and-mac.md: replace raw 'xcrun simctl install/launch/uninstall/get_app_container' block with 'maui apple simulator' wrappers; rewrite Dark Mode Testing to use 'maui devflow theme set/get'.
- connectivity.md: document 'maui devflow extensions list|describe|call' for app-registered extension tools.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DevFlow skills: prefer unified maui CLI over standalone tools + improve JSON/error guidance

2 participants