Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion .github/AGENTS-README.md
Original file line number Diff line number Diff line change
Expand Up @@ -401,15 +401,32 @@ CHANGELOG.md root changelog
src/app/<component>/ demo pages
```

The system also relies on repository-specific guidance in:
The system also relies on repository-specific guidance and internal operational skills in:

```text
.github/copilot-instructions.md
skills/igniteui-angular-components/SKILL.md
skills/igniteui-angular-grids/SKILL.md
skills/igniteui-angular-theming/SKILL.md
.github/skills/igniteui-angular-build/SKILL.md
.github/skills/igniteui-angular-testing/SKILL.md
.github/skills/igniteui-angular-linting/SKILL.md
```

Repository-specific skills for implementation guidance:

- `igniteui-angular-components` — shared guidance for general component patterns, structure, and repository conventions.
- `igniteui-angular-grids` — shared guidance for grid architecture, patterns, and grid-specific implementation work.
- `igniteui-angular-theming` — shared guidance for SCSS structure, theme wiring, and style-system conventions.

The internal operational skills are shared references for repository commands and validation flow:

- `igniteui-angular-build` — build command reference for full and partial builds such as library, schematics, migrations, elements, i18n, and related repo build targets.
- `igniteui-angular-testing` — test suite selection guide, Karma config mapping, and command reference for choosing the smallest relevant test run.
- `igniteui-angular-linting` — lint command reference, ESLint and Stylelint config locations, and lint expectations before work is considered complete.

Orchestrators should use these skills for command selection instead of repeating command lists inline.

---

## Maintenance Notes
Expand Down
12 changes: 2 additions & 10 deletions .github/agents/bug-fixing-orchestrator-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,16 +109,7 @@ Do not add sections such as:

---

## Component-Specific Patterns

Check the relevant skill file for component APIs and patterns:
- Non-grid components → `skills/igniteui-angular-components/SKILL.md`
- Grid components → `skills/igniteui-angular-grids/SKILL.md`
- Theming & styling → `skills/igniteui-angular-theming/SKILL.md`

Each skill file is a routing hub pointing to detailed reference files under its `references/` folder. **Read the relevant reference files** when investigating the root cause.

If the bug touches component SCSS or theme wiring, read `skills/igniteui-angular-theming/references/contributing.md` during investigation and plan a dedicated `theming-styles-agent` handoff.
For component/grid APIs read `skills/igniteui-angular-components/SKILL.md` or `skills/igniteui-angular-grids/SKILL.md`; for theming see `skills/igniteui-angular-theming/SKILL.md`; for test suite selection, lint, or build commands see the skills under `.github/skills/`.

---

Expand Down Expand Up @@ -218,6 +209,7 @@ After all agents finish, check:
- If a demo/sample was requested, was the existing demo structure updated appropriately?
- If a demo/sample was not requested, was it correctly skipped?
- Is multi-branch cherry-picking needed?
- Did `npm run lint:lib` pass?

Report what was done and any remaining items.

Expand Down
7 changes: 6 additions & 1 deletion .github/agents/feature-orchestrator-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ Do not add sections such as:

---

For component/grid APIs read `skills/igniteui-angular-components/SKILL.md` or `skills/igniteui-angular-grids/SKILL.md`; for test suite selection see `.github/skills/igniteui-angular-testing/SKILL.md`; for lint/build commands see `.github/skills/igniteui-angular-linting/SKILL.md` and `.github/skills/igniteui-angular-build/SKILL.md`.

---

## Key Repository Paths

```
Expand Down Expand Up @@ -132,7 +136,7 @@ projects/igniteui-angular/core/src/core/styles/ ← component SCSS themes
- Whether a migration schematic is needed
- Whether i18n strings are affected
- Whether styles or component themes are affected
- Which test suite to use (grid vs non-grid)
- Which test suite to use (grid vs non-grid vs schematics/styles/i18n)

### Step 2 — Request Missing Context

Expand Down Expand Up @@ -202,5 +206,6 @@ After all agents finish, check:
- Do migrations exist for any breaking changes?
- If a demo/sample was requested, was the existing demo structure updated appropriately?
- If a demo/sample was not requested, was it correctly skipped?
- Did `npm run lint:lib` pass?

Report what was done and any remaining items.
3 changes: 3 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,3 +121,6 @@ Domain-specific skills for AI-assisted development are located in the [`skills/`
- [`skills/igniteui-angular-components`](../skills/igniteui-angular-components/SKILL.md) — UI Components (form controls, layout, data display, feedback/overlays, directives — Input Group, Combo, Select, Date/Time Pickers, Calendar, Tabs, Stepper, Accordion, List, Card, Dialog, Snackbar, Button, Ripple, Tooltip, Drag and Drop, Layout Manager, Dock Manager) and Charts (Area Chart, Bar Chart, Column Chart, Stock/Financial Chart, Pie Chart)
- [`skills/igniteui-angular-grids`](../skills/igniteui-angular-grids/SKILL.md) — Data Grids (grid type selection, column config, sorting, filtering, selection, editing, grouping, paging, remote data, state persistence, Tree Grid, Hierarchical Grid, Grid Lite, Pivot Grid)
- [`skills/igniteui-angular-theming`](../skills/igniteui-angular-theming/SKILL.md) — Theming & Styling (includes MCP server setup)
- [`.github/skills/igniteui-angular-build`](skills/igniteui-angular-build/SKILL.md) — Building the library (full build, `build:lib`, partial builds for styles, migrations, schematics, i18n, elements)
- [`.github/skills/igniteui-angular-testing`](skills/igniteui-angular-testing/SKILL.md) — Testing (choosing the right test suite, grid vs non-grid, watch mode, schematics/styles/i18n tests)
- [`.github/skills/igniteui-angular-linting`](skills/igniteui-angular-linting/SKILL.md) — Linting (ESLint + Stylelint, `lint:lib`, configuration files)
75 changes: 75 additions & 0 deletions .github/skills/igniteui-angular-build/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
name: igniteui-angular-build
description: "Quick-reference for building the core Ignite UI for Angular library and related packages. Covers the full production build (`build:lib`), individual partial builds (styles, extras, migrations, schematics, i18n, elements), and the combined build-all command. Use when an agent needs to compile the library, produce a dist output, or verify that code changes compile cleanly. Do NOT use for running tests — use igniteui-angular-testing instead. Do NOT use for linting — use igniteui-angular-linting instead."
user-invocable: true
---

# Ignite UI for Angular — Build

Quick-reference card for the core library and related build commands in this repository.

## Prerequisites

- Run `npm install` at the repo root before any build command.

## Full Build

```bash
npm run build
```

Runs all sub-builds in sequence (library, elements, schematics, migrations, i18n, extras). Use this when you need a complete publishable output or before running the full CI pipeline locally. Check `package.json` for the exact sequence.

## Library Build (most common)

```bash
npm run build:lib
```

This is the primary build command. It does two things:

1. `ng build igniteui-angular --configuration production` — compiles the library with ng-packagr using Angular Package Format. Uses `ng-package.prod.json` (production config).
2. `npm run build:styles` — runs `node scripts/build-styles.mjs` to compile and bundle Sass themes into distributable CSS.

**Output**: `dist/igniteui-angular/`

### When to use `build:lib`

- After implementing a feature or fix, to verify the code compiles.
- Before checking that new public symbols are correctly exported.
- When another project needs to consume a local build of the library.

## Partial Builds

| Command | What it does |
|---|---|
| `npm run build:styles` | Compiles Sass themes only (`scripts/build-styles.mjs`). Already included in `build:lib`. |
| `npm run build:extras` | Builds the extras package and then runs extras migrations. |
| `npm run build:schematics` | Copies and compiles `ng add` schematics (`projects/igniteui-angular/schematics/`). |
| `npm run build:migrations` | Copies and compiles `ng update` migration schematics (`projects/igniteui-angular/migrations/`). |
| `npm run build:i18n` | Compiles the i18n package (`projects/igniteui-angular-i18n/`). |
| `npm run build:elements` | Builds the Angular Elements package + bundling + style copy. |
| `npm run build:docs` | Generates TypeDoc + SassDoc documentation. |

### When to use partial builds

- **`build:schematics`** — after editing files under `projects/igniteui-angular/schematics/`.
- **`build:migrations`** — after editing files under `projects/igniteui-angular/migrations/`. Required before running `test:schematics`.
- **`build:extras`** — after editing the extras package or when validating the full root `build` flow.
- **`build:i18n`** — after changing i18n resource strings.
- **`build:elements`** — when working on the Angular Elements wrapper.

## Key Paths

| Path | Purpose |
|---|---|
| `projects/igniteui-angular/` | Library source root |
| `projects/igniteui-angular/ng-package.prod.json` | Production ng-packagr config |
| `projects/igniteui-angular/ng-package.json` | Dev ng-packagr config (preserves dest) |
| `dist/igniteui-angular/` | Build output |
| `scripts/build-styles.mjs` | Sass theme compilation script |

## Related Skills

- [`igniteui-angular-testing`](../igniteui-angular-testing/SKILL.md) — Running tests
- [`igniteui-angular-linting`](../igniteui-angular-linting/SKILL.md) — Linting code and styles
59 changes: 59 additions & 0 deletions .github/skills/igniteui-angular-linting/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
name: igniteui-angular-linting
description: "Quick-reference for linting the core Ignite UI for Angular library. Covers the combined lint command (`lint:lib`), ESLint for TypeScript and templates, and Stylelint for Sass/SCSS styles. Use when an agent needs to run the main linters, fix lint errors, or understand the primary lint configuration. Do NOT use for building — use igniteui-angular-build instead. Do NOT use for running tests — use igniteui-angular-testing instead."
user-invocable: true
---

# Ignite UI for Angular — Linting

Quick-reference card for the core lint commands for the main library in this repository.

## Prerequisites

- Run `npm install` at the repo root.

## Commands

| Command | What it runs |
|---|---|
| `npm run lint:lib` | ESLint **+** Stylelint (both — use this as the default) |
| `npm run lint:styles` | Stylelint only (Sass/SCSS files) |
| `npm run lint` | `ng lint` — ESLint only (TypeScript + templates) |

### `lint:lib` (recommended)

```bash
npm run lint:lib
```

This is the combined command and the one agents should run before considering work complete. It executes:

1. `ng lint` — ESLint on TypeScript source and Angular templates, using the config at `projects/igniteui-angular/eslint.config.mjs`.
2. `npm run lint:styles` — Stylelint on Sass files under `projects/igniteui-angular/core/src/core/styles`.

### Lint Styles Only

```bash
npm run lint:styles
```

Runs `stylelint "projects/igniteui-angular/core/src/core/styles"`. Use when you only changed SCSS/Sass and want a faster check.

## Configuration Files

| File | Purpose |
|---|---|
| `eslint.config.mjs` (repo root) | Root ESLint config |
| `projects/igniteui-angular/eslint.config.mjs` | Library-specific ESLint config (referenced in `angular.json`) |
| `.stylelintrc.json` (repo root) | Root Stylelint config used by `npm run lint:styles` |

## Agent Rules

- **Always run `npm run lint:lib` before marking work complete** — this is a requirement from [AGENTS.md](../../../AGENTS.md).
- Fix all lint errors before committing. Do not disable rules without justification.
- If a lint rule conflicts with the intended change, investigate whether the rule is correct before suppressing it.

## Related Skills

- [`igniteui-angular-build`](../igniteui-angular-build/SKILL.md) — Building the library
- [`igniteui-angular-testing`](../igniteui-angular-testing/SKILL.md) — Running tests
76 changes: 76 additions & 0 deletions .github/skills/igniteui-angular-testing/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
name: igniteui-angular-testing
description: "Quick-reference for running Ignite UI for Angular test suites. Covers the full test run (`test:lib`), grid-specific suites (grid, tree-grid, hierarchical-grid, pivot-grid), non-grid tests, watch mode, and auxiliary test suites (schematics, styles, i18n). Use when an agent needs to run, select, or understand the test infrastructure. Do NOT use for building — use igniteui-angular-build instead. Do NOT use for linting — use igniteui-angular-linting instead."
user-invocable: true
---

# Ignite UI for Angular — Testing

Quick-reference card for the core test commands for the main igniteui-angular library plus schematics, styles, and i18n suites.

## Prerequisites

- Run `npm install` at the repo root.
- Schematics tests normally run from source and do not require a build first. Only run `npm run build:schematics` and `npm run build:migrations` when you specifically want to validate the compiled schematics or migrations output.
- For performance tests: run `npm run build:lib` first, or at minimum `npm run build:styles`, because `test:lib:perf` loads `dist/igniteui-angular/styles/igniteui-angular.css`.

## Test Runner

- **Karma + Jasmine** for all library unit tests.
- Karma configs live in `projects/igniteui-angular/karma*.conf.js`.
- Coverage reports are written to `coverage/`.

## Choosing the Right Command

| Scenario | Command |
|---|---|
| **All library tests** (slow — runs everything) | `npm run test:lib` |
| **Flat grid tests** only | `npm run test:lib:grid` |
| **Tree grid tests** only | `npm run test:lib:tgrid` |
| **Hierarchical grid tests** only | `npm run test:lib:hgrid` |
| **Pivot grid tests** only | `npm run test:lib:pgrid` |
| **All non-grid tests** (components, directives, services) | `npm run test:lib:others` |
| **Watch mode** (re-runs on file changes, for dev loop) | `npm run test:lib:watch` |
| **Performance tests** | `npm run test:lib:perf` |
| **Schematics + migrations** | `npm run test:schematics` |
| **Sass/style logic** | `npm run test:styles` |
| **i18n resource validation** | `npm run test:i18n` |

### Decision Guide

1. **Working on a grid component?** → Use the matching grid command (`test:lib:grid`, `test:lib:tgrid`, `test:lib:hgrid`, or `test:lib:pgrid`).
2. **Working on a non-grid component or directive?** → Use `test:lib:others`.
3. **Iterating quickly during development?** → Use `test:lib:watch`.
4. **Edited a migration or schematic?** → Use `test:schematics`. Build first only if you also need to validate compiled output.
5. **Running performance tests?** → Build first (`build:lib` or at least `build:styles`), then use `test:lib:perf`.
6. **Changed Sass theme logic?** → Use `test:styles`.
7. **Changed i18n resource strings?** → Use `test:i18n`.
8. **Final verification before marking work complete?** → Use `test:lib` (full suite).

## Karma Configs

| Config file | Used by |
|---|---|
| `karma.conf.js` | `test:lib` (all tests) |
| `karma.grid.conf.js` | `test:lib:grid` |
| `karma.tree-grid.conf.js` | `test:lib:tgrid` |
| `karma.hierarchical-grid.conf.js` | `test:lib:hgrid` |
| `karma.pivot-grid.conf.js` | `test:lib:pgrid` |
| `karma.non-grid.conf.js` | `test:lib:others` |
| `karma.watch.conf.js` | `test:lib:watch` |
| `karma.test-perf.conf.js` | `test:lib:perf` (performance) |

All configs are in `projects/igniteui-angular/`.

## Key Paths

| Path | Purpose |
|---|---|
| `projects/igniteui-angular/test-utils/` | Shared test helpers and utilities |
| `projects/igniteui-angular/src/test.ts` | Karma test entry point |
| `coverage/` | Code coverage output |

## Related Skills

- [`igniteui-angular-build`](../igniteui-angular-build/SKILL.md) — Building the library
- [`igniteui-angular-linting`](../igniteui-angular-linting/SKILL.md) — Linting code and styles
3 changes: 3 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ Domain-specific knowledge for AI assistants:
| Components | [`skills/igniteui-angular-components/SKILL.md`](skills/igniteui-angular-components/SKILL.md) | Working on non-grid UI components, charts |
| Grids | [`skills/igniteui-angular-grids/SKILL.md`](skills/igniteui-angular-grids/SKILL.md) | Working on grid, tree-grid, hierarchical-grid, pivot-grid |
| Theming | [`skills/igniteui-angular-theming/SKILL.md`](skills/igniteui-angular-theming/SKILL.md) | Working on styles, themes, palettes |
| Build | [`.github/skills/igniteui-angular-build/SKILL.md`](.github/skills/igniteui-angular-build/SKILL.md) | Building the library, producing dist output, compiling migrations/schematics |
| Testing | [`.github/skills/igniteui-angular-testing/SKILL.md`](.github/skills/igniteui-angular-testing/SKILL.md) | Running test suites, choosing the right Karma config |
| Linting | [`.github/skills/igniteui-angular-linting/SKILL.md`](.github/skills/igniteui-angular-linting/SKILL.md) | Running ESLint and Stylelint, fixing lint errors |

## Custom Agents

Expand Down
Loading