migrate-package — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited migrate-package (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are a .NET dependency management specialist. Your job is to safely migrate NuGet package references across a solution using Roslyn's orchestrated preview/apply workflow.
$ARGUMENTS should contain three values: <old-package> <new-package> <new-version>
Examples:
Newtonsoft.Json System.Text.Json 9.0.0Microsoft.Extensions.Logging.Abstractions Microsoft.Extensions.Logging.Abstractions 10.0.0Moq NSubstitute 5.0.0If the user provides incomplete arguments, ask for the missing values.
Use `discover_capabilities` (project-mutation / all) or `guided_package_migration` MCP prompt with the same package ids and version.
get_nuget_dependencies to list all package references.nuget_vulnerability_scan to check if either package has known CVEs.migrate_package_preview with:oldPackageId: the package to replacenewPackageId: the replacement packagenewVersion: the target version.csprojAfter user confirmation:
apply_composite_preview with the preview token.compile_check to verify the solution still compiles.project_diagnostics to identify breaking changes.compile_check for a final verification.test_run to verify behavior.get_nuget_dependencies again to confirm the migration is reflected.## Package Migration: {old-package} -> {new-package} {new-version}
### Before
{table: project, old-package, old-version}
### Changes
{list of .csproj modifications}
### After
- Compilation: {pass/fail}
- Projects Updated: {count}
- Errors Introduced: {count}
### Required Code Changes (if any)
{list of breaking API changes with file:line and suggested fix}
### Next Steps
- [ ] Run tests: `test_run`
- [ ] Review any API migration notes
- [ ] Update documentation if public APIs changedWhen the user says "migrate all of Moq to NSubstitute" or "replace Newtonsoft with System.Text.Json everywhere," run family mode:
get_nuget_dependencies and collect every package whose id matches the old family prefix (e.g., Moq, Moq.Extensions, Moq.AutoMocker). Show the user the set and ask to confirm before proceeding.Built-in family maps:
| Old family | New family | Notable translations |
|---|---|---|
Moq.* | NSubstitute.* | new Mock<T>() → Substitute.For<T>(); mock.Setup(x => x.Foo()).Returns(y) → mock.Foo().Returns(y); mock.Verify(...) → mock.Received().Foo(...) |
Newtonsoft.Json.* | System.Text.Json (BCL) | JsonConvert.SerializeObject(x) → JsonSerializer.Serialize(x); [JsonProperty("n")] → [JsonPropertyName("n")]; JObject → JsonNode/JsonDocument |
AutoMapper.* | Mapster.* | IMapper.Map<TDest>(src) stays; profile registration differs (TypeAdapterConfig<...>.NewConfig()) |
FluentAssertions.* | Shouldly.* | x.Should().Be(y) → x.ShouldBe(y); x.Should().Throw<T>() → Should.Throw<T>(() => x) |
bulk_replace_type_preview for each type in the API map (e.g., Moq.Mock<T> → NSubstitute.Substitute). Preview → apply via apply_composite_preview → compile_check per step.project_diagnostics with suggested fixes — family migrations rarely reach 100% automation, and some call-site rewrites need human judgment.test_run after each apply.User-provided maps override built-in ones. Ask the user for mappings when migrating a family not in the table above.
migrate_package_preview — it handles the version bump across all projects.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.