Agent skill

mvvm-toolkit

CommunityToolkit.Mvvm (the MVVM Toolkit) core: source generators ([ObservableProperty], [RelayCommand], [NotifyPropertyChangedFor], [NotifyCanExecuteChangedFor], [NotifyDataErrorInfo]), base classes (ObservableObject / ObservableValidator / ObservableRecipient), commands (RelayCommand / AsyncRelayCommand), and validation. Companion skills: mvvm-toolkit-messenger for pub/sub, mvvm-toolkit-di for Microsoft.Extensions.DependencyInjection wiring. Works across WPF, WinUI 3, MAUI, Uno, and Avalonia.

GitHub68,948★ · +463/wk · 2 repos on radarProfile →
copilotMIT
Install
npx skills add github/awesome-copilot --skill mvvm-toolkit --agent copilot

Same command for any agent — swap --agent for claude-code, codex, cursor.

Facts
Files in the skill folder: 6
SKILL.md size: 11 KB
Bundled scripts: none
Path: skills/mvvm-toolkit/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 37,432 · +281 this week
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# CommunityToolkit.Mvvm (core) Use this skill when authoring or reviewing ViewModels, properties, commands, or validation in apps that use `CommunityToolkit.Mvvm` 8.x. > **Companion skills.** Load **`mvvm-toolkit-messenger`** for `IMessenger` > pub/sub patterns. Load **`mvvm-toolkit-di`** for > `Microsoft.Extensions.DependencyInjection` integration. > **Quick recap.** `[ObservableProperty]` on private fields in `partial` > classes; `[RelayCommand]` on instance methods; inherit from > `ObservableObject` (or `ObservableValidator` for input forms, > `ObservableRecipient` when using `IMessenger`). --- ## Package & setup ```xml <ItemGroup> <PackageReference Include="CommunityToolkit.Mvvm" Version="8.*" /> </ItemGroup> ``` Targets: `netstandard2.0`, `netstandard2.1`, `net6.0`+. Works on .NET, .NET Framework, Mono. Source generators ship in the same NuGet — no extra analyzer reference required. Namespaces: ```csharp using CommunityToolkit.Mvvm.ComponentModel; // ObservableObject, [ObservableProperty] using CommunityToolkit.Mvvm.Input; // [RelayCommand], RelayCommand, AsyncRelayCommand ``` > **Universal rule.** Every type that uses `[ObservableProperty]` or > `[RelayCommand]` — and every e

What's inside
Steps it walks through
  1. Package & setup
  2. Source generators cheat sheet
  3. ViewModel patterns
  4. Simple observable property
  5. Hooks: OnXxxChanging / OnXxxChanged
  6. Dependent properties + dependent commands
  7. Wrapping a non-observable model
  8. Commands
  9. Base class selection
  10. Validation
  11. Top pitfalls
  12. End-to-end mini walkthrough
  13. References & companion skills
Ships with 5 files
  • references/end-to-end-walkthrough.md
  • references/relaycommand-cookbook.md
  • references/source-generators.md
  • references/troubleshooting.md
  • references/validation.md
More from awesome-copilot
All skills →
About this skill
What does the mvvm-toolkit skill do?

CommunityToolkit.Mvvm (the MVVM Toolkit) core: source generators ([ObservableProperty], [RelayCommand], [NotifyPropertyChangedFor], [NotifyCanExecuteChangedFor], [NotifyDataErrorInfo]), base classes (ObservableObject / ObservableValidator / ObservableRecipient), commands (RelayCommand / AsyncRelayCommand), and validation. Companion skills: mvvm-toolkit-messenger for pub/sub, mvvm-toolkit-di for Microsoft.Extensions.DependencyInjection wiring. Works across WPF, WinUI 3, MAUI, Uno, and Avalonia.

How do I install it?

Run `npx skills add github/awesome-copilot --skill mvvm-toolkit --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From github/awesome-copilot, a repository with 37,432 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going