dotnet / dotnet/core

Add external-facing skill for distro package and dependency discovery

Open
#10,333 1 comment 0 reactions 0 assignees View on GitHub
area-setup
Dominant language
PowerShell
Stars
22k
Forks
4.9k
Avg merge
5d 5h
Merged PRs (30d)
29

Description

## Context

The existing skills in `.github/skills/` are **repo-maintenance** skills — they help agents *produce* release data (update supported-os, generate the release graph, enrich CVEs, etc.). They are designed for contributors working inside this repository.

We need a complementary **external-facing** skill that helps agents *consume* this data to answer user questions. The immediate use case is distro package and dependency information, which is now available as structured JSON in `release-notes/{version}/distros/`.

### Motivating scenario

The VS Code .NET runtime extension is [adding Language Model Tools](https://github.com/dotnet/vscode-dotnet-runtime/pull/2557) so AI agents can help users install and manage .NET. When a user asks an agent to install .NET on their Linux distro, the agent needs to know:

1. **What packages to install** — the distro-specific package names (e.g. `dotnet-sdk-10.0` on Ubuntu, `dotnet-sdk-10.0` on Fedora)
2. **What dependencies are required** — the native library packages the runtime needs (e.g. `libicu78` on Ubuntu 26.04, `libicu74` on Ubuntu 24.04)
3. **What install command to use** — `apt-get install` vs `dnf install` vs `apk add`, etc.

This information is already in the repo as structured JSON ([example: Ubuntu 10.0](https://github.com/dotnet/core/blob/main/release-notes/10.0/distros/ubuntu.json)), but there's no skill to help an agent navigate and interpret it.

### What the skill should do

Given a user question like *"What packages do I need to install .NET 10 on Ubuntu 24.04?"*, the skill should:

1. Navigate to `release-notes/{version}/distros/index.json` to find available distros
2. Load the distro-specific JSON file (e.g. `ubuntu.json`)
3. Match the user's distro release to the correct entry
4. Return the dependency packages, .NET packages, and install command

### Data structure

The distro data is organized as:

```
release-notes/{version}/distros/
├── index.json # Maps distro filenames → display names
├── dependencies.json # Cross-distro dependency catalog with descriptions
├── ubuntu.json # Per-distro: releases, dependencies, dotnet packages
├── fedora.json
├── alpine.json
└── ...
```

Each distro file contains per-release entries with:
- `dependencies[]` — native library packages (with canonical `id` and distro-specific `name`)
- `dotnet_packages[]` — .NET component packages available from package feeds
- `install_command` — the package manager command template

### Design considerations

- **Read-only skill** — this skill only reads data, it doesn't modify anything
- **Multi-version** — should support querying across .NET versions (10.0, 11.0, etc.)
- **Fuzzy matching** — users may say "Ubuntu 24" or "Fedora" without specifying a release; the skill should handle this gracefully
- **Composable** — the VS Code extension or other tools could invoke this skill (or use the same data) to answer distro questions
- **Broader scope later** — this starts with distro data but should be extensible to other release-note queries (supported OS, EOL dates, latest versions, CVE history, etc.)

### Related

- [Per-distro package files](https://github.com/dotnet/core/tree/main/release-notes/10.0/distros) — the data this skill would consume
- [dotnet/vscode-dotnet-runtime#2557](https://github.com/dotnet/vscode-dotnet-runtime/pull/2557) — VS Code extension adding AI agent tools for .NET management
- [#10332](https://github.com/dotnet/core/pull/10332) — consolidated repo-maintenance skills PR

/cc @nagilson

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.