Mvvm Toolkit Di
github/awesome-copilot
Wire CommunityToolkit.Mvvm ViewModels into Microsoft.Extensions.DependencyInjection.
Build and debug Avalonia 11/12 .NET applications with XAML, compiled bindings, MVVM, custom controls, desktop lifetimes, and platform publishing.
$ npx skills add managedcode/dotnet-skills --skill avalonia -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install managedcode/dotnet-skills avalonia --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/catalog/Frameworks/Avalonia/skills/avalonia .claude/skills/avalonia && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "avalonia" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Avalonia/skills/avalonia into .claude/skills/avalonia/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avalonia", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Avalonia/skills/avaloniaType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add managedcode/dotnet-skills --skill avalonia -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install managedcode/dotnet-skills avalonia --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/catalog/Frameworks/Avalonia/skills/avalonia .agents/skills/avalonia && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "avalonia" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Avalonia/skills/avalonia into .agents/skills/avalonia/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avalonia", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add managedcode/dotnet-skills --skill avalonia -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install managedcode/dotnet-skills avalonia --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/catalog/Frameworks/Avalonia/skills/avalonia .cursor/skills/avalonia && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "avalonia" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Avalonia/skills/avalonia into .cursor/skills/avalonia/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avalonia", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/managedcode/dotnet-skills.git --path catalog/Frameworks/Avalonia/skills/avalonia--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add managedcode/dotnet-skills --skill avalonia -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install managedcode/dotnet-skills avalonia --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/catalog/Frameworks/Avalonia/skills/avalonia .gemini/skills/avalonia && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "avalonia" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Avalonia/skills/avalonia into .gemini/skills/avalonia/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avalonia", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install managedcode/dotnet-skills avaloniaInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add managedcode/dotnet-skills --skill avalonia -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/catalog/Frameworks/Avalonia/skills/avalonia .github/skills/avalonia && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "avalonia" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Avalonia/skills/avalonia into .github/skills/avalonia/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avalonia", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add managedcode/dotnet-skills --skill avalonia -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install managedcode/dotnet-skills avalonia --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/catalog/Frameworks/Avalonia/skills/avalonia .opencode/skills/avalonia && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "avalonia" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Avalonia/skills/avalonia into .opencode/skills/avalonia/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avalonia", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
avaloniaBuild and debug Avalonia 11/12 .NET applications with XAML, compiled bindings, MVVM, custom controls, desktop lifetimes, and platform publishing.
Avalonia is an agent skill from managedcode/dotnet-skills. Build and debug Avalonia 11/12 .NET applications with XAML, compiled bindings, MVVM, custom controls, desktop lifetimes, and platform publishing. USE FOR: Avalonia projects, bindings, commands, themes, UI dispatch, trimming, or Native AOT. DO NOT USE FOR: WPF, WinUI, MAUI, Uno, or Avalonia XPF compatibility work. INVOKES: inspect installed versions, implement, and validate on the actual target platforms.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `manifest.json`, `references/bindings-and-controls.md` and `references/official-docs-index.md`). Compatibility notes: Requires a .NET SDK and Avalonia packages; desktop runtime validation requires the target OS and display environment.
It sits in Mobile, covering Cross-platform mobile apps. It works with Avalonia, .NET and Windows. The repository describes itself as: Installable .NET skill catalog and CLI for Codex, Claude Code, GitHub Copilot, and Gemini. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2a5b41a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comschemas.microsoft.comAlso links to:
docs.avaloniaui.netv11.docs.avaloniaui.netFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires a .NET SDK and Avalonia packages; desktop runtime validation requires the target OS and display environment.
From compatibility in the SKILL.md frontmatter.
Avalonia loads about 1.9k tokens when it runs, and up to ~5.5k if it reads all its reference files. Until then it costs about 104 tokens; SKILL.md has 565 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from managedcode/dotnet-skills at commit 2a5b41a, republished under its MIT licence (© managedcode). 565 words, ~1,858 tokens.
.claude/skills/avalonia/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub..axaml files, entrypoint, and supported OS/RIDs. Keep Avalonia packages on one compatible version. Use the Avalonia 12 docs for 12 and the Avalonia 11 docs for 11; do not copy 12-only APIs into 11.Program.BuildAvaloniaApp, App.axaml, views, view models, and domain/services separate. Desktop hosts use StartWithClassicDesktopLifetime and create MainWindow in OnFrameworkInitializationCompleted; single-view targets require their own lifetime. The previewer can have no application lifetime.x:DataType describes the binding type; it does not set the runtime DataContext. Avalonia 12 enables compiled bindings by default; explicitly enable them on 11. Read references/bindings-and-controls.md for templates, properties, resources, and command patterns.CommunityToolkit.Mvvm for observable state and commands when appropriate. Prefer cancellable asynchronous service operations, surface errors, and marshal background updates to the UI dispatcher. Keep services independent of controls.StyledProperty for styleable/animatable values and DirectProperty for backed state without style precedence. Use DataTemplate to display data and ControlTemplate/ControlTheme to change a control's visual structure. Use UserControl for application composition, TemplatedControl for reusable skinnable controls, and custom rendering only when needed.flowchart LR
Packages[Installed Avalonia major] --> Docs[Matching 11 or 12 documentation]
Docs --> VM[View model and service]
VM --> Bindings[Typed bindings and commands]
Bindings --> UI[Views, templates, property system]
UI --> Desktop[Desktop lifetime and UI dispatcher]
Desktop --> Verify[Headless tests + native OS checks]
Verify --> Publish[RID-specific publish and packaging]For a new application, use the official templates rather than inventing project scaffolding:
dotnet new install Avalonia.Templates
dotnet new avalonia.mvvm -o MyApp
dotnet add MyApp/MyApp.csproj package CommunityToolkit.Mvvm
dotnet run --project MyApp/MyApp.csprojFor an existing project, select versions matching its target framework and installed Avalonia major:
dotnet add MyApp.csproj package Avalonia.Desktop --version <compatible-version>
dotnet add MyApp.csproj package Avalonia.Themes.Fluent --version <compatible-version>The view model implements notifications through the toolkit. Wire the runtime context when constructing the view:
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
public partial class MainViewModel : ObservableObject
{
[ObservableProperty]
private string name = "Ada";
[ObservableProperty]
private string greeting = "Ready";
[RelayCommand]
private void Greet() => Greeting = $"Hello, {Name}";
}
// In App.OnFrameworkInitializationCompleted, after checking desktop lifetime:
// desktop.MainWindow = new MainWindow { DataContext = new MainViewModel() };In the view, replace MyApp.ViewModels with the actual namespace:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:MyApp.ViewModels"
x:Class="MyApp.MainWindow"
x:DataType="vm:MainViewModel" x:CompileBindings="True">
<StackPanel Spacing="8" Margin="16">
<TextBox Text="{Binding Name, Mode=TwoWay}" />
<Button Content="Greet" Command="{Binding GreetCommand}" />
<TextBlock Text="{Binding Greeting}" />
</StackPanel>
</Window>using Avalonia;
using Avalonia.Controls.Primitives;
public class StatusBadge : TemplatedControl
{
public static readonly StyledProperty<string> TextProperty =
AvaloniaProperty.Register<StatusBadge, string>(nameof(Text), "Ready");
public string Text
{
get => GetValue(TextProperty);
set => SetValue(TextProperty, value);
}
}Define the visual tree in a control theme; keep CLR accessors limited to GetValue/SetValue, because styles and bindings can bypass them. Use property-change hooks for behavior and SetCurrentValue when changing a value without replacing its existing binding.
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault> explicitly for consistent 11/12 behavior. Use ReflectionBinding only for a justified dynamic path; review trimming risk.Dispatcher.UIThread.InvokeAsync when completion matters, Post for a queued notification, and CheckAccess when deciding whether to marshal. Update bound collections on the UI thread; avoid .Result/.Wait() there.ShutdownMode and owner for ShowDialog<T>(owner). Inject a dialog service into view models instead of constructing windows there.avares:// resources differ from WPF. Do not transplant WPF styles or assume platform behavior is identical.dotnet build <solution> -c Release and the repository's focused tests; verify that typed binding paths compile and commands update observable state.Avalonia.Headless.XUnit or Avalonia.Headless.NUnit for dispatcher-aware control tests. Keep unrelated tests parallel; constrain only a concrete destructive collision domain.© managedcode, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in catalog/Frameworks/Avalonia/skills/avalonia of managedcode/dotnet-skills.
Open the folder on GitHubat commit 2a5b41a
Avalonia next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Avalonia this skillmanagedcode/dotnet-skills | 485 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Mvvm Toolkit Digithub/awesome-copilot | 40k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Mvvm Toolkitgithub/awesome-copilot | 40k | 1 repos | ~2.7k | Automated safety check: Pass | MIT | |
| QA TesterJocysCom/FocusLogger | 213 | — | ~12k | Automated safety check: Pass | GPL-3.0 | |
| .NET MAUI Dependency Flow Guidedotnet/maui | 23k | — | ~10k | Automated safety check: Pass | MIT | |
| Run Maui Apptig/winprint | 101 | — | ~1.2k | Automated safety check: Pass | MIT |
github/awesome-copilot
Wire CommunityToolkit.Mvvm ViewModels into Microsoft.Extensions.DependencyInjection.
github/awesome-copilot
CommunityToolkit.Mvvm (the MVVM Toolkit) core: source generators ([ObservableProperty], [RelayCommand], [NotifyPropertyChangedFor], [NotifyCanExecuteChangedFor], [NotifyDataErrorInfo]), base classes…
JocysCom/FocusLogger
Create and maintain automated tests in Microsoft-native/.NET projects with a minimal stack — MSTest runner, System.Windows.Automation for Windows desktop, Playwright for real browser smoke.
dotnet/maui
Adds MAUI-specific guardrails on top of the maestro-cli skill and Maestro MCP tools for darc, BAR, and channel or feed lookups in dotnet/maui.
tig/winprint
Build, launch, screenshot, and drive the WinPrint.Maui Windows app (winprint.exe) — including UIA automation of the File button and native Open dialog, and pixel capture that works for WinUI3 content.
Redth/Maui.Gtk
End-to-end workflow for building, deploying, inspecting, and debugging .NET MAUI and MAUI Blazor Hybrid apps as an AI agent.
managedcode/dotnet-skills
Use a repo-root .editorconfig to configure free .NET analyzer and style rules.
managedcode/dotnet-skills
Use the open-source free ArchUnitNET library for architecture rules in .NET tests.
managedcode/dotnet-skills
Build, upgrade, and operate Aspire 13.5.x C or TypeScript application hosts with the current CLI, AppHost, ServiceDefaults, integrations, dashboard, testing, MCP, and deployment patterns for…
managedcode/dotnet-skills
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on current .NET.
managedcode/dotnet-skills
Use the open-source free Asynkron.Profiler dotnet tool for CLI-first CPU, allocation, exception, contention, and heap profiling of .NET commands or existing trace artifacts.
managedcode/dotnet-skills
Build and review Blazor applications across server, WebAssembly, web app, and hybrid scenarios with correct component design, state flow, rendering, and hosting choices.
Categories
Build and debug Avalonia 11/12 .NET applications with XAML, compiled bindings, MVVM, custom controls, desktop lifetimes, and platform publishing. Avalonia is an agent skill from managedcode/dotnet-skills.NET applications with XAML, compiled bindings, MVVM, custom controls, desktop lifetimes, and platform publishing.
Avalonia fits situations like: : Avalonia projects; avalonia XPF compatibility work.
Run `npx skills add managedcode/dotnet-skills --skill avalonia -a claude-code`. Or copy the skill folder (catalog/Frameworks/Avalonia/skills/avalonia in managedcode/dotnet-skills) into .claude/skills/avalonia in your project. Claude Code loads it when a task matches its description.
Run `npx skills add managedcode/dotnet-skills --skill avalonia -a codex`. Or copy the skill folder (catalog/Frameworks/Avalonia/skills/avalonia in managedcode/dotnet-skills) into .agents/skills/avalonia in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add managedcode/dotnet-skills --skill avalonia -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/avalonia, .gemini/skills/avalonia, .github/skills/avalonia and .opencode/skills/avalonia in your project.
Going by SKILL.md and its folder, Avalonia needs the command-line tools its instructions call (dotnet). Compatibility (from SKILL.md): Requires a .NET SDK and Avalonia packages; desktop runtime validation requires the target OS and display environment..
SKILL.md names 4 domains. In commands or code: github.com and schemas.microsoft.com; the agent is likely to contact these when it follows the instructions. As links in the text: docs.avaloniaui.net and v11.docs.avaloniaui.net. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Avalonia is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Avalonia: Mvvm Toolkit Di (github/awesome-copilot, 40k stars), Mvvm Toolkit (github/awesome-copilot, 40k stars), QA Tester (JocysCom/FocusLogger, 213 stars) and .NET MAUI Dependency Flow Guide (dotnet/maui, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
managedcode (a GitHub organization) maintains it in managedcode/dotnet-skills, which has 485 GitHub stars. The repository holds 81 skills in this directory. The repository was last updated on October 11, 2026.
Source: managedcode/dotnet-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.