Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
a6f6a10
Transform json-snippet blocks into each platform's markup during gene…
gmurray81 Aug 8, 2026
73a22c1
Add a check for snippet groups whose platforms disagree about content
gmurray81 Aug 8, 2026
da91398
Set documentation style defaults per platform, and ignore expected va…
gmurray81 Aug 8, 2026
b279887
Compare snippets per component rather than by position
gmurray81 Aug 8, 2026
898df06
Scope the divergence check to components that are not web only
gmurray81 Aug 8, 2026
e729c76
Resolve property names through the description metadata, not the apiMap
gmurray81 Aug 8, 2026
7cba031
Plan the collapse by testing each snippet group against the sample it…
gmurray81 Aug 8, 2026
481e66e
Collapse a group when any platform already agrees with its sample
gmurray81 Aug 8, 2026
6cb59f2
Report why a group is unpaired
gmurray81 Aug 8, 2026
6eb8037
Pair a group with its sample by what separates them, and by what they…
gmurray81 Aug 8, 2026
bc240f0
Match a group to a sample by property coverage, not exact agreement
gmurray81 Aug 8, 2026
0f6e54b
Collapse bullet-graph to json-snippet, and check every snippet agains…
gmurray81 Aug 9, 2026
099cb52
Brace React boolean attributes in snippets
gmurray81 Aug 9, 2026
3fe01ba
Find candidate samples by what a snippet sets, not by what the page s…
gmurray81 Aug 9, 2026
6d09ba6
Collapse chart-annotations against the samples it was actually writte…
gmurray81 Aug 9, 2026
16f48d7
Show calloutsAllowedPositions, which the prose documents
gmurray81 Aug 9, 2026
86c0b76
Collapse radial-gauge, and mirror collapses to the translated topic b…
gmurray81 Aug 9, 2026
d49f4a1
Collapse linear-gauge, completing the gauge family
gmurray81 Aug 9, 2026
e6b8bad
Collapse the OSM and Esri imagery topics, and check for snippets that…
gmurray81 Aug 9, 2026
bb2fb46
Emit the binding code beside a snippet automatically when the markup …
gmurray81 Aug 9, 2026
1d82a02
Collapse four more geo-map topics against their samples
gmurray81 Aug 9, 2026
481ad96
Collapse geo-map-binding-multiple-shapes, and fix the mirror losing c…
gmurray81 Aug 9, 2026
bc43d65
Collapse chart-data-aggregations and the overlay text styling section
gmurray81 Aug 9, 2026
6da0106
Collapse the chart marker size sections, and translate the section jp…
gmurray81 Aug 9, 2026
7275b90
Collapse geo-map Usage and the window coordinate navigation snippets
gmurray81 Aug 9, 2026
d509512
Generate the navigation handler from the library instead of writing i…
gmurray81 Aug 9, 2026
8f5c012
Collapse the three handler driven geo-map topics
gmurray81 Aug 9, 2026
5ebfbdd
Let a snippet hold several definitions, and collapse chart-performanc…
gmurray81 Aug 10, 2026
70c06c0
Keep the performance topics imperative, and match the topics' own sty…
gmurray81 Aug 10, 2026
97e6986
Record why the spreadsheet topics cannot be collapsed yet
gmurray81 Aug 10, 2026
020982b
Let a fence ask for several channels at once
gmurray81 Aug 10, 2026
51d626f
Correct the reason geo-map-shape-styling is not collapsed
gmurray81 Aug 10, 2026
ec695be
Generate the shape styling imports section
gmurray81 Aug 10, 2026
416ccf1
Correct the note on the chart performance sections
gmurray81 Aug 10, 2026
deca780
Collapse the geographic map and chart topics to json-snippet definitions
gmurray81 Aug 11, 2026
700b53c
Make the snippet tooling read platform blocks by depth, and settle th…
gmurray81 Aug 11, 2026
74049fe
Collapse the axis performance guidelines, and drop a property that do…
gmurray81 Aug 11, 2026
f1630f1
Collapse geo-map-shape-styling, the last hand written DV topic
gmurray81 Aug 11, 2026
b2332a9
Collapse column-sorting, and set the pattern for the data grid set
gmurray81 Aug 11, 2026
4c6e233
Collapse five more data grid topics
gmurray81 Aug 11, 2026
f154b2b
Delete the dead enum imports beside the collapsed grid snippets
gmurray81 Aug 11, 2026
d22487f
Collapse horizontal-scrolling and column-summaries
gmurray81 Aug 11, 2026
fc75424
Collapse column-types and the overview sections
gmurray81 Aug 11, 2026
bd29870
Collapse the rest of the data grid set
gmurray81 Aug 12, 2026
f264caf
Collapse the toolbar topics and the last plain grid ones
gmurray81 Aug 12, 2026
283fed4
Collapse the row-grouping summary, and fix the casing on every grid s…
gmurray81 Aug 12, 2026
6f5e1e8
Check collapsed snippets on the platforms their pages do not publish
gmurray81 Aug 12, 2026
e51c869
Finish the DataVisualization topics
gmurray81 Aug 12, 2026
3dbd3a0
Collapse the last two data grid sections
gmurray81 Aug 12, 2026
487002a
Collapse the callout assignments, and record what DataVisualization k…
gmurray81 Aug 12, 2026
29c2538
Collapse the toolbar topic
gmurray81 Aug 12, 2026
0c70e98
Collapse the colour editor and zoom slider topics
gmurray81 Aug 12, 2026
f16e3d6
Collapse the Component Modules sections
gmurray81 Aug 12, 2026
2596ef6
Emit the shape styling utility, and scope the other resource listings
gmurray81 Aug 12, 2026
dd81dba
Emit the three world resource listings from the library
gmurray81 Aug 12, 2026
7aa79ae
Make the emission check honest, and fix what it then found
gmurray81 Aug 12, 2026
b7f8f09
Mirror the data grid module and data source collapses into the jp copies
gmurray81 Aug 12, 2026
27c7e5d
Three checks anyone can run, and workflows that run the same scripts
gmurray81 Aug 12, 2026
7f12b1b
Run the fences the topics publish, in a browser, against the real ren…
gmurray81 Aug 13, 2026
4282fea
Stop excluding platforms from snippets, and say why a section is not …
gmurray81 Aug 13, 2026
d2ffb3e
Bind the shape styling topic to the event every platform has
gmurray81 Aug 13, 2026
8cdbebc
Run the checks from the published packages, so CI can run them at all
gmurray81 Aug 15, 2026
112407e
Merge vnext
gmurray81 Aug 15, 2026
eb72b76
Make the snippet jobs run on their own, and stop asking emission a ru…
gmurray81 Aug 16, 2026
8c3c3e8
Restore the house whitespace the collapse disturbed
gmurray81 Aug 16, 2026
a39b528
Put the Japanese copies back in step, and make the check run what the…
gmurray81 Aug 16, 2026
115eb65
Show the three gated sections to every platform
gmurray81 Aug 16, 2026
487f1f0
Write down how a json-snippet works
gmurray81 Aug 16, 2026
2fad613
Close the three code scanning alerts on the collapse scripts
gmurray81 Aug 16, 2026
0e239a5
Leave only what builds, tests or validates a snippet
gmurray81 Aug 16, 2026
2322cf5
Wait for a sample's requests before starting the next one
gmurray81 Aug 16, 2026
1ae72cd
Stop publishing web theming and web accessibility to the XAML platforms
gmurray81 Aug 16, 2026
3daf6b5
Stop the web grid topics leaking to the XAML platforms, and list the …
gmurray81 Aug 16, 2026
126caae
Say nothing to a XAML reader that only a web reader can act on
gmurray81 Aug 16, 2026
3c5b741
Resolve every backticked API term against the api maps
gmurray81 Aug 17, 2026
0dc8ab0
Review what a change does to the published pages
gmurray81 Aug 17, 2026
a60300a
Interleave a comment above the property it explains
gmurray81 Aug 18, 2026
24381a9
Put a handler's imports back above it
gmurray81 Aug 18, 2026
2332183
Wait for supportingImports rather than show the wrong list
gmurray81 Aug 18, 2026
c905136
Fix a stray word in the multiple shapes topic
gmurray81 Aug 18, 2026
f0bcd11
Emit an ApiLink the component can actually resolve
gmurray81 Aug 18, 2026
c0df851
State the affixes rather than bake them into the name
gmurray81 Aug 18, 2026
b262775
Let the page's context settle a name before a loose type match
gmurray81 Aug 18, 2026
7557814
Add global:: to force the type reading
gmurray81 Aug 18, 2026
db54978
Reverse the remaining frozen ApiLinks on checked pages
gmurray81 Aug 18, 2026
2f75fd4
Resolve the members that had been misattributed as types
gmurray81 Aug 18, 2026
6a1806e
Normalize a Thickness the platforms expose two different ways
gmurray81 Aug 18, 2026
c928e7f
Import ModuleManager where a block calls it, and consume the escape w…
gmurray81 Aug 18, 2026
493220f
Name the map so the handler can reach it
gmurray81 Aug 18, 2026
08e777b
Drop the harness calling the handler a block is teaching
gmurray81 Aug 18, 2026
157be9c
Show the helper class a snippet constructs
gmurray81 Aug 18, 2026
813744a
Declare the series and chart variables the emitted code assigns to
gmurray81 Aug 18, 2026
3b5e183
Name the class that loads a shapefile, and show the snippet that maps…
gmurray81 Aug 19, 2026
138ef66
Describe the shapefile route the polyline and polygon snippets actual…
gmurray81 Aug 19, 2026
9bb2e95
Show the icon registrations the toolbar topic says it shows
gmurray81 Aug 19, 2026
376e9e4
Say where a handler's args come from, and point back at the styling u…
gmurray81 Aug 19, 2026
a433b69
Keep the authored data column names, and show the CSV file the sample…
gmurray81 Aug 19, 2026
d419eef
Set the map background on the map the page declares, as the topic use…
gmurray81 Aug 19, 2026
5eaf859
Show the JSON the sample reads, and register the chart the toolbar pa…
gmurray81 Aug 19, 2026
5e12cdc
Teach the sparkline column as a template, and fence emitted content b…
gmurray81 Aug 20, 2026
8ce1926
Let auto take every channel that has content, and say per fence what …
gmurray81 Aug 24, 2026
c0b999b
Mark every description in a definition, not only the one called content
gmurray81 Aug 24, 2026
fb89a0d
Name the enum the highlight values belong to, so its values link
gmurray81 Aug 24, 2026
73dc454
Point the contour and scatter-area rows at the data source that exists
gmurray81 Aug 25, 2026
80a9aae
Ask for the name form on the marker page, and one auto fence where th…
gmurray81 Aug 27, 2026
9f4b37b
Say that the in-code sidecars compose with auto
gmurray81 Aug 27, 2026
ba9149c
Keep the axis label's casing on the ordinal-axis snippet
gmurray81 Aug 27, 2026
b42da36
Give the Web Components annotation layer its data source and its axis
gmurray81 Aug 27, 2026
62a343f
Name the shape data source on the heat imagery topic
gmurray81 Aug 27, 2026
6aa70d4
Attribute the date range descriptor's own members to it
gmurray81 Aug 27, 2026
b0e5fcc
Let Blazor see the remote sort and filter sections it has content for
gmurray81 Aug 27, 2026
44dd3c3
Filter code blocks on the shared grid pages too
gmurray81 Aug 27, 2026
555d408
Filter code blocks on every .mdx page, and widen the blocks that swal…
gmurray81 Aug 27, 2026
f3d01de
Widen the last blocks that swallowed a heading, ComponentBlock and all
gmurray81 Aug 27, 2026
64a4bcf
Declare the map field the azure imagery blocks assign through
gmurray81 Aug 27, 2026
7917ce0
Give the English pages back the type context their Japanese twins kept
gmurray81 Aug 27, 2026
4d85b55
Point two misdirected links at the types that own them
gmurray81 Aug 27, 2026
6415b61
Let the grouping-summary grid generate the columns it never declared
gmurray81 Aug 27, 2026
a4f96fb
Give the two cell-editing handlers their signatures back
gmurray81 Aug 27, 2026
2881731
Show numeric formatting on the topic that teaches it
gmurray81 Aug 27, 2026
0656ec2
Delete the styling block the collapsed fence replaced
gmurray81 Aug 27, 2026
80a82a1
Gate the two cell-editing lead-ins with the blocks they introduce
gmurray81 Aug 27, 2026
11ebd21
Stop offering WinUI and Uno a chart they have not got
gmurray81 Aug 27, 2026
e57d03b
Give WinUI a getting-started skeleton instead of a blank page
gmurray81 Aug 27, 2026
b2a9655
Let each column of the axis comparison table name its own chart
gmurray81 Aug 27, 2026
fe02c0c
Name the real WinUI packages, in both languages, through the tokens
gmurray81 Aug 27, 2026
1be8cd9
Take the WinUI package list from the branch that has all of it
gmurray81 Aug 28, 2026
1b2aedf
Qualify the members whose names are ordinary words
gmurray81 Aug 28, 2026
7f30492
Stop embedding financial chart demos on the XAML platforms
gmurray81 Aug 28, 2026
8c20a5b
Give two map series topics the imports their code needs
gmurray81 Aug 28, 2026
c7b0059
Restore the Bing protocol workaround the collapse could not carry
gmurray81 Aug 28, 2026
1343ce3
Declare the map the shapefile and heat imagery handlers reach through
gmurray81 Aug 28, 2026
a9b2e5f
Register the modules the heat imagery topic depends on
gmurray81 Aug 28, 2026
98f7bf4
Point three sample embeds at demos that exist
gmurray81 Aug 28, 2026
534083f
Stop gating two snippet sections away from the platforms they emit for
gmurray81 Aug 31, 2026
9dac244
Give the two sections that promised code to nobody something to show
gmurray81 Aug 31, 2026
0e34a54
Merge origin/vnext into docs/json-snippets
gmurray81 Aug 31, 2026
1e40516
Finish the four things the WinUI getting-started page deferred
gmurray81 Aug 31, 2026
a32a4dd
Spell what this branch's own prose spells wrong
gmurray81 Aug 31, 2026
7db8d8b
Take 7.1.1-beta.12, and stop blaming it for a harness bug
gmurray81 Aug 31, 2026
3754759
Say which DateRangeDescriptor the calendar topic means
gmurray81 Aug 31, 2026
877fe48
Catch the vendored item templates up with dev-tools
gmurray81 Aug 31, 2026
d7ce8db
Put the web grid's topics back the way we found them
gmurray81 Aug 31, 2026
3e0edb0
Document the parts of json-snippet authoring that were only in the code
gmurray81 Aug 31, 2026
264d8fa
Stop two links of ours from dying on a WinUI or Uno site
gmurray81 Aug 31, 2026
c4cfea1
Teach the repo's skills the two xplat contracts they did not know
gmurray81 Aug 31, 2026
f1b47c9
Draw the line between an xplat doc and a web-only one
gmurray81 Aug 31, 2026
e8f41aa
Have every topic declare which population it belongs to
gmurray81 Sep 1, 2026
4d55991
Put the DV changelog pages in the population they document
gmurray81 Sep 1, 2026
c8343b3
Tell the rest of the instructions which population a topic is in
gmurray81 Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
32 changes: 32 additions & 0 deletions .ai/skills/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,37 @@
# igniteui doc-skill set · changelog

## v4 · 2026-08-31

Teaches the set two xplat contracts it did not know, both of which an author following v3 would get
wrong. No rule was removed or reworded; two were added and one bullet was scoped. Whole set bumped to
v4 per the uniform version-line convention.

### Changed

| Change | File(s) |
|---|---|
| `apiTerms` added to the normative frontmatter contract: required for xplat, no default, `full` / `passthrough` / `none`, with what each does to a backticked name. A page written to v3's contract has no `apiTerms` and **does not build** — generation throws on a missing or unknown value. `docs/xplat/API-TERMS.md` named as normative. | igniteui-doc-topics/references/house-style.md |
| `json-snippet` added ahead of the inline-code-snippet bullet: an xplat DV topic states its component once as JSON and generation emits every platform's code from the product's description metadata, so hand written per-platform blocks are the exception now rather than the default. Discouraged rather than banned — a definition cannot carry a data shape, a namespace declaration or a package install, and a block is the right tool there. The existing bullet is scoped to the blocks a topic still authors by hand. `docs/xplat/JSON-SNIPPETS.md` named as normative. | igniteui-doc-topics/references/house-style.md |
| The populations of the xplat content tree written down, because both rules above are scoped to one of them, and each page now declares which it is in `platformType`. **xplat** owes full API term resolution and a `json-snippet`-first habit; **xplat-unmapped** is the same set where that cannot be applied yet (the Excel library, and the data grid's accessibility topic); **web-only** owes neither and is not to be reworked to match. Identity is not publication: a topic can be xplat and not reach the desktop platforms yet. `platformType` replaces `apiTerms` in the required-fields list, since the mode now follows from the population. | igniteui-doc-topics/references/house-style.md |
| house-style's version note corrected: it claimed "content unchanged from v2", which v4 makes false. | igniteui-doc-topics/references/house-style.md |
| Create step 4 now begins with `platformType` for an xplat topic, since it is required, has no default, and decides which standard the rest of the work is held to. | igniteui-doc-topics/references/create-workflow.md |
| Audit check D0 added (Blocker, xplat): no `platformType`, or one that does not match the topic. Names the two traps — identity is not publication, and a per-platform block or a non-`full` `apiTerms` is a finding on an xplat topic and fine on a web-only one. | igniteui-doc-topics/references/audit-rubric.md |
| Set-wide version line bumped to `v4 · 2026-08-31`, including the content-unchanged files. | all files |

### Unchanged

Both routers, both skills' `description` fields (so the `.claude/` and `.codex/` adapters still
byte-match and needed no edit), every audit check and severity, every blueprint and section table,
and the whole frontmatter skill.

### Where the substance lives

The working guides for these two contracts are repository skills rather than references in this set,
because they are xplat build machinery rather than house style: `.github/skills/xplat-docs-api-links`
(modes, `ApiLink` props, `pkg=` disambiguation, the build-time ambiguity trap) and
`.github/skills/xplat-docs-json-snippets` (fence attributes, channels, the five traps, the checks).
This set points at them; it does not restate them.

## v3 · 2026-08-14

Restructures both skills to the routing-hub + references architecture used by the
Expand Down
10 changes: 9 additions & 1 deletion .ai/skills/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Ignite UI doc-skill set — architecture and maintenance guide

Version: v3 · 2026-08-14 · igniteui doc-skill set. This file is for humans; agents load the
Version: v4 · 2026-08-31 · igniteui doc-skill set. This file is for humans; agents load the
SKILL.md files. Change history: `CHANGELOG.md`.

## What this is
Expand Down Expand Up @@ -59,6 +59,14 @@ change over time lives in `references/`. Three reasons:
└── igniteui-topic-frontmatter/SKILL.md ← adapter (description byte-matches canonical)
```

**Where xplat build machinery lives instead.** Two contracts an xplat author needs are not house
style but build behaviour, so their working guides are repository skills and this set only points at
them: `.github/skills/xplat-docs-api-links` (the `apiTerms` modes, `ApiLink` props, `pkg=`
disambiguation) and `.github/skills/xplat-docs-json-snippets` (fence attributes, channels, the
checks). house-style names both, and `docs/xplat/API-TERMS.md` and `docs/xplat/JSON-SNIPPETS.md` are
normative for them. Do not restate their rules here — that is the drift this set was restructured to
stop.

**Authority chain:** where any two files differ, `house-style.md` wins on content rules (it is the
single normative field contract and template source); each skill's own references win on its
operational procedure (severities, report shapes, workflow order). The frontmatter skill reads
Expand Down
2 changes: 1 addition & 1 deletion .ai/skills/igniteui-doc-topics/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ description: >-

# Ignite UI doc topics

Version: v3 · 2026-08-14 · igniteui doc-skill set. All set files carry this version line; before
Version: v4 · 2026-08-31 · igniteui doc-skill set. All set files carry this version line; before
editing any file, confirm the lines match across the set. The `.claude` adapter's `description` must
byte-match this file's `description`. Change log: `.ai/skills/CHANGELOG.md` · human-readable intent:
`.ai/skills/README.md`.
Expand Down
9 changes: 8 additions & 1 deletion .ai/skills/igniteui-doc-topics/references/audit-rubric.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Audit rubric

Version: v3 · 2026-08-14 · igniteui doc-skill set. Before editing, confirm this version line against
Version: v4 · 2026-08-31 · igniteui doc-skill set. Before editing, confirm this version line against
`.ai/skills/CHANGELOG.md`.

The audit workflow, the checkable rules for **audit mode**, and the report format to produce. Every
Expand Down Expand Up @@ -129,6 +129,13 @@ Run the compass on each section; flag content that has drifted out of the sectio
Styling instead of Usage.

### D. Metadata & AI-readiness
- D0 (Blocker, xplat) No `platformType`, or one that does not match the topic. The field is required
and has no default, so a topic without it does not build; and it decides which standard the topic is
held to, so the wrong value quietly applies the wrong rules. `xplat` for the DV set,
`xplat-unmapped` where its API cannot be resolved, `web-only` for the web platforms and no further.
Two traps: identity is not publication, so a topic can be `xplat` and reach no desktop platform; and
a per-platform code block or a non-`full` `apiTerms` is a finding on an xplat topic and perfectly
fine on a web-only one. `check-doc-scope.mjs` reports both, and house-style carries the contract.
- D1 (Warning) `relatedComponents` is set but **Usage**'s **Do/Don't** guidance doesn't name the
specific sibling(s) by name and link them — or vice-versa, it names a sibling that isn't listed in
`relatedComponents`.
Expand Down
7 changes: 6 additions & 1 deletion .ai/skills/igniteui-doc-topics/references/create-workflow.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Create workflow

Version: v3 · 2026-08-14 · igniteui doc-skill set. Content carried from SKILL.md v2 unchanged;
Version: v4 · 2026-08-31 · igniteui doc-skill set. Content carried from SKILL.md v2 unchanged;
restructured into this reference so the workflow can evolve without touching the router. Blueprints,
mechanics, and the frontmatter contract live in `house-style.md`; run the rubric self-check from
`audit-rubric.md` before delivering.
Expand All @@ -25,6 +25,11 @@ mechanics, and the frontmatter contract live in `house-style.md`; run the rubric
4. **Scaffold frontmatter** — the metadata contract lives in `house-style.md` → "File format &
frontmatter"; this step orders the work, it does not restate the rules. Apply the contract to
every topic type, including category/index topics.
- **First, for an xplat topic:** `platformType`, which is required and has no default — a topic
without it does not build, and it decides the standard the rest of the work is held to. `xplat`
for the DV set, `xplat-unmapped` where its API cannot be resolved, `web-only` for a topic that
ships for the web platforms and no further. It also settles `apiTerms`, which is then stated only
to differ. See house-style → "File format & frontmatter".
- **Before the body (fixed by convention):** `title` (xplat component topics use the
`{ComponentTitle}` token; xplat category/index topics use a concise, framework-neutral category
name without `{Platform}` or `{ProductName}` tokens, for example `title: "Grids and Tables"`;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Diátaxis cheat-sheet

Version: v3 · 2026-08-14 · igniteui doc-skill set (content unchanged; version line added for the
Version: v4 · 2026-08-31 · igniteui doc-skill set (content unchanged; version line added for the
set-wide match check). Before editing, confirm this version line against `.ai/skills/CHANGELOG.md`.

Condensed from https://diataxis.fr (tutorials, how-to, reference, explanation, compass).
Expand Down
35 changes: 33 additions & 2 deletions .ai/skills/igniteui-doc-topics/references/house-style.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Ignite UI house style

Version: v3 · 2026-08-14 · igniteui doc-skill set (content unchanged from v2; set-wide version
bump). Before editing, confirm this version line against `.ai/skills/CHANGELOG.md`. The "File format & frontmatter" section below is the **single normative
Version: v4 · 2026-08-31 · igniteui doc-skill set (v4 adds the xplat `apiTerms` contract and the
`json-snippet` rule; content was unchanged from v2 through v3). Before editing, confirm this version line against `.ai/skills/CHANGELOG.md`. The "File format & frontmatter" section below is the **single normative
field contract** for the doc-skill set; the two SKILL.md files reference it rather than restating it.

The Ignite UI documentation conventions an authored or audited topic must follow. Pair this with
Expand Down Expand Up @@ -63,9 +63,31 @@ llms:
description: "…" # AI-facing one-liner; defines the component, not the page — the exact text an assistant quotes
last_updated: "YYYY-MM-DD" # required for every topic; rendered by the site layout
relatedComponents: [Toast, Banner] # TARGET field — drives the Usage Do/Don't trigger (see below)
platformType: xplat # xplat: REQUIRED, no default — xplat | xplat-unmapped | web-only
---
```

- **`platformType` (xplat) is required and has no default.** A missing or unknown value stops the
build. It also decides `apiTerms`, which a page then states only to differ: `xplat` implies `full`
(names in backticks resolved through the api maps), `xplat-unmapped` implies `passthrough` (resolved
by rule, for an API no generator describes), `web-only` implies `none` (left as written, no
`ApiLink`). An xplat page may not state `none`; a topic that genuinely cannot resolve its names is
`xplat-unmapped`. `docs/xplat/API-TERMS.md` is normative; the `xplat-docs-api-links` skill is the
working guide.

- **Three populations share the xplat content tree, held to different standards, and each page says
which it is.** The **DV set** — charts, gauges, maps, dashboard tile, data grid, spreadsheet,
toolbar, zoom slider — is `platformType: xplat`: canonical names in backticks resolved in full, and
a component stated as a `json-snippet` unless a platform-specific snippet is genuinely necessary.
`xplat-unmapped` is the same set where that treatment cannot be applied yet — the Excel library,
whose API no generator describes, and the data grid's accessibility topic, whose XAML shape is
undecided. **Web-only** topics — inputs, layouts, notifications, scheduling, themes, the web grid
families, grid lite — carry no such obligation: they may hand write a block per platform and declare
any mode, and reworking them to match the DV set is out of scope rather than an improvement.
**Identity is not publication:** a topic can be xplat and not reach the desktop platforms yet, so
where a page publishes never settles which population it is in. `check-doc-scope.mjs` enforces the
declaration and reports the disagreements; the `xplat-docs-json-snippets` skill is the working guide.

- **`llms.description`** already exists in both sets and is high-value — write it as a crisp,
self-contained answer sentence that **defines the component (or concept), never the page**: subject
noun names the product and component, no pronouns, no "This topic shows…". It is *not* optional
Expand Down Expand Up @@ -466,6 +488,15 @@ audits the body side.
document a difference that doesn't exist; replace them with **one two-column table:
variable · what it changes**. Don't add a defaults column either — defaults vary per theme and
belong to the generated API reference, and the durable content is the variable's name and effect.
- **An xplat (DV) topic states its component as a `json-snippet` by default.** Generation emits each
platform's own code from the product's description metadata, so the four to six copies cannot drift
apart and a property that does not exist cannot be published. A platform-specific snippet is
discouraged rather than banned: it stays the right tool where a definition genuinely cannot carry the
lesson — a data shape with no component in it, a namespace declaration, a package install, a step
only one platform family has — and the reason belongs wherever the change is recorded. **Web-only
topics are exempt**; a per-platform block there is not a defect. `docs/xplat/JSON-SNIPPETS.md` is normative and the
`xplat-docs-json-snippets` skill is the working guide. The rest of this bullet applies to the blocks
a topic still authors by hand — Angular's own topics, and the xplat sections a fence cannot state.
- **Audit & modernize inline code snippets — not the samples.** Fenced code blocks (` ```… ```
`) are authored in the topic, so verify and update them: no deprecated APIs or outdated framework
idioms (drop `standalone: true`; prefer Angular's built-in control flow `@if`/`@for` over
Expand Down
2 changes: 1 addition & 1 deletion .ai/skills/igniteui-topic-frontmatter/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ description: >-

# Ignite UI topic frontmatter

Version: v3 · 2026-08-14 · igniteui doc-skill set. All set files carry this version line; before
Version: v4 · 2026-08-31 · igniteui doc-skill set. All set files carry this version line; before
editing any file, confirm the lines match across the set. The `.claude` adapter's `description` must
byte-match this file's `description`. Change log: `.ai/skills/CHANGELOG.md` · human-readable intent:
`.ai/skills/README.md`.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Frontmatter audit rules

Version: v3 · 2026-08-14 · igniteui doc-skill set. Content carried from SKILL.md v2 unchanged;
Version: v4 · 2026-08-31 · igniteui doc-skill set. Content carried from SKILL.md v2 unchanged;
restructured into this reference so rules can evolve without touching the router. The normative
field contract lives in `../../igniteui-doc-topics/references/house-style.md` → "File format &
frontmatter"; where wording differs, house-style wins.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Audit report format and apply procedure

Version: v3 · 2026-08-14 · igniteui doc-skill set. Content carried from SKILL.md v2 unchanged.
Version: v4 · 2026-08-31 · igniteui doc-skill set. Content carried from SKILL.md v2 unchanged.

## Report format

Expand Down
22 changes: 18 additions & 4 deletions .github/AGENTS-README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,28 @@ This document describes the AI skills available in this repository, what each on

## Context

The MDX files under `docs/xplat/src/content/en/` are **shared across four platforms**: Angular, React, WebComponents, and Blazor. A single source file is built once per platform to produce four separate documentation sites. Two recurring tasks require specific knowledge to do correctly:
The MDX files under `docs/xplat/src/content/en/` are **shared across six platforms**: Angular, React, WebComponents, Blazor, WinUI, and Uno. A single source file is built once per platform to produce a separate documentation site each time, and `docs/xplat/src/content/jp/` mirrors the set.

1. **ApiLink** — inline API hyperlinks that resolve to the correct platform-specific TypeDoc URL at build time.
**Three populations live in that tree, and every page declares which it is** in its `platformType` frontmatter, which is required and has no default. **`xplat`** is the DV set — charts, gauges, maps, dashboard tile, data grid, spreadsheet, toolbar, zoom slider — where names in backticks resolve in full and a component is stated as a `json-snippet` unless a platform-specific snippet is genuinely necessary. **`xplat-unmapped`** is the same set where that treatment cannot be applied yet: the Excel library, whose API no generator describes, and the data grid's accessibility topic, whose XAML shape is undecided. **`web-only`** — inputs, layouts, notifications, scheduling, themes, the web grid families, grid lite — carries neither obligation and may do as it likes; reworking one to match the DV set is out of scope, not an improvement. Identity is not publication: a topic can be xplat and not reach the desktop platforms yet.

Three recurring tasks require specific knowledge to do correctly:

1. **ApiLink** — inline API hyperlinks that resolve to the correct platform-specific TypeDoc URL at build time, under the processing mode the page's `apiTerms` frontmatter declares.
2. **PlatformBlock** — a wrapper component that shows content only for the specified platform(s).
3. **json-snippet** — a component stated once as JSON, which generation turns into each platform's own code rather than a hand written block per platform.

The skills below are the canonical reference for both.
The skills below are the canonical reference for all three.

---

## Skills

| Skill | Use it for |
|---|---|
| [`xplat-docs-api-links`](./skills/xplat-docs-api-links/SKILL.md) | Adding, fixing, or auditing `<ApiLink>` calls in MDX files |
| [`xplat-docs-api-links`](./skills/xplat-docs-api-links/SKILL.md) | Adding, fixing, or auditing `<ApiLink>` calls in MDX files, and the `apiTerms` mode a page declares |
| [`xplat-docs-json-snippets`](./skills/xplat-docs-json-snippets/SKILL.md) | Writing or validating `json-snippet` fences — the JSON a component is stated in, and the checks over it |
| [`xplat-docs-platform-block`](./skills/xplat-docs-platform-block/SKILL.md) | Adding, fixing, or auditing `<PlatformBlock>` usage in MDX files |
| [`xplat-docs-api-map-sync`](./skills/xplat-docs-api-map-sync/SKILL.md) | Keeping the api maps in step with a product release |
| [`docfx-sync`](./skills/docfx-sync/SKILL.md) | Merging upstream igniteui-docfx changes and fixing MDX regressions |

---
Expand All @@ -34,6 +41,13 @@ The skills below are the canonical reference for both.
| Adding or updating the `## API References` section at the bottom of a page | `xplat-docs-api-links` |
| Working with excel library API links (`pkg="excel"`) | `xplat-docs-api-links` |
| Working with dock manager slot API links | `xplat-docs-api-links` |
| Showing a component's code on a page, or changing what a snippet shows | `xplat-docs-json-snippets` |
| Choosing between markup, code, a handler, or `channel="auto"` for a fence | `xplat-docs-json-snippets` |
| A platform showing a heading and prose with no code under it | `xplat-docs-json-snippets` |
| Running the schema, emission, casing or live-load checks before pushing | `xplat-docs-json-snippets` |
| A page that will not build for want of `apiTerms` | `xplat-docs-api-links` |
| An "Ambiguous API symbol" build failure asking for `pkg=` | `xplat-docs-api-links` |
| Updating the api maps after a product release | `xplat-docs-api-map-sync` |
| Wrapping a code block or prose section so it only appears on specific platforms | `xplat-docs-platform-block` |
| Checking that a file has no bare platform-specific code blocks | `xplat-docs-platform-block` |
| Investigating a PlatformBlock balance error (unmatched open/close tags) | `xplat-docs-platform-block` |
Expand Down
Loading
Loading