**WORKFLOW SKILL** — Execute end-to-end ContosoUniversity migration benchmark: clear output folder, run L1 script + L2 Copilot transforms, build, run Playwright acceptance tests, and generate a numbered run report. WHEN: "run contoso migration test", "test contoso university migration", "contoso migration benchmark", "run CU migration". INVOKES: migration-toolkit (scripts + skills), dotnet CLI, Playwright tests.
76
88%
Does it follow best practices?
Impact
40%
1.00x1 of 3 eval scenarios. Add 2 more for a full score.
Passed
No findings from the security scan
End-to-end migration benchmark that converts the ContosoUniversity Web Forms sample to Blazor Server and validates with 40 Playwright acceptance tests.
| Item | Path |
|---|---|
| Web Forms source | samples/ContosoUniversity/ContosoUniversity/ |
| Blazor output | samples/AfterContosoUniversity/ |
| L1 script | migration-toolkit/scripts/bwfc-migrate.ps1 |
| Migration skills | migration-toolkit/skills/ (4 skills) |
| Acceptance tests | src/ContosoUniversity.AcceptanceTests/ |
| Run reports | dev-docs/migration-tests/contosouniversity/ |
ContosoUniversity database (attach samples/ContosoUniversity/ContosoUniversity.mdf if needed)pwsh bin/Debug/net10.0/playwright.ps1 install from test project after first build)runNN folders in dev-docs/migration-tests/contosouniversity/ and use the next sequential numbersamples/AfterContosoUniversity/ but keep the directory itselfExpected duration: < 2 seconds
.\migration-toolkit\scripts\bwfc-migrate.ps1 `
-Path samples\ContosoUniversity\ContosoUniversity `
-Output samples\AfterContosoUniversity `
-Verbose.razor files created, no .aspx files in outputExpected duration: 20–30 minutes
Load and apply the migration toolkit from migration-toolkit/:
migration-toolkit/README.md for the overall approach and key principlesmigration-toolkit/skills/ — the toolkit contains all the skills needed for the repair phase; apply whichever skills are relevant to the errors and patterns encountered in the generated outputKey transforms to execute:
Page_Load → OnInitializedAsync)SelectMethod as SelectHandler<ItemType> delegates (NOT Items=)DbContext with SQL Server LocalDB connectionProgram.cs with DI registration for all BLL servicesSite.Master → MainLayout.razorIDbContextFactory)dotnet build samples\AfterContosoUniversity\$env:ASPNETCORE_URLS = "http://localhost:44380"
dotnet run --project samples\AfterContosoUniversity\http://localhost:44380$env:CONTOSO_BASE_URL = "http://localhost:44380"
dotnet test src\ContosoUniversity.AcceptanceTests\ --verbosity normaldev-docs/migration-tests/contosouniversity/runNN/REPORT.md using REPORT-TEMPLATE.md| Rule | Detail |
|---|---|
| Database | SQL Server LocalDB — never SQLite |
| Connection | Server=(localdb)\mssqllocaldb;Database=ContosoUniversity |
| SelectMethod | Preserve as SelectHandler<ItemType> delegate — never convert to Items= |
| L1→L2 handoff | No manual fixes between layers — L2 starts from raw L1 output |
| Report every run | Even failed/partial runs get a report documenting what went wrong |
| ItemType | Use ItemType (not TItem) for all data-bound component type parameters |
FritzAndFriends/BlazorWebFormsComponents
3154758
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.