You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(mcp): build docs from igniteui-documentation - #1827
The MCP server's doc pipeline now builds from IgniteUI/igniteui-documentation. It replaces the two archived repos the pipeline used before: igniteui-docfx (Angular) and igniteui-xplat-docs (React / Web Components / Blazor). Both were archived on 2026-06-08.
Why: the pipeline still built from the frozen submodules, so no doc change made since June reached the MCP database. For example, the CLI MCP topics will never pick up resolve_import until this lands.
What changed
Submodules:angular/igniteui-docfx and common/igniteui-xplat-docs are replaced by one submodule, common/igniteui-documentation. It follows master, the production branch, through switch-submodules.sh.
New exporter:scripts/export-docs.ts --framework <fw> replaces the four export-*-docs.ts scripts.
It runs the docs repo's own generate scripts. These use Node built-ins only and need no npm install.
For Angular it also runs the sync step that copies shared pages from xplat.
It reads the framework's toc.json and writes the same flat .md files and TOC sidecar as before.
MDX conversion: new module scripts/lib/mdx-convert.ts. It converts the .mdx content back into the shape the existing pipeline steps were built around:
{Component*} and docConfig.json placeholders are resolved. This is a port of the docs site's vitePluginPlatformTokens, because generate.mjs leaves them in the shared grid pages.
<Sample src> becomes the <code-view> tag the inject scripts already parse, so sample injection is unchanged. Angular keeps the {environment:<base>} route URLs; the other frameworks use github-src.
<ApiLink> / <ApiRef> become mcp:get_api_reference links directly. Types missing from the bundled API data become code text.
<DocsAside> and <FaqItem> become plain markdown labels. Images, badges, MDX imports and {/* */} comments are dropped. Code fences are never touched.
Doc names stay stable for get_doc, aliases and baselines:
Angular pages that moved folders (inputs/badge, inputs/button-group, layouts/avatar) keep their old names.
pivotgrid/ still produces pivotGrid-… names.
React, Web Components and Blazor get a theming-grid → grid-theming-grid alias.
Submodule cleanup: the Angular sync step overwrites tracked files and adds untracked files in the submodule. The exporter undoes both, so the submodule can still be pulled.
CI (build-framework-docs action): every framework checks out the new submodule. The .NET setup and the gulp build:xplat-* step are removed.
Cleanup:
removed walkTocYaml, js-yaml and @types/js-yaml, since toc.yml no longer exists
the TOC tests now use walkTocJson
vite added as a dev dependency. vitest 5 requires it as a peer, and without it the MCP test suite already failed from a clean install on master.
Docs: updated CLAUDE.md and DEVELOPMENT.md, added knowledgebase entry 36, and marked xplat-docs-architecture.md as historical.
Not in this PR: the regenerated DB and baselines. The converted text differs from the old docfx/gulp output in nearly every file: the diff against docs_baseline/ reports every doc as changed. So the first run of build-docs-db in full mode recompresses all ~1,300 docs (a paid OpenAI batch). That run opens its own PR with the DB, baselines and group summaries.
Related Issue
Closes #
Type of Change
Bug fix (non-breaking change that fixes an issue)
New feature (non-breaking change that adds functionality)
Breaking change (fix or feature that would cause existing functionality to change)
I have built the project successfully (npm run build)
I have run the linter (npm run lint)
I have added/updated tests as needed
My changes do not introduce new warnings or errors
What was actually run:
npm run build: passes.
MCP vitest suite (npx vitest run in packages/igniteui-mcp/igniteui-doc-mcp): 409/409 pass, including 12 new mdx-convert tests.
npm run jasmine: 602 specs, 11 failures. They are the existing ng-schematics "Update X.Y.Z" migration failures that also happen on master; none involve the changed code.
npm run test was not run as a whole: its lint step crashes locally with an ajv error that also happens on master.
Lint: ESLint on the changed src/tools/doc-tools.ts is clean. The new script and test files fall under the repo's ESLint ignore patterns, like the existing pipeline scripts.
Typecheck:export-docs.ts passes tsc --strict.
Additional Context
Local dry run of export → inject → rewrite, against igniteui-documentation@master (d9cac9d, 2026-09-25):
Framework
Docs exported
Baseline today
Samples injected
API links resolved
Angular
376
376
1035 (4 warnings, same 4 as today)
59%
React
294
287
774 (22 dropped)
55%
Web Components
300
299
812 (21 dropped)
85%
Blazor
281
270
763 (19 dropped)
98%
Every TOC entry was found. No {…} placeholders or MDX tags are left in the output.
Dropped samples: most are samples the docs reference that exist upstream but not in my local examples checkouts, which are from July. Examples are inputs/badge/*, layouts/avatar/* and inputs/chip/outlined. CI moves the examples submodules to their latest commit, so these should resolve there. A few, such as grids/*/row-drag-to-grid, are missing upstream too.
Unresolved API links are chart, map and spreadsheet types (CategoryChart, DataChart, GeographicMap, …). Their packages aren't in the bundled API data, so they become code text instead of links.
Follow-ups
Run build-docs-db in full mode on this branch and review the result before merging. Run validate:<fw> on a sample, because compression hasn't seen the new input shape (**Note:** labels, llms.description frontmatter, mcp: links).
Ask the docs team to keep generate.mjs, sync-generated.mjs and the token pass stable. Also report the Angular sync step overwriting layouts/avatar.mdx and the docs that reference missing samples.
Document resolve_import and the MCP registry listings in the docs repo's cli-mcp.mdx, so they reach the DB.
Two broken aliases that predate this PR are left alone. Angular range-slider points to a missing slider doc (the real one is slider-slider). Blazor has zoom-slider aliases for a doc it doesn't have.
The new theming-grid aliases are untested even though applyDocAlias has direct per-framework coverage in src/__tests__/tools/doc-tools.test.ts:187-252. Add assertions for React, Web Components, and Blazor so this compatibility mapping cannot silently regress.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The MCP server's doc pipeline now builds from IgniteUI/igniteui-documentation. It replaces the two archived repos the pipeline used before: igniteui-docfx (Angular) and igniteui-xplat-docs (React / Web Components / Blazor). Both were archived on 2026-06-08.
Why: the pipeline still built from the frozen submodules, so no doc change made since June reached the MCP database. For example, the CLI MCP topics will never pick up
resolve_importuntil this lands.What changed
angular/igniteui-docfxandcommon/igniteui-xplat-docsare replaced by one submodule,common/igniteui-documentation. It followsmaster, the production branch, throughswitch-submodules.sh.scripts/export-docs.ts --framework <fw>replaces the fourexport-*-docs.tsscripts.npm install.toc.jsonand writes the same flat.mdfiles and TOC sidecar as before.scripts/lib/mdx-convert.ts. It converts the.mdxcontent back into the shape the existing pipeline steps were built around:{Component*}anddocConfig.jsonplaceholders are resolved. This is a port of the docs site'svitePluginPlatformTokens, becausegenerate.mjsleaves them in the shared grid pages.<Sample src>becomes the<code-view>tag the inject scripts already parse, so sample injection is unchanged. Angular keeps the{environment:<base>}route URLs; the other frameworks usegithub-src.<ApiLink>/<ApiRef>becomemcp:get_api_referencelinks directly. Types missing from the bundled API data become code text.<DocsAside>and<FaqItem>become plain markdown labels. Images, badges, MDX imports and{/* */}comments are dropped. Code fences are never touched.get_doc, aliases and baselines:inputs/badge,inputs/button-group,layouts/avatar) keep their old names.pivotgrid/still producespivotGrid-…names.theming-grid→grid-theming-gridalias.build-framework-docsaction): every framework checks out the new submodule. The .NET setup and the gulpbuild:xplat-*step are removed.walkTocYaml,js-yamland@types/js-yaml, sincetoc.ymlno longer existswalkTocJsonviteadded as a dev dependency. vitest 5 requires it as a peer, and without it the MCP test suite already failed from a clean install on master.CLAUDE.mdandDEVELOPMENT.md, added knowledgebase entry 36, and markedxplat-docs-architecture.mdas historical.Not in this PR: the regenerated DB and baselines. The converted text differs from the old docfx/gulp output in nearly every file: the diff against
docs_baseline/reports every doc as changed. So the first run ofbuild-docs-dbin full mode recompresses all ~1,300 docs (a paid OpenAI batch). That run opens its own PR with the DB, baselines and group summaries.Related Issue
Closes #
Type of Change
Affected Packages
igniteui-cli(packages/cli)@igniteui/cli-core(packages/core)@igniteui/angular-templates(packages/igx-templates)@igniteui/angular-schematics(packages/ng-schematics)@igniteui/mcp-server(packages/igniteui-mcp)Checklist
npm run test)npm run build)npm run lint)What was actually run:
npm run build: passes.npx vitest runinpackages/igniteui-mcp/igniteui-doc-mcp): 409/409 pass, including 12 newmdx-converttests.npm run jasmine: 602 specs, 11 failures. They are the existing ng-schematics "Update X.Y.Z" migration failures that also happen on master; none involve the changed code.npm run testwas not run as a whole: its lint step crashes locally with an ajv error that also happens on master.src/tools/doc-tools.tsis clean. The new script and test files fall under the repo's ESLint ignore patterns, like the existing pipeline scripts.export-docs.tspassestsc --strict.Additional Context
Local dry run of export → inject → rewrite, against
igniteui-documentation@master(d9cac9d, 2026-09-25):{…}placeholders or MDX tags are left in the output.inputs/badge/*,layouts/avatar/*andinputs/chip/outlined. CI moves the examples submodules to their latest commit, so these should resolve there. A few, such asgrids/*/row-drag-to-grid, are missing upstream too.CategoryChart,DataChart,GeographicMap, …). Their packages aren't in the bundled API data, so they become code text instead of links.Follow-ups
build-docs-dbin full mode on this branch and review the result before merging. Runvalidate:<fw>on a sample, because compression hasn't seen the new input shape (**Note:**labels,llms.descriptionfrontmatter,mcp:links).generate.mjs,sync-generated.mjsand the token pass stable. Also report the Angular sync step overwritinglayouts/avatar.mdxand the docs that reference missing samples.resolve_importand the MCP registry listings in the docs repo'scli-mcp.mdx, so they reach the DB.range-sliderpoints to a missingsliderdoc (the real one isslider-slider). Blazor has zoom-slider aliases for a doc it doesn't have.