plugins/github-copilot-modernization/skills/list-plans/SKILL.md
Discovers valid migration plans in the workspace and returns the selected plan path. A valid plan is a subdirectory of .github/modernize/ that contains plan.md AND tasks.json (tasks.json may be in the plan folder or in a .metadata subfolder). Handles 0, 1, or multiple plans and prompts the user when a choice is needed. Triggers: "list plans", "find plans", "select plan", "list-and-select-plan", "discover plans".
npx skillsauth add microsoft/github-copilot-modernization list-plansInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You MUST run this in a terminal — do NOT use file tools (list_dir, file_search, grep_search) to discover plans.
Detect the OS and run the matching script in the terminal. Replace <workspace-root> with the absolute path to the workspace root before running.
Windows (PowerShell) — run in terminal:
Set-Location "<workspace-root>"
$modernizeDir = ".github/modernize"
$plans = @()
if (Test-Path $modernizeDir) {
Get-ChildItem -Path $modernizeDir -Directory | ForEach-Object {
$hasPlan = Test-Path (Join-Path $_.FullName "plan.md")
$hasTasks = (Test-Path (Join-Path $_.FullName "tasks.json")) -or (Test-Path (Join-Path $_.FullName ".metadata/tasks.json"))
if ($hasPlan -and $hasTasks) {
$plans += @{ folder = $_.Name; planPath = "$modernizeDir/$($_.Name)/plan.md" }
}
}
}
$plans | ConvertTo-Json -Depth 2
macOS / Linux (bash) — run in terminal:
cd "<workspace-root>"
modernize_dir=".github/modernize"
entries="[]"
if [ -d "$modernize_dir" ]; then
for folder in "$modernize_dir"/*/; do
[ -d "$folder" ] || continue
name=$(basename "$folder")
if [ -f "$folder/plan.md" ] && ([ -f "$folder/tasks.json" ] || [ -f "$folder/.metadata/tasks.json" ]); then
entry="{\"folder\":\"$name\",\"planPath\":\"$modernize_dir/$name/plan.md\"}"
if [ "$entries" = "[]" ]; then
entries="[$entry]"
else
entries="${entries%]},$entry]"
fi
fi
done
fi
echo "$entries"
Parse the JSON output from the terminal as the list of valid plans for the next step.
Return no-plans-found to the caller. Do not prompt the user.
Return its path immediately — no user prompt needed:
.github/modernize/<folder>/plan.md
.github/modernize/<folder>/plan.md, extract the first heading, strip the leading # and any prefix of the form <Word> Plan: (e.g. Modernization Plan: , Migration Plan: ), and use the remainder as the title.Searched for plan.md and tasks.json files... There are multiple plans in this repository.header: plan-selectionquestion: Which plan would you like to execute?allowFreeformInput: falseoptions: one entry per plan — label = folder name, description = plan title from step 1Return the selected plan path to the caller:
.github/modernize/<selected-folder>/plan.md
development
Evaluates whether a user's modernization/rewrite request provides enough scenario context to proceed (e.g., target component library, screenshots, design system for frontend; API contract policy, data migration strategy for backend). Produces a deterministic clarity score, asks the user for missing required fields via a structured form, and writes a canonical `clarification.md` artifact consumed by all downstream agents. Triggers: "clarification gate", "scenario clarification", "elicit missing context", "evaluate prompt completeness", "ask user for screenshots / target library / design system". NOT for: feature specification (use feature-inventory), planning (use creating-implementation-plan), implementation (use implementing-code), or resolving spec-time `[NEEDS CLARIFICATION]` markers (those remain owned by feature-inventory).
tools
Lifecycle hooks for the modernize-rearchitecture coordinator. Defines hook points, registered actions, and execution rules.
development
Provides role charters (mission, ownership, core principles, quality bar) for a multi-agent coding team. Each charter defines the role's mission, ownership scope, core principle (boundary constraints), and quality bar. Most roles also include communication rules. Consumed by the coordinator during task decomposition to assign work to the correct role. Triggers: "look up role charter", "what does the architect own", "check role boundaries", "find team roles", "which role handles X", "list agent charters", "role responsibilities". NOT for: task decomposition (use breaking-down-tasks), implementation (use implementing-code), architecture analysis (use analyzing-architecture).
tools
Zero-dependency shell recon for any code repository — detect languages, count LOC, and report project scale. Pure POSIX find/wc or PowerShell, no Python or third-party tools required. Triggers: "how big is this project", "what languages", "project sizing", "repo recon", "LOC count", "scope check".