[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DYHTT2GG19MHT4HHHMRWE0":3,"skill-same:01M6DYHTT2GG19MHT4HHHMRWE0":96},{"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":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6DYHTT2GG19MHT4HHHMRWE0","maui-app-lifecycle",null,".NET MAUI app lifecycle guidance — the four app states, cross-platform Window lifecycle events (Created, Activated, Deactivated, Stopped, Resumed, Destroying), platform-specific lifecycle mapping, backgrounding and resume behavior, and state-preservation patterns. USE FOR: \"app lifecycle\", \"window lifecycle events\", \"save state on background\", \"resume app\", \"OnStopped\", \"OnResumed\", \"backgrounding\", \"deactivated event\", \"ConfigureLifecycleEvents\", \"platform lifecycle hooks\". DO NOT USE FOR: navigation events (use maui-shell-navigation), dependency injection setup (use maui-dependency-injection), platform API invocation (use conditional compilation and partial classes).","managedcode\u002Fdotnet-skills","managedcode","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F78253589?v=4","01M6DYDJR3EG8KB5G4PC65XCTT","Managed Code","01M6DYDJX0ZT432N04NYJW89DN",512,"MIT","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FFrameworks\u002FOfficial-DotNet-MAUI\u002Fskills\u002Fmaui-app-lifecycle\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,43,44,45,46],"lifecycle","maui app lifecycle","maui","app","dependency-injection","window","for","states","event","events","mapping","preservation","platform","dependency injection","lifecycle mapping","state","patterns","do","guidance","resume","hooks","dependency","use","behavior","save","shell","api","injection","2026-11-10 10:12:30",false,"---\nname: maui-app-lifecycle\ndescription: >-\n  .NET MAUI app lifecycle guidance — the four app states, cross-platform Window\n  lifecycle events (Created, Activated, Deactivated, Stopped, Resumed, Destroying),\n  platform-specific lifecycle mapping, backgrounding and resume behavior, and\n  state-preservation patterns.\n  USE FOR: \"app lifecycle\", \"window lifecycle events\", \"save state on background\",\n  \"resume app\", \"OnStopped\", \"OnResumed\", \"backgrounding\", \"deactivated event\",\n  \"ConfigureLifecycleEvents\", \"platform lifecycle hooks\".\n  DO NOT USE FOR: navigation events (use maui-shell-navigation),\n  dependency injection setup (use maui-dependency-injection),\n  platform API invocation (use conditional compilation and partial classes).\nlicense: MIT\n---\n\n# .NET MAUI App Lifecycle\n\nHandle application state transitions correctly in .NET MAUI. This skill covers the cross-platform Window lifecycle events, their platform-native mappings, and patterns for preserving state across backgrounding and resume cycles.\n\n## When to Use\n\n- Saving or restoring state when the app backgrounds or resumes\n- Subscribing to Window lifecycle events (Created, Activated, Deactivated, Stopped, Resumed, Destroying)\n- Hooking into platform-native lifecycle callbacks via `ConfigureLifecycleEvents`\n- Deciding where to place initialization, teardown, or refresh logic\n- Understanding the difference between Deactivated and Stopped\n\n## When Not to Use\n\n- Page-level navigation events — use Shell navigation guidance instead\n- Registering services at startup — use dependency injection guidance instead\n- Calling platform-specific APIs outside lifecycle context — use platform invoke guidance instead\n\n## Inputs\n\n- The target lifecycle transition (e.g., \"save draft when backgrounded\", \"refresh data on resume\")\n- Which platforms the developer targets (Android, iOS, Mac Catalyst, Windows)\n- Whether the app uses multiple windows (iPad, Mac Catalyst, desktop Windows)\n\n## App States\n\nA .NET MAUI app moves through four states:\n\n| State | Description |\n|---|---|\n| **Not Running** | Process does not exist |\n| **Running** | Foreground, receiving input |\n| **Deactivated** | Visible but lost focus (dialog, split-screen, notification shade) |\n| **Stopped** | Fully backgrounded, UI not visible |\n\nTypical flow: Not Running → Running → Deactivated → Stopped → Running (resumed) or Not Running (terminated).\n\n## Window Lifecycle Events\n\n`Microsoft.Maui.Controls.Window` exposes six cross-platform events:\n\n| Event | Fires when |\n|---|---|\n| `Created` | Native window allocated |\n| `Activated` | Window receives input focus |\n| `Deactivated` | Window loses focus (may still be visible) |\n| `Stopped` | Window is no longer visible |\n| `Resumed` | Window returns to foreground after Stopped |\n| `Destroying` | Native window is being torn down |\n\n### Subscribing via CreateWindow\n\nOverride `CreateWindow` in your `App` class and attach event handlers:\n\n```csharp\npublic partial class App : Application\n{\n    protected override Window CreateWindow(IActivationState? activationState)\n    {\n        var window = base.CreateWindow(activationState);\n\n        window.Created += (s, e) => Debug.WriteLine(\"Created\");\n        window.Activated += (s, e) => Debug.WriteLine(\"Activated\");\n        window.Deactivated += (s, e) => Debug.WriteLine(\"Deactivated\");\n        window.Stopped += (s, e) => Debug.WriteLine(\"Stopped\");\n        window.Resumed += (s, e) => Debug.WriteLine(\"Resumed\");\n        window.Destroying += (s, e) => Debug.WriteLine(\"Destroying\");\n\n        return window;\n    }\n}\n```\n\n### Subscribing via a Custom Window Subclass\n\nCreate a `Window` subclass and override the virtual methods:\n\n```csharp\npublic class AppWindow : Window\n{\n    public AppWindow(Page page) : base(page) { }\n\n    protected override void OnActivated() { \u002F* refresh UI *\u002F }\n    protected override void OnStopped() { \u002F* save state *\u002F }\n    protected override void OnResumed() { \u002F* restore state *\u002F }\n    protected override void OnDestroying() { \u002F* cleanup *\u002F }\n}\n```\n\nReturn it from `CreateWindow`:\n\n```csharp\nprotected override Window CreateWindow(IActivationState? activationState)\n    => new AppWindow(new AppShell());\n```\n\n## Workflow: Save and Restore State on Background\n\n1. **Identify transient state** — draft text, scroll position, form inputs, timer values.\n2. **Save in `OnStopped`** — use `Preferences` for small values or file serialization for larger state.\n3. **Restore in `OnResumed`** — read back saved values and apply to your view model.\n4. **Also save in `OnDestroying`** on Android — the back button can skip `Stopped` entirely.\n5. **Keep handlers fast** — complete within 1–2 seconds to avoid ANR on Android or watchdog kills on iOS.\n\n```csharp\nprotected override void OnStopped()\n{\n    base.OnStopped();\n    Preferences.Set(\"draft_text\", _viewModel.DraftText);\n    Preferences.Set(\"scroll_y\", _viewModel.ScrollY);\n}\n\nprotected override void OnResumed()\n{\n    base.OnResumed();\n    _viewModel.DraftText = Preferences.Get(\"draft_text\", string.Empty);\n    _viewModel.ScrollY = Preferences.Get(\"scroll_y\", 0.0);\n}\n\nprotected override void OnDestroying()\n{\n    base.OnDestroying();\n    \u002F\u002F Android back-button can skip Stopped\n    Preferences.Set(\"draft_text\", _viewModel.DraftText);\n}\n```\n\n## Platform Lifecycle Mapping\n\n### Android\n\n| Window Event | Android Callback |\n|---|---|\n| Created | `OnCreate` |\n| Activated | `OnResume` |\n| Deactivated | `OnPause` |\n| Stopped | `OnStop` |\n| Resumed | `OnRestart` → `OnStart` → `OnResume` |\n| Destroying | `OnDestroy` |\n\n### iOS \u002F Mac Catalyst\n\n| Window Event | UIKit Callback | `AddiOS` builder method |\n|---|---|---|\n| Created | `WillFinishLaunching` \u002F `SceneWillConnect` | `.WillFinishLaunching()` \u002F `.SceneWillConnect()` |\n| Activated | `DidBecomeActive` | `.OnActivated()` |\n| Deactivated | `WillResignActive` | `.OnResignActivation()` |\n| Stopped | `DidEnterBackground` | `.DidEnterBackground()` |\n| Resumed | `WillEnterForeground` | `.WillEnterForeground()` |\n| Destroying | `WillTerminate` | `.WillTerminate()` |\n\n> ⚠️ The UIKit selector names and the `AddiOS` builder method names differ for\n> activation. There is **no** `.DidBecomeActive()` or `.WillResignActive()` builder\n> method — use `.OnActivated()` and `.OnResignActivation()` or the code will not compile.\n\n### Windows (WinUI)\n\n| Window Event | WinUI Callback |\n|---|---|\n| Created | `OnLaunched` |\n| Activated | `Activated` (foreground) |\n| Deactivated | `Activated` (background) |\n| Stopped | `VisibilityChanged` (false) |\n| Resumed | `VisibilityChanged` (true) |\n| Destroying | `Closed` |\n\n## Hooking Native Lifecycle Directly\n\nUse `ConfigureLifecycleEvents` in `MauiProgram.cs` when you need platform-specific callbacks beyond what Window events provide:\n\n```csharp\nbuilder.ConfigureLifecycleEvents(events =>\n{\n#if ANDROID\n    events.AddAndroid(android => android\n        .OnCreate((activity, bundle) => Debug.WriteLine(\"Android OnCreate\"))\n        .OnResume(activity => Debug.WriteLine(\"Android OnResume\"))\n        .OnPause(activity => Debug.WriteLine(\"Android OnPause\"))\n        .OnStop(activity => Debug.WriteLine(\"Android OnStop\"))\n        .OnDestroy(activity => Debug.WriteLine(\"Android OnDestroy\")));\n#elif IOS || MACCATALYST\n    events.AddiOS(ios => ios\n        .OnActivated(app => Debug.WriteLine(\"iOS OnActivated\"))\n        .OnResignActivation(app => Debug.WriteLine(\"iOS OnResignActivation\"))\n        .DidEnterBackground(app => Debug.WriteLine(\"iOS DidEnterBackground\"))\n        .WillEnterForeground(app => Debug.WriteLine(\"iOS WillEnterForeground\")));\n#elif WINDOWS\n    events.AddWindows(windows => windows\n        .OnLaunched((app, args) => Debug.WriteLine(\"Windows OnLaunched\"))\n        .OnActivated((window, args) => Debug.WriteLine(\"Windows Activated\"))\n        .OnClosed((window, args) => Debug.WriteLine(\"Windows Closed\")));\n#endif\n});\n```\n\n## Common Pitfalls\n\n1. **Resumed does not fire on first launch.** The initial sequence is `Created` → `Activated`. Use `OnActivated` for logic that must run on every foreground entry, not `OnResumed`.\n\n2. **Deactivated ≠ Stopped.** A dialog, split-screen, or notification pull-down triggers `Deactivated` without `Stopped`. Do not perform heavy saves in `OnDeactivated` — the app may never actually background.\n\n3. **Android back button skips Stopped.** On Android, pressing back may call `Destroying` directly without `Stopped`. Place critical save logic in both `OnStopped` and `OnDestroying`.\n\n4. **Multi-window apps fire events independently.** On iPad, Mac Catalyst, and desktop Windows each `Window` instance fires its own lifecycle events. Do not assume a single global lifecycle.\n\n5. **Long-running handlers cause kills.** Android enforces a ~5 second ANR timeout; iOS has limited background execution time. Keep lifecycle handlers synchronous and fast — use `Preferences` for quick saves, not database writes.\n\n6. **Do not use legacy Xamarin.Forms lifecycle methods.** `Application.OnStart()`, `Application.OnSleep()`, and `Application.OnResume()` exist for backward compatibility but bypass Window-level events. In .NET MAUI, prefer `Window` lifecycle events (`OnActivated`, `OnStopped`, `OnResumed`, etc.) for correct multi-window behavior.\n","# .NET MAUI App Lifecycle\n\nHandle application state transitions correctly in .NET MAUI. This skill covers the cross-platform Window lifecycle events, their platform-native mappings, and patterns for preserving state across backgrounding and resume cycles.\n\n## When to Use\n\n- Saving or restoring state when the app backgrounds or resumes\n- Subscribing to Window lifecycle events (Created, Activated, Deactivated, Stopped, Resumed, Destroying)\n- Hooking into platform-native lifecycle callbacks via `ConfigureLifecycleEvents`\n- Deciding where to place initialization, teardown, or refresh logic\n- Understanding the difference between Deactivated and Stopped\n\n## When Not to Use\n\n- Page-level navigation events — use Shell navigation guidance instead\n- Registering services at startup — use dependency injection guidance instead\n- Calling platform-specific APIs outside lifecycle context — use platform invoke guidance instead\n\n## Inputs\n\n- The target lifecycle transition (e.g., \"save draft when backgrounded\", \"refresh data on resume\")\n- Which platforms the developer targets (Android, iOS, Mac Catalyst, Windows)\n- Whether the app uses multiple windows (iPad, Mac Catalyst, desktop Windows)\n\n## App States\n\nA .NET MAUI app moves through four states:\n\n| State | Description |\n|---|---|\n| **Not Running** | Process does not exist |\n| **Running** | Foreground, receiving input |\n| **Deactivated** | Visible but lost focus (dialog, split-screen, notification shade) |\n| **Stopped** | Fully backgrounded, UI not visible |\n\nTypical flow: Not Running → Running → Deactivated → Stopped → Running (resumed) or Not Running (terminated).\n\n## Window Lifecycle Events\n\n`Microsoft.Maui.Controls.Window` exposes six cross-platform events:\n\n| Event | Fires when |\n|---|---|\n| `Created` | Native window allocated |\n| `Activated` | Window receives input focus |\n| `Deactivated` | Window loses focus (may still be visible) |\n| `Stopped` | Window is no longer visible |\n| `Resumed` | Window returns to foreground after Stopped |\n| `Destroying` | Native window is being torn down |\n\n### Subscribing via CreateWindow\n\nOverride `CreateWindow` in your `App` class and attach event handlers:\n\n```csharp\npublic partial class App : Application\n{\n    protected override Window CreateWindow(IActivationState? activationState)\n    {\n        var window = base.CreateWindow(activationState);\n\n        window.Created += (s, e) => Debug.WriteLine(\"Created\");\n        window.Activated += (s, e) => Debug.WriteLine(\"Activated\");\n        window.Deactivated += (s, e) => Debug.WriteLine(\"Deactivated\");\n        window.Stopped += (s, e) => Debug.WriteLine(\"Stopped\");\n        window.Resumed += (s, e) => Debug.WriteLine(\"Resumed\");\n        window.Destroying += (s, e) => Debug.WriteLine(\"Destroying\");\n\n        return window;\n    }\n}\n```\n\n### Subscribing via a Custom Window Subclass\n\nCreate a `Window` subclass and override the virtual methods:\n\n```csharp\npublic class AppWindow : Window\n{\n    public AppWindow(Page page) : base(page) { }\n\n    protected override void OnActivated() { \u002F* refresh UI *\u002F }\n    protected override void OnStopped() { \u002F* save state *\u002F }\n    protected override void OnResumed() { \u002F* restore state *\u002F }\n    protected override void OnDestroying() { \u002F* cleanup *\u002F }\n}\n```\n\nReturn it from `CreateWindow`:\n\n```csharp\nprotected override Window CreateWindow(IActivationState? activationState)\n    => new AppWindow(new AppShell());\n```\n\n## Workflow: Save and Restore State on Background\n\n1. **Identify transient state** — draft text, scroll position, form inputs, timer values.\n2. **Save in `OnStopped`** — use `Preferences` for small values or file serialization for larger state.\n3. **Restore in `OnResumed`** — read back saved values and apply to your view model.\n4. **Also save in `OnDestroying`** on Android — the back button can skip `Stopped` entirely.\n5. **Keep handlers fast** — complete within 1–2 seconds to avoid ANR on Android or watchdog kills on iOS.\n\n```csharp\nprotected override void OnStopped()\n{\n    base.OnStopped();\n    Preferences.Set(\"draft_text\", _viewModel.DraftText);\n    Preferences.Set(\"scroll_y\", _viewModel.ScrollY);\n}\n\nprotected override void OnResumed()\n{\n    base.OnResumed();\n    _viewModel.DraftText = Preferences.Get(\"draft_text\", string.Empty);\n    _viewModel.ScrollY = Preferences.Get(\"scroll_y\", 0.0);\n}\n\nprotected override void OnDestroying()\n{\n    base.OnDestroying();\n    \u002F\u002F Android back-button can skip Stopped\n    Preferences.Set(\"draft_text\", _viewModel.DraftText);\n}\n```\n\n## Platform Lifecycle Mapping\n\n### Android\n\n| Window Event | Android Callback |\n|---|---|\n| Created | `OnCreate` |\n| Activated | `OnResume` |\n| Deactivated | `OnPause` |\n| Stopped | `OnStop` |\n| Resumed | `OnRestart` → `OnStart` → `OnResume` |\n| Destroying | `OnDestroy` |\n\n### iOS \u002F Mac Catalyst\n\n| Window Event | UIKit Callback | `AddiOS` builder method |\n|---|---|---|\n| Created | `WillFinishLaunching` \u002F `SceneWillConnect` | `.WillFinishLaunching()` \u002F `.SceneWillConnect()` |\n| Activated | `DidBecomeActive` | `.OnActivated()` |\n| Deactivated | `WillResignActive` | `.OnResignActivation()` |\n| Stopped | `DidEnterBackground` | `.DidEnterBackground()` |\n| Resumed | `WillEnterForeground` | `.WillEnterForeground()` |\n| Destroying | `WillTerminate` | `.WillTerminate()` |\n\n> ⚠️ The UIKit selector names and the `AddiOS` builder method names differ for\n> activation. There is **no** `.DidBecomeActive()` or `.WillResignActive()` builder\n> method — use `.OnActivated()` and `.OnResignActivation()` or the code will not compile.\n\n### Windows (WinUI)\n\n| Window Event | WinUI Callback |\n|---|---|\n| Created | `OnLaunched` |\n| Activated | `Activated` (foreground) |\n| Deactivated | `Activated` (background) |\n| Stopped | `VisibilityChanged` (false) |\n| Resumed | `VisibilityChanged` (true) |\n| Destroying | `Closed` |\n\n## Hooking Native Lifecycle Directly\n\nUse `ConfigureLifecycleEvents` in `MauiProgram.cs` when you need platform-specific callbacks beyond what Window events provide:\n\n```csharp\nbuilder.ConfigureLifecycleEvents(events =>\n{\n#if ANDROID\n    events.AddAndroid(android => android\n        .OnCreate((activity, bundle) => Debug.WriteLine(\"Android OnCreate\"))\n        .OnResume(activity => Debug.WriteLine(\"Android OnResume\"))\n        .OnPause(activity => Debug.WriteLine(\"Android OnPause\"))\n        .OnStop(activity => Debug.WriteLine(\"Android OnStop\"))\n        .OnDestroy(activity => Debug.WriteLine(\"Android OnDestroy\")));\n#elif IOS || MACCATALYST\n    events.AddiOS(ios => ios\n        .OnActivated(app => Debug.WriteLine(\"iOS OnActivated\"))\n        .OnResignActivation(app => Debug.WriteLine(\"iOS OnResignActivation\"))\n        .DidEnterBackground(app => Debug.WriteLine(\"iOS DidEnterBackground\"))\n        .WillEnterForeground(app => Debug.WriteLine(\"iOS WillEnterForeground\")));\n#elif WINDOWS\n    events.AddWindows(windows => windows\n        .OnLaunched((app, args) => Debug.WriteLine(\"Windows OnLaunched\"))\n        .OnActivated((window, args) => Debug.WriteLine(\"Windows Activated\"))\n        .OnClosed((window, args) => Debug.WriteLine(\"Windows Closed\")));\n#endif\n});\n```\n\n## Common Pitfalls\n\n1. **Resumed does not fire on first launch.** The initial sequence is `Created` → `Activated`. Use `OnActivated` for logic that must run on every foreground entry, not `OnResumed`.\n\n2. **Deactivated ≠ Stopped.** A dialog, split-screen, or notification pull-down triggers `Deactivated` without `Stopped`. Do not perform heavy saves in `OnDeactivated` — the app may never actually background.\n\n3. **Android back button skips Stopped.** On Android, pressing back may call `Destroying` directly without `Stopped`. Place critical save logic in both `OnStopped` and `OnDestroying`.\n\n4. **Multi-window apps fire events independently.** On iPad, Mac Catalyst, and desktop Windows each `Window` instance fires its own lifecycle events. Do not assume a single global lifecycle.\n\n5. **Long-running handlers cause kills.** Android enforces a ~5 second ANR timeout; iOS has limited background execution time. Keep lifecycle handlers synchronous and fast — use `Preferences` for quick saves, not database writes.\n\n6. **Do not use legacy Xamarin.Forms lifecycle methods.** `Application.OnStart()`, `Application.OnSleep()`, and `Application.OnResume()` exist for backward compatibility but bypass Window-level events. In .NET MAUI, prefer `Window` lifecycle events (`OnActivated`, `OnStopped`, `OnResumed`, etc.) for correct multi-window behavior.\n",{"name":5,"license":15,"description":7},"main","497cc9aba79a931ac6fb8d36a48cc22fe3d6d74b","catalog\u002FFrameworks\u002FOfficial-DotNet-MAUI\u002Fskills\u002Fmaui-app-lifecycle",41,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills","https:\u002F\u002Fskills.managed-code.com","https:\u002F\u002Fgithub.com\u002Fmanagedcode","https:\u002F\u002Fwww.managed-code.com","Open Source Community for .NET Developers: Reliable, Actively Maintained, and Community-Driven. Made in Ukraine 🇺🇦 with ❤️","2026-11-11 19:34:28",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add managedcode\u002Fdotnet-skills --skill maui-app-lifecycle",{"tool":68,"command":69},"bunx","bunx skills add managedcode\u002Fdotnet-skills --skill maui-app-lifecycle",{"tool":71,"command":72},"pnpm","pnpm dlx skills add managedcode\u002Fdotnet-skills --skill maui-app-lifecycle","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FFrameworks\u002FOfficial-DotNet-MAUI\u002Fskills\u002Fmaui-app-lifecycle\u002FSKILL.md",true,[76,82,86,90],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"manifest.json","REFERENCE","参考文档",163,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FFrameworks\u002FOfficial-DotNet-MAUI\u002Fskills\u002Fmaui-app-lifecycle\u002Fmanifest.json",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fapi-notes.md",3762,"https:\u002F\u002Fgithub.com\u002Ffranklee16\u002Facademic-research-skills\u002Fblob\u002Fmaster\u002Fscience-skills\u002Fdbsnp_database\u002Freferences\u002Fapi-notes.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Flifecycle-api.md",5673,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FFrameworks\u002FOfficial-DotNet-MAUI\u002Fskills\u002Fmaui-app-lifecycle\u002Freferences\u002Flifecycle-api.md",{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Fdbsnp_cli.py","SCRIPT","脚本",18561,"https:\u002F\u002Fgithub.com\u002Ffranklee16\u002Facademic-research-skills\u002Fblob\u002Fmaster\u002Fscience-skills\u002Fdbsnp_database\u002Fscripts\u002Fdbsnp_cli.py",[97,133,157,187,197,222],{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":113,"publishedAt":47},"01M6DYQE1Y9FHAQHEDTVFQ3447","xtwitter-scraper","Use XTwitterScraper when a .NET application needs typed access to Xquik's X automation REST API for tweet search, user lookup, posting workflows, extraction jobs, monitors, webhooks, or giveaway draws. USE FOR: integrating the XTwitterScraper NuGet package; reviewing Xquik API client usage; modeling API-key configuration, pagination, binary exports, raw responses, retries, and webhook\u002Fevent flows in .NET. DO NOT USE FOR: unrelated stacks; direct browser automation; generic social-media strategy; or code that does not call Xquik. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FXTwitterScraper\u002Fskills\u002Fxtwitter-scraper\u002FSKILL.md",[103,108],{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":109,"categoryName":110,"taxonomyType":111,"taxonomyTypeDesc":112},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[114,115,116,117,118,119,120,121,45,122,123,124,125,126,127,128,129,130,131,132],"xtwitter scraper","browser automation","workflows","run","code","browser","search","repository","Media","api client","access","edit","unrelated","webhooks","files","social","commands","modeling","webhook",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":145,"publishedAt":47},"01M6DYQ9S4PE1H6G8MCH9T21HR","sep","Use Sep for high-performance separated-value parsing and writing in .NET, including delimiter inference, explicit parser\u002Fwriter options, and low-allocation row\u002Fcolumn workflows. USE FOR: delimited data needs are performance-sensitive and allocation-aware; project needs explicit control over separator inference, escaping, trimming, and header behavior;. DO NOT USE FOR: unrelated stacks; generic tasks that do not need this specific guidance. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FSep\u002Fskills\u002Fsep\u002FSKILL.md",[139,142],{"categoryNo":140,"categoryName":141,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":143,"categoryName":144,"taxonomyType":111,"taxonomyTypeDesc":112},"01JBSEEDCAT000000000000036","内容创作者",[135,146,147,116,148,117,121,149,150,151,125,152,126,128,36,153,154,155,130,156],"writing","performance","tasks","data","parsing","parser","context","writer","options","project","high-performance",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":47},"01M6DZS2DNEPXCGGF6SSCW6G5V","webgpu-threejs-tsl","Comprehensive guide for developing WebGPU-enabled Three.js applications using TSL (Three.js Shading Language). Covers WebGPU renderer setup, TSL syntax and node materials, compute shaders, post-processing effects, and WGSL integration. Use this skill when working with Three.js WebGPU, TSL shaders, node materials, or GPU compute in Three.js.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fwebgpu-claude-skill\u002Fskills\u002Fwebgpu-threejs-tsl\u002FSKILL.md",[],[164,165,166,167,168,169,170,171,172,173,174,175,41,176,177,178,179,180,181,182,25,183,184,185,186],"webgpu","threejs","webgpu threejs tsl","setup","shaders","gpu","integration","applications","js","node","syntax","guide","language","three","compute","post","processing","with","renderer","materials","wgsl","effects","when",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":193,"publishedAt":47},"01M6DZS0BQXW2B56A289XF1X76","roslynk","Use Roslynk for semantic inspection and edits of *.cs, *.razor and *.cshtml solution files.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Froslynk\u002Fskills\u002Froslynk\u002FSKILL.md",[],[189,41,128,194,195,25,196],"semantic","razor","inspection",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":203,"publishedAt":47},"01M6DZRW6MEJCVW80K3S4XV60K","system-text-json-net11","Imperative guidance for the System.Text.Json APIs added in .NET 11: the built-in `JsonNamingPolicy.PascalCase` naming policy, and the strongly-typed generic `JsonSerializerOptions.GetTypeInfo` and `JsonSerializerOptions.TryGetTypeInfo` metadata accessors (generic overloads that return a typed `JsonTypeInfo`). USE ONLY when the user is targeting net11.0 or later and needs PascalCase JSON property or dictionary-key names without writing a custom naming policy, a strongly-typed generic `JsonTypeInfo` instead of the non-generic `JsonTypeInfo`, or a no-throw way to probe whether a type's serialization metadata is resolved. DO NOT USE when the target is earlier than net11.0, the requested behavior uses an established pre-net11 naming policy, or the user explicitly selected another JSON library.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet11\u002Fskills\u002Fsystem-text-json-net11\u002FSKILL.md",[],[204,205,206,207,146,208,209,210,211,42,212,41,213,214,37,215,36,216,217,218,219,25,220,221,186],"system","json","text","system text json net11","policy","metadata","library","serialization","user","only","probe","later","type","dictionary","naming","targeting","custom","generic",{"skillNo":223,"name":224,"nameZh":6,"description":225,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":226,"categories":227,"keywords":230,"publishedAt":47},"01M6DZRRJP3S662NFSG1RSPQQ7","process-api-net11","Provides guidance on the new System.Diagnostics.Process APIs introduced in .NET 11: Process.Run, Process.RunAndCaptureText, Process.StartAndForget, Process.ReadAllText\u002FBytes\u002FLines, KillOnParentExit, InheritedHandles, and StartDetached. USE FOR: starting, orchestrating, or capturing output from external processes in applications targeting net11.0 or later. DO NOT USE FOR: applications targeting .NET 10 or earlier, or basic pre-.NET 11 Process.Start usage without new APIs.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet11\u002Fskills\u002Fprocess-api-net11\u002FSKILL.md",[228,229],{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},{"categoryNo":109,"categoryName":110,"taxonomyType":111,"taxonomyTypeDesc":112},[45,231,232,233,117,234,171,204,41,37,215,36,235,236,237,238,219,25,239],"process","process api net11","diagnostics","start","basic","processes","output","usage","new"]