Dotnet Debugging
novotnyllc/dotnet-artisan
Debugs Windows and Linux/macOS applications (native, .NET/CLR, mixed-mode) with WinDbg MCP (crash dumps, !analyze, !syncblk, !dlk, !runaway, !dumpheap, !gcroot, BSOD), dotnet-dump, lldb with SOS…
Creates and maintains the per-distro JSON files that list the native packages .NET needs on each Linux distribution, scoped to one .NET version.
$ npx skills add dotnet/core --skill update-distro-packages -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dotnet/core update-distro-packages --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dotnet/core.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/update-distro-packages .claude/skills/update-distro-packages && rm -rf skills-srcUse ~/.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/
Install the "update-distro-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-distro-packages into .claude/skills/update-distro-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-distro-packages", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dotnet/core/tree/main/.github/skills/update-distro-packagesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dotnet/core --skill update-distro-packages -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dotnet/core update-distro-packages --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/core.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/update-distro-packages .agents/skills/update-distro-packages && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "update-distro-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-distro-packages into .agents/skills/update-distro-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-distro-packages", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/core --skill update-distro-packages -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dotnet/core update-distro-packages --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/core.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/update-distro-packages .cursor/skills/update-distro-packages && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "update-distro-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-distro-packages into .cursor/skills/update-distro-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-distro-packages", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dotnet/core.git --path .github/skills/update-distro-packages--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dotnet/core --skill update-distro-packages -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dotnet/core update-distro-packages --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/core.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/update-distro-packages .gemini/skills/update-distro-packages && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "update-distro-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-distro-packages into .gemini/skills/update-distro-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-distro-packages", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dotnet/core update-distro-packagesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dotnet/core --skill update-distro-packages -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dotnet/core.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/update-distro-packages .github/skills/update-distro-packages && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "update-distro-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-distro-packages into .github/skills/update-distro-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-distro-packages", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/core --skill update-distro-packages -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dotnet/core update-distro-packages --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/core.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/update-distro-packages .opencode/skills/update-distro-packages && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "update-distro-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-distro-packages into .opencode/skills/update-distro-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-distro-packages", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
update-distro-packagesCreates and maintains the per-distro JSON files that list the native packages .NET needs on each Linux distribution, scoped to one .NET version.
Inside the release-notes data for each .NET version sits a `distros/` folder, and this skill manages it. It holds a distro-agnostic `dependencies.json` listing what .NET needs, updated once per major release, an `index.json` with the alphabetically sorted per-distro file names, and one JSON file per distribution such as `ubuntu.json`, each with its install command and packages and no version field because the folder gives the version.
It is used to set up `distros/` for a new .NET version, to add or remove a distro release from the support matrix, to rename dependency packages when a distro version changes (for example `libicu74` to `libicu76` on a new Ubuntu), and to audit the data periodically. The `release-notes` .NET global tool must be installed for markdown generation and package availability queries, and the agent checks for it and installs or updates it from the NuGet source given in the skill. Filling in which .NET packages each distro offers is optional and needs a `PKGS_ORG_TOKEN`, which requires a pkgs.org Gold+ subscription. Changes to supported-os.json belong to a separate skill.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 44927bc. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
curlpython3apt-getdotnetgitwgetFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
packages.ubuntu.comnuget.pkg.github.combodhi.fedoraproject.orgsrc.fedoraproject.orgpackages.microsoft.comAlso links to:
pkgs.orggithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
PKGS_ORG_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Update .NET Distro Packages loads about 4.3k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 1,420 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
install -y software-properties-common && sudo add-apt-repository ppa:dotnet/backports && sudo apt-get update",install -y software-properties-common && sudo add-apt-repository ppa:dotnet/backports && sudo apt-get update",sudo apt-get install -y software-properties-common && sudo add-apt-repository ppa:dotnet/backports && sudo apt-get updatb -O /tmp/packages-microsoft-prod.deb && sudo dpkg -i /tmp/packages-microsoft-prod.deb && rm /tmp/packages-microsoft-proAutomated 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.
The full file from dotnet/core at commit 44927bc, republished under its MIT licence (© dotnet). 1,420 words, ~4,310 tokens.
.claude/skills/update-distro-packages/SKILL.md (or your agent's skills folder).Create and maintain per-distro JSON files in release-notes/{version}/distros/. Each file declares the native packages .NET depends on for a specific distribution, scoped to a single .NET version.
release-notes/{version}/distros/
├── dependencies.json # distro-agnostic dependency list (what .NET needs)
├── index.json # lists all per-distro file names
├── alpine.json # per-distro: dependencies with distro-specific names
├── ubuntu.json
├── fedora.json
└── ...distros/ directory created for the first timelibicu74 → libicu76 on a new Ubuntu)The release-notes tool must be installed for markdown generation and package availability queries. The public dotnet-release tool is now for browsing release data and CVEs.
# Check if already installed
release-notes --versionIf not installed:
dotnet tool install -g release-notes \
--add-source https://nuget.pkg.github.com/richlander/index.jsonIf already installed, update to latest:
dotnet tool update -g release-notes \
--add-source https://nuget.pkg.github.com/richlander/index.jsonThe user provides:
Ask the user: Do you want to update dotnet packages (which .NET packages are available in each distro)? If so, ask them to provide or set PKGS_ORG_TOKEN. This requires a pkgs.org Gold+ subscription.
Distro-agnostic list of packages .NET requires. Updated once per major release — rarely changes.
{
"channel_version": "11.0",
"packages": [
{
"id": "libc",
"name": "C Library",
"required_scenarios": ["all"],
"references": ["https://..."]
},
{
"id": "openssl",
"name": "OpenSSL",
"required_scenarios": ["https", "cryptography"],
"min_version": "1.1.1",
"references": ["https://..."]
}
]
}Omit min_version and references when null/empty.
{
"channel_version": "11.0",
"distros": [
"alpine.json",
"azure_linux.json",
"ubuntu.json"
]
}Alphabetically sorted list of per-distro file names.
Scoped to the .NET version of the parent directory. No dotnet_versions field — the version is the directory.
{
"name": "Ubuntu",
"install_command": "apt-get install -y {packages}",
"releases": [
{
"name": "Ubuntu 24.04 (Noble Numbat)",
"release": "24.04",
"dependencies": [
{ "id": "ca-certificates", "name": "ca-certificates" },
{ "id": "libc", "name": "libc6" },
{ "id": "libicu", "name": "libicu74" },
{ "id": "openssl", "name": "libssl3t64" }
]
}
]
}Optional fields on each release (populated by package availability queries):
{
"dotnet_packages": [
{ "component": "sdk", "name": "dotnet-sdk-11.0" },
{ "component": "runtime", "name": "dotnet-runtime-11.0" }
],
"dotnet_packages_other": {
"backports": {
"install_command": "sudo apt-get install -y software-properties-common && sudo add-apt-repository ppa:dotnet/backports && sudo apt-get update",
"packages": [
{ "component": "sdk", "name": "dotnet-sdk-11.0" }
]
}
}
}The install_command in dotnet_packages_other is the command to register the feed — it must be run before packages can be installed with the distro's normal install command. This field is required for every alternative feed entry. See Known alternative feed commands for values.
Use os-packages.json from the same version (if it exists) or the previous .NET version as the source for dependency data:
cat release-notes/{version}/os-packages.json
# or from a previous version:
cat release-notes/{prev-version}/os-packages.jsonAlso reference release-notes/{version}/supported-os.json for the list of supported Linux distributions and versions.
Extract the packages array from os-packages.json. Convert keys to snake_case:
required-scenarios → required_scenariosmin-version → min_versionThis file changes very rarely — it lists what .NET needs, not what distros call things.
For each distribution in os-packages.json:
_ (e.g. azure_linux.json, centos_stream.json)install_command: From the distro's install-commands — use the last command, format as {command-root} {command-parts}, normalize {packageName} → {packages}releases: One entry per distro release, with dependencies sorted alphabetically by iddotnet_packages or dotnet_packages_other — those are populated separatelyThe scope of distros/ is broader than supported-os.json. Include pre-release distro versions and permanent rolling channels where the package information is helpful:
These are informational — their presence does not imply official .NET support.
List all per-distro file names alphabetically.
# Verify all JSON parses
for f in release-notes/{version}/distros/*.json; do
python3 -c "import json; json.load(open('$f'))" && echo "OK: $f"
doneConfirm every Linux distro in supported-os.json has a corresponding file.
Regenerate dotnet-dependencies.md from the JSON files:
release-notes generate dotnet-dependencies {version} release-notesThis produces release-notes/{version}/dotnet-dependencies.md with copy-pasteable install commands for each distro and release. Never hand-edit this file — it is generated from the JSON.
supported-os.json for the new releasename, release, and any changed package names (e.g. libicu74 → libicu76)Delete the release object from the releases array. If the entire distro is dropped, delete the file and remove it from index.json.
Update the name field in the relevant dependency entry. Package names change between distro releases due to shared library versioning (e.g. libicu70 on Ubuntu 22.04 → libicu74 on 24.04).
This populates dotnet_packages and dotnet_packages_other in each per-distro file — recording which .NET packages (SDK, runtime, ASP.NET Core) are available in each distro's package feeds.
Requires PKGS_ORG_TOKEN to be set.
export PKGS_ORG_TOKEN=<token>
release-notes query distro-packages --dotnet-version {version} --output /tmp/distro-packages.jsonThis queries pkgs.org and supplemental feeds (Ubuntu backports via Launchpad, Homebrew, NixOS) and writes a JSON file with package availability per distro.
The output file has this structure:
{
"channel_version": "10.0",
"last_verified": "2026-03-25",
"distributions": [
{
"name": "Ubuntu",
"releases": [
{
"name": "Ubuntu 24.04",
"release": "24.04",
"feeds": {
"builtin": [
{ "component_id": "sdk", "package_name": "dotnet-sdk-10.0" },
{ "component_id": "runtime", "package_name": "dotnet-runtime-10.0" },
{ "component_id": "aspnetcore-runtime", "package_name": "aspnetcore-runtime-10.0" }
],
"backports": [
{ "component_id": "sdk", "package_name": "dotnet-sdk-10.0" }
]
}
}
]
}
]
}For each distro+release in the query results, match it to the corresponding per-distro file and update:
feeds["builtin"] → dotnet_packages (flat list)feeds["backports"]) → dotnet_packages_other["backports"]Field mapping from query → per-distro file:
| Query field | Per-distro field |
|---|---|
component_id | component |
package_name | name |
Every dotnet_packages_other entry must include an install_command — the command to register that feed before packages can be installed. See Known alternative feed commands for the values to use.
Example — if the query returns this for Ubuntu 24.04:
"feeds": {
"builtin": [
{ "component_id": "sdk", "package_name": "dotnet-sdk-10.0" }
],
"backports": [
{ "component_id": "sdk", "package_name": "dotnet-sdk-10.0" }
]
}Then ubuntu.json release 24.04 becomes:
{
"name": "Ubuntu 24.04 (Noble Numbat)",
"release": "24.04",
"dependencies": [ ... ],
"dotnet_packages": [
{ "component": "sdk", "name": "dotnet-sdk-10.0" }
],
"dotnet_packages_other": {
"backports": {
"install_command": "sudo apt-get install -y software-properties-common && sudo add-apt-repository ppa:dotnet/backports && sudo apt-get update",
"packages": [
{ "component": "sdk", "name": "dotnet-sdk-10.0" }
]
}
}
}Not all distros appear in the query results (e.g. RHEL packages are in a subscription-only repo). Leave dotnet_packages absent for those — do not add an empty list.
pkgs.org may not have data for newly released distro versions yet. When a supported distro release is missing from the query results, check the distro's own package list as a fallback.
Ubuntu — query packages.ubuntu.com for the release codename:
curl -s "https://packages.ubuntu.com/{codename}/allpackages?format=txt.gz" \
| gunzip | grep -i "dotnet.*{major}"
curl -s "https://packages.ubuntu.com/{codename}/allpackages?format=txt.gz" \
| gunzip | grep -i "aspnetcore.*{major}"For example, to check Ubuntu 26.04 (codename resolute) for .NET 10:
curl -s "https://packages.ubuntu.com/resolute/allpackages?format=txt.gz" \
| gunzip | grep -iE "(dotnet|aspnetcore).*10"If the packages are found (e.g. dotnet-sdk-10.0, dotnet-runtime-10.0, aspnetcore-runtime-10.0 in the universe component), add them as dotnet_packages for that release.
Fedora — query the Bodhi update system and source RPM spec:
# Check which Fedora releases have dotnet builds
curl -s "https://bodhi.fedoraproject.org/updates/?packages=dotnet{major}.{minor}&rows_per_page=20" \
| python3 -c "
import sys, json
for u in json.load(sys.stdin).get('updates', []):
print(f\"{u['release']['name']}: {u['title']} ({u['status']})\")"For example, to check .NET 10.0:
curl -s "https://bodhi.fedoraproject.org/updates/?packages=dotnet10.0&rows_per_page=20" \
| python3 -c "
import sys, json
for u in json.load(sys.stdin).get('updates', []):
print(f\"{u['release']['name']}: {u['title']} ({u['status']})\")"Results show each Fedora release with its build status (e.g. F44: dotnet10.0-10.0.104-1.fc44 (testing)). To confirm the subpackage names, check the spec file:
curl -s "https://src.fedoraproject.org/rpms/dotnet{major}.{minor}/blob/f{release}/f/dotnet{major}.{minor}.spec" \
| grep -E "^%package|^Name:"Fedora packages follow a consistent naming scheme (dotnet-sdk-{major}.{minor}, dotnet-runtime-{major}.{minor}, aspnetcore-runtime-{major}.{minor}), so this is mainly a confirmation step.
Other distros — Alpine packages can be checked at pkgs.alpinelinux.org. For most other distros, pkgs.org covers them well. Only fall back to direct queries when pkgs.org is missing data for a release you expect to have packages.
Show the user a summary of which distros+releases have packages and from which feeds, and flag any gaps (supported distro but no packages found).
After any JSON changes, regenerate both markdown files:
release-notes generate dotnet-dependencies {version} release-notes
release-notes generate dotnet-packages {version} release-notesdotnet-dependencies.md — what OS packages .NET requires (from dependency data)dotnet-packages.md — where to get .NET packages (from dotnet_packages / dotnet_packages_other data)Important: Do not hand-edit these markdown files. They are generated from the distros/ JSON files. If the output needs to change, update the generator or template in dotnet-release.
git add release-notes/{version}/distros/ release-notes/{version}/dotnet-dependencies.md release-notes/{version}/dotnet-packages.md
git commit -m "Update {version} distro packages — <summary>"When packages come from a non-builtin feed, the install_command field tells users how to register that feed before installing packages. Use the exact commands below.
Feed name: backports
sudo apt-get install -y software-properties-common && sudo add-apt-repository ppa:dotnet/backports && sudo apt-get updateThis PPA provides .NET packages for older Ubuntu LTS releases that don't carry .NET in the default archive. add-apt-repository comes from software-properties-common, which is often missing in containers and other minimal environments. After registering, packages are installed with the normal apt-get install command.
Feed name: microsoft
wget https://packages.microsoft.com/config/{distro}/{version}/packages-microsoft-prod.deb -O /tmp/packages-microsoft-prod.deb && sudo dpkg -i /tmp/packages-microsoft-prod.deb && rm /tmp/packages-microsoft-prod.debReplace {distro} and {version} with the distro name and version (e.g. ubuntu/22.04, debian/12). Note: Microsoft is phasing out PMC for Ubuntu 24.04+ — prefer the builtin or backports feed when available.
If the query returns a feed name not listed above, ask the user for the registration command. Do not guess — incorrect feed setup commands are worse than none.
release-notes/11.0/distros/ubuntu.json is about .NET 11.0 on Ubuntuid (e.g. libicu) with a distro-specific name (e.g. libicu74)dependencies.json is the "what .NET needs" list; per-distro files map those to real package nameslibicu are versioned on Debian/Ubuntu (e.g. libicu76) but not on Fedora/RHEL (just libicu)dotnet{major}-{component} (e.g. dotnet9-sdk)dotnet-sdk-{major}.{minor}, dotnet-runtime-{major}.{minor}install_command uses {packages} as a placeholder for the package listThe name fields (both top-level distro name and per-release names) must use full display names, never acronyms. These names appear in generated markdown and user-facing documentation.
| ❌ Acronym | ✅ Full display name |
|---|---|
| RHEL | Red Hat Enterprise Linux |
| SLES | SUSE Linux Enterprise Server |
Examples:
"name": "Red Hat Enterprise Linux" (not "RHEL")"name": "Red Hat Enterprise Linux 9" (not "RHEL 9")"name": "SUSE Linux Enterprise Server" (not "SLES")"name": "SUSE Linux Enterprise Server 15.7" (not "SLES 15.7")File names (rhel.json, sles.json) remain short — only the name fields inside must use full names. When creating new distro files or adding releases, always verify the display name is the full product name, not an abbreviation.
© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/update-distro-packages of dotnet/core.
Open the folder on GitHubat commit 44927bc
Update .NET Distro Packages 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Update .NET Distro Packages this skilldotnet/core | 22k | — | ~4.3k | Automated safety check: Notes | MIT | |
| Dotnet Debuggingnovotnyllc/dotnet-artisan | 233 | — | ~2.1k | Automated safety check: Pass | MIT | |
| GitVersion .NET DevelopmentGitTools/GitVersion | 3.1k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Dependency UpdaterAsvarox/allkaraoke | 261 | 4 repos | ~3.5k | Automated safety check: Pass | MIT | |
| RStudio Copilot Language Server Updaterrstudio/rstudio | 5.1k | — | ~1.1k | Automated safety check: Pass | Custom licence | |
| Bump LibdatadogDataDog/dd-trace-dotnet | 573 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 |
novotnyllc/dotnet-artisan
Debugs Windows and Linux/macOS applications (native, .NET/CLR, mixed-mode) with WinDbg MCP (crash dumps, !analyze, !syncblk, !dlk, !runaway, !dumpheap, !gcroot, BSOD), dotnet-dump, lldb with SOS…
GitTools/GitVersion
Gives repository-specific .NET guidance for GitVersion: build and test commands, central package management, project layout and coding conventions.
Asvarox/allkaraoke
Smart dependency management for any language. An agent skill from Asvarox/allkaraoke.
rstudio/rstudio
Advances RStudio's pinned copilot-language-server dependency to a specified release, then uploads it to S3, verifies the install, and opens a PR.
DataDog/dd-trace-dotnet
Update/bump the libdatadog native library version in dd-trace-dotnet.
net-daemon/netdaemon
Upgrade all or selected NuGet packages in net-daemon/netdaemon with dotnet-outdated, validate the full solution, and optionally publish a dependency-update PR with gh-axi.
dotnet/core
Audits and updates os-packages.json files listing the Linux packages each .NET release needs per distro, then regenerates the Markdown from the JSON.
dotnet/core
Audits and updates the supported-os.json files for .NET releases, checking them against upstream lifecycle data and regenerating the markdown with the release-notes tool.
dotnet/core
Validates .NET release data with the release-notes CLI: download URL liveness, SHA512 hashes, CDN latest.version files and aka.ms redirects.
dotnet/core
Produces the changes.json manifest for a .NET preview, RC or GA milestone by choosing the right VMR base and head refs and running release-notes generate changes.
dotnet/core
Ranks the changes in a release manifest and writes a scored features file that release notes, docs and blog posts can each cut at their own threshold.
dotnet/core
Audits a scored features.json file and its draft release notes against editorial examples to catch over-scored, under-scored, or missing entries.
Categories
Creates and maintains the per-distro JSON files that list the native packages .NET needs on each Linux distribution, scoped to one .NET version. NET version sits a `distros/` folder, and this skill manages it.json`, each with its install command and packages and no version field because the folder gives the version.
Update .NET Distro Packages fits situations like: setting up the distros directory for a new .NET version; adding or removing a Linux distro release from the support matrix; updating dependency package names after a distro version change; auditing the package data to keep it current.
Run `npx skills add dotnet/core --skill update-distro-packages -a claude-code`. Or copy the skill folder (.github/skills/update-distro-packages in dotnet/core) into .claude/skills/update-distro-packages in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dotnet/core --skill update-distro-packages -a codex`. Or copy the skill folder (.github/skills/update-distro-packages in dotnet/core) into .agents/skills/update-distro-packages in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/core --skill update-distro-packages -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/update-distro-packages, .gemini/skills/update-distro-packages, .github/skills/update-distro-packages and .opencode/skills/update-distro-packages in your project.
Going by SKILL.md and its folder, Update .NET Distro Packages needs the command-line tools its instructions call (curl, python3, apt-get, dotnet, git and wget) and credentials named PKGS_ORG_TOKEN. Our summary lists: The `release-notes` .NET global tool; A checkout of the .NET release-notes data; A pkgs.org Gold+ subscription and PKGS_ORG_TOKEN, only to update package availability.
SKILL.md names 7 domains. In commands or code: packages.ubuntu.com, nuget.pkg.github.com, bodhi.fedoraproject.org, src.fedoraproject.org and packages.microsoft.com; the agent is likely to contact these when it follows the instructions. As links in the text: pkgs.org and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Update .NET Distro Packages is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Update .NET Distro Packages: Dotnet Debugging (novotnyllc/dotnet-artisan, 233 stars), GitVersion .NET Development (GitTools/GitVersion, 3.1k stars), Dependency Updater (Asvarox/allkaraoke, 261 stars) and RStudio Copilot Language Server Updater (rstudio/rstudio, 5.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dotnet (a GitHub organization, an official publisher) maintains it in dotnet/core, which has 22,038 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 7, 2026.
Source: dotnet/core on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.