{"id":"0cdca9f7-b386-4a4a-9908-ecca0c1f651e","shortId":"WPJmcp","kind":"skill","title":"nuget-manager","tagline":"Manage NuGet packages in .NET projects/solutions. Use this skill when adding, removing, or updating NuGet package versions. It enforces using `dotnet` CLI for package management and provides strict procedures for direct file edits only when updating versions.","description":"# NuGet Manager\n\n## Overview\n\nThis skill ensures consistent and safe management of NuGet packages across .NET projects. It prioritizes using the `dotnet` CLI to maintain project integrity and enforces a strict verification and restoration workflow for version updates.\n\n## Prerequisites\n\n- .NET SDK installed (typically .NET 8.0 SDK or later, or a version compatible with the target solution).\n- `dotnet` CLI available on your `PATH`.\n- `jq` (JSON processor) OR PowerShell (for version verification using `dotnet package search`).\n\n## Core Rules\n\n1.  **NEVER** directly edit `.csproj`, `.props`, or `Directory.Packages.props` files to **add** or **remove** packages. Always use `dotnet add package` and `dotnet remove package` commands.\n2.  **DIRECT EDITING** is ONLY permitted for **changing versions** of existing packages.\n3.  **VERSION UPDATES** must follow the mandatory workflow:\n    - Verify the target version exists on NuGet.\n    - Determine if versions are managed per-project (`.csproj`) or centrally (`Directory.Packages.props`).\n    - Update the version string in the appropriate file.\n    - Immediately run `dotnet restore` to verify compatibility.\n\n## Workflows\n\n### Adding a Package\nUse `dotnet add [<PROJECT>] package <PACKAGE_NAME> [--version <VERSION>]`.\nExample: `dotnet add src/MyProject/MyProject.csproj package Newtonsoft.Json`\n\n### Removing a Package\nUse `dotnet remove [<PROJECT>] package <PACKAGE_NAME>`.\nExample: `dotnet remove src/MyProject/MyProject.csproj package Newtonsoft.Json`\n\n### Updating Package Versions\nWhen updating a version, follow these steps:\n\n1.  **Verify Version Existence**:\n    Check if the version exists using the `dotnet package search` command with exact match and JSON formatting. \n    Using `jq`:\n    `dotnet package search <PACKAGE_NAME> --exact-match --format json | jq -e '.searchResult[].packages[] | select(.version == \"<VERSION>\")'`\n    Using PowerShell:\n    `(dotnet package search <PACKAGE_NAME> --exact-match --format json | ConvertFrom-Json).searchResult.packages | Where-Object { $_.version -eq \"<VERSION>\" }`\n    \n2.  **Determine Version Management**:\n    - Search for `Directory.Packages.props` in the solution root. If present, versions should be managed there via `<PackageVersion Include=\"Package.Name\" Version=\"1.2.3\" />`.\n    - If absent, check individual `.csproj` files for `<PackageReference Include=\"Package.Name\" Version=\"1.2.3\" />`.\n\n3.  **Apply Changes**:\n    Modify the identified file with the new version string.\n\n4.  **Verify Stability**:\n    Run `dotnet restore` on the project or solution. If errors occur, revert the change and investigate.\n\n## Examples\n\n### User: \"Add Serilog to the WebApi project\"\n**Action**: Execute `dotnet add src/WebApi/WebApi.csproj package Serilog`.\n\n### User: \"Update Newtonsoft.Json to 13.0.3 in the whole solution\"\n**Action**:\n1. Verify 13.0.3 exists: `dotnet package search Newtonsoft.Json --exact-match --format json` (and parse output to confirm \"13.0.3\" is present).\n2. Find where it's defined (e.g., `Directory.Packages.props`).\n3. Edit the file to update the version.\n4. Run `dotnet restore`.","tags":["nuget","manager","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"capabilities":["skill","source-github","skill-nuget-manager","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/nuget-manager","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (3,113 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:18.696Z","embedding":null,"createdAt":"2026-04-18T20:25:21.528Z","updatedAt":"2026-05-18T18:52:18.696Z","lastSeenAt":"2026-05-18T18:52:18.696Z","tsv":"'1':116,232,370 '13.0.3':364,372,388 '2':140,288,391 '3':152,314,399 '4':326,407 '8.0':84 'absent':308 'across':54 'action':353,369 'ad':14,195 'add':126,133,200,205,347,356 'alway':130 'appli':315 'appropri':185 'avail':98 'central':177 'chang':147,316,342 'check':236,309 'cli':25,62,97 'command':139,246 'compat':91,193 'confirm':387 'consist':47 'convertfrom':280 'convertfrom-json':279 'core':114 'csproj':120,175,311 'defin':396 'determin':167,289 'direct':34,118,141 'directory.packages.props':123,178,294,398 'dotnet':24,61,96,111,132,136,189,199,204,213,217,243,255,271,330,355,374,409 'e':264 'e.g':397 'edit':36,119,142,400 'enforc':22,68 'ensur':46 'eq':287 'error':338 'exact':248,259,275,379 'exact-match':258,274,378 'exampl':203,216,345 'execut':354 'exist':150,164,235,240,373 'file':35,124,186,312,320,402 'find':392 'follow':156,229 'format':252,261,277,381 'identifi':319 'immedi':187 'individu':310 'instal':81 'integr':66 'investig':344 'jq':102,254,263 'json':103,251,262,278,281,382 'later':87 'maintain':64 'manag':3,4,28,42,50,171,291,304 'mandatori':158 'match':249,260,276,380 'modifi':317 'must':155 'net':8,55,79,83 'never':117 'new':323 'newtonsoft.json':208,221,362,377 'nuget':2,5,18,41,52,166 'nuget-manag':1 'object':285 'occur':339 'output':385 'overview':43 'packag':6,19,27,53,112,129,134,138,151,197,201,207,211,215,220,223,244,256,266,272,358,375 'pars':384 'path':101 'per':173 'per-project':172 'permit':145 'powershel':106,270 'prerequisit':78 'present':300,390 'priorit':58 'procedur':32 'processor':104 'project':56,65,174,334,352 'projects/solutions':9 'prop':121 'provid':30 'remov':15,128,137,209,214,218 'restor':73,190,331,410 'revert':340 'root':298 'rule':115 'run':188,329,408 'safe':49 'sdk':80,85 'search':113,245,257,273,292,376 'searchresult':265 'searchresult.packages':282 'select':267 'serilog':348,359 'skill':12,45 'skill-nuget-manager' 'solut':95,297,336,368 'source-github' 'src/myproject/myproject.csproj':206,219 'src/webapi/webapi.csproj':357 'stabil':328 'step':231 'strict':31,70 'string':182,325 'target':94,162 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'typic':82 'updat':17,39,77,154,179,222,226,361,404 'use':10,23,59,110,131,198,212,241,253,269 'user':346,360 'verif':71,109 'verifi':160,192,233,327,371 'version':20,40,76,90,108,148,153,163,169,181,202,224,228,234,239,268,286,290,301,324,406 'via':306 'webapi':351 'where-object':283 'whole':367 'workflow':74,159,194","prices":[{"id":"29379f10-7807-4129-beae-8bd6efbf3040","listingId":"0cdca9f7-b386-4a4a-9908-ecca0c1f651e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:25:21.528Z"}],"sources":[{"listingId":"0cdca9f7-b386-4a4a-9908-ecca0c1f651e","source":"github","sourceId":"github/awesome-copilot/nuget-manager","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/nuget-manager","isPrimary":false,"firstSeenAt":"2026-04-18T21:50:22.544Z","lastSeenAt":"2026-05-18T18:52:18.696Z"},{"listingId":"0cdca9f7-b386-4a4a-9908-ecca0c1f651e","source":"skills_sh","sourceId":"github/awesome-copilot/nuget-manager","sourceUrl":"https://skills.sh/github/awesome-copilot/nuget-manager","isPrimary":true,"firstSeenAt":"2026-04-18T20:25:21.528Z","lastSeenAt":"2026-05-07T22:40:16.984Z"}],"details":{"listingId":"0cdca9f7-b386-4a4a-9908-ecca0c1f651e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"nuget-manager","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"3de5ce401b9e7d983e4c87342a709210218748e0","skill_md_path":"skills/nuget-manager/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/nuget-manager"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"nuget-manager","description":"Manage NuGet packages in .NET projects/solutions. Use this skill when adding, removing, or updating NuGet package versions. It enforces using `dotnet` CLI for package management and provides strict procedures for direct file edits only when updating versions."},"skills_sh_url":"https://skills.sh/github/awesome-copilot/nuget-manager"},"updatedAt":"2026-05-18T18:52:18.696Z"}}