[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DWM07BCEX3H2X62Z2X952H":3,"skill-same:01M6DWM07BCEX3H2X62Z2X952H":85},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":66,"ownerHtmlUrl":67,"ownerBlogUrl":68,"ownerDescription":69,"updatedAt":70,"install":71,"resources":84},"01M6DWM07BCEX3H2X62Z2X952H","programming-csharp",null,"Modern C# and .NET practices for AI coding agents: nullable contracts, async ownership, data access, failure handling. Use when writing .NET code.","Muvon\u002Foctomind-tap","Muvon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25336907?v=4","01M6DWA4KTRX4J73CW5CECKAD0","01M6DWA4QSWFGYE6WDMAMFF1WE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fprogramming-csharp\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000036","内容创作者",[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"programming","programming csharp","csharp","features","code","when","writing","csproj","framework","developer","coding","contracts","data","directory","nullable","api","dotnet","access","project","ai coding agents","2026-11-10 10:12:30",false,"---\nname: programming-csharp\ntitle: \"C# and .NET Development Best Practices\"\ndescription: \"Modern C# and .NET practices for AI coding agents: nullable contracts, async ownership, data access, failure handling. Use when writing .NET code.\"\nlicense: Apache-2.0\ncompatibility: \"Requires the project's modern .NET SDK and target framework; newer language\u002FAPI features are version-gated.\"\ndomains: developer\nrules:\n  - file(*.sln)\n  - file(*.csproj)\n  - file(global.json)\n  - file(Directory.Build.props)\n  - content(c#)\n  - content(csharp)\n  - content(dotnet)\n---\n\n## Overview\n\nUse for modern .NET implementation and review, including libraries and services. Write explicit contracts with the existing framework and project conventions; avoid adding architecture or replacing working tools as incidental cleanup.\n\n## Mental model\n\nThe compiler checks declared contracts, while runtime boundaries still validate real input. Keep values, service lifetimes, asynchronous work, and database units of work explicit; concise syntax is useful when it makes these easier to inspect.\n\n## Version gate\n\nAs of 2026-10: .NET 10 (LTS, supported to November 2028) and C# 14 are the current stable pair; .NET 11 is in prerelease for a November 2026 GA. .NET 8 and .NET 9 both reach end of support in November 2026, so plan runtime upgrades for services still targeting them. Check `global.json`, target frameworks, `LangVersion`, nullable settings, and CI SDKs before selecting APIs. Don't set `latest` or `preview` to make an example compile; the target framework's default language version normally supplies the supported pairing.\n\nC# 12 supplies primary constructors and collection expressions. C# 14 adds extension members, field-backed property accessors using `field`, and null-conditional assignment. Use them where ownership remains clear: a primary-constructor parameter is not automatically a property, and `obj?.Property = value` deliberately skips an update when null rather than validating a required receiver.\n\n## Values and public contracts\n\n- Enable nullable analysis for new code; migrate existing projects within scope. Nullable annotations and `!` have no runtime validation effect. Check deserialized data and public inputs; suppress warnings only for an invariant the compiler cannot express.\n- Use records for value semantics and ordinary classes for identity. `init`, `readonly`, and record `with` do not freeze referenced objects; copy or use immutable collections when ownership requires isolation. EF entities usually need reference identity.\n- A `required` member requires initialization by callers; it does not prove a non-null or domain-valid value. Validate invariants in constructors\u002Ffactories or the established validation boundary.\n- Use pattern matching for clear closed decisions. An enum can contain unnamed numeric values; reject unknown external values rather than assuming switch coverage proves input validity.\n- Follow `.editorconfig` for braces and namespace style. Use LINQ for readable transformations; account for deferred execution and repeated enumeration. Don't replace a clear loop with a chain of side effects.\n- Keep generic abstractions, interfaces, and result wrappers proportional to the boundary. Use existing dependency injection and error conventions consistently.\n\n## Async and resource ownership\n\n- Await asynchronous I\u002FO through the call chain. Avoid `.Result`, `.Wait()`, and sync-over-async wrappers; don't use `Task.Run` to wrap naturally asynchronous I\u002FO.\n- Pass cancellation tokens to operations that can cancel, including HTTP, database calls, and async enumeration. Treat caller cancellation separately from an operational failure or timeout.\n- `Task.WhenAll` is suitable for independent bounded work; it does not automatically cancel siblings. Give fan-out a concurrency limit and define partial-failure handling.\n- Own background work with the application's background-service\u002Flifecycle mechanism. `async void` is for required event-handler signatures; observe other work through Task-returning APIs.\n- Use `ConfigureAwait(false)` where library code must avoid a caller's synchronization context; keep context when UI code needs it. It does not move work to a dedicated background thread.\n- Dispose owned resources with `using`\u002F`await using`. Don't dispose injected resources owned by the container. Reuse HTTP connections via a long-lived HttpClient with appropriate `PooledConnectionLifetime` or factory-managed clients; per-request client construction is not the default.\n\n## Services, persistence, and failures\n\n- Match DI lifetime to ownership. Don't capture scoped services in singletons; create a scope for each background unit of work. Validate required configuration early instead of silently substituting defaults.\n- DbContext is a unit of work and is not thread-safe. Await each operation or use separate contexts for actual parallel operations. Keep transactions and optimistic-concurrency behavior explicit.\n- For EF reads, project only needed columns and use no-tracking when identity\u002Fchange tracking is unnecessary. Inspect SQL for N+1 queries and pagination; an in-memory provider does not verify production SQL semantics.\n- Catch exceptions where recovery or translation is meaningful; preserve the stack with `throw;`. Log structured context once at the responsible boundary. Don't convert canceled, unauthorized, or failed operations into empty successful responses.\n- Retry only bounded transient failures when the operation is safe to repeat. Test failure and cancellation paths with the existing test framework; don't add a new assertion library by habit.\n\n## Example\n\nAn injected, reused HttpClient keeps ownership outside this operation while failures remain visible:\n\n```csharp\nusing System.Net.Http.Json;\n\npublic sealed record Profile(string Name);\n\npublic static class Profiles\n{\n    public static async Task\u003CProfile> LoadAsync(\n        HttpClient client, Uri uri, CancellationToken cancellationToken)\n    {\n        var profile = await client.GetFromJsonAsync\u003CProfile>(\n            uri, cancellationToken).ConfigureAwait(false);\n        if (profile is null || string.IsNullOrWhiteSpace(profile.Name))\n            throw new InvalidDataException(\"Profile requires a name.\");\n        return profile;\n    }\n}\n```\n\nThe .NET SDK's implicit usings are assumed. HTTP, JSON, and cancellation failures propagate; validation rejects a missing or invalid payload.\n\n## Checklist\n\n- [ ] Syntax and APIs fit SDK, language version, and target frameworks.\n- [ ] Nullability, required members, and external validation agree.\n- [ ] Async operations, cancellation, disposal, and DI lifetimes have owners.\n- [ ] Database concurrency and failure semantics remain explicit.\n- [ ] Relevant checks were run when authorized; omissions are reported.\n\n## References\n\n- [.NET 10](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcore\u002Fwhats-new\u002Fdotnet-10\u002Foverview) and [C# 14](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcsharp\u002Fwhats-new\u002Fcsharp-14)\n- [Nullable references](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcsharp\u002Fnullable-references) and [record semantics](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcsharp\u002Flanguage-reference\u002Fbuiltin-types\u002Frecord)\n- [HttpClient lifetimes](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Ffundamentals\u002Fnetworking\u002Fhttp\u002Fhttpclient-guidelines)\n- [DbContext ownership](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fef\u002Fcore\u002Fdbcontext-configuration\u002F)\n","## Overview\n\nUse for modern .NET implementation and review, including libraries and services. Write explicit contracts with the existing framework and project conventions; avoid adding architecture or replacing working tools as incidental cleanup.\n\n## Mental model\n\nThe compiler checks declared contracts, while runtime boundaries still validate real input. Keep values, service lifetimes, asynchronous work, and database units of work explicit; concise syntax is useful when it makes these easier to inspect.\n\n## Version gate\n\nAs of 2026-10: .NET 10 (LTS, supported to November 2028) and C# 14 are the current stable pair; .NET 11 is in prerelease for a November 2026 GA. .NET 8 and .NET 9 both reach end of support in November 2026, so plan runtime upgrades for services still targeting them. Check `global.json`, target frameworks, `LangVersion`, nullable settings, and CI SDKs before selecting APIs. Don't set `latest` or `preview` to make an example compile; the target framework's default language version normally supplies the supported pairing.\n\nC# 12 supplies primary constructors and collection expressions. C# 14 adds extension members, field-backed property accessors using `field`, and null-conditional assignment. Use them where ownership remains clear: a primary-constructor parameter is not automatically a property, and `obj?.Property = value` deliberately skips an update when null rather than validating a required receiver.\n\n## Values and public contracts\n\n- Enable nullable analysis for new code; migrate existing projects within scope. Nullable annotations and `!` have no runtime validation effect. Check deserialized data and public inputs; suppress warnings only for an invariant the compiler cannot express.\n- Use records for value semantics and ordinary classes for identity. `init`, `readonly`, and record `with` do not freeze referenced objects; copy or use immutable collections when ownership requires isolation. EF entities usually need reference identity.\n- A `required` member requires initialization by callers; it does not prove a non-null or domain-valid value. Validate invariants in constructors\u002Ffactories or the established validation boundary.\n- Use pattern matching for clear closed decisions. An enum can contain unnamed numeric values; reject unknown external values rather than assuming switch coverage proves input validity.\n- Follow `.editorconfig` for braces and namespace style. Use LINQ for readable transformations; account for deferred execution and repeated enumeration. Don't replace a clear loop with a chain of side effects.\n- Keep generic abstractions, interfaces, and result wrappers proportional to the boundary. Use existing dependency injection and error conventions consistently.\n\n## Async and resource ownership\n\n- Await asynchronous I\u002FO through the call chain. Avoid `.Result`, `.Wait()`, and sync-over-async wrappers; don't use `Task.Run` to wrap naturally asynchronous I\u002FO.\n- Pass cancellation tokens to operations that can cancel, including HTTP, database calls, and async enumeration. Treat caller cancellation separately from an operational failure or timeout.\n- `Task.WhenAll` is suitable for independent bounded work; it does not automatically cancel siblings. Give fan-out a concurrency limit and define partial-failure handling.\n- Own background work with the application's background-service\u002Flifecycle mechanism. `async void` is for required event-handler signatures; observe other work through Task-returning APIs.\n- Use `ConfigureAwait(false)` where library code must avoid a caller's synchronization context; keep context when UI code needs it. It does not move work to a dedicated background thread.\n- Dispose owned resources with `using`\u002F`await using`. Don't dispose injected resources owned by the container. Reuse HTTP connections via a long-lived HttpClient with appropriate `PooledConnectionLifetime` or factory-managed clients; per-request client construction is not the default.\n\n## Services, persistence, and failures\n\n- Match DI lifetime to ownership. Don't capture scoped services in singletons; create a scope for each background unit of work. Validate required configuration early instead of silently substituting defaults.\n- DbContext is a unit of work and is not thread-safe. Await each operation or use separate contexts for actual parallel operations. Keep transactions and optimistic-concurrency behavior explicit.\n- For EF reads, project only needed columns and use no-tracking when identity\u002Fchange tracking is unnecessary. Inspect SQL for N+1 queries and pagination; an in-memory provider does not verify production SQL semantics.\n- Catch exceptions where recovery or translation is meaningful; preserve the stack with `throw;`. Log structured context once at the responsible boundary. Don't convert canceled, unauthorized, or failed operations into empty successful responses.\n- Retry only bounded transient failures when the operation is safe to repeat. Test failure and cancellation paths with the existing test framework; don't add a new assertion library by habit.\n\n## Example\n\nAn injected, reused HttpClient keeps ownership outside this operation while failures remain visible:\n\n```csharp\nusing System.Net.Http.Json;\n\npublic sealed record Profile(string Name);\n\npublic static class Profiles\n{\n    public static async Task\u003CProfile> LoadAsync(\n        HttpClient client, Uri uri, CancellationToken cancellationToken)\n    {\n        var profile = await client.GetFromJsonAsync\u003CProfile>(\n            uri, cancellationToken).ConfigureAwait(false);\n        if (profile is null || string.IsNullOrWhiteSpace(profile.Name))\n            throw new InvalidDataException(\"Profile requires a name.\");\n        return profile;\n    }\n}\n```\n\nThe .NET SDK's implicit usings are assumed. HTTP, JSON, and cancellation failures propagate; validation rejects a missing or invalid payload.\n\n## Checklist\n\n- [ ] Syntax and APIs fit SDK, language version, and target frameworks.\n- [ ] Nullability, required members, and external validation agree.\n- [ ] Async operations, cancellation, disposal, and DI lifetimes have owners.\n- [ ] Database concurrency and failure semantics remain explicit.\n- [ ] Relevant checks were run when authorized; omissions are reported.\n\n## References\n\n- [.NET 10](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcore\u002Fwhats-new\u002Fdotnet-10\u002Foverview) and [C# 14](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcsharp\u002Fwhats-new\u002Fcsharp-14)\n- [Nullable references](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcsharp\u002Fnullable-references) and [record semantics](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcsharp\u002Flanguage-reference\u002Fbuiltin-types\u002Frecord)\n- [HttpClient lifetimes](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdotnet\u002Ffundamentals\u002Fnetworking\u002Fhttp\u002Fhttpclient-guidelines)\n- [DbContext ownership](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fef\u002Fcore\u002Fdbcontext-configuration\u002F)\n",{"name":5,"rules":51,"title":59,"domains":35,"license":14,"description":7,"compatibility":60},[52,53,54,55,56,57,58],"file(*.sln)","file(*.csproj)","file(global.json)","file(Directory.Build.props)","content(c#)","content(csharp)","content(dotnet)","C# and .NET Development Best Practices","Requires the project's modern .NET SDK and target framework; newer language\u002FAPI features are version-gated.","master","e9e4a19559669b1627b1ac5ed3f77b8e36cfad95","skills\u002Fprogramming-csharp",0,"https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap","https:\u002F\u002Foctomind.run\u002Ftap\u002F","https:\u002F\u002Fgithub.com\u002FMuvon","https:\u002F\u002Fmuvon.io","We bring ideas to life","2026-11-10 20:30:54",{"source":8,"skillName":5,"commands":72,"prompt":82,"zipAvailable":83},[73,76,79],{"tool":74,"command":75},"npx","npx skills add Muvon\u002Foctomind-tap --skill programming-csharp",{"tool":77,"command":78},"bunx","bunx skills add Muvon\u002Foctomind-tap --skill programming-csharp",{"tool":80,"command":81},"pnpm","pnpm dlx skills add Muvon\u002Foctomind-tap --skill programming-csharp","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fprogramming-csharp\u002FSKILL.md",true,[],[86,121,148,167,191,216],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":101,"publishedAt":46},"01M70SFC5CTHRKA9B97N1ARVZ2","seo-content-refresh","Finds decaying pages, picks update, merge, redirect or remove, and briefs each refresh. Use to prioritize existing content and judge whether it helped.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fseo-content-refresh\u002FSKILL.md",[92,97,100],{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":98,"categoryName":99,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000035","市场营销",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[102,103,104,105,106,107,108,109,110,111,112,113,43,114,115,116,117,118,119,120],"seo content refresh","seo","seo content","content refresh","refresh","content","posts","remove","web search","performance","search","traffic","drop","websearch","revamp","merge","diagnosis","update","decay",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":129,"publishedAt":46},"01M70SBWQCHGH7HGS51Y0GTKKW","marketing-review-program","Plans how to ask real customers for honest public reviews: site choice, invitation copy, incentive and disclosure rules. Use to start a review program.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketing-review-program\u002FSKILL.md",[127,128],{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},{"categoryNo":98,"categoryName":99,"taxonomyType":20,"taxonomyTypeDesc":21},[130,131,132,133,134,135,110,112,136,137,138,139,140,141,142,143,144,145,146,147],"program","review","marketing review program","marketing","reviews","get","campaign","choice","how to","only","generated","ask","plan","product","generate","customer","how","request",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":46},"01M70SBB65Z2FC71Q7DEAXGJBG","geo-source-actions","Turns AI citation findings into ranked per-source actions for Reddit threads, listicles, review sites and videos. Records only. Use after a GEO audit.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fgeo-source-actions\u002FSKILL.md",[],[155,156,157,158,159,135,110,112,160,161,139,115,131,162,163,164,143,165,166,38],"actions","geo source actions","source","geo","sources","copilot","domains","llms","threads","youtube","audit","action",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":176,"publishedAt":46},"01M70S99D3Y6GF097GTXWBXHPW","commerce-ai-readiness","Audits product feeds, markup and live pages for AI shopping assistants, then lists exact fixes. Use to make a store catalog readable to AI shoppers.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fcommerce-ai-readiness\u002FSKILL.md",[173],{"categoryNo":174,"categoryName":175,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000031","产品经理",[177,178,179,180,181,182,183,184,185,186,112,187,160,139,43,188,189,143,165,190],"ai readiness","commerce ai readiness","commerce","readiness","feeds","ready","show","shopping","discover","checkout","up","ecommerce","documentation","recommend",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":200,"publishedAt":46},"01M6DWSX45J42KTK6XASKJRGPA","tap-model-training","Train, evaluate and publish the octomind-embed model behind capability auto-activation. Use when capability triggers or skill semantic() phrases change.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-model-training\u002FSKILL.md",[197],{"categoryNo":198,"categoryName":199,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000023","Skill与智能体开发",[201,202,203,204,205,187,206,207,208,209,210,41,211,212,213,146,214,215,31,119],"model","training","tap","tap model training","scope","eval","uv","auto","dataset","activate","capabilities","publish","change","embedding","re",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":223,"publishedAt":46},"01M6DWSQB7NSW53Z86XM81R1W1","tap-deps-authoring","Write dep scripts for the octomind-tap registry: header comments, platform.sh, mcp vs dep types, npx\u002Fuvx pattern. Use when editing deps\u002F\u003Corg>\u002F\u003Ctool>.sh.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-deps-authoring\u002FSKILL.md",[222],{"categoryNo":198,"categoryName":199,"taxonomyType":95,"taxonomyTypeDesc":96},[224,203,225,226,227,228,229,230,231,232,233,234,235,236,237,238,31,239,240,241],"deps","tap deps authoring","authoring","DEP","MCP","run","scripts","pattern","install","registry","platform","repo","editing","tool","types","write","org","for"]