{"id":3832,"date":"2026-06-11T14:22:52","date_gmt":"2026-06-11T14:22:52","guid":{"rendered":"https:\/\/www.infragistics.com\/blogs\/?p=3832"},"modified":"2026-07-02T08:25:22","modified_gmt":"2026-07-02T08:25:22","slug":"why-ai-results-improve-over-time-without-the-model-actually-learning","status":"publish","type":"post","link":"https:\/\/www.infragistics.com\/blogs\/why-ai-results-improve-over-time-without-the-model-actually-learning","title":{"rendered":"Why AI Results Improve Over Time, Not Model Learning"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"executive-summary\">Executive Summary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The phenomenon:<\/strong> AI code generation tools, including the Infragistics Ignite UI CLI MCP server, produce increasingly accurate output on experienced developer machines &#8211; not because the underlying model\u2019s weights have changed, but because the surrounding system has accumulated context.<\/li>\n\n\n\n<li><strong>Root cause:<\/strong> Several layers of the AI development stack accumulate or persist contextual state locally: Agent Skills files, project code, IDE retrieval systems, conversation history, and other workspace-level configuration and tooling.<\/li>\n\n\n\n<li><strong>Stack involved:<\/strong> Ignite UI CLI MCP server, Ignite UI Theming MCP server, Agent Skills, and the IDE workspace context layer.<\/li>\n\n\n\n<li><strong>Risk for developers building AI products:<\/strong> The practical consequence is simple: the AI environment on a developer\u2019s machine may become progressively more capable than the environment a first-time user experiences, even when both use the same model. Teams that do not measure against a context-free baseline will overestimate how consistent their product is for first-time users.<\/li>\n\n\n\n<li><strong>Upside for clients using AI tools:<\/strong> Context accumulation aligns the system with team workflows and domain patterns over time &#8211; AI-assisted development quality improves naturally without waiting for a model update.<\/li>\n\n\n\n<li><strong>Action:<\/strong> Use the clean-room test procedure described in this post to establish a reproducible, context-free baseline and measure what the model alone produces.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.infragistics.com\/marketing\/Website\/blogs\/AI-local-context.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Figure 1: The layers of the local development environment where AI context accumulates &#8211; none of them are the model.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-problem-a-bug-that-stopped-reproducing\">The Problem: A Bug That Stopped Reproducing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every senior engineer knows the dread of a non-deterministic bug. But AI coding assistants have introduced a new, far more insidious failure mode: the bug that fixes itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consider a routine debugging loop using the Ignite UI CLI MCP server. An AI agent generates an Ignite UI navbar component, but the positioning of elements inside is wrong. The troubleshooting workflow is pure muscle memory:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Reproduce the issue.<\/li>\n\n\n\n<li>Fix the MCP provided template definition.<\/li>\n\n\n\n<li>Generate again and verify the issue is no longer reproducible.<\/li>\n\n\n\n<li>Revert the fix to confirm the original issue is reproducible without the change in place.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">At step 4, the bug no longer reproduces\u2026 You spin up a fresh AI session. Same prompt. Same model. Same component library. The generated output is consistently correct, yet no explicit change remains in place. The natural assumption is: \u201cThe model learned from my fix.\u201d In a standard AI coding workflow, that explanation is highly unlikely. The model weights used during inference do not change in response to edits or fixes made in a local workspace. A more plausible explanation is that some part of the surrounding system changed the context available to the agent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While the exact source of the accumulated context cannot always be identified with certainty, modern AI development environments contain multiple persistence layers that can influence future generations without any change to the underlying model. The sections below identify exactly where that context can live.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-context-and-experience-can-physically-live\">Where Context and \u201cExperience\u201d Can Physically Live<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">That accumulated context is not stored in one place. Depending on the IDE, agent implementation, and AI tooling, conversation history, semantic indexes, retrieval caches, embeddings, workspace metadata, and agent state may be distributed across several layers of the local development environment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ide-workspace-and-extension-storage\">IDE Workspace and Extension Storage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Many AI-enabled IDEs maintain local storage areas for extension state, chat history, workspace metadata, semantic indexes, and retrieval-related artifacts. These locations are common inspection points rather than guaranteed storage locations. IDE vendors and extensions frequently change where and how they persist context.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>VS Code<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Windows:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">%APPDATA%\\Code\\User\\globalStorage\\\n%APPDATA%\\Code\\User\\workspaceStorage\\<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">macOS:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/Library\/Application Support\/Code\/User\/globalStorage\/\n~\/Library\/Application Support\/Code\/User\/workspaceStorage\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Linux:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/.config\/Code\/User\/globalStorage\/\n~\/.config\/Code\/User\/workspaceStorage\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>VS Code Insiders<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Windows:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">%APPDATA%\\Code - Insiders\\User\\globalStorage\\<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">macOS:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/Library\/Application Support\/Code - Insiders\/User\/globalStorage\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Linux:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/.config\/Code - Insiders\/User\/globalStorage\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cursor<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Windows:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">%APPDATA%\\Cursor\\User\\<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">macOS:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/Library\/Application Support\/Cursor\/User\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Linux:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/.config\/Cursor\/User\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Windsurf<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Windows:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">%APPDATA%\\Windsurf\\User\\<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">macOS:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/Library\/Application Support\/Windsurf\/User\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Linux:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">~\/.config\/Windsurf\/User\/<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"project-level-ai-artifacts\">Project-Level AI Artifacts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In addition to IDE storage, AI tooling frequently creates project-scoped directories that persist contextual information between sessions:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.agents\/\n.cursor\/\n.claude\/\n.continue\/\n.vscode\/\n.cache\/\nembeddings\/\nvector-store\/\nchroma\/\nqdrant\/\nfaiss\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Depending on the tooling stack, these locations may contain:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agent Skills<\/li>\n\n\n\n<li>semantic indexes<\/li>\n\n\n\n<li>vector embeddings<\/li>\n\n\n\n<li>retrieval caches<\/li>\n\n\n\n<li>generated examples<\/li>\n\n\n\n<li>workspace fingerprints<\/li>\n\n\n\n<li>session metadata<\/li>\n\n\n\n<li>prompt history<\/li>\n\n\n\n<li>MCP configuration<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"runtime-and-mcp-state\">Runtime and MCP State<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Not all context is stored on disk.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI agents and MCP servers may also maintain temporary state in:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RAM<\/li>\n\n\n\n<li>long-running Node.js processes<\/li>\n\n\n\n<li>Python processes<\/li>\n\n\n\n<li>SQLite databases (<code>*.db<\/code>, <code>*.sqlite<\/code>)<\/li>\n\n\n\n<li>Redis instances<\/li>\n\n\n\n<li>JSON cache files<\/li>\n\n\n\n<li>vector databases<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This is one reason why simply creating a new project folder does not always reproduce a clean client environment. Context can survive outside the workspace itself through extension storage, semantic indexes, cached embeddings, retrieval artifacts, or active MCP processes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These are the general-purpose layers any AI-enabled development environment may use. The Infragistics AI-native stack adds its own structured, intentional context layers on top of these &#8211; which is where the accumulation pattern becomes both useful and worth measuring.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-infragistics-ai-native-stack-where-context-accumulates\">The Infragistics AI-Native Stack: Where Context Accumulates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Modern AI code generation systems are not single-model pipelines. The Infragistics AI-native development workflow consists of multiple layers, each with distinct responsibilities. Several of these layers accumulate or persist contextual state on the developer machine. Understanding which layers hold state &#8211; and which do not &#8211; is the foundation for diagnosing and controlling AI output consistency.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"agent-skills\">Agent Skills<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Role<\/strong><\/td><td>Persistent, developer-owned instruction packages that define correct Ignite UI component usage for a specific project.<\/td><\/tr><tr><td><strong>Input<\/strong><\/td><td>Developer prompts and agent task context, augmented by Skill file contents read from disk each session.<\/td><\/tr><tr><td><strong>Output<\/strong><\/td><td>Grounded component selection, correct import paths, and framework-native usage patterns.<\/td><\/tr><tr><td><strong>Risk Reduced<\/strong><\/td><td>Agent reaching for the wrong component, using outdated API signatures, or generating deprecated import paths.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Agent Skills are the most explicit form of context accumulation in the Infragistics stack. Skill files ship inside the Ignite UI package under <code>node_modules\/igniteui-{framework}\/skills\/<\/code> and are copied to the agent\u2019s local discovery paths &#8211; <code>.agents\/skills\/<\/code>, <code>.cursor\/rules\/<\/code>, <code>.claude\/skills\/<\/code> &#8211; when <code>npx igniteui-cli ai-config<\/code> is run. These files persist on disk across every session. Every AI coding session in that project has access to the same accumulated Skill context unless the files are explicitly removed or replaced. When a developer edits a Skill file to encode a project convention or a correct usage pattern discovered through debugging, that edit becomes part of every future generation in that workspace. This is not a side effect &#8211; it is the intended mechanism.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ignite-ui-cli-mcp-server\">Ignite UI CLI MCP Server<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Role<\/strong><\/td><td>Documentation and component knowledge layer, exposing Ignite UI component APIs, getting-started guides, and usage best practices as structured tool calls.<\/td><\/tr><tr><td><strong>Input<\/strong><\/td><td>Agent or LLM query about Ignite UI component usage, documentation, or project scaffolding.<\/td><\/tr><tr><td><strong>Output<\/strong><\/td><td>Getting-started documentation, component lists with descriptions, verified usage best practices, and code examples aligned to the installed library version.<\/td><\/tr><tr><td><strong>Risk Reduced<\/strong><\/td><td>Agent generating hallucinated component APIs or referencing documentation from the wrong library version.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The Ignite UI CLI MCP server does not generate code autonomously &#8211; it exposes tools to the AI agent, which invokes them in response to developer prompts. The server starts fresh on every session via <code>npx -y igniteui-cli mcp<\/code> and does not maintain persistent state between sessions. However, the patterns the MCP-grounded agent generates and the developer commits to the project become part of the codebase. The IDE then indexes that codebase, and future generation sessions can retrieve those committed patterns as retrieval context. The MCP session itself is stateless; the downstream codebase it helps produce is not.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ignite-ui-theming-mcp-server\">Ignite UI Theming MCP Server<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Role<\/strong><\/td><td>Design token and theming constraint layer, exposing validated theming instructions and design-system-aligned token values as structured tool calls.<\/td><\/tr><tr><td><strong>Input<\/strong><\/td><td>Agent or LLM theming intent or design token query.<\/td><\/tr><tr><td><strong>Output<\/strong><\/td><td>Theming Engine-aligned theming instructions.<\/td><\/tr><tr><td><strong>Risk Reduced<\/strong><\/td><td>CSS drift, invalid design token references, and design system divergence in agent-generated styles.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Like the CLI MCP server, the Ignite UI Theming MCP server starts stateless via <code>npx -y igniteui-theming igniteui-theming-mcp<\/code>. It does not accumulate context between sessions. Theming decisions the agent generates and the developer commits &#8211; SCSS files, CSS custom properties, design token configurations &#8211; enter the local codebase and become available to the IDE\u2019s project context on future sessions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ignite-ui-component-libraries\">Ignite UI Component Libraries<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Role<\/strong><\/td><td>Deterministic UI execution layer &#8211; framework-native, enterprise-grade component implementations.<\/td><\/tr><tr><td><strong>Input<\/strong><\/td><td>Validated component selection and configuration from the agent workflow.<\/td><\/tr><tr><td><strong>Output<\/strong><\/td><td>Production-ready, design-system-aligned, framework-native UI components.<\/td><\/tr><tr><td><strong>Risk Reduced<\/strong><\/td><td>Non-deterministic component behavior or rendering inconsistency in AI-generated applications.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The Ignite UI component libraries do not accumulate context. Each version is fixed, versioned, and deterministic. Context accumulation does not enter through this layer. The Ignite UI component libraries are the stable execution substrate against which accumulated context is validated.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-an-ai-agent-uses-this-stack\">How an AI Agent Uses This Stack<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The canonical Infragistics AI-native workflow is: <strong>Developer \u2192 IDE \u2192 Agent \u2192 Agent Skills \u2192 MCP servers \u2192 Ignite UI Library \u2192 Production-ready output.<\/strong> The step sequence below identifies which stages introduce or consume accumulated local context.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/static.infragistics.com\/marketing\/Website\/products\/ignite-ui\/ai-agent-skills\/ignite-ui-assisted-development-diagram-1600.webp\" alt=\"The Ignite UI AI-assisted development workflow: a developer prompt flows through the IDE and agent, is grounded by Agent Skills and the Ignite UI MCP servers, and is rendered by the Ignite UI component library as production-ready output\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Figure 2: The AI-assisted development workflow. Steps 2 and 4 are where accumulated local context enters the pipeline.<\/em><\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 1 &#8211; Developer<\/strong> Input: Feature description, requirements, or design intent provided as a prompt. Process: Developer submits the prompt to the IDE agent in a workspace with Agent Skills and MCP servers configured. Output: Structured prompt received by the agent, with Skills on disk and MCP tool access available in the active session.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 2 &#8211; IDE Context and Retrieval Layer<\/strong> Input: Developer prompt, plus IDE workspace state &#8211; open files, semantic index of the existing codebase, and conversation history. Process: Depending on the IDE and agent implementation, the workspace may contribute additional context through indexing, code search, file selection, embeddings, or retrieval mechanisms that surface relevant project patterns. Output: Enriched context passed to the agent. For many AI coding environments, this is one of the primary paths through which accumulated project context influences generation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 3 &#8211; Agent<\/strong> Input: Enriched context from the IDE, including existing codebase patterns, conversation history, and the current prompt. Process: Agent decomposes developer intent into subtasks and selects components, consulting Agent Skills files available in the workspace. Output: Structured subtasks with Ignite UI-grounded component choices ready for MCP validation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 4 &#8211; Agent Skills<\/strong> Input: Agent subtask requiring component selection, framework integration patterns, or usage decisions. Process: Agent reads the Skill file from the local discovery path and applies the defined patterns, import paths, and constraints for the target framework. Output: Validated component selection and framework-correct usage patterns for the target Ignite UI library variant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 5 &#8211; MCP Servers<\/strong> Input: Agent query for component documentation, API reference, or design token validation. Process: The Ignite UI CLI MCP server returns documentation-aligned component guidance; the Ignite UI Theming MCP server returns design-token-validated theming instructions. Output: MCP-grounded component configuration, free of hallucinated API calls or invalid token references.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 6 &#8211; Ignite UI Library<\/strong> Input: Validated, MCP-grounded component selections and configuration from the agent workflow. Process: The target Ignite UI library variant renders the component using framework-native, enterprise-level component implementations. Output: Production-ready UI component rendered in the application.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"code-examples\">Code Examples<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-1-locating-ai-context-artifacts-on-the-developer-machine\">Example 1: Locating AI Context Artifacts on the Developer Machine<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Library:       N\/A - system diagnostic\nMCP server:    Ignite UI CLI MCP server (igniteui-cli)\nPurpose:       Locate AI context artifacts accumulated on the local machine\n               during Ignite UI AI-assisted development<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># --- WORKSPACE-LEVEL CONTEXT (project-scoped, persists across sessions) ---\n\n# Agent Skills - written to disk by ai-config, read by the agent each session\nls -la .agents\/skills\/              # Cross-agent convention (Copilot, Cursor, Gemini CLI, Windsurf)\nls -la .cursor\/rules\/               # Cursor-specific rules and skills directory\nls -la .claude\/skills\/              # Claude Code-specific skills directory\ncat .github\/copilot-instructions.md # GitHub Copilot workspace instructions\n\n# MCP server configuration - defines which servers the IDE launches\ncat .vscode\/mcp.json                # VS Code (GitHub Copilot) MCP config - written by ig ai-config\ncat .mcp.json                       # Claude Code MCP server config\ncat .cursor\/mcp.json                # Cursor MCP server config\n\n# --- MACHINE-LEVEL CONTEXT (global, not project-scoped) ---\n\n# npx package cache - MCP server packages are resolved from here after first download\n# macOS \/ Linux (npm 7+)\nls ~\/.npm\/_npx\/\n\n# Windows (npm 7+) - run in PowerShell\n# dir \"$env:LOCALAPPDATA\\npm-cache\\_npx\"\n\n# Claude Desktop MCP configuration (macOS)\ncat ~\/Library\/Application\\ Support\/Claude\/claude_desktop_config.json\n\n# Claude Desktop MCP configuration (Windows - run in PowerShell)\n# type \"$env:APPDATA\\Claude\\claude_desktop_config.json\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">These files persist across every AI session in the project and are read by the agent at the start of each generation. They represent intentional, developer-controlled context accumulation &#8211; and they are the primary reason an experienced developer\u2019s environment produces consistently better output than a clean machine.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-2-clean-room-test-procedure---isolating-model-behavior-from-accumulated-context\">Example 2: Clean-Room Test Procedure &#8211; Isolating Model Behavior from Accumulated Context<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Library:       N\/A - clean-room validation procedure\nMCP server:    Ignite UI CLI MCP server (igniteui-cli)\nPurpose:       Establish a reproducible, context-free baseline to verify AI output\n               against a genuine first-run user experience<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Step 1: Create a new isolated workspace with no inherited AI context\nmkdir clean-room-test &amp;&amp; cd clean-room-test\n\n# Step 2: Confirm no AI context files are present in the new workspace\nls .agents\/skills\/ 2>\/dev\/null \\\n  &amp;&amp; echo \"WARNING: Agent Skills found - remove before testing\" \\\n  || echo \"Clean: no Agent Skills\"\n\nls .cursor\/rules\/ 2>\/dev\/null \\\n  &amp;&amp; echo \"WARNING: Cursor rules found - remove before testing\" \\\n  || echo \"Clean: no Cursor rules\"\n\nls .github\/copilot-instructions.md 2>\/dev\/null \\\n  &amp;&amp; echo \"WARNING: Copilot instructions found - remove before testing\" \\\n  || echo \"Clean: no Copilot instructions\"\n\n# Step 3: Configure MCP servers only - no Ignite UI package installed yet\n# This mirrors the exact experience of a new user before installing Ignite UI.\n# MCP servers will be configured; Agent Skills will not be available.\nnpx igniteui-cli ai-config\n\n# Expected output:\n# > Ignite UI CLI MCP servers configured for your selected clients\n# > No AI skill files found. Make sure packages are installed (npm install)\n#   and your Ignite UI packages are up-to-date.\n\n# Step 4: Start the Ignite UI CLI MCP server in the isolated workspace\nnpx -y igniteui-cli mcp\n\n# Step 5: Run the same prompts used in your accumulated-context environment\n# Compare output - differences reveal what the accumulated context was contributing\n# to generation quality in the original environment.<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This procedure produces a reproducible baseline representing what a first-time user encounters. The expected output from step 3 is documented behavior: MCP servers are configured, but Agent Skills are absent until the Ignite UI package is installed. The generation quality difference between this baseline and a fully-configured development environment is the measure of accumulated context contribution.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-3-inspecting-agent-skills-as-designed-persistent-context\">Example 3: Inspecting Agent Skills as Designed Persistent Context<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Library:       All Ignite UI frameworks (Angular \/ React \/ Web Components \/ Blazor)\nMCP server:    Ignite UI CLI MCP server (igniteui-cli)\nPurpose:       Inspect and edit the Agent Skills files that constitute designed,\n               persistent context for AI agents across all development sessions<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># After running: npx igniteui-cli ai-config (with Ignite UI installed)\n# Skills are copied to your agent's discovery paths - same location regardless of framework\n\nls .agents\/skills\/                      # Cross-agent (Copilot, Cursor, Gemini CLI, Windsurf)\nls .cursor\/rules\/                       # Cursor-specific\nls .claude\/skills\/                      # Claude Code-specific\n\n# Inspect a Skill file (directory name reflects your installed framework)\ncat .agents\/skills\/igniteui-angular-components\/SKILL.md\n\n# To re-copy clean Skills from the package (resets any custom edits):\nnpx igniteui-cli ai-config<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agent Skills are developer-owned. Editing a Skill file to reflect a correct usage pattern found during debugging &#8211; for example, a navbar layout constraint &#8211; encodes that pattern into every future generation session in the project. The Skill file is the designed, version-controllable mechanism for intentional context accumulation. The clean-room procedure in Example 2 demonstrates what generation looks like when these files are absent.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"integration-scenarios\">Integration Scenarios<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"scenario-1-development-environment-context-accumulation\">Scenario 1: Development Environment Context Accumulation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Scenario:<\/strong> A developer\u2019s environment progressively accumulates AI context over the project lifecycle. This example uses Angular; the pattern applies across all supported frameworks. <strong>Trigger:<\/strong> Developer runs <code>npx igniteui-cli ai-config<\/code> at project initialization, then evolves the project over weeks. <strong>Flow:<\/strong> Developer \u2192 adds features, fixes bugs, and edits Agent Skills to encode patterns discovered through generation. IDE \u2192 re-indexes the codebase as files are committed; semantic index reflects the current project state. Agent \u2192 reads updated Skills and retrieves context from the indexed codebase on each session. Agent Skills \u2192 updated Skill files inject corrected and project-specific patterns into agent context. MCP servers \u2192 the Ignite UI CLI MCP server provides fresh documentation-aligned guidance; the Ignite UI Theming MCP server provides token-validated theming. Ignite UI for Angular \u2192 renders production-ready output grounded in accumulated project context. <strong>Output:<\/strong> Consistent, progressively improving AI generation that reflects the project\u2019s established patterns and conventions.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"scenario-2-clean-room-testing---validating-first-run-user-experience\">Scenario 2: Clean-Room Testing &#8211; Validating First-Run User Experience<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Scenario:<\/strong> A developer validates that AI output quality is consistent for a new user with no accumulated context. This procedure is framework-agnostic &#8211; the example uses React to illustrate applicability across all supported frameworks. <strong>Trigger:<\/strong> QA phase &#8211; the development team needs to confirm output quality on a machine with no project or session history. <strong>Flow:<\/strong> Developer \u2192 creates an isolated workspace with no Skills, no IDE embeddings, and no conversation history. IDE \u2192 starts with no semantic index for the project; agent has no codebase retrieval signal. Agent \u2192 operates on documentation context from the Ignite UI CLI MCP server only; no codebase retrieval signal available. Agent Skills \u2192 absent; agent applies general training knowledge for component selection in the absence of Skill grounding. MCP servers \u2192 the Ignite UI CLI MCP server provides documentation-aligned guidance; the Ignite UI Theming MCP server provides token-validated theming. Ignite UI for React \u2192 renders components based on MCP-grounded selections only. <strong>Output:<\/strong> Baseline AI generation result reflecting the first-time user experience &#8211; a valid reference point for measuring accumulated context contribution.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"scenario-3-client-onboarding---context-accumulation-as-a-progressive-feature\">Scenario 3: Client Onboarding &#8211; Context Accumulation as a Progressive Feature<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Scenario:<\/strong> A client team starts AI-assisted development and observes steadily improving generation quality over time. This example uses Angular; the pattern applies across all supported frameworks. <strong>Trigger:<\/strong> Client installs Ignite UI for Angular, runs <code>npx igniteui-cli ai-config<\/code>, and begins generating UI components with AI assistance. <strong>Flow:<\/strong> Developer \u2192 generates components, reviews output, commits accepted patterns to the project repository. IDE \u2192 indexes the growing codebase; retrieval signal improves as more Ignite UI-correct patterns are committed. Agent \u2192 retrieves progressively richer context from the indexed codebase on each generation session. Agent Skills \u2192 available immediately after <code>ai-config<\/code>; developer edits Skill files to encode team-specific conventions. MCP servers \u2192 the Ignite UI CLI MCP server and the Ignite UI Theming MCP server provide consistent documentation-aligned grounding throughout the lifecycle. Ignite UI for Angular \u2192 renders production-ready output that increasingly reflects the client\u2019s established patterns. <strong>Output:<\/strong> AI generation quality often improves over the project lifecycle without requiring a model update, provided the agent can use accumulated project context.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"evaluation-and-differentiation\">Evaluation and Differentiation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What the stack delivers on every session:<\/strong> The Ignite UI CLI MCP server provides documentation-aligned component guidance and verified code examples on every session, regardless of accumulated local context on the developer machine. Agent Skills ship with every Ignite UI package release and provide a documented, version-controlled starting point for agent grounding. The Ignite UI Theming MCP server generates design-token-aligned theming instructions on every call, using the Ignite UI Theming Engine\u2019s palette, typography, and component-theme APIs as its reference model, regardless of session history.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How much this grounding changes real output is measured.<\/strong> In a 7-scenario paired benchmark across Ignite UI for Blazor and Ignite UI for Angular, sessions with the MCP servers and Agent Skills enabled raised Ignite UI component compliance from 0\/5 to 5\/5 in every scenario where the untooled model ignored the library, and lifted single-prompt feature completion from 71% to 100%. The full comparison is in <a href=\"https:\/\/www.infragistics.com\/blogs\/why-ignite-ui-ai-tooling-produces-better-results\">Why Ignite UI AI Tooling Produces Better Results<\/a> and the accompanying <a href=\"https:\/\/www.infragistics.com\/blogs\/empirical-study-of-mcp-and-agent-skills-benefits\">research paper<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Failure Modes Prevented:<\/strong> Agent hallucinating component APIs not present in the installed Ignite UI version &#8211; prevented by CLI MCP server documentation grounding. CSS drift and invalid design token references in agent-generated styles &#8211; prevented by Theming Engine-aligned generation from the Theming MCP server. Incorrect import paths or deprecated component signatures in generated code &#8211; prevented by Agent Skills. Inconsistent first-run experience caused by unmeasured accumulated context &#8211; identified and reproduced using the clean-room procedure described in this post.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Assumptions Not Required:<\/strong> The context accumulation phenomenon described in this post does not require the underlying LLM to have been updated; the Ignite UI package to have been updated; any explicit configuration change by the developer; or any action by Infragistics after initial setup. The accumulation occurs through normal development activity &#8211; generating, reviewing, committing, and refining AI-assisted code over time.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"closing-signal\">Closing Signal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The intelligence that makes AI code generation appear to improve is not always in the model &#8211; it is distributed across the surrounding system: Agent Skills on disk, IDE semantic indexes, committed codebase patterns, and MCP configuration files. Developers building AI-native products on the Infragistics stack need to account for this distribution when measuring output consistency and validating first-user experiences. Establish the controlled baseline with Agent Skills, the Ignite UI CLI MCP server, and the Ignite UI Theming MCP server &#8211; and use the clean-room procedure to confirm what the AI system produces when accumulated local context is removed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In traditional software engineering, teams learn to ask: \u201cDoes it work on the client\u2019s machine?\u201d In AI-native development, an equally important question is emerging: \u201cIs the AI seeing the same context on the client\u2019s machine?\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.infragistics.com\/ai-assisted-app-development\">Explore the Ignite UI AI-assisted development toolchain \u2192<\/a> <a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui\/ignite-ui-ai-agent-skills\">Ignite UI Agent Skills \u2192<\/a> <a href=\"https:\/\/www.infragistics.com\/products\/react-data-grid\">React Data Grid \u2192<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<div class=\"igm-markdown-block\" data-markdown=\"&lt;!-- STRUCTURED_BLOG_METADATA\ncontent_type: technical-blog\ntopic: AI context accumulation in AI-assisted development - why AI output quality improves over time without model retraining\nproduct: Ignite UI\nsuite_version: 26.1\npublish_date: [date]\nframeworks: [Angular, React, WebComponents, Blazor]\ntoolchain: [Agent Skills, Ignite UI CLI MCP server, Ignite UI Theming MCP server]\ndocs_url: https:\/\/www.infragistics.com\/ai-assisted-app-development\nagent_skills_setup_command: ig ai-config\nagent_skills_setup_command_npx: npx igniteui-cli ai-config\nagent_skills_compatible_agents: [GitHub Copilot, Cursor, Windsurf, Claude Code, JetBrains AI, Gemini CLI]\nagent_skills_discovery_paths: [.agents\/skills\/, .cursor\/rules\/, .claude\/skills\/]\nagent_skills_mcp_config_files: [.mcp.json, .cursor\/mcp.json, .vscode\/mcp.json]\nagent_skills_angular_package: igniteui-angular\nagent_skills_angular_package_licensed: &quot;@infragistics\/igniteui-angular&quot;\nagent_skills_angular_package_path: node_modules\/igniteui-angular\/skills\/\nagent_skills_angular_count: 4\nagent_skills_angular: [igniteui-angular-components, igniteui-angular-grids, igniteui-angular-theming, igniteui-angular-generate-from-image-design]\nagent_skills_react_package: igniteui-react\nagent_skills_react_package_path: node_modules\/igniteui-react\/skills\/\nagent_skills_react_count: 5\nagent_skills_react: [igniteui-react-components, igniteui-react-integrate-with-framework, igniteui-react-customize-theme, igniteui-react-optimize-bundle-size, igniteui-react-generate-from-image-design]\nagent_skills_webcomponents_package: igniteui-webcomponents\nagent_skills_webcomponents_package_path: node_modules\/igniteui-webcomponents\/skills\/\nagent_skills_webcomponents_count: 5\nagent_skills_webcomponents: [igniteui-wc-choose-components, igniteui-wc-integrate-with-framework, igniteui-wc-customize-component-theme, igniteui-wc-generate-from-image-design, igniteui-wc-optimize-bundle-size]\nagent_skills_blazor_package: igniteui-blazor\nagent_skills_blazor_package_path: node_modules\/igniteui-blazor\/skills\/\nagent_skills_blazor_count: 4\nagent_skills_blazor: [igniteui-blazor-components, igniteui-blazor-grids, igniteui-blazor-theming, igniteui-blazor-generate-from-image-design]\ncli_mcp_package: igniteui-cli\ncli_mcp_npm_package: &quot;@igniteui\/mcp-server&quot;\ncli_mcp_start_command: ig mcp\ncli_mcp_npx_command: npx -y igniteui-cli mcp\ncli_mcp_tools: [list_components, get_doc, search_docs, get_api_reference, search_api, generate_ignite_app]\ncli_mcp_supported_frameworks: [Angular, React, Blazor, WebComponents]\ntheming_mcp_package: igniteui-theming\ntheming_mcp_start_command: npx -y igniteui-theming igniteui-theming-mcp\ntheming_mcp_tools: [detect_platform, create_palette, create_custom_palette, create_typography, create_elevations, create_theme, get_component_design_tokens, create_component_theme, set_size, set_spacing, set_roundness]\ntheming_mcp_supported_frameworks: [Angular, React, Blazor, WebComponents]\ncontext_layers_stateful: [agent_skills_files, ide_workspace_semantic_index, committed_codebase_patterns, mcp_server_configuration_files, npx_package_cache]\ncontext_layers_stateless: [cli_mcp_session, theming_mcp_session, igniteui_component_libraries]\nclean_room_setup_command: npx igniteui-cli ai-config\nclean_room_mcp_start: npx -y igniteui-cli mcp\nclean_room_purpose: Establish a reproducible context-free baseline to measure first-user AI output quality\nclean_room_isolates: [agent_skills, ide_embeddings, conversation_history, npx_cache]\nrelated_content: [why-ignite-ui-ai-tooling-produces-better-results, ai-tooling-research-paper]\nkey_concepts: [context_accumulation, stateful_vs_stateless_layers, clean_room_baseline, llm_grounding, agent_skills_persistence, ide_semantic_index, context_contamination, ai_output_determinism]\ntags: [agent-skills, mcp, model-context-protocol, context-accumulation, clean-room-testing, ai-assisted-development, github-copilot, cursor, claude-code, windsurf, jetbrains, gemini-cli, llm-grounding, ai-determinism, angular, react, web-components, blazor, ide-semantic-index, npx-cache]\nEND_METADATA --&gt;\">\n                <div class=\"igm-markdown-content\"><\/div>\n                <noscript><pre>&lt;!-- STRUCTURED_BLOG_METADATA\ncontent_type: technical-blog\ntopic: AI context accumulation in AI-assisted development - why AI output quality improves over time without model retraining\nproduct: Ignite UI\nsuite_version: 26.1\npublish_date: [date]\nframeworks: [Angular, React, WebComponents, Blazor]\ntoolchain: [Agent Skills, Ignite UI CLI MCP server, Ignite UI Theming MCP server]\ndocs_url: https:\/\/www.infragistics.com\/ai-assisted-app-development\nagent_skills_setup_command: ig ai-config\nagent_skills_setup_command_npx: npx igniteui-cli ai-config\nagent_skills_compatible_agents: [GitHub Copilot, Cursor, Windsurf, Claude Code, JetBrains AI, Gemini CLI]\nagent_skills_discovery_paths: [.agents\/skills\/, .cursor\/rules\/, .claude\/skills\/]\nagent_skills_mcp_config_files: [.mcp.json, .cursor\/mcp.json, .vscode\/mcp.json]\nagent_skills_angular_package: igniteui-angular\nagent_skills_angular_package_licensed: &quot;@infragistics\/igniteui-angular&quot;\nagent_skills_angular_package_path: node_modules\/igniteui-angular\/skills\/\nagent_skills_angular_count: 4\nagent_skills_angular: [igniteui-angular-components, igniteui-angular-grids, igniteui-angular-theming, igniteui-angular-generate-from-image-design]\nagent_skills_react_package: igniteui-react\nagent_skills_react_package_path: node_modules\/igniteui-react\/skills\/\nagent_skills_react_count: 5\nagent_skills_react: [igniteui-react-components, igniteui-react-integrate-with-framework, igniteui-react-customize-theme, igniteui-react-optimize-bundle-size, igniteui-react-generate-from-image-design]\nagent_skills_webcomponents_package: igniteui-webcomponents\nagent_skills_webcomponents_package_path: node_modules\/igniteui-webcomponents\/skills\/\nagent_skills_webcomponents_count: 5\nagent_skills_webcomponents: [igniteui-wc-choose-components, igniteui-wc-integrate-with-framework, igniteui-wc-customize-component-theme, igniteui-wc-generate-from-image-design, igniteui-wc-optimize-bundle-size]\nagent_skills_blazor_package: igniteui-blazor\nagent_skills_blazor_package_path: node_modules\/igniteui-blazor\/skills\/\nagent_skills_blazor_count: 4\nagent_skills_blazor: [igniteui-blazor-components, igniteui-blazor-grids, igniteui-blazor-theming, igniteui-blazor-generate-from-image-design]\ncli_mcp_package: igniteui-cli\ncli_mcp_npm_package: &quot;@igniteui\/mcp-server&quot;\ncli_mcp_start_command: ig mcp\ncli_mcp_npx_command: npx -y igniteui-cli mcp\ncli_mcp_tools: [list_components, get_doc, search_docs, get_api_reference, search_api, generate_ignite_app]\ncli_mcp_supported_frameworks: [Angular, React, Blazor, WebComponents]\ntheming_mcp_package: igniteui-theming\ntheming_mcp_start_command: npx -y igniteui-theming igniteui-theming-mcp\ntheming_mcp_tools: [detect_platform, create_palette, create_custom_palette, create_typography, create_elevations, create_theme, get_component_design_tokens, create_component_theme, set_size, set_spacing, set_roundness]\ntheming_mcp_supported_frameworks: [Angular, React, Blazor, WebComponents]\ncontext_layers_stateful: [agent_skills_files, ide_workspace_semantic_index, committed_codebase_patterns, mcp_server_configuration_files, npx_package_cache]\ncontext_layers_stateless: [cli_mcp_session, theming_mcp_session, igniteui_component_libraries]\nclean_room_setup_command: npx igniteui-cli ai-config\nclean_room_mcp_start: npx -y igniteui-cli mcp\nclean_room_purpose: Establish a reproducible context-free baseline to measure first-user AI output quality\nclean_room_isolates: [agent_skills, ide_embeddings, conversation_history, npx_cache]\nrelated_content: [why-ignite-ui-ai-tooling-produces-better-results, ai-tooling-research-paper]\nkey_concepts: [context_accumulation, stateful_vs_stateless_layers, clean_room_baseline, llm_grounding, agent_skills_persistence, ide_semantic_index, context_contamination, ai_output_determinism]\ntags: [agent-skills, mcp, model-context-protocol, context-accumulation, clean-room-testing, ai-assisted-development, github-copilot, cursor, claude-code, windsurf, jetbrains, gemini-cli, llm-grounding, ai-determinism, angular, react, web-components, blazor, ide-semantic-index, npx-cache]\nEND_METADATA --&gt;<\/pre><\/noscript>\n            <\/div>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AI results improve over time even when the model never changes &#8211; context accumulation across your dev stack. Run a clean-room test to measure your true baseline.<\/p>\n","protected":false},"author":79,"featured_media":3840,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,7,8,17,9,10],"tags":[90,93,101,23,26,96,91,92,95,94,100,83,89,25,103],"class_list":["post-3832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","category-angular","category-blazor","category-how-to","category-react","category-web-components","tag-agent-skills-2","tag-ai-assisted-development-2","tag-ai-determinism","tag-angular","tag-blazor","tag-claude-code-2","tag-clean-room-testing","tag-context-accumulation","tag-cursor","tag-github-copilot","tag-llm-grounding","tag-mcp","tag-model-context-protocol","tag-react","tag-web-components-2"],"_links":{"self":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/users\/79"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/comments?post=3832"}],"version-history":[{"count":5,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3832\/revisions"}],"predecessor-version":[{"id":3995,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3832\/revisions\/3995"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media\/3840"}],"wp:attachment":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media?parent=3832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/categories?post=3832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/tags?post=3832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}