[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"creator:01M6DYDJR3EG8KB5G4PC65XCTT":3,"creator-list:01M6DYDJR3EG8KB5G4PC65XCTT:stars:1:":22},{"accountNo":4,"login":5,"displayName":6,"avatarUrl":7,"accountType":8,"accountTypeDesc":9,"profileDescription":10,"skillCount":11,"repoCount":12,"professionCount":13,"scenarioCount":13,"totalStars":14,"updatedAt":15,"htmlUrl":16,"blogUrl":17,"company":18,"location":19,"followersCount":20,"publicReposCount":21},"01M6DYDJR3EG8KB5G4PC65XCTT","managedcode","Managed Code","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F78253589?v=4","ORGANIZATION","组织","Open Source Community for .NET Developers: Reliable, Actively Maintained, and Community-Driven. Made in Ukraine 🇺🇦 with ❤️",321,1,5,512,"2026-11-11 19:34:28","https:\u002F\u002Fgithub.com\u002Fmanagedcode","https:\u002F\u002Fwww.managed-code.com",null,"France",141,59,{"records":23,"total":11,"current":12,"size":415},[24,61,66,102,124,153,163,189,207,231,253,274,294,318,339,359,381,399],{"skillNo":25,"name":26,"nameZh":18,"description":27,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":31,"sourceHtmlUrl":32,"categories":33,"keywords":34,"publishedAt":60},"01M6DZAKMM0VMRJNY3QXZ5HEM6","blazing-fast-dotnet","High-performance .NET guidance for writing and tuning C# apps and benchmarks (BenchmarkDotNet, ASP.NET, challenges). Use when asked to make .NET code faster, reduce allocations or GC overhead, fix lock contention or thread pool starvation, inspect JIT codegen, profile apps, or tune runtime\u002FNativeAOT settings.","managedcode\u002Fdotnet-skills","01M6DYDJX0ZT432N04NYJW89DN","MIT","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fblazingfastdotnet\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fblazingfastdotnet\u002FSKILL.md",[],[35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59],"dotnet","blazing fast dotnet","fast","runtime","performance","fix","writing","use","high-performance","apps","code","benchmarks","gc","settings","tuning","guidance","jit","profile","inspect","when","reduce","lock","overhead","make","for","2026-11-10 10:12:30",{"skillNo":62,"name":26,"nameZh":18,"description":27,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":60},"01M6DZ0FQTEYAYC0ZB46SWB95W","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FTools\u002FBlazingFastDotnet\u002Fskills\u002Fblazing-fast-dotnet\u002FSKILL.md",[],[35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59],{"skillNo":67,"name":68,"nameZh":18,"description":69,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":70,"categories":71,"keywords":82,"publishedAt":60},"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",[72,77],{"categoryNo":73,"categoryName":74,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[83,84,85,86,87,88,89,90,91,45,92,93,94,95,96,97,98,99,100,101],"xtwitter scraper","Media","webhook","search","browser automation","social","files","access","workflows","api","browser","unrelated","run","repository","edit","modeling","commands","webhooks","api client",{"skillNo":103,"name":104,"nameZh":18,"description":105,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":106,"categories":107,"keywords":114,"publishedAt":60},"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",[108,111],{"categoryNo":109,"categoryName":110,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":112,"categoryName":113,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000036","内容创作者",[104,115,116,39,89,41,43,91,117,94,118,95,96,97,119,99,120,121,122,123],"writer","project","tasks","options","parser","data","context","do","parsing",{"skillNo":125,"name":126,"nameZh":18,"description":127,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":60},"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",[],[131,132,133,134,135,42,136,137,138,139,140,141,142,143,144,145,146,147,59,148,149,54,150,151,152],"webgpu","webgpu threejs tsl","threejs","three","applications","compute","gpu","shaders","integration","node","syntax","js","setup","language","guide","wgsl","processing","renderer","effects","materials","with","post",{"skillNo":154,"name":155,"nameZh":18,"description":156,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":60},"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",[],[155,89,42,160,59,161,162],"semantic","razor","inspection",{"skillNo":164,"name":165,"nameZh":18,"description":166,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":60},"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",[],[170,171,172,173,122,174,175,41,42,176,177,178,179,50,180,181,182,183,184,185,54,186,59,187,188],"system","system text json net11","text","json","policy","only","type","later","probe","behavior","dictionary","library","serialization","user","metadata","targeting","generic","custom","naming",{"skillNo":190,"name":191,"nameZh":18,"description":192,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":193,"categories":194,"keywords":197,"publishedAt":60},"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",[195,196],{"categoryNo":73,"categoryName":74,"taxonomyType":75,"taxonomyTypeDesc":76},{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[198,92,199,122,200,170,135,42,177,95,50,201,202,203,59,204,185,205,206],"process api net11","process","basic","start","diagnostics","usage","new","output","processes",{"skillNo":208,"name":209,"nameZh":18,"description":210,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":211,"categories":212,"keywords":213,"publishedAt":60},"01M6DZRMGPYXYFYNWSFMDTY0QW","setup-local-sdk","Install a .NET SDK locally for safe preview testing, specific-version pinning, or reproducible team setups — without modifying the system-wide installation. USE FOR: trying .NET previews safely, testing specific SDK versions, installing MAUI or other workloads on a preview, updating or replacing an existing local SDK, creating reproducible team\u002FCI install scripts, configuring global.json paths. DO NOT USE FOR: system-wide SDK installs, .NET hosts older than 10, runtime-only installs, or projects not using SDK-style commands.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet\u002Fskills\u002Fsetup-local-sdk\u002FSKILL.md",[],[214,215,143,216,122,217,38,218,170,219,220,175,42,221,222,223,224,173,225,226,227,228,99,229,230,59],"local","sdk","setup local sdk","projects","Reproducible","testing","ci","version","preview","team","style","scripts","installation","hosts","safe","install","paths",{"skillNo":232,"name":233,"nameZh":18,"description":234,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":235,"categories":236,"keywords":238,"publishedAt":60},"01M6DZRFJDY56KA3J1NQ3BC5SV","msbuild","Use before MSBuild custom-target or incremental-generation repairs, XML\u002Fimport\u002Fhook review, .binlog capture\u002Freplay, or assessing supported\u002Funsupported build-speedup claims and controlled timings, even without a checkout. For MSBuild authoring itself, activate before reviewing\u002Fediting .proj\u002F.props\u002F.targets\u002F.csproj\u002F.fsproj\u002F.vbproj or Directory.Build files, including no-change import reviews. Framework\u002FAPI\u002F.NET\u002FASP.NET upgrade plans and working non-SDK-to-SDK\u002Fpackages.config conversions are migrations, even if they mention .csproj\u002FNuGet: DO NOT activate. A failing assertion after a successful build is code\u002Ftest debugging: DO NOT activate. Check Import\u002FExists, required and NuGet build\u002FbuildTransitive\u002Fnuspec imports, conditions, Inputs\u002FOutputs, stale outputs and incorrect skips. Build checks use copies; source inputs stay read-only. Diagnose failed dotnet build\u002Frestore\u002Fpack\u002Fpublish or slow evaluation\u002Fcompilation\u002Fcopying. Exclude SDK installation alone, C# refactoring, runtime CPU profiling and non-MSBuild builds.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet\u002Fskills\u002Fmsbuild\u002FSKILL.md",[237],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[233,239,175,35,240,92,241,242,243,244,245,246,247,248,89,249,250,45,251,252],"checkout","activate","review","publish","packages","change","reviews","cpu profiling","csproj","failing","upgrade","debugging","claims","imports",{"skillNo":254,"name":255,"nameZh":18,"description":256,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":257,"categories":258,"keywords":259,"publishedAt":60},"01M6PSFZGRB76V2ZEH2Z1S3Z5F","dotnet-breaking-changes","Use before changing .NET\u002FC# code whose callers you do not control: a NuGet library, or a repo with PublicAPI.Shipped\u002FUnshipped.txt, ApiCompat, multiple TargetFrameworks, InternalsVisibleTo, or generated (.g.cs) partials. Green builds miss silent breaks from optional parameters, parameter names, sealing, const values, nullability, and #if. USE FOR: \"without breaking existing callers\"; adding a public method, overload, optional parameter, or interface member to a shipped library; renaming a public method or an internal helper a friend assembly uses; consolidating duplicated logic; changing a signature, nullability, default, or attribute; adding a target framework; RS0016\u002FRS0017 or ApiCompat errors; \"is this PR breaking?\". For a rename, extract, or merge, also invoke csharp-refactoring. DO NOT USE FOR: an executable whose callers all live in one project; renaming a local variable or private member, even in a shipped library; formatting; framework\u002FSDK\u002FNuGet upgrades (use dotnet-upgrade).","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet\u002Fskills\u002Fdotnet-breaking-changes\u002FSKILL.md",[],[35,260,261,262,116,263,214,264,265,266,249,267,268,45,269,270,271,181,272,273],"dotnet breaking changes","changes","green","default","errors","interface","generated","invoke","you","refactoring","merge","rename","live","assembly",{"skillNo":275,"name":276,"nameZh":18,"description":277,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":278,"categories":279,"keywords":283,"publishedAt":60},"01M6DZRB7D3BCZFD8ZJB71GXTH","csharp-refactoring","Safely refactors C#\u002F.NET code without changing behavior. USE FOR any request to refactor, rename, move, extract, inline, merge, consolidate, deduplicate, split, or modernize C# code, even a small extract, inline, or rename, or merging near-identical types; green builds miss drift in #if branches, generated partials, and reflection\u002Fconfig names. When a changed member is visible outside the assembly (PublicAPI.*.txt, InternalsVisibleTo, shipped package), also invoke dotnet-breaking-changes; local\u002Fprivate renames do not need it. Also use when a request calls a feature, bug fix, package\u002Fframework upgrade, or public nullability change a refactor and the behavior-changing part must be separated or declined. DO NOT USE FOR ordinary feature or bug fixes not presented as refactoring; standalone upgrades after reclassification (use dotnet-upgrade); adding tests; or formatting-only work.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet\u002Fskills\u002Fcsharp-refactoring\u002FSKILL.md",[280],{"categoryNo":281,"categoryName":282,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000007","代码审查",[269,284,285,40,175,266,249,35,45,286,287,288,289,290,262,291,214,292,267,293,54],"csharp refactoring","csharp","consolidate","work","near","standalone","types","move","branches","drift",{"skillNo":295,"name":296,"nameZh":18,"description":297,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":298,"categories":299,"keywords":303,"publishedAt":60},"01M6DZR7HEJ22F35NNT59QK4QG","csharp-expert","Route C# and .NET requests to the exact installed specialist or smallest dotnet\u002Fskills marketplace plugin. USE FOR: \"which specialist should own this\" or \"how do I add the skill\" requests involving ASP.NET Core endpoints, Blazor, MAUI binding, Windows Forms specialist selection or installation, EF Core queries, test framework migration (NUnit, xUnit, MSTest), framework migration, runtime CPU\u002Fallocation evidence, file-based C#, editor\u002Fcompiler defects, a surviving MSBuild `.binlog`, or a plugin missing from `\u002Fskills`; also use for C# semantics when no narrower specialist exists, including \"do I need another specialist?\" questions. DO NOT USE FOR: requests that already name the exact installed specialist to invoke, or work unrelated to C# or .NET.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet\u002Fskills\u002Fcsharp-expert\u002FSKILL.md",[300],{"categoryNo":301,"categoryName":302,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000023","Skill与智能体开发",[285,304,305,306,122,307,308,35,309,287,310,267,94,311,312,313,314,315,316,317,54],"expert","csharp expert","windows","selection","blazor","route","which","ef core","how","CPU","forms","allocation","add","framework",{"skillNo":319,"name":320,"nameZh":18,"description":321,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":322,"categories":323,"keywords":325,"publishedAt":60},"01M6DZR3V4VXMC3X630FTCWKEZ","winforms-expert","Create, modify, debug, or review Windows Forms applications only when the request contains a concrete Windows Forms marker. USE FOR: WinForms, Windows Forms, System.Windows.Forms, WinForms Form or UserControl designer files (*.Designer.cs or *.Designer.vb), Visual Studio WinForms Designer, TableLayoutPanel, BindingSource, DataGridView, Control.InvokeAsync, component-tray ownership, or custom control serialization. DO NOT USE FOR: WPF or WPF XAML, including Window.InputBindings, KeyBinding, commands, or DataContext; .NET MAUI; Avalonia; or any request where none of the listed Windows Forms markers is present.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet-winforms\u002Fskills\u002Fwinforms-expert\u002FSKILL.md",[324],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[304,326,327,328,329,175,89,241,330,331,332,99,314,333,306,122,334,335,170,135,54,336,337,338],"winforms expert","winforms","xaml","markers","create","component","designer","present","avalonia","wpf","studio","window","request",{"skillNo":340,"name":341,"nameZh":18,"description":342,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":343,"categories":344,"keywords":345,"publishedAt":60},"01M6DZQZPYYG0B78ZA7E7DE173","thread-abort-migration","Guides migration of .NET Framework Thread.Abort usage to cooperative cancellation in modern .NET. USE FOR: modernizing code that calls Thread.Abort, catching ThreadAbortException, replacing Thread.ResetAbort, replacing Thread.Interrupt for thread termination, resolving PlatformNotSupportedException or SYSLIB0006 after retargeting to .NET 6+, migrating ASP.NET Response.End or Response.Redirect(url, true) which internally call Thread.Abort. DO NOT USE FOR: code that only uses Thread.Join, Thread.Sleep, or Thread.Start without any abort, interrupt, or ThreadAbortException usage — these APIs work identically in modern .NET and need no migration. Also not for projects staying on .NET Framework, or Thread.Abort usage inside third-party libraries you do not control.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet-upgrade\u002Fskills\u002Fthread-abort-migration\u002FSKILL.md",[],[346,347,348,122,217,349,350,351,175,42,45,352,353,287,354,201,355,317,310,356,268,357,358,203],"thread abort migration","migration","thread","end","call","join","guides","libraries","control","third-party","URL","retargeting","sleep",{"skillNo":360,"name":361,"nameZh":18,"description":362,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":363,"categories":364,"keywords":365,"publishedAt":60},"01M6DZQVDC3DA2C7VB6DC7ZJ7E","migrate-nullable-references","Enable nullable reference types in a C# project and systematically resolve all warnings. USE FOR: adopting NRTs in existing codebases, file-by-file or project-wide migration, fixing CS8602\u002FCS8618\u002FCS86xx warnings, annotating APIs for nullability, cleaning up null-forgiving operators, upgrading dependencies with new nullable annotations. DO NOT USE FOR: projects already fully migrated with zero warnings (unless auditing suppressions), fixing a handful of nullable warnings in code that already has NRTs enabled, suppressing warnings without fixing them, C# 7.3 or earlier projects. INVOKES: Get-NullableReadiness.ps1 scanner script.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet-upgrade\u002Fskills\u002Fmigrate-nullable-references\u002FSKILL.md",[],[366,367,368,369,217,370,116,371,45,372,373,374,122,375,42,376,377,347,378,379,290,204,59,380],"migrate","nullable","references","migrate nullable references","get","up","scanner","operators","annotations","ZeRO","file","dependencies","reference","migrated","Existing",{"skillNo":382,"name":383,"nameZh":18,"description":384,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":385,"categories":386,"keywords":387,"publishedAt":60},"01M6DZQN2FQANK0VZER4F0TYXY","migrate-dotnet9-to-dotnet10","Migrate a .NET 9 project or solution to .NET 10 and resolve all breaking changes. USE FOR: upgrading TargetFramework from net9.0 to net10.0, fixing build errors after updating the .NET 10 SDK, resolving source and behavioral changes in .NET 10 \u002F C# 14 \u002F ASP.NET Core 10 \u002F EF Core 10, updating Dockerfiles for Debian-to-Ubuntu base images, resolving obsoletion warnings (SYSLIB0058-SYSLIB0062), adapting to SDK\u002FNuGet changes (NU1510, PrunePackageReference), migrating System.Linq.Async to built-in AsyncEnumerable, fixing OpenApi v2 API changes, cryptography renames, and C# 14 compiler changes (field keyword, extension keyword, span overloads). DO NOT USE FOR: .NET Framework migrations, upgrading from .NET 8 or earlier (use migrate-dotnet8-to-dotnet9 first), greenfield .NET 10 projects, or cosmetic modernization. LOADS REFERENCES: csharp-compiler, core-libraries, sdk-msbuild (always); aspnet-core, efcore, cryptography, extensions-hosting, serialization-networking, winforms-wpf, containers-interop (selective).","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet-upgrade\u002Fskills\u002Fmigrate-dotnet9-to-dotnet10\u002FSKILL.md",[],[366,388,389,217,390,391,116,92,353,368,311,392,327,393,394,395,317,122,285,396,264,397,398],"migrate dotnet9 to dotnet10","images","modernization","Ubuntu","api changes","cryptography","networking","behavioral","core","linq","source",{"skillNo":400,"name":401,"nameZh":18,"description":402,"descriptionZh":18,"repositoryFullName":28,"ownerLogin":5,"ownerAvatarUrl":7,"ownerAccountNo":4,"ownerDisplayName":6,"repositoryNo":29,"starsCount":14,"licenseSpdxId":30,"licenseFileUrl":18,"sourceHtmlUrl":403,"categories":404,"keywords":405,"publishedAt":60},"01M6DZQG7A7N2YA255FB77KX21","migrate-dotnet8-to-dotnet9","Migrate a .NET 8 project to .NET 9 and resolve all breaking changes. USE FOR: upgrading TargetFramework from net8.0 to net9.0, fixing build errors after updating the .NET 9 SDK, resolving behavioral changes in .NET 9 \u002F C# 13 \u002F ASP.NET Core 9 \u002F EF Core 9, replacing BinaryFormatter (now always throws), resolving SYSLIB0054-SYSLIB0057, adapting to params span overload resolution, fixing C# 13 compiler changes, updating HttpClientFactory for SocketsHttpHandler, and resolving EF Core 9 migration\u002FCosmos DB changes. DO NOT USE FOR: .NET Framework migrations, upgrading from .NET 7 or earlier, greenfield .NET 9 projects, or cosmetic modernization unrelated to the upgrade.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet-upgrade\u002Fskills\u002Fmigrate-dotnet8-to-dotnet9\u002FSKILL.md",[],[366,406,122,217,390,396,407,116,408,409,249,42,410,411,94,311,412,413,215,347,59,264,414,261],"migrate dotnet8 to dotnet9","db","cosmos","now","resolution","compiler","migrations","build","C#",18]