[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DYPDXYB5A15KRMYBPMP2JC":3,"skill-same:01M6DYPDXYB5A15KRMYBPMP2JC":358},{"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":23,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":64,"ownerDescription":65,"updatedAt":66,"install":67,"resources":80},"01M6DYPDXYB5A15KRMYBPMP2JC","microsoft-extensions-ai",null,"Build provider-agnostic .NET AI integrations with `Microsoft.Extensions.AI`, `IChatClient`, embeddings, middleware, structured output, vector search, and evaluation. USE FOR: building or reviewing .NET code that uses Microsoft.Extensions.AI, Microsoft.Extensions.AI.Abstractions, IChatClient, IEmbeddingGenerator, ChatOptions, or AIFunction;. 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.","managedcode\u002Fdotnet-skills","managedcode","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F78253589?v=4","01M6DYDJR3EG8KB5G4PC65XCTT","Managed Code","01M6DYDJX0ZT432N04NYJW89DN",515,"MIT","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"microsoft","extensions","microsoft extensions","microsoft extensions ai","when","orchestration","inspect","relevant","middleware","embedding","full","commands","files","agent orchestration","unrelated","context","edit","model","Composition","Evaluation","repository","embeddings","vector","search","code","run","tasks","2026-11-10 10:12:30",false,"---\nname: microsoft-extensions-ai\ndescription: \"Build provider-agnostic .NET AI integrations with `Microsoft.Extensions.AI`, `IChatClient`, embeddings, middleware, structured output, vector search, and evaluation. USE FOR: building or reviewing .NET code that uses Microsoft.Extensions.AI, Microsoft.Extensions.AI.Abstractions, IChatClient, IEmbeddingGenerator, ChatOptions, or AIFunction;. 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.\"\ncompatibility: \"Requires `Microsoft.Extensions.AI` or a .NET AI application that needs model, embedding, tool-calling, or evaluation composition without full agent orchestration.\"\n---\n\n# Microsoft.Extensions.AI\n\n## Trigger On\n\n- building or reviewing `.NET` code that uses `Microsoft.Extensions.AI`, `Microsoft.Extensions.AI.Abstractions`, `IChatClient`, `IEmbeddingGenerator`, `ChatOptions`, or `AIFunction`\n- adding `IImageGenerator`, local-model chat via Ollama, AI app templates, or the `.NET AI` quickstarts for assistants and MCP\n- choosing between low-level AI abstractions, provider SDKs, vector-search composition, evaluation libraries, and a fuller agent framework\n- adding streaming chat, structured output, embeddings, tool calling, telemetry, caching, or DI-based AI middleware\n- wiring `Microsoft.Extensions.VectorData`, `Microsoft.Extensions.DataIngestion`, MCP tooling, or evaluation packages around a provider-agnostic AI app\n\n## Workflow\n\n1. Classify the request first: plain model access, tool calling, embeddings\u002Fvector search, evaluation, image generation, local-model prototyping, MCP bootstrap, or true agent orchestration.\n2. Default to `Microsoft.Extensions.AI` for application and service code that needs provider-agnostic chat, embeddings, middleware, structured output, and testability.\n3. Reference `Microsoft.Extensions.AI.Abstractions` directly only when authoring provider libraries or lower-level reusable integration packages.\n4. Model `IChatClient` and `IEmbeddingGenerator` composition explicitly in DI. Keep options, caching, telemetry, logging, and tool invocation inspectable in the pipeline.\n5. Treat chat state deliberately. For stateless providers, resend history. For stateful providers, propagate `ConversationId` rather than assuming all providers behave the same way.\n6. Use `Microsoft.Extensions.VectorData` and `Microsoft.Extensions.DataIngestion` as adjacent building blocks for RAG instead of hand-rolling store abstractions prematurely. Treat the embedding model, vector dimensions, and collection schema as one owned contract: changing any of them means reindexing rather than reusing old vector data. Keep vector API source-breaking notes version-aware; in the 10.5+ line, named-argument usage of `VectorStoreVectorAttribute` uses `dimensions:`.\n7. Treat the `.NET AI` quickstarts as bootstrap paths, not finished architecture. They now cover minimal assistants, MCP client\u002Fserver flows, local models, app templates, and image generation. Start there for a vertical slice, then harden the DI, telemetry, and evaluation story here.\n8. Escalate to `microsoft-agent-framework` when the requirement becomes agent threads, multi-agent orchestration, higher-order workflows, durable execution, or remote agent hosting.\n9. Validate with real providers, realistic prompts, and evaluation gates so the abstraction layer actually buys portability and reliability.\n\n## Architecture\n\n```mermaid\nflowchart LR\n  A[\"Task\"] --> B{\"Need agent threads, multi-agent orchestration, or remote agent hosting?\"}\n  B -->|Yes| C[\"Use Microsoft Agent Framework on top of `Microsoft.Extensions.AI.Abstractions`\"]\n  B -->|No| D{\"Need provider-agnostic chat, embeddings, tools, typed output, or evaluation?\"}\n  D -->|Yes| E[\"Use `Microsoft.Extensions.AI`\"]\n  E --> F[\"Compose `IChatClient` \u002F `IEmbeddingGenerator` in DI\"]\n  F --> G[\"Add caching, telemetry, tools, vector data, and evaluation deliberately\"]\n  D -->|No| H[\"Use plain provider SDKs or deterministic .NET code\"]\n```\n\n## Core Knowledge\n\n- `Microsoft.Extensions.AI.Abstractions` contains the core exchange contracts such as `IChatClient`, `IEmbeddingGenerator\u003CTInput, TEmbedding>`, message\u002Fcontent types, and tool abstractions.\n- `Microsoft.Extensions.AI` adds the higher-level application surface: middleware builders, automatic function invocation, caching, logging, and OpenTelemetry integration.\n- Most apps and services should reference `Microsoft.Extensions.AI`; provider and connector libraries usually reference only the abstractions package.\n- `IChatClient` centers on `GetResponseAsync` and `GetStreamingResponseAsync`. The returned `ChatResponse` or `ChatResponseUpdate` objects carry messages, tool-related content, metadata, and optional conversation identifiers.\n- Local-model quickstarts still route through the same `IChatClient` abstraction. Ollama-backed clients are useful for low-cost prototyping, offline dev loops, and portability testing, but you still own chat history replay, latency, and model-quality tradeoffs.\n- `ChatOptions` is the normal control plane for model ID, temperature, tools, `AdditionalProperties`, and provider-specific raw options.\n- Tool calling is modeled with `AIFunction`, `AIFunctionFactory`, and `FunctionInvokingChatClient`. Ambient data can flow through closures, `AdditionalProperties`, `AIFunctionArguments.Context`, or DI.\n- Tool calling can target local .NET methods, external APIs, or MCP-backed tools. The model requests calls; your app still owns execution, validation, and side-effect boundaries.\n- Tool definitions consume request tokens. Keep tool descriptions short and register only the tools relevant for the current conversation or workflow.\n- `FunctionInvokingChatClient` can handle the tool-invocation loop and parallel tool-call responses automatically when the provider\u002Fmodel supports that shape.\n- `IEmbeddingGenerator` is the standard abstraction for semantic search, vector indexing, similarity, and cache-key generation. Pair it with `Microsoft.Extensions.VectorData.Abstractions` for vector store operations, and keep the embedding model, collection dimensions, and chunking\u002Fversioning story aligned so reindexing stays explicit.\n- `IImageGenerator` is the experimental MEAI image surface. Treat `MEAI001` as an intentional opt-in, keep image generation separate from chat concerns, and compose logging\u002Fcaching\u002Fhosting middleware around it the same way you would for `IChatClient`.\n- `Microsoft.Extensions.DataIngestion` gives you the document-side RAG pipeline: `IngestionDocument`, document readers like MarkItDown\u002FMarkdig, document processors such as `ImageAlternativeTextEnricher`, chunkers, chunk processors, `VectorStoreWriter\u003CT>`, and `IngestionPipeline\u003CT>` for end-to-end composition.\n- `IngestionPipeline\u003CT>.ProcessAsync` is partial-success oriented. Handle `IAsyncEnumerable\u003CIngestionResult>` deliberately instead of assuming one failed document should automatically crash the whole ingestion run.\n- `Microsoft.Extensions.AI.Evaluation.*` gives you quality, NLP, safety, caching, and reporting layers for regression checks and CI gates.\n- `dotnet\u002Fextensions` `v10.9.0` adds experimental `RoutingChatClient`\u002F`SemanticRoutingChatClient` and `FailoverChatClient`\u002F`OrderedFailoverChatClient` pipelines. Keep routing policy, fallback order, retry ownership, cost, and telemetry explicit; do not compose nested retry and failover layers without bounded attempts.\n- Experimental failover switches clients only when the failed attempt has produced no output. Once streaming output has been emitted, surface the failure instead of replaying the response through another model and duplicating visible text or tool work. Test both failure-before-first-update and failure-after-first-update paths; keep fallback attempts bounded.\n- The same release redesigns AI evaluation reports and refreshes their viewer. Treat report shape as a versioned CI artifact, and revalidate downstream parsers or publishing jobs before upgrading evaluation packages.\n- The prior `v10.8.4` templates remove GitHub Models and require an explicit `--provider azureopenai`, `--provider ollama`, or `--provider openai`; update scaffolding scripts and provider-authentication tests instead of relying on the old default.\n- The preceding `v10.8.0` release moved `Microsoft.Extensions.AI.OpenAI` to OpenAI 2.12.0, added speech-format auto-detection, and fixed `ImageGeneratingChatClient` content ordering. Keep multimodal and speech fixtures alongside the new approval\u002Fstate tests.\n- `AIFunctionNameAttribute`, `AIParameterNameAttribute`, and `ToolApprovalRequestContent.RequiresConfirmation` are new experimental `MEAI001` APIs. Opt in deliberately and keep approval decisions at the side-effect boundary.\n- The August 2026 local official-docs snapshot mirrors the current 64-page `.NET AI` markdown tree, including the renamed tool-calling concept, MEDI\u002FMEVD concepts, quickstart include fragments, and the dedicated vector-store section. Use `mcp` when the protocol itself becomes the design problem; stay here when you still mostly need app composition around `IChatClient` and friends.\n- The current `.NET AI` ecosystem guidance separates direct MEAI composition, MCP interoperability, a prebuilt Copilot SDK harness, and Microsoft Agent Framework orchestration. Use `Microsoft Agent Framework` when you need autonomous orchestration, threads, workflows, hosting, or multi-agent collaboration instead of just model composition.\n\n## Decision Cheatsheet\n\n| If you need | Default choice | Why |\n|---|---|---|\n| App-level provider abstraction with middleware | `Microsoft.Extensions.AI` | Highest leverage for apps and services |\n| A reusable provider or connector library | `Microsoft.Extensions.AI.Abstractions` | Keeps your package at the contract layer |\n| Typed chat or UI streaming | `IChatClient` with `GetResponseAsync` \u002F `GetStreamingResponseAsync` | Common request\u002Fresponse shape across providers |\n| Tool calling from .NET methods | `AIFunction` + `FunctionInvokingChatClient` | Native function metadata and invocation pipeline |\n| Typed structured output | `IChatClient.GetResponseAsync\u003CT>` extensions | Keeps schema intent in code instead of prompt parsing |\n| Vector search or RAG | `IEmbeddingGenerator` + `Microsoft.Extensions.VectorData.Abstractions` | Standardizes embeddings and store access |\n| Local model prototyping | `IChatClient` with an Ollama-backed implementation | Keeps the app on the MEAI abstractions while you validate prompts or UX locally |\n| Text-to-image or image-generation middleware | `IImageGenerator` | Use the dedicated image abstraction instead of overloading chat APIs |\n| Evaluation and regression gates | `Microsoft.Extensions.AI.Evaluation.*` | Relevance, safety, task adherence, caching, reports |\n| Agent threads or multi-step autonomous orchestration | `microsoft-agent-framework` | This is beyond plain provider abstraction |\n\n## Common Failure Modes\n\n- Referencing only `Microsoft.Extensions.AI.Abstractions` in an app and then rebuilding middleware, telemetry, or function invocation by hand.\n- Treating `IChatClient` as if it already gives you durable agent threads, orchestration, or hosted-agent semantics.\n- Mixing provider-specific assistants APIs with `IChatClient` as if they were the same runtime contract.\n- Forgetting to distinguish stateless history replay from stateful `ConversationId` flows.\n- Hiding important chat behavior in singleton service fields instead of explicit message history, options, or persistent storage.\n- Adding tool calling without validating parameter binding, invalid input behavior, side effects, or DI-scoped dependencies.\n- Building RAG without stable chunking, embedding-model\u002Fversion tracking, or vector dimension discipline.\n- Shipping AI features without evaluation baselines, safety checks, or telemetry for prompt\u002Fmodel drift.\n\n## Deliver\n\n- a justified package and abstraction choice: `Abstractions` only vs full `Microsoft.Extensions.AI`\n- a concrete `IChatClient` \u002F `IEmbeddingGenerator` composition strategy\n- explicit tool-calling, options, state, caching, logging, and telemetry decisions\n- vector-search, evaluation, or MCP integration guidance when the scenario needs it\n- a clear escalation path to Agent Framework when the problem exceeds provider abstraction\n\n## Validate\n\n- the abstraction layer solves a real portability, testability, or composition problem\n- provider registration and middleware order stay explicit in DI\n- chat state management matches whether the provider is stateless or stateful\n- structured output, tool invocation, and embedding flows are typed and observable\n- vector store, embedding model, and chunking strategy are consistent\n- evaluation or safety gates exist for important prompts and agent-like behaviors\n- agentic requirements are not being under-modeled as a simple `IChatClient` integration\n\nWhen exact wording, edge-case API behavior, or less-common examples matter, check the local official docs snapshot before relying on summaries.\n\n## References\n\n- [official-docs-index.md](references\u002Fofficial-docs-index.md) - Slim local snapshot map with direct links to every mirrored `.NET AI` docs page plus API-reference pointers\n- [patterns.md](references\u002Fpatterns.md) - Package choice, `IChatClient`, embeddings, DI pipelines, tool-calling, and Agent Framework escalation guidance\n- [examples.md](references\u002Fexamples.md) - Quickstart-to-task map covering chat, structured output, function calling, vector search, local models, MCP, and assistants\n- [evaluation.md](references\u002Fevaluation.md) - Quality, NLP, safety, caching, reporting, and CI-oriented evaluation guidance\n","# Microsoft.Extensions.AI\n\n## Trigger On\n\n- building or reviewing `.NET` code that uses `Microsoft.Extensions.AI`, `Microsoft.Extensions.AI.Abstractions`, `IChatClient`, `IEmbeddingGenerator`, `ChatOptions`, or `AIFunction`\n- adding `IImageGenerator`, local-model chat via Ollama, AI app templates, or the `.NET AI` quickstarts for assistants and MCP\n- choosing between low-level AI abstractions, provider SDKs, vector-search composition, evaluation libraries, and a fuller agent framework\n- adding streaming chat, structured output, embeddings, tool calling, telemetry, caching, or DI-based AI middleware\n- wiring `Microsoft.Extensions.VectorData`, `Microsoft.Extensions.DataIngestion`, MCP tooling, or evaluation packages around a provider-agnostic AI app\n\n## Workflow\n\n1. Classify the request first: plain model access, tool calling, embeddings\u002Fvector search, evaluation, image generation, local-model prototyping, MCP bootstrap, or true agent orchestration.\n2. Default to `Microsoft.Extensions.AI` for application and service code that needs provider-agnostic chat, embeddings, middleware, structured output, and testability.\n3. Reference `Microsoft.Extensions.AI.Abstractions` directly only when authoring provider libraries or lower-level reusable integration packages.\n4. Model `IChatClient` and `IEmbeddingGenerator` composition explicitly in DI. Keep options, caching, telemetry, logging, and tool invocation inspectable in the pipeline.\n5. Treat chat state deliberately. For stateless providers, resend history. For stateful providers, propagate `ConversationId` rather than assuming all providers behave the same way.\n6. Use `Microsoft.Extensions.VectorData` and `Microsoft.Extensions.DataIngestion` as adjacent building blocks for RAG instead of hand-rolling store abstractions prematurely. Treat the embedding model, vector dimensions, and collection schema as one owned contract: changing any of them means reindexing rather than reusing old vector data. Keep vector API source-breaking notes version-aware; in the 10.5+ line, named-argument usage of `VectorStoreVectorAttribute` uses `dimensions:`.\n7. Treat the `.NET AI` quickstarts as bootstrap paths, not finished architecture. They now cover minimal assistants, MCP client\u002Fserver flows, local models, app templates, and image generation. Start there for a vertical slice, then harden the DI, telemetry, and evaluation story here.\n8. Escalate to `microsoft-agent-framework` when the requirement becomes agent threads, multi-agent orchestration, higher-order workflows, durable execution, or remote agent hosting.\n9. Validate with real providers, realistic prompts, and evaluation gates so the abstraction layer actually buys portability and reliability.\n\n## Architecture\n\n```mermaid\nflowchart LR\n  A[\"Task\"] --> B{\"Need agent threads, multi-agent orchestration, or remote agent hosting?\"}\n  B -->|Yes| C[\"Use Microsoft Agent Framework on top of `Microsoft.Extensions.AI.Abstractions`\"]\n  B -->|No| D{\"Need provider-agnostic chat, embeddings, tools, typed output, or evaluation?\"}\n  D -->|Yes| E[\"Use `Microsoft.Extensions.AI`\"]\n  E --> F[\"Compose `IChatClient` \u002F `IEmbeddingGenerator` in DI\"]\n  F --> G[\"Add caching, telemetry, tools, vector data, and evaluation deliberately\"]\n  D -->|No| H[\"Use plain provider SDKs or deterministic .NET code\"]\n```\n\n## Core Knowledge\n\n- `Microsoft.Extensions.AI.Abstractions` contains the core exchange contracts such as `IChatClient`, `IEmbeddingGenerator\u003CTInput, TEmbedding>`, message\u002Fcontent types, and tool abstractions.\n- `Microsoft.Extensions.AI` adds the higher-level application surface: middleware builders, automatic function invocation, caching, logging, and OpenTelemetry integration.\n- Most apps and services should reference `Microsoft.Extensions.AI`; provider and connector libraries usually reference only the abstractions package.\n- `IChatClient` centers on `GetResponseAsync` and `GetStreamingResponseAsync`. The returned `ChatResponse` or `ChatResponseUpdate` objects carry messages, tool-related content, metadata, and optional conversation identifiers.\n- Local-model quickstarts still route through the same `IChatClient` abstraction. Ollama-backed clients are useful for low-cost prototyping, offline dev loops, and portability testing, but you still own chat history replay, latency, and model-quality tradeoffs.\n- `ChatOptions` is the normal control plane for model ID, temperature, tools, `AdditionalProperties`, and provider-specific raw options.\n- Tool calling is modeled with `AIFunction`, `AIFunctionFactory`, and `FunctionInvokingChatClient`. Ambient data can flow through closures, `AdditionalProperties`, `AIFunctionArguments.Context`, or DI.\n- Tool calling can target local .NET methods, external APIs, or MCP-backed tools. The model requests calls; your app still owns execution, validation, and side-effect boundaries.\n- Tool definitions consume request tokens. Keep tool descriptions short and register only the tools relevant for the current conversation or workflow.\n- `FunctionInvokingChatClient` can handle the tool-invocation loop and parallel tool-call responses automatically when the provider\u002Fmodel supports that shape.\n- `IEmbeddingGenerator` is the standard abstraction for semantic search, vector indexing, similarity, and cache-key generation. Pair it with `Microsoft.Extensions.VectorData.Abstractions` for vector store operations, and keep the embedding model, collection dimensions, and chunking\u002Fversioning story aligned so reindexing stays explicit.\n- `IImageGenerator` is the experimental MEAI image surface. Treat `MEAI001` as an intentional opt-in, keep image generation separate from chat concerns, and compose logging\u002Fcaching\u002Fhosting middleware around it the same way you would for `IChatClient`.\n- `Microsoft.Extensions.DataIngestion` gives you the document-side RAG pipeline: `IngestionDocument`, document readers like MarkItDown\u002FMarkdig, document processors such as `ImageAlternativeTextEnricher`, chunkers, chunk processors, `VectorStoreWriter\u003CT>`, and `IngestionPipeline\u003CT>` for end-to-end composition.\n- `IngestionPipeline\u003CT>.ProcessAsync` is partial-success oriented. Handle `IAsyncEnumerable\u003CIngestionResult>` deliberately instead of assuming one failed document should automatically crash the whole ingestion run.\n- `Microsoft.Extensions.AI.Evaluation.*` gives you quality, NLP, safety, caching, and reporting layers for regression checks and CI gates.\n- `dotnet\u002Fextensions` `v10.9.0` adds experimental `RoutingChatClient`\u002F`SemanticRoutingChatClient` and `FailoverChatClient`\u002F`OrderedFailoverChatClient` pipelines. Keep routing policy, fallback order, retry ownership, cost, and telemetry explicit; do not compose nested retry and failover layers without bounded attempts.\n- Experimental failover switches clients only when the failed attempt has produced no output. Once streaming output has been emitted, surface the failure instead of replaying the response through another model and duplicating visible text or tool work. Test both failure-before-first-update and failure-after-first-update paths; keep fallback attempts bounded.\n- The same release redesigns AI evaluation reports and refreshes their viewer. Treat report shape as a versioned CI artifact, and revalidate downstream parsers or publishing jobs before upgrading evaluation packages.\n- The prior `v10.8.4` templates remove GitHub Models and require an explicit `--provider azureopenai`, `--provider ollama`, or `--provider openai`; update scaffolding scripts and provider-authentication tests instead of relying on the old default.\n- The preceding `v10.8.0` release moved `Microsoft.Extensions.AI.OpenAI` to OpenAI 2.12.0, added speech-format auto-detection, and fixed `ImageGeneratingChatClient` content ordering. Keep multimodal and speech fixtures alongside the new approval\u002Fstate tests.\n- `AIFunctionNameAttribute`, `AIParameterNameAttribute`, and `ToolApprovalRequestContent.RequiresConfirmation` are new experimental `MEAI001` APIs. Opt in deliberately and keep approval decisions at the side-effect boundary.\n- The August 2026 local official-docs snapshot mirrors the current 64-page `.NET AI` markdown tree, including the renamed tool-calling concept, MEDI\u002FMEVD concepts, quickstart include fragments, and the dedicated vector-store section. Use `mcp` when the protocol itself becomes the design problem; stay here when you still mostly need app composition around `IChatClient` and friends.\n- The current `.NET AI` ecosystem guidance separates direct MEAI composition, MCP interoperability, a prebuilt Copilot SDK harness, and Microsoft Agent Framework orchestration. Use `Microsoft Agent Framework` when you need autonomous orchestration, threads, workflows, hosting, or multi-agent collaboration instead of just model composition.\n\n## Decision Cheatsheet\n\n| If you need | Default choice | Why |\n|---|---|---|\n| App-level provider abstraction with middleware | `Microsoft.Extensions.AI` | Highest leverage for apps and services |\n| A reusable provider or connector library | `Microsoft.Extensions.AI.Abstractions` | Keeps your package at the contract layer |\n| Typed chat or UI streaming | `IChatClient` with `GetResponseAsync` \u002F `GetStreamingResponseAsync` | Common request\u002Fresponse shape across providers |\n| Tool calling from .NET methods | `AIFunction` + `FunctionInvokingChatClient` | Native function metadata and invocation pipeline |\n| Typed structured output | `IChatClient.GetResponseAsync\u003CT>` extensions | Keeps schema intent in code instead of prompt parsing |\n| Vector search or RAG | `IEmbeddingGenerator` + `Microsoft.Extensions.VectorData.Abstractions` | Standardizes embeddings and store access |\n| Local model prototyping | `IChatClient` with an Ollama-backed implementation | Keeps the app on the MEAI abstractions while you validate prompts or UX locally |\n| Text-to-image or image-generation middleware | `IImageGenerator` | Use the dedicated image abstraction instead of overloading chat APIs |\n| Evaluation and regression gates | `Microsoft.Extensions.AI.Evaluation.*` | Relevance, safety, task adherence, caching, reports |\n| Agent threads or multi-step autonomous orchestration | `microsoft-agent-framework` | This is beyond plain provider abstraction |\n\n## Common Failure Modes\n\n- Referencing only `Microsoft.Extensions.AI.Abstractions` in an app and then rebuilding middleware, telemetry, or function invocation by hand.\n- Treating `IChatClient` as if it already gives you durable agent threads, orchestration, or hosted-agent semantics.\n- Mixing provider-specific assistants APIs with `IChatClient` as if they were the same runtime contract.\n- Forgetting to distinguish stateless history replay from stateful `ConversationId` flows.\n- Hiding important chat behavior in singleton service fields instead of explicit message history, options, or persistent storage.\n- Adding tool calling without validating parameter binding, invalid input behavior, side effects, or DI-scoped dependencies.\n- Building RAG without stable chunking, embedding-model\u002Fversion tracking, or vector dimension discipline.\n- Shipping AI features without evaluation baselines, safety checks, or telemetry for prompt\u002Fmodel drift.\n\n## Deliver\n\n- a justified package and abstraction choice: `Abstractions` only vs full `Microsoft.Extensions.AI`\n- a concrete `IChatClient` \u002F `IEmbeddingGenerator` composition strategy\n- explicit tool-calling, options, state, caching, logging, and telemetry decisions\n- vector-search, evaluation, or MCP integration guidance when the scenario needs it\n- a clear escalation path to Agent Framework when the problem exceeds provider abstraction\n\n## Validate\n\n- the abstraction layer solves a real portability, testability, or composition problem\n- provider registration and middleware order stay explicit in DI\n- chat state management matches whether the provider is stateless or stateful\n- structured output, tool invocation, and embedding flows are typed and observable\n- vector store, embedding model, and chunking strategy are consistent\n- evaluation or safety gates exist for important prompts and agent-like behaviors\n- agentic requirements are not being under-modeled as a simple `IChatClient` integration\n\nWhen exact wording, edge-case API behavior, or less-common examples matter, check the local official docs snapshot before relying on summaries.\n\n## References\n\n- [official-docs-index.md](references\u002Fofficial-docs-index.md) - Slim local snapshot map with direct links to every mirrored `.NET AI` docs page plus API-reference pointers\n- [patterns.md](references\u002Fpatterns.md) - Package choice, `IChatClient`, embeddings, DI pipelines, tool-calling, and Agent Framework escalation guidance\n- [examples.md](references\u002Fexamples.md) - Quickstart-to-task map covering chat, structured output, function calling, vector search, local models, MCP, and assistants\n- [evaluation.md](references\u002Fevaluation.md) - Quality, NLP, safety, caching, reporting, and CI-oriented evaluation guidance\n",{"name":5,"description":7,"compatibility":56},"Requires `Microsoft.Extensions.AI` or a .NET AI application that needs model, embedding, tool-calling, or evaluation composition without full agent orchestration.","main","497cc9aba79a931ac6fb8d36a48cc22fe3d6d74b","catalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai",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-14 19:05:44",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add managedcode\u002Fdotnet-skills --skill microsoft-extensions-ai",{"tool":73,"command":74},"bunx","bunx skills add managedcode\u002Fdotnet-skills --skill microsoft-extensions-ai",{"tool":76,"command":77},"pnpm","pnpm dlx skills add managedcode\u002Fdotnet-skills --skill microsoft-extensions-ai","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002FSKILL.md",true,[81,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251,255,259,263,267,271,275,279,283,287,291,295,299,302,306,310,314,318,322,326,330,334,338,342,346,350,354],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"manifest.json","REFERENCE","参考文档",92,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Fmanifest.json",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fevaluation.md",3837,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fevaluation.md",{"path":92,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fexamples.md",4678,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fexamples.md",{"path":96,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fofficial-docs-index.md",10554,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs-index.md",{"path":100,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fofficial-docs\u002Fazure-ai-services-authentication.md",9115,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fazure-ai-services-authentication.md",{"path":104,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fofficial-docs\u002Fconceptual\u002Fagents.md",3799,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fagents.md",{"path":108,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fofficial-docs\u002Fconceptual\u002Fcalling-tools.md",5599,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fcalling-tools.md",{"path":112,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Fofficial-docs\u002Fconceptual\u002Fchain-of-thought-prompting.md",2721,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fchain-of-thought-prompting.md",{"path":116,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":117,"sourceHtmlUrl":118},"references\u002Fofficial-docs\u002Fconceptual\u002Fdata-ingestion.md",9339,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fdata-ingestion.md",{"path":120,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":121,"sourceHtmlUrl":122},"references\u002Fofficial-docs\u002Fconceptual\u002Fembeddings.md",5417,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fembeddings.md",{"path":124,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":125,"sourceHtmlUrl":126},"references\u002Fofficial-docs\u002Fconceptual\u002Fhow-genai-and-llms-work.md",8628,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fhow-genai-and-llms-work.md",{"path":128,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":129,"sourceHtmlUrl":130},"references\u002Fofficial-docs\u002Fconceptual\u002Fmedi-library.md",4256,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fmedi-library.md",{"path":132,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":133,"sourceHtmlUrl":134},"references\u002Fofficial-docs\u002Fconceptual\u002Fmevd-library.md",2493,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fmevd-library.md",{"path":136,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":137,"sourceHtmlUrl":138},"references\u002Fofficial-docs\u002Fconceptual\u002Fprompt-engineering-dotnet.md",4893,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fprompt-engineering-dotnet.md",{"path":140,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":141,"sourceHtmlUrl":142},"references\u002Fofficial-docs\u002Fconceptual\u002Frag.md",2812,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Frag.md",{"path":144,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":145,"sourceHtmlUrl":146},"references\u002Fofficial-docs\u002Fconceptual\u002Funderstanding-tokens.md",6826,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Funderstanding-tokens.md",{"path":148,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":149,"sourceHtmlUrl":150},"references\u002Fofficial-docs\u002Fconceptual\u002Fzero-shot-learning.md",4870,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fconceptual\u002Fzero-shot-learning.md",{"path":152,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":153,"sourceHtmlUrl":154},"references\u002Fofficial-docs\u002Fdotnet-ai-ecosystem.md",9932,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fdotnet-ai-ecosystem.md",{"path":156,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":157,"sourceHtmlUrl":158},"references\u002Fofficial-docs\u002Fevaluation\u002Fevaluate-ai-response.md",7076,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fevaluation\u002Fevaluate-ai-response.md",{"path":160,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":161,"sourceHtmlUrl":162},"references\u002Fofficial-docs\u002Fevaluation\u002Fevaluate-safety.md",13608,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fevaluation\u002Fevaluate-safety.md",{"path":164,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":165,"sourceHtmlUrl":166},"references\u002Fofficial-docs\u002Fevaluation\u002Fevaluate-with-reporting.md",15317,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fevaluation\u002Fevaluate-with-reporting.md",{"path":168,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":169,"sourceHtmlUrl":170},"references\u002Fofficial-docs\u002Fevaluation\u002Flibraries.md",12122,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fevaluation\u002Flibraries.md",{"path":172,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":173,"sourceHtmlUrl":174},"references\u002Fofficial-docs\u002Fevaluation\u002Fresponsible-ai.md",2360,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fevaluation\u002Fresponsible-ai.md",{"path":176,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":177,"sourceHtmlUrl":178},"references\u002Fofficial-docs\u002Fget-started-app-chat-template.md",19494,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fget-started-app-chat-template.md",{"path":180,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":181,"sourceHtmlUrl":182},"references\u002Fofficial-docs\u002Fget-started-mcp.md",7524,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fget-started-mcp.md",{"path":184,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":185,"sourceHtmlUrl":186},"references\u002Fofficial-docs\u002Fhow-to\u002Faccess-data-in-functions.md",6066,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fhow-to\u002Faccess-data-in-functions.md",{"path":188,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":189,"sourceHtmlUrl":190},"references\u002Fofficial-docs\u002Fhow-to\u002Fapp-service-aoai-auth.md",8919,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fhow-to\u002Fapp-service-aoai-auth.md",{"path":192,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":193,"sourceHtmlUrl":194},"references\u002Fofficial-docs\u002Fhow-to\u002Fcontent-filtering.md",2758,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fhow-to\u002Fcontent-filtering.md",{"path":196,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":197,"sourceHtmlUrl":198},"references\u002Fofficial-docs\u002Fhow-to\u002Fhandle-invalid-tool-input.md",4300,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fhow-to\u002Fhandle-invalid-tool-input.md",{"path":200,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":201,"sourceHtmlUrl":202},"references\u002Fofficial-docs\u002Fhow-to\u002Fuse-tokenizers.md",5628,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fhow-to\u002Fuse-tokenizers.md",{"path":204,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":205,"sourceHtmlUrl":206},"references\u002Fofficial-docs\u002Fichatclient.md",20371,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fichatclient.md",{"path":208,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":209,"sourceHtmlUrl":210},"references\u002Fofficial-docs\u002Fiembeddinggenerator.md",5001,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fiembeddinggenerator.md",{"path":212,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":213,"sourceHtmlUrl":214},"references\u002Fofficial-docs\u002Fmicrosoft-extensions-ai.md",6465,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fmicrosoft-extensions-ai.md",{"path":216,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":217,"sourceHtmlUrl":218},"references\u002Fofficial-docs\u002Foverview.md",4045,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Foverview.md",{"path":220,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":221,"sourceHtmlUrl":222},"references\u002Fofficial-docs\u002Fquickstarts\u002Fai-templates.md",2044,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fai-templates.md",{"path":224,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":225,"sourceHtmlUrl":226},"references\u002Fofficial-docs\u002Fquickstarts\u002Fbuild-chat-app.md",4895,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fbuild-chat-app.md",{"path":228,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":229,"sourceHtmlUrl":230},"references\u002Fofficial-docs\u002Fquickstarts\u002Fbuild-mcp-client.md",3180,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fbuild-mcp-client.md",{"path":232,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":233,"sourceHtmlUrl":234},"references\u002Fofficial-docs\u002Fquickstarts\u002Fbuild-mcp-server.md",24444,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fbuild-mcp-server.md",{"path":236,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":237,"sourceHtmlUrl":238},"references\u002Fofficial-docs\u002Fquickstarts\u002Fchat-local-model.md",6489,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fchat-local-model.md",{"path":240,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":241,"sourceHtmlUrl":242},"references\u002Fofficial-docs\u002Fquickstarts\u002Fcreate-assistant.md",5904,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fcreate-assistant.md",{"path":244,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":245,"sourceHtmlUrl":246},"references\u002Fofficial-docs\u002Fquickstarts\u002Fgenerate-images.md",4292,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fgenerate-images.md",{"path":248,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":249,"sourceHtmlUrl":250},"references\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fai-templates-azure-openai.md",6199,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fai-templates-azure-openai.md",{"path":252,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":253,"sourceHtmlUrl":254},"references\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fai-templates-explore-app.md",1071,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fai-templates-explore-app.md",{"path":256,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":257,"sourceHtmlUrl":258},"references\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fai-templates-ollama.md",3890,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fai-templates-ollama.md",{"path":260,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":261,"sourceHtmlUrl":262},"references\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fai-templates-openai.md",3954,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fai-templates-openai.md",{"path":264,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":265,"sourceHtmlUrl":266},"references\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fcreate-ai-service.md",691,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fcreate-ai-service.md",{"path":268,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":269,"sourceHtmlUrl":270},"references\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fprerequisites-azure-openai.md",447,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fprerequisites-azure-openai.md",{"path":272,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":273,"sourceHtmlUrl":274},"references\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fprerequisites-openai.md",318,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fincludes\u002Fprerequisites-openai.md",{"path":276,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":277,"sourceHtmlUrl":278},"references\u002Fofficial-docs\u002Fquickstarts\u002Fprocess-data.md",8346,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fprocess-data.md",{"path":280,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":281,"sourceHtmlUrl":282},"references\u002Fofficial-docs\u002Fquickstarts\u002Fprompt-model.md",5291,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fprompt-model.md",{"path":284,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":285,"sourceHtmlUrl":286},"references\u002Fofficial-docs\u002Fquickstarts\u002Fpublish-mcp-registry.md",12522,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fpublish-mcp-registry.md",{"path":288,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":289,"sourceHtmlUrl":290},"references\u002Fofficial-docs\u002Fquickstarts\u002Fsnippets\u002Fmcp-server\u002FREADME.md",2481,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fsnippets\u002Fmcp-server\u002FREADME.md",{"path":292,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":293,"sourceHtmlUrl":294},"references\u002Fofficial-docs\u002Fquickstarts\u002Fsnippets\u002Fprocess-data\u002Fdata\u002Fsample.md",373,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fsnippets\u002Fprocess-data\u002Fdata\u002Fsample.md",{"path":296,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":297,"sourceHtmlUrl":298},"references\u002Fofficial-docs\u002Fquickstarts\u002Fsnippets\u002Fprompt-completion\u002Fazure-openai\u002Fbenefits.md",1875,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fsnippets\u002Fprompt-completion\u002Fazure-openai\u002Fbenefits.md",{"path":300,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":297,"sourceHtmlUrl":301},"references\u002Fofficial-docs\u002Fquickstarts\u002Fsnippets\u002Fprompt-completion\u002Fopenai\u002Fbenefits.md","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fsnippets\u002Fprompt-completion\u002Fopenai\u002Fbenefits.md",{"path":303,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":304,"sourceHtmlUrl":305},"references\u002Fofficial-docs\u002Fquickstarts\u002Fstructured-output.md",6222,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fstructured-output.md",{"path":307,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":308,"sourceHtmlUrl":309},"references\u002Fofficial-docs\u002Fquickstarts\u002Ftext-to-image.md",11285,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Ftext-to-image.md",{"path":311,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":312,"sourceHtmlUrl":313},"references\u002Fofficial-docs\u002Fquickstarts\u002Fuse-function-calling.md",5140,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fquickstarts\u002Fuse-function-calling.md",{"path":315,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":316,"sourceHtmlUrl":317},"references\u002Fofficial-docs\u002Fresources\u002Fazure-ai.md",622,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fresources\u002Fazure-ai.md",{"path":319,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":320,"sourceHtmlUrl":321},"references\u002Fofficial-docs\u002Fresources\u002Fmcp-servers.md",3839,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fresources\u002Fmcp-servers.md",{"path":323,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":324,"sourceHtmlUrl":325},"references\u002Fofficial-docs\u002Fvector-stores\u002Fdefine-your-data-model.md",17710,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fvector-stores\u002Fdefine-your-data-model.md",{"path":327,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":328,"sourceHtmlUrl":329},"references\u002Fofficial-docs\u002Fvector-stores\u002Fhow-to\u002Fbuild-vector-search-app.md",10253,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fvector-stores\u002Fhow-to\u002Fbuild-vector-search-app.md",{"path":331,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":332,"sourceHtmlUrl":333},"references\u002Fofficial-docs\u002Fvector-stores\u002Fhow-to\u002Fuse-vector-stores.md",8367,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fvector-stores\u002Fhow-to\u002Fuse-vector-stores.md",{"path":335,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":336,"sourceHtmlUrl":337},"references\u002Fofficial-docs\u002Fvector-stores\u002Fhow-to\u002Fvector-store-data-ingestion.md",4775,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fvector-stores\u002Fhow-to\u002Fvector-store-data-ingestion.md",{"path":339,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":340,"sourceHtmlUrl":341},"references\u002Fofficial-docs\u002Fvector-stores\u002Fmanage-data.md",7381,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fvector-stores\u002Fmanage-data.md",{"path":343,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":344,"sourceHtmlUrl":345},"references\u002Fofficial-docs\u002Fvector-stores\u002Foverview.md",7557,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fvector-stores\u002Foverview.md",{"path":347,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":348,"sourceHtmlUrl":349},"references\u002Fofficial-docs\u002Fvector-stores\u002Ftutorial-vector-search.md",12713,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fvector-stores\u002Ftutorial-vector-search.md",{"path":351,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":352,"sourceHtmlUrl":353},"references\u002Fofficial-docs\u002Fvector-stores\u002Fvector-search.md",7896,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fofficial-docs\u002Fvector-stores\u002Fvector-search.md",{"path":355,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":356,"sourceHtmlUrl":357},"references\u002Fpatterns.md",7307,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FMicrosoft-Extensions-AI\u002Fskills\u002Fmicrosoft-extensions-ai\u002Freferences\u002Fpatterns.md",[359,386,409,440,450,477],{"skillNo":360,"name":361,"nameZh":6,"description":362,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":363,"categories":364,"keywords":373,"publishedAt":51},"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",[365,368],{"categoryNo":366,"categoryName":367,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":369,"categoryName":370,"taxonomyType":371,"taxonomyTypeDesc":372},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[374,375,376,49,48,377,47,44,378,379,380,381,40,38,382,36,383,35,384,385],"xtwitter scraper","browser automation","workflows","browser","api","Media","api client","access","webhooks","social","modeling","webhook",{"skillNo":387,"name":388,"nameZh":6,"description":389,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":390,"categories":391,"keywords":398,"publishedAt":51},"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",[392,395],{"categoryNo":393,"categoryName":394,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":396,"categoryName":397,"taxonomyType":371,"taxonomyTypeDesc":372},"01JBSEEDCAT000000000000036","内容创作者",[388,399,400,376,50,49,44,401,402,403,40,39,38,36,404,405,406,407,35,408],"writing","performance","data","parsing","parser","do","writer","options","project","high-performance",{"skillNo":410,"name":411,"nameZh":6,"description":412,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":413,"categories":414,"keywords":415,"publishedAt":51},"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",[],[416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,28],"webgpu","threejs","webgpu threejs tsl","setup","shaders","gpu","integration","applications","js","node","syntax","guide","use","language","three","compute","post","processing","with","renderer","for","materials","wgsl","effects",{"skillNo":441,"name":442,"nameZh":6,"description":443,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":444,"categories":445,"keywords":446,"publishedAt":51},"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",[],[442,428,36,447,448,436,449],"semantic","razor","inspection",{"skillNo":451,"name":452,"nameZh":6,"description":453,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":454,"categories":455,"keywords":456,"publishedAt":51},"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",[],[457,458,459,460,399,461,462,463,464,465,466,428,467,468,469,470,404,471,472,473,474,436,475,476,28],"system","json","text","system text json net11","policy","metadata","library","serialization","behavior","user","only","probe","guidance","later","type","dictionary","naming","targeting","custom","generic",{"skillNo":478,"name":479,"nameZh":6,"description":480,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":481,"categories":482,"keywords":485,"publishedAt":51},"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",[483,484],{"categoryNo":366,"categoryName":367,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":369,"categoryName":370,"taxonomyType":371,"taxonomyTypeDesc":372},[378,486,487,488,49,489,423,457,428,469,470,404,490,491,492,493,474,436,494],"process","process api net11","diagnostics","start","basic","processes","output","usage","new"]