[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DMWS89YKQ80Y4MSTAJS0AS":3,"skill-same:01M7DMWS89YKQ80Y4MSTAJS0AS":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M7DMWS89YKQ80Y4MSTAJS0AS","nuget",null,"Manages NuGet dependencies and packages in .NET repos. Use for Directory.Packages.props and Central Package Management, bumping or aligning package versions, NU1xxx restore warnings, nuget.config sources and source mapping, vulnerable-package audits, lock files, dotnet pack metadata, publishing to nuget.org with trusted publishing, or authoring, validating and packing `dotnet new` templates (template.json, a template missing from `dotnet new list`).","Adminhead\u002Fclaude-plugins","Adminhead","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11468580?v=4","01M7DKG5DD192DJ36EYZVPWK0X","AdminHead","01M7DKG5E7JHWA6W01ST63D1NT",0,"MIT","https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fnuget\u002Fskills\u002Fnuget\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: nuget\ndescription: Manages NuGet dependencies and packages in .NET repos. Use for Directory.Packages.props and Central Package Management, bumping or aligning package versions, NU1xxx restore warnings, nuget.config sources and source mapping, vulnerable-package audits, lock files, dotnet pack metadata, publishing to nuget.org with trusted publishing, or authoring, validating and packing `dotnet new` templates (template.json, a template missing from `dotnet new list`).\nlicense: MIT\n---\n\n# NuGet\n\nChange package versions and package configuration without changing anything else about the build, and prove it with a before\u002Fafter restore.\n\nNot for: MSBuild failures that aren't about packages (`msbuild`), C# code changes after an API break (`csharp`), vetting whether a new third-party package is trustworthy (`dependency-vetting`), CI workflow hardening beyond the publish job (`gh-actions`), `packages.config` to `PackageReference` migration (`dotnet-upgrade-guide`), using an existing `dotnet new` template to scaffold a project.\n\n## Pick the mode first\n\nDecide before running builds or editing files.\n\n1. **Guard.** Any in-scope project uses `packages.config`: stop. CPM, source mapping per `PackageReference`, lock files and `NuGetAudit` warnings all need `PackageReference`; recommend migrating first and change nothing.\n2. **Package maintenance.** \"Update\", \"bump\", \"align\", \"sync\", \"fix NU1605\": edit the versions where they already live (project file, `Directory.Build.props` property, or `Directory.Packages.props` if CPM is on), then restore and build every affected target. Don't introduce CPM as a side effect; recommend it afterwards if versions drift across projects.\n3. **CPM conversion.** Only when the user asks to adopt, enable or convert to Central Package Management. Follow [references\u002Fcpm.md](references\u002Fcpm.md).\n4. **Sources, audit and lock files.** `nuget.config`, `packageSourceMapping`, `NuGetAudit*`, NU1900-NU1904, `packages.lock.json`: [references\u002Fsources-and-audit.md](references\u002Fsources-and-audit.md).\n5. **Packing and publishing.** `dotnet pack` metadata, tool\u002FMCP-server packages, pushing to nuget.org from GitHub Actions: [references\u002Ftrusted-publishing.md](references\u002Ftrusted-publishing.md).\n6. **`dotnet new` templates.** Turning a project into a template, `template.json` symbols, conditions, post-actions and constraints, a template pack (`PackageType` `Template`), validating a template.json before publishing, a template that installs but is missing from `dotnet new list`: [references\u002Ftemplates.md](references\u002Ftemplates.md), which links [references\u002Ftemplate-json.md](references\u002Ftemplate-json.md) and [references\u002Ftemplate-validation-rules.md](references\u002Ftemplate-validation-rules.md). Template work skips the `packages.config` guard and the resolved-package comparison below; prove it by instantiating and building the template instead.\n\nAsk once if the scope (which projects or solution) is unclear. If the user gave a conflict strategy (\"use the highest version\"), apply it without asking again.\n\n## Orient\n\n- Find where each version is declared: `grep -rn --include='*.csproj' --include='*.props' --include='*.targets' -E 'PackageReference|PackageVersion|GlobalPackageReference|VersionOverride' .` and any `$(XxxVersion)` properties those reference. Check ancestors for `Directory.Packages.props` (only the nearest one applies to a project).\n- Read `nuget.config` files from the repo root upward, and `global.json`. Run every `dotnet` command from the directory whose `global.json` applies to that solution.\n- See what actually resolved, not just what is declared. SDK 10 and later: `dotnet package list --project \u003Csln|proj> --include-transitive --format json`. SDK 7.0.200 to 9.x: `dotnet list \u003Csln|proj> package --include-transitive --format json`. Add `--outdated`, `--vulnerable` or `--deprecated` only when that question is asked.\n- For a package's API change between versions, read its release notes, or query Context7 (`resolve-library-id`, then `query-docs`) for the target version.\n\n## Version rules\n\n- Change only the packages requested. Don't upgrade past the highest version already used in scope during an alignment or conversion; list newer versions and advisories as follow-ups.\n- Treat a major-version change as high risk (API breaks): build every consumer and run its tests. Minor and patch changes are moderate; build all consumers.\n- Keep every non-version attribute and condition on a `PackageReference` (`PrivateAssets`, `IncludeAssets`, `ExcludeAssets`, `GeneratePathProperty`, `Aliases`, TFM conditions).\n- Packages that ship together move together: `Microsoft.Extensions.*`, `Microsoft.AspNetCore.*`, `Microsoft.EntityFrameworkCore.*` of one release train, `xunit.*`, `OpenTelemetry.*`. A mismatch shows up as NU1605 (downgrade) or NU1608 (outside a dependency's range).\n- NU1605 means a direct reference pins a lower version than a transitive dependency needs: raise the direct reference; don't suppress the warning.\n- Analyzer and build-only packages get `PrivateAssets=\"all\"` so they don't flow to consumers.\n\n## Validate\n\n1. Capture resolved packages before the change (the list command above, redirected to a file).\n2. Make the edit.\n3. `dotnet restore \u003Ctarget>` then `dotnet build \u003Ctarget> --no-restore` for every affected solution or project. New NU1xxx warnings count as failures to explain.\n4. Capture the resolved list again and compare per project: version changes, packages added or removed. Every difference must be one you intended.\n5. If resolved versions changed, run the affected projects' tests (`dotnet test \u003Cproj> --no-build`), or give the exact command if they need infrastructure.\n\nDon't install or switch SDKs, edit `global.json` roll-forward, clear the global packages folder (`dotnet nuget locals all --clear`) or change machine-level NuGet config as a fix; report the blocker instead.\n\n## Gotchas\n\n| Code | Meaning | Fix |\n| --- | --- | --- |\n| NU1008 | CPM on, but a `PackageReference` still has `Version` | Remove it, or use `VersionOverride` deliberately |\n| NU1010 | CPM on, `PackageReference` has no `PackageVersion` | Add the `PackageVersion` |\n| NU1101 \u002F NU1102 | Package or version not found on any source | Check source mapping and feed auth before the ID |\n| NU1507 | Several sources, no `packageSourceMapping` | Add mapping ([sources-and-audit](references\u002Fsources-and-audit.md)) |\n| NU1603 | Requested version absent, a higher one resolved | Pin an existing version |\n| NU1901-NU1904 | Known vulnerability (low to critical) | Upgrade the package or the transitive one; suppress only with a recorded reason |\n\n- After `dotnet add package` (or `dotnet package add`) in a CPM repo, check the diff: the `PackageVersion` belongs in `Directory.Packages.props`, not a `Version` on the reference.\n- A `Directory.Packages.props` in a subfolder replaces the parent one for projects under it; it does not merge unless it imports the parent.\n- Floating versions (`1.*`) make restores non-reproducible; with a lock file they need `--force-evaluate` to move.\n","# NuGet\n\nChange package versions and package configuration without changing anything else about the build, and prove it with a before\u002Fafter restore.\n\nNot for: MSBuild failures that aren't about packages (`msbuild`), C# code changes after an API break (`csharp`), vetting whether a new third-party package is trustworthy (`dependency-vetting`), CI workflow hardening beyond the publish job (`gh-actions`), `packages.config` to `PackageReference` migration (`dotnet-upgrade-guide`), using an existing `dotnet new` template to scaffold a project.\n\n## Pick the mode first\n\nDecide before running builds or editing files.\n\n1. **Guard.** Any in-scope project uses `packages.config`: stop. CPM, source mapping per `PackageReference`, lock files and `NuGetAudit` warnings all need `PackageReference`; recommend migrating first and change nothing.\n2. **Package maintenance.** \"Update\", \"bump\", \"align\", \"sync\", \"fix NU1605\": edit the versions where they already live (project file, `Directory.Build.props` property, or `Directory.Packages.props` if CPM is on), then restore and build every affected target. Don't introduce CPM as a side effect; recommend it afterwards if versions drift across projects.\n3. **CPM conversion.** Only when the user asks to adopt, enable or convert to Central Package Management. Follow [references\u002Fcpm.md](references\u002Fcpm.md).\n4. **Sources, audit and lock files.** `nuget.config`, `packageSourceMapping`, `NuGetAudit*`, NU1900-NU1904, `packages.lock.json`: [references\u002Fsources-and-audit.md](references\u002Fsources-and-audit.md).\n5. **Packing and publishing.** `dotnet pack` metadata, tool\u002FMCP-server packages, pushing to nuget.org from GitHub Actions: [references\u002Ftrusted-publishing.md](references\u002Ftrusted-publishing.md).\n6. **`dotnet new` templates.** Turning a project into a template, `template.json` symbols, conditions, post-actions and constraints, a template pack (`PackageType` `Template`), validating a template.json before publishing, a template that installs but is missing from `dotnet new list`: [references\u002Ftemplates.md](references\u002Ftemplates.md), which links [references\u002Ftemplate-json.md](references\u002Ftemplate-json.md) and [references\u002Ftemplate-validation-rules.md](references\u002Ftemplate-validation-rules.md). Template work skips the `packages.config` guard and the resolved-package comparison below; prove it by instantiating and building the template instead.\n\nAsk once if the scope (which projects or solution) is unclear. If the user gave a conflict strategy (\"use the highest version\"), apply it without asking again.\n\n## Orient\n\n- Find where each version is declared: `grep -rn --include='*.csproj' --include='*.props' --include='*.targets' -E 'PackageReference|PackageVersion|GlobalPackageReference|VersionOverride' .` and any `$(XxxVersion)` properties those reference. Check ancestors for `Directory.Packages.props` (only the nearest one applies to a project).\n- Read `nuget.config` files from the repo root upward, and `global.json`. Run every `dotnet` command from the directory whose `global.json` applies to that solution.\n- See what actually resolved, not just what is declared. SDK 10 and later: `dotnet package list --project \u003Csln|proj> --include-transitive --format json`. SDK 7.0.200 to 9.x: `dotnet list \u003Csln|proj> package --include-transitive --format json`. Add `--outdated`, `--vulnerable` or `--deprecated` only when that question is asked.\n- For a package's API change between versions, read its release notes, or query Context7 (`resolve-library-id`, then `query-docs`) for the target version.\n\n## Version rules\n\n- Change only the packages requested. Don't upgrade past the highest version already used in scope during an alignment or conversion; list newer versions and advisories as follow-ups.\n- Treat a major-version change as high risk (API breaks): build every consumer and run its tests. Minor and patch changes are moderate; build all consumers.\n- Keep every non-version attribute and condition on a `PackageReference` (`PrivateAssets`, `IncludeAssets`, `ExcludeAssets`, `GeneratePathProperty`, `Aliases`, TFM conditions).\n- Packages that ship together move together: `Microsoft.Extensions.*`, `Microsoft.AspNetCore.*`, `Microsoft.EntityFrameworkCore.*` of one release train, `xunit.*`, `OpenTelemetry.*`. A mismatch shows up as NU1605 (downgrade) or NU1608 (outside a dependency's range).\n- NU1605 means a direct reference pins a lower version than a transitive dependency needs: raise the direct reference; don't suppress the warning.\n- Analyzer and build-only packages get `PrivateAssets=\"all\"` so they don't flow to consumers.\n\n## Validate\n\n1. Capture resolved packages before the change (the list command above, redirected to a file).\n2. Make the edit.\n3. `dotnet restore \u003Ctarget>` then `dotnet build \u003Ctarget> --no-restore` for every affected solution or project. New NU1xxx warnings count as failures to explain.\n4. Capture the resolved list again and compare per project: version changes, packages added or removed. Every difference must be one you intended.\n5. If resolved versions changed, run the affected projects' tests (`dotnet test \u003Cproj> --no-build`), or give the exact command if they need infrastructure.\n\nDon't install or switch SDKs, edit `global.json` roll-forward, clear the global packages folder (`dotnet nuget locals all --clear`) or change machine-level NuGet config as a fix; report the blocker instead.\n\n## Gotchas\n\n| Code | Meaning | Fix |\n| --- | --- | --- |\n| NU1008 | CPM on, but a `PackageReference` still has `Version` | Remove it, or use `VersionOverride` deliberately |\n| NU1010 | CPM on, `PackageReference` has no `PackageVersion` | Add the `PackageVersion` |\n| NU1101 \u002F NU1102 | Package or version not found on any source | Check source mapping and feed auth before the ID |\n| NU1507 | Several sources, no `packageSourceMapping` | Add mapping ([sources-and-audit](references\u002Fsources-and-audit.md)) |\n| NU1603 | Requested version absent, a higher one resolved | Pin an existing version |\n| NU1901-NU1904 | Known vulnerability (low to critical) | Upgrade the package or the transitive one; suppress only with a recorded reason |\n\n- After `dotnet add package` (or `dotnet package add`) in a CPM repo, check the diff: the `PackageVersion` belongs in `Directory.Packages.props`, not a `Version` on the reference.\n- A `Directory.Packages.props` in a subfolder replaces the parent one for projects under it; it does not merge unless it imports the parent.\n- Floating versions (`1.*`) make restores non-reproducible; with a lock file they need `--force-evaluate` to move.\n",{"name":5,"license":15,"description":7},"main","c26c26c031fcf3ac85dade7543b52eb8c299496b","plugins\u002Fnuget\u002Fskills\u002Fnuget","https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002FAdminhead","https:\u002F\u002Fwww.adminhead.com","Cloud Services Consulting | Managed Cloud Services | Managed Hosting | Software Development","2026-11-15 00:49:46",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add Adminhead\u002Fclaude-plugins --skill nuget",{"tool":38,"command":39},"bunx","bunx skills add Adminhead\u002Fclaude-plugins --skill nuget",{"tool":41,"command":42},"pnpm","pnpm dlx skills add Adminhead\u002Fclaude-plugins --skill nuget","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fnuget\u002Fskills\u002Fnuget\u002FSKILL.md",true,[46,52,56,60,64,68],{"path":47,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":50,"sourceHtmlUrl":51},"references\u002Fcpm.md","REFERENCE","参考文档",7957,"https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fnuget\u002Fskills\u002Fnuget\u002Freferences\u002Fcpm.md",{"path":53,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":54,"sourceHtmlUrl":55},"references\u002Fsources-and-audit.md",5203,"https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fnuget\u002Fskills\u002Fnuget\u002Freferences\u002Fsources-and-audit.md",{"path":57,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":58,"sourceHtmlUrl":59},"references\u002Ftemplate-json.md",5842,"https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fnuget\u002Fskills\u002Fnuget\u002Freferences\u002Ftemplate-json.md",{"path":61,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":62,"sourceHtmlUrl":63},"references\u002Ftemplate-validation-rules.md",4565,"https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fnuget\u002Fskills\u002Fnuget\u002Freferences\u002Ftemplate-validation-rules.md",{"path":65,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002Ftemplates.md",9341,"https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fnuget\u002Fskills\u002Fnuget\u002Freferences\u002Ftemplates.md",{"path":69,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Ftrusted-publishing.md",6880,"https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fnuget\u002Fskills\u002Fnuget\u002Freferences\u002Ftrusted-publishing.md",[73,80],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M7DMWFAJWSJYCZG896HF3VSK","msbuild","Diagnoses MSBuild failures and slow builds and reviews .NET build XML. Use for a failing dotnet build, restore, pack or publish, .csproj\u002F.props\u002F.targets conditions and custom targets, binlog capture and replay, \"it rebuilds when nothing changed\", slow evaluation or builds, bin\u002Fobj clashes, or Directory.Build.* layering.","https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fmsbuild\u002Fskills\u002Fmsbuild\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M7DMAYKRP73V7SETP0ZBG1AS","csharp","Writes, reviews, refactors and debugs C# and .NET code (types, nullable references, async and cancellation, exceptions, DI, options and logging in the generic host, file-based apps). Use for work in *.cs or *.csx files, \"review this C# class\", CS86xx nullable warnings, CA or IDE warnings and .editorconfig severity, a deadlock or sync-over-async bug, or a rename across a solution. Not for Godot C# (godot-csharp).","https:\u002F\u002Fgithub.com\u002FAdminhead\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fcsharp\u002Fskills\u002Fcsharp\u002FSKILL.md",[],[]]