TE

technology-selection

Architects AI/ML solutions for .NET projects using modern Microsoft ecosystems.

Install

mkdir -p .claude/skills/technology-selection && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13674" && unzip -o skill.zip -d .claude/skills/technology-selection && rm skill.zip

Installs to .claude/skills/technology-selection

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

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).
892 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Advanced

Key capabilities

  • Classify AI/ML tasks using a decision tree
  • Select appropriate .NET technologies for ML/AI features
  • Design RAG pipelines with vector search
  • Integrate LLMs for natural language tasks
  • Implement agentic workflows with tool calling

How it works

This skill evaluates AI/ML task requirements against a decision tree to select appropriate .NET technologies like ML.NET, MEAI, or MAF. It also guides the selection of library layers.

Inputs & outputs

You give it
task description, data description, and deployment constraints for an AI/ML feature
You get back
recommended .NET technologies and a rationale for their selection

When to use technology-selection

  • Integrate LLMs into .NET apps
  • Design RAG vector search pipelines
  • Add classification or anomaly detection

About this skill

.NET AI and Machine Learning

Inputs

InputRequiredDescription
Task descriptionYesWhat the AI/ML feature should accomplish (e.g., "classify support tickets", "summarize documents")
Data descriptionYesType and shape of input data (structured/tabular, unstructured text, images, mixed)
Deployment constraintsNoCloud vs. local, latency SLO, cost budget, offline requirements
Existing project contextNoCurrent .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 typeTechnologyRationale
Structured/tabular data: classification, regression, clustering, anomaly detection, recommendationML.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 via Microsoft.Extensions.AI (IChatClient)Requires language model capabilities beyond pattern matching; no orchestration needed
Agentic workflows: tool/function calling, multi-step reasoning, agent loops, multi-agent collaborationMicrosoft Agent Framework (Microsoft.Agents.AI) built on top of Microsoft.Extensions.AIRequires orchestration, tool dispatch, iteration control, and guardrails that IChatClient alone does not provide
Building GitHub Copilot extensions, custom agents, or developer workflow toolsGitHub Copilot SDK (GitHub.Copilot.SDK)Integrates with the Copilot agent runtime for IDE and CLI extensibility
Running a pre-trained or fine-tuned custom model in productionONNX Runtime (Microsoft.ML.OnnxRuntime)Hardware-accelerated inference, model-format agnostic
Local/offline LLM inference with no cloud dependencyOllamaSharp with local AI models supported by OllamaPrivacy-sensitive, air-gapped, or cost-constrained scenarios
Semantic search, RAG, or embedding storageMicrosoft.Extensions.VectorData.Abstractions + a vector database provider (e.g., Azure AI Search, Milvus, MongoDB, pgvector, Pinecone, Qdrant, Redis, SQL)Provider-agnostic abstractions for vector similarity search; pair with a database-specific connector package (many are moving to community toolkits)
Ingesting, chunking, and loading documents into a vector storeMicrosoft.Extensions.AI.DataIngestion (preview) + Microsoft.Extensions.VectorData.Abstractions (MEVD)Handles document parsing, text chunking, embedding generation, and upserting into a vector database; pairs with Microsoft.Extensions.VectorData.Abstractions
Both structured ML predictions AND natural language reasoningHybrid: ML.NET for predictions + LLM for reasoning layerKeep loosely coupled; ML.NET handles reproducible scoring, LLM adds explanation

Critical rule: Do NOT use an LLM for tasks that ML.NET handles well (classification on tabular data, regression, clustering). LLMs are slower, more expensive, and non-deterministic for these tasks.

Step 1b: Select the correct library layer

After identifying the task type, select the right library layer. These libraries form a stack — each builds on the one below it. Using the wrong layer is a major source of non-deterministic agent behavior.

LayerLibraryNuGet packageUse when
AbstractionMicrosoft.Extensions.AI (MEAI)Microsoft.Extensions.AIYou need a provider-agnostic interface for chat, embeddings, or tool calling. This is the foundation — always include it. Use IChatClient directly only for simple prompt-in/response-out scenarios with no tool calling or agentic loops. If the task involves tools, agents, or multi-step reasoning, you must add the Orchestration layer above.
Provider SDKOpenAI, Azure.AI.OpenAI, Azure.AI.Inference, OllamaSharpOpenAI, Azure.AI.OpenAI, Azure.AI.Inference, OllamaSharpYou need a concrete LLM provider implementation. These wire into MEAI via AddChatClient. Use OpenAI for direct OpenAI access, Azure.AI.OpenAI for Azure OpenAI, Azure.AI.Inference for Azure AI Foundry / GitHub Models, or OllamaSharp for local Ollama. Use directly only if you need provider-specific features not exposed through MEAI.
OrchestrationMicrosoft Agent FrameworkMicrosoft.Agents.AI (prerelease)The task involves tool/function calling, agentic loops, multi-step reasoning, multi-agent coordination, durable context, or graph-based workflows. This is required whenever the scenario involves agents or tools — do not hand-roll tool dispatch loops with IChatClient. Builds on top of MEAI. Note: This package is currently prerelease — use dotnet add package Microsoft.Agents.AI --prerelease to install it.
Copilot integrationGitHub Copilot SDKGitHub.Copilot.SDKYou are building extensions or tools that integrate with the GitHub Copilot runtime — custom agents, IDE extensions, or developer workflow automation that leverages the Copilot agent platform.

Decision rules for library selection

  1. Start with MEAI. Every AI integration begins with Microsoft.Extensions.AI for the IChatClient / IEmbeddingGenerator abstractions. This ensures provider-swappability and testability.

  2. Add a provider SDK (OpenAI, Azure.AI.OpenAI) as the concrete implementation behind MEAI. Do not call the provider SDK directly in business logic — always go through the MEAI abstraction.

  3. Use Agent Framework (Microsoft.Agents.AI) for any task that involves tools or agents. If the task is a single prompt → response with no tool calling, MEAI is sufficient. You MUST use Microsoft.Agents.AI when any of these apply:

    • Tool/function calling (agent decides which tools to invoke)
    • Multi-step reasoning with state carried across turns
    • Agentic loops that iterate until a goal is met
    • Multi-agent collaboration with handoff protocols
    • Graph-based or durable workflows

    Do not implement these patterns by hand with IChatClient — the Agent Framework provides iteration limits, observability, and tool dispatch that are error-prone to reimplement.

  4. Add Copilot SDK only when building Copilot extensions. Use GitHub.Copilot.SDK when the goal is to build a custom agent or tool that runs inside the GitHub Copilot platform (CLI, IDE, or Copilot Chat). This is not a general-purpose LLM orchestration library — it is specifically for Copilot extensibility.

  5. Never skip layers. Do not use Agent Framework without MEAI underneath. Do not call HttpClient to OpenAI alongside MEAI in the same workflow. Each layer depends on the one below it.

Step 2: Select packages and set up the project

Install only the packages needed for the selected technology branch. Do not mix competing abstractions.

Classic ML packages

<PackageReference Include="Microsoft.ML" Version="4.*" />
<PackageReference Include="Microsoft.ML.AutoML" Version="0.*" />
<!-- Only if custom numerical work is needed: -->
PackageReference Include="System.Numerics.Tensors" Version="10.*"
<PackageReference Include="MathNet.Numerics" Version="5.*" />
<!-- Only for data exploration: -->
<PackageReference Include="Microsoft.Data.Analysis" Version="0.*" />

Do NOT use Accord.NET — it is archived and unmaintained.

Modern AI packages

<!-- Always start with the abstraction layer -->
<PackageReference Include="Microsoft.Extensions.AI" Version="9.*" />

<!-- Orchestration (agents, workflows, tools, memory) — prerelease; use dotnet add package Microsoft.Agents.AI --prerelease -->
<PackageReference Include="Microsoft.Agents.AI" Version="1.*-*" />

<!-- Cloud LLM provider (pick one) -->
<PackageReference Include="Azure.AI.OpenAI" Version="2.*" />
<!-- OR -->
<PackageReference Include="OpenAI" Version="2.*" />

<!-- Client-side token counting for cost management -->
    <PackageReference Include="Microsoft.ML.Tokenizers" Version="2.*" 

<!-- Local LLM inference -->
<PackageReference Include="OllamaSharp" Version="5.*" />

<!-- Custom model inference -->
<PackageReference Include="Microsoft.ML.OnnxRuntime" Version="1.*" />

<!-- Vector store abstraction -->
<PackageReference Include="Microsoft.Extensions.VectorData.Abstractions" Version="9.*" />

<!-- Document ingestion, chunking, and vector store loading (preview) -->
<PackageReference Include="Microsoft.Extensions.AI.DataIngestion" Version="9.*-*" />

<!-- Copilot platform extensibility -->
<PackageReference Include="GitHub.Copilot.SDK" Version="1.*" />

Stack coherence rule: Never mix raw SDK calls (HttpClient to OpenAI) with Microsoft.Extensions.AI, Microsoft Agent Framework, or Copilot SDK in the same workflow. Pick one abstraction layer per workflow boundary and commit to it. See Step 1b for the layering rules.

Register services with dependency injection

All AI/ML services must be registered via DI. Never instantiate clients directly in business logic.

// Configuration via IOptions<T>
services.Configure<AiOptions>(configuration.GetSection("AI"));

// Register the AI client through the abstraction
services.AddChatClient(builder => builder
    .UseOpenAIChatClient("gpt-4o-mini-2024-07-18"));

Step 3: Implement with guardrails

Apply the guardrails for the selected technology branch. Every generated implementation must follow these rules.

Classic ML guardrails

  1. Reproducibility: Always set a random seed in the ML context:

    var mlContext = new MLContext(seed: 42);
    
  2. Data splitting: Always split into train/test (and optiona


Content truncated.

When not to use it

  • The project targets .NET Framework
  • The task is pure data engineering or ETL without ML/AI
  • The project needs a custom deep learning training loop

Limitations

  • The skill is for .NET 8+ applications
  • The skill is not for projects targeting .NET Framework
  • The skill is not for custom deep learning training loops

How it compares

This skill provides a structured decision tree for selecting .NET AI/ML technologies, ensuring the right tool for the job and avoiding common pitfalls, unlike ad-hoc technology choices.

Compared to similar skills

technology-selection side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
technology-selection (this skill)02moReviewAdvanced
modal57moReviewIntermediate
senior-computer-vision127moReviewAdvanced
rag-skills67moNo flagsAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

modal

davila7

Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.

587

senior-computer-vision

davila7

World-class computer vision skill for image/video processing, object detection, segmentation, and visual AI systems. Expertise in PyTorch, OpenCV, YOLO, SAM, diffusion models, and vision transformers. Includes 3D vision, video analysis, real-time processing, and production deployment. Use when building vision AI systems, implementing object detection, training custom vision models, or optimizing inference pipelines.

1256

rag-skills

llama-farm

RAG-specific best practices for LlamaIndex, ChromaDB, and Celery workers. Covers ingestion, retrieval, embeddings, and performance.

623

ml-engineer

sickn33

Build production ML systems with PyTorch 2.x, TensorFlow, and modern ML frameworks. Implements model serving, feature engineering, A/B testing, and monitoring. Use PROACTIVELY for ML model deployment, inference optimization, or production ML infrastructure.

516

common-skills

llama-farm

Best practices for the Common utilities package in LlamaFarm. Covers HuggingFace Hub integration, GGUF model management, and shared utilities.

16

runtime-skills

llama-farm

Universal Runtime best practices for PyTorch inference, Transformers models, and FastAPI serving. Covers device management, model loading, memory optimization, and performance tuning.

13

Search skills

Search the agent skills registry