maui-custom-handlers

maui-custom-handlers is a skill for Claude Code, Codex from dotnet/maui-labs. It costs 88 tokens per session (1,348 once invoked), scanned A, original, MIT.

A .NET MAUI guide for connecting cross-platform views to native controls and behavior on each operating system. .NET MAUI is a framework for building apps for several platforms from shared code.

In plain words
What is it for?
Use it when customizing entries or other views, migrating older renderers, mapping properties or commands, or creating reusable controls.
Why use it?
It helps choose the right mapping or handler and keeps platform-specific setup and cleanup limited to the intended control.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it when customizing entries or other views, migrating older renderers, mapping properties or commands, or creating reusable controls.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/dotnet/maui-labs/maui-custom-handlers
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add dotnet/maui-labs --skill maui-custom-handlers
Clone the repo
git clone --depth 1 https://github.com/dotnet/maui-labs

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for maui-custom-handlers

README.md
[![agentmods](https://agentmods.dev/badge/skills/dotnet/maui-labs/maui-custom-handlers/github.svg)](https://agentmods.dev/skills/dotnet/maui-labs/maui-custom-handlers)
Your own site
<a href="https://agentmods.dev/skills/dotnet/maui-labs/maui-custom-handlers"><img src="https://agentmods.dev/badge/skills/dotnet/maui-labs/maui-custom-handlers/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for maui-custom-handlers

Your own site · 80×15
<a href="https://agentmods.dev/skills/dotnet/maui-labs/maui-custom-handlers"><img src="https://agentmods.dev/badge/skills/dotnet/maui-labs/maui-custom-handlers.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 88 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,348 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00088 $0.01348
Opus 5 $0.00044 $0.00674
Sonnet 5 $0.00018 $0.00270
Haiku 4.5 $0.00009 $0.00135

Measured 8d ago against content hash a26fba4963df, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

maui-custom-handlers scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/dotnet-maui/skills/maui-custom-handlers/SKILL.md · 167 lines

How it starts

The opening of the file, as written. The whole thing — 167 lines — stays where its author put it; the contents beside it link to each section on GitHub.

MAUI Custom Handlers

Use this skill when a MAUI visual element needs native platform behavior. Keep handlers focused on views. Route non-visual APIs to platform services and route large native SDK surfaces to slim bindings.

Response Checklist

  • Use handler language explicitly: AppendToMapping, PropertyMapper, CommandMapper, and ViewHandler.
  • For renderer migration, map subscription/setup to ConnectHandler and cleanup to DisconnectHandler.
  • Keep mapper changes scoped to the intended control type, not all controls.

Decision Tree

Need Prefer
Tweak an existing control for the whole app EntryHandler.Mapper.AppendToMapping in MauiProgram.cs (or the matching concrete control handler mapper)
Tweak only specific control instances Subclass the control and guard mapper logic with if (view is MyControl)
Add a reusable cross-platform control Custom ViewHandler<TVirtualView,TPlatformView>
Map bindable properties to native properties PropertyMapper entries
Invoke actions such as play/pause/scroll CommandMapper entries
Use camera, sensors, payment, health, or background APIs Platform service through DI
Wrap a third-party Android/iOS/macOS SDK Slim binding plus a platform service facade

Workflow

  1. Inspect the target frameworks and existing UI architecture.

  2. Define the cross-platform view API first: bindable properties, commands, and events that make sense to app code.

  3. Choose global mapper customization, subclass-scoped mapper customization, or a full custom handler.

  4. Put native implementation in partial handler files or #if guarded blocks for the exact platforms supported by the project.

  5. Register handlers in MauiProgram.cs:

    builder.ConfigureMauiHandlers(handlers =>
    {
        handlers.AddHandler<CameraPreview, CameraPreviewHandler>();
    });
    
  6. Use ConnectHandler to subscribe native events and allocate native resources.

  7. Use DisconnectHandler to unsubscribe, stop timers, clear delegates, and dispose only native objects owned by the handler. Call base.DisconnectHandler(platformView) as the final statement so the base handler clears its own state.

  8. Build each targeted platform and verify the behavior with UI automation or DevFlow when available.

Read the full file on GitHub · 167 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago Changed · -30 tokens per session a26fba4963df
  2. 11d ago First seen · 167 lines · 118 tokens per session scan A 3be3b5b240d3

Subscribe to this mod's changes

maui-custom-handlers is a skill published in the GitHub repository dotnet/maui-labs (214 stars, last pushed yesterday), licensed MIT. It adds 88 tokens to every session and 1,348 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

argent-device-interact

Interact with an iOS simulator, Android emulator, or Chromium (CDP) app using argent MCP tools. Use when tapping UI elements, performing gestures, scrolling/swiping, typing text, pressing hardware buttons, launching apps, opening URLs, taking screenshots, waiting for an element to appear or disappear, or checking…

software-mansion/argent · 78 tokens

argent-metro-debugger

Debug a JS runtime via CDP using argent debugger tools. Primary path is React Native via Metro (iOS / Android / Vega); a subset of the tools (debugger-connect, debugger-status, debugger-evaluate, debugger-log-registry) also drive a Chromium (CDP) app's renderer (an Electron app, or any Chromium browser exposing CDP)…

software-mansion/argent · 104 tokens

argent-settings-permissions

Grant, deny, or reset an app's runtime permissions (camera, microphone, photos, contacts, notifications, calendar, location, location-always, media-library, motion, reminders) on an iOS simulator or Android device using the argent settings-permissions tool - without navigating the system Settings UI. Use when the…

software-mansion/argent · 140 tokens

argent-react-native-optimization

Optimizes a React Native app by profiling first to find real bottlenecks, then sweeping for mechanical issues. Entry-point for all performance work. Use when the app feels slow, user asks to optimize, fix re-renders, reduce jank, or improve startup. Delegates to argent-react-native-profiler for measurement.

software-mansion/argent · 71 tokens

mobile-automation

Control Android and iOS devices, emulators and simulators — launch apps, tap, swipe, type, take screenshots, read the accessibility tree. Use when a task involves a mobile device or app, mobile UI testing, or reproducing a bug on a phone.

mobile-next/mobile-mcp · 58 tokens

argent-react-native-profiler

Profile a React Native Hermes app to measure re-render and CPU performance using argent profiler tools. Use when optimizing for performance, measuring before/after a fix, spotting slow components, diagnosing re-renders, checking CPU hotspots, or producing a ranked issue report.

software-mansion/argent · 57 tokens