Official agent skill

Technology Selection

by dotnet in dotnet/skills

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…

OfficialMITAuto-check passedAI & LLM Engineering

Install Technology Selection

skills CLI
$ npx skills add dotnet/skills --skill technology-selection -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dotnet/skills technology-selection --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dotnet-ai/skills/technology-selection .claude/skills/technology-selection && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
technology-selection
GitHub stars
5.6k
Used in
2 other repos
Token cost
~2.1k tokens
SKILL.md length
826 words
Files
8 (incl. references)
Skills in repo
91
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 2 steps: Classify the task (decision tree) → Cover the branch essentials, then decide…
  • Adding classification
  • SKILL.md covers Step 1: Classify the task…, Step 1b: Pick the library layer, Step 2: Cover the branch… and Validation, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Technology Selection is an agent skill from dotnet/skills, published by the product's own GitHub organization. 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…

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `references/agentic.md`, `references/classic-ml.md` and `references/copilot.md`).

It sits in AI & LLM Engineering, covering Deep learning, Data pipelines and ETL and Vector databases. It works with .NET, ONNX, Python and PyTorch. The repository describes itself as: Repository for skills to assist AI coding agents with .NET and C. The licence is MIT.

When your agent uses it

  • Adding classification
  • Anomaly detection
  • LLM integration (text generation
  • RAG pipelines with vector search

Example prompts

  • “Use the technology-selection skill to guide technology selection and implementation of AI and ML features in .NET 8+ applications using ML.NET…”
  • “/technology-selection”

Requirements

  • Python 3

Workflow steps

2 steps, taken from the step headings in SKILL.md.

  1. Classify the task (decision tree)
  2. Cover the branch essentials, then decide depth

What it can do on your machine

Read from SKILL.md and the folder at commit 8d670fa. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • ollama.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Technology Selection loads about 2.1k tokens when it runs, and up to ~5k if it reads all its reference files. Until then it costs about 228 tokens; SKILL.md has 826 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~228
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from dotnet/skills at commit 8d670fa, republished under its MIT licence (© dotnet). 826 words, ~2,116 tokens.

Download SKILL.mdSave it as .claude/skills/technology-selection/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
technology-selection
description
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).
license
MIT

.NET AI and Machine Learning

Pick the right technology first, then deliver only what the task asks for. If the task asks for a plan, comparison, or architecture (or says "do not write code"), produce that — do not scaffold, build, or run code unprompted.

Step 1: Classify the task (decision tree)

State which branch applies and why, then choose that technology.

Task typeTechnologyWhy
Structured/tabular: classification, regression, clustering, anomaly detection, recommendationML.NET (Microsoft.ML)Deterministic (fixed seed), no cloud dependency, purpose-built
NL understanding, generation, summarization, reasoning (single prompt → response, no tools)LLM via Microsoft.Extensions.AI (IChatClient)Language capability, no orchestration needed
Agentic: multi-step tool/function calling, agent loops, multi-agentMicrosoft Agent Framework (Microsoft.Agents.AI) on Microsoft.Extensions.AINeeds orchestration, tool dispatch, iteration control IChatClient lacks
GitHub Copilot extensions / custom dev-workflow agentsGitHub Copilot SDK (GitHub.Copilot.SDK)Integrates with the Copilot agent runtime
Run a pre-trained/custom model in productionONNX Runtime (Microsoft.ML.OnnxRuntime)Hardware-accelerated, format-agnostic inference
Local/offline LLM inferenceOllamaSharp (Ollama models)Privacy-sensitive, air-gapped, cost-constrained
Semantic search, RAG, embedding storageMicrosoft.Extensions.VectorData.Abstractions (MEVD) + a provider (Azure AI Search, Milvus, MongoDB, pgvector, Pinecone, Qdrant, Redis, SQL)Provider-agnostic vector search
Ingest, chunk, load documents into a vector storeMicrosoft.Extensions.AI.DataIngestion (preview) + MEVDParses, chunks, embeds, upserts
Both structured predictions AND NL reasoningHybrid: ML.NET scoring + LLM reasoning layerML.NET is reproducible; LLM adds explanation

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

Step 1b: Pick the library layer

LayerLibraryUse when
AbstractionMicrosoft.Extensions.AI (MEAI)Always the foundation. Use IChatClient directly for prompt-response and simple, bounded function invocation.
Provider SDKAzure.AI.OpenAI / OpenAI / Azure.AI.Inference / OllamaSharpConcrete provider behind MEAI via AddChatClient.
OrchestrationMicrosoft.Agents.AI (prerelease)Multi-step tool use, durable agent loops, and multi-agent workflows.
CopilotGitHub.Copilot.SDKBuilding Copilot-platform extensions only.

Rules: start with MEAI; put the provider behind it via AddChatClient (don't call the provider in business logic); use Microsoft.Agents.AI for multi-step or durable agent workflows rather than hand-rolling an agent loop; never mix a raw HttpClient-to-OpenAI call with MEAI in the same workflow. Do not use Accord.NET (archived). For new projects, prefer MEAI and Agent Framework unless existing Semantic Kernel features or investments are a requirement. Register AI/ML services via DI; load secrets from user-secrets / env / Key Vault — never hardcode keys.

Show full SKILL.md (451 more words)Show less

Step 2: Cover the branch essentials, then decide depth

Every answer — plan or implementation — must address the guardrails for the selected branch:

  • ML.NET — new MLContext(seed: …) (reproducible); TrainTestSplit + evaluate on the held-out set; report real metrics (MicroAccuracy/MacroAccuracy/LogLoss, AUC/F1, or RMSE/R²); serve with PredictionEnginePool<TIn,TOut> (never a singleton PredictionEngine).
  • LLM (MEAI) — depend on IChatClient registered via AddChatClient (provider behind it); set Temperature and MaxOutputTokens in ChatOptions; add retry/timeout (RetryingChatClient/Polly); pin a dated model; load keys from user-secrets / env / Key Vault — never hardcode an sk-… key; validate non-deterministic output against a schema with a fallback.
  • Agentic (Agent Framework) — orchestrate with Microsoft.Agents.AI on IChatClient (never a hand-rolled loop); set MaximumIterations and a token/cost ceiling; define each tool with a clear schema (AIFunctionFactory.Create); log each step (never raw sensitive content).
  • RAG / embeddings — semantic chunking (not fixed-size); IEmbeddingGenerator and cache the embeddings (don't re-embed per query); store/query with Microsoft.Extensions.VectorData.Abstractions (MEVD) + the provider the user asked for (e.g. pgvector); filter by a minimum similarity score; keep source attribution for each answer. Honor the UI/storage the user specified; use only real, existing NuGet packages.

Then choose depth:

  • Plan / comparison / architecture only (or "do not write code"): answer from this file alone using the essentials above. Do NOT open a reference — the branch essentials here are sufficient for a selection or plan. For RAG plans, cover chat, ingestion/chunking, embeddings, vector storage, source attribution, and the requested UI/storage.
  • Writing implementation code: read the matching reference(s) for packages and implementation guidance (read only the selected branch; for Hybrid, read both Classic ML.NET and LLM):

Validation

  • Selection follows the decision tree — no LLM for tasks ML.NET handles
  • Only what was asked is produced (plan-only requests get a plan, not code)
  • AI/ML services registered via DI; config via IOptions<T>; keys from secure sources
  • Branch guardrails (Step 2 essentials, plus the reference when implementing) are satisfied
  • After implementing, build and run existing tests

Anti-Patterns to Reject

Anti-patternRedirect
LLM for tabular classificationUse ML.NET — faster, cheaper, deterministic
LLM calls without retry/timeoutAdd RetryingChatClient or Polly retry
API keys in committed appsettings.jsonuser-secrets / env / Key Vault
Accord.NET, or defaulting to Semantic Kernel without a requirementML.NET; prefer MEAI + Microsoft.Agents.AI for new work
Hand-rolled multi-step tool loops with IChatClientMicrosoft.Agents.AI (MaximumIterations, tool dispatch)
Agent Framework for a single prompt→responseIChatClient directly
Raw HttpClient/OpenAI SDK in business logic alongside MEAIone abstraction layer; depend on IChatClient
PredictionEngine singleton in ASP.NET CorePredictionEnginePool<TIn,TOut> (not thread-safe)
RAG without chunking or relevance filteringsemantic chunking + minimum similarity score
Building custom neural nets in .NET from scratchpre-trained via ONNX Runtime or an LLM API

© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 7 other files (references) in plugins/dotnet-ai/skills/technology-selection of dotnet/skills.

  • SKILL.md
  • references/agentic.md
  • references/classic-ml.md
  • references/copilot.md
  • references/llm.md
  • references/ollama.md
  • references/onnx.md
  • references/rag.md

Open the folder on GitHubat commit 8d670fa

Used in 2 other repositories

We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in dotnet/skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Technology Selection next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Technology Selection compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Technology Selection this skilldotnet/skills5.6k2 repos~2.1kAutomated safety check: PassMIT
Re AI Modeldslsdzc/rev-skills117—~2.4kAutomated safety check: PassApache-2.0
Formattingbrendanhasz/probflow175—~381Automated safety check: PassMIT
Ray Train Distributed TrainingOrchestra-Research/AI-Research-SKILLs13k3 repos~2.7kAutomated safety check: PassMIT
Embedded AI Deploymentmatlab/agent-skills-playground1811 repos~3.4kAutomated safety check: PassCustom licence
Ray Data for ML PipelinesOrchestra-Research/AI-Research-SKILLs13k3 repos~1.8kAutomated safety check: PassMIT

Similar skills

  • Re AI Model

    dslsdzc/rev-skills

    AI 模型文件逆向与静态分析:ONNX/PyTorch/Safetensors/TFLite 格式解析、 网络结构还原、权重提取、文件级水印分析(权重 pattern/metadata/tensor hash/embedding 异常)。

    117 GitHub stars~2.4k tokensUpdated 2 days ago
    AI & LLM EngineeringAuto-check passed
  • Formatting

    brendanhasz/probflow

    Ensure consistent code formatting using the uv package manager and pre-commit.

    175 GitHub stars~381 tokensUpdated 10 days ago
    AI & LLM EngineeringAuto-check passed
  • Ray Train Distributed Training

    Orchestra-Research/AI-Research-SKILLs

    Scales PyTorch, TensorFlow and Hugging Face training from a single GPU to multi-node clusters with Ray Train, including Ray Tune sweeps and checkpoint recovery.

    13k GitHub starsUsed in 3 repos~2.7k tokens
    AI & LLM EngineeringAuto-check passed
  • Embedded AI Deployment

    matlab/agent-skills-playground

    Deploy AI models to embedded hardware using MathWorks tools (MATLAB, Simulink, Embedded Coder).

    181 GitHub starsUsed in 1 repo~3.4k tokens
    AI & LLM EngineeringAuto-check passed
  • Ray Data for ML Pipelines

    Orchestra-Research/AI-Research-SKILLs

    Uses Ray Data to read, transform and write large datasets across a cluster for ML training and batch inference, with streaming execution and optional GPU steps.

    13k GitHub starsUsed in 3 repos~1.8k tokens
    Data & AnalyticsAuto-check passed
  • Perforatedai

    PerforatedAI/PerforatedAI

    Expert in PerforatedAI library for adding artificial dendrites to PyTorch neural networks.

    237 GitHub stars~17k tokensUpdated today
    AI & LLM EngineeringAuto-check passed

More from dotnet/skills

All 91 skills in this repo
  • Official

    Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.

    5.6k GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed
  • Official

    Resolves native crash frames from .NET Android tombstones to function names, source files and line numbers using BuildIds, Microsoft's symbol server and llvm-symbolizer.

    5.6k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Official

    Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.

    5.6k GitHub starsUsed in 3 repos~3.1k tokens
    Auto-check passed
  • Official

    Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.

    5.6k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check passed
  • Microbenchmarking

    dotnet/skills

    Official

    Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks.

    5.6k GitHub starsUsed in 3 repos~3.3k tokens
    Auto-check passed
  • Official

    Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.

    5.6k GitHub starsUsed in 2 repos~4.2k tokens
    Auto-check passed

Questions about Technology Selection

What does Technology Selection 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…. Technology Selection is an agent skill from dotnet/skills, published by the product's own GitHub organization.AI (MEAI), Microsoft Agent Framework (MAF), GitHub Copilot SDK, ONNX Runtime, and OllamaSharp.

When should I use Technology Selection?

Technology Selection fits situations like: adding classification; anomaly detection; LLM integration (text generation; RAG pipelines with vector search.

How do I install Technology Selection in Claude Code?

Run `npx skills add dotnet/skills --skill technology-selection -a claude-code`. Or copy the skill folder (plugins/dotnet-ai/skills/technology-selection in dotnet/skills) into .claude/skills/technology-selection in your project. Claude Code loads it when a task matches its description.

How do I install Technology Selection in Codex?

Run `npx skills add dotnet/skills --skill technology-selection -a codex`. Or copy the skill folder (plugins/dotnet-ai/skills/technology-selection in dotnet/skills) into .agents/skills/technology-selection in your project. Codex loads it when a task matches its description.

Can I use Technology Selection in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/skills --skill technology-selection -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/technology-selection, .gemini/skills/technology-selection, .github/skills/technology-selection and .opencode/skills/technology-selection in your project.

What does Technology Selection need to run?

SKILL.md names no scripts, command-line tools or credentials: Technology Selection is instructions for the agent only. Our summary lists: Python 3.

Does Technology Selection access the network?

SKILL.md names 1 domain. As links in the text: ollama.com. This is read from the text; nothing was executed.

Is Technology Selection safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Technology Selection use?

Technology Selection is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Technology Selection use?

About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.9k tokens, read only when the agent opens those files.

What are the alternatives to Technology Selection?

Skills that share tags, products or a category with Technology Selection: Re AI Model (dslsdzc/rev-skills, 117 stars), Formatting (brendanhasz/probflow, 175 stars), Ray Train Distributed Training (Orchestra-Research/AI-Research-SKILLs, 13k stars) and Embedded AI Deployment (matlab/agent-skills-playground, 181 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Technology Selection?

dotnet (a GitHub organization, an official publisher) maintains it in dotnet/skills, which has 5,568 GitHub stars. The repository holds 91 skills in this directory. The repository was last updated on October 7, 2026.

Source: dotnet/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.