Official agent skill

MAUI Device Test Runner

by dotnet in dotnet/maui

Builds and runs .NET MAUI device tests locally on iOS simulators, MacCatalyst, Android emulators or Windows, with optional category filtering.

OfficialMITAuto-check passedTesting & QA

Install MAUI Device Test Runner

skills CLI
$ npx skills add dotnet/maui --skill run-device-tests -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dotnet/maui run-device-tests --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/run-device-tests .claude/skills/run-device-tests && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
run-device-tests
GitHub stars
23k
Token cost
~3.3k tokens
SKILL.md length
945 words
Files
3 (incl. scripts)
Skills in repo
27
Repo updated
First seen
Licence
MIT

At a glance

Builds and runs .NET MAUI device tests locally on iOS simulators, MacCatalyst, Android emulators or Windows, with optional category filtering.

  • Works in 2 steps: Run tests: scripts/Run-DeviceTests.ps1… → Check results: Look at the console…
  • Running MAUI device tests locally for Controls, Core, Essentials or Graphics
  • SKILL.md covers Platform Support, Tools Required, Dependencies and When to Use, plus 10 more sections
  • Runs PowerShell scripts from its folder; calls pwsh, dotnet and xcrun

What it does

The skill wraps Run-DeviceTests.ps1, a PowerShell script that builds one of the MAUI device test projects (Controls, Core, Essentials, Graphics or BlazorWebView) and runs it on a chosen platform. On macOS it supports ios, maccatalyst and android, and on Windows android and windows. A TestFilter narrows the run to specific categories, such as only the Button tests, and a shared Start-Emulator.ps1 script boots a simulator or emulator when one is needed.

Other options include building without running and forcing a full rebuild with -Rebuild when sources changed after an earlier build in the same worktree. The tooling it expects is bash alongside PowerShell 7, the xharness global tool, a .NET SDK with platform workloads, Xcode for Apple targets, the Android SDK for Android and the Windows SDK for Windows. The excerpt is cut off before the remaining script options.

When your agent uses it

  • Running MAUI device tests locally for Controls, Core, Essentials or Graphics
  • Checking a change on an iOS simulator, Android emulator or MacCatalyst
  • Running only one test category such as the Button tests
  • Building the device test app without running it

Example prompts

  • “Run the Controls device tests on the iOS simulator.”
  • “Run only the Button category of device tests on Android.”
  • “Do a full rebuild and run the Essentials device tests on MacCatalyst.”

Requirements

  • PowerShell 7 and bash
  • The xharness CLI
  • .NET SDK with platform workloads
  • Xcode for Apple platforms or the Android SDK for Android
  • Compatibility (from SKILL.md): Requires xharness CLI (for iOS/MacCatalyst/Android), Xcode (for Apple platforms), Android SDK (for Android), and .NET SDK with platform workloads.

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Run tests: scripts/Run-DeviceTests.ps1 -Project -Platform automatically detects/boots device, builds, and runs tests
  2. Check results: Look at the console output or artifacts/log/ directory for detailed test results

What it can do on your machine

Read from SKILL.md and the folder at commit 7d38fd0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (PowerShell), which the agent can run.

    Shell commands in SKILL.md call:

    • pwsh
    • dotnet
    • xcrun

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires xharness CLI (for iOS/MacCatalyst/Android), Xcode (for Apple platforms), Android SDK (for Android), and .NET SDK with platform workloads.

    From compatibility in the SKILL.md frontmatter.

Context cost

MAUI Device Test Runner loads about 3.3k tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 945 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~52
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from dotnet/maui at commit 7d38fd0, republished under its MIT licence (© dotnet). 945 words, ~3,345 tokens.

Download SKILL.mdSave it as .claude/skills/run-device-tests/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
run-device-tests
description
Build and run .NET MAUI device tests locally with category filtering. Supports iOS, MacCatalyst, Android on macOS; Android, Windows on Windows. Use TestFilter to run specific test categories.
compatibility
Requires xharness CLI (for iOS/MacCatalyst/Android), Xcode (for Apple platforms), Android SDK (for Android), and .NET SDK with platform workloads.
metadata.author
dotnet-maui
metadata.version
2.2

Run Device Tests Skill

Build and run .NET MAUI device tests locally on iOS simulators, MacCatalyst, Android emulators, or Windows.

Platform Support

Host OSSupported Platforms
macOSios, maccatalyst, android
Windowsandroid, windows

Tools Required

This skill uses bash together with pwsh (PowerShell 7+) to run the PowerShell scripts. Requires:

  • xharness - Global dotnet tool for running tests on iOS/MacCatalyst/Android
  • dotnet - .NET SDK with platform workloads installed
  • iOS/MacCatalyst: Xcode with iOS simulators
  • Android: Android SDK with emulator
  • Windows: Windows SDK

Dependencies

This skill uses shared infrastructure scripts:

  • .github/scripts/shared/Start-Emulator.ps1 - Detects and boots iOS simulators / Android emulators
  • .github/scripts/shared/shared-utils.ps1 - Common utility functions

These are automatically loaded by the Run-DeviceTests.ps1 script.

When to Use

  • User wants to run device tests locally
  • User wants to verify iOS/MacCatalyst/Android/Windows compatibility
  • User wants to test on a specific iOS version (e.g., iOS 26)
  • User asks "run device tests for Controls/Core/Essentials/Graphics"
  • User asks "test on iOS simulator" or "test on Android emulator"
  • User asks "run device tests on MacCatalyst"
  • User wants to run only specific test categories (e.g., "run Button tests")

Available Test Projects

ProjectPath
Controlssrc/Controls/tests/DeviceTests/Controls.DeviceTests.csproj
Coresrc/Core/tests/DeviceTests/Core.DeviceTests.csproj
Essentialssrc/Essentials/test/DeviceTests/Essentials.DeviceTests.csproj
Graphicssrc/Graphics/tests/DeviceTests/Graphics.DeviceTests.csproj
BlazorWebViewsrc/BlazorWebView/tests/DeviceTests/MauiBlazorWebView.DeviceTests.csproj

Scripts

All scripts are in .github/skills/run-device-tests/scripts/

Run Device Tests (Full Workflow)
bash
# Run Controls device tests on iOS simulator (default on macOS)
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios

# Run Core device tests on MacCatalyst
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Core -Platform maccatalyst

# Run Controls device tests on Android emulator
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform android

# Run Controls device tests on Windows (default on Windows)
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform windows

# Run on specific iOS version
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Core -Platform ios -iOSVersion 26

# Run with test filter
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios -TestFilter "Category=Button"

# Run one exact Core test class on Windows
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Core -Platform windows -IncludeClasses "Microsoft.Maui.DeviceTests.WindowHandlerTests"

# Run other test projects
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Essentials -Platform android
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Graphics -Platform maccatalyst
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project BlazorWebView -Platform ios
Build Only (No Test Run)
bash
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios -BuildOnly
Force a Full Rebuild

Use -Rebuild when source files changed after an earlier build in the same worktree, such as an A/B verification run:

bash
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Core -Platform windows -Rebuild
List Available Simulators/Emulators
bash
# iOS simulators
xcrun simctl list devices available

# Android emulators
emulator -list-avds

Workflow

  1. Run tests: scripts/Run-DeviceTests.ps1 -Project <name> -Platform <platform> automatically detects/boots device, builds, and runs tests
  2. Check results: Look at the console output or artifacts/log/ directory for detailed test results

Output

  • Build artifacts: artifacts/bin/<Project>.DeviceTests/<Configuration>/<tfm>/<rid>/
  • Test logs: artifacts/log/
  • Test results summary is printed to console

Prerequisites

  • xharness global tool: dotnet tool install --global Microsoft.DotNet.XHarness.CLI
  • .NET SDK with platform workloads
  • iOS/MacCatalyst: Xcode with simulators installed
  • Android: Android SDK with emulator configured
  • Windows: Windows SDK
  • For iOS 26: macOS Tahoe (26) with Xcode 26

Examples

bash
# Quick test run for Controls on iOS (default on macOS)
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios

# Test on MacCatalyst
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform maccatalyst

# Test on Android emulator (works on both macOS and Windows)
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform android

# Test on Windows (default on Windows)
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform windows

# Test on iOS 26 specifically
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios -iOSVersion 26

# Run only Button category tests on iOS
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios -TestFilter "Category=Button"

# Build for Android without running tests
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Core -Platform android -BuildOnly

Notes

  • The script automatically detects and boots an iOS simulator / Android emulator using the shared Start-Emulator.ps1 infrastructure
  • Default iOS simulator is iPhone Xs with iOS 18.5 (same as UI tests)
  • Default Android emulator priority: API 30 Nexus > API 30 > Nexus > First available
  • MacCatalyst runs directly on the Mac (no simulator needed)
  • Windows tests run directly on the local machine
  • Simulator/emulator selection and boot logic is handled by .github/scripts/shared/Start-Emulator.ps1
  • xharness manages test execution and reporting for iOS/MacCatalyst/Android
  • Class-filtered XHarness retries use isolated child output directories; Android also uses a per-run result filename so stale diagnostics or device-side XML cannot be reused
  • Windows runs the built device-test app directly and reads its xUnit XML results, matching eng/devices/windows.cake

Test Filtering

The -TestFilter parameter allows running specific test categories instead of all tests. This is useful for quick iteration during development.

Filter Syntax
FormatDescriptionExample
Category=XRun only category XCategory=Button
SkipCategories=X,Y,ZSkip categories X, Y, ZSkipCategories=Shell,CollectionView
Examples
bash
# Run only Button tests on iOS
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios -TestFilter "Category=Button"

# Run only Button tests on Android  
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform android -TestFilter "Category=Button"

# Skip heavy test categories
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios -TestFilter "SkipCategories=Shell,CollectionView,HybridWebView"
How Test Filtering Works

Test filtering is implemented in src/Core/tests/DeviceTests.Shared/DeviceTestSharedHelpers.cs:

PlatformHow Filter is PassedHow Filter is Read
iOS/MacCatalyst--set-env=TestFilter=...NSProcessInfo.ProcessInfo.Environment["TestFilter"]
Android--arg TestFilter=...MauiTestInstrumentation.Current.Arguments.GetString("TestFilter")
Windows ControlsApp argument selects discovered category indexControlsHeadlessTestRunner category loop
Windows non-Controls class filterPer-child NUNIT_SKIPPED_CLASSES plus the normal runnerXHarness ApplicationOptions class include

The Copilot Gate combines -TestFilter with -IncludeClasses when it knows the exact test class. On Windows, Controls still requires category discovery, while Core, Essentials, Graphics, and BlazorWebView bypass discovery and use XHarness's native class include. The result parser rejects output containing any unrelated class. Exact-class Windows runs, including scoped Controls category runs, are capped at 10 minutes per attempt; the Gate retries a timeout three times before treating repeated target-only timeouts as deterministic evidence.

Show full SKILL.md (364 more words)Show less
Available Test Categories

Common categories in Controls.DeviceTests:

  • Button, Label, Entry, Editor - Individual control tests
  • CollectionView, ListView, CarouselView - Collection controls (heavy)
  • Shell, Navigation, TabbedPage - Navigation tests (heavy)
  • Layout, FlexLayout - Layout tests
  • Memory - Memory leak tests
  • Accessibility - Accessibility tests
  • Gesture - Gesture recognition tests

To see all categories, check src/Controls/tests/DeviceTests/TestCategory.cs.

Troubleshooting

Xcode Version Mismatch

If you see errors about Xcode version mismatch (e.g., "Xcode 26.2 installed but 26.0 required"):

bash
# Use -SkipXcodeVersionCheck to bypass validation
pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform ios -SkipXcodeVersionCheck
MacCatalyst App Bundle Not Found

MacCatalyst apps use display names (e.g., "Controls Tests.app") not assembly names. The script handles this automatically by searching for .app bundles in the output directory.

Android Package Name Issues

Android package names must be lowercase (e.g., com.microsoft.maui.controls.devicetests). The script has a mapping of project names to correct package names.

Test Filter Not Working
  1. Ensure full rebuild: The test filter code must be compiled into the app. Delete artifacts and rebuild:

    bash
    rm -rf artifacts/bin/<Project>.DeviceTests
    pwsh .github/skills/run-device-tests/scripts/Run-DeviceTests.ps1 -Project Controls -Platform android -TestFilter "Category=Button"
  2. Check the console output: Look for TestFilter: Category=Button in the test output to confirm filter was applied.

  3. Verify category exists: Ensure the category name matches exactly (case-sensitive).

XHarness Device Detection

The script automatically handles XHarness device targeting for iOS and Android:

iOS
  1. Simulator Boot: Start-Emulator.ps1 detects and boots appropriate iOS simulator
  2. UDID Extraction: Script extracts simulator UDID from Start-Emulator.ps1 output
  3. iOS Version Detection: Script queries xcrun simctl to get iOS version from booted simulator
  4. XHarness Targeting: Passes both --target ios-simulator-64_VERSION and --device UDID to xharness for explicit targeting
MacCatalyst
  • Runs directly on the Mac, no device targeting needed
  • XHarness uses --target maccatalyst
Android
  1. Emulator Boot: Start-Emulator.ps1 detects running device or boots emulator
  2. Device ID Extraction: Script gets device ID (e.g., emulator-5554)
  3. XHarness Targeting: Passes --device-id to xharness android command
Windows
  • No device/emulator needed
  • Runs the built device-test app directly and parses TestResults-*.xml

Why both --target and --device for iOS?

  • XHarness requires --target ios-simulator-64 (or ios-simulator-64_VERSION) to specify platform type
  • Adding --device UDID explicitly tells xharness which simulator to use
  • This combination ensures reliable device selection even on ARM64 Macs where automatic detection can fail

Example xharness invocations:

bash
# iOS with test filter
dotnet xharness apple test \
  --app path/to/app \
  --target ios-simulator-64_18.5 \
  --device 56AE278D-60F7-4892-9DE0-6341357CA068 \
  -o artifacts/log \
  --timeout 01:00:00 \
  -v \
  --set-env=TestFilter=Category=Button

# MacCatalyst with test filter
dotnet xharness apple test \
  --app path/to/app \
  --target maccatalyst \
  -o artifacts/log \
  --timeout 01:00:00 \
  -v \
  --set-env=TestFilter=Category=Button

# Android with test filter
dotnet xharness android test \
  --app path/to/app.apk \
  --package-name com.microsoft.maui.controls.devicetests \
  --device-id emulator-5554 \
  -o artifacts/log \
  --timeout 01:00:00 \
  -v \
  --arg TestFilter=Category=Button

This ensures tests run on the correct device with proper version targeting and filtering.

© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts) in .github/skills/run-device-tests of dotnet/maui.

  • SKILL.md
  • scripts/Run-DeviceTests.Tests.ps1
  • scripts/Run-DeviceTests.ps1

Open the folder on GitHubat commit 7d38fd0

Compare with similar skills

MAUI Device Test Runner next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

MAUI Device Test Runner compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
MAUI Device Test Runner this skilldotnet/maui23k—~3.3kAutomated safety check: PassMIT
Maui AI DebuggingRedth/Maui.Gtk101—~4.1kAutomated safety check: PassMIT
Mobile App Debuggingsecondsky/claude-skills227—~513Automated safety check: PassMIT
Apple Crash Log .NET Symbolicationdotnet/skills5.6k1 repos~2.4kAutomated safety check: PassMIT
Screenmapaleqsio/screenmap239—~7.2kAutomated safety check: PassMIT
Simulator Audio E2Ehyochan/react-native-nitro-sound961—~1.1kAutomated safety check: PassMIT

Similar skills

  • Maui AI Debugging

    Redth/Maui.Gtk

    End-to-end workflow for building, deploying, inspecting, and debugging .NET MAUI and MAUI Blazor Hybrid apps as an AI agent.

    101 GitHub stars~4.1k tokensUpdated 5 mo ago
    MobileAuto-check passed
  • Mobile App Debugging

    secondsky/claude-skills

    Mobile app debugging for iOS, Android, cross-platform frameworks.

    227 GitHub stars~513 tokensUpdated 9 days ago
    MobileAuto-check passed
  • Official

    Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.

    5.6k GitHub starsUsed in 1 repo~2.4k tokens
    MobileAuto-check passed
  • Screenmap

    aleqsio/screenmap

    Generate a visual navigation map of an Expo / React Native or NativeScript app.

    239 GitHub stars~7.2k tokensUpdated 3 days ago
    MobileAuto-check passed
  • Simulator Audio E2E

    hyochan/react-native-nitro-sound

    Build and run repeatable react-native-nitro-sound recorder/player regression tests on an iOS Simulator or Android emulator, with explicit virtual-device selection, microphone permission, Maestro…

    961 GitHub stars~1.1k tokensUpdated 8 days ago
    MobileAuto-check passed
  • Mobilecli

    mobile-next/mobilecli

    Run mobile automation, app testing, and interact with iOS and Android devices, simulators, emulators, and apps using the mobilecli CLI tool or JSON-RPC API.

    294 GitHub stars~2.5k tokensUpdated 2 days ago
    MobileAuto-check: notes

More from dotnet/maui

All 27 skills in this repo
  • Mines local Copilot CLI session logs for dotnet/maui to rank costly or failing runs, tag recurring failure modes, propose repo edits and emit guard evals.

    23k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Official

    Reviews the tests added in a pull request for fix coverage, quality, edge cases and test type, and recommends lighter test types where they would do.

    23k GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Official

    Produces evidence-backed ship-readiness verdicts for .NET MAUI Servicing Releases and Previews, and drafts public-safe release handoff pages from the result.

    23k GitHub stars~15k tokensUpdated today
    Auto-check passed
  • Official

    Interprets pinned managed benchmark evidence for a dotnet/maui pull request and writes a narrative for the performance review workflow, without running or publishing anything.

    23k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • PR Finalize

    dotnet/maui

    Official

    Checks that a pull request's title and description match its implementation and reviews the code for best practices before merge, without posting anything.

    23k GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Official

    Adds MAUI-specific guardrails on top of the maestro-cli skill and Maestro MCP tools for darc, BAR, and channel or feed lookups in dotnet/maui.

    23k GitHub stars~10k tokensUpdated today
    Auto-check passed

Questions about MAUI Device Test Runner

What does MAUI Device Test Runner do?

Builds and runs .NET MAUI device tests locally on iOS simulators, MacCatalyst, Android emulators or Windows, with optional category filtering. ps1, a PowerShell script that builds one of the MAUI device test projects (Controls, Core, Essentials, Graphics or BlazorWebView) and runs it on a chosen platform. On macOS it supports ios, maccatalyst and android, and on Windows android and windows.

When should I use MAUI Device Test Runner?

MAUI Device Test Runner fits situations like: running MAUI device tests locally for Controls, Core, Essentials or Graphics; checking a change on an iOS simulator, Android emulator or MacCatalyst; running only one test category such as the Button tests; building the device test app without running it.

How do I install MAUI Device Test Runner in Claude Code?

Run `npx skills add dotnet/maui --skill run-device-tests -a claude-code`. Or copy the skill folder (.github/skills/run-device-tests in dotnet/maui) into .claude/skills/run-device-tests in your project. Claude Code loads it when a task matches its description.

How do I install MAUI Device Test Runner in Codex?

Run `npx skills add dotnet/maui --skill run-device-tests -a codex`. Or copy the skill folder (.github/skills/run-device-tests in dotnet/maui) into .agents/skills/run-device-tests in your project. Codex loads it when a task matches its description.

Can I use MAUI Device Test Runner in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/maui --skill run-device-tests -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/run-device-tests, .gemini/skills/run-device-tests, .github/skills/run-device-tests and .opencode/skills/run-device-tests in your project.

What does MAUI Device Test Runner need to run?

Going by SKILL.md and its folder, MAUI Device Test Runner needs PowerShell for the scripts in its folder and the command-line tools its instructions call (pwsh, dotnet and xcrun). Our summary lists: PowerShell 7 and bash; The xharness CLI; .NET SDK with platform workloads; Xcode for Apple platforms or the Android SDK for Android. Compatibility (from SKILL.md): Requires xharness CLI (for iOS/MacCatalyst/Android), Xcode (for Apple platforms), Android SDK (for Android), and .NET SDK with platform workloads..

Does MAUI Device Test Runner access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is MAUI Device Test Runner safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does MAUI Device Test Runner use?

MAUI Device Test Runner is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does MAUI Device Test Runner use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to MAUI Device Test Runner?

Skills that share tags, products or a category with MAUI Device Test Runner: Maui AI Debugging (Redth/Maui.Gtk, 101 stars), Mobile App Debugging (secondsky/claude-skills, 227 stars), Apple Crash Log .NET Symbolication (dotnet/skills, 5.6k stars) and Screenmap (aleqsio/screenmap, 239 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains MAUI Device Test Runner?

dotnet (a GitHub organization, an official publisher) maintains it in dotnet/maui, which has 23,322 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 7, 2026.

Source: dotnet/maui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.