home / skills / levnikolaevich / claude-code-skills / ln-712-nuget-upgrader

ln-712-nuget-upgrader skill

/ln-712-nuget-upgrader

This skill upgrades .NET NuGet packages with automatic breaking change detection and migration guidance for safer project upgrades.

npx playbooks add skill levnikolaevich/claude-code-skills --skill ln-712-nuget-upgrader

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
5.8 KB
---
name: ln-712-nuget-upgrader
description: Upgrades .NET NuGet packages with breaking change handling
---

> **Paths:** File paths (`shared/`, `references/`, `../ln-*`) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.

# ln-712-nuget-upgrader

**Type:** L3 Worker
**Category:** 7XX Project Bootstrap
**Parent:** ln-710-dependency-upgrader

Upgrades .NET NuGet packages with automatic breaking change detection and migration.

---

## Overview

| Aspect | Details |
|--------|---------|
| **Input** | Solution/project path |
| **Output** | Updated .csproj files, migration report |
| **Supports** | .NET 6, 7, 8, 9, 10 |

---

## Workflow

See [diagram.html](diagram.html) for visual workflow.

**Phases:** Pre-flight → Find Projects → Security Audit → Check Outdated → Identify Breaking → Apply Upgrades → Restore & Build → Report

---

## Phase 0: Pre-flight Checks

| Check | Required | Action if Missing |
|-------|----------|-------------------|
| .csproj file(s) | Yes | Block upgrade |
| .sln file | No | Use csproj discovery instead |

> Workers assume coordinator (ln-710) already verified git state and created backup.

---

## Phase 1: Find Projects

### Discovery Methods

| Method | Command |
|--------|---------|
| Find .csproj | `Get-ChildItem -Recurse -Filter *.csproj` |
| From solution | `dotnet sln list` |

---

## Phase 2: Security Audit

### Commands

| Check | Command |
|-------|---------|
| Vulnerable packages | `dotnet list package --vulnerable` |
| Outdated packages | `dotnet list package --outdated` |

### Actions

| Severity | Action |
|----------|--------|
| Critical | Block upgrade, report |
| High | Warn, continue |
| Moderate/Low | Log only |

---

## Phase 3: Check Outdated

### Using dotnet-outdated

| Step | Command |
|------|---------|
| Install tool | `dotnet tool install --global dotnet-outdated-tool` |
| Check | `dotnet outdated --output json` |

---

## Phase 4: Identify Breaking Changes

### Detection

1. Compare current vs latest major versions
2. Check [breaking_changes_patterns.md](../ln-710-dependency-upgrader/references/breaking_changes_patterns.md)
3. Use MCP tools (see below) for migration guides

### Common Breaking Changes

| Package | Breaking Version | Key Changes |
|---------|------------------|-------------|
| Microsoft.EntityFrameworkCore | 8 → 9 | Query changes, migration format |
| Serilog.AspNetCore | 7 → 8 | Configuration format |
| Swashbuckle.AspNetCore | 6 → 7 | Minimal API support |

---

## MCP Tools for Migration Search

### Priority Order (Fallback Strategy)

| Priority | Tool | When to Use |
|----------|------|-------------|
| 1 | mcp__context7__query-docs | First choice for library docs |
| 2 | mcp__Ref__ref_search_documentation | Official Microsoft docs |
| 3 | WebSearch | Latest info, community solutions |

### Context7 Usage

| Step | Tool | Parameters |
|------|------|------------|
| 1. Find library | mcp__context7__resolve-library-id | libraryName: "EntityFrameworkCore" |
| 2. Query docs | mcp__context7__query-docs | query: "EF Core 8 to 9 migration breaking changes" |

### MCP Ref Usage

| Action | Tool | Query Example |
|--------|------|---------------|
| Search | mcp__Ref__ref_search_documentation | "dotnet EntityFrameworkCore 9 migration guide" |
| Read | mcp__Ref__ref_read_url | URL from search results |

### WebSearch Fallback

Use when Context7/Ref return no results:
- `"<package> .NET <version> breaking changes migration"`
- `"<error code> <package> fix"`

---

## Phase 5: Apply Upgrades

### Priority Order

| Priority | Package Type |
|----------|--------------|
| 1 | SDK/Runtime (Microsoft.NET.Sdk) |
| 2 | Framework (Microsoft.AspNetCore.*) |
| 3 | EF Core (affects migrations) |
| 4 | Logging (Serilog.*) |
| 5 | Other packages |

### Commands

| Action | Command |
|--------|---------|
| Update specific | `dotnet add package <name> --version <ver>` |
| Update all | `dotnet outdated --upgrade` |

---

## Phase 6: Restore & Build

### Commands

| Step | Command |
|------|---------|
| Restore | `dotnet restore` |
| Build | `dotnet build --configuration Release` |
| Test | `dotnet test` |

### On Failure

1. Identify failing package from error
2. Search Context7/Ref for migration guide
3. If unresolved: rollback package, continue

---

## Phase 7: Report Results

### Report Schema

| Field | Description |
|-------|-------------|
| solution | Solution path |
| projects[] | Updated projects |
| duration | Total time |
| upgrades[] | Applied upgrades |
| buildVerification | PASSED or FAILED |
| testResults | X passed, Y failed |

---

## Configuration

```yaml
Options:
  # Upgrade scope
  upgradeType: major          # major | minor | patch

  # Security
  auditLevel: high
  minimumReleaseAge: 14

  # .NET specific
  includePrerelease: false
  targetFramework: net10.0

  # Verification
  runTests: true
  runBuild: true
```

---

## Error Handling

| Error | Cause | Solution |
|-------|-------|----------|
| CS0246 | Missing type | Search for replacement API |
| NU1605 | Downgrade detected | Check package constraints |
| Build fail | Breaking change | Apply migration via Context7 |

---

## References

- [breaking_changes_patterns.md](../ln-710-dependency-upgrader/references/breaking_changes_patterns.md)
- [dotnet_version_matrix.md](references/dotnet_version_matrix.md)

---

## Definition of Done

- All .csproj files discovered (via solution or recursive scan)
- Security audit completed (`dotnet list package --vulnerable`)
- Outdated packages identified via dotnet-outdated
- Breaking changes detected via breaking_changes_patterns.md and MCP tools
- Upgrades applied in priority order (SDK > Framework > EF Core > other)
- `dotnet restore`, `dotnet build`, `dotnet test` all pass
- Report returned with projects updated, upgrades applied, and build/test status

---

**Version:** 1.1.0
**Last Updated:** 2026-01-10

Overview

This skill upgrades .NET NuGet packages across solutions and projects while detecting breaking changes and applying targeted migrations. It runs security audits, identifies outdated packages, consults migration resources, applies upgrades in priority order, and verifies results with restore/build/test steps. Outputs updated .csproj files and a detailed migration report.

How this skill works

The skill locates projects via solution or recursive .csproj discovery, runs vulnerability and outdated checks (dotnet list package, dotnet-outdated), and flags critical issues. It compares current and candidate major versions against breaking-change patterns and uses prioritized migration search tools to find guidance. Upgrades are applied by priority (SDK → Framework → EF Core → logging → others), followed by restore, build, and test; failures trigger targeted migration attempts or rollback for the offending package.

When to use it

  • Preparing a solution for a major .NET or package version bump
  • Automating dependency upgrades with safety checks in CI or developer workflows
  • Auditing and patching vulnerable or outdated NuGet packages
  • Migrating EF Core, hosting, or logging libraries that impact runtime behavior
  • Enforcing an upgrade policy that requires build and test verification

Best practices

  • Run in a clean git state with backups and a coordinator that can commit or rollback changes
  • Start with security audit and block on critical vulnerabilities before upgrading
  • Follow the priority order: SDK/runtime, framework, EF Core, logging, then other packages
  • Use breaking-change patterns and migration search tools before applying major upgrades
  • Run dotnet restore, build, and test after upgrades and treat failed builds as actionable migration tasks

Example use cases

  • Upgrade a monorepo from .NET 7 to .NET 10 while applying EF Core migration guidance
  • Automate weekly dependency maintenance: detect vulnerabilities, upgrade non-breaking minors, and report results
  • Migrate Serilog and Swashbuckle packages to their next major versions with configuration changes applied
  • Integrate into CI to block merges when critical vulnerabilities are present and produce an upgrade report
  • Perform targeted upgrades for a microservice that failed runtime after a library major bump and apply documented fixes

FAQ

What happens if a build or tests fail after upgrading?

The skill identifies the failing package, searches migration guides via the prioritized tools, attempts a targeted migration, and if unresolved will rollback that package while continuing other upgrades.

Which .NET versions are supported?

Supported target frameworks include .NET 6, 7, 8, 9, and 10; configuration allows specifying the targetFramework and pre-release inclusion.