CtrlK
BlogDocsLog inGet started
Tessl Logo

wpf-to-winui3-migration

Guide for migrating PowerToys modules from WPF to WinUI 3 (Windows App SDK). Use when asked to migrate WPF code, convert WPF XAML to WinUI, replace System.Windows namespaces with Microsoft.UI.Xaml, update Dispatcher to DispatcherQueue, replace DynamicResource with ThemeResource, migrate imaging APIs from System.Windows.Media.Imaging to Windows.Graphics.Imaging, convert WPF Window to WinUI Window, migrate .resx to .resw resources, migrate custom Observable/RelayCommand to CommunityToolkit.Mvvm source generators, handle WPF-UI (Lepo) to WinUI native control migration, or fix installer/build pipeline issues after migration. Keywords: WPF, WinUI, WinUI3, migration, porting, convert, namespace, XAML, Dispatcher, DispatcherQueue, imaging, BitmapImage, Window, ContentDialog, ThemeResource, DynamicResource, ResourceLoader, resw, resx, CommunityToolkit, ObservableProperty, WPF-UI, SizeToContent, AppWindow, SoftwareBitmap.

72

Quality

89%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

78%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A high-quality, dense migration skill body: comprehensive quick-reference tables, a strong prohibited-patterns contract, and excellent progressive disclosure pointing to real, well-organized reference files. The main weakness is minor triplicate repetition of a few critical rules across the prohibitions, pitfalls, and troubleshooting sections.

Suggestions

Consolidate the WindowsPackageType/WindowsAppSDKSelfContained rule: state it once in the prohibitions and reference it from Common Pitfalls and Troubleshooting rather than re-explaining it three times.

Add an explicit validate→fix→retry loop to the phase sequence (e.g. 'compile; if errors, fix and recompile before proceeding') so the compile checkpoint reads as a feedback loop, not just a gate.

De-duplicate the WindowEx guidance between the code-behind prohibitions and the NuGet table, linking one to the other to save tokens.

DimensionReasoningScore

Conciseness

The body is dense and table-driven with no padding of concepts Claude already knows, but a few critical items are repeated three times (e.g. the WindowsPackageType/WindowsAppSDKSelfContained csproj rule and the WindowEx guidance appear in prohibitions, Common Pitfalls, and Troubleshooting), which could be consolidated.

4 / 5

Actionability

Provides copy-paste-ready substitutions in mapping tables and concrete snippets (e.g. '{x:Bind local:Converters.Format(VM.A, VM.B), Mode=OneWay}', 'BitmapPropertySet { "ImageQuality", 0.85f }'), with full executable code appropriately delegated to the reference files rather than inlined.

4 / 5

Workflow Clarity

An 11-phase dependency-ordered sequence with an explicit compile-gate checkpoint ('Each phase should compile before moving to the next') plus a prohibited-patterns contract and a troubleshooting/pitfalls recovery table; the explicit validate→fix→retry loop is not spelled out as a step, keeping it just below a 5.

4 / 5

Progressive Disclosure

A clear overview with five well-signaled one-level-deep references, each with a one-line scope description and deep anchors (e.g. '#prefer-windowex-over-bare-window', '#value-converter-decision-guide') that all resolve to real sections in verified bundle files.

5 / 5

Total

17

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is exemplary: third-person voice, a clear what/when pair, comprehensive concrete actions, and a rich keyword list including synonyms and API-specific terms. It would naturally surface for the exact migration requests it targets.

DimensionReasoningScore

Specificity

Names many concrete actions — 'convert WPF XAML to WinUI', 'replace System.Windows namespaces with Microsoft.UI.Xaml', 'update Dispatcher to DispatcherQueue', 'migrate imaging APIs', 'migrate .resx to .resw' — giving comprehensive coverage of the migration's moving parts.

5 / 5

Completeness

Explicitly answers both 'what' ('Guide for migrating PowerToys modules from WPF to WinUI 3') and 'when' ('Use when asked to migrate WPF code…') with concrete trigger phrases.

5 / 5

Trigger Term Quality

An explicit 'Use when asked to migrate WPF code…' clause is followed by a dedicated 'Keywords:' list covering synonyms (WPF, WinUI, WinUI3, porting, convert) and specific API names (DispatcherQueue, ThemeResource, BitmapImage, SoftwareBitmap).

5 / 5

Distinctiveness Conflict Risk

A narrow, specific niche (WPF→WinUI 3 PowerToys migration) with highly distinctive triggers (DispatcherQueue, ThemeResource, .resw, WPF-UI) minimizes overlap with other skills.

5 / 5

Total

20

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
microsoft/PowerToys
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.