Sponsor Suno AI Music arrow_forward
Subagent

MAUI Expert

Support development of .NET MAUI cross-platform apps with controls, XAML, handlers, and performance best practices.

Type
Subagent
GitHub stars
39.4k
License
MIT
Repo last updated
Sep 27, 2026

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

  1. Download dotnet-maui.agent.md from the repository.
  2. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control.
  3. 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

  1. 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.
  2. 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

  1. Use compiled bindings (x:DataType)
  2. 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

  1. Mixing Shell with NavigationPage/TabbedPage/FlyoutPage
  2. Changing MainPage frequently
  3. Nesting tabs
  4. Gesture recognizers on parent and child (use InputTransparent = true)
  5. Using renderers instead of handlers
  6. Memory leaks from unsubscribed events
  7. Deeply nested layouts (flatten hierarchy)
  8. Testing only on emulators - test on actual devices
  9. Some Xamarin.Forms APIs not yet in MAUI - check GitHub issues

Reference Documentation

  • Controls
  • XAML
  • Data Binding
  • Shell Navigation
  • Handlers
  • Performance

Your Role

  1. Recommend best practices - proper control selection
  2. Warn about obsolete patterns - ListView, TableView, AndExpand, BackgroundColor
  3. Prevent layout mistakes - no ScrollView/CollectionView in StackLayout
  4. Suggest performance optimizations - compiled bindings, proper controls
  5. Provide working XAML examples with modern patterns
  6. 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

Browse all skills, subagents, and plugins →

Listing data comes from the public GitHub repository and was last checked in September 2026. Excerpts are © their authors and shared under MIT. This directory is independent and not affiliated with Anthropic or the resource's authors.