feat(skills): add React-specific LLM agent skills#130
feat(skills): add React-specific LLM agent skills#130
Conversation
Co-authored-by: zdrawku <11193764+zdrawku@users.noreply.github.com>
…tyles Co-authored-by: zdrawku <11193764+zdrawku@users.noreply.github.com>
…and grid theme guidance Co-authored-by: zdrawku <11193764+zdrawku@users.noreply.github.com>
|
@copilot while testing the skills, I found that the AI agent adds IgrTabs as navigational component to the view correctly. However, it added and tab-body which is not necessary and fill the entire view. Steps to reproduceAdd skills to a react application in the .github/skills folder. Ask Claude Sonnet 4.6 to do this: ResultIgrTabs component is generated with its tab-body which is not needed when tabs is used for navigation. Expected resultOnly tabs should be visible on the main layout and routing outlet should fill the rest of the page Update the skills in a way to achieve the expected result |
…en used with React Router Co-authored-by: zdrawku <11193764+zdrawku@users.noreply.github.com>
Updated both choose-components:
use-components:
|
|
@copilot while testing the skills I noticed that the AI agent was not able to correctly add Reveal to a view in my application and set a theme properly, update the skills to be able to handle that, below is an example on properly adding a Reveal dashboard component and setting a theme example, extend the skills. |
…s, use-components, and customize-theme skills Co-authored-by: zdrawku <11193764+zdrawku@users.noreply.github.com>
Extended all three relevant skills in choose-components:
use-components:
customize-theme:
|
|
@copilot while testing I found that upon adding a Chart, the className is not added properly and it returns a compilation error, below is an example of a app structure with code snippet that compiles, update the skills to respect that: |
…zing guidance Co-authored-by: zdrawku <11193764+zdrawku@users.noreply.github.com>
Updated both use-components:
choose-components:
|
|
@copilot while testing I found the Grid Lite is not added correctly to my application, below I provide a code snippet of a properly added Lite Grid that complies, update the skills based on it: |
…lite with register() Co-authored-by: zdrawku <11193764+zdrawku@users.noreply.github.com>
Updated all three skill files in choose-components:
use-components:
optimize-bundle-size:
|
|
@copilot igniteui-react-use-components skill is more than 1000 lines of code, this is not okay, follow stricty the Progressive disclosure patterns - SKILL.md serves as an overview that points Agents to detailed materials as needed, like a table of contents in an onboarding guide. For an explanation of how progressive disclosure works, see How Skills work in the overview. Practical guidance on what do do: |
… and customize-theme into sub-files Co-authored-by: zdrawku <11193764+zdrawku@users.noreply.github.com>
Applied progressive disclosure pattern in use-components (was 1078 lines → now 149 lines):
customize-theme (was 674 lines → now 183 lines):
All SKILL.md files are now under 500 lines and serve as table of contents pointing agents to detailed materials. |
The WC skills in
igniteui-webcomponentsproduce framework-agnostic guidance withIgc*names,defineComponents()calls, and<igc-*>HTML tags — all wrong for React consumers. This PR adds self-contained, React-specific skills toigniteui-react.Structure
Progressive Disclosure Pattern
Skills follow the progressive disclosure pattern for optimal AI agent performance:
use-componentsandcustomize-themeskills use this pattern extensivelySkills
Igr*components, organized by category (inputs, layouts, grids, charts, etc.) with sub-package info and docs links. Distinguishes betweenIgrTabs+IgrTabPanelfor content panels vsIgrTabsalone for navigation with React Router. Includes Reveal SDK (RvRevealView) for embedded BI dashboards. Charts table includes required*Module.register()calls. Grid Lite documented asIgcGridLitefromigniteui-grid-litewith.register()requirementIgrTabscontent-panels vs navigation-only usage with React Router,CustomEventhandling,useReffor imperative API, controlled forms withuseState, React Hook Form integration viaController, TypeScript usage, Reveal SDK integration withRvRevealViewsetup and theme syncing, chart/gauge/map module registration and container sizing requirements, Grid Lite setup withIgcGridLite.register()and container sizingReact.CSSPropertiescast), Sass via@use 'igniteui-theming',::part()selectors, light/dark switching, grid theme CSS, Next.js setup, MCP server setup, Reveal SDK theme synchronization with Ignite UI CSS tokensReact.lazy+Suspensecode-splitting, route-level lazy loading, bundle analysis toolingKey distinctions from WC skills
Igr*prefix, neverIgc*(except Grid Lite which is a web component usingIgcGridLitefromigniteui-grid-lite)defineComponents()— React wrappers auto-register (except charts/gauges/maps which require*Module.register(), and Grid Lite which requiresIgcGridLite.register())<igc-*>tags in usage examples — pure JSXigc-*tag names (correct — targets the DOM element), JSX usesIgr*wrappersigniteui-react,igniteui-react-grids,igniteui-react-charts,igniteui-react-maps,igniteui-react-gauges,igniteui-grid-liteigniteui-webcomponents/themes/...) and grid theme (igniteui-webcomponents-grids/grids/themes/...) are required and explicitly documenteduse-componentsandcustomize-themeskills, showing'use client'component files and root layout import patternschoose-componentsanduse-componentsthat when usingIgrTabsfor route-based navigation,IgrTabPanelmust NOT be included (onlyIgrTab+ router<Outlet />), preventing empty panels from filling the viewChart / Gauge / Map Module Registration
Unlike core UI components that auto-register, chart, gauge, and map components from
igniteui-react-charts,igniteui-react-gauges, andigniteui-react-mapsrequire explicit module registration:*Module.register()call for each component (e.g.,IgrCategoryChartModule.register())min-width,min-height,flex-grow), and complete chart and Grid Lite examples using CSS modulesGrid Lite
Grid Lite (
IgcGridLite) is a web component fromigniteui-grid-lite— not a React wrapper. It uses theIgcprefix and requires explicit registration and a sized container:IgcGridLitefromigniteui-grid-litein the Available Packages table and component catalogue with.register()requirement notedIgcGridLite.register(), CSS modules container sizing, and common issues for incorrect imports and missing registrationigniteui-grid-liteas a separate MIT packageReveal SDK Integration
All three content skills include guidance for the Reveal SDK companion product:
RvRevealViewfromreveal-sdk-wrappers-reactin the component catalogue under "Embedded Analytics / BI Dashboards"reveal-sdk-wrappers-react+reveal-sdk-wrappers),declare const $: anyfor TypeScript,RevealViewOptionsconfiguration, backend URL setup, and a completesetRevealTheme()function that syncs Reveal's theme with Ignite UI CSS custom properties (in REVEAL-SDK.md)--ig-font-family→ fonts,--ig-surface-500→ dark mode detection and visualization backgrounds,--ig-gray-100→ dashboard background) and guidance on re-syncing after light/dark theme switches (in REVEAL-THEME.md)README
Includes editor setup snippets for GitHub Copilot (
.github/copilot-instructions.md), Cursor (.cursorrules), Claude Code (CLAUDE.md), and manual VS Code/JetBrains attachment.Original prompt
This section details on the original issue you should resolve
<issue_title>Ignite UI for React - Dedicated Skills</issue_title>
<issue_description>## Plan: Ignite UI for React — Dedicated Skills
Background & Rationale
The WC skills were written for a framework-agnostic library. The React library (
igniteui-react) is a layer of React wrappers over those web components, with different package names, component prefixes (Igr*vsIgc*), prop/event conventions, and React-specific usage patterns. Sharing the WC skills means developers get framework-agnostic or even wrong guidance. The React skills should be self-contained, committed intoigniteui-react, and discoverable by Copilot/Cursor/Claude Code.Directory Structure to Create
Skills to Author
1.
igniteui-react-choose-componentsMaps from WC:
igniteui-wc-choose-components— adapted, not shared.The agent should produce a skill that:
Igr*names (e.g.IgrButton,IgrGrid,IgrCalendar) and maps them to the UI pattern they servehttps://infragistics.com/reactsite/components/and the React Storybook/samples athttps://github.com/IgniteUI/igniteui-react-examplesigniteui-reactfor core UI components,igniteui-react-gridsfor grids,igniteui-react-chartsfor charts, etc.)Key difference from WC skill: no references to
igc-*tags or custom element registration. NodefineComponents()calls.2.
igniteui-react-use-components(New — no direct WC counterpart)This is the most React-specific skill and has no real equivalent in the WC set (the WC "integrate-with-framework" skill touched on React as one of four frameworks). This new skill should cover:
igniteui-react(or sub-packages), addingIgrStylesor the theming stylesheet toindex.tsx/App.tsx, and any peer dependency notesvalue={...}notvalue="..."), boolean props, children vs slotsonXxxprops work on the React wrappers and how to handle them with TypeScript typesuseRefto access the underlying web component imperative API when neededIgrInput,IgrCheckbox,IgrSelect) withuseStateor React Hook FormIgr*prop type interfaces3.
igniteui-react-customize-themeMaps from WC:
igniteui-wc-customize-component-theme— adapted.index.css, a CSS module, or via inline style on a wrapperdiv)::part()selectors — same underlying shadow DOM, but may need context on how to structure this in a React appconfigureTheme()— calling the theming function in React's lifecycle (e.g. in auseEffectat app root, or inmain.tsxbeforeReactDOM.createRoot)LitElementorigc-theme-*attribute examples4.
igniteui-react-optimize-bundle-sizeMaps from WC:
igniteui-wc-optimize-bundle-size— substantially rewritten.igniteui-react(core UI),igniteui-react-grids,igniteui-react-charts,igniteui-react-maps,igniteui-react-gauges— install only what you needReact.lazy+Suspense: Code-split heavy components like grids and charts behind route-level lazy importsdefineAllComponents()(the React layer doesn't use this, but the underlying WC might be invoked — clarify that the React wrappers handle registration automatically per-component)webpack-bundle-analyzeror Vite'srollup-plugin-visualizerto identify which sub-packages are included and measure impactskills/README.mdThe agent should write a README modelled on the WC one, with a table of all four skills and their use-when descriptions, plus setup instructions for:
.github/copilot-instructions.md).cursorrules)CLAUDE.mdproject instructions)💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.