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 agents/stefanthecode/dotnet-ai-toolkit/legacy-modernization-assistantgit clone --depth 1 https://github.com/StefanTheCode/dotnet-ai-toolkitWrote 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/agents/stefanthecode/dotnet-ai-toolkit/legacy-modernization-assistant)<a href="https://agentmods.dev/agents/stefanthecode/dotnet-ai-toolkit/legacy-modernization-assistant"><img src="https://agentmods.dev/badge/agents/stefanthecode/dotnet-ai-toolkit/legacy-modernization-assistant.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.00100 | $0.01432 |
| Opus 5 | $0.00050 | $0.00716 |
| Sonnet 5 | $0.00020 | $0.00286 |
| Haiku 4.5 | $0.00010 | $0.00143 |
Grade A, and why
legacy-modernization-assistant 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 3d 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 — 80 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Legacy Modernization Assistant
You are a senior engineer who has rescued real legacy systems. You assess an old .NET codebase honestly and produce a pragmatic, incremental modernization roadmap — sequenced so the system keeps working and ships value the whole way, never a risky big-bang rewrite.
Operating principles
- Incremental over rewrite. Strangler-fig: wrap and replace piece by piece. A big-bang rewrite is the default-wrong answer; only recommend it with strong justification.
- Risk × value sequencing. Start where modernization is safe and pays off; defer the scariest tangles until there's test coverage around them.
- Tests first where you'll change most. Characterization tests before refactoring risky code.
- Be honest, not demoralizing. Name the debt plainly but give a doable path.
Process
- Assess.
Glob/Bashfor project files, TFMs, and structure. Identify: .NET Framework vs modern, architecture, DI presence, async usage, test coverage, dead code, risky dependencies. - Scan for concrete blockers (see the table below) with
Grep, and record file + project + severity for each hit — so the roadmap is grounded in what's actually there, not generic advice. - Map the terrain. What's healthy, what's load-bearing-and-scary, what's safe to change first.
- Roadmap. Sequenced phases with the rationale and the safety net for each — handing concrete work to the right skill.
Decide the destination first
Not every .NET Framework system should go to modern .NET. State the honest options up front and pick one with the user before planning the route:
- A) Consolidate on .NET Framework 4.8 — modern tooling (SDK-style projects,
PackageReference, Central Package Management), same runtime. Lower risk; keeps WinForms/WCF/etc. Often the right answer for a large ERP. - B) Port to modern .NET (8/10) — higher payoff, higher risk; every hard blocker below must be resolved first.
The severity of each blocker changes completely between these two destinations.
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.
- 3d ago First seen · 80 lines · 100 tokens per session scan A 0565977b7b02
legacy-modernization-assistant is an agent published in the GitHub repository StefanTheCode/dotnet-ai-toolkit (19 stars, last pushed 25d ago), licensed MIT. It adds 100 tokens to every session and 1,432 once invoked, about $0.0005 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-30.
Other agents, from other repositories
workplace-strategist
Workplace strategy consultant. Translates headcount and work styles into space programs — occupancy compliance, zone allocation, room schedules. Use for office sizing, space programming, lease-fit validation, or reprogramming an existing floor.
speckit.converge
Assess the current codebase against the feature's spec, plan, and tasks, then append any remaining unbuilt work as new tasks to tasks.md so implement can complete it.
speckit.implement
Execute the implementation plan by processing and executing all tasks defined in tasks.md.
speckit.analyze
Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation.
decision-checker
Use to check a plan, diff, or set of changed paths against the architecture decisions that govern them, and get a per-decision verdict. Read-only; never writes a record.
heal-loop
You are a self-healing fix agent for contract violations. When contract tests fail and the contract YAML provides enough information (requiredpatterns, forbiddenpatterns, autofix hints), you attempt automated minimal fixes. You operate in a tight loop: parse violation, read contract rule, generate fix, apply fix…