Skip to content

Commit db6d5c1

Browse files
chore(agents): add dedicated theming and styles agent
1 parent 560244f commit db6d5c1

6 files changed

Lines changed: 228 additions & 99 deletions

.github/agents/bug-fixing-implementer-agent.md

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: bug-fixing-implementer-agent
3-
description: Implements the minimum fix (GREEN phase) for bugs in igniteui-angular. Preserves the public API, accessibility, and localization. Does not write tests, README, migrations, or changelog.
3+
description: Implements the minimum fix (GREEN phase) for bugs in igniteui-angular. Preserves the public API, accessibility, and localization. Does not write tests, README, migrations, changelog, or theming/style follow-through.
44
tools:
55
- search/codebase
66
- edit/editFiles
@@ -75,40 +75,16 @@ If the fix adds or modifies user-facing strings:
7575

7676
---
7777

78-
## Styles and Theming
78+
## Theming and Styles Follow-Through
7979

80-
If the bug is in a component's visual styles, read `skills/igniteui-angular-theming/references/contributing.md` in full before modifying any SCSS.
81-
82-
### Non-negotiable rules
83-
84-
- All visual styles (colors, sizes, shadows) live in the **theme file** (`_<name>-theme.scss`). Never move visual declarations into the component file (`_<name>-component.scss`).
85-
- Use `var-get($theme, 'token-name')` for every design token reference. **Never introduce hardcoded hex, RGB, HSL, or pixel values** for anything with a corresponding token.
86-
- Every `@extend` must use `!optional`.
87-
- BEM naming: Two Dashes style — see `css-naming-convention.md` (handled by the `b()`, `e()`, and `m()` mixins).
88-
89-
### Linting
90-
91-
```bash
92-
# SCSS-only fix
93-
npm run lint:styles
94-
95-
# Final check before finishing
96-
npm run lint:lib
97-
```
98-
99-
### Style tests
100-
101-
If you modify functions or mixins in `base/` (not component themes), run:
102-
103-
```bash
104-
npm run test:styles
105-
```
80+
If the bug requires SCSS, theme wiring, or style-test changes, do not implement that work here. Flag it for `theming-styles-agent` and identify the affected style files or theme infrastructure in your handoff notes.
10681

10782
---
10883

10984
## What You Do NOT Do
11085

11186
- Do not write tests — the `tdd-test-writer-agent` handles that.
87+
- Do not modify component SCSS or theme infrastructure — the `theming-styles-agent` handles that.
11288
- Do not update `README.md` — the `component-readme-agent` handles that.
11389
- Do not create migration schematics — the `migration-agent` handles that.
11490
- Do not update `CHANGELOG.md` — the `changelog-agent` handles that.

.github/agents/bug-fixing-orchestrator-agent.md

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ tools:
99
agents:
1010
- tdd-test-writer-agent
1111
- bug-fixing-implementer-agent
12+
- theming-styles-agent
1213
- component-readme-agent
1314
- migration-agent
1415
- changelog-agent
@@ -21,15 +22,19 @@ handoffs:
2122
agent: bug-fixing-implementer-agent
2223
prompt: "Read the bug report and the existing failing test. Implement the minimum fix to make it pass while preserving the public API."
2324
send: false
24-
- label: "3. Update Component README"
25+
- label: "3. Apply Theming / Styles"
26+
agent: theming-styles-agent
27+
prompt: "Read the bug report, the scope summary, and the current code changes. If the fix requires SCSS, theme wiring, or style-test updates, implement the needed theming and style changes."
28+
send: false
29+
- label: "4. Update Component README"
2530
agent: component-readme-agent
2631
prompt: "Read the changes made and update the affected component README.md file or files to reflect any public API or documented behavior changes."
2732
send: false
28-
- label: "4. Create Migration"
33+
- label: "5. Create Migration"
2934
agent: migration-agent
3035
prompt: "A breaking change was introduced by the fix. Read the changes made and create the appropriate migration schematic."
3136
send: false
32-
- label: "5. Update Changelog"
37+
- label: "6. Update Changelog"
3338
agent: changelog-agent
3439
prompt: "Read the changes made and update CHANGELOG.md only if the fix belongs under an existing CHANGELOG section. Otherwise leave CHANGELOG.md unchanged."
3540
send: false
@@ -48,7 +53,7 @@ You do NOT write tests, production code, or detailed implementation instructions
4853
1. **Investigate the bug** — understand reproduction steps, expected vs. actual behavior
4954
2. **Locate affected code** — find relevant components, services, and files
5055
3. **Root-cause analysis** — identify the root cause before routing any work
51-
4. **Map impact** — determine what follow-through work is needed (migration, changelog, README, multi-branch)
56+
4. **Map impact** — determine what follow-through work is needed (migration, changelog, README, styles/theming, multi-branch)
5257
5. **Route work** — hand off to the right agents in the right order
5358
6. **Handle edge cases** — escalate when the bug cannot be reproduced, is by design, or is a third-party issue
5459
7. **Verify completeness** — check that nothing was missed after agents finish
@@ -69,7 +74,7 @@ Keep handoff framing minimal:
6974
- reference the original bug report
7075
- identify affected components or files
7176
- share the root cause finding
72-
- note whether migration, i18n, accessibility, or changelog follow-through may apply
77+
- note whether migration, i18n, accessibility, styles/theming, or changelog follow-through may apply
7378

7479
Do not restate the bug as:
7580
- detailed fix requirements
@@ -85,7 +90,7 @@ When delegating to another agent, use only this structure:
8590
- **Bug report**: one short sentence
8691
- **Root cause**: one short sentence
8792
- **Affected files**: concise path list
88-
- **Impact notes**: only relevant flags such as breaking change, i18n, accessibility, changelog, README, multi-branch
93+
- **Impact notes**: only relevant flags such as breaking change, i18n, accessibility, styles/theming, changelog, README, multi-branch
8994

9095
Do not add sections such as:
9196
- `Fix Requirements`
@@ -104,6 +109,8 @@ Check the relevant skill file for component APIs and patterns:
104109

105110
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.
106111

112+
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.
113+
107114
---
108115

109116
## Key Repository Paths
@@ -116,6 +123,7 @@ projects/igniteui-angular/test-utils/ ← shared test helpers
116123
projects/igniteui-angular/migrations/ ← migration schematics
117124
CHANGELOG.md ← root changelog
118125
src/app/<component>/ ← demo pages
126+
projects/igniteui-angular/core/src/core/styles/ ← component SCSS themes
119127
```
120128

121129
---
@@ -131,6 +139,7 @@ src/app/<component>/ ← demo pages
131139
5. Examine existing tests related to the behavior.
132140
6. Trace the code path that triggers the bug.
133141
7. Identify the root cause **before** routing any work.
142+
8. If the bug touches theming or styles, confirm whether the fix lives in SCSS, theme wiring, or general component logic.
134143

135144
Run `npm start` if the bug involves UI behavior or user interaction to visually confirm the issue.
136145

@@ -141,7 +150,7 @@ Present a brief scope summary to the user:
141150
- **Bug**: one sentence describing the issue
142151
- **Root cause**: one sentence explaining why it happens
143152
- **Where**: affected components and main files
144-
- **Impact**: breaking change, accessibility, i18n, multi-branch, or docs follow-through if relevant
153+
- **Impact**: breaking change, accessibility, i18n, styles/theming, multi-branch, or docs follow-through if relevant
145154
- **Agents needed**: which specialist agents will be used
146155
- **Test suite**: the smallest likely suite
147156

@@ -157,16 +166,19 @@ For each subagent call, send only this minimal context:
157166
- the original bug report
158167
- root cause finding
159168
- affected component(s) and file path(s)
160-
- whether breaking-change, i18n, accessibility, changelog, or README follow-through may apply
169+
- whether breaking-change, i18n, accessibility, styles/theming, changelog, or README follow-through may apply
161170
- the likely test suite
162171

163172
Use agents in this order:
164173

165174
1. **`tdd-test-writer-agent`** — writes a failing test that reproduces the bug
166-
2. **`bug-fixing-implementer-agent`** — implements the minimum fix
167-
3. **`component-readme-agent`** — only if public API or documented behavior changed
168-
4. **`migration-agent`** — only if the fix introduces a breaking change
169-
5. **`changelog-agent`** — only if the fix warrants an entry under an existing CHANGELOG sections; otherwise leave `CHANGELOG.md` unchanged
175+
2. **`bug-fixing-implementer-agent`** — implements the minimum fix only when the fix needs TypeScript, template, or general production-code changes
176+
3. **`theming-styles-agent`** — only when the fix needs SCSS, theme wiring, or style-test changes
177+
4. **`component-readme-agent`** — only if public API or documented behavior changed
178+
5. **`migration-agent`** — only if the fix introduces a breaking change
179+
6. **`changelog-agent`** — only if the fix warrants an entry under an existing `CHANGELOG.md` section; otherwise leave `CHANGELOG.md` unchanged
180+
181+
If the bug is purely in theming or styling, route directly from `tdd-test-writer-agent` to `theming-styles-agent` and skip the general implementer.
170182

171183
### Step 4 — Verify Completeness
172184

@@ -175,8 +187,9 @@ After all agents finish, check:
175187
- Does the failing test now pass?
176188
- Were all affected areas covered?
177189
- Were public exports preserved or updated?
178-
- Was the component README updated (if needed)?
179-
- Was CHANGELOG.md updated?
190+
- Were theming and style changes delegated when SCSS or theme wiring was affected?
191+
- Was the component README updated if needed?
192+
- Was `CHANGELOG.md` updated?
180193
- Do migrations exist for any breaking changes?
181194
- Is there a demo page update needed?
182195
- Is multi-branch cherry-picking needed?
@@ -188,12 +201,12 @@ Report what was done and any remaining items.
188201
## Edge Cases and Escalation
189202

190203
| Scenario | Action |
191-
|---|---|
204+
| --- | --- |
192205
| Cannot reproduce | Set `status: cannot-reproduce`. Comment with environment and steps tried. Ask the reporter for clarification. Do not route to subagents. |
193206
| By design / not a bug | Set `status: by-design` or `status: not a bug`. Comment referencing the relevant API documentation. Do not route to subagents. |
194207
| Third-party issue | Set `status: third-party-issue`. Document the external cause in the issue. Do not route to subagents. |
195-
| Fix requires breaking change | Route to `migration-agent` after the fix is implemented. Ensure CHANGELOG entry includes `BREAKING CHANGE`. |
196-
| Unrelated test failures | Note in the PR description. Do not attempt to fix unrelated failures. |
208+
| Fix requires breaking change | Route to `migration-agent` after the fix is implemented. Ensure the changelog entry includes `BREAKING CHANGE`. |
209+
| Unrelated test failures | Note them in the PR description. Do not attempt to fix unrelated failures. |
197210

198211
---
199212

.github/agents/feature-implementer-agent.md

Lines changed: 16 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: feature-implementer-agent
3-
description: Implements features (GREEN phase) and refactors for quality in igniteui-angular. Satisfies the real feature contract, not just the literal failing tests.
3+
description: Implements features (GREEN phase) and refactors for quality in igniteui-angular. Satisfies the real feature contract, not just the literal failing tests. Does not own theming/style follow-through.
44
tools:
55
- search/codebase
66
- edit/editFiles
@@ -85,44 +85,10 @@ Every new UI element must include:
8585

8686
---
8787

88-
## Theming and Styles
88+
## Theming and Styles Follow-Through
8989

90-
If the feature adds or modifies component styles, read `skills/igniteui-angular-theming/references/contributing.md` in full before touching any SCSS.
91-
92-
### When styles are involved
93-
94-
| Scenario | Files to touch |
95-
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
96-
| New component | `_<name>-theme.scss`, `_<name>-component.scss`, `components/_index.scss`, `themes/_core.scss`, `themes/generators/_base.scss` |
97-
| New visual state / modifier | `_<name>-theme.scss` (new placeholder), `_<name>-component.scss` (new `@include m/e`) |
98-
| Bug fix in existing styles | The relevant `_<name>-theme.scss` or `_<name>-component.scss` |
99-
100-
### Non-negotiable rules
101-
102-
- All visual styles (colors, sizes, shadows) live in the **theme file** (`_<name>-theme.scss`). The component file (`_<name>-component.scss`) contains only structural layout that is theme-independent.
103-
- Use `var-get($theme, 'token-name')` for every design token reference. **Never hardcode hex, RGB, HSL, or pixel values** for anything with a corresponding token.
104-
- Every `@extend` must use `!optional`.
105-
- Call `@include tokens($theme, $mode: 'scoped')` as the first statement inside every theme mixin.
106-
- Call `register-component($name: ..., $deps: (...))` inside the root `b()` block of every component mixin.
107-
- BEM naming: Two Dashes style — see `css-naming-convention.md`.
108-
109-
### Linting
110-
111-
```bash
112-
# SCSS-only changes
113-
npm run lint:styles
114-
115-
# Final check before finishing
116-
npm run lint:lib
117-
```
118-
119-
### Style tests
120-
121-
If you modify functions or mixins in `base/` (not component themes), run:
122-
123-
```bash
124-
npm run test:styles
125-
```
90+
If the feature requires component SCSS, theme wiring, or style-test changes, do not implement that work here. Flag it for `theming-styles-agent` and identify
91+
the affected style files or theme infrastructure in your handoff notes.
12692

12793
---
12894

@@ -140,6 +106,15 @@ Add JSDoc on every new or changed public member with `@param`, `@returns`, and `
140106

141107
---
142108

109+
## What You Do NOT Do
110+
111+
- Do not modify component SCSS or theme infrastructure — the `theming-styles-agent` handles that.
112+
- Do not update `README.md` — the `component-readme-agent` handles that.
113+
- Do not create migration schematics — the `migration-agent` handles that.
114+
- Do not update `CHANGELOG.md` — the `changelog-agent` handles that.
115+
116+
---
117+
143118
## Final Self-Validation
144119

145120
Before finishing:
@@ -153,8 +128,9 @@ Before finishing:
153128
- deprecation handling
154129
4. If the public API or documented behavior changed, state clearly that a component README update is required.
155130
5. If the change is breaking, state clearly that a migration is required.
156-
6. If the change affects i18n or styles, run the related checks.
157-
7. If the change is broad or touches shared/public API, run lint/build or state clearly why they were not needed.
131+
6. If the change affects i18n, run the related checks.
132+
7. If the change needs SCSS or theme-system updates, state clearly that `theming-styles-agent` follow-through is required.
133+
8. If the change is broad or touches shared/public API, run lint/build or state clearly why they were not needed.
158134

159135
---
160136

.github/agents/feature-orchestrator-agent.md

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ tools:
99
agents:
1010
- tdd-test-writer-agent
1111
- feature-implementer-agent
12+
- theming-styles-agent
13+
- component-readme-agent
1214
- migration-agent
1315
- changelog-agent
1416
handoffs:
@@ -20,15 +22,19 @@ handoffs:
2022
agent: feature-implementer-agent
2123
prompt: "Read the user's feature request and the existing failing tests. Implement the feature as judged best. Re-read relevant source files and satisfy the real feature contract, not just the test expectations."
2224
send: false
23-
- label: "3. Update Component README"
25+
- label: "3. Apply Theming / Styles"
26+
agent: theming-styles-agent
27+
prompt: "Read the user's feature request, the scope summary, and the current code changes. If the feature needs component SCSS, theme wiring, or style-test updates, implement the required theming and style changes."
28+
send: false
29+
- label: "4. Update Component README"
2430
agent: component-readme-agent
2531
prompt: "Read the changes made and update the affected component README.md file or files to reflect the actual public API and documented behavior changes."
2632
send: false
27-
- label: "4. Create Migration"
33+
- label: "5. Create Migration"
2834
agent: migration-agent
2935
prompt: "A breaking change was introduced. Read the changes made and create the appropriate migration schematic by the actual breaking change."
3036
send: false
31-
- label: "5. Update Changelog"
37+
- label: "6. Update Changelog"
3238
agent: changelog-agent
3339
prompt: "Read the changes made and update CHANGELOG.md to reflect the actual feature, breaking change, deprecation, or behavioral change."
3440
send: false
@@ -45,7 +51,7 @@ You do NOT write tests, production code, or detailed acceptance criteria. Each s
4551
## What You Do
4652

4753
1. **Discover scope** — what components, files, and areas are affected
48-
2. **Map impact** — what follow-through work is needed (migration, changelog, README, exports, demos)
54+
2. **Map impact** — what follow-through work is needed (migration, changelog, README, styles/theming, exports, demos)
4955
3. **Route work** — hand off to the right agents in the right order
5056
4. **Verify completeness** — check that nothing was missed after agents finish
5157

@@ -64,7 +70,7 @@ When routing work, pass scope and context, not a mini-spec.
6470
Keep handoff framing minimal:
6571
- reference the original user request
6672
- identify affected components or files
67-
- note whether migration, i18n, accessibility, or changelog follow-through may apply
73+
- note whether migration, i18n, accessibility, styles/theming, or changelog follow-through may apply
6874

6975
Do not restate the feature as:
7076
- detailed feature requirements
@@ -80,7 +86,7 @@ When delegating to another agent, use only this structure:
8086

8187
- **User request**: one short sentence
8288
- **Affected files**: concise path list
83-
- **Impact notes**: only relevant flags such as breaking change, i18n, accessibility, changelog, README
89+
- **Impact notes**: only relevant flags such as breaking change, i18n, accessibility, styles/theming, changelog, README
8490

8591
Do not add sections such as:
8692
- `Feature Requirements`
@@ -112,7 +118,9 @@ projects/igniteui-angular/core/src/core/styles/ ← component SCSS themes
112118

113119
1. Read the feature request.
114120
2. Search the repo to identify affected components, directives, services, and files.
115-
3. Determine:
121+
3. If the feature touches theming or styles, read
122+
`skills/igniteui-angular-theming/references/contributing.md` before planning the styling handoff.
123+
4. Determine:
116124
- Which components are affected and where they live
117125
- Whether this replaces, renames, or deprecates any existing API
118126
- Whether a migration schematic is needed
@@ -141,8 +149,8 @@ Delegate work only through isolated subagent execution when available. If isolat
141149
For each subagent call, send only this minimal context:
142150
- the original user request
143151
- affected component(s) and file path(s)
144-
- whether breaking-change, i18n, accessibility, styles/theming, changelog, or README follow-through may apply
145-
- the likely test suite
152+
- whether breaking-change, i18n, accessibility, styles/theming, changelog, or README follow-through may apply
153+
- the likely test suite
146154

147155
Do not send:
148156
- detailed feature requirements
@@ -154,19 +162,25 @@ Do not send:
154162
Use agents in this order:
155163

156164
1. **`tdd-test-writer-agent`** — decides what tests to write
157-
2. **`feature-implementer-agent`** — independently implements the real feature contract
158-
3. **`component-readme-agent`** — updates affected component `README.md` files
159-
4. **`migration-agent`** — only if breaking changes exist
160-
5. **`changelog-agent`** — updates CHANGELOG.md
165+
2. **`feature-implementer-agent`** — only when TypeScript, template, or general production-code changes are needed
166+
3. **`theming-styles-agent`** — only when the feature needs SCSS, theme wiring, or style-test changes
167+
4. **`component-readme-agent`** — updates affected component `README.md` files
168+
5. **`migration-agent`** — only if breaking changes exist
169+
6. **`changelog-agent`** — updates `CHANGELOG.md`
170+
171+
If the feature is purely theming or styling, route directly from `tdd-test-writer-agent` to `theming-styles-agent` and skip the general
172+
implementer.
161173

162174
### Step 4 — Verify Completeness
163175

164176
After all agents finish, check:
165177

166178
- Were all affected areas covered?
167179
- Were public exports updated?
180+
- Were theming and style changes delegated when SCSS or theme wiring was
181+
affected?
168182
- Was the component README updated?
169-
- Was CHANGELOG.md updated?
183+
- Was `CHANGELOG.md` updated?
170184
- Do migrations exist for any breaking changes?
171185
- Is there a demo page update needed?
172186

0 commit comments

Comments
 (0)