-
Notifications
You must be signed in to change notification settings - Fork 17
Description
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:
- Plugin scaffold — plugin.json, empty dirs, CODEOWNERS, marketplace.json
- Foundation skills (any order): meai-chat-integration, meai-embeddings, mlnet, vector-data-search + data-ingestion-pipeline, onnx-runtime-inference + local-llm-inference
- Agent stack: agentic-workflow + copilot-sdk-integration (Bridge Pattern links them)
- RAG pipeline — composes foundation skills
- Technology selection — router, references all skills; lands last
Sub-Issues
Each deliverable unit has its own sub-issue with detailed scope, linked below.
- [dotnet-ai] Plugin scaffold #226 Plugin scaffold
- [dotnet-ai] MEAI chat integration #227 MEAI chat integration
- [dotnet-ai] MEAI embeddings #228 MEAI embeddings
- [dotnet-ai] ML.NET training and deployment #229 ML.NET training & deployment
- [dotnet-ai] Vector data search + data ingestion pipeline #230 Vector data search + data ingestion pipeline
- [dotnet-ai] ONNX Runtime + local LLM inference #231 ONNX Runtime + local LLM inference
- [dotnet-ai] Agent stack (agentic-workflow + copilot-sdk-integration) #232 Agent stack (agentic-workflow + copilot-sdk-integration)
- [dotnet-ai] RAG pipeline #233 RAG pipeline
- [dotnet-ai] Technology selection (router) #234 Technology selection (router)
Open Questions
- Does
dotnet-aias 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?