microsoft/scenario-discovery
Discover and present potential modernization (upgrade) opportunities for a solution or set of projects
npx skills add https://github.com/microsoft/upgrade-agent-plugins --skill scenario-discovery
Scan the user's solution for modernization opportunities and present them clearly.
Call discover_upgrade_scenarios(solutionPath, projectPath) to analyze the solution.
projectPath. Otherwise, pass it empty to scan the entire solution.If the tool returns no results: tell the user no modernization opportunities were found for their solution and ask if they'd like to try with a different solution or project scope.
Use the tool result and follow the format below.
🔍 **Found {N} modernization opportunity/opportunities**
Present at most 5 scenarios, sorted by priority (they're already sorted in the tool result). Each scenario is a block separated by ---:
{emoji} **{Scenario name}**
{Value proposition — 1-2 sentences explaining why this upgrade is valuable.}
Affects: {up to 3 project names}
Project names:
Affects: WebApp, DataLayer, Common, and 4 moreEmoji selection:
If more than 5 scenarios exist, add after the last card:
...and {M} more opportunities. Would you like me to generate a full discovery report with all of them?
Call to action (always, after cards or overflow note):
Would you like me to start this upgrade?Which would you like to start with? I recommend {first} — {one-sentence reason}.Which would you like to start with? I recommend {first} as the highest-priority item.> 🔍 Found 3 modernization opportunities
>
> ---
>
> 🚀 Upgrade to .NET 10
> Move your projects to .NET 10 for better performance, new language features, and long-term support.
>
> Affects: WebApp, DataLayer, Common, and 2 more
>
> ---
>
> 🔄 Migrate Newtonsoft.Json to System.Text.Json
> System.Text.Json offers better performance and is the built-in JSON library in modern .NET.
>
> Affects: WebApp, DataLayer
>
> ---
>
> 🔒 Fix vulnerable NuGet packages
> Some packages have known security vulnerabilities that should be addressed.
>
> Affects: WebApp
>
> ---
>
> Which would you like to start with? I recommend Upgrade to .NET 10 — it's the highest-impact change and other migrations benefit from the latest framework.
When the user asks for the full report (only relevant when 6+ scenarios were found and the summary was truncated), produce a markdown document using ALL data from the tool result — no truncation.
Follow this template exactly. Do NOT add sections, recommendations, lifecycle references, or any content beyond what the tool returned. The report presents what was *found* — not what you *think* might be useful. Unverified recommendations (e.g., "enable nullable", "add Aspire") make the report unreliable. If additional analysis is wanted, that's a separate conversation.
Use this structure:
~~~markdown
Scenarios found: {total count}
{For each scenario, in priority order:}
{Description and value proposition — use the text from the tool result.}
Importance: {importance level}
Affected projects:
{full/path/to/ProjectA.csproj}{full/path/to/ProjectB.csproj}~~~
That's it. No "Recommendations" section, no "Resources" section, no "Current Status" section, no "Support Lifecycle" section. Only the scenarios and their data as returned by the tool.
Write it to the scenario folder as discovery-report.md if a scenario folder exists, or present it inline if no scenario is active. Confirm the path to the user after writing.
Take microsoft/scenario-discovery from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.