Skip to content

[Proposal] dotnet-ai plugin: AI and ML skills for .NET #225

Description

@luisquintanilla

Summary

This proposal introduces a new dotnet-ai plugin to the dotnet/skills repository containing a set of discrete, composable AI and ML skills for .NET developers.

The .NET AI/ML ecosystem has grown significantly — Microsoft.Extensions.AI, Microsoft.Agents.AI, ML.NET's deep learning support (TorchSharp), ONNX Runtime, vector data connectors, and the GitHub Copilot SDK all provide powerful capabilities. But developers face a real problem: knowing which library to use when, and how to wire them together correctly. These skills encode that expert knowledge.

Design Philosophy

Each skill follows the agent skills philosophy:

  • Purposeful — solves a real, repeatable .NET AI/ML problem
  • Concise — encodes decisions, not options
  • Scoped — small enough to explain in one or two sentences
  • Composable — designed to be reused as part of larger workflows (e.g., RAG pipeline composes embeddings + vector search + ingestion + chat)
  • Validated — each skill has an eval.yaml with concrete scenarios

Layering Model

The skills are organized around the .NET AI stack:

Layer Technology Skill(s)
Harness GitHub Copilot SDK copilot-sdk-integration
Runtime Microsoft Agent Framework (MAF) agentic-workflow
Framework Microsoft.Extensions.AI (MEAI) meai-chat-integration, meai-embeddings
Classical ML ML.NET + TorchSharp mlnet
Inference ONNX Runtime, Ollama, Foundry Local onnx-runtime-inference, local-llm-inference
Data VectorData, DataIngestion vector-data-search, data-ingestion-pipeline
Composition RAG = chat + embeddings + vector + ingestion rag-pipeline
Router Decision tree across all skills technology-selection

Proposed Skills

# Skill Scope Reference Files
1 meai-chat-integration IChatClient setup, middleware pipeline, streaming, structured output, retry/resilience, model pinning, token counting tokenizers.md
2 meai-embeddings IEmbeddingGenerator setup, batch generation, dimension selection
3 mlnet Classical ML (classification, regression, clustering, etc.) + deep learning (image classification, object detection, NER, QA, text classification via TorchSharp). Full train, evaluate, deploy lifecycle custom-transforms.md, dataframe.md, torchsharp.md
4 vector-data-search Microsoft.Extensions.VectorData abstractions, connector selection, hybrid search
5 data-ingestion-pipeline Microsoft.Extensions.DataIngestion pipeline, chunking strategies, enrichers
6 onnx-runtime-inference ONNX Runtime inference in .NET, standalone and via ML.NET, execution providers (CPU/GPU/DirectML) tensors.md
7 local-llm-inference Running LLMs locally via Ollama and Foundry Local through IChatClient
8 agentic-workflow Microsoft Agent Framework: AIAgent, AgentSession, AsAIFunction multi-agent composition, durable agents, A2A protocol
9 copilot-sdk-integration GitHub Copilot SDK three dimensions: LLM backend (zero-config auth, BYOK), agent harness (sessions, MCP, safe outputs), platform extensions. Includes Bridge Pattern (prototype with Copilot, deploy with Azure)
10 rag-pipeline End-to-end retrieval-augmented generation composing ingestion + embeddings + vector search + chat
11 technology-selection Meta/router skill: decision tree that routes developers to the correct skill based on their task

Description Size Budget

Per the discussion in #222, description sizes are within proposed limits:

  • Largest single description: 692 chars (mlnet)
  • Plugin aggregate: 4,918 chars across 11 skills (avg 447)

Relationship to Existing Work

Issue #31 describes the need for .NET Agent Framework authoring guidance. This proposal decomposes that and adjacent AI/ML scenarios into discrete composable skills — agentic-workflow covers the MAF agent authoring piece, while the other skills handle the broader AI/ML landscape.

Plugin Structure

plugins/dotnet-ai/
  plugin.json
  agents/
  skills/
    meai-chat-integration/
      SKILL.md
      references/
        tokenizers.md
    meai-embeddings/SKILL.md
    mlnet/
      SKILL.md
      references/
        custom-transforms.md
        dataframe.md
        torchsharp.md
    vector-data-search/SKILL.md
    data-ingestion-pipeline/SKILL.md
    onnx-runtime-inference/
      SKILL.md
      references/
        tensors.md
    local-llm-inference/SKILL.md
    agentic-workflow/SKILL.md
    copilot-sdk-integration/SKILL.md
    rag-pipeline/SKILL.md
    technology-selection/SKILL.md
tests/dotnet-ai/
  <one eval.yaml per skill>

Suggested Merge Order

Skills have a dependency graph for cross-references. Suggested order:

  1. Plugin scaffold — plugin.json, empty dirs, CODEOWNERS, marketplace.json
  2. Foundation skills (any order): meai-chat-integration, meai-embeddings, mlnet, vector-data-search + data-ingestion-pipeline, onnx-runtime-inference + local-llm-inference
  3. Agent stack: agentic-workflow + copilot-sdk-integration (Bridge Pattern links them)
  4. RAG pipeline — composes foundation skills
  5. Technology selection — router, references all skills; lands last

Sub-Issues

Each deliverable unit has its own sub-issue with detailed scope, linked below.

Open Questions

  • Does dotnet-ai as a plugin name work, or is there a preferred naming convention?
  • Any skills the team wants to defer, cut, or combine?
  • Ownership: who should be listed in CODEOWNERS?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions