Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/tqnonline/agent-forge/dotnet-modernizationnpx skills add tqnonline/agent-forge --skill dotnet-modernizationgit clone --depth 1 https://github.com/tqnonline/agent-forgeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/tqnonline/agent-forge/dotnet-modernization)<a href="https://agentmods.dev/skills/tqnonline/agent-forge/dotnet-modernization"><img src="https://agentmods.dev/badge/skills/tqnonline/agent-forge/dotnet-modernization.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00234 | $0.02561 |
| Opus 5 | $0.00117 | $0.01281 |
| Sonnet 5 | $0.00047 | $0.00512 |
| Haiku 4.5 | $0.00023 | $0.00256 |
Grade A, and why
dotnet-modernization scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 180 lines — stays where its author put it; the contents beside it link to each section on GitHub.
.NET Modernization Specialist
Version: 1.0 | Role: .NET Framework to .NET 8/9 LTS Migration Architect | Stack: Migration, Strangler Fig, WCF, EF6, Web Forms, Windows Containers
This skill owns the migration path from .NET Framework 4.x to .NET 8/9 LTS. It covers strategy selection (strangler fig vs. big bang), assessment tooling, component-by-component migration patterns (WCF, EF6, Web Forms), containerization fallbacks, and the test-coverage prerequisite. It does NOT redesign the target-state .NET architecture: that belongs to /dotnet-architect. Chain to /dotnet-architect immediately after the migration plan is complete to design the new world.
Use microsoft_docs_search and microsoft_docs_fetch to verify current .NET Upgrade Assistant status, GitHub Copilot modernization agent capabilities, and .NET 9 migration guidance before finalising decisions. Use microsoft_code_sample_search for gRPC and EF Core sample patterns. Read shared standards: standards/references/coding-stack/csharp-standards.md, standards/references/coding-stack/ef-core-checklist.md.
Migration Principles (non-negotiable)
- Strangler fig over big bang for any non-trivial codebase (greater than 50K LOC). Big bang is reserved for small, well-tested, low-dependency codebases under active development where a feature freeze is acceptable for the migration window.
- .NET Upgrade Assistant for assessment phase; manual fixes for the long tail. As of VS 2026 / VS 2022 17.14+, the GitHub Copilot modernization agent replaces the legacy Upgrade Assistant; use whichever tooling matches the customer's VS version, and expect 40-60% automated coverage: the remainder requires human judgment.
- WCF to gRPC for new internal services; HTTP+OpenAPI for external/integration. CoreWCF is a compatibility bridge, not a destination: use it only when binary-compatible client contracts are a hard constraint during a transition window.
- EF6 to EF Core: migration is not always 1:1: review LINQ queries, lazy loading, transaction scopes. EF Core disables lazy loading by default, eliminates EntitySQL, changes change-tracker semantics, and removes EDMX. Each difference is a potential regression.
- ASP.NET Web Forms to Blazor Server (closest paradigm match), then MVC, then Razor Pages. Blazor Server preserves the stateful, event-driven component model that Web Forms developers know; choose MVC or Razor Pages only when server-push latency is a concern or the team already has strong MVC investment.
- Windows Container as last resort when full migration is not viable for the next 12-18 months. Windows Containers on Windows Server Core lift .NET Framework 4.x apps into a container without code changes; they buy time but do not eliminate the migration debt.
- Test coverage on legacy code first: modernization without tests is rewriting blind. Establish a characterization test suite against the legacy app before touching a single project file. See
references/test-coverage-first.md.
What ships with it
7 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 180 lines · 234 tokens per session scan A 0fac79bb532e
dotnet-modernization is a skill published in the GitHub repository tqnonline/agent-forge (2 stars, last pushed 3mo ago), licensed BSD-3-Clause. It adds 234 tokens to every session and 2,561 once invoked, about $0.0012 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
build-and-test
How to build and test .NET projects in the Agent Framework repository. Use this when verifying or testing changes.
agents-sdk-dotnet
Use when any code imports Microsoft.Agents.Hosting.AspNetCore, Microsoft.Agents.Builder, or related Agents SDK packages, or when the user is building, configuring, or asking questions about a Microsoft 365 Agents SDK agent in C# / .NET. Trigger on questions about appsettings.json, connection configuration…
agents-sdk-dotnet-otel
Use when adding, configuring, validating, or troubleshooting OpenTelemetry observability for a Microsoft 365 Agents SDK application in C# / .NET. Trigger when the user mentions OpenTelemetry, OTel, telemetry, traces, metrics, logs, OTLP, Aspire Dashboard, Application Insights, Azure Monitor, distributed tracing…
bf-to-agents-sdk-dotnet-migration
Use when migrating a Bot Framework .NET SDK bot to Microsoft 365 Agents SDK. Triggered by projects that depend on packages: Microsoft.Bot.Builder or Microsoft.Bot.Builder.Integration.AspNet.Core that want to migrate to Agents SDK.
agents-sdk-dotnet-debugging
Use when troubleshooting an agent built with the Microsoft Agents SDK (Microsoft.Agents.Hosting.AspNetCore and related packages) in C# / .NET. Trigger on any of these symptoms: build or C# compile errors, crashes on startup, 401 or auth errors on incoming requests, the bot not responding to messages, appsettings.json…
nunit-api-design
Use when adding or modifying public API surface in NUnit — new or changed constraints, attributes, assertions, helpers, or any type/member visibility change. Covers the conventions NUnit maintainers enforce for types that ship to consumers of the framework.