Scraps Review
getsentry/sentry
Filter large Sentry Scraps design-system migration PRs for review by separating mechanical import-path changes, generated baseline updates, snapshot mocks, and pure renames from substantive…
Create a new Lit web component following project conventions, including specification, component class, styles, tests, Storybook story, and exports
$ npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install IgniteUI/igniteui-webcomponents create-new-component --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/IgniteUI/igniteui-webcomponents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-new-component .claude/skills/create-new-component && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "create-new-component" agent skill from https://github.com/IgniteUI/igniteui-webcomponents/tree/master/.agents/skills/create-new-component into .claude/skills/create-new-component/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-new-component", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/IgniteUI/igniteui-webcomponents/tree/master/.agents/skills/create-new-componentType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install IgniteUI/igniteui-webcomponents create-new-component --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/IgniteUI/igniteui-webcomponents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/create-new-component .agents/skills/create-new-component && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-new-component" agent skill from https://github.com/IgniteUI/igniteui-webcomponents/tree/master/.agents/skills/create-new-component into .agents/skills/create-new-component/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-new-component", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install IgniteUI/igniteui-webcomponents create-new-component --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/IgniteUI/igniteui-webcomponents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/create-new-component .cursor/skills/create-new-component && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-new-component" agent skill from https://github.com/IgniteUI/igniteui-webcomponents/tree/master/.agents/skills/create-new-component into .cursor/skills/create-new-component/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-new-component", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/IgniteUI/igniteui-webcomponents.git --path .agents/skills/create-new-component--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install IgniteUI/igniteui-webcomponents create-new-component --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/IgniteUI/igniteui-webcomponents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/create-new-component .gemini/skills/create-new-component && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-new-component" agent skill from https://github.com/IgniteUI/igniteui-webcomponents/tree/master/.agents/skills/create-new-component into .gemini/skills/create-new-component/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-new-component", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install IgniteUI/igniteui-webcomponents create-new-componentInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/IgniteUI/igniteui-webcomponents.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/create-new-component .github/skills/create-new-component && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-new-component" agent skill from https://github.com/IgniteUI/igniteui-webcomponents/tree/master/.agents/skills/create-new-component into .github/skills/create-new-component/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-new-component", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install IgniteUI/igniteui-webcomponents create-new-component --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/IgniteUI/igniteui-webcomponents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/create-new-component .opencode/skills/create-new-component && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-new-component" agent skill from https://github.com/IgniteUI/igniteui-webcomponents/tree/master/.agents/skills/create-new-component into .opencode/skills/create-new-component/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-new-component", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-new-componentCreate a new Lit web component following project conventions, including specification, component class, styles, tests, Storybook story, and exports
Create New Component is an agent skill from IgniteUI/igniteui-webcomponents. Create a new Lit web component following project conventions, including specification, component class, styles, tests, Storybook story, and exports
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design. It works with Storybook and GitHub. The repository describes itself as: Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable… The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a6f3e2c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create New Component loads about 3k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 648 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from IgniteUI/igniteui-webcomponents at commit a6f3e2c, republished under its MIT licence (© IgniteUI). 648 words, ~2,965 tokens.
.claude/skills/create-new-component/SKILL.md (or your agent's skills folder).Scaffolds a component. The rules behind each step are in the Coding Guidelines.
Related: add-component-property, update-component-styles.
Confirm with the user before you start:
progress-bar → tag igc-progress-bar, class IgcProgressBarComponentWrite src/components/[name]/spec.md first. It decides the public API, the keyboard model and
the ARIA semantics. Copy the structure of src/components/splitter/spec.md and follow
Specifications: one spec per directory, a
hand-maintained table of contents, a revision history that starts at version 1, and no
ownership sections. Fill in ## Test scenarios in step 6.
src/components/[name]/[name].ts:
import { html, LitElement } from 'lit';
import { property } from 'lit/decorators.js';
import { registerComponent } from '#internals/definitions/register.js';
import { addThemingController } from '#theming/theming-controller.js';
import { styles } from './themes/[name].base.css.js';
import { styles as shared } from './themes/shared/[name].common.css.js';
import { all } from './themes/themes.js';
/**
* [One-sentence description.]
*
* @element igc-[name]
*
* @slot - [Default slot description]
*
* @csspart base - [Part description]
*/
export default class Igc[Name]Component extends LitElement {
public static readonly tagName = 'igc-[name]';
public static override styles = [styles, shared];
/* blazorSuppress */
public static register(): void {
registerComponent(Igc[Name]Component);
}
//#region Public attributes and properties
/**
* [Property description]
* @attr some-prop
* @default 'default-value'
*/
@property({ reflect: true, attribute: 'some-prop' })
public someProp = 'default-value';
//#endregion
constructor() {
super();
addThemingController(this, all);
}
protected override render() {
return html`
<div part="base">
<slot></slot>
</div>
`;
}
}
declare global {
interface HTMLElementTagNameMap {
'igc-[name]': Igc[Name]Component;
}
}registerComponent(Self, ...deps).src/internals. Examples:
addRovingFocusController, addToggleController, addHostListeners, and the resizable() /
draggable() directives.The layout is in Styles and Theming.
src/components/badge/themes/ is a complete example. Use 4-space indentation and load-path
specifiers.
// themes/[name].base.scss
@use 'styles/common/component';
@use 'styles/utilities' as *;
:host {
display: block;
}// themes/light/_themes.scss (dark/_themes.scss has no $base)
@use 'styles/utilities' as *;
@use 'igniteui-theming/sass/themes/schemas/components/light/[name]' as *;
$base: digest-schema($light-[name]);
$material: digest-schema($material-[name]);
$bootstrap: digest-schema($bootstrap-[name]);
$fluent: digest-schema($fluent-[name]);
$indigo: digest-schema($indigo-[name]);// themes/light/[name].bootstrap.scss
// Dark files: add `@use '../light/themes' as light;` and use diff(light.$base, $theme).
@use 'styles/utilities' as *;
@use 'themes' as *;
$theme: $bootstrap;
:host {
@include css-vars-from-theme(diff($base, $theme));
}Also create light/[name].shared.scss (the full variable set from $base),
shared/[name].common.scss, and, if you need them, shared/[name].[theme].scss.
[!NOTE] A new component has no schema until one is added to
igniteui-theming. Until then, declare the CSS variables inshared/[name].common.scssand leave the light and dark files empty.
themes/themes.ts is the only hand-written TypeScript file in themes/:
import { css } from 'lit';
import type { Themes } from '#theming/types.js';
// Dark Overrides
import { styles as bootstrapDark } from './dark/[name].bootstrap.css.js';
import { styles as fluentDark } from './dark/[name].fluent.css.js';
import { styles as indigoDark } from './dark/[name].indigo.css.js';
import { styles as materialDark } from './dark/[name].material.css.js';
// Light Overrides
import { styles as bootstrapLight } from './light/[name].bootstrap.css.js';
import { styles as fluentLight } from './light/[name].fluent.css.js';
import { styles as indigoLight } from './light/[name].indigo.css.js';
import { styles as materialLight } from './light/[name].material.css.js';
import { styles as shared } from './light/[name].shared.css.js';
const light = {
shared: css`
${shared}
`,
bootstrap: css`
${bootstrapLight}
`,
material: css`
${materialLight}
`,
fluent: css`
${fluentLight}
`,
indigo: css`
${indigoLight}
`,
};
const dark = {
shared: css`
${shared}
`,
bootstrap: css`
${bootstrapDark}
`,
material: css`
${materialDark}
`,
fluent: css`
${fluentDark}
`,
indigo: css`
${indigoDark}
`,
};
export const all: Themes = { light, dark };If you add shared/[name].[theme].scss files, put each one before its override. For example,
${bootstrap} ${bootstrapLight} (see badge/themes/themes.ts).
npm run build:stylesThis generates the .css.ts files, which are gitignored. The build compiles only
*.{base,common,shared,material,bootstrap,indigo,fluent}.scss files. It skips other names and
does not warn.
src/components/[name]/[name].spec.ts:
import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
import { defineComponents } from '#internals/definitions/defineComponents.js';
import Igc[Name]Component from './[name].js';
describe('[Name]', () => {
let element: Igc[Name]Component;
before(() => {
defineComponents(Igc[Name]Component);
});
beforeEach(async () => {
element = await fixture<Igc[Name]Component>(html`<igc-[name]></igc-[name]>`);
});
it('passes the a11y audit', async () => {
await expect(element).shadowDom.to.be.accessible();
await expect(element).to.be.accessible();
});
it('is initialized with the proper default values', () => {
expect(element.someProp).to.equal('default-value');
});
it('updates on property change', async () => {
element.someProp = 'new-value';
await elementUpdated(element);
expect(element).to.have.attribute('some-prop', 'new-value');
});
});Use the shared helpers in #internals/testing/ for interaction and forms (see
Testing). Do not import one component spec from another,
because that runs the imported suite again.
Then fill in the ## Test scenarios section of the spec: one subsection per describe block,
numbered contiguously. Name the shared runners that the suite uses. Put documented behavior
that the suite does not test under ### Not covered by the suite.
Create stories/[name].stories.ts. The filename must match the tag name. See
Storybook for the full template.
import type { Meta, StoryObj } from '@storybook/web-components-vite';
import { html } from 'lit';
import { defineComponents, Igc[Name]Component } from 'igniteui-webcomponents';
defineComponents(Igc[Name]Component);
// region default
const metadata: Meta<Igc[Name]Component> = {
title: '[Name]',
component: 'igc-[name]',
};
export default metadata;
type Story = StoryObj<Igc[Name]Component>;
// endregion
export const Basic: Story = {
render: (args) => html`<igc-[name] .someProp=${args.someProp}>Content</igc-[name]>`,
};Step 8 regenerates the // region default block. Write only the stories.
Add the export to src/index.ts in alphabetical order:
export { default as Igc[Name]Component } from './components/[name]/[name].js';npm run cem # custom-elements.json
npm run build:meta # the story's `// region default` blocknpm run check && npm run lint && npm run testAdd a CHANGELOG entry.
spec.md follows the splitter structure. Its API tables match the code and its test
scenarios match the suite.tagName, styles, register() and HTMLElementTagNameMapaddThemingController(this, all) in the constructor@element, @slot, @csspart, @cssproperty and @event as applicable, and
no igc- tag names in prosethemes.tssrc/index.ts. cem and build:meta run.check, lint and test pass. CHANGELOG updated.| Symptom | Cause / Fix |
|---|---|
Cannot resolve ./themes/*.css.js | build:styles did not run, or the .scss name is outside the build glob |
| Component ignores theme switching | addThemingController is missing, or a file is missing from themes.ts |
[part='base'] stops matching | partMap emits multiple names. Use [part~='base']. |
| Story metadata is stale or never made | The filename does not match the tag, the fence is missing, or the region was edited |
npm run check fails on imports | A relative import into internals/theming/animations |
| Spec anchors do not resolve | A TOC entry is missing, or the slug is wrong (Undo / redo → undo--redo) |
| Kind | Path | Shows |
|---|---|---|
| Specification | src/components/splitter/spec.md | The reference spec structure |
| Display | src/components/badge/badge.ts | Theming, slot controller, partMap, internals ARIA |
| Form-associated | src/components/input/input.ts | Form mixin, validators, @coercedProperty, input-shell |
| Composite | src/components/select/select.ts | ARIA projection, keybindings, popover |
| Container | src/components/card/card.ts | Registering sub-components |
© IgniteUI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/create-new-component of IgniteUI/igniteui-webcomponents.
Open the folder on GitHubat commit a6f3e2c
Create New Component next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create New Component this skillIgniteUI/igniteui-webcomponents | 170 | — | ~3k | Automated safety check: Pass | MIT | |
| Scraps Reviewgetsentry/sentry | 46k | — | ~1.2k | Automated safety check: Notes | Custom licence | |
| Readme I18nY80/bmm | 344 | 2 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Uncodixfypdsuwwz/chatgpt-vue3-light-mvp | 578 | 2 repos | ~3k | Automated safety check: Pass | MIT | |
| Gimi IllustrationGiMi-Xiaomi/gimi-illustration-skill | 701 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Phoenix FrontendArize-ai/phoenix | 12k | — | ~709 | Automated safety check: Pass | Custom licence |
getsentry/sentry
Filter large Sentry Scraps design-system migration PRs for review by separating mechanical import-path changes, generated baseline updates, snapshot mocks, and pure renames from substantive…
Y80/bmm
A skill your agent uses when the user wants to translate a repository README, make a repo multilingual, localize docs, add a language switcher, internationalize the README, or update localized…
pdsuwwz/chatgpt-vue3-light-mvp
Prevents generic AI/Codex UI patterns when generating frontend code.
GiMi-Xiaomi/gimi-illustration-skill
Multi-style illustrations from Chinese article text (配图 / illustration): quirky sketch, warm storybook, product proposal; OR custom IP enrollment (自定义 IP / 录入 IP / 上传形象 / 新建 IP).
Arize-ai/phoenix
Frontend development guidelines for the Phoenix AI observability platform.
QuZhan51496/paper2anything
Convert an academic paper PDF into a publish-ready, self-contained single-page project homepage (a self-contained index.html) — the kind of paper landing page researchers host on GitHub Pages.
IgniteUI/igniteui-webcomponents
Theme and style Ignite UI Web Components (and igniteui-react) apps using CSS custom properties, optional Sass, and the igniteui-theming MCP server.
IgniteUI/igniteui-webcomponents
Implement application views from design images (screenshots, mockups, wireframes) using Ignite UI Web Components, with the igniteui-cli and igniteui-theming MCP servers for component discovery…
IgniteUI/igniteui-webcomponents
Install and integrate Ignite UI Web Components packages into React, Angular, Vue 3, LitElement, or vanilla JS/HTML apps, detecting the framework and applying framework-specific setup (package…
IgniteUI/igniteui-webcomponents
Add a reactive property to an existing Lit web component with proper decorators, types, tests, specification updates, and documentation
IgniteUI/igniteui-webcomponents
Identify the right Ignite UI Web Components (igniteui-webcomponents, grids, charts, dock manager, React wrappers) for a UI requirement and point to official docs, examples, and API references.
IgniteUI/igniteui-webcomponents
Builds Ignite UI Web Components views from Figma designs, supporting Indigo.Design kits, third-party kits (Material 3, Fluent 2, shadcn/ui, Untitled UI, in-house), and plain frames.
Categories
Create a new Lit web component following project conventions, including specification, component class, styles, tests, Storybook story, and exports. Create New Component is an agent skill from IgniteUI/igniteui-webcomponents.
Create New Component fits situations like: frontend & Design work in your project.
Run `npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a claude-code`. Or copy the skill folder (.agents/skills/create-new-component in IgniteUI/igniteui-webcomponents) into .claude/skills/create-new-component in your project. Claude Code loads it when a task matches its description.
Run `npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a codex`. Or copy the skill folder (.agents/skills/create-new-component in IgniteUI/igniteui-webcomponents) into .agents/skills/create-new-component in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add IgniteUI/igniteui-webcomponents --skill create-new-component -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-new-component, .gemini/skills/create-new-component, .github/skills/create-new-component and .opencode/skills/create-new-component in your project.
Going by SKILL.md and its folder, Create New Component needs the command-line tools its instructions call (npm).
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Create New Component is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Create New Component: Scraps Review (getsentry/sentry, 46k stars), Readme I18n (Y80/bmm, 344 stars), Uncodixfy (pdsuwwz/chatgpt-vue3-light-mvp, 578 stars) and Gimi Illustration (GiMi-Xiaomi/gimi-illustration-skill, 701 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
IgniteUI (a GitHub organization) maintains it in IgniteUI/igniteui-webcomponents, which has 170 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 7, 2026.
Source: IgniteUI/igniteui-webcomponents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.