igniteui-blazor-generate-from-image-design — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited igniteui-blazor-generate-from-image-design (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Before writing any implementation code, you must complete these steps in order:
IgniteUI.Blazor.Lite, IgniteUI.Blazor.GridLite for general purpose components and light-weight grid, or IgniteUI.Blazor / IgniteUI.Blazor.Trial for specialized feature-rich grids and charts) only when theming or component availability depends on it.igniteui-blazor-theming skill; use the igniteui-theming MCP tools instead of styling from memory.get_doc for every chosen component family before using it.IgniteUI.Blazor.Lite, IgniteUI.Blazor.GridLite for general purpose components and the light-weight grid, and IgniteUI.Blazor (trial version available publicly as IgniteUI.Blazor.Trial) for specialized feature-rich grids and charts.list_components with targeted filters and framework: "blazor" to find matching components for each UI pattern.get_doc for every chosen component family before coding.create_palette or create_custom_palette with platform: "blazor" and output: "css" — do not use create_theme for Blazor, it produces Sass requiring compilation. Optionally call create_elevations and create_typography for elevation and font overrides. (b) After a palette exists, prefer using design tokens or scoped semantic CSS variables over raw literals. (c) For every Ignite UI component, call get_component_design_tokens, map extracted image tokens to token roles, then call create_component_theme with the tokens differing from the global theme for the specific component.set_size, set_spacing, set_roundness tools to refine the view's visual fidelity against the image, then iterate on implementation and theming until the view matches the design closely.Read the input image carefully. For each visual section, identify:
Note: Do not guess the exact CSS properties at this stage; just identify the high-level structure and relative proportions. Do not try to fit the view into exact breakpoints or pixel values. Try to generate a flexible layout that preserves the observed proportions and can adapt to different screen sizes. You will refine the exact CSS rules in Step 8 after building a first version of the view.
Before writing code, create a decomposition table with one row per visible region containing:
| Region | Visual role | Candidate component | Custom CSS required | Data type |
|---|---|---|---|---|
| Example: sidebar item list | repeated rows with icon + label | IgbList | yes - item height, icon size | domain-appropriate mock data |
| Example: top bar | brand + tabs + search | IgbNavbar | yes - multi-zone flex layout | n/a |
| Example: side panel | always-visible navigation | IgbNavDrawer | yes - width, item styling | n/a |
Start every region with the most appropriate Ignite UI Blazor component from references/component-mapping.md. Only fall back to plain semantic HTML when the component DOM structure is fundamentally incompatible with the design after CSS overrides are considered. Document the reason for any plain-HTML fallback in a code comment.
Before writing code, produce a compact implementation brief that captures:
After the table, translate the image into CSS Grid rows and columns first. Preserve desktop proportions before adding responsive behavior, then define explicit breakpoint stacking rules for smaller screens.
This skill is Blazor-only. Check NuGet package only when component availability or theming depends on it.
If you need to confirm the NuGet package:
IgniteUI.Blazor.Lite (open-source), premium components such as charts, maps, gauges, full grids, and Dock Manager are not available.IgniteUI.Blazor.GridLite (open-source), use IgbGridLite only for lightweight Grid Lite scenarios.IgniteUI.Blazor, the full component suite is available.IgniteUI.Blazor.Trial, the trial, publicly available on NuGet.org.Then call list_components with framework: "blazor" and relevant filters to find components matching each UI pattern. Common filters:
chart, sparkline - for data visualizationlist view, card, avatar, badge - for data displaynav, navbar, drawer - for navigationprogress, gauge - for metricsmap - for geographic displaysgrid - for tabular dataUse narrow search terms to reduce noisy MCP results. Search for the specific UI pattern you need, such as list view instead of list.
For component-to-Ignite-UI mapping, see references/component-mapping.md.
For every chosen component category, call get_doc with the doc name from list_components results (e.g., name: "card", framework: "blazor"). Use the doc name field from the MCP results, not the result title shown in the list. This is mandatory before coding and gives exact usage patterns, parameters, and Razor markup structure.
Call search_docs for feature-based questions (e.g., "how to configure [component] for [specific behavior or styling need]").
Use this skill for the image-to-view theming workflow only. The dedicated igniteui-blazor-theming skill remains the source of truth for palette-token behavior, global theme rules, and broader theming-system guidance.
Before generating any theme code, inspect the project's host page (wwwroot/index.html, App.razor, or _Host.cshtml), global CSS files (wwwroot/css/app.css or wwwroot/css/site.css), and any existing theme source or compiled theme files (theme.scss, theme.css, package scripts, or build pipeline references). Look for an existing CSS theme <link>, compiled custom theme, or :root CSS custom property overrides that already define a palette.
create_theme or create_palette unless the user explicitly wants a global theme change. Instead:Follow this order - MCP guidance first, image extraction second:
theming://guidance/colors/rules (or get_theming_guidance) before looking at the image. This tells you the available theme inputs and any luminance or variant constraints.create_palette with output: "css" - NOT create_theme, which always outputs Sass requiring compilation):create_palette({
primary: "<color extracted from image for primary slot>",
secondary: "<color extracted from image for secondary slot>",
surface: "<color extracted from image for surface/background slot>",
variant: "<resolved theme variant>",
platform: "blazor",
output: "css"
})Read and act on any luminance warnings returned. If the design needs multiple surface depths that a single generated surface color does not cover, use create_custom_palette or define semantic CSS variables for the additional depths in the global CSS file.
Use create_palette for straightforward designs with a small, coherent color system. Use create_custom_palette when the design has multiple distinct surface depths, several accent families, or when the generated palette cannot reliably match the screenshot.
The create_palette(output: "css") output for Blazor produces CSS custom property overrides. Apply them in your global CSS file (e.g., wwwroot/css/app.css) or as a :root block.
Scope: this step applies only to core Ignite UI Blazor components (grid, list, navbar, drawer, card, inputs, chips, etc.). DV components - charts, maps, gauges, and sparklines - have no CSS design tokens. Skip this step for them and set their visual properties exclusively via component parameters as described in references/gotchas.md and in Step 7.
For every core Ignite UI component chosen in Steps 3-4, follow this MCP-first loop - query MCP before touching the image:
get_component_design_tokens(component) before looking at the image for that component. Read the full token list with names, types, and descriptions. Identify which tokens correspond to visible surfaces, text, borders, icons, and interaction states.create_component_theme(component, platform: "blazor", output: "css", tokens) passing only the tokens whose resolved value differs from the global theme. This produces a CSS block with igc-<tag> { --ig-<component>-<token>: ...; } selectors.Where to place the generated CSS:
wwwroot/css/app.css or equivalent) - use the generated code as-is. No modification needed.igc-<tag> selector with ::deep so Blazor's CSS scoping does not block it:/* MCP output (goes in global app.css as-is) */
igc-chip {
--ig-chip-background: var(--ig-primary-500);
--ig-chip-text-color: var(--ig-primary-500-contrast);
}
/* Same override in a .razor.css isolation file - add ::deep */
::deep igc-chip {
--ig-chip-background: var(--ig-primary-500);
--ig-chip-text-color: var(--ig-primary-500-contrast);
}Use ::part() (e.g., igc-chip::part(base)) only when a style cannot be achieved through design tokens - verify via get_component_design_tokens first. In isolation files, combine: ::deep igc-chip::part(base) { ... }. Do not use ::part() as the default styling approach for tokens.
Do not run create_component_theme for regions built with custom HTML/CSS only.
Apply in this exact order:
create_palette with platform: "blazor" and output: "css" (Step 5b)get_component_design_tokens -> map image design tokens -> resolve values to design tokens or semantic CSS variables -> create_component_theme with platform: "blazor" (Step 5c)get_color after palette generation whenever a palette token can represent the final color intentUse IgniteUI.Blazor.Lite and IgniteUI.Blazor.GridLite for general purpose components and the light-weight grid. For specialized feature-rich grids, charts, maps, gauges, sparklines, and Dock Manager, use IgniteUI.Blazor (licensed) or IgniteUI.Blazor.Trial (trial version available publicly on NuGet.org). There are no separate DV-specific packages to install.
However, each DV component requires module registration in Program.cs:
builder.Services.AddIgniteUIBlazor(
typeof(IgbCategoryChartModule),
typeof(IgbFinancialChartModule),
typeof(IgbDataChartModule),
typeof(IgbPieChartModule),
typeof(IgbSparklineModule),
typeof(IgbGeographicMapModule),
typeof(IgbLinearGaugeModule),
typeof(IgbRadialGaugeModule),
typeof(IgbBulletGraphModule)
// Register only the modules you actually use
);If the required NuGet package is not referenced in the project, identify the correct package and version first, then ask for approval before modifying the .csproj.
Note:IgniteUI.Blazor.Lite(open-source) does not include charts, maps, gauges, full grids, or Dock Manager. If those are needed, the project requiresIgniteUI.Blazor(licensed) orIgniteUI.Blazor.Trial(evaluation with trial watermark). For a lightweight open-source grid, useIgniteUI.Blazor.GridLitewithIgbGridLite.
.razor file with Razor markup and a matching .razor.css file for CSS isolation. Keep layout, spacing, typography, and surface styling in the CSS isolation file rather than inline attributes.@code { } block at the end of the .razor file for small components. For complex components, use a code-behind .razor.cs file.Igb* component's module in Program.cs: builder.Services.AddIgniteUIBlazor(typeof(IgbXxxModule), ...);@using IgniteUI.Blazor.Controls in _Imports.razor[Parameter] for public component parametersEventCallback<T> for event handlers@ref="myRef" with a matching field for programmatic access@bind-Value, @bind-Checked, and other documented bindable parameters for two-way binding<Template> child elements with context parameter for templating (not <ng-template>)@inject for dependency injectionAfter the first implementation pass, use the set_size, set_spacing, and set_roundness tools to adjust the view's visual properties and close the gap with the image. Focus on the most visually distinctive elements first (e.g., panel proportions, chart shape, button prominence) before tuning smaller details (e.g., row heights, spacing between regions).
Use this validation loop explicitly:
dotnet build)dotnet run or dotnet watch)In terminal-only environments, the user performs the visual comparison and provides feedback on any mismatches. Only perform the visual check directly when the environment has browser and screenshot capabilities available to the agent.
Use this checklist during the first visual comparison:
Fix C# compilation or Razor template errors immediately during the build step. Use the build output, component docs, references/gotchas.md, and the user's visual feedback to close the remaining gaps. Typical adjustments include:
After the build succeeds with zero errors, refine layout proportions, color values, missing sections, and typography until the view matches closely.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.