CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

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.

Quality

94%

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

86%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 migration skill body: an ordered phase strategy, a hard migration contract of prohibited patterns, exhaustive copy-paste-ready mapping tables, and a well-signaled one-level-deep reference bundle verified to exist. The only deductions are trimmable cross-section duplication of critical rules and validation stated globally rather than per-phase.

Suggestions

State the WindowsPackageType/WindowsAppSDKSelfContained and WindowEx rules once canonically (e.g., in the Migration Contract and one NuGet table row) and cross-link from the Pitfalls/Troubleshooting entries instead of repeating the full rationale three times — this trims the conciseness duplication without losing emphasis.

Interleave an explicit validation step into the 11-phase sequence (e.g., after each numbered phase: 'build the module and run its tests; fix before proceeding') rather than relying on the single global 'Each phase should compile before moving to the next' note.

De-duplicate rows that appear in three tables (DynamicResource→ThemeResource, clr-namespace→using, x:Static removal) by consolidating XAML syntax changes into the XAML prohibitions or moving them to xaml-migration.md with a cross-reference.

DimensionReasoningScore

Conciseness

The body is almost entirely dense, actionable mapping tables with no concept-teaching padding, but several critical rules are repeated across sections — the WindowsPackageType/WindowsAppSDKSelfContained requirement appears three times (prohibition bullet, pitfall row, troubleshooting row), the WindowEx paragraph is restated nearly in full in the NuGet table row, and DynamicResource→ThemeResource / clr-namespace→using each appear in three tables. Mostly lean with minor trimmable duplication — anchor 4, not 3 (nothing explains concepts Claude already knows) and not 5 (repetition costs tokens without adding information).

4 / 5

Actionability

Guidance is copy-paste ready throughout: exact csproj properties ('<WindowsPackageType>None</WindowsPackageType>'), exact binding syntax ('{x:Bind local:Converters.Format(VM.A, VM.B), Mode=OneWay}'), exact error-message-to-fix mappings ('COMException: ClassFactory cannot supply requested class' → missing csproj properties), and exact NuGet package IDs — fully executable coverage of the common cases.

5 / 5

Workflow Clarity

A clear, dependency-ordered 11-phase sequence ('Main page / shell — Last, since it depends on everything', 'leaf pages with fewest dependencies') with one explicit global checkpoint ('Each phase should compile before moving to the next') and error-recovery tables, but validation is a single global statement rather than interleaved per-phase verify/re-validate steps — anchor 4, not 5, whose example weaves explicit validate-and-retry loops into the sequence itself.

4 / 5

Progressive Disclosure

'Detailed Reference Docs — Read only the section relevant to your current task' lists all 5 existing reference files, each with a one-line scope description; deep links to specific sections (e.g., xaml-migration.md#value-converter-decision-guide, threading-and-windowing.md#prefer-windowex-over-bare-window) resolve to real headers, references are exactly one level deep, and the body keeps only high-frequency quick-reference tables while executable detail lives in the reference files.

5 / 5

Total

18

/

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.

An exemplary description: it states a precise what, an explicit multi-clause use-when, comprehensive natural keywords with synonyms and file extensions, and a sharply defined niche. No fluff or over-claims.

DimensionReasoningScore

Specificity

The description lists 11+ concrete migration actions ('convert WPF XAML to WinUI', 'update Dispatcher to DispatcherQueue', 'migrate .resx to .resw resources', 'fix installer/build pipeline issues after migration') covering every migration surface — XAML, namespaces, threading, imaging, windowing, resources, MVVM, and installer — matching the comprehensive-coverage anchor; third-person voice, so no voice penalty applies.

5 / 5

Completeness

It explicitly answers 'what' ('Guide for migrating PowerToys modules from WPF to WinUI 3 (Windows App SDK)') and 'when' ('Use when asked to migrate WPF code, ... or fix installer/build pipeline issues after migration') with multiple concrete trigger phrases.

5 / 5

Trigger Term Quality

The explicit keyword list ('WPF, WinUI, WinUI3, migration, porting, convert, ... resw, resx, ... SizeToContent, AppWindow, SoftwareBitmap') includes synonyms (migration/porting/convert), file extensions (resx/resw), and API names users would naturally say, matching the comprehensive natural-term coverage anchor.

5 / 5

Distinctiveness Conflict Risk

It occupies a clear niche (PowerToys WPF→WinUI 3 migration) with distinct, unambiguous triggers; virtually no overlap risk 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.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

microsoft/PowerToys

Path

.github/skills/wpf-to-winui3-migration/SKILL.md

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.