# Winui

Build or review WinUI 3 applications with the Windows App SDK, including MVVM patterns...

- Repository: https://github.com/managedcode/dotnet-skills (500 stars)
- Category: Design
- License: MIT
- Last updated: 2026-10-29
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add managedcode/dotnet-skills --skill winui -g -a claude-code -y`
Codex: `npx skills add managedcode/dotnet-skills --skill winui -g -a codex -y`
Cursor: `npx skills add managedcode/dotnet-skills --skill winui -g -a cursor -y`
Gemini CLI: `npx skills add managedcode/dotnet-skills --skill winui -g -a gemini-cli -y`

## Description

Build or review WinUI 3 applications with the Windows App SDK, including MVVM patterns, packaging decisions, navigation, theming, windowing, and interop boundaries with other .NET stacks. USE FOR: building native modern Windows desktop UI on WinUI 3; integrating Windows App SDK features into a .NET app; deciding between WinUI, WPF, WinForms, and MAUI for Windows. DO NOT USE FOR: unrelated stacks; generic tasks that do not need this specific guidance. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# WinUI 3 and Windows App SDK

## Trigger On

- building native modern Windows desktop UI on WinUI 3
- integrating Windows App SDK features into a .NET app
- deciding between WinUI, WPF, WinForms, and MAUI for Windows work
- implementing MVVM patterns in Windows App SDK applications

## Workflow

1. **Confirm WinUI is the right choice**, use when modern Windows-native UI, Fluent Design, and Windows App SDK capabilities are needed. For cross-platform, consider MAUI instead.
2. **Choose packaging model early**, packaged (MSIX) vs unpackaged differ materially for deployment, identity, and API access:
   ```xml
   <!-- Unpackaged: add to .csproj -->
   <WindowsPackageType>None</WindowsPackageType>
   ```
3. **Apply MVVM pattern** with the MVVM Toolkit, keep views dumb, logic in ViewModels:
   ```csharp
   public partial class ProductsViewModel : ObservableObject
   {
       [ObservableProperty]
       private ObservableCollection<Product> _products = [];

       [ObservableProperty]
       [NotifyCanExecuteChangedFor(nameof(DeleteCommand))]
       private Product? _selectedProduct;

The rest: https://github.com/managedcode/dotnet-skills/blob/HEAD/catalog/Frameworks/WinUI/skills/winui/SKILL.md
