[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AEBRJDCKVVJB0R7D2PPXSK":3,"skill-same:01M6AEBRJDCKVVJB0R7D2PPXSK":90},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6AEBRJDCKVVJB0R7D2PPXSK","winui3-migration-guide",null,"UWP-to-WinUI 3 migration reference. Maps legacy UWP APIs to correct Windows App SDK equivalents with before\u002Fafter code snippets. Covers namespace changes, threading (CoreDispatcher to DispatcherQueue), windowing (CoreWindow to AppWindow), dialogs, pickers, sharing, printing, background tasks, and the most common Copilot code generation mistakes.","github\u002Fawesome-copilot","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6AD3PBDYPK7NVFJNJ66Y8RS",41133,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinui3-migration-guide\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"Migration Guide","winui3","migration","winui3 migration guide","guide","correct","mistakes","changes","with","app","background tasks","maps","Legacy","common","sdk","sharing","Code Generation","winui","windows app sdk","uwp","code","tasks","copilot","windows","2026-11-10 10:12:30",false,"---\nname: winui3-migration-guide\ndescription: 'UWP-to-WinUI 3 migration reference. Maps legacy UWP APIs to correct Windows App SDK equivalents with before\u002Fafter code snippets. Covers namespace changes, threading (CoreDispatcher to DispatcherQueue), windowing (CoreWindow to AppWindow), dialogs, pickers, sharing, printing, background tasks, and the most common Copilot code generation mistakes.'\n---\n\n# WinUI 3 Migration Guide\n\nUse this skill when migrating UWP apps to WinUI 3 \u002F Windows App SDK, or when verifying that generated code uses correct WinUI 3 APIs instead of legacy UWP patterns.\n\n---\n\n## Namespace Changes\n\nAll `Windows.UI.Xaml.*` namespaces move to `Microsoft.UI.Xaml.*`:\n\n| UWP Namespace | WinUI 3 Namespace |\n|--------------|-------------------|\n| `Windows.UI.Xaml` | `Microsoft.UI.Xaml` |\n| `Windows.UI.Xaml.Controls` | `Microsoft.UI.Xaml.Controls` |\n| `Windows.UI.Xaml.Media` | `Microsoft.UI.Xaml.Media` |\n| `Windows.UI.Xaml.Input` | `Microsoft.UI.Xaml.Input` |\n| `Windows.UI.Xaml.Data` | `Microsoft.UI.Xaml.Data` |\n| `Windows.UI.Xaml.Navigation` | `Microsoft.UI.Xaml.Navigation` |\n| `Windows.UI.Xaml.Shapes` | `Microsoft.UI.Xaml.Shapes` |\n| `Windows.UI.Composition` | `Microsoft.UI.Composition` |\n| `Windows.UI.Input` | `Microsoft.UI.Input` |\n| `Windows.UI.Colors` | `Microsoft.UI.Colors` |\n| `Windows.UI.Text` | `Microsoft.UI.Text` |\n| `Windows.UI.Core` | `Microsoft.UI.Dispatching` (for dispatcher) |\n\n---\n\n## Top 3 Most Common Copilot Mistakes\n\n### 1. ContentDialog Without XamlRoot\n\n```csharp\n\u002F\u002F ❌ WRONG — Throws InvalidOperationException in WinUI 3\nvar dialog = new ContentDialog\n{\n    Title = \"Error\",\n    Content = \"Something went wrong.\",\n    CloseButtonText = \"OK\"\n};\nawait dialog.ShowAsync();\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Set XamlRoot before showing\nvar dialog = new ContentDialog\n{\n    Title = \"Error\",\n    Content = \"Something went wrong.\",\n    CloseButtonText = \"OK\",\n    XamlRoot = this.Content.XamlRoot  \u002F\u002F Required in WinUI 3\n};\nawait dialog.ShowAsync();\n```\n\n### 2. MessageDialog Instead of ContentDialog\n\n```csharp\n\u002F\u002F ❌ WRONG — UWP API, not available in WinUI 3 desktop\nvar dialog = new Windows.UI.Popups.MessageDialog(\"Are you sure?\", \"Confirm\");\nawait dialog.ShowAsync();\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Use ContentDialog\nvar dialog = new ContentDialog\n{\n    Title = \"Confirm\",\n    Content = \"Are you sure?\",\n    PrimaryButtonText = \"Yes\",\n    CloseButtonText = \"No\",\n    XamlRoot = this.Content.XamlRoot\n};\nvar result = await dialog.ShowAsync();\nif (result == ContentDialogResult.Primary)\n{\n    \u002F\u002F User confirmed\n}\n```\n\n### 3. CoreDispatcher Instead of DispatcherQueue\n\n```csharp\n\u002F\u002F ❌ WRONG — CoreDispatcher does not exist in WinUI 3\nawait Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n{\n    StatusText.Text = \"Done\";\n});\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Use DispatcherQueue\nDispatcherQueue.TryEnqueue(() =>\n{\n    StatusText.Text = \"Done\";\n});\n\n\u002F\u002F With priority:\nDispatcherQueue.TryEnqueue(DispatcherQueuePriority.High, () =>\n{\n    ProgressBar.Value = 100;\n});\n```\n\n---\n\n## Windowing Migration\n\n### Window Reference\n\n```csharp\n\u002F\u002F ❌ WRONG — Window.Current does not exist in WinUI 3\nvar currentWindow = Window.Current;\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Use a static property in App\npublic partial class App : Application\n{\n    public static Window MainWindow { get; private set; }\n\n    protected override void OnLaunched(LaunchActivatedEventArgs args)\n    {\n        MainWindow = new MainWindow();\n        MainWindow.Activate();\n    }\n}\n\u002F\u002F Access anywhere: App.MainWindow\n```\n\n### Window Management\n\n| UWP API | WinUI 3 API |\n|---------|-------------|\n| `ApplicationView.TryResizeView()` | `AppWindow.Resize()` |\n| `AppWindow.TryCreateAsync()` | `AppWindow.Create()` |\n| `AppWindow.TryShowAsync()` | `AppWindow.Show()` |\n| `AppWindow.TryConsolidateAsync()` | `AppWindow.Destroy()` |\n| `AppWindow.RequestMoveXxx()` | `AppWindow.Move()` |\n| `AppWindow.GetPlacement()` | `AppWindow.Position` property |\n| `AppWindow.RequestPresentation()` | `AppWindow.SetPresenter()` |\n\n### Title Bar\n\n| UWP API | WinUI 3 API |\n|---------|-------------|\n| `CoreApplicationViewTitleBar` | `AppWindowTitleBar` |\n| `CoreApplicationView.TitleBar.ExtendViewIntoTitleBar` | `AppWindow.TitleBar.ExtendsContentIntoTitleBar` |\n\n---\n\n## Dialogs and Pickers Migration\n\n### File\u002FFolder Pickers\n\n```csharp\n\u002F\u002F ❌ WRONG — UWP style, no window handle\nvar picker = new FileOpenPicker();\npicker.FileTypeFilter.Add(\".txt\");\nvar file = await picker.PickSingleFileAsync();\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Initialize with window handle\nvar picker = new FileOpenPicker();\nvar hwnd = WinRT.Interop.WindowNative.GetWindowHandle(App.MainWindow);\nWinRT.Interop.InitializeWithWindow.Initialize(picker, hwnd);\npicker.FileTypeFilter.Add(\".txt\");\nvar file = await picker.PickSingleFileAsync();\n```\n\n## Threading Migration\n\n| UWP Pattern | WinUI 3 Equivalent |\n|-------------|-------------------|\n| `CoreDispatcher.RunAsync(priority, callback)` | `DispatcherQueue.TryEnqueue(priority, callback)` |\n| `Dispatcher.HasThreadAccess` | `DispatcherQueue.HasThreadAccess` |\n| `CoreDispatcher.ProcessEvents()` | No equivalent — restructure async code |\n| `CoreWindow.GetForCurrentThread()` | Not available — use `DispatcherQueue.GetForCurrentThread()` |\n\n**Key difference**: UWP uses ASTA (Application STA) with built-in reentrancy blocking. WinUI 3 uses standard STA without this protection. Watch for reentrancy issues when async code pumps messages.\n\n---\n\n## Background Tasks Migration\n\n```csharp\n\u002F\u002F ❌ WRONG — UWP IBackgroundTask\npublic sealed class MyTask : IBackgroundTask\n{\n    public void Run(IBackgroundTaskInstance taskInstance) { }\n}\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Windows App SDK AppLifecycle\nusing Microsoft.Windows.AppLifecycle;\n\n\u002F\u002F Register for activation\nvar args = AppInstance.GetCurrent().GetActivatedEventArgs();\nif (args.Kind == ExtendedActivationKind.AppNotification)\n{\n    \u002F\u002F Handle background activation\n}\n```\n\n---\n\n## App Settings Migration\n\n| Scenario | Packaged App | Unpackaged App |\n|----------|-------------|----------------|\n| Simple settings | `ApplicationData.Current.LocalSettings` | JSON file in `LocalApplicationData` |\n| Local file storage | `ApplicationData.Current.LocalFolder` | `Environment.GetFolderPath(SpecialFolder.LocalApplicationData)` |\n\n---\n\n## GetForCurrentView() Replacements\n\nAll `GetForCurrentView()` patterns are unavailable in WinUI 3 desktop apps:\n\n| UWP API | WinUI 3 Replacement |\n|---------|-------------------|\n| `UIViewSettings.GetForCurrentView()` | Use `AppWindow` properties |\n| `ApplicationView.GetForCurrentView()` | `AppWindow.GetFromWindowId(windowId)` |\n| `DisplayInformation.GetForCurrentView()` | Win32 `GetDpiForWindow()` or `XamlRoot.RasterizationScale` |\n| `CoreApplication.GetCurrentView()` | Not available — track windows manually |\n| `SystemNavigationManager.GetForCurrentView()` | Handle back navigation in `NavigationView` directly |\n\n---\n\n## Testing Migration\n\nUWP unit test projects do not work with WinUI 3. You must migrate to the WinUI 3 test project templates.\n\n| UWP | WinUI 3 |\n|-----|---------|\n| Unit Test App (Universal Windows) | **Unit Test App (WinUI in Desktop)** |\n| Standard MSTest project with UWP types | Must use WinUI test app for Xaml runtime |\n| `[TestMethod]` for all tests | `[TestMethod]` for logic, `[UITestMethod]` for XAML\u002FUI tests |\n| Class Library (Universal Windows) | **Class Library (WinUI in Desktop)** |\n\n```csharp\n\u002F\u002F ✅ WinUI 3 unit test — use [UITestMethod] for any XAML interaction\n[UITestMethod]\npublic void TestMyControl()\n{\n    var control = new MyLibrary.MyUserControl();\n    Assert.AreEqual(expected, control.MyProperty);\n}\n```\n\n**Key:** The `[UITestMethod]` attribute tells the test runner to execute the test on the XAML UI thread, which is required for instantiating any `Microsoft.UI.Xaml` type.\n\n---\n\n## Migration Checklist\n\n1. [ ] Replace all `Windows.UI.Xaml.*` using directives with `Microsoft.UI.Xaml.*`\n2. [ ] Replace `Windows.UI.Colors` with `Microsoft.UI.Colors`\n3. [ ] Replace `CoreDispatcher.RunAsync` with `DispatcherQueue.TryEnqueue`\n4. [ ] Replace `Window.Current` with `App.MainWindow` static property\n5. [ ] Add `XamlRoot` to all `ContentDialog` instances\n6. [ ] Initialize all pickers with `InitializeWithWindow.Initialize(picker, hwnd)`\n7. [ ] Replace `MessageDialog` with `ContentDialog`\n8. [ ] Replace `ApplicationView`\u002F`CoreWindow` with `AppWindow`\n9. [ ] Replace `CoreApplicationViewTitleBar` with `AppWindowTitleBar`\n10. [ ] Replace all `GetForCurrentView()` calls with `AppWindow` equivalents\n11. [ ] Update interop for Share and Print managers\n12. [ ] Replace `IBackgroundTask` with `AppLifecycle` activation\n13. [ ] Update project file: TFM to `net10.0-windows10.0.22621.0`, add `\u003CUseWinUI>true\u003C\u002FUseWinUI>`\n14. [ ] Migrate unit tests to **Unit Test App (WinUI in Desktop)** project; use `[UITestMethod]` for XAML tests\n15. [ ] Test both packaged and unpackaged configurations\n","# WinUI 3 Migration Guide\n\nUse this skill when migrating UWP apps to WinUI 3 \u002F Windows App SDK, or when verifying that generated code uses correct WinUI 3 APIs instead of legacy UWP patterns.\n\n---\n\n## Namespace Changes\n\nAll `Windows.UI.Xaml.*` namespaces move to `Microsoft.UI.Xaml.*`:\n\n| UWP Namespace | WinUI 3 Namespace |\n|--------------|-------------------|\n| `Windows.UI.Xaml` | `Microsoft.UI.Xaml` |\n| `Windows.UI.Xaml.Controls` | `Microsoft.UI.Xaml.Controls` |\n| `Windows.UI.Xaml.Media` | `Microsoft.UI.Xaml.Media` |\n| `Windows.UI.Xaml.Input` | `Microsoft.UI.Xaml.Input` |\n| `Windows.UI.Xaml.Data` | `Microsoft.UI.Xaml.Data` |\n| `Windows.UI.Xaml.Navigation` | `Microsoft.UI.Xaml.Navigation` |\n| `Windows.UI.Xaml.Shapes` | `Microsoft.UI.Xaml.Shapes` |\n| `Windows.UI.Composition` | `Microsoft.UI.Composition` |\n| `Windows.UI.Input` | `Microsoft.UI.Input` |\n| `Windows.UI.Colors` | `Microsoft.UI.Colors` |\n| `Windows.UI.Text` | `Microsoft.UI.Text` |\n| `Windows.UI.Core` | `Microsoft.UI.Dispatching` (for dispatcher) |\n\n---\n\n## Top 3 Most Common Copilot Mistakes\n\n### 1. ContentDialog Without XamlRoot\n\n```csharp\n\u002F\u002F ❌ WRONG — Throws InvalidOperationException in WinUI 3\nvar dialog = new ContentDialog\n{\n    Title = \"Error\",\n    Content = \"Something went wrong.\",\n    CloseButtonText = \"OK\"\n};\nawait dialog.ShowAsync();\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Set XamlRoot before showing\nvar dialog = new ContentDialog\n{\n    Title = \"Error\",\n    Content = \"Something went wrong.\",\n    CloseButtonText = \"OK\",\n    XamlRoot = this.Content.XamlRoot  \u002F\u002F Required in WinUI 3\n};\nawait dialog.ShowAsync();\n```\n\n### 2. MessageDialog Instead of ContentDialog\n\n```csharp\n\u002F\u002F ❌ WRONG — UWP API, not available in WinUI 3 desktop\nvar dialog = new Windows.UI.Popups.MessageDialog(\"Are you sure?\", \"Confirm\");\nawait dialog.ShowAsync();\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Use ContentDialog\nvar dialog = new ContentDialog\n{\n    Title = \"Confirm\",\n    Content = \"Are you sure?\",\n    PrimaryButtonText = \"Yes\",\n    CloseButtonText = \"No\",\n    XamlRoot = this.Content.XamlRoot\n};\nvar result = await dialog.ShowAsync();\nif (result == ContentDialogResult.Primary)\n{\n    \u002F\u002F User confirmed\n}\n```\n\n### 3. CoreDispatcher Instead of DispatcherQueue\n\n```csharp\n\u002F\u002F ❌ WRONG — CoreDispatcher does not exist in WinUI 3\nawait Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n{\n    StatusText.Text = \"Done\";\n});\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Use DispatcherQueue\nDispatcherQueue.TryEnqueue(() =>\n{\n    StatusText.Text = \"Done\";\n});\n\n\u002F\u002F With priority:\nDispatcherQueue.TryEnqueue(DispatcherQueuePriority.High, () =>\n{\n    ProgressBar.Value = 100;\n});\n```\n\n---\n\n## Windowing Migration\n\n### Window Reference\n\n```csharp\n\u002F\u002F ❌ WRONG — Window.Current does not exist in WinUI 3\nvar currentWindow = Window.Current;\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Use a static property in App\npublic partial class App : Application\n{\n    public static Window MainWindow { get; private set; }\n\n    protected override void OnLaunched(LaunchActivatedEventArgs args)\n    {\n        MainWindow = new MainWindow();\n        MainWindow.Activate();\n    }\n}\n\u002F\u002F Access anywhere: App.MainWindow\n```\n\n### Window Management\n\n| UWP API | WinUI 3 API |\n|---------|-------------|\n| `ApplicationView.TryResizeView()` | `AppWindow.Resize()` |\n| `AppWindow.TryCreateAsync()` | `AppWindow.Create()` |\n| `AppWindow.TryShowAsync()` | `AppWindow.Show()` |\n| `AppWindow.TryConsolidateAsync()` | `AppWindow.Destroy()` |\n| `AppWindow.RequestMoveXxx()` | `AppWindow.Move()` |\n| `AppWindow.GetPlacement()` | `AppWindow.Position` property |\n| `AppWindow.RequestPresentation()` | `AppWindow.SetPresenter()` |\n\n### Title Bar\n\n| UWP API | WinUI 3 API |\n|---------|-------------|\n| `CoreApplicationViewTitleBar` | `AppWindowTitleBar` |\n| `CoreApplicationView.TitleBar.ExtendViewIntoTitleBar` | `AppWindow.TitleBar.ExtendsContentIntoTitleBar` |\n\n---\n\n## Dialogs and Pickers Migration\n\n### File\u002FFolder Pickers\n\n```csharp\n\u002F\u002F ❌ WRONG — UWP style, no window handle\nvar picker = new FileOpenPicker();\npicker.FileTypeFilter.Add(\".txt\");\nvar file = await picker.PickSingleFileAsync();\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Initialize with window handle\nvar picker = new FileOpenPicker();\nvar hwnd = WinRT.Interop.WindowNative.GetWindowHandle(App.MainWindow);\nWinRT.Interop.InitializeWithWindow.Initialize(picker, hwnd);\npicker.FileTypeFilter.Add(\".txt\");\nvar file = await picker.PickSingleFileAsync();\n```\n\n## Threading Migration\n\n| UWP Pattern | WinUI 3 Equivalent |\n|-------------|-------------------|\n| `CoreDispatcher.RunAsync(priority, callback)` | `DispatcherQueue.TryEnqueue(priority, callback)` |\n| `Dispatcher.HasThreadAccess` | `DispatcherQueue.HasThreadAccess` |\n| `CoreDispatcher.ProcessEvents()` | No equivalent — restructure async code |\n| `CoreWindow.GetForCurrentThread()` | Not available — use `DispatcherQueue.GetForCurrentThread()` |\n\n**Key difference**: UWP uses ASTA (Application STA) with built-in reentrancy blocking. WinUI 3 uses standard STA without this protection. Watch for reentrancy issues when async code pumps messages.\n\n---\n\n## Background Tasks Migration\n\n```csharp\n\u002F\u002F ❌ WRONG — UWP IBackgroundTask\npublic sealed class MyTask : IBackgroundTask\n{\n    public void Run(IBackgroundTaskInstance taskInstance) { }\n}\n```\n\n```csharp\n\u002F\u002F ✅ CORRECT — Windows App SDK AppLifecycle\nusing Microsoft.Windows.AppLifecycle;\n\n\u002F\u002F Register for activation\nvar args = AppInstance.GetCurrent().GetActivatedEventArgs();\nif (args.Kind == ExtendedActivationKind.AppNotification)\n{\n    \u002F\u002F Handle background activation\n}\n```\n\n---\n\n## App Settings Migration\n\n| Scenario | Packaged App | Unpackaged App |\n|----------|-------------|----------------|\n| Simple settings | `ApplicationData.Current.LocalSettings` | JSON file in `LocalApplicationData` |\n| Local file storage | `ApplicationData.Current.LocalFolder` | `Environment.GetFolderPath(SpecialFolder.LocalApplicationData)` |\n\n---\n\n## GetForCurrentView() Replacements\n\nAll `GetForCurrentView()` patterns are unavailable in WinUI 3 desktop apps:\n\n| UWP API | WinUI 3 Replacement |\n|---------|-------------------|\n| `UIViewSettings.GetForCurrentView()` | Use `AppWindow` properties |\n| `ApplicationView.GetForCurrentView()` | `AppWindow.GetFromWindowId(windowId)` |\n| `DisplayInformation.GetForCurrentView()` | Win32 `GetDpiForWindow()` or `XamlRoot.RasterizationScale` |\n| `CoreApplication.GetCurrentView()` | Not available — track windows manually |\n| `SystemNavigationManager.GetForCurrentView()` | Handle back navigation in `NavigationView` directly |\n\n---\n\n## Testing Migration\n\nUWP unit test projects do not work with WinUI 3. You must migrate to the WinUI 3 test project templates.\n\n| UWP | WinUI 3 |\n|-----|---------|\n| Unit Test App (Universal Windows) | **Unit Test App (WinUI in Desktop)** |\n| Standard MSTest project with UWP types | Must use WinUI test app for Xaml runtime |\n| `[TestMethod]` for all tests | `[TestMethod]` for logic, `[UITestMethod]` for XAML\u002FUI tests |\n| Class Library (Universal Windows) | **Class Library (WinUI in Desktop)** |\n\n```csharp\n\u002F\u002F ✅ WinUI 3 unit test — use [UITestMethod] for any XAML interaction\n[UITestMethod]\npublic void TestMyControl()\n{\n    var control = new MyLibrary.MyUserControl();\n    Assert.AreEqual(expected, control.MyProperty);\n}\n```\n\n**Key:** The `[UITestMethod]` attribute tells the test runner to execute the test on the XAML UI thread, which is required for instantiating any `Microsoft.UI.Xaml` type.\n\n---\n\n## Migration Checklist\n\n1. [ ] Replace all `Windows.UI.Xaml.*` using directives with `Microsoft.UI.Xaml.*`\n2. [ ] Replace `Windows.UI.Colors` with `Microsoft.UI.Colors`\n3. [ ] Replace `CoreDispatcher.RunAsync` with `DispatcherQueue.TryEnqueue`\n4. [ ] Replace `Window.Current` with `App.MainWindow` static property\n5. [ ] Add `XamlRoot` to all `ContentDialog` instances\n6. [ ] Initialize all pickers with `InitializeWithWindow.Initialize(picker, hwnd)`\n7. [ ] Replace `MessageDialog` with `ContentDialog`\n8. [ ] Replace `ApplicationView`\u002F`CoreWindow` with `AppWindow`\n9. [ ] Replace `CoreApplicationViewTitleBar` with `AppWindowTitleBar`\n10. [ ] Replace all `GetForCurrentView()` calls with `AppWindow` equivalents\n11. [ ] Update interop for Share and Print managers\n12. [ ] Replace `IBackgroundTask` with `AppLifecycle` activation\n13. [ ] Update project file: TFM to `net10.0-windows10.0.22621.0`, add `\u003CUseWinUI>true\u003C\u002FUseWinUI>`\n14. [ ] Migrate unit tests to **Unit Test App (WinUI in Desktop)** project; use `[UITestMethod]` for XAML tests\n15. [ ] Test both packaged and unpackaged configurations\n",{"name":5,"description":7},"main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Fwinui3-migration-guide",5354,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot","https:\u002F\u002Fawesome-copilot.github.com\u002F","https:\u002F\u002Fgithub.com\u002Fgithub","https:\u002F\u002Fgithub.com\u002Fabout","How people build software.","2026-11-14 05:37:52",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add github\u002Fawesome-copilot --skill winui3-migration-guide",{"tool":64,"command":65},"bunx","bunx skills add github\u002Fawesome-copilot --skill winui3-migration-guide",{"tool":67,"command":68},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill winui3-migration-guide","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinui3-migration-guide\u002FSKILL.md",true,[72,78,82,86],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"agents\u002Fopenai.yaml","REFERENCE","参考文档",281,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fopc-orchestrator\u002Fagents\u002Fopenai.yaml",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Ffile-contract.md",3265,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fopc-orchestrator\u002Freferences\u002Ffile-contract.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Finteraction-protocol.md",2609,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fopc-orchestrator\u002Freferences\u002Finteraction-protocol.md",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fstage-map.md",2384,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fopc-orchestrator\u002Freferences\u002Fstage-map.md",[91,125,153,180,213,230],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":105,"publishedAt":43},"01M70KXZNX9ES38N2A8M58ZZMZ","supabase-rls-policies","Write, review, and test Supabase Row Level Security (RLS) policies so that one user cannot read or change another user's rows. Use when creating or changing tables, policies, views, or security definer functions in a Supabase project, when reviewing a migration that touches RLS, or when asked to prove user isolation with pgTAP tests that sign in as two users.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fsupabase-rls-policies\u002FSKILL.md",[97,102],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":103,"categoryName":104,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000023","Skill与智能体开发",[106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,27],"supabase","rls","supabase rls","supabase rls policies","project","when","review","change","read","write","security","isolation","tables","as","tests","prove","use","users","functions",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":43},"01M70KWA5YWXDV6V8DZ19E3T2Y","skill-distribution-audit","Audit a skill collection before release or investigate installer omissions, archived\u002Ftemplate leakage, duplicate identities, and manifest drift. Reconcile the intended public source set, distribution manifest, and actual discovery output for a specified consumer version. Includes a deterministic set-comparison helper.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fskill-distribution-audit\u002FSKILL.md",[131],{"categoryNo":103,"categoryName":104,"taxonomyType":100,"taxonomyTypeDesc":101},[133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152],"distribution","skill distribution audit","audit","SET","deterministic","installer","for","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","template","release","reconcile",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":157,"sourceHtmlUrl":158,"categories":159,"keywords":165,"publishedAt":43},"01M70KCJPFVW7PPQ49CC5R8JGK","logicapps-custom-code-net10-migration","Migrate Azure Logic Apps Standard local-function custom-code projects from .NET 8 to .NET 10. Use for legacy Logic Apps custom-code workspace upgrades, project\u002Fpackage configuration, custom-worker settings, publication, and integrated VS Code debugging. Not for ordinary .NET applications, standalone Azure Functions, Consumption workflows, or cloud deployment.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FSKILL.md",[160],{"categoryNo":161,"categoryName":162,"taxonomyType":163,"taxonomyTypeDesc":164},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[166,39,167,21,168,169,139,110,170,171,172,173,174,175,176,122,177,31,178,179],"custom","logicapps custom code net10 migration","projects","standalone","deployment","applications","local","azure","worker","upgrades","package","apps","debugging","workflows",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":184,"sourceHtmlUrl":185,"categories":186,"keywords":191,"publishedAt":43},"01M6AEBN37RQMXJ3298PEY7PG1","winmd-api-search","Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI\u002FML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FSKILL.md",[187,190],{"categoryNo":188,"categoryName":189,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":161,"categoryName":162,"taxonomyType":163,"taxonomyTypeDesc":164},[192,193,194,42,195,196,197,198,199,200,201,202,203,204,205,111,206,207,208,209,210,139,211,212],"winmd api search","search","api","desktop","file access","enumeration","ui","ml","file","networking","capabilities","notifications","explore","access","features","full","camera","events","platform","methods","controls",{"skillNo":214,"name":215,"nameZh":6,"description":216,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":217,"licenseFileUrl":218,"sourceHtmlUrl":219,"categories":220,"keywords":226,"publishedAt":43},"01M6AE571R3SC1ZGE202B3NB5S","resemble-detect","Deepfake detection and media safety — detect AI-generated audio, images, video, and text, trace synthesis sources, apply watermarks, verify speaker identity, and analyze media intelligence using Resemble AI","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FSKILL.md",[221,222,225],{"categoryNo":188,"categoryName":189,"taxonomyType":100,"taxonomyTypeDesc":101},{"categoryNo":223,"categoryName":224,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":103,"categoryName":104,"taxonomyType":100,"taxonomyTypeDesc":101},[227,136,200,228,229],"resemble detect","https","identity",{"skillNo":231,"name":232,"nameZh":6,"description":233,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":217,"licenseFileUrl":234,"sourceHtmlUrl":235,"categories":236,"keywords":241,"publishedAt":43},"01M6AE30BSK2HCY4TQQ22Z8JRD","quality-playbook","Run a complete quality engineering audit on any codebase. Derives behavioral requirements from the code, generates spec-traced functional tests, runs a three-pass code review with regression tests, executes a multi-model spec audit (Council of Three), and produces a consolidated bug report with TDD-verified patches. Finds the 35% of real defects that structural code review alone cannot catch. Works with any language. Trigger on 'quality playbook', 'spec audit', 'Council of Three', 'fitness-to-purpose', or 'coverage theater'.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FSKILL.md",[237,240],{"categoryNo":238,"categoryName":239,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":103,"categoryName":104,"taxonomyType":100,"taxonomyTypeDesc":101},[242,243,244,245,39,112,9,135,246,247,228,248,249,250,251,252,253,254,255,256,257,258,120,259,260,261,262],"playbook","quality playbook","quality","code review","tdd","run","report","spec","bug report","council","engineering","functional","spec audit","bug","verified","multi-model","three","coverage","model","regression","structural"]