technology-selection
Guides technology selection and implementation of AI and ML features in .NET 8+ applications using ML.NET, Microsoft.Extensions.AI (MEAI), Microsoft Agent Framework (MAF), GitHub Copilot SDK, ONNX Runtime, and OllamaSharp. Covers the full spectrum from classic ML through modern LLM orchestration to local inference. Use when adding classification, regression, clustering, anomaly detection, recommendation, LLM integration (text generation, summarization, reasoning), RAG pipelines with vector search, agentic workflows with tool calling, Copilot extensions, or custom model inference via ONNX Runti
npx skills add dotnet/skills --skill technology-selection --agent copilot
Same command for any agent — swap --agent for claude-code, codex, cursor.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
Guides technology selection and implementation of AI and ML features in .NET 8+ applications using ML.NET, Microsoft.Extensions.AI (MEAI), Microsoft Agent Framework (MAF), GitHub Copilot SDK, ONNX Runtime, and OllamaSharp. Covers the full spectrum from classic ML through modern LLM orchestration to local inference. Use when adding classification, regression, clustering, anomaly detection, recommendation, LLM integration (text generation, summarization, reasoning), RAG pipelines with vector search, agentic workflows with tool calling, Copilot extensions, or custom model inference via ONNX Runtime to a .NET project. DO NOT USE FOR projects targeting .NET Framework (requires .NET 8+), the task is pure data engineering or ETL with no ML/AI component, or the project needs a custom deep learning training loop (use Python with PyTorch/TensorFlow, then export to ONNX for .NET inference).
How it works
The skill prescribes a task-driven workflow to classify tasks and select technology layers. It starts with MEAI for provider-agnostic chat/embedding abstractions, then adds a provider SDK (OpenAI, Azure OpenAI) as the concrete implementation, and uses Microsoft.Agents.AI for tool/agent orchestration when needed. For Copilot extensions, it suggests GitHub.Copilot.SDK. It defines the recommended packages for Classic ML and Modern AI, and provides DI registration guidance to ensure all services are injected rather than instantiated directly. Guardrails are provided for both Classic ML and LLM/Agent workflows, including reproducibility, data splitting, structured output parsing, retry logic, cost control, secret management, and model version pinning. It enforces layering rules to avoid mixing raw HttpClient calls with abstraction layers and requires that Agent Framework be used for any tool-driven or multi-step reasoning tasks. It also outlines how to implement agentic iteration limits, token budgeting, observability, explicit tool schemas, and a preference for simpler single-agent-with-tools designs when appropriate. It concludes with non-determinism handling guidance for LLM/agent outputs, including acknowledgement, validation, and graceful degradation.
When to use it
Use when adding AI/ML features in .NET 8+ projects that involve classification, regression, clustering, anomaly detection, recommendation, LLM integration (text generation, summarization, reasoning), RAG pipelines with vector search, agentic workflows with tool calling, Copilot extensions, or custom model inference via ONNX Runtime. Do not use for projects targeting .NET Framework, or where the task is pure data engineering/ETL with no ML/AI component, or where a custom deep learning training loop is required.
What it can touch
The workflow involves DI-enabled AI/ML services and specific packages: Microsoft.Extensions.AI, Microsoft.Agents.AI, OpenAI or Azure OpenAI SDKs, OllamaSharp, Microsoft.ML.OnnxRuntime, Microsoft.Extensions.VectorData.Abstractions, Microsoft.Extensions.AI.DataIngestion, and GitHub.Copilot.SDK. It specifies using these packages in XML PackageReference blocks and registering via DI; it also references tokenizers for cost control and logging guardrails.
Caveats
Prerelease notes: Microsoft.Agents.AI is prerelease and installable via dotnet add package Microsoft.Agents.AI --prerelease. The approach requires layering: MEAI underpinned by a provider SDK, with Agent Framework for tool-based tasks, and Copilot SDK only for Copilot extensions. It cautions against mixing raw HttpClient calls with abstraction layers in the same workflow and emphasizes guarded iteration, observability, and strict model-version pinning. License: MIT.
# .NET AI and Machine Learning ## Inputs | Input | Required | Description | |-------|----------|-------------| | Task description | Yes | What the AI/ML feature should accomplish (e.g., "classify support tickets", "summarize documents") | | Data description | Yes | Type and shape of input data (structured/tabular, unstructured text, images, mixed) | | Deployment constraints | No | Cloud vs. local, latency SLO, cost budget, offline requirements | | Existing project context | No | Current .csproj, existing packages, target framework | ## Workflow ### Step 1: Classify the task using the decision tree Evaluate the developer's task against this decision tree and select the appropriate technology. State which branch applies and why. | Task type | Technology | Rationale | |-----------|-----------|-----------| | Structured/tabular data: classification, regression, clustering, anomaly detection, recommendation | **ML.NET** (`Microsoft.ML`) | Reproducible (given a fixed seed and dataset), no cloud dependency, purpose-built models for these tasks | | Natural language understanding, generation, summarization, reasoning over unstructured text (single prompt → response, no tool calling) | **LLM
- Inputs
- Workflow
- Step 1: Classify the task using the decision tree
- Step 1b: Select the correct library layer
- Step 2: Select packages and set up the project
- Step 3: Implement with guardrails
- Step 4: Handle non-determinism
- Step 5: Apply performance and cost controls
- Step 6: Validate the implementation
- Validation
- Anti-Patterns to Reject
- Common Pitfalls
dotnet build -c Release -warnaserror dotnet test -c Release
What does the technology-selection skill do?
Guides technology selection and implementation of AI and ML features in .NET 8+ applications using ML.NET, Microsoft.Extensions.AI (MEAI), Microsoft Agent Framework (MAF), GitHub Copilot SDK, ONNX Runtime, and OllamaSharp. Covers the full spectrum from classic ML through modern LLM orchestration to local inference. Use when adding classification, regression, clustering, anomaly detection, recommendation, LLM integration (text generation, summarization, reasoning), RAG pipelines with vector search, agentic workflows with tool calling, Copilot extensions, or custom model inference via ONNX Runti
How do I install it?
Run `npx skills add dotnet/skills --skill technology-selection --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From dotnet/skills, a repository with 4,927 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
