Install any skill in seconds. Free to start, no credit card required.
Get Started Free →**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.
.claude/skills/fritzandfriends-contoso-migration-test/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 43% | 0% |
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
powershell .\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\powershell $env:ASPNETCORE_URLS = "http://localhost:44380" dotnet run --project samples\AfterContosoUniversity\
http://localhost:44380powershell $env:CONTOSO_BASE_URL = "http://localhost:44380" dotnet test src\ContosoUniversity.AcceptanceTests\ --verbosity normal
dev-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 |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,611 | 8,730 | +89% | 1 | 1 | 0% | 242 | 1,949 | +705% | 0 | 0 | — |
case-02 | fail→fail | 16,726 | 4,994 | -70% | 1 | 1 | 0% | 2,935 | 1,380 | -53% | 0 | 0 | — |
case-03 | fail→pass | 13,463 | 2,797 | -79% | 1 | 1 | 0% | 2,072 | 1,547 | -25% | 0 | 0 | — |
case-04 | fail→pass | 13,053 | 3,663 | -72% | 1 | 1 | 0% | 2,218 | 1,723 | -22% | 0 | 0 | — |
case-05 | fail→pass | 6,040 | 1,854 | -69% | 1 | 1 | 0% | 953 | 1,393 | +46% | 0 | 0 | — |
case-06 | fail→pass | 10,868 | 3,684 | -66% | 1 | 1 | 0% | 1,676 | 1,699 | +1% | 0 | 0 | — |
case-07 | fail→pass | 8,007 | 3,290 | -59% | 1 | 1 | 0% | 1,206 | 1,721 | +43% | 0 | 0 | — |
case-08 | pass→pass | 13,730 | 10,083 | -27% | 1 | 1 | 0% | 2,616 | 2,976 | +14% | 0 | 0 | — |
case-09 | pass→pass | 6,806 | 1,824 | -73% | 1 | 1 | 0% | 1,149 | 1,349 | +17% | 0 | 0 | — |
case-10 | fail→pass | 9,887 | 3,241 | -67% | 1 | 1 | 0% | 1,810 | 1,715 | -5% | 0 | 0 | — |
case-11 | pass→pass | 13,257 | 7,202 | -46% | 1 | 1 | 0% | 2,318 | 2,391 | +3% | 0 | 0 | — |
case-12 | fail→pass | 13,238 | 3,057 | -77% | 1 | 1 | 0% | 2,066 | 1,664 | -19% | 0 | 0 | — |
case-13 | fail→pass | 7,710 | 1,786 | -77% | 1 | 1 | 0% | 1,283 | 1,439 | +12% | 0 | 0 | — |
case-14 | pass→pass | 1,706 | 1,774 | +4% | 1 | 1 | 0% | 268 | 1,437 | +436% | 0 | 0 | — |
case-15 | fail→pass | 7,742 | 2,106 | -73% | 1 | 1 | 0% | 1,267 | 1,402 | +11% | 0 | 0 | — |
case-16 | fail→pass | 9,224 | 1,922 | -79% | 1 | 1 | 0% | 1,465 | 1,466 | +0% | 0 | 0 | — |
case-17 | fail→pass | 5,582 | 1,920 | -66% | 1 | 1 | 0% | 932 | 1,447 | +55% | 0 | 0 | — |
case-18 | fail→fail | 6,166 | 1,691 | -73% | 1 | 1 | 0% | 1,024 | 1,357 | +33% | 0 | 0 | — |
case-19 | fail→pass | 9,980 | 1,371 | -86% | 1 | 1 | 0% | 1,563 | 1,298 | -17% | 0 | 0 | — |
case-20 | pass→pass | 6,658 | 4,472 | -33% | 1 | 1 | 0% | 1,145 | 1,913 | +67% | 0 | 0 | — |
case-21 | pass→pass | 10,000 | 4,945 | -51% | 1 | 1 | 0% | 1,736 | 2,080 | +20% | 0 | 0 | — |
case-22 | pass→pass | 11,736 | 4,759 | -59% | 1 | 1 | 0% | 1,965 | 2,097 | +7% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.