maui-mvvm

Bind MAUI UI development to MVVM with Views, ViewModels, Models, and services.

Updated Apr 21, 2026
One-click install
npx skills add https://github.com/snailb1007/snail-codex-skills --skill maui-mvvm
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: maui-mvvm
Source: https://github.com/snailb1007/snail-codex-skills/tree/main/skills/maui-mvvm
Command: npx skills add https://github.com/snailb1007/snail-codex-skills --skill maui-mvvm

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides a disciplined approach to building MAUI apps using MVVM, ensuring UI logic stays out of code-behind and enabling testable, maintainable architecture across Views, ViewModels, Models, and Services.

Core Features & Use Cases

  • Enforces MVVM boundaries: separate XAML views, ViewModel with INotifyPropertyChanged, and model/service layer.
  • Guides navigation, data binding, commands, validation, and dependency injection using the project's existing conventions.
  • Helps maintain testability and UI responsiveness through async patterns and proper state management.

Quick Start

Create or refactor a MAUI ContentPage and its ViewModel, wire the BindingContext, and implement MVVM bindings and navigation using the project’s established conventions.

Frequently Asked Questions about maui-mvvm

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up MVVM bindings in a MAUI app to separate UI from business logic?

To set up MVVM bindings in a MAUI app, you separate XAML views from ViewModels using INotifyPropertyChanged, wire the BindingContext, and implement commands and services to keep UI logic out of code-behind.

What is the best way to implement Shell navigation in MAUI while maintaining MVVM boundaries?

The best way to implement Shell navigation in MAUI with MVVM is to use navigation abstractions within ViewModels, ensuring routing logic stays separate from Views and maintains testability.

How do I handle asynchronous operations in MAUI ViewModels without blocking the UI thread?

Handle asynchronous operations in MAUI ViewModels by using async patterns for proper state management, ensuring UI responsiveness while executing data fetching or service calls in the background.

Can I use dependency injection with MAUI MVVM for better testability?

Yes, you can use dependency injection with MAUI MVVM to inject services into ViewModels. This approach enforces MVVM boundaries, improves maintainability, and allows ViewModels to be unit tested in isolation.

When do I need to refactor a MAUI ContentPage to follow strict MVVM conventions?

Refactor a MAUI ContentPage to strict MVVM when business logic creeps into code-behind, requiring separation into Views, ViewModels, Models, and services for better testability and BindingContext management.