Install the "update-os-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-os-packages into .claude/skills/update-os-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-os-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.
Type 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.
skills CLI
$ npx skills add dotnet/core --skill update-os-packages -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "update-os-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-os-packages into .agents/skills/update-os-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-os-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.
skills CLI
$ npx skills add dotnet/core --skill update-os-packages -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "update-os-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-os-packages into .cursor/skills/update-os-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-os-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.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add dotnet/core --skill update-os-packages -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "update-os-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-os-packages into .gemini/skills/update-os-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-os-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.
GitHub CLI
$ gh skill install dotnet/core update-os-packages
Installs 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).
skills CLI
$ npx skills add dotnet/core --skill update-os-packages -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "update-os-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-os-packages into .github/skills/update-os-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-os-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.
skills CLI
$ npx skills add dotnet/core --skill update-os-packages -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "update-os-packages" agent skill from https://github.com/dotnet/core/tree/main/.github/skills/update-os-packages into .opencode/skills/update-os-packages/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-os-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.
Facts
Skill name
update-os-packages
GitHub stars
22k
Token cost
~2.3k tokens
SKILL.md length
945 words
Files
2 (incl. references)
Skills in repo
15
Repo updated
First seen
Licence
MIT
At a glance
Audits and updates os-packages.json files listing the Linux packages each .NET release needs per distro, then regenerates the Markdown from the JSON.
Works in 7 steps: Verify — check for issues (early out) → Determine scope of changes → Apply changes to os-packages.json → …
Adding package entries for a newly supported distro version
SKILL.md covers When to use, Prerequisites, Inputs and Process, plus 1 more section
Calls git, dotnet and npx; reaches nuget.pkg.github.com; needs GITHUB_TOKEN
What it does
The skill maintains os-packages.json files that declare which Linux packages each .NET release requires on each distribution. The matching os-packages.md files are generated from the JSON and must never be edited by hand. Its scope is broader than supported-os.json and also covers pre-release distro versions and permanent unstable channels such as Alpine edge and Debian sid.
The agent runs release-notes verify os-packages for each .NET version under audit to check package names against distro archives, then fixes problems and regenerates the Markdown. Typical triggers are a new distro version, a pre-release distro, a package renamed between releases, an end-of-life version to remove, and periodic audits. The release-notes .NET tool must be installed from GitHub Packages, which needs authentication with a token that has read:packages scope.
When your agent uses it
Adding package entries for a newly supported distro version
Fixing a Linux package name that is wrong for a distro release
Auditing os-packages.json for names that no longer exist in distro archives
Removing entries for an end-of-life OS version
Example prompts
“Add os-packages entries for the new Ubuntu release and verify the package names.”
“Audit the .NET 10.0 os-packages.json against the distro archives.”
“The libicu package name changed in the latest Debian. Update the entries and regenerate the Markdown.”
Requirements
The release-notes .NET tool, installed from GitHub Packages
A GitHub token with read:packages scope
Workflow steps
7 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.
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
Shell commands in SKILL.md call:
git
dotnet
npx
gh
From the folder's file list and the shell code blocks in SKILL.md.
Network
Hosts in commands or code, which the agent is likely to contact:
nuget.pkg.github.com
Also links to:
github.com
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names these keys or tokens, usually read from environment variables:
GITHUB_TOKEN
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Update .NET OS Packages loads about 2.3k tokens when it runs, and up to ~2.6k if it reads all its reference files. Until then it costs about 117 tokens; SKILL.md has 945 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~117
When it runs· the whole SKILL.md, loaded when a task matches
~2.3k
With references· SKILL.md plus every file in references/, read only if the agent opens them
~2.6k
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.
Download SKILL.mdSave it as .claude/skills/update-os-packages/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
update-os-packages
description
Audit and update os-packages.json/md files that document required Linux packages for each .NET release. Uses the release-notes tool to verify package names against distro archives and regenerate markdown. USE FOR: adding packages for new distro versions, fixing incorrect package names, periodic package audits. DO NOT USE FOR: supported-os.json changes (use update-supported-os skill), editing os-packages.md directly (it is generated from JSON).
Update OS Packages
Audit and update os-packages.json files in this repository. These files declare which Linux packages are required for each .NET release on each distribution. The corresponding os-packages.md files are generated from JSON — never hand-edit them.
The scope of os-packages.json is broader than supported-os.json. It includes any distro version where the package information is helpful — including pre-release versions of supported distros (e.g. Fedora 44 beta) and permanent unstable channels (Alpine edge, Debian sid).
When to use
A new distro version is added to supported-os.json and needs package entries
A pre-release distro version is available and package info would be helpful (e.g. Fedora beta, Ubuntu interim release)
A package name changes between distro releases (e.g. libicu74 → libicu76)
An OS version reaches end-of-life and its package entries should be removed
Periodic audit to verify package names still exist in distro archives
Prerequisites
The release-notes tool must be installed. The public dotnet-release tool is now for browsing release data and CVEs. Packages are published to GitHub Packages.
bash
# GitHub Packages requires authentication — use a GitHub token (PAT or GITHUB_TOKEN)
dotnet tool install -g release-notes \
--add-source https://nuget.pkg.github.com/richlander/index.json
# Verify
release-notes --help
Note: GitHub Packages requires authentication even for public repositories. If you get a 401 error, configure credentials for the source:
# Check 10.0 against local files
release-notes verify os-packages 10.0 release-notes
# Check against live data on GitHub (no local clone needed)
release-notes verify os-packages 10.0
Interpret the exit code:
Exit code 0 — No issues found. Stop here — nothing to do.
Exit code 2 — Issues found. The report is written to stdout as markdown. Proceed to step 2.
The verifier checks whether package names in the JSON actually exist in distro archives. It currently supports Ubuntu (via Launchpad API) and Debian (via packages.debian.org). Other distros are skipped.
If all versions return exit code 0, the package list is current. Stop here.
2. Determine scope of changes
Review the verify report and decide which issues to act on:
WARNING items (package not found) — fix by updating the package name or removing the distro release entry if it's no longer supported
Skipped distros — cannot be verified automatically; review manually if the user requests
Present findings to the user with recommendations before making changes.
3. Apply changes to os-packages.json
For each confirmed change, edit release-notes/<version>/os-packages.json.
JSON structure
The file has two main sections:
packages — global package definitions (id, name, required-scenarios, references)
distributions — per-distro data with install commands and per-release package names
Common edits
Add a new distro release (e.g. when a version is added to supported-os.json or a pre-release is available):
Copy the most recent release entry for that distro and update:
name — display name (e.g. "Ubuntu 26.04 LTS (Resolute Raccoon)")
release — version string (e.g. "26.04")
Package names — update any that differ from the previous release
Pre-release versions of supported distros are welcome (e.g. Fedora 44 before GA). The packages list is informational — it does not imply official support.
Permanent unstable channels — Alpine edge and Debian sid (Unstable) are permanent entries that should always be present. They track the rolling release and should have their package names updated when they change, but should never be removed.
This overwrites os-packages.md with content derived from the updated JSON.
Important: Do not hand-edit os-packages.md. It is generated from JSON by the tool. If the markdown output needs to change, update the generator or its Markout template in dotnet-release instead.
5. Run markdownlint
Before committing, verify the generated markdown passes linting:
Update .NET OS 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.
Update .NET OS Packages compared with similar skills
Triages and lands a batch of open Dependabot PRs in the Onyx repo, where main is gated exclusively by GitHub's merge queue: approves and enqueues green PRs, closes superseded duplicates, fixes…
Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.
Posts pull request review findings as GitHub draft (pending) inline comments for a human to edit and submit, instead of publishing them straight to the PR author.
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.
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.
Audits and updates os-packages.json files listing the Linux packages each .NET release needs per distro, then regenerates the Markdown from the JSON. NET release requires on each distribution.md files are generated from the JSON and must never be edited by hand.
When should I use Update .NET OS Packages?
Update .NET OS Packages fits situations like: adding package entries for a newly supported distro version; fixing a Linux package name that is wrong for a distro release; auditing os-packages.json for names that no longer exist in distro archives; removing entries for an end-of-life OS version.
How do I install Update .NET OS Packages in Claude Code?
Run `npx skills add dotnet/core --skill update-os-packages -a claude-code`. Or copy the skill folder (.github/skills/update-os-packages in dotnet/core) into .claude/skills/update-os-packages in your project. Claude Code loads it when a task matches its description.
How do I install Update .NET OS Packages in Codex?
Run `npx skills add dotnet/core --skill update-os-packages -a codex`. Or copy the skill folder (.github/skills/update-os-packages in dotnet/core) into .agents/skills/update-os-packages in your project. Codex loads it when a task matches its description.
Can I use Update .NET OS Packages 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/core --skill update-os-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-os-packages, .gemini/skills/update-os-packages, .github/skills/update-os-packages and .opencode/skills/update-os-packages in your project.
What does Update .NET OS Packages need to run?
Going by SKILL.md and its folder, Update .NET OS Packages needs the command-line tools its instructions call (git, dotnet, npx and gh) and credentials named GITHUB_TOKEN. Our summary lists: The release-notes .NET tool, installed from GitHub Packages; A GitHub token with read:packages scope.
Does Update .NET OS Packages access the network?
SKILL.md names 2 domains. In commands or code: nuget.pkg.github.com; the agent is likely to contact it when it follows the instructions. As links in the text: github.com. This is read from the text; nothing was executed.
Is Update .NET OS Packages 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 Update .NET OS Packages use?
Update .NET OS Packages is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Update .NET OS Packages use?
About 2.3k tokens (SKILL.md is roughly 9.2k 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 270 tokens, read only when the agent opens those files.
What are the alternatives to Update .NET OS Packages?
Skills that share tags, products or a category with Update .NET OS Packages: Merge Dependabot PRs (onyx-dot-app/onyx, 32k stars), Cut Release (jfernandez/bpftop, 2.7k stars), Beautify GitHub Readme (oil-oil/beautify-github-readme, 1.8k stars) and Library Documentation Seeker (withkynam/vibecode-pro-max-kit, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Update .NET OS Packages?
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.