Skip to content

Add Ignite UI Blazor skill - #994

Closed
kdinev wants to merge 16 commits into
dotnet:mainfrom
kdinev:igniteui-blazor-skills
Closed

Add Ignite UI Blazor skill#994
kdinev wants to merge 16 commits into
dotnet:mainfrom
kdinev:igniteui-blazor-skills

Conversation

@kdinev

@kdinev kdinev commented Aug 5, 2026

Copy link
Copy Markdown

Summary

This pull request adds a new skill for integrating Ignite UI components into Blazor applications, along with an evaluation test for the skill. The main focus is to provide clear, file-oriented guidance for adding and configuring Ignite UI in various Blazor project types, especially split Blazor Web Apps.

Related issue

Validation

Introduced a new evaluation YAML (eval.yaml) that tests the skill’s ability to provide concrete, file-specific integration steps for using Ignite UI in a split Blazor Web App. The evaluation checks for explicit package references, service registration in both server and client, correct _Imports.razor usage, proper asset linking, and file-oriented instructions.

Checklist

  • I searched existing issues and pull requests to avoid duplicates.
  • I kept this pull request focused and avoided unrelated refactors.
  • I added or updated tests, evals, or documentation when changing skill or agent behavior.
  • I updated CODEOWNERS when adding or moving owned content.
  • I updated all marketplace manifests when plugin metadata changed.
  • I updated eng/known-domains.txt for any new external domains referenced by skill content.

Copilot AI lite review requested due to automatic review settings August 5, 2026 14:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request introduces a new dotnet-blazor skill that guides developers through integrating Ignite UI (including GridLite) into Blazor apps—especially split Blazor Web Apps—and adds a capability eval to validate that the skill produces concrete, file-oriented setup steps.

Changes:

  • Added a new skill document (SKILL.md) describing NuGet packages, service registration, _Imports.razor, host-page assets, and render-mode guidance for Ignite UI in Blazor.
  • Added a new evaluation spec (eval.yaml) to test that responses include the required packages, AddIgniteUIBlazor() registration, _Imports.razor usage, and asset linking details.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
tests/dotnet-blazor/use-igniteui-blazor/eval.yaml Adds a capability eval that checks for key Ignite UI integration details in the model output.
plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md Adds the new skill guidance for installing/configuring Ignite UI (Lite + GridLite) across Blazor project types.
Suppressed comments (2)

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:84

  • The fingerprinted asset example also uses the _content/IgniteUI.Blazor/... root; if the intent is to document the Lite package setup, this should reference the Lite asset root for consistency with the rest of the setup steps.
<link rel="stylesheet" href="@Assets["_content/IgniteUI.Blazor/themes/light/bootstrap.css"]" />

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:79

  • The theme path description still points to _content/IgniteUI.Blazor/themes/, which doesn’t match the recommended IgniteUI.Blazor.Lite package in this skill. Aligning the documented _content root avoids confusion about which static asset base path to use.
Theme files under `_content/IgniteUI.Blazor/themes/` are `{light|dark}/{bootstrap|material|fluent|indigo}.css` — link exactly one.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +43 to +46
- type: output-contains
config:
substring: server and client Program.cs
- type: prompt
Comment thread plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md
@AbhitejJohn

Copy link
Copy Markdown
Collaborator

Tagging @danroth27 and @javiercn to help review.

Comment thread plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md Outdated
Comment thread plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md
Comment thread tests/dotnet-blazor/use-igniteui-blazor/eval.yaml
@kotlarmilos

Copy link
Copy Markdown
Member

/evaluate

Copilot AI review requested due to automatic review settings August 19, 2026 17:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

Suppressed comments (4)

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:74

  • The static web asset paths in this example point at _content/IgniteUI.Blazor/..., which corresponds to the non-Lite package. Since this skill instructs installing IgniteUI.Blazor.Lite, the CSS/JS URLs should use _content/IgniteUI.Blazor.Lite/... or users will get 404s and the components won’t load.
<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
...
<script src="_content/IgniteUI.Blazor/app.bundle.js"></script>
<script src="_framework/blazor.web.js"></script>   <!-- or blazor.server.js / blazor.webassembly.js / blazor.webview.js -->

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:79

  • This path should also use the IgniteUI.Blazor.Lite static asset root to match the package name used elsewhere in the skill; otherwise the guidance is inconsistent and likely wrong for OSS Lite installs.
Theme files under `_content/IgniteUI.Blazor/themes/` are `{light|dark}/{bootstrap|material|fluent|indigo}.css` — link exactly one.

tests/dotnet-blazor/use-igniteui-blazor/eval.yaml:46

  • This grader is very brittle: the skill text says “both the server and the client Program.cs”, which won’t match the exact substring server and client Program.cs. Using a case-insensitive regex makes the check resilient while still enforcing that both sides are mentioned.
      - type: output-contains
        config:
          substring: server and client Program.cs
      - type: prompt

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:84

  • This fingerprinted asset example should use the IgniteUI.Blazor.Lite static asset root to match the package name used elsewhere in the skill; otherwise it won’t resolve for OSS Lite installs.
<link rel="stylesheet" href="@Assets["_content/IgniteUI.Blazor/themes/light/bootstrap.css"]" />
  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@kotlarmilos

Copy link
Copy Markdown
Member

❌ [use-igniteui-blazor] Skill description is 1,050 characters — maximum is 1,024. Shorten the description in SKILL.md frontmatter.

@AbhitejJohn

Copy link
Copy Markdown
Collaborator

@kdinev , @kotlarmilos : Would you mind moving these changes to a branch against this repo please? That would help get PR evaluations going. They do not run against branches in forks.

Copilot AI review requested due to automatic review settings August 24, 2026 08:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Suppressed comments (2)

Previously missed (2) — in code that hasn't changed since the last review.

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:83

  • The Razor example for fingerprinted assets uses nested double quotes (href="@assets["..."]"), which won’t compile because the attribute string terminates early. Use single quotes around the HTML attribute (or assign the value to a variable) so the indexer string literal is parsed correctly.
```razor
<link rel="stylesheet" href="@Assets["_content/IgniteUI.Blazor/themes/light/bootstrap.css"]" />
**plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:91**
* The GridLite section only mentions the stylesheet path, but GridLite also requires its own JS bundle when used in a grid-only setup. Without referencing the GridLite app.bundle.js, users can end up with a grid that doesn’t render.

IgniteUI.Blazor.GridLite ships its own stylesheet from its own asset root:

<link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css" rel="stylesheet" />
</details>

Comment thread tests/dotnet-blazor/use-igniteui-blazor/eval.yaml Outdated
Comment thread tests/dotnet-blazor/use-igniteui-blazor/eval.yaml Outdated
Copilot AI review requested due to automatic review settings August 24, 2026 14:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

Suppressed comments (1)

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:91

  • This GridLite stylesheet example uses a concrete light/bootstrap path that the split-app eval explicitly forbids in output. Making the example path generic reduces the chance the model will echo the exact forbidden substring in non-grid answers while still documenting the correct asset root.
<link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css" rel="stylesheet" />

Comment thread tests/dotnet-blazor/use-igniteui-blazor/eval.yaml Outdated
Comment thread plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md Outdated
Comment thread plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 25, 2026 08:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Suppressed comments (2)

Previously missed (1) — in code that hasn't changed since the last review.

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:22

  • This skill has no markdown ordered-list workflow steps (1. ... lines), so skill-validator will emit the warning "No numbered workflow steps". Adding a short ordered workflow list improves agent adherence and avoids that warning.
# Application Setup & Component Registration

## 1. NuGet package

tests/dotnet-blazor/use-igniteui-blazor/eval.yaml:142

  • The grid-only scenario uses output-does-not-contain (unsupported) and also forbids the substring app.bundle.js, while the rubric requires adding the Ignite UI script. These constraints are internally inconsistent and will likely make the scenario ungradable or force an incorrect answer.
      - type: output-does-not-contain
        config:
          substring: AddIgniteUIBlazor
      - type: output-does-not-contain
        config:
          substring: app.bundle.js
      - type: output-contains

Comment thread tests/dotnet-blazor/use-igniteui-blazor/eval.yaml Outdated
Comment thread plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md
Copilot AI review requested due to automatic review settings August 25, 2026 08:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread tests/dotnet-blazor/use-igniteui-blazor/eval.yaml
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 31, 2026 08:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Review details

Suppressed comments (5)

Previously missed (4) — in code that hasn't changed since the last review.

tests/dotnet-blazor/use-igniteui-blazor/eval.yaml:18

  • The prompt explicitly names AddIgniteUIBlazor(), which makes the stimulus more leading/overfit than necessary (the graders already assert the method name appears in the answer). Consider rephrasing this bullet to ask for the required Ignite UI service registration without cueing the exact API name.
      5. Any note about where AddIgniteUIBlazor() has to be called in a split app.

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:46

  • This sentence is phrased as applying to all "Blazor Web App" projects, but the requirement to call AddIgniteUIBlazor() in both Program.cs files is specific to split Web Apps that actually have separate Server and Client projects (and especially InteractiveAuto). For a server-only Web App there is no client Program.cs. Consider tightening the wording to avoid misguiding users on the default single-project Web App template.
**Blazor Web App:** call `AddIgniteUIBlazor()` in **both** the server and the client `Program.cs`.

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:75

  • The comment listing alternative framework scripts omits the _framework/ prefix, which could lead users to copy/paste an incorrect script path. Elsewhere in this repo the examples consistently use _framework/<script>.js (e.g., plugins/dotnet-aspnetcore/skills/convert-blazor-server-to-webapp/SKILL.md:145-150).
<script src="_framework/blazor.web.js"></script>   <!-- or blazor.server.js / blazor.webassembly.js / blazor.webview.js -->

tests/dotnet-blazor/use-igniteui-blazor/eval.yaml:7

  • This eval has exactly 5 preference-eligible stimuli, which is the eligibility floor but is fragile: CONTRIBUTING.md notes that with exactly 5 stimuli a single tie makes a pass unreachable (it leaves only 4 discordant votes). Consider adding at least one more discriminating stimulus (e.g., a dormancy guard does not count toward the floor) to reduce tie risk and make the verdict more reliable.
stimuli:

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:22

  • This SKILL.md uses numbered headings ("## 1.") but no actual ordered-list step lines (e.g., "1. "). skill-validator only counts ordered-list markers (regex ^\d+\.\s) for the "Numbered workflow steps" check and will warn when none are present (eng/skill-validator/src/Check/SkillProfiler.cs:261-262). Add a small ordered-list workflow near the top so the skill passes that convention.
# Application Setup & Component Registration

## 1. NuGet package
  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@kdinev

kdinev commented Aug 31, 2026

Copy link
Copy Markdown
Author

@kotlarmilos Could you create a new branch in the repo, and I'll PR the change against that branch and that branch will be PRed against main for the workflow runs like @AbhitejJohn has requested? Alternative option is to give repo rights to our team to create branches and I'll handle it myself.

Copilot AI review requested due to automatic review settings August 31, 2026 16:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Review details

Suppressed comments (2)

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:26

  • The NuGet install snippet currently shows adding both IgniteUI.Blazor.Lite and IgniteUI.Blazor.GridLite unconditionally, which can encourage always installing both packages even when the user wants a grid-only or no-grid setup. Consider adding brief guidance in the snippet/comments to make GridLite clearly optional.
dotnet add package IgniteUI.Blazor.Lite       # OSS core UI components (MIT)
dotnet add package IgniteUI.Blazor.GridLite   # OSS lightweight grid (MIT)

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:78

  • Section 4 says "Both tags are required" without qualifying that this applies to the IgniteUI.Blazor.Lite components. Since the doc also calls out GridLite’s separate, grid-only stylesheet path, this reads as contradictory for grid-only setups. Scope the "both tags" requirement to the Lite package to avoid confusion.
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.
  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Comment thread plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md Outdated
```html
<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
...
<script src="_content/IgniteUI.Blazor/app.bundle.js"></script>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this manual script tag still required? IgniteUI.Blazor.Lite 0.1.1 already ships an IgniteUI.Blazor.Lite.*.lib.module.js Blazor JavaScript initializer that loads app.bootstrap.js and the component bundles. I verified in a default .NET 10 Blazor Web App that the components load and render correctly without adding app.bundle.js to App.razor. Could this guidance rely on the initializer instead, and document any older framework or hosting-model cases where a manual script is still necessary?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@danroth27 Good catch! That was required, but the state of the skill is from before the change you mention. I will update accordingly.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to add some context.
As you said, app.bundle.js is loaded automatically through the .lib.module.js initializer.

On the other hand, our docs still show a script tag for cases that use Ignite UI for Blazor global functions such as igRegisterScript. The explicit reference gives a reliable point to run that code.

If those functions aren't needed during page load, app.bundle.js doesn't need to be referenced explicitly.

Please take a look related discussion: IgniteUI/igniteui-blazor#233

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup, @jsakamotoIGJP made all valid points;
While we could leave the guidance that the script is only needed in some cases, I'd much rather drop it (leave it as legacy elsewhere), tackle the user scripts registration and completely update guidance for new code in this skill. Will need a lil bit to tackle, and thus delay the skill a bit if you don't mind. Will update on progress as soon as I can.

PS: The app.bundle.js is a bit a legacy artifact on our end - it was shipped before modules became a thing, and like these things often do, it stuck. Safety in stability and so on.

Co-authored-by: Daniel Roth <daroth@microsoft.com>
Copilot AI review requested due to automatic review settings September 2, 2026 07:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The skill guidance currently risks misguiding GridLite-only vs Lite setups (packages and required assets), which can cause incorrect integration instructions and eval failures.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (2)

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:26

  • The package snippet currently reads like IgniteUI.Blazor.GridLite is always installed alongside IgniteUI.Blazor.Lite, but several supported scenarios are GridLite-only or Lite-only. Marking GridLite as optional here will prevent the skill from recommending unnecessary package installs.
dotnet add package IgniteUI.Blazor.GridLite   # OSS lightweight grid (MIT)

plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md:88

  • This paragraph mentions when to use the GridLite stylesheet, but it doesn’t explicitly call out that GridLite-only setups omit AddIgniteUIBlazor() and app.bundle.js (a key distinction vs IgniteUI.Blazor.Lite). Making that explicit will help the skill avoid suggesting unnecessary startup/script changes for grid-only apps.
`IgniteUI.Blazor.GridLite` ships its own stylesheet from its own asset root, but should be used only if you are using the GridLite component exclusively. If you are using other Ignite UI components, do not link (or suggest) the GridLite stylesheet — use the main theme stylesheet above instead.
  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment on lines +78 to +79
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.

@kotlarmilos

Copy link
Copy Markdown
Member

@AbhitejJohn I don't have push permissions to create a new branch on the repo. Could you please help us with that?

<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
...
<script src="_content/IgniteUI.Blazor/app.bundle.js"></script>
<script src="_framework/blazor.web.js"></script> <!-- or blazor.server.js / blazor.webassembly.js / blazor.webview.js -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Regression — For MAUI Blazor Hybrid, BlazorWebView starts Blazor natively, so the host page should preserve <script src="_framework/blazor.webview.js" autostart="false"></script>. The current snippet presents blazor.webview.js as interchangeable with the auto-starting framework scripts, so an agent producing a complete MAUI host page could emit an incomplete tag. A one-line MAUI-specific callout would avoid that risk.

Flagged by: 3/3 reviewers after dispute; calibrated as non-blocking after source-level verification.

substring: IgniteUI.Blazor.GridLite
- type: output-not-contains
config:
substring: AddIgniteUIBlazor

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Testing — These output-not-contains checks (AddIgniteUIBlazor here and app.bundle.js below) also reject a correct explanation such as "do not call AddIgniteUIBlazor() or add app.bundle.js for GridLite-only." This was reproduced against the repository-pinned Vally 0.14.0 grader: correct negated prose receives score 0. Match actual usage syntax, such as an AddIgniteUIBlazor( invocation or an <script ...app.bundle.js> tag, instead of banning the bare terms.

Flagged by: 2/3 reviewers; empirically reproduced.

substring: _content/IgniteUI.Blazor/themes/light/bootstrap.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)'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Testing — This pattern only requires both or each near Server and Client text anywhere in the response; it is not tied to AddIgniteUIBlazor or either Program.cs. Direct probes showed that it passes generic architecture prose and negated advice such as "do not register in both Server and Client," while sufficiently separated correct wording can fail. Tie the assertion to positive registration in both projects rather than word proximity alone.

Flagged by: 2/3 reviewers; empirically reproduced.

@PureWeen PureWeen left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adversarial review summary

Two eval correctness defects should be addressed:

  • ⚠️ The GridLite-only negative substring graders penalize correct explanatory negations. This was reproduced using the repository-pinned Vally 0.14.0 implementation.
  • ⚠️ The split-app Server/Client proximity regex produces both false positives and false negatives and does not establish dual service registration. This was reproduced with direct regex probes.

One non-blocking documentation clarification is also suggested:

  • 💡 Preserve the MAUI-specific autostart="false" requirement when showing blazor.webview.js. First-party template and runtime source confirm the contract, although no native runtime reproduction was performed.

The five scenarios cover the intended project variants, but the two grader defects weaken the reliability of the grid-only and split-app cases. Existing review feedback about legacy app.bundle.js guidance and GridLite package/setup distinctions was not duplicated.

Methodology: 3 independent reviewers with adversarial consensus, followed by targeted empirical revalidation. Review event: COMMENT.

- Adds @using IgniteUI.Blazor.Controls to _Imports.razor so the components are available everywhere that needs them
- Includes both the Ignite UI theme stylesheet and app.bundle.js in the host page, with app.bundle.js before the Blazor framework script
- Does not suggest the GridLite stylesheet, which is only needed for a grid-only setup
- Keeps the answer specific to the relevant files instead of giving only general guidance

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Testing — The only Blazor Web App stimulus never checks the skill’s load-bearing static-SSR guidance. An answer can provide every requested package, registration, import, and asset detail while saying nothing about an interactive render mode, yet a default static-SSR page would still render no usable Ignite UI component. Add a distinct Web App failure scenario where blank components must be diagnosed as missing @rendermode Interactive* (or extend this rubric, though a separate scenario gives a cleaner signal).

Flagged by: 3/3 reviewers.

defaults:
timeout: 10m
runs: 5
stimuli:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Testing — This eval has no dormancy contract even though the skill explicitly routes general render-mode and architecture questions to create-blazor-project. Because this skill also contains broad Blazor/render-mode vocabulary, it can incorrectly activate for a generic “which Blazor render mode should I choose?” request and the eval would never detect that routing regression. Add an expect_activation: false stimulus with no Ignite UI terms at that nearest sibling boundary.

Flagged by: 3/3 reviewers.

substring: blazor.webassembly.js
- type: output-matches
config:
pattern: 'Igb[A-Za-z]+Module'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 TestingIgb[A-Za-z]+Module accepts any single module-shaped token, including IgbGridModule, even though this scenario explicitly rules out grid usage and asks about inputs, a combo, and a dialog. That lets a contradictory answer satisfy the deterministic module check. Require the requested component modules, for example Igb(Input|Combo|Dialog)Module with enough assertions to establish the intended preload set, while leaving the “preload does not gate rendering” semantics to the prompt rubric.

Flagged by: 3/3 reviewers.

@PureWeen PureWeen left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional eval review

A focused second pass using the repository’s eval-authoring rules found three additional non-duplicate improvements:

  • ⚠️ 3/3 reviewers: positively test the Blazor Web App static-SSR/render-mode failure that the skill claims to solve.
  • 💡 3/3 reviewers: add an expect_activation: false boundary case for generic render-mode/architecture questions with no Ignite UI requirement.
  • 💡 3/3 reviewers: tighten the generic module-name regex so a grid or unrelated module cannot satisfy the input/combo/dialog scenario.

The broader proposal to convert all mention checks into syntax/order checks was rejected: those semantic requirements are already valid prompt-grader responsibilities, and the concrete negative-grader/order defects are covered by existing threads. Prior feedback about the exact-five-stimulus floor and the split prompt naming AddIgniteUIBlazor() was also not duplicated.

Test coverage assessment: the project-type matrix is broad, but it omits one core positive behavior (interactive render mode) and all routing-restraint coverage. Methodology: 3 independent reviewers with adversarial consensus. Review event: COMMENT.

@kotlarmilos

Copy link
Copy Markdown
Member

Moving this work to #1111 so the evaluation workflows can run against a branch in dotnet/skills.

@kotlarmilos kotlarmilos closed this Sep 3, 2026
kotlarmilos

This comment was marked as outdated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants