AppsFlyer Unity Plugin API Change
AppsFlyerSDK/appsflyer-unity-plugin
Guides API changes in the AppsFlyer Unity plugin across the C# layer and the Android Java and iOS Objective-C bridges, ending with a compatibility-risk report.
Diagnoses and fixes .NET MAUI development environments by checking the .NET SDK, workloads, JDK, Android SDK, Xcode and Windows SDK against requirements read from NuGet.
$ npx skills add dotnet/skills --skill dotnet-maui-doctor -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dotnet/skills dotnet-maui-doctor --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dotnet-maui/skills/dotnet-maui-doctor .claude/skills/dotnet-maui-doctor && rm -rf skills-srcUse ~/.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/
Install the "dotnet-maui-doctor" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-maui/skills/dotnet-maui-doctor into .claude/skills/dotnet-maui-doctor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-maui-doctor", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dotnet/skills/tree/main/plugins/dotnet-maui/skills/dotnet-maui-doctorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dotnet/skills --skill dotnet-maui-doctor -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dotnet/skills dotnet-maui-doctor --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/dotnet-maui/skills/dotnet-maui-doctor .agents/skills/dotnet-maui-doctor && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dotnet-maui-doctor" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-maui/skills/dotnet-maui-doctor into .agents/skills/dotnet-maui-doctor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-maui-doctor", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/skills --skill dotnet-maui-doctor -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dotnet/skills dotnet-maui-doctor --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/dotnet-maui/skills/dotnet-maui-doctor .cursor/skills/dotnet-maui-doctor && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dotnet-maui-doctor" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-maui/skills/dotnet-maui-doctor into .cursor/skills/dotnet-maui-doctor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-maui-doctor", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dotnet/skills.git --path plugins/dotnet-maui/skills/dotnet-maui-doctor--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dotnet/skills --skill dotnet-maui-doctor -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dotnet/skills dotnet-maui-doctor --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/dotnet-maui/skills/dotnet-maui-doctor .gemini/skills/dotnet-maui-doctor && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dotnet-maui-doctor" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-maui/skills/dotnet-maui-doctor into .gemini/skills/dotnet-maui-doctor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-maui-doctor", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dotnet/skills dotnet-maui-doctorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dotnet/skills --skill dotnet-maui-doctor -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/dotnet-maui/skills/dotnet-maui-doctor .github/skills/dotnet-maui-doctor && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dotnet-maui-doctor" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-maui/skills/dotnet-maui-doctor into .github/skills/dotnet-maui-doctor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-maui-doctor", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/skills --skill dotnet-maui-doctor -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dotnet/skills dotnet-maui-doctor --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/dotnet-maui/skills/dotnet-maui-doctor .opencode/skills/dotnet-maui-doctor && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dotnet-maui-doctor" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-maui/skills/dotnet-maui-doctor into .opencode/skills/dotnet-maui-doctor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dotnet-maui-doctor", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dotnet-maui-doctorDiagnoses and fixes .NET MAUI development environments by checking the .NET SDK, workloads, JDK, Android SDK, Xcode and Windows SDK against requirements read from NuGet.
The skill works through a series of tasks on its own. It detects the platform (macOS, Windows or Linux), checks the .NET SDK with dotnet --info, then validates workloads, the Java JDK, the Android SDK, Xcode and the Windows SDK. It fixes what is missing and re-validates after each fix until nothing more can be done. Version requirements are never hardcoded: they are discovered at run time from NuGet and WorkloadDependencies.json, and the latest active .NET major release comes from releases-index.json rather than from the agent's memory.
After detection, only the matching platform references are loaded, covering platform requirements, installation commands and troubleshooting, plus notes on Microsoft OpenJDK and on discovering workload dependencies. It needs shell access (Bash with curl, jq and unzip on macOS and Linux, PowerShell on Windows), internet access for NuGet queries and downloads, and sometimes admin or sudo rights. It is not meant for non-MAUI .NET projects, Xamarin.Forms apps, runtime crashes unrelated to setup, app store publishing or IDE-specific configuration.
Read from SKILL.md and the folder at commit 1d40f95. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
dotnetjavaxcodebuildFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
learn.microsoft.comdotnetcli.blob.core.windows.netdotnet.microsoft.comdeveloper.android.comdeveloper.apple.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
.NET MAUI Doctor loads about 2.4k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 167 tokens; SKILL.md has 914 words of instructions outside code blocks.
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.
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); files beside SKILL.md are not scanned.
The full file from dotnet/skills at commit 1d40f95, republished under its MIT licence (© dotnet). 914 words, ~2,382 tokens.
.claude/skills/dotnet-maui-doctor/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.Validate and fix .NET MAUI development environments. All version requirements are discovered dynamically from NuGet APIs — never hardcode versions.
Your training data may be outdated regarding .NET versions. .NET ships new major releases annually (November). Always check the releases-index.json (Task 2) to discover the latest active major release — do not assume your training data reflects the current version. For example, if you know about .NET 9.0 but the releases index shows .NET 10.0 as active, use .NET 10.0.
curl, jq, and unzip (macOS/Linux)Invoke-RestMethod and System.IO.Compression (built-in on Windows)# macOS
sw_vers && uname -m
# Windows
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
# Linux
cat /etc/os-release && uname -mAfter detection, load the matching platform references:
references/platform-requirements-macos.md, references/installation-commands-macos.md, references/troubleshooting-macos.mdreferences/platform-requirements-windows.md, references/installation-commands-windows.md, references/troubleshooting-windows.mdreferences/platform-requirements-linux.mddotnet --infoCompare installed vs latest-sdk from https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json where support-phase is "active".
| Workload | macOS | Windows | Linux |
|---|---|---|---|
maui | Required | Required | ❌ Use maui-android |
maui-android | Alias | Alias | Required |
android | Required | Required | Required |
ios | Required | Optional | N/A |
See references/workload-dependencies-discovery.md for complete process.
Query NuGet for workload manifest → extract WorkloadDependencies.json → get:
jdk.version range and jdk.recommendedVersionandroidsdk.packages, buildToolsVersion, apiLevelxcode.version rangeOnly Microsoft OpenJDK supported. Verify java -version output contains "Microsoft". See references/microsoft-openjdk.md for detection paths.
Use the JDK version recommended by WorkloadDependencies.json (
jdk.recommendedVersion), ensuring it satisfies thejdk.versionrange. Do not hardcode JDK versions.
JAVA_HOME is NOT required. .NET MAUI tools auto-detect Microsoft OpenJDK installations from known paths. Do not tell users to set JAVA_HOME — it is unnecessary and risks pointing to a non-Microsoft JDK.
| JAVA_HOME state | OK? | Action |
|---|---|---|
| Not set | ✅ | None needed — auto-detection works |
| Set to Microsoft JDK | ✅ | None needed |
| Set to non-Microsoft JDK | ⚠️ | Report as anomaly — let user decide to unset or redirect |
Check packages from androidsdk.packages, buildToolsVersion, apiLevel (Task 4). See references/installation-commands.md for sdkmanager commands.
xcodebuild -versionCompare against xcode.version range from Task 4. See references/installation-commands-macos.md.
The Windows SDK is typically installed as part of the .NET MAUI workload or Visual Studio. See references/installation-commands-windows.md.
See references/installation-commands.md for all commands.
Key rules:
--version flag. Never use workload update or workload repair.sdkmanager (from Android SDK command-line tools). On Windows use sdkmanager.bat.After each fix, re-run the relevant validation task. Iterate until all checks pass.
A successful run produces:
java -version contains "Microsoft")After all checks pass, create and build a test project to confirm the environment actually works:
TEMP_DIR=$(mktemp -d)
dotnet new maui -o "$TEMP_DIR/MauiTest"
dotnet build "$TEMP_DIR/MauiTest"
rm -rf "$TEMP_DIR"On Windows, use $env:TEMP or New-TemporaryFile for the temp directory.
If the build succeeds, the environment is verified. If it fails, use the error output to diagnose remaining issues.
After a successful build, ask the user if they want to launch the app on a target platform to verify end-to-end:
# Replace net10.0 with the current major .NET version
dotnet build -t:Run -f net10.0-android
dotnet build -t:Run -f net10.0-ios # macOS only
dotnet build -t:Run -f net10.0-maccatalyst # macOS only
dotnet build -t:Run -f net10.0-windows # Windows onlyOnly run the target frameworks relevant to the user's platform and intent. This step deploys to an emulator/simulator/device, so confirm with the user before proceeding.
maui vs maui-android workload: On Linux, the maui meta-workload is not available — use maui-android instead. On macOS/Windows, maui installs all platform workloads.workload update / workload repair: Never use these commands. Always install workloads with an explicit --version flag to ensure version consistency.sdkmanager on Windows: Use sdkmanager.bat, not sdkmanager, on Windows.references/workload-dependencies-discovery.md — NuGet API discovery processreferences/microsoft-openjdk.md — JDK detection paths, identification, JAVA_HOMEreferences/installation-commands.md — .NET workloads, Android SDK (sdkmanager)references/troubleshooting.md — Common errors and solutionsreferences/platform-requirements-{platform}.md — Platform-specific requirementsreferences/installation-commands-{platform}.md — Platform-specific install commandsreferences/troubleshooting-{platform}.md — Platform-specific troubleshootingOfficial docs:
© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (references) in plugins/dotnet-maui/skills/dotnet-maui-doctor of dotnet/skills.
Open the folder on GitHubat commit 1d40f95
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in dotnet/skills, which our catalogue first saw on October 7, 2026.
.NET MAUI Doctor 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| .NET MAUI Doctor this skilldotnet/skills | 5.6k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| AppsFlyer Unity Plugin API ChangeAppsFlyerSDK/appsflyer-unity-plugin | 178 | — | ~514 | Automated safety check: Pass | MIT | |
| Eas Simulatorexpo/skills | 2.7k | — | ~6.6k | Automated safety check: Notes | MIT | |
| Find Untested Sourcesmicrosoft/testfx | 1k | 2 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Frb Android Emulator Preparefzyzcjy/flutter_rust_bridge | 5.4k | — | ~2.1k | Automated safety check: Notes | MIT | |
| Expo Brownfield Integrationmweinbach/agent-coworker | 156 | 2 repos | ~900 | Automated safety check: Notes | Custom licence |
AppsFlyerSDK/appsflyer-unity-plugin
Guides API changes in the AppsFlyer Unity plugin across the C# layer and the Android Java and iOS Objective-C bridges, ending with a compatibility-risk report.
expo/skills
Run and control a user's app on a remote iOS/Android simulator hosted on EAS cloud.
microsoft/testfx
MANDATORY for static source-to-test pairing: find or list source files/modules without corresponding tests, or suggest test locations from repository structure.
fzyzcjy/flutter_rust_bridge
A skill your agent uses when preparing, installing, diagnosing, or explaining the host Android Emulator environment for flutterrustbridge local runtime validation, including Android SDK command-line…
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
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…
dotnet/skills
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.
dotnet/skills
Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.
dotnet/skills
Resolves native crash frames from .NET Android tombstones to function names, source files and line numbers using BuildIds, Microsoft's symbol server and llvm-symbolizer.
dotnet/skills
Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks.
dotnet/skills
Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.
dotnet/skills
Configures automatic crash dumps or captures dumps from running processes for modern .NET apps on Linux, macOS and Windows, including Docker and Kubernetes.
Categories
Diagnoses and fixes .NET MAUI development environments by checking the .NET SDK, workloads, JDK, Android SDK, Xcode and Windows SDK against requirements read from NuGet. The skill works through a series of tasks on its own.NET SDK with dotnet --info, then validates workloads, the Java JDK, the Android SDK, Xcode and the Windows SDK.
.NET MAUI Doctor fits situations like: setting up a new .NET MAUI development machine; build errors that mention missing SDKs, workloads, the JDK or Android components; errors such as Android SDK not found, a Java version problem or Xcode not found; verifying that the environment still works after SDK or OS updates.
Run `npx skills add dotnet/skills --skill dotnet-maui-doctor -a claude-code`. Or copy the skill folder (plugins/dotnet-maui/skills/dotnet-maui-doctor in dotnet/skills) into .claude/skills/dotnet-maui-doctor in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dotnet/skills --skill dotnet-maui-doctor -a codex`. Or copy the skill folder (plugins/dotnet-maui/skills/dotnet-maui-doctor in dotnet/skills) into .agents/skills/dotnet-maui-doctor in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/skills --skill dotnet-maui-doctor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dotnet-maui-doctor, .gemini/skills/dotnet-maui-doctor, .github/skills/dotnet-maui-doctor and .opencode/skills/dotnet-maui-doctor in your project.
Going by SKILL.md and its folder, .NET MAUI Doctor needs the command-line tools its instructions call (dotnet, java and xcodebuild). Our summary lists: macOS, Windows or Linux with shell access; Internet access for NuGet queries and SDK downloads; curl, jq and unzip on macOS and Linux.
SKILL.md names 5 domains. As links in the text: learn.microsoft.com, dotnetcli.blob.core.windows.net, dotnet.microsoft.com, developer.android.com and developer.apple.com. This is read from the text; nothing was executed.
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. Review the folder before installing.
.NET MAUI Doctor is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with .NET MAUI Doctor: AppsFlyer Unity Plugin API Change (AppsFlyerSDK/appsflyer-unity-plugin, 178 stars), Eas Simulator (expo/skills, 2.7k stars), Find Untested Sources (microsoft/testfx, 1k stars) and Frb Android Emulator Prepare (fzyzcjy/flutter_rust_bridge, 5.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dotnet (a GitHub organization, an official publisher) maintains it in dotnet/skills, which has 5,594 GitHub stars. The repository holds 70 skills in this directory. The repository was last updated on October 9, 2026.
Source: dotnet/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.