igniteui-blazor-theming — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited igniteui-blazor-theming (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.
This skill teaches AI agents how to theme Ignite UI for Blazor applications using built-in CSS theme files, CSS custom properties, CSS shadow parts, and the Ignite UI Theming MCP server. It covers theme switching, palette generation, component-level design tokens, global layout tokens, and scoped CSS customization.
references/common-patterns.md)igniteui-theming) available as a tool providerAGENT INSTRUCTION - MCP Server Setup (REQUIRED)
>
Before using any theming tools, you MUST verify the MCP server is available by calling any lightweight theming MCP tool. This skill is already scoped to Ignite UI for Blazor, so use platform: "blazor" in theming tool calls. If the theming tool is not available or the call fails, you MUST automatically configure it by following the setup process steps described below.>
After writing the file, inform the user that the MCP server has been configured and they may need to reload the editor for the tools to activate. Start the MCP server and wait for that MCP server to start before continuing the theming related work. Do NOT skip this step or ask the user to do it manually.
Full setup instructions for VS Code, Cursor, Claude Desktop, and JetBrains IDEs are in [`references/mcp-setup.md`](./references/mcp-setup.md). Read that file for editor-specific configuration steps and verification.
| Layer | Purpose |
|---|---|
| Built-in theme CSS | Baseline Bootstrap, Material, Fluent, or Indigo styling in light/dark variants |
| Palette tokens | Global color CSS variables used across components |
| Component design tokens | Component-scoped CSS custom properties generated or discovered with MCP |
| CSS shadow parts | Fine-grained internal element styling only when the component doc lists supported parts |
| Layout tokens | Global roundness, spacing, and size controls generated by MCP tools |
Ignite UI for Blazor theming in this skill is CSS-first. Agents should generate or edit CSS custom properties and selectors for normal app styling.
Use built-in theme CSS files for the baseline visual system. Supported design systems are Bootstrap, Material, Fluent, and Indigo, with light and dark variants.
Confirm exact file paths in references/common-patterns.md before writing host-page markup. Only one built-in theme CSS file should be active at a time.
Use create_palette(platform: "blazor", output: "css", ...) for a generated palette from seed colors. Use create_custom_palette(platform: "blazor", output: "css", ...) only when the user needs explicit control over individual shade values.
Palette CSS belongs in :root and must be loaded after the Ignite UI built-in theme CSS.
For simple palette references, use get_color instead of writing color variable names from memory:
get_color(color: "primary", variant: "600")Use contrast: true when you need the matching text color token.
Raw color values are acceptable in the initial palette seed call. After the palette exists, component themes and custom CSS should use palette CSS custom properties wherever the desired color belongs to the theme.
Palette shades: chromatic shades use 50 as the lightest shade and 900 as the darkest shade. Do not invert chromatic colors for dark themes; only gray is inverted for dark variants.
Surface color must match the variant: use a light surface for variant: "light" and a dark surface for variant: "dark".
For component styling, first call get_component_design_tokens(component: "..."), then call create_component_theme(platform: "blazor", component: "...", tokens: {...}, output: "css") or write CSS using the returned token names. Do not use overrides; the MCP argument is tokens.
For components with variants, query the exact variant whenever possible. For example, use contained-button, flat-button, outlined-button, or fab-button instead of generic button before generating a component theme.
Use palette token references such as var(--ig-primary-500) and var(--ig-primary-500-contrast) after a palette has been established. Do not pass raw hex/RGB/HSL values to component theme tokens unless the value is intentionally outside the theme palette.
For CSS parts, call the component's Blazor get_doc entry first. Do not say a component exposes CSS parts unless the Blazor doc confirms the exact part names.
Each component has its own set of design tokens. Before theming a component, call get_component_design_tokens and use only token names returned by the tool.
Some components are compound and may involve internally themed child components. When get_component_design_tokens returns compound guidance, follow the checklist from the tool response.
For standard compound components, generate the related themes listed by the tool and scope them under the parent component selector. For composed compound components, use only the primary parent tokens unless the user explicitly requests a specific refinement token.
Use MCP layout tools for global or scoped layout changes:
| Goal | MCP tool | Required value shape | ||
|---|---|---|---|---|
| Roundness | set_roundness | radiusFactor: 0..1 | ||
| Spacing | set_spacing | spacing: number plus optional inline / block | ||
| Size | set_size | `size: "small" | "medium" | "large"` |
Do not use legacy size names such as compact, cosy, or comfortable for Blazor theming tools.
The Ignite UI Theming MCP server provides code generation and reference tools for Blazor-ready CSS custom properties. Agents can see tool schemas directly, so this section only records the Ignite UI for Blazor theming workflow and product-specific constraints.
IMPORTANT - File Safety Rule: When generating or updating theme code, never overwrite existing style files directly. Instead, propose the changes as an update and let the user review and approve before writing to disk. If anapp.css,site.css,.razor.css, or other target style file already exists, show the generated code as a diff or suggestion rather than replacing the file contents. This prevents accidental loss of custom styles the user has already written.
Always follow this workflow:
Tool: read_resource
Params: { uri: "theming://platforms/blazor" }Use this as the lightweight availability check and platform reference for Blazor theming tasks.
Note: For Blazor (CSS-first, no Sass pipeline), usecreate_palettewithoutput: "css"to get CSS custom properties directly. Do NOT usecreate_themefor Blazor — it always outputs Sass which requires a compilation step not present in standard Blazor projects. Thecreate_paletteparam names areprimary/secondary/surface(notprimaryColor/secondaryColor/surfaceColor— those belong tocreate_theme).
Tool: create_palette
Params: {
platform: "blazor",
output: "css",
primary: "#3f51b5",
secondary: "#e91e63",
surface: "#ffffff",
variant: "light"
}For dark themes, use a dark surface color and variant: "dark". Read theming://guidance/colors/rules first when surface or gray color choices are unclear.
Tool: get_component_design_tokens
Params: { component: "contained-button" }Then generate CSS using only valid token names returned by the tool:
Tool: create_component_theme
Params: {
platform: "blazor",
output: "css",
component: "contained-button",
tokens: {
"background": "var(--ig-primary-500)",
"foreground": "var(--ig-primary-500-contrast)"
}
}Use tokens, not overrides. If the token discovery response distinguishes primary tokens from refinement tokens, use only the primary tokens unless the user explicitly requested the refined state or subpart.
Tool: set_roundness
Params: { platform: "blazor", output: "css", radiusFactor: 0.5 }
Tool: set_spacing
Params: { platform: "blazor", output: "css", spacing: 1.25 }
Tool: set_size
Params: { platform: "blazor", output: "css", size: "small" }Place generated CSS in an app stylesheet loaded after the Ignite UI theme CSS, such as wwwroot/css/app.css.
<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />Palette and global layout CSS normally go in :root. Component theme CSS goes on the generated igc-* selector or under a scoped wrapper selector.
In .razor.css isolation files, prefix igc-* selectors so Blazor CSS isolation does not block the override.
Use read_resource with these URIs for preset values and documentation:
| URI | Content |
|---|---|
theming://platforms/blazor | Blazor platform specifics |
theming://presets/palettes | Preset palette colors |
theming://guidance/colors/usage | Which shades to use for which purpose |
theming://guidance/colors/roles | Semantic color roles |
theming://guidance/colors/rules | Light/dark theme color rules |
DO NOT write CSS variable names, token names, or palette colors from memory. Design token names and values are version-specific and theme-specific. Anything generated without reading the reference files or querying the MCP theming server will produce incorrect CSS.
You are required to complete all of the following steps before producing any theming-related code or answer:
Step 1 - Identify the theming task. Map the user's request to one or more rows in the Task to Reference File table below.
Step 2 - Use the theming MCP tools for version-specific values. For any task involving design token lookup, palette generation, component theme CSS, or global layout tokens, call the relevant Ignite UI Theming MCP tool. Do not infer token names, selector names, or palette variables from memory.
Step 3 - Read the relevant reference files in parallel. Call read_file on all identified reference files in a single parallel batch.
Step 4 - Only then produce output. Base CSS and instructions on what the MCP tools return and what the reference files say.
| Task | Reference file to read |
|---|---|
| Switching themes (light/dark/Bootstrap/Material/Fluent/Indigo), adding the CSS link, dark mode toggle, scoped theming | references/common-patterns.md |
| Setting up the MCP theming server in VS Code, Cursor, Claude Desktop, or JetBrains IDEs | references/mcp-setup.md |
AGENT INSTRUCTION - CSS customization
>
For normal Ignite UI for Blazor app styling, generate CSS custom properties and selectors.
AGENT INSTRUCTION - CSS parts
>
Some Ignite UI Blazor components expose CSS shadow parts via::part(). Useget_docfor the component to confirm whether parts are available and to get the exact part names. Useget_component_design_tokensto get token names; do not infer token names or part names from Angular, React, or Web Components examples.
AGENT INSTRUCTION - Theming MCP server platform
>
This skill already establishes the platform. When calling Ignite UI Theming MCP tools that accept a platform, always pass platform: "blazor".contained-button, flat-button, outlined-button, and fab-buttonoverrides object selectors in CSS**, not Razor component names such as IgbButton`light and a dark surface for darkigniteui-blazor-components - All non-grid UI componentsigniteui-blazor-grids - Data Grids~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.