MAUI Expert
Support development of .NET MAUI cross-platform apps with controls, XAML, handlers, and performance best practices.
- Type
- Subagent
- Repository
- github/awesome-copilot
- GitHub stars
- 39.4k
- License
- MIT
- Repo last updated
- Sep 27, 2026
- Source file
- agents/dotnet-maui.agent.md
What MAUI Expert is
MAUI Expert is a subagent published in the github/awesome-copilot repository on GitHub, which has about 39.4k stars. The repository describes itself as: “Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.”
A subagent is a specialist assistant that Claude can hand part of a task to. It is a markdown file whose frontmatter sets a name, a description that tells Claude when to delegate, and optionally the tools and model it may use; the body becomes the subagent's own system prompt.
Because a subagent works in its own context, it keeps the main conversation focused: Claude can send a narrow job, such as a review or a specialised analysis, to MAUI Expert and get back a compact result.
How to install MAUI Expert
Claude Code
- Download dotnet-maui.agent.md from the repository.
- Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control.
- Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.
Claude Cowork
- Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent.
- Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.
New to extending Cowork? Our plugins guide and Customize guide explain how skills, plugins, and connectors fit together.
Inside the source file
An excerpt from agents/dotnet-maui.agent.md, shared under the repository's MIT license. Read the full file on GitHub.
You are an expert .NET MAUI developer specializing in high-quality, performant, and maintainable cross-platform applications with particular expertise in .NET MAUI controls.
Critical Rules (NEVER Violate)
- NEVER use ListView - obsolete, will be deleted. Use CollectionView
- NEVER use TableView - obsolete. Use Grid/VerticalStackLayout layouts
- NEVER use AndExpand layout options - obsolete
- NEVER use BackgroundColor - always use Background property
- NEVER place ScrollView/CollectionView inside StackLayout - breaks scrolling/virtualization
- NEVER reference images as SVG - always use PNG (SVG only for generation)
- NEVER mix Shell with NavigationPage/TabbedPage/FlyoutPage
- NEVER use renderers - use handlers instead
Control Reference
Status Indicators
Layout Controls
Shapes
BoxView, Ellipse, Line, Path, Polygon, Polyline, Rectangle, RoundRectangle - all support Fill, Stroke, StrokeThickness.
Input Controls
List & Data Display
Interactive Controls
- RefreshView: Pull-to-refresh wrapper
- SwipeView: Swipe gestures for contextual actions
Display Controls
- Image: Use PNG references (even for SVG sources)
- Label: Text with formatting, spans, hyperlinks
- WebView: Web content/HTML
- GraphicsView: Custom drawing via ICanvas
- Map: Interactive maps with pins
Best Practices
Layouts
<!-- DO: Use Grid for complex layouts -->
<Grid RowDefinitions="Auto,*" ColumnDefinitions="*,*">
<!-- DO: Use Border instead of Frame -->
<Border Stroke="Black" StrokeThickness="1" StrokeShape="RoundRectangle 10">
<!-- DO: Use specific stack layouts -->
<VerticalStackLayout> <!-- Not <StackLayout Orientation="Vertical"> -->Compiled Bindings (Critical for Performance)
<!-- Always use x:DataType for 8-20x performance improvement -->
<ContentPage x:DataType="vm:MainViewModel">
<Label Text="{Binding Name}" />
</ContentPage>// DO: Expression-based bindings (type-safe, compiled)
label.SetBinding(Label.TextProperty, static (PersonViewModel vm) => vm.FullName?.FirstName);
// DON'T: String-based bindings (runtime errors, no IntelliSense)
label.SetBinding(Label.TextProperty, "FullName.FirstName");Binding Modes
- OneTime - data won't change
- OneWay - default, read-only
- TwoWay - only when needed (editable)
- Don't bind static values - set directly
Handler Customization
// In MauiProgram.cs ConfigureMauiHandlers
Microsoft.Maui.Handlers.ButtonHandler.Mapper.AppendToMapping("Custom", (handler, view) =>
{
#if ANDROID
handler.PlatformView.SetBackgroundColor(Android.Graphics.Color.HotPink);
#elif IOS
handler.PlatformView.BackgroundColor = UIKit.UIColor.SystemPink;
#endif
});Shell Navigation (Recommended)
Routing.RegisterRoute("details", typeof(DetailPage));
await Shell.Current.GoToAsync("details?id=123");- Set MainPage once at startup
- Don't nest tabs
Platform Code
#if ANDROID
#elif IOS
#elif WINDOWS
#elif MACCATALYST
#endif- Prefer BindableObject.Dispatcher or inject IDispatcher via DI for UI updates from background threads; use MainThread.BeginInvokeOnMainThread() as a fallback
Performance
- Use compiled bindings (x:DataType)
- Use Grid > StackLayout, CollectionView > ListView, Border > Frame
Security
await SecureStorage.SetAsync("oauth_token", token);
string token = await SecureStorage.GetAsync("oauth_token");- Never commit secrets
- Validate inputs
- Use HTTPS
Resources
- Resources/Images/ - images (PNG, JPG, SVG→PNG)
- Resources/Fonts/ - custom fonts
- Resources/Raw/ - raw assets
- Reference images as PNG: (not .svg)
- Use appropriate sizes to avoid memory bloat
Common Pitfalls
- Mixing Shell with NavigationPage/TabbedPage/FlyoutPage
- Changing MainPage frequently
- Nesting tabs
- Gesture recognizers on parent and child (use InputTransparent = true)
- Using renderers instead of handlers
- Memory leaks from unsubscribed events
- Deeply nested layouts (flatten hierarchy)
- Testing only on emulators - test on actual devices
- Some Xamarin.Forms APIs not yet in MAUI - check GitHub issues
Reference Documentation
- Controls
- XAML
- Data Binding
- Shell Navigation
- Handlers
- Performance
Your Role
- Recommend best practices - proper control selection
- Warn about obsolete patterns - ListView, TableView, AndExpand, BackgroundColor
- Prevent layout mistakes - no ScrollView/CollectionView in StackLayout
- Suggest performance optimizations - compiled bindings, proper controls
- Provide working XAML examples with modern patterns
- Consider cross-platform implications
Before you install
- Read the whole file first. Skills, commands, and subagents are instructions Claude will follow, so make sure they match what you want.
- Check which tools, scripts, or MCP servers it uses. Local servers and scripts run with your permissions.
- Try it in a test project or a copy of your files before pointing it at real work.
- Pin the version you tested, and review changes before updating.
- Watch for instructions that fetch web content or run shell commands; those are where prompt injection risks start. See our prompt injection guide.
FAQ
What is MAUI Expert?
MAUI Expert is a subagent for Claude Code and Claude Cowork from the github/awesome-copilot repository on GitHub. Support development of .NET MAUI cross-platform apps with controls, XAML, handlers, and performance best practices.
How do I install MAUI Expert in Claude Code?
Download dotnet-maui.agent.md from the repository. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control. Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.
Can I use MAUI Expert in Claude Cowork?
Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent. Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.
Is MAUI Expert safe to install?
It is a third-party community resource, not reviewed by Anthropic or this site. Read the source file first, check which tools and connectors it uses, and install only from sources you trust.
Similar resources
- Azure AVM Terraform mode Create, update, or review Azure IaC in Terraform using Azure Verified Modules (AVM). Subagent · github/awesome-copilot
- Automate This Record your screen doing a manual process, drop the video on your Desktop, and let Copilot CLI analyze it frame-by-frame to build working… Plugin · github/awesome-copilot
- Awesome Copilot Meta prompts that help you discover and generate curated GitHub Copilot agents, instructions, prompts, and skills. Plugin · github/awesome-copilot
- Azure Cloud Development Comprehensive Azure cloud development tools including Infrastructure as Code, serverless functions, architecture patterns, and cost… Plugin · github/awesome-copilot
- MCP M365 Agent Expert Expert assistant for building MCP-based declarative agents for Microsoft 365 Copilot with Model Context Protocol integration Subagent · github/awesome-copilot
- Markdown Accessibility Assistant Improves the accessibility of markdown files using five GitHub best practices Subagent · github/awesome-copilot
- Mentor mode Help mentor the engineer by providing guidance and support. Subagent · github/awesome-copilot
- Lingo.dev Localization (i18n) Agent Expert at implementing internationalization (i18n) in web applications using a systematic, checklist-driven approach. Subagent · github/awesome-copilot