Add Ignite UI Blazor skill - #1111
Conversation
…ills into igniteui-blazor-skills
…ssue I noticed with the skill
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…ills into igniteui-blazor-skills
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Daniel Roth <daroth@microsoft.com>
Skill Coverage Report
|
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The eval and skill guidance contain a few correctness/robustness issues that can cause false passes/fails or mislead copy/paste setup steps.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review tier: Lite
Findings: 2
New issues introduced by this change (3)
| Severity | Finding |
|---|---|
tests/dotnet-blazor/use-igniteui-blazor/eval.yaml — The negative check for the GridLite stylesheet is overly specific (it only fails if the response… |
|
tests/dotnet-blazor/use-igniteui-blazor/eval.yaml — This grader requires a specific theme file (themes/light/bootstrap.css), but the prompt/rubric… |
|
plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md — The comment listing alternative Blazor framework scripts omits the required _framework/ prefix,… |
What changed in this PR
Adds a new dotnet-blazor skill and accompanying evaluation to guide (and test) Ignite UI Blazor Lite/GridLite integration across several Blazor project types, with emphasis on file-oriented setup steps for split Blazor Web Apps.
Changes:
- Introduces
use-igniteui-blazorskill guidance covering packages, service registration,_Imports.razor, asset linking, and render-mode notes. - Adds a new
eval.yamlwith multiple stimuli to validate the skill’s responses for split Web Apps, Blazor Server, MAUI Blazor Hybrid, and grid-only scenarios.
| File | Description |
|---|---|
| tests/dotnet-blazor/use-igniteui-blazor/eval.yaml | Adds eval scenarios/graders to validate concrete, file-specific Ignite UI setup guidance across project types. |
| plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md | Adds the skill documentation and routing metadata for integrating Ignite UI Blazor Lite/GridLite in Blazor apps. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| - type: output-not-contains | ||
| config: | ||
| substring: '<link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css"' | ||
| - type: output-contains |
|
👋 @kotlarmilos — this PR has 3 unresolved review thread(s). When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the |
AbhitejJohn
left a comment
There was a problem hiding this comment.
Thanks for putting this together. I completed a multi-model review and also checked the evaluation design. The structural checks pass, but there is no skilled-versus-baseline result for this head yet, and the current five-stimulus design has no tolerance for a tie. I left focused comments on the new issues that are not already covered by the existing review threads.
(Copilot, commenting on Abhitej's behalf.)
| typeof(IgbInputModule), typeof(IgbComboModule), typeof(IgbDialogModule)); | ||
| ``` | ||
|
|
||
| Module names always follow `Igb{ComponentName}Module`. In `IgniteUI.Blazor.Lite` a component registers its own module on first render, so the explicit list trims the initial payload rather than gating rendering. |
There was a problem hiding this comment.
Thanks for documenting this path. Could we correct the payload guidance here? The shipped implementation leaves ModulesToLoad empty for AddIgniteUIBlazor() and lets components request modules on first render. Passing Igb...Module types preloads those modules during startup, so it increases the initial transfer rather than trimming it. The fifth eval stimulus and rubric repeat the same inversion, so could we update both to describe this as a startup warm-up/first-render latency trade-off?
(Copilot, commenting on Abhitej's behalf.)
| <script src="_framework/blazor.web.js"></script> <!-- or blazor.server.js / blazor.webassembly.js / blazor.webview.js --> | ||
| ``` | ||
|
|
||
| Both tags are required: without the stylesheet components render unstyled, without `app.bundle.js` they do not render at all. `app.bundle.js` must come **before** the Blazor framework script. |
There was a problem hiding this comment.
Could we scope this requirement to IgniteUI.Blazor.Lite and add the GridLite-only contract explicitly? The GridLite package README says no service registration or manual JavaScript bundle is required, and the package has no app.bundle.js. As written, a GridLite-only user can follow this unconditional step and add invalid Lite setup. A short GridLite branch saying "no AddIgniteUIBlazor(), no app.bundle.js; add the namespace and GridLite stylesheet only" would also align the skill with stimulus 4.
(Copilot, commenting on Abhitej's behalf.)
| - type: output-contains | ||
| config: | ||
| substring: IgniteUI.Blazor.GridLite | ||
| - type: output-not-contains |
There was a problem hiding this comment.
Could we replace these bare negative substring graders with checks for prescriptive usage, or leave this distinction to the rubric? A correct answer such as "do not call AddIgniteUIBlazor() and do not add app.bundle.js for GridLite" fails both hard graders. The same negation-blind issue appears at lines 169-171, and this repo already documents and fixes this failure mode in tests/dotnet-test/test-anti-patterns/eval.yaml. Since the skilled arm is more likely to know and explicitly rule out these names, the current checks can bias the comparison against it.
(Copilot, commenting on Abhitej's behalf.)
| type: capability | ||
| defaults: | ||
| timeout: 10m | ||
| runs: 5 |
There was a problem hiding this comment.
Could we add at least one more distinct preference stimulus before treating this eval as sufficient evidence? check_eval_quality.py reports exactly five preference stimuli, so one tie leaves only four discordant votes and makes a passing verdict impossible. runs: 5 measures reliability for the same five tasks; it does not add statistical power. A separate expect_activation: false case for a plain Blazor request with no Ignite UI would also verify the routing boundary in the description, although that dormancy case would not count toward the preference floor.
(Copilot, commenting on Abhitej's behalf.)
|
👋 @kotlarmilos — this PR has 7 unresolved review thread(s). When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the |
fix(use-igniteui-blazor): applying review comments to the repo branch
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
The new eval includes an overly specific negative assertion that can miss disallowed GridLite stylesheet suggestions when formatted differently, reducing test reliability.
Review tier: Lite
Findings: 1
Pre-existing issues (1)
| Severity | Finding |
|---|---|
tests/dotnet-blazor/use-igniteui-blazor/eval.yaml — The negative check for the GridLite stylesheet is overly specific (it only fails if the response… View comment |
Issues resolved since last review (2)
| Severity | Finding |
|---|---|
plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md — The comment listing alternative Blazor framework scripts omits the required _framework/ prefix,… View resolved comment |
|
tests/dotnet-blazor/use-igniteui-blazor/eval.yaml — This grader requires a specific theme file (themes/light/bootstrap.css), but the prompt/rubric… View resolved comment |
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
tests/dotnet-blazor/use-igniteui-blazor/eval.yaml:36
- The
output-not-containscheck is too specific (it matches only one exact<link href="..."shape), so a response could still suggest the GridLite stylesheet using a different tag shape (e.g.,href="@Assets[\"_content/...\"]", addingrel, different attribute order, etc.) and still pass. To make the eval robust and aligned with the rubric, match the GridLite stylesheet path itself rather than one exact tag string.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 30fab6c6-952c-4a25-a586-e374c984a247
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The skill’s asset-linking guidance is incomplete/ambiguous around the Ignite UI JS bundle (app.bundle.js), and the eval doesn’t currently enforce that requirement for the key split-Web-App scenario.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review tier: Lite
Findings: 1
New issues introduced by this change (2)
| Severity | Finding |
|---|---|
plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md — The host-page section calls out app.bundle.js earlier (for GridLite-only) but never shows… |
|
tests/dotnet-blazor/use-igniteui-blazor/eval.yaml — The split Blazor Web App prompt asks for the host-page tags for Ignite UI assets, but the graders… |
Pre-existing issues (1)
| Severity | Finding |
|---|---|
tests/dotnet-blazor/use-igniteui-blazor/eval.yaml — The negative check for the GridLite stylesheet is overly specific (it only fails if the response… View comment |
| ```html | ||
| <link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" /> | ||
| ``` | ||
|
|
||
| The stylesheet is required: without it components render unstyled. | ||
|
|
||
| Theme files under `_content/IgniteUI.Blazor/themes/` are `{light|dark}/{bootstrap|material|fluent|indigo}.css` — link exactly one. | ||
|
|
||
| .NET 9+ Web App projects can use the fingerprinted asset collection: | ||
|
|
||
| ```razor | ||
| <link rel="stylesheet" href="@Assets["_content/IgniteUI.Blazor/themes/light/bootstrap.css"]" /> | ||
| ``` | ||
|
|
| graders: | ||
| - type: output-contains | ||
| config: | ||
| substring: IgniteUI.Blazor.Lite | ||
| - type: output-contains | ||
| config: | ||
| substring: IgniteUI.Blazor.GridLite | ||
| - type: output-contains | ||
| config: | ||
| substring: AddIgniteUIBlazor | ||
| - type: output-contains | ||
| config: | ||
| substring: _Imports.razor | ||
| - type: output-matches | ||
| config: | ||
| pattern: '_content/IgniteUI\.Blazor/themes/(?:light|dark)/(?:bootstrap|material|fluent|indigo)\.css' | ||
| - type: output-matches | ||
| config: | ||
| pattern: '(?:both|each)[\s\S]{0,80}(?:[Ss]erver[\s\S]{0,80}[Cc]lient|[Cc]lient[\s\S]{0,80}[Ss]erver)' | ||
| - type: prompt |
|
@kotlarmilos I created one more PR about adding more stimuli, as well as a small adjustment to the skill the tests uncovered. #1151 |


Summary
This moves the changes from #994 to a branch in
dotnet/skillsso the evaluation workflows can run. It adds guidance for integrating Ignite UI components into Blazor applications and an evaluation for split Blazor Web Apps.Validation
The evaluation checks package references, service registration in the server and client projects,
_Imports.razorusage, asset linking, and file-specific setup instructions.