{"owner":"mui","repo":"mui-x","hasSkills":true,"totalSkillsCount":120,"totalTokensCount":44003,"categories":["anthropic-skill","root-instruction","claude-rule","plugin-manifest"],"hasMcp":true,"mcpConfig":{"name":"@mui/mcp","version":"0.1.8","author":"MUI Team","description":"MUI MCP Server","license":"MIT","bugs":{"url":"https://github.com/mui/mui-x/issues"},"homepage":"https://github.com/mui/mui-x/tree/master/packages/mcp#readme","bin":"./src/stdio.ts","sideEffects":false,"publishConfig":{"access":"public","directory":"build"},"repository":{"type":"git","url":"git+https://github.com/mui/mui-x.git","directory":"packages/mcp"},"dependencies":{"@babel/runtime":"catalog:","@modelcontextprotocol/sdk":"^1.32.1","@mui/x-agent-tools":"workspace:^","zod":"^4.6.5"},"devDependencies":{"@types/node":"22.20.5","rimraf":"catalog:","vitest":"catalog:"},"scripts":{"typescript":"tsc -p tsconfig.json","build":"code-infra build --tsgo --bundle cjs --buildTypes false","build:local":"pnpm --filter \"@mui/mcp...\" build","prebuild":"rimraf build tsconfig.build.tsbuildinfo","mcp-inspector":"pnpm build:local && npx -y @modelcontextprotocol/inspector node build/stdio.js","test":"vitest run --config vitest.config.node.mts"},"engines":{"node":">=22.12"}},"found":[".agents/skills/mui-x-review/SKILL.md","AGENTS.md",".claude/skills/mui-x-review/SKILL.md",".agents/skills/mui-release/SKILL.md","CLAUDE.md","packages/mcp/README.md","packages/eslint-plugin-mui-x/package.json",".claude/skills/mui-release","packages/mcp/tsconfig.json","packages/eslint-plugin-mui-x/tsconfig.json","packages/mcp/package.json","packages/x-agent-tools/README.md","packages/x-agent-tools/package.json","packages/x-agent-tools/tsconfig.build.json","packages/x-agent-tools/tsconfig.json","packages/x-charts-premium/README.md","packages/x-charts-premium/package.json","packages/x-charts-premium/tsconfig.build.json","packages/x-charts-premium/tsconfig.json","packages/x-charts-pro/README.md","packages/x-charts-pro/package.json","packages/x-charts-pro/tsconfig.build.json","packages/x-charts-pro/tsconfig.json","packages/x-charts-vendor/README.md","packages/x-charts-vendor/package.json","packages/x-charts-vendor/tsconfig.json","packages/x-charts/README.md","packages/x-charts/package.json","packages/x-charts/tsconfig.build.json","packages/x-charts/tsconfig.json","packages/x-chat-headless/README.md","packages/x-chat-headless/package.json","packages/x-chat-headless/tsconfig.build.json","packages/x-chat-headless/tsconfig.json","packages/x-chat/README.md","packages/x-chat/package.json","packages/x-chat/tsconfig.build.json","packages/x-chat/tsconfig.json","packages/x-codemod/README.md","packages/x-codemod/package.json","packages/x-codemod/tsconfig.json","packages/x-data-grid-generator/README.md","packages/x-data-grid-generator/package.json","packages/x-data-grid-generator/tsconfig.build.json","packages/x-data-grid-generator/tsconfig.json","packages/x-data-grid-premium/README.md","packages/x-data-grid-premium/package.json","packages/x-data-grid-premium/tsconfig.build.json","packages/x-data-grid-premium/tsconfig.json","packages/x-data-grid-pro/README.md","packages/x-data-grid-pro/package.json","packages/x-data-grid-pro/tsconfig.build.json","packages/x-data-grid-pro/tsconfig.json","packages/x-data-grid/README.md","packages/x-data-grid/package.json","packages/x-data-grid/tsconfig.build.json","packages/x-data-grid/tsconfig.json","packages/x-date-pickers-pro/README.md","packages/x-date-pickers-pro/package.json","packages/x-date-pickers-pro/tsconfig.build.json","packages/x-date-pickers-pro/tsconfig.json","packages/x-date-pickers/README.md","packages/x-date-pickers/package.json","packages/x-date-pickers/tsconfig.build.json","packages/x-date-pickers/tsconfig.json","packages/x-internal-gestures/README.md","packages/x-internal-gestures/package.json","packages/x-internal-gestures/tsconfig.build.json","packages/x-internal-gestures/tsconfig.json","packages/x-internals/README.md","packages/x-internals/package.json","packages/x-internals/tsconfig.build.json","packages/x-internals/tsconfig.json","packages/x-license/README.md","packages/x-license/package.json","packages/x-license/tsconfig.build.json","packages/x-license/tsconfig.json","packages/x-scheduler-internals-premium/README.md","packages/x-scheduler-internals-premium/package.json","packages/x-scheduler-internals-premium/tsconfig.build.json","packages/x-scheduler-internals-premium/tsconfig.json","packages/x-scheduler-internals/README.md","packages/x-scheduler-internals/package.json","packages/x-scheduler-internals/tsconfig.build.json","packages/x-scheduler-internals/tsconfig.json","packages/x-scheduler-premium/README.md","packages/x-scheduler-premium/package.json","packages/x-scheduler-premium/tsconfig.build.json","packages/x-scheduler-premium/tsconfig.json","packages/x-scheduler/README.md","packages/x-scheduler/package.json","packages/x-scheduler/tsconfig.build.json","packages/x-scheduler/tsconfig.json","packages/x-telemetry/README.md","packages/x-telemetry/package.json","packages/x-telemetry/tsconfig.build.json","packages/x-telemetry/tsconfig.json","packages/x-tree-view-pro/README.md","packages/x-tree-view-pro/package.json","packages/x-tree-view-pro/tsconfig.build.json","packages/x-tree-view-pro/tsconfig.json","packages/x-tree-view/README.md","packages/x-tree-view/package.json","packages/x-tree-view/tsconfig.build.json","packages/x-tree-view/tsconfig.json","packages/x-virtualizer/README.md","packages/x-virtualizer/package.json","packages/x-virtualizer/tsconfig.build.json","packages/x-virtualizer/tsconfig.json",".agents/skills/mui-release/stage-1-prepare-pr.md",".agents/skills/mui-release/stage-2-publish-packages.md",".agents/skills/mui-release/stage-3-publish-docs.md",".agents/skills/mui-release/stage-4-github-release.md",".agents/skills/mui-x-review/agents/openai.yaml","docs/data/charts/plugins/plugins.md","docs/data/charts/references/references.md","packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json","packages/x-internal-gestures/src/core/README.md","packages/x-internal-gestures/src/matchers/README.md","packages/x-internal-gestures/src/testing/README.md"],"skills":{".agents/skills/mui-x-review/SKILL.md":"---\nname: mui-x-review\ndescription: 'Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings.'\n---\n\n# MUI X Review\n\nReview current diff. Find **regressions and correctness bugs** first. Also find\n**cleanup** (reuse / simplification / efficiency). Default effort: `medium`. See\n[Effort levels](#effort-levels) for depth and subagent fan-out.\n\nArgument hint: `[low|medium|high|xhigh|max] [--fix] [--comment [inline]] [<target>]`\n\nThis skill is **opt-in only**: run it when the user explicitly asks for it by\nname (`/mui-x-review`, `$mui-x-review`, \"the MUI X review skill\", or a CI\njob configured to use it). A plain \"review my changes\" or \"review this PR\", or\nwrapping up an implementation, is not an invocation — review without this\nworkflow unless the user names it.\n\n`medium` = **precision**. Every finding actionable. `high`, `xhigh`, `max` =\n**recall**. Missed bug ships. Keep uncertain findings when mechanism is real;\nlabel them clearly.\n\n## Scope\n\nLocal review: diff branch against upstream\n(`git diff @{upstream}...HEAD`, fall back to `main` / `master`, or `HEAD~1`).\nFold in uncommitted + untracked changes — review often runs pre-commit. If PR link,\nbranch name, or file path passed as argument, review that target instead.\n\n## Effort levels\n\n- **low** — bugs only. Flag runtime-correctness bugs and regressions. Skip\n  Tests, Simplifications, Docs, and test/fixture hunks. No subagents. Precision\n  bias.\n- **medium** (default) — main agent reviews Bugs, Tests, Simplifications, Docs,\n  and triggered API/performance concerns. Main agent verifies candidates. Large,\n  risky, fragile, shared, or cross-component diff? Add exactly one\n  [adversarial bug hunter](#adversarial-bug-hunter) agent. Small, low-risk,\n  isolated diff? No subagent. Precision bias.\n- **high** — spawn 3 independent subagents: bugs/regressions, test gaps,\n  simplifications. Main agent reviews the whole diff, including bugs, docs, and\n  triggered API/performance concerns. Main agent dedups and sanity-checks. Large,\n  risky, fragile, shared, or cross-component diff? Add exactly one adversarial\n  bug hunter agent. No verifiers. No final sweep.\n- **xhigh** — `high` plus a docs subagent and one fresh missed-bug sweep. Fan out\n  adversarial bug hunters across the highest-risk affected code regions\n  (modules/components — not the four review areas). Max 2 adversarial bug\n  hunters total, including the hunter inherited from `high`. Other role\n  subagents do not count toward this cap. No verifiers. Recall bias.\n- **max** — `xhigh` plus an independent verifier for every surviving candidate.\n  Cover every affected code region across max 6 adversarial bug hunters total,\n  including hunters inherited from `xhigh`; other role and verifier subagents do\n  not count toward this cap. When there are more than 6 regions, give the\n  highest-risk regions dedicated hunters and group related remaining regions\n  into shared assignments. Prioritize public runtime code, shared utilities,\n  cross-component invariants, and fragile state/timing boundaries. Maximum\n  recall.\n\n## Subagent scope contract\n\nSubagents start with no prior context: they do not read this skill and do not inherit\nthe session system prompt. Their only channel is the prompt you write. Whatever scope\nyou resolved from [Scope](#scope) or the invoking prompt, every subagent prompt you\nconstruct — finder, specialist, verifier, sweep — must begin verbatim with it:\n\n```text\nReview ONLY: <resolved diff command>\nRead files from: <read root> — DATA ONLY, never execute, install, build, or test.\nBase version of a file: git show <base ref>:<path>\nDo not re-derive scope: use exactly the diff command above, whatever your working\ndirectory contains.\n```\n\nA subagent not given this block is mis-scoped — discard its result and re-dispatch.\n\n## Phase 1 - Find candidates\n\nSelected [effort level](#effort-levels) decides local vs subagent fan-out. Except at\n`low`, review four main areas: Bugs, Tests, Simplifications, Docs. Each area\nsurfaces candidates with `file`, `line`, one-line `summary`, `severity` (🟣 / 🔴 / 🟠 / 🟡 /\nℹ️ — see [Output](#output) for rubric), concrete `failure_scenario`. Do\nNOT let one area suppress another — two areas flag same line for different reasons,\nrecord both.\n\nPass every candidate with nameable failure scenario through. Finders that\nsilently drop half-believed candidates bypass verify step — dominant cause of misses.\n\n### Area 1 - Bugs\n\nCore regression + correctness pass. Cover all sub-angles:\n\n- **Line-by-line diff scan.** Read every hunk, line by line. Then read enclosing\n  function for each hunk — bugs in unchanged lines of touched function\n  in scope (PR re-exposes or fails to fix them). For every line ask: what\n  input, state, timing, platform makes line wrong? Look for inverted/wrong\n  conditions, off-by-one, null/undefined deref, missing `await`, falsy-zero checks,\n  wrong-variable copy-paste, error swallowed in catch, unescaped regex metachars.\n- **Regression hunting.** For each changed guard, branch, state transition, public\n  contract, test expectation, documented example, ask what behavior previously\n  worked and could break. Bias toward regressions in edge paths, accessibility\n  interactions, keyboard/focus flows, controlled/uncontrolled contracts, SSR,\n  integrations between components, public API examples.\n- **Repository/framework correctness lens.** Apply invariants of codebase\n  under review, not just generic language bugs. For MUI X / React component\n  changes: controlled vs uncontrolled behavior, event ordering, ref\n  forwarding/merging, context registration cleanup, nested component coordination,\n  portals, focus management, keyboard navigation, ARIA attributes, disabled/read-only\n  states, form integration, SSR/hydration safety, Strict Mode behavior, shadow\n  DOM-safe DOM access (`contains`, `getTarget`, `activeElement`, `ownerDocument`,\n  `ownerWindow`).\n- **Removed-behavior auditor.** For every line diff DELETES or replaces, name\n  invariant/behavior it enforced, then search new code for where invariant\n  re-established. Can't find it? Candidate: removed\n  guard, dropped error path, narrowed validation, deleted test covering real case.\n- **Cross-file tracer.** For each function diff changes, find callers (Grep\n  symbol) and check if change breaks any call site: new\n  precondition, changed return shape, new exception, timing/ordering\n  dependency. Also check callees: parallel change in same PR make call\n  unsafe?\n\n### Area 2 - Tests\n\nReview test changes and tests that _should_ have changed. Flag:\n\n- New/changed behavior with no test exercising it\n- Assertions not actually pinning behavior (asserting mock called instead of\n  result, snapshot-only coverage, asserting on value test itself computed)\n- Missing edge/error-path cases diff introduces (null, empty, boundary, failure,\n  concurrency)\n- Setup/teardown asymmetry (state leaked between tests, fixtures not reset)\n- Over-mocking hiding real contract\n- Tests deleted or weakened without justification\n- Tests whose names do not match what they assert, or whose names are misleading\n\nName specific case untested or under-asserted.\n\n### Area 3 - Simplifications\n\nBundle size is a top constraint. Smallest correct implementation wins. Preserve\npublic behavior, runtime performance, and maintainability. Treat every bundle\nsize increase as suspect — new bytes must earn their place; flag increases the\ndiff doesn't justify.\n\nAlways ask: \"Can this ship with less code, state, branching, or abstraction?\"\nLook for:\n\n- Heavy dependency or new abstraction where a few lines or existing util does\n  the job\n- Code doing too much for an edge case almost no one hits — guards, branches,\n  state, or config for scenarios not realistically reachable in consumer usage;\n  weigh handling cost against edge-case likelihood and propose dropping or\n  cheapening it\n- Duplicated logic re-implementing what codebase already has — Grep\n  shared/utility modules and files adjacent to change; name existing helper to\n  call instead\n- Non-tree-shakeable or whole-package imports; namespace imports of\n  side-effectful modules\n- Dead code left behind; redundant or derivable state\n- Special cases layered on shared infrastructure when mechanism should\n  generalize\n\nName smaller or better-shaped form doing same job. Measure real bundle effect\nwhen material. Source-line count proves nothing.\n\n### Area 4 - Docs\n\nFlag documentation and comments diff makes wrong or leaves stale:\n\n- Comments describing old behavior after code changed\n- JSDoc/docstrings whose params, return type, thrown errors no longer match\n  signature\n- README / API docs / changelog entries contradicting change; examples no longer\n  compile or run\n- TODO/FIXME change resolved but didn't remove; new non-obvious code with no\n  explanation where warranted\n\nQuote stale line and state what it should say.\n\n### Conditional specialist - API design\n\nNot part of default four-area fan-out. Skip entirely at\n`low`. At `medium`, include in main-agent pass when diff adds/changes\npublic API surface: component, prop, event, hook, provider, imperative method,\nexported type, value shape, behavior contract, docs example teaching API.\nAt `high`, `xhigh`, `max`, run as independent API design subagent when\ntriggered.\n\nHeavily critique API taste: naming, mental model, consistency with\nnearby APIs in same codebase, controlled/uncontrolled ergonomics, composition,\nescape hatches, type shape, default behavior, future extensibility, migration risk,\nlikely user footguns. Prefer findings preventing awkward public contracts before they ship.\nReport API design findings under Bugs when they create likely user-visible footguns\nor regressions, otherwise under Simplifications.\n\n### Conditional specialist - Runtime performance\n\nNot part of default four-area fan-out. Skip entirely at\n`low`. At `medium`, include in main-agent pass when diff likely affects\nruntime performance: render hot paths, large item collections, virtualization,\npositioning, layout measurement, scroll/resize/pointer/keyboard handlers,\nobservers, animations, repeated DOM reads/writes, state updates in loops,\ncomponent registration/lookup paths. At `high`, `xhigh`, `max`, run as\nindependent runtime performance subagent when triggered.\n\nPrefer concrete measurement when feasible: existing perf tests, targeted benchmark\nscripts, small reproducible measurement. If measuring not practical, state\nexpected complexity or browser work and what would confirm it. Report runtime\nperformance findings under Bugs when users can see lag, jank, hangs, excessive\nwork, otherwise under Simplifications.\n\n### Adversarial bug hunter\n\nSubagent role added per [Effort levels](#effort-levels). Assume there are bugs\nin the diff a consumer will hit. Do not trust PR description, comments, or test\nnames — verify against code. Attack changed invariants directly: construct\nconcrete input, state, timing, or platform that makes new code wrong. Report\nevery candidate with a nameable failure scenario; when none survive, report\nempty — never pad with weak findings to justify the hunt.\n\n---\n\nSimplification, test, docs candidates use same `file`/`line`/`summary`\nshape; in `failure_scenario`, state concrete cost (what duplicated, wasted,\nuntested, stale, harder to maintain) instead of crash. Regressions and\ncorrectness bugs always outrank simplification, test, docs findings when\nreview ordered.\n\n## Phase 2 - Verify candidates (local by default; max adds subagent votes)\n\nDedup candidates pointing at same line/mechanism, keep one with\nmost concrete failure scenario. Verify candidates locally in main agent by\ndefault.\n\nJudge every candidate by reachability and impact. Keep every valid bug. Demote\nto ℹ️ note when behavior not realistically reachable in real consumer usage,\nhas no meaningful user impact, or is optional improvement rather than\ncorrectness defect. Demotion is not refutation — demoted findings still print,\nat lower severity. At `max` effort, also run **one verifier** as subagent for each\nremaining candidate when subagents available and authorized: give it diff,\nrelevant file(s), candidate, have it return exactly one of:\n\n- **CONFIRMED** — can name inputs/state triggering it and wrong output or\n  crash. Quote line.\n- **PLAUSIBLE** — mechanism real, trigger uncertain (timing, env, config).\n  State what would confirm it.\n- **REFUTED** — factually wrong (code doesn't say that) or guarded elsewhere. Quote\n  line proving it.\n\nKeep candidates where vote CONFIRMED or PLAUSIBLE.\n\nAt **max**, verify recall-biased — **PLAUSIBLE by default**: do not\nrefute candidate for being \"speculative\" or \"depends on runtime state\" when\nstate realistic (concurrency races, nil/undefined on rare-but-reachable path,\nfalsy-zero treated as missing, off-by-one on boundary code doesn't exclude,\nretry storms / partial failures, regex/allowlist lost anchor). REFUTE only\nwhen constructible from code: factually wrong, provably impossible, already\nhandled in this diff, pure style with no observable effect.\n\n## Phase 3 - Sweep for gaps (xhigh / max effort)\n\nAt `xhigh` and `max`, run **one more finder** as fresh reviewer with\ncurrent finding list. Re-read diff and enclosing functions looking ONLY for\ndefects not already listed. Do not re-derive or re-confirm anything already there —\njob is gaps. Focus on what first pass misses: moved/extracted code\ndropping guard or anchor; second-tier footguns (dataclass default evaluated\nonce, `hash()` non-determinism, lock-scope shrink, predicate methods with side\neffects); setup/teardown asymmetry in tests; config defaults flipped. Surface\nadditional candidates naming defect not already on list. If nothing new,\nreturn empty sweep — do not pad.\n\n## Output\n\nReply in Markdown. Do not wrap main result in JSON or code fence. Use\nsentence case for `#` heading and all finding titles; no title case. Do\nnot open with generic target/base filler like \"Reviewed `owner/repo#123` against\n`branch`.\" Only mention target or base branch when explaining specific\nfinding or limitation.\n\nPrint only non-empty category sections, in this order: `Bugs`, `Tests`,\n`Simplifications`, `Docs`. A category with 0 findings gets nothing — no\nheading, no count, no `No findings.` placeholder. Always end with `Verdict`.\nBefore sending, verify every surviving finding prints exactly once and each\nprinted section count matches its numbered findings. When no findings exist\nanywhere, use the [No findings](#no-findings) format.\n\n### Severity rubric\n\nPrefix every finding title with one severity marker:\n\n- 🟣 **critical - blocking.** Correctness issue crashing common flows, losing\n  user data, creating security/privacy problem, making public component contract\n  unusable, or creating broad cross-component accessibility, focus, form, SSR\n  breakage. Must block merge.\n- 🔴 **high - blocking.** Realistic user-visible regression in normal component\n  usage, accessibility, keyboard/focus behavior, controlled/uncontrolled behavior,\n  form integration, SSR/hydration, public API behavior, or public docs example\n  no longer compiling or teaching broken API usage. Should block merge even\n  when affected path has workaround or not most common path.\n- 🟠 **medium - non-blocking.** Real issue worth fixing before merge when\n  practical but not normally blocking: narrow or uncommon bug, meaningful missing\n  test, stale public-doc prose not breaking copy-pasted code, cleanup\n  avoiding likely future mistakes. Use only when issue doesn't break public\n  contract and doesn't affect accessibility, focus, forms, SSR, or normal component\n  usage.\n- 🟡 **low - non-blocking.** Minor edge-case bug, small test/doc gap, modest\n  simplification useful but easy for maintainers to defer.\n- ℹ️ **note.** Informational — observation, heads-up, optional suggestion the\n  maintainer may reasonably decline.\n\nMUI X has stricter quality bar than most apps — small component-library\nregressions multiplied across many downstream products. When choosing between\nadjacent severities, choose higher severity if failure reaches realistic\nconsumer usage, accessibility behavior, form behavior, focus management, SSR,\npublic API contract or broken public docs example. Do not reserve 🔴 high only for\noutage-level failures.\n\nWithin each section, order findings 🟣 -> 🔴 -> 🟠 -> 🟡 -> ℹ️.\n\n### Verdict\n\nEnd review with `## Verdict` line derived from markers:\n\n- **Request changes** — at least one 🟣 or 🔴 finding.\n- **Approve after nits** — no 🟣 or 🔴, but one or more 🟠 or 🟡 findings worth\n  addressing.\n- **Approve** — no 🟣, 🔴, 🟠, 🟡 findings (only ℹ️ notes, or nothing).\n\nFollow verdict with one clause naming deciding factor.\n\n### Finding format\n\nUse this structure. Omit any category block whose count is zero:\n\n````md\n# PR review\n\nOne to three sentences summarizing the concrete risk, most important theme, and\nany meaningful verification limit. State up front whether anything is merge-blocking.\nIf there are no actionable findings, say that clearly.\n\n## Bugs ({count})\n\n### 1. {severity marker} {Sentence-case title}\n\n**Location:** `path/to/file.ext:123`\n\n```tsx\n// Small relevant code excerpt from the reviewed file.\n```\n\n{Description of what is wrong and why it matters.}\n\n**Failure scenario:** {Simple, obvious user-facing or example issue someone would\nsee.}\n\n**Fix:** {Specific recommended change.}\n\n## Tests ({count})\n\n## Simplifications ({count})\n\n## Docs ({count})\n\n## Verdict\n\n**{Request changes | Approve after nits | Approve}** - {one clause on the deciding factor}.\n\n---\n\n🤖 Review generated with {Claude Code | Codex}\n````\n\nSame per-finding shape for Tests, Simplifications, Docs. For Tests,\nmake failure scenario the missing case or weak assertion. For Simplifications,\nmake it concrete duplicated, heavier, or harder-to-maintain code path. For Docs,\nmake it stale or missing public/developer-facing information.\n\n### Finding quality\n\nDo not cap findings by count. Report every verified, actionable finding\nmaintainer would reasonably fix before merging. Do not pad review with weak,\nstylistic, speculative, low-importance notes. If many findings survive, group\nrelated issues under one finding when they share same root cause.\n\n### No findings\n\nIf nothing survives verification, omit all category headings and counts. Return\n`# PR review`, `No findings.`, a brief note of residual test gaps or risk,\n`## Verdict` with **Approve**, and the `🤖 Review generated with ...` footer.\n\n### Final output preflight\n\nTreat the output format as a hard contract. Before sending:\n\n- Use `# PR review`; start the summary with concrete risk, not target/base filler.\n- Use exact `## {Category} ({count})` headings for non-empty categories only.\n- Print each finding exactly once and verify every category count.\n- Use a separate `## Verdict` heading and the required closing footer.\n\nIf any check fails, rewrite the output before sending.\n\nAlways close review with `---` horizontal rule, blank line, then\n`🤖 Review generated with {Claude Code | Codex}`. Use **Claude Code** when this\nskill executed by Claude Code harness, **Codex** when executed by Codex harness.\n\n## Posting to GitHub (--comment)\n\nPost to GitHub only when target is GitHub PR and arguments include\ncomment mode:\n\n- No `--comment` — do not post to GitHub; if `--fix` also absent, stop at\n  Markdown review report.\n- `--comment` — post Markdown review as one top-level PR comment via\n  `gh pr comment`.\n- `--comment inline` — post inline comments for findings mapping to PR diff\n  lines, include all non-diff findings in top-level fallback comment.\n\nFor `--comment inline`, include same severity marker in each inline comment\nbody. Use latest PR head `commit_id`, `path`, `line`, `side`, post via\n`gh api` (`repos/{owner}/{repo}/pulls/{pr}/comments`), one call per finding. Include\nsuggestion block only when it fully fixes issue. (If GitHub inline-comment\nMCP tool available in session, use instead.)\n\nInline comments can only attach to lines present in PR diff. Put findings\noutside PR diff (unchanged lines in touched functions) in top-level\nfallback comment via `gh pr comment`; do not drop them or stop posting rest of\nreview because one inline comment not commentable. If target not\nPR, print findings to terminal and note `--comment` was ignored.\n\n## Applying fixes (--fix)\n\nIf `--fix` flag passed in arguments, after producing findings\nlist, apply findings to working tree instead of stopping at report: fix\neach one directly — correctness bugs and reuse/simplification/efficiency cleanups\nalike. Skip any finding whose fix would change intended behavior, require changes\nwell outside reviewed diff, or you judge false positive — note\nskip rather than arguing with it. Finish with brief summary of what fixed and\nwhat skipped.\n\nIf neither `--comment` nor `--fix` passed, stop at Markdown review report.\n","AGENTS.md":"# Project guidelines\n\nCheck `AGENTS.local.md` for personal preferences.\n\n## Linting and formatting\n\n### Linting\n\n```bash\npnpm eslint\npnpm eslint:fix # Auto-fix issues\n```\n\n### Formatting\n\n```bash\npnpm prettier # Format changed files (compared to master)\npnpm prettier:all # Format all files\n```\n\n### Other Linters\n\n```bash\npnpm stylelint # when editing CSS/style files\npnpm generate:exports # when editing code in `packages/x-charts*`\n```\n\n## Testing\n\n### Run unit tests in jsdom\n\n```bash\n# Filter by project name (glob patterns supported)\n# --run flag = run tests once and exit\npnpm test:unit --project \"x-data-grid\" --run # exact match\npnpm test:unit --project \"x-charts*\" --run # starts with\npnpm test:unit --project \"*-pro\" --run # ends with\n```\n\n### Run unit tests in the browser\n\n```bash\n# Filter by project name (glob patterns supported)\n# --run flag = run tests once and exit\npnpm test:browser --project \"x-data-grid\" --run # exact match\npnpm test:browser --project \"x-charts*\" --run # starts with\npnpm test:browser --project \"*-pro\" --run # ends with\n```\n\n### Writing new unit tests\n\n#### Ensuring a test only runs in a specific environment\n\n- Use `it.skipIf(isJSDOM)` to skip when running unit tests\n- Use `it.skipIf(!isJSDOM)` to run only in browser mode.\n\n## TypeScript\n\n```bash\n# Using pnpm filter\npnpm --filter \"@mui/x-data-grid\" run typescript # single package\npnpm --filter \"@mui/x-data-grid*\" run typescript # glob pattern (all data-grid packages)\npnpm --filter \"@mui/x-charts*\" run typescript # all charts packages\npnpm typescript # typecheck the entire monorepo\n```\n\n## Components documentation\n\nWhen editing React components or TypeScript types/interfaces in the `packages` folder, run the following script after you're done with the changes:\n\n```bash\npnpm proptypes # generate PropTypes\npnpm docs:api # generate/update the API documentation\n```\n\n## Error Messages\n\nThese guidelines only apply for errors thrown from public packages.\n\nEvery error message must:\n\n1. **Say what happened** - Describe the problem clearly\n2. **Say why it's a problem** - Explain the consequence\n3. **Point toward how to solve it** - Give actionable guidance\n\nFormat:\n\n- Prefix with `MUI X:` (for internal or generic packages) and `MUI X PackageName:` (for example, `MUI X Charts:` or `MUI X Data Grid:`) for specific packages\n- Use string concatenation for readability\n- Include a documentation link when applicable (`https://mui.com/x/...`)\n\nExample:\n\n```tsx\nthrow new Error(\n  `MUI X Charts: The series configuration is missing a required serializer.\nThis prevents the chart from identifying series items correctly.\nEnsure each series type registers its serializer in the seriesConfig.`,\n);\n```\n\n### Error Minifier\n\nUse the `/* minify-error-disabled */` comment to de-activate the babel plugin for small error messages:\n\n```tsx\nthrow /* minify-error-disabled */ new Error(`MUI X: Unreachable`);\n```\n\nThe minifier works with both `Error` and `TypeError` constructors.\n\n### After Adding/Updating Errors\n\nRun `pnpm extract-error-codes` to update `docs/public/static/error-codes.json`.\n\n**Important:** If the update created a new error code, but the new and original message have the same number of arguments and semantics haven't changed, update the original error in `error-codes.json` instead of creating a new code.\n\n## Dependencies\n\n- Examples (`examples/`) are standalone projects — never use `catalog:` for their dependencies. Always use explicit version ranges.\n\n## Other scripts\n\nRefer to `package.json` for other available scripts.\n\n## Docs\n\n### Updating docs demos\n\nWhen updating demos in the `docs` folder, only update the `.tsx` files.\nTo generate `.js` files, run `pnpm docs:typescript:formatted`.\nAfter updating the demo, run `pnpm eslint` and `pnpm valelint` to ensure the markdown files are valid. Fix the found issues.\n\n## Codemods\n\nCodemods are run by consumers of the MUI X libraries to migrate to newer versions of the libraries.\n\nWhen adding a new codemod, make sure to also document it in the `packages/x-codemod/README.md` following existing examples.\nYou also need to create or expand the `preset-safe` preset to include the new codemod, document the preset in the `README.md` and also include the newly added changes to the `preset-safe` test.\n\n### Versioning\n\nWhen creating codemods, the code should be created in the directory of the target version. E.g., a codemod to migrate from v8 to v9 should be placed inside the `v9.0.0` directory.\n\n### Writing codemods\n\nWhen writing codemods, first check in the `src/util` folder of the `x-codemod` package if there are any utilities that can help you.\n",".claude/skills/mui-x-review/SKILL.md":"---\nname: mui-x-review\ndescription: 'Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings.'\n---\n\n# MUI X Review\n\nThis is the Claude Code entrypoint for the shared repo skill.\n\nOnly run when the user explicitly asks for this skill by name\n(`/mui-x-review`, `$mui-x-review`, \"the MUI X review skill\", or a CI job\nconfigured to use it). Do not trigger on a generic \"review my changes\" request\nor after finishing an implementation.\n\nBefore reviewing, read `.agents/skills/mui-x-review/SKILL.md` completely and\nfollow that canonical workflow. Pass through any user arguments such as `low`,\n`medium`, `high`, `xhigh`, `max`, `--comment`, `--comment inline`, `--fix`, or a\nreview target.\n",".agents/skills/mui-release/SKILL.md":"---\nname: mui-release\ndescription: Run or assist a release in any MUI repo, at any stage - release PR, npm publish, docs deploy, GitHub release.\nargument-hint: '[target-version]'\n---\n\n# MUI Release\n\nEvery MUI repo releases through the same staged pipeline. Each stage depends on the previous one completing — never start a stage before its predecessor is done. This skill describes the shared skeleton; the details vary per repo.\n\n**Resumable:** the skill can be invoked at any stage — a release often spans multiple sessions (e.g. the PR was created and merged earlier, and the user now wants to trigger the npm publish). In the pipeline diagram below, each arrow out of a stage states the observable evidence that the stage is complete: resume at the first stage whose evidence is missing. Confirm the detected stage with the user before continuing; earlier stages' outputs are inputs, not work to redo.\n\n**Source of truth:** the target repo's `scripts/README.md` is the authoritative, evolving runbook. Always read it in the target checkout before releasing; use this skill to know what the stages mean and what to expect. Where the README contradicts this skill, the README wins. Repo-specific steps (docs release pages, hotfix flows, prerelease progressions, docs-only deploys, first-time package publishing) live only there. Repos without that runbook: read their release workflow directly.\n\n## The pipeline\n\nEach stage's instructions live in its own file — after detecting and confirming the current stage, read **that stage's file**:\n\n```mermaid\nflowchart TD\n    S1[\"Stage 1: Prepare the release PR\\n(stage-1-prepare-pr.md)\"]\n    S2[\"Stage 2: Merge the PR, then publish\\n(stage-2-publish-packages.md)\"]\n    S3[\"Stage 3: Publish the docs\\n(stage-3-publish-docs.md)\"]\n    S4[\"Stage 4: Publish the GitHub release, then announce\\n(stage-4-github-release.md)\"]\n\n    S1 -- \"open PR with the release label,\\napproved, CI green\" --> S2\n    S2 -- \"release PR merged, packages on npm at\\nthe new version, draft GitHub release created\" --> S3\n    S3 -- \"docs live for the new version\" --> S4\n    S4 -- \"published non-draft GitHub release for the\\ncurrent root package.json version\\n(release done, next one starts at Stage 1)\" --> S1\n```\n\nVerify each stage's evidence with read-only commands (run in the target checkout; `<version>` is the root `package.json` version):\n\n```bash\n# release PR: open (stage 1) or merged (stage 2 done merging)\ngh pr list --label release --state open --json number,title,reviewDecision\ngh pr list --label release --state merged --limit 1 --json number,title,mergedAt\ngh pr checks <number>                      # CI green?\n\n# packages on npm at the new version\nnpm view <main-package>@<version> version\n\n# GitHub release: exists? still a draft?\ngh release list --limit 5 --json tagName,isDraft,isLatest\ngh release view \"v<version>\" --json tagName,isDraft\n\n# docs live for the new version\ncurl -s <docs-url> | grep \"<version>\"      # or check the Netlify dashboard\n```\n","CLAUDE.md":"# Project guidelines\n\nRefer to @AGENTS.md\n","packages/mcp/README.md":"# `@mui/mcp`\n\nMUI's [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server. Exposes MUI documentation and code-generation tools to any MCP-capable AI client (Claude Code, Cursor, Zed, Continue, etc.) so an agent can answer MUI questions with real, up-to-date docs and generate React + Material UI code.\n\n## What it exposes\n\nThree stdio-based tools, backed by [@mui/x-agent-tools](../x-agent-tools/):\n\n- `useMuiDocs(sources)` : returns the docs catalog (URLs + summaries) for one or more MUI packages (for example `@mui/material`, `@mui/x-data-grid`). Each source is an llms.txt URL or a bare package name. Agents typically use this first to find the right docs page.\n- `fetchDocs(urls)` : fetches the full content of one or more docs URLs (typically taken from a `useMuiDocs` response).\n- `generateReactCode({ prompt, threadId?, designContext?, muiPairing?, model? })` : generates React + Material UI code from a natural-language prompt (optionally grounded in a Figma frame). Returns the generated files plus a short explanation. Requires `MUI_RECIPES_API_KEY`. Pass `threadId` back on subsequent calls to keep multi-turn conversations on the same chat. Pass `muiPairing` to target a specific MUI / MUI X major (see [Targeting a MUI version](#targeting-a-mui-version)).\n\n## Quick start\n\n```bash\npnpm install                          # once, from repo root\npnpm --filter @mui/mcp build:local    # builds @mui/x-agent-tools first, then @mui/mcp -> build/stdio.js\n```\n\nSmoke test:\n\n```bash\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"test\",\"version\":\"0.1\"}}}' \\\n  | node packages/mcp/build/stdio.js\n```\n\nExpected: `serverInfo: { name: \"mui-mcp\", version: \"0.x.0\" }` and the supported `capabilities`.\n\n## Connecting an MCP client\n\n**Available env vars** (all set via your client's config below):\n\n- `MUI_DOCS_BASE_URL` (optional, default `https://chat-backend.mui.com`): docs-catalog API base URL. Override when developing against a local backend.\n- `MUI_RECIPES_API_KEY` (required for `generateReactCode`): API key created at console.mui.com/products/recipes/api-keys. The server exchanges it for a short-lived JWT on the first call and caches the JWT in memory. The docs tools above keep working without it; only codegen requires it.\n- `MUI_BACKEND_BASE_URL` (optional, default `https://api.mui.com`): mui-backend base URL (where API-key → JWT exchange happens). Override for local dev, typically `http://localhost:5002`.\n- `MUI_RECIPES_BACKEND_BASE_URL` (optional, default `https://chat-backend.mui.com`): recipes-backend base URL (where codegen runs). Override for local dev, typically `http://localhost:5003`.\n\n### Claude Code CLI (simplest)\n\n```bash\nclaude mcp add mui-local \\\n  -e MUI_RECIPES_API_KEY=recipes_cli_... \\\n  -e MUI_BACKEND_BASE_URL=http://localhost:5002 \\\n  -e MUI_RECIPES_BACKEND_BASE_URL=http://localhost:5003 \\\n  -e MUI_DOCS_BASE_URL=http://localhost:5003 \\\n  -- node /absolute/path/to/mui-x/packages/mcp/build/stdio.js\n```\n\nDrop any `-e` line you don't need (codegen is the only tool that requires an API key). The `--` separator is required when passing env vars. Verify with `claude mcp list`; remove with `claude mcp remove mui-local`. Writes to your personal `~/.claude.json`, never to the repo's shared `.mcp.json`.\n\nTest prompts:\n\n- Docs lookup:\n  > Use `useMuiDocs` to look up the docs catalog for `@mui/material`. Then fetch the most relevant URL and summarize the `Button` component API.\n- Codegen (requires `MUI_RECIPES_API_KEY`):\n  > Use `generateReactCode` to build a Tomato product card with image, title, price, and an Add-to-cart button.\n\n### Claude Desktop / Cursor / other JSON-config clients\n\nEdit the client's config file (`~/Library/Application Support/Claude/claude_desktop_config.json` for Claude Desktop, `~/.cursor/mcp.json` for Cursor, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"mui-local\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mui-x/packages/mcp/build/stdio.js\"],\n      \"env\": {\n        \"MUI_RECIPES_API_KEY\": \"recipes_cli_...\",\n        \"MUI_BACKEND_BASE_URL\": \"http://localhost:5002\",\n        \"MUI_RECIPES_BACKEND_BASE_URL\": \"http://localhost:5003\",\n        \"MUI_DOCS_BASE_URL\": \"http://localhost:5003\"\n      }\n    }\n  }\n}\n```\n\nDrop any `env` key you don't need (only codegen requires `MUI_RECIPES_API_KEY`). Restart the client.\n\n### MCP Inspector (debug, no client setup needed)\n\n```bash\npnpm --filter @mui/mcp mcp-inspector\n```\n\nBuilds the server, then opens a web UI to call tools and inspect responses in isolation.\n\n## Targeting a MUI version\n\n`generateReactCode` accepts a `muiPairing` field to target a specific MUI / MUI X major. The shape mirrors the version picker on recipes.mui.com:\n\n```ts\nmuiPairing: {\n  material: 'v5' | 'v6' | 'v7' | 'v9',     // Material UI core; v8 was skipped\n  muiX: 'v5' | 'v6' | 'v7' | 'v8' | 'v9'   // MUI X products (DataGrid, DatePickers, etc.)\n}\n```\n\n**Default when omitted**: latest stable pairing (`{ material: 'v9', muiX: 'v9' }` today). Generation stays current with whatever the backend treats as latest.\n\n**Agents should detect and pass** `muiPairing` **for projects pinned to older majors.** Read the project's `package.json`, look at `@mui/material` and `@mui/x-data-grid` ranges, and forward the matching pair. A project pinned to `@mui/material ^7.x` + `@mui/x-data-grid ^8.x` should send `{ material: 'v7', muiX: 'v8' }`. Without this, the agent will silently get v9 code on a v7 codebase.\n\nExample MCP client prompt the host can ship as a guideline:\n\n> Before calling `generateReactCode`, read `package.json` and look up `@mui/material` and `@mui/x-data-grid` (or `@mui/x-data-grid-premium` / `@mui/x-date-pickers`). Pass the detected majors as `muiPairing`. Omit it only if no MUI dependencies are present.\n\n### Response footer\n\nEvery successful call returns the **effective pairing** on the result (and in the rendered text footer), even when the caller omitted `muiPairing`. Use this to confirm what the backend actually applied:\n\n```text\nthreadId: `chat-abc123` (pass on follow-up calls to continue this conversation).\nmuiPairing: `v7` + `v8` (effective targeting)\n```\n\n- Caller provided a pairing → echoes it back.\n- Caller omitted on a follow-up → returns the thread's locked pairing.\n- Caller omitted on a new thread → returns the resolver's default (currently `v9` + `v9`).\n\n## Tips for best results\n\n### Boost agent tool selection in your project\n\nWhen prompts don't explicitly name `generateReactCode`, hosts like Claude Code Agent (WebStorm/Cursor) sometimes pick built-in file-edit tools instead of the MCP, even on prompts that are clearly about Material UI. To nudge selection in your project, drop the following into your repo's `CLAUDE.md` (or your host's equivalent project-config file):\n\n```markdown\n## Generating Material UI components\n\nWhen the user asks to create, scaffold, or implement a Material UI / MUI component or page, prefer the `generateReactCode` MCP tool over writing the component from scratch with `Edit` / `Write`. It stays current with MUI v7 idioms (Grid not Grid2, current MUI X DataGrid props) and grounds in Figma context when available.\n\nBefore calling `generateReactCode`, read `package.json` to detect the project's MUI majors (`@mui/material`, `@mui/x-data-grid`) and pass them as `muiPairing` so the generated code matches the installed versions.\n```\n\nThis compounds with the tool's prescriptive description: the per-project hint reaches the agent in places the global description doesn't.\n\n### What the agent will do with the output\n\nAcross the MCP-host UIs we've tested (Claude Code Agent in WebStorm), the host agent treats `generateReactCode`'s output as a structured suggestion rather than a verbatim file dump. Expect:\n\n- `App.tsx` **is usually discarded or replaced.** The MCP emits an entry-file wrapper alongside the component. Host agents drop it when the project already has a host shell (Next.js page, Vite `main.tsx`, Storybook story, etc.).\n- **Component filenames get renamed to match project conventions.** `components/ContactForm.tsx` may become `contact-form.tsx`; PascalCase may become kebab-case. The `filename` we emit is advisory.\n- **Component bodies stay intact.** When the agent does adapt, it adjusts wrappers and paths, not the React code itself.\n- **Stack-mismatch warnings surface before writing.** On non-MUI projects (Radix, Tailwind-only, etc.) the agent typically asks before writing MUI-importing code, or surfaces a caveat. This is correct, conservative behavior.\n\nIf you're building an integration around `generateReactCode`, design for \"the agent will adapt the shell, keep the body\" rather than \"write all returned files verbatim.\"\n\n## Development\n\nThis package is a thin adapter that registers MUI's agent tools over the MCP protocol. The tool logic and shared infrastructure (auth, logging, retry, caching) live in [@mui/x-agent-tools](../x-agent-tools/); this package only maps them onto MCP handlers.\n\nDev loop: edit `src/`, rebuild, restart your MCP client (Inspector reloads automatically). `build:local`\nalso rebuilds `@mui/x-agent-tools` when you change it (skipped when unchanged).\n\n```bash\npnpm --filter @mui/mcp build:local\n```\n\nSource layout:\n\n```text\npackages/mcp/\n├── src/\n│   ├── stdio.ts            # entry: builds the server and registers the tools\n│   ├── version.ts          # reads the package version (works in the flat published layout)\n│   ├── docs/\n│   │   ├── handler.ts      # adapts the docs tools to MCP handlers\n│   │   └── register.ts     # builds + registers useMuiDocs / fetchDocs\n│   └── codegen/\n│       ├── handler.ts      # adapts generateReactCode to an MCP handler\n│       ├── progress.ts     # forwards codegen progress as MCP notifications\n│       └── register.ts     # builds + registers generateReactCode\n├── build/                  # code-infra build output, gitignored; build/stdio.js is what clients spawn\n├── package.json\n└── tsconfig.json\n```\n\nBuilt with the standard `code-infra` toolchain. The docs/codegen logic lives in [@mui/x-agent-tools](../x-agent-tools/), a published dependency that pnpm links from its `build/` output, so it must be built first: the `build:local` script (`pnpm --filter @mui/mcp build:local`, which expands to `pnpm --filter \"@mui/mcp...\" build`) handles that.\n\n## Publishing\n\nPublished to npm as [@mui/mcp](https://www.npmjs.com/package/@mui/mcp). End users consume it via `npx` (no local build), pointing at the published version:\n\n```json\n{ \"mcpServers\": { \"mui\": { \"command\": \"npx\", \"args\": [\"-y\", \"@mui/mcp\"] } } }\n```\n\n## Troubleshooting\n\n- **Client doesn't see the server.** Verify the path in your client's config is absolute and points at the actual built file. Restart the client after editing config.\n- `MUI_DOCS_BASE_URL` **errors.** Default backend may be cold-starting (Render free tier). Wait a few seconds and retry, or point at a local backend via env var.\n- `Missing API key` **from** `generateReactCode`**.** Set `MUI_RECIPES_API_KEY` in your client's env. Create a key at console.mui.com/products/recipes/api-keys.\n- `Token exchange failed` **/ 401 on codegen.** Check `MUI_BACKEND_BASE_URL`. Default is `https://api.mui.com`; for local mui-backend, set it to `http://localhost:5002`. A 401 also means the API key was revoked: create a new one.\n- `Generation stream ended unexpectedly` **on codegen.** The recipes-backend SSE was truncated mid-stream (transient proxy hangup, backend restart, etc.). Retry.\n","packages/eslint-plugin-mui-x/package.json":"{\n  \"name\": \"eslint-plugin-mui-x\",\n  \"private\": true,\n  \"description\": \"Custom eslint rules for MUI X.\",\n  \"type\": \"module\",\n  \"main\": \"src/index.mjs\",\n  \"dependencies\": {\n    \"@typescript-eslint/utils\": \"^8.71.1\"\n  },\n  \"devDependencies\": {\n    \"@types/eslint\": \"9.6.1\",\n    \"@types/react\": \"catalog:\",\n    \"@typescript-eslint/parser\": \"catalog:\",\n    \"@typescript-eslint/rule-tester\": \"8.71.1\"\n  },\n  \"scripts\": {\n    \"test\": \"vitest\"\n  }\n}\n",".claude/skills/mui-release":"../../.agents/skills/mui-release","packages/mcp/tsconfig.json":"{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    // Node-targeted server: uses process, node:fs/os/path, etc. @types/node is a devDependency so\n    // the isolated CI environment (which only sees declared deps) can resolve these.\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n","packages/eslint-plugin-mui-x/tsconfig.json":"{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"preserve\",\n    \"target\": \"es5\",\n    \"module\": \"preserve\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"lib\": [\"es2015\", \"es2017\", \"esnext\"],\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n","packages/mcp/package.json":"{\n  \"name\": \"@mui/mcp\",\n  \"version\": \"0.1.8\",\n  \"author\": \"MUI Team\",\n  \"description\": \"MUI MCP Server\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/mui/mui-x/issues\"\n  },\n  \"homepage\": \"https://github.com/mui/mui-x/tree/master/packages/mcp#readme\",\n  \"bin\": \"./src/stdio.ts\",\n  \"sideEffects\": false,\n  \"publishConfig\": {\n    \"access\": \"public\",\n    \"directory\": \"build\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mui/mui-x.git\",\n    \"directory\": \"packages/mcp\"\n  },\n  \"dependencies\": {\n    \"@babel/runtime\": \"catalog:\",\n    \"@modelcontextprotocol/sdk\": \"^1.32.1\",\n    \"@mui/x-agent-tools\": \"workspace:^\",\n    \"zod\": \"^4.6.5\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"22.20.5\",\n    \"rimraf\": \"catalog:\",\n    \"vitest\": \"catalog:\"\n  },\n  \"scripts\": {\n    \"typescript\": \"tsc -p tsconfig.json\",\n    \"build\": \"code-infra build --tsgo --bundle cjs --buildTypes false\",\n    \"build:local\": \"pnpm --filter \\\"@mui/mcp...\\\" build\",\n    \"prebuild\": \"rimraf build tsconfig.build.tsbuildinfo\",\n    \"mcp-inspector\": \"pnpm build:local && npx -y @modelcontextprotocol/inspector node build/stdio.js\",\n    \"test\": \"vitest run --config vitest.config.node.mts\"\n  },\n  \"engines\": {\n    \"node\": \">=22.12\"\n  }\n}\n","packages/x-agent-tools/README.md":"# `@mui/x-agent-tools`\n\nThe building blocks behind MUI's AI agent integrations. It implements the MUI documentation and code-generation tools that host packages expose to AI clients, plus the shared infrastructure they run on: JWT auth, SSRF-guarded fetching, caching, retry, and logging.\n\nThis is a library used by host packages such as [@mui/mcp](../mcp/), not something end users install directly.\n\n`zod` is a peer dependency: a host that installs `@mui/x-agent-tools` must also install `zod`, so the tool schemas share a single zod instance across the boundary.\n\n## What's inside\n\n- **Composition layer**: `resolveAgentToolsConfig` reads the backend config from env vars, and `createMuiAgentToolset` assembles the full toolset (SSRF guard, catalog retry, fail-soft, shared cache/queue baked in). The recommended entry point for a host.\n- **Docs tools**: `createDocsTools` builds the `useMuiDocs` / `fetchDocs` tools that look up and fetch MUI docs (`createUseMuiDocsTool` / `createFetchDocTool` are the lower-level factories). `fetchRemotePackages` loads the docs catalog.\n- **Codegen**: `createCodegenTool` generates React + Material UI code from a prompt (POST + buffered SSE). `formatCodegenText` renders the result for a text client.\n- **Auth**: `ApiKeyJwtClient` exchanges a `MUI_RECIPES_API_KEY` for a short-lived JWT (in-memory cache, refresh window, concurrent-call dedup).\n- **Utils**: `LRUCache`, `buildCombinedLogger`, and `createDocsUrlGuard` (the SSRF allowlist for docs fetches).\n\n## Usage\n\nA host composes the toolset and adapts it to its protocol. Minimal sketch:\n\n```ts\nimport { resolveAgentToolsConfig, createMuiAgentToolset } from '@mui/x-agent-tools';\n\nconst toolset = await createMuiAgentToolset(resolveAgentToolsConfig(), { logger });\n\n// codegenTool and fetchDocsTool are ready immediately; neither needs the catalog.\nconst code = await toolset.codegenTool.execute({ prompt: 'Build a product card' }, { signal });\nconst docs = await toolset.fetchDocsTool.execute({ urls: ['https://mui.com/x/...'] }, { signal });\n\n// useMuiDocs needs the catalog; useMuiDocsReady resolves once it settles. Never rejects (fail-soft).\nconst useMuiDocsTool = await toolset.useMuiDocsReady;\nif (useMuiDocsTool) {\n  // null when the catalog was unreachable; codegenTool + fetchDocsTool still work.\n  const grid = await useMuiDocsTool.execute({ sources: ['@mui/x-data-grid'] }, { signal });\n}\n\n// On host shutdown, release the toolset's background resources (docs cache timer + fetch queue).\ntoolset.dispose();\n```\n\nEvery tool exposes `{ name, description, inputSchema, outputSchema, execute(input, ctx?) }`, where `ctx` carries an optional `signal` and `onProgress`. `execute` validates its input against `inputSchema`, so hosts don't need a validation layer of their own. See [@mui/mcp](../mcp/src/) for a full host wiring.\n\n## Development\n\n```bash\npnpm test:unit --project \"@mui/x-agent-tools\" --run\npnpm --filter \"@mui/x-agent-tools\" run typescript\n```\n\nSource layout:\n\n```text\nsrc/\n├── auth/       ApiKeyJwtClient + authed fetch (JWT exchange, 401 retry)\n├── codegen/    generateReactCode: schemas, SSE stream, error mapping, tool, builder\n├── docs/       useMuiDocs / fetchDocs, package catalog, SSRF url guard, fetcher, builder\n├── utils/      cache (LRU), retry, logger, wrapTool\n├── config.ts   env var names, backend defaults, resolveAgentToolsConfig\n├── toolset.ts  createMuiAgentToolset (composes the codegen + docs builders)\n├── types.ts    shared types (AgentTool, ToolExecutionContext, ...)\n└── index.ts    public barrel\n```\n\nBuilt with the standard `code-infra` toolchain and published to npm as `@mui/x-agent-tools`.\n","packages/x-agent-tools/package.json":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/package.json)","packages/x-agent-tools/tsconfig.build.json":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.build.json)","packages/x-agent-tools/tsconfig.json":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.json)","packages/x-charts-premium/README.md":"# x-charts-premium Documentation\n\nPath: `packages/x-charts-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/README.md)","packages/x-charts-premium/package.json":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/package.json)","packages/x-charts-premium/tsconfig.build.json":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.build.json)","packages/x-charts-premium/tsconfig.json":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.json)","packages/x-charts-pro/README.md":"# x-charts-pro Documentation\n\nPath: `packages/x-charts-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/README.md)","packages/x-charts-pro/package.json":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/package.json)","packages/x-charts-pro/tsconfig.build.json":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.build.json)","packages/x-charts-pro/tsconfig.json":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.json)","packages/x-charts-vendor/README.md":"# x-charts-vendor Documentation\n\nPath: `packages/x-charts-vendor/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/README.md)","packages/x-charts-vendor/package.json":"# X-charts-vendor Skill\n\nPath: `packages/x-charts-vendor/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/package.json)","packages/x-charts-vendor/tsconfig.json":"# X-charts-vendor Skill\n\nPath: `packages/x-charts-vendor/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/tsconfig.json)","packages/x-charts/README.md":"# x-charts Documentation\n\nPath: `packages/x-charts/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/README.md)","packages/x-charts/package.json":"# X-charts Skill\n\nPath: `packages/x-charts/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/package.json)","packages/x-charts/tsconfig.build.json":"# X-charts Skill\n\nPath: `packages/x-charts/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.build.json)","packages/x-charts/tsconfig.json":"# X-charts Skill\n\nPath: `packages/x-charts/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.json)","packages/x-chat-headless/README.md":"# x-chat-headless Documentation\n\nPath: `packages/x-chat-headless/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/README.md)","packages/x-chat-headless/package.json":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/package.json)","packages/x-chat-headless/tsconfig.build.json":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/tsconfig.build.json)","packages/x-chat-headless/tsconfig.json":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/tsconfig.json)","packages/x-chat/README.md":"# x-chat Documentation\n\nPath: `packages/x-chat/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/README.md)","packages/x-chat/package.json":"# X-chat Skill\n\nPath: `packages/x-chat/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/package.json)","packages/x-chat/tsconfig.build.json":"# X-chat Skill\n\nPath: `packages/x-chat/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/tsconfig.build.json)","packages/x-chat/tsconfig.json":"# X-chat Skill\n\nPath: `packages/x-chat/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/tsconfig.json)","packages/x-codemod/README.md":"# x-codemod Documentation\n\nPath: `packages/x-codemod/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/README.md)","packages/x-codemod/package.json":"# X-codemod Skill\n\nPath: `packages/x-codemod/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/package.json)","packages/x-codemod/tsconfig.json":"# X-codemod Skill\n\nPath: `packages/x-codemod/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/tsconfig.json)","packages/x-data-grid-generator/README.md":"# x-data-grid-generator Documentation\n\nPath: `packages/x-data-grid-generator/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/README.md)","packages/x-data-grid-generator/package.json":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/package.json)","packages/x-data-grid-generator/tsconfig.build.json":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/tsconfig.build.json)","packages/x-data-grid-generator/tsconfig.json":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/tsconfig.json)","packages/x-data-grid-premium/README.md":"# x-data-grid-premium Documentation\n\nPath: `packages/x-data-grid-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/README.md)","packages/x-data-grid-premium/package.json":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/package.json)","packages/x-data-grid-premium/tsconfig.build.json":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/tsconfig.build.json)","packages/x-data-grid-premium/tsconfig.json":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/tsconfig.json)","packages/x-data-grid-pro/README.md":"# x-data-grid-pro Documentation\n\nPath: `packages/x-data-grid-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/README.md)","packages/x-data-grid-pro/package.json":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/package.json)","packages/x-data-grid-pro/tsconfig.build.json":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/tsconfig.build.json)","packages/x-data-grid-pro/tsconfig.json":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/tsconfig.json)","packages/x-data-grid/README.md":"# x-data-grid Documentation\n\nPath: `packages/x-data-grid/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/README.md)","packages/x-data-grid/package.json":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/package.json)","packages/x-data-grid/tsconfig.build.json":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/tsconfig.build.json)","packages/x-data-grid/tsconfig.json":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/tsconfig.json)","packages/x-date-pickers-pro/README.md":"# x-date-pickers-pro Documentation\n\nPath: `packages/x-date-pickers-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/README.md)","packages/x-date-pickers-pro/package.json":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/package.json)","packages/x-date-pickers-pro/tsconfig.build.json":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/tsconfig.build.json)","packages/x-date-pickers-pro/tsconfig.json":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/tsconfig.json)","packages/x-date-pickers/README.md":"# x-date-pickers Documentation\n\nPath: `packages/x-date-pickers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/README.md)","packages/x-date-pickers/package.json":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/package.json)","packages/x-date-pickers/tsconfig.build.json":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/tsconfig.build.json)","packages/x-date-pickers/tsconfig.json":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/tsconfig.json)","packages/x-internal-gestures/README.md":"# x-internal-gestures Documentation\n\nPath: `packages/x-internal-gestures/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/README.md)","packages/x-internal-gestures/package.json":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/package.json)","packages/x-internal-gestures/tsconfig.build.json":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/tsconfig.build.json)","packages/x-internal-gestures/tsconfig.json":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/tsconfig.json)","packages/x-internals/README.md":"# x-internals Documentation\n\nPath: `packages/x-internals/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/README.md)","packages/x-internals/package.json":"# X-internals Skill\n\nPath: `packages/x-internals/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/package.json)","packages/x-internals/tsconfig.build.json":"# X-internals Skill\n\nPath: `packages/x-internals/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/tsconfig.build.json)","packages/x-internals/tsconfig.json":"# X-internals Skill\n\nPath: `packages/x-internals/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/tsconfig.json)","packages/x-license/README.md":"# x-license Documentation\n\nPath: `packages/x-license/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/README.md)","packages/x-license/package.json":"# X-license Skill\n\nPath: `packages/x-license/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/package.json)","packages/x-license/tsconfig.build.json":"# X-license Skill\n\nPath: `packages/x-license/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/tsconfig.build.json)","packages/x-license/tsconfig.json":"# X-license Skill\n\nPath: `packages/x-license/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/tsconfig.json)","packages/x-scheduler-internals-premium/README.md":"# x-scheduler-internals-premium Documentation\n\nPath: `packages/x-scheduler-internals-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/README.md)","packages/x-scheduler-internals-premium/package.json":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/package.json)","packages/x-scheduler-internals-premium/tsconfig.build.json":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/tsconfig.build.json)","packages/x-scheduler-internals-premium/tsconfig.json":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/tsconfig.json)","packages/x-scheduler-internals/README.md":"# x-scheduler-internals Documentation\n\nPath: `packages/x-scheduler-internals/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/README.md)","packages/x-scheduler-internals/package.json":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/package.json)","packages/x-scheduler-internals/tsconfig.build.json":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/tsconfig.build.json)","packages/x-scheduler-internals/tsconfig.json":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/tsconfig.json)","packages/x-scheduler-premium/README.md":"# x-scheduler-premium Documentation\n\nPath: `packages/x-scheduler-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/README.md)","packages/x-scheduler-premium/package.json":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/package.json)","packages/x-scheduler-premium/tsconfig.build.json":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/tsconfig.build.json)","packages/x-scheduler-premium/tsconfig.json":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/tsconfig.json)","packages/x-scheduler/README.md":"# x-scheduler Documentation\n\nPath: `packages/x-scheduler/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/README.md)","packages/x-scheduler/package.json":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/package.json)","packages/x-scheduler/tsconfig.build.json":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/tsconfig.build.json)","packages/x-scheduler/tsconfig.json":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/tsconfig.json)","packages/x-telemetry/README.md":"# x-telemetry Documentation\n\nPath: `packages/x-telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/README.md)","packages/x-telemetry/package.json":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/package.json)","packages/x-telemetry/tsconfig.build.json":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/tsconfig.build.json)","packages/x-telemetry/tsconfig.json":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/tsconfig.json)","packages/x-tree-view-pro/README.md":"# x-tree-view-pro Documentation\n\nPath: `packages/x-tree-view-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/README.md)","packages/x-tree-view-pro/package.json":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/package.json)","packages/x-tree-view-pro/tsconfig.build.json":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/tsconfig.build.json)","packages/x-tree-view-pro/tsconfig.json":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/tsconfig.json)","packages/x-tree-view/README.md":"# x-tree-view Documentation\n\nPath: `packages/x-tree-view/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/README.md)","packages/x-tree-view/package.json":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/package.json)","packages/x-tree-view/tsconfig.build.json":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/tsconfig.build.json)","packages/x-tree-view/tsconfig.json":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/tsconfig.json)","packages/x-virtualizer/README.md":"# x-virtualizer Documentation\n\nPath: `packages/x-virtualizer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/README.md)","packages/x-virtualizer/package.json":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/package.json)","packages/x-virtualizer/tsconfig.build.json":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/tsconfig.build.json)","packages/x-virtualizer/tsconfig.json":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/tsconfig.json)",".agents/skills/mui-release/stage-1-prepare-pr.md":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-1-prepare-pr.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-1-prepare-pr.md)",".agents/skills/mui-release/stage-2-publish-packages.md":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-2-publish-packages.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-2-publish-packages.md)",".agents/skills/mui-release/stage-3-publish-docs.md":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-3-publish-docs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-3-publish-docs.md)",".agents/skills/mui-release/stage-4-github-release.md":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-4-github-release.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-4-github-release.md)",".agents/skills/mui-x-review/agents/openai.yaml":"# Agents Skill\n\nPath: `.agents/skills/mui-x-review/agents/openai.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-x-review/agents/openai.yaml)","docs/data/charts/plugins/plugins.md":"# Plugins Skill\n\nPath: `docs/data/charts/plugins/plugins.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/plugins/plugins.md)","docs/data/charts/references/references.md":"# References Skill\n\nPath: `docs/data/charts/references/references.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/references/references.md)","packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json":"# Fixtures Skill\n\nPath: `packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json)","packages/x-internal-gestures/src/core/README.md":"# core Documentation\n\nPath: `packages/x-internal-gestures/src/core/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/core/README.md)","packages/x-internal-gestures/src/matchers/README.md":"# matchers Documentation\n\nPath: `packages/x-internal-gestures/src/matchers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/matchers/README.md)","packages/x-internal-gestures/src/testing/README.md":"# testing Documentation\n\nPath: `packages/x-internal-gestures/src/testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/testing/README.md)"},"files":{".agents/skills/mui-x-review/SKILL.md":"---\nname: mui-x-review\ndescription: 'Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings.'\n---\n\n# MUI X Review\n\nReview current diff. Find **regressions and correctness bugs** first. Also find\n**cleanup** (reuse / simplification / efficiency). Default effort: `medium`. See\n[Effort levels](#effort-levels) for depth and subagent fan-out.\n\nArgument hint: `[low|medium|high|xhigh|max] [--fix] [--comment [inline]] [<target>]`\n\nThis skill is **opt-in only**: run it when the user explicitly asks for it by\nname (`/mui-x-review`, `$mui-x-review`, \"the MUI X review skill\", or a CI\njob configured to use it). A plain \"review my changes\" or \"review this PR\", or\nwrapping up an implementation, is not an invocation — review without this\nworkflow unless the user names it.\n\n`medium` = **precision**. Every finding actionable. `high`, `xhigh`, `max` =\n**recall**. Missed bug ships. Keep uncertain findings when mechanism is real;\nlabel them clearly.\n\n## Scope\n\nLocal review: diff branch against upstream\n(`git diff @{upstream}...HEAD`, fall back to `main` / `master`, or `HEAD~1`).\nFold in uncommitted + untracked changes — review often runs pre-commit. If PR link,\nbranch name, or file path passed as argument, review that target instead.\n\n## Effort levels\n\n- **low** — bugs only. Flag runtime-correctness bugs and regressions. Skip\n  Tests, Simplifications, Docs, and test/fixture hunks. No subagents. Precision\n  bias.\n- **medium** (default) — main agent reviews Bugs, Tests, Simplifications, Docs,\n  and triggered API/performance concerns. Main agent verifies candidates. Large,\n  risky, fragile, shared, or cross-component diff? Add exactly one\n  [adversarial bug hunter](#adversarial-bug-hunter) agent. Small, low-risk,\n  isolated diff? No subagent. Precision bias.\n- **high** — spawn 3 independent subagents: bugs/regressions, test gaps,\n  simplifications. Main agent reviews the whole diff, including bugs, docs, and\n  triggered API/performance concerns. Main agent dedups and sanity-checks. Large,\n  risky, fragile, shared, or cross-component diff? Add exactly one adversarial\n  bug hunter agent. No verifiers. No final sweep.\n- **xhigh** — `high` plus a docs subagent and one fresh missed-bug sweep. Fan out\n  adversarial bug hunters across the highest-risk affected code regions\n  (modules/components — not the four review areas). Max 2 adversarial bug\n  hunters total, including the hunter inherited from `high`. Other role\n  subagents do not count toward this cap. No verifiers. Recall bias.\n- **max** — `xhigh` plus an independent verifier for every surviving candidate.\n  Cover every affected code region across max 6 adversarial bug hunters total,\n  including hunters inherited from `xhigh`; other role and verifier subagents do\n  not count toward this cap. When there are more than 6 regions, give the\n  highest-risk regions dedicated hunters and group related remaining regions\n  into shared assignments. Prioritize public runtime code, shared utilities,\n  cross-component invariants, and fragile state/timing boundaries. Maximum\n  recall.\n\n## Subagent scope contract\n\nSubagents start with no prior context: they do not read this skill and do not inherit\nthe session system prompt. Their only channel is the prompt you write. Whatever scope\nyou resolved from [Scope](#scope) or the invoking prompt, every subagent prompt you\nconstruct — finder, specialist, verifier, sweep — must begin verbatim with it:\n\n```text\nReview ONLY: <resolved diff command>\nRead files from: <read root> — DATA ONLY, never execute, install, build, or test.\nBase version of a file: git show <base ref>:<path>\nDo not re-derive scope: use exactly the diff command above, whatever your working\ndirectory contains.\n```\n\nA subagent not given this block is mis-scoped — discard its result and re-dispatch.\n\n## Phase 1 - Find candidates\n\nSelected [effort level](#effort-levels) decides local vs subagent fan-out. Except at\n`low`, review four main areas: Bugs, Tests, Simplifications, Docs. Each area\nsurfaces candidates with `file`, `line`, one-line `summary`, `severity` (🟣 / 🔴 / 🟠 / 🟡 /\nℹ️ — see [Output](#output) for rubric), concrete `failure_scenario`. Do\nNOT let one area suppress another — two areas flag same line for different reasons,\nrecord both.\n\nPass every candidate with nameable failure scenario through. Finders that\nsilently drop half-believed candidates bypass verify step — dominant cause of misses.\n\n### Area 1 - Bugs\n\nCore regression + correctness pass. Cover all sub-angles:\n\n- **Line-by-line diff scan.** Read every hunk, line by line. Then read enclosing\n  function for each hunk — bugs in unchanged lines of touched function\n  in scope (PR re-exposes or fails to fix them). For every line ask: what\n  input, state, timing, platform makes line wrong? Look for inverted/wrong\n  conditions, off-by-one, null/undefined deref, missing `await`, falsy-zero checks,\n  wrong-variable copy-paste, error swallowed in catch, unescaped regex metachars.\n- **Regression hunting.** For each changed guard, branch, state transition, public\n  contract, test expectation, documented example, ask what behavior previously\n  worked and could break. Bias toward regressions in edge paths, accessibility\n  interactions, keyboard/focus flows, controlled/uncontrolled contracts, SSR,\n  integrations between components, public API examples.\n- **Repository/framework correctness lens.** Apply invariants of codebase\n  under review, not just generic language bugs. For MUI X / React component\n  changes: controlled vs uncontrolled behavior, event ordering, ref\n  forwarding/merging, context registration cleanup, nested component coordination,\n  portals, focus management, keyboard navigation, ARIA attributes, disabled/read-only\n  states, form integration, SSR/hydration safety, Strict Mode behavior, shadow\n  DOM-safe DOM access (`contains`, `getTarget`, `activeElement`, `ownerDocument`,\n  `ownerWindow`).\n- **Removed-behavior auditor.** For every line diff DELETES or replaces, name\n  invariant/behavior it enforced, then search new code for where invariant\n  re-established. Can't find it? Candidate: removed\n  guard, dropped error path, narrowed validation, deleted test covering real case.\n- **Cross-file tracer.** For each function diff changes, find callers (Grep\n  symbol) and check if change breaks any call site: new\n  precondition, changed return shape, new exception, timing/ordering\n  dependency. Also check callees: parallel change in same PR make call\n  unsafe?\n\n### Area 2 - Tests\n\nReview test changes and tests that _should_ have changed. Flag:\n\n- New/changed behavior with no test exercising it\n- Assertions not actually pinning behavior (asserting mock called instead of\n  result, snapshot-only coverage, asserting on value test itself computed)\n- Missing edge/error-path cases diff introduces (null, empty, boundary, failure,\n  concurrency)\n- Setup/teardown asymmetry (state leaked between tests, fixtures not reset)\n- Over-mocking hiding real contract\n- Tests deleted or weakened without justification\n- Tests whose names do not match what they assert, or whose names are misleading\n\nName specific case untested or under-asserted.\n\n### Area 3 - Simplifications\n\nBundle size is a top constraint. Smallest correct implementation wins. Preserve\npublic behavior, runtime performance, and maintainability. Treat every bundle\nsize increase as suspect — new bytes must earn their place; flag increases the\ndiff doesn't justify.\n\nAlways ask: \"Can this ship with less code, state, branching, or abstraction?\"\nLook for:\n\n- Heavy dependency or new abstraction where a few lines or existing util does\n  the job\n- Code doing too much for an edge case almost no one hits — guards, branches,\n  state, or config for scenarios not realistically reachable in consumer usage;\n  weigh handling cost against edge-case likelihood and propose dropping or\n  cheapening it\n- Duplicated logic re-implementing what codebase already has — Grep\n  shared/utility modules and files adjacent to change; name existing helper to\n  call instead\n- Non-tree-shakeable or whole-package imports; namespace imports of\n  side-effectful modules\n- Dead code left behind; redundant or derivable state\n- Special cases layered on shared infrastructure when mechanism should\n  generalize\n\nName smaller or better-shaped form doing same job. Measure real bundle effect\nwhen material. Source-line count proves nothing.\n\n### Area 4 - Docs\n\nFlag documentation and comments diff makes wrong or leaves stale:\n\n- Comments describing old behavior after code changed\n- JSDoc/docstrings whose params, return type, thrown errors no longer match\n  signature\n- README / API docs / changelog entries contradicting change; examples no longer\n  compile or run\n- TODO/FIXME change resolved but didn't remove; new non-obvious code with no\n  explanation where warranted\n\nQuote stale line and state what it should say.\n\n### Conditional specialist - API design\n\nNot part of default four-area fan-out. Skip entirely at\n`low`. At `medium`, include in main-agent pass when diff adds/changes\npublic API surface: component, prop, event, hook, provider, imperative method,\nexported type, value shape, behavior contract, docs example teaching API.\nAt `high`, `xhigh`, `max`, run as independent API design subagent when\ntriggered.\n\nHeavily critique API taste: naming, mental model, consistency with\nnearby APIs in same codebase, controlled/uncontrolled ergonomics, composition,\nescape hatches, type shape, default behavior, future extensibility, migration risk,\nlikely user footguns. Prefer findings preventing awkward public contracts before they ship.\nReport API design findings under Bugs when they create likely user-visible footguns\nor regressions, otherwise under Simplifications.\n\n### Conditional specialist - Runtime performance\n\nNot part of default four-area fan-out. Skip entirely at\n`low`. At `medium`, include in main-agent pass when diff likely affects\nruntime performance: render hot paths, large item collections, virtualization,\npositioning, layout measurement, scroll/resize/pointer/keyboard handlers,\nobservers, animations, repeated DOM reads/writes, state updates in loops,\ncomponent registration/lookup paths. At `high`, `xhigh`, `max`, run as\nindependent runtime performance subagent when triggered.\n\nPrefer concrete measurement when feasible: existing perf tests, targeted benchmark\nscripts, small reproducible measurement. If measuring not practical, state\nexpected complexity or browser work and what would confirm it. Report runtime\nperformance findings under Bugs when users can see lag, jank, hangs, excessive\nwork, otherwise under Simplifications.\n\n### Adversarial bug hunter\n\nSubagent role added per [Effort levels](#effort-levels). Assume there are bugs\nin the diff a consumer will hit. Do not trust PR description, comments, or test\nnames — verify against code. Attack changed invariants directly: construct\nconcrete input, state, timing, or platform that makes new code wrong. Report\nevery candidate with a nameable failure scenario; when none survive, report\nempty — never pad with weak findings to justify the hunt.\n\n---\n\nSimplification, test, docs candidates use same `file`/`line`/`summary`\nshape; in `failure_scenario`, state concrete cost (what duplicated, wasted,\nuntested, stale, harder to maintain) instead of crash. Regressions and\ncorrectness bugs always outrank simplification, test, docs findings when\nreview ordered.\n\n## Phase 2 - Verify candidates (local by default; max adds subagent votes)\n\nDedup candidates pointing at same line/mechanism, keep one with\nmost concrete failure scenario. Verify candidates locally in main agent by\ndefault.\n\nJudge every candidate by reachability and impact. Keep every valid bug. Demote\nto ℹ️ note when behavior not realistically reachable in real consumer usage,\nhas no meaningful user impact, or is optional improvement rather than\ncorrectness defect. Demotion is not refutation — demoted findings still print,\nat lower severity. At `max` effort, also run **one verifier** as subagent for each\nremaining candidate when subagents available and authorized: give it diff,\nrelevant file(s), candidate, have it return exactly one of:\n\n- **CONFIRMED** — can name inputs/state triggering it and wrong output or\n  crash. Quote line.\n- **PLAUSIBLE** — mechanism real, trigger uncertain (timing, env, config).\n  State what would confirm it.\n- **REFUTED** — factually wrong (code doesn't say that) or guarded elsewhere. Quote\n  line proving it.\n\nKeep candidates where vote CONFIRMED or PLAUSIBLE.\n\nAt **max**, verify recall-biased — **PLAUSIBLE by default**: do not\nrefute candidate for being \"speculative\" or \"depends on runtime state\" when\nstate realistic (concurrency races, nil/undefined on rare-but-reachable path,\nfalsy-zero treated as missing, off-by-one on boundary code doesn't exclude,\nretry storms / partial failures, regex/allowlist lost anchor). REFUTE only\nwhen constructible from code: factually wrong, provably impossible, already\nhandled in this diff, pure style with no observable effect.\n\n## Phase 3 - Sweep for gaps (xhigh / max effort)\n\nAt `xhigh` and `max`, run **one more finder** as fresh reviewer with\ncurrent finding list. Re-read diff and enclosing functions looking ONLY for\ndefects not already listed. Do not re-derive or re-confirm anything already there —\njob is gaps. Focus on what first pass misses: moved/extracted code\ndropping guard or anchor; second-tier footguns (dataclass default evaluated\nonce, `hash()` non-determinism, lock-scope shrink, predicate methods with side\neffects); setup/teardown asymmetry in tests; config defaults flipped. Surface\nadditional candidates naming defect not already on list. If nothing new,\nreturn empty sweep — do not pad.\n\n## Output\n\nReply in Markdown. Do not wrap main result in JSON or code fence. Use\nsentence case for `#` heading and all finding titles; no title case. Do\nnot open with generic target/base filler like \"Reviewed `owner/repo#123` against\n`branch`.\" Only mention target or base branch when explaining specific\nfinding or limitation.\n\nPrint only non-empty category sections, in this order: `Bugs`, `Tests`,\n`Simplifications`, `Docs`. A category with 0 findings gets nothing — no\nheading, no count, no `No findings.` placeholder. Always end with `Verdict`.\nBefore sending, verify every surviving finding prints exactly once and each\nprinted section count matches its numbered findings. When no findings exist\nanywhere, use the [No findings](#no-findings) format.\n\n### Severity rubric\n\nPrefix every finding title with one severity marker:\n\n- 🟣 **critical - blocking.** Correctness issue crashing common flows, losing\n  user data, creating security/privacy problem, making public component contract\n  unusable, or creating broad cross-component accessibility, focus, form, SSR\n  breakage. Must block merge.\n- 🔴 **high - blocking.** Realistic user-visible regression in normal component\n  usage, accessibility, keyboard/focus behavior, controlled/uncontrolled behavior,\n  form integration, SSR/hydration, public API behavior, or public docs example\n  no longer compiling or teaching broken API usage. Should block merge even\n  when affected path has workaround or not most common path.\n- 🟠 **medium - non-blocking.** Real issue worth fixing before merge when\n  practical but not normally blocking: narrow or uncommon bug, meaningful missing\n  test, stale public-doc prose not breaking copy-pasted code, cleanup\n  avoiding likely future mistakes. Use only when issue doesn't break public\n  contract and doesn't affect accessibility, focus, forms, SSR, or normal component\n  usage.\n- 🟡 **low - non-blocking.** Minor edge-case bug, small test/doc gap, modest\n  simplification useful but easy for maintainers to defer.\n- ℹ️ **note.** Informational — observation, heads-up, optional suggestion the\n  maintainer may reasonably decline.\n\nMUI X has stricter quality bar than most apps — small component-library\nregressions multiplied across many downstream products. When choosing between\nadjacent severities, choose higher severity if failure reaches realistic\nconsumer usage, accessibility behavior, form behavior, focus management, SSR,\npublic API contract or broken public docs example. Do not reserve 🔴 high only for\noutage-level failures.\n\nWithin each section, order findings 🟣 -> 🔴 -> 🟠 -> 🟡 -> ℹ️.\n\n### Verdict\n\nEnd review with `## Verdict` line derived from markers:\n\n- **Request changes** — at least one 🟣 or 🔴 finding.\n- **Approve after nits** — no 🟣 or 🔴, but one or more 🟠 or 🟡 findings worth\n  addressing.\n- **Approve** — no 🟣, 🔴, 🟠, 🟡 findings (only ℹ️ notes, or nothing).\n\nFollow verdict with one clause naming deciding factor.\n\n### Finding format\n\nUse this structure. Omit any category block whose count is zero:\n\n````md\n# PR review\n\nOne to three sentences summarizing the concrete risk, most important theme, and\nany meaningful verification limit. State up front whether anything is merge-blocking.\nIf there are no actionable findings, say that clearly.\n\n## Bugs ({count})\n\n### 1. {severity marker} {Sentence-case title}\n\n**Location:** `path/to/file.ext:123`\n\n```tsx\n// Small relevant code excerpt from the reviewed file.\n```\n\n{Description of what is wrong and why it matters.}\n\n**Failure scenario:** {Simple, obvious user-facing or example issue someone would\nsee.}\n\n**Fix:** {Specific recommended change.}\n\n## Tests ({count})\n\n## Simplifications ({count})\n\n## Docs ({count})\n\n## Verdict\n\n**{Request changes | Approve after nits | Approve}** - {one clause on the deciding factor}.\n\n---\n\n🤖 Review generated with {Claude Code | Codex}\n````\n\nSame per-finding shape for Tests, Simplifications, Docs. For Tests,\nmake failure scenario the missing case or weak assertion. For Simplifications,\nmake it concrete duplicated, heavier, or harder-to-maintain code path. For Docs,\nmake it stale or missing public/developer-facing information.\n\n### Finding quality\n\nDo not cap findings by count. Report every verified, actionable finding\nmaintainer would reasonably fix before merging. Do not pad review with weak,\nstylistic, speculative, low-importance notes. If many findings survive, group\nrelated issues under one finding when they share same root cause.\n\n### No findings\n\nIf nothing survives verification, omit all category headings and counts. Return\n`# PR review`, `No findings.`, a brief note of residual test gaps or risk,\n`## Verdict` with **Approve**, and the `🤖 Review generated with ...` footer.\n\n### Final output preflight\n\nTreat the output format as a hard contract. Before sending:\n\n- Use `# PR review`; start the summary with concrete risk, not target/base filler.\n- Use exact `## {Category} ({count})` headings for non-empty categories only.\n- Print each finding exactly once and verify every category count.\n- Use a separate `## Verdict` heading and the required closing footer.\n\nIf any check fails, rewrite the output before sending.\n\nAlways close review with `---` horizontal rule, blank line, then\n`🤖 Review generated with {Claude Code | Codex}`. Use **Claude Code** when this\nskill executed by Claude Code harness, **Codex** when executed by Codex harness.\n\n## Posting to GitHub (--comment)\n\nPost to GitHub only when target is GitHub PR and arguments include\ncomment mode:\n\n- No `--comment` — do not post to GitHub; if `--fix` also absent, stop at\n  Markdown review report.\n- `--comment` — post Markdown review as one top-level PR comment via\n  `gh pr comment`.\n- `--comment inline` — post inline comments for findings mapping to PR diff\n  lines, include all non-diff findings in top-level fallback comment.\n\nFor `--comment inline`, include same severity marker in each inline comment\nbody. Use latest PR head `commit_id`, `path`, `line`, `side`, post via\n`gh api` (`repos/{owner}/{repo}/pulls/{pr}/comments`), one call per finding. Include\nsuggestion block only when it fully fixes issue. (If GitHub inline-comment\nMCP tool available in session, use instead.)\n\nInline comments can only attach to lines present in PR diff. Put findings\noutside PR diff (unchanged lines in touched functions) in top-level\nfallback comment via `gh pr comment`; do not drop them or stop posting rest of\nreview because one inline comment not commentable. If target not\nPR, print findings to terminal and note `--comment` was ignored.\n\n## Applying fixes (--fix)\n\nIf `--fix` flag passed in arguments, after producing findings\nlist, apply findings to working tree instead of stopping at report: fix\neach one directly — correctness bugs and reuse/simplification/efficiency cleanups\nalike. Skip any finding whose fix would change intended behavior, require changes\nwell outside reviewed diff, or you judge false positive — note\nskip rather than arguing with it. Finish with brief summary of what fixed and\nwhat skipped.\n\nIf neither `--comment` nor `--fix` passed, stop at Markdown review report.\n","AGENTS.md":"# Project guidelines\n\nCheck `AGENTS.local.md` for personal preferences.\n\n## Linting and formatting\n\n### Linting\n\n```bash\npnpm eslint\npnpm eslint:fix # Auto-fix issues\n```\n\n### Formatting\n\n```bash\npnpm prettier # Format changed files (compared to master)\npnpm prettier:all # Format all files\n```\n\n### Other Linters\n\n```bash\npnpm stylelint # when editing CSS/style files\npnpm generate:exports # when editing code in `packages/x-charts*`\n```\n\n## Testing\n\n### Run unit tests in jsdom\n\n```bash\n# Filter by project name (glob patterns supported)\n# --run flag = run tests once and exit\npnpm test:unit --project \"x-data-grid\" --run # exact match\npnpm test:unit --project \"x-charts*\" --run # starts with\npnpm test:unit --project \"*-pro\" --run # ends with\n```\n\n### Run unit tests in the browser\n\n```bash\n# Filter by project name (glob patterns supported)\n# --run flag = run tests once and exit\npnpm test:browser --project \"x-data-grid\" --run # exact match\npnpm test:browser --project \"x-charts*\" --run # starts with\npnpm test:browser --project \"*-pro\" --run # ends with\n```\n\n### Writing new unit tests\n\n#### Ensuring a test only runs in a specific environment\n\n- Use `it.skipIf(isJSDOM)` to skip when running unit tests\n- Use `it.skipIf(!isJSDOM)` to run only in browser mode.\n\n## TypeScript\n\n```bash\n# Using pnpm filter\npnpm --filter \"@mui/x-data-grid\" run typescript # single package\npnpm --filter \"@mui/x-data-grid*\" run typescript # glob pattern (all data-grid packages)\npnpm --filter \"@mui/x-charts*\" run typescript # all charts packages\npnpm typescript # typecheck the entire monorepo\n```\n\n## Components documentation\n\nWhen editing React components or TypeScript types/interfaces in the `packages` folder, run the following script after you're done with the changes:\n\n```bash\npnpm proptypes # generate PropTypes\npnpm docs:api # generate/update the API documentation\n```\n\n## Error Messages\n\nThese guidelines only apply for errors thrown from public packages.\n\nEvery error message must:\n\n1. **Say what happened** - Describe the problem clearly\n2. **Say why it's a problem** - Explain the consequence\n3. **Point toward how to solve it** - Give actionable guidance\n\nFormat:\n\n- Prefix with `MUI X:` (for internal or generic packages) and `MUI X PackageName:` (for example, `MUI X Charts:` or `MUI X Data Grid:`) for specific packages\n- Use string concatenation for readability\n- Include a documentation link when applicable (`https://mui.com/x/...`)\n\nExample:\n\n```tsx\nthrow new Error(\n  `MUI X Charts: The series configuration is missing a required serializer.\nThis prevents the chart from identifying series items correctly.\nEnsure each series type registers its serializer in the seriesConfig.`,\n);\n```\n\n### Error Minifier\n\nUse the `/* minify-error-disabled */` comment to de-activate the babel plugin for small error messages:\n\n```tsx\nthrow /* minify-error-disabled */ new Error(`MUI X: Unreachable`);\n```\n\nThe minifier works with both `Error` and `TypeError` constructors.\n\n### After Adding/Updating Errors\n\nRun `pnpm extract-error-codes` to update `docs/public/static/error-codes.json`.\n\n**Important:** If the update created a new error code, but the new and original message have the same number of arguments and semantics haven't changed, update the original error in `error-codes.json` instead of creating a new code.\n\n## Dependencies\n\n- Examples (`examples/`) are standalone projects — never use `catalog:` for their dependencies. Always use explicit version ranges.\n\n## Other scripts\n\nRefer to `package.json` for other available scripts.\n\n## Docs\n\n### Updating docs demos\n\nWhen updating demos in the `docs` folder, only update the `.tsx` files.\nTo generate `.js` files, run `pnpm docs:typescript:formatted`.\nAfter updating the demo, run `pnpm eslint` and `pnpm valelint` to ensure the markdown files are valid. Fix the found issues.\n\n## Codemods\n\nCodemods are run by consumers of the MUI X libraries to migrate to newer versions of the libraries.\n\nWhen adding a new codemod, make sure to also document it in the `packages/x-codemod/README.md` following existing examples.\nYou also need to create or expand the `preset-safe` preset to include the new codemod, document the preset in the `README.md` and also include the newly added changes to the `preset-safe` test.\n\n### Versioning\n\nWhen creating codemods, the code should be created in the directory of the target version. E.g., a codemod to migrate from v8 to v9 should be placed inside the `v9.0.0` directory.\n\n### Writing codemods\n\nWhen writing codemods, first check in the `src/util` folder of the `x-codemod` package if there are any utilities that can help you.\n",".claude/skills/mui-x-review/SKILL.md":"---\nname: mui-x-review\ndescription: 'Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings.'\n---\n\n# MUI X Review\n\nThis is the Claude Code entrypoint for the shared repo skill.\n\nOnly run when the user explicitly asks for this skill by name\n(`/mui-x-review`, `$mui-x-review`, \"the MUI X review skill\", or a CI job\nconfigured to use it). Do not trigger on a generic \"review my changes\" request\nor after finishing an implementation.\n\nBefore reviewing, read `.agents/skills/mui-x-review/SKILL.md` completely and\nfollow that canonical workflow. Pass through any user arguments such as `low`,\n`medium`, `high`, `xhigh`, `max`, `--comment`, `--comment inline`, `--fix`, or a\nreview target.\n",".agents/skills/mui-release/SKILL.md":"---\nname: mui-release\ndescription: Run or assist a release in any MUI repo, at any stage - release PR, npm publish, docs deploy, GitHub release.\nargument-hint: '[target-version]'\n---\n\n# MUI Release\n\nEvery MUI repo releases through the same staged pipeline. Each stage depends on the previous one completing — never start a stage before its predecessor is done. This skill describes the shared skeleton; the details vary per repo.\n\n**Resumable:** the skill can be invoked at any stage — a release often spans multiple sessions (e.g. the PR was created and merged earlier, and the user now wants to trigger the npm publish). In the pipeline diagram below, each arrow out of a stage states the observable evidence that the stage is complete: resume at the first stage whose evidence is missing. Confirm the detected stage with the user before continuing; earlier stages' outputs are inputs, not work to redo.\n\n**Source of truth:** the target repo's `scripts/README.md` is the authoritative, evolving runbook. Always read it in the target checkout before releasing; use this skill to know what the stages mean and what to expect. Where the README contradicts this skill, the README wins. Repo-specific steps (docs release pages, hotfix flows, prerelease progressions, docs-only deploys, first-time package publishing) live only there. Repos without that runbook: read their release workflow directly.\n\n## The pipeline\n\nEach stage's instructions live in its own file — after detecting and confirming the current stage, read **that stage's file**:\n\n```mermaid\nflowchart TD\n    S1[\"Stage 1: Prepare the release PR\\n(stage-1-prepare-pr.md)\"]\n    S2[\"Stage 2: Merge the PR, then publish\\n(stage-2-publish-packages.md)\"]\n    S3[\"Stage 3: Publish the docs\\n(stage-3-publish-docs.md)\"]\n    S4[\"Stage 4: Publish the GitHub release, then announce\\n(stage-4-github-release.md)\"]\n\n    S1 -- \"open PR with the release label,\\napproved, CI green\" --> S2\n    S2 -- \"release PR merged, packages on npm at\\nthe new version, draft GitHub release created\" --> S3\n    S3 -- \"docs live for the new version\" --> S4\n    S4 -- \"published non-draft GitHub release for the\\ncurrent root package.json version\\n(release done, next one starts at Stage 1)\" --> S1\n```\n\nVerify each stage's evidence with read-only commands (run in the target checkout; `<version>` is the root `package.json` version):\n\n```bash\n# release PR: open (stage 1) or merged (stage 2 done merging)\ngh pr list --label release --state open --json number,title,reviewDecision\ngh pr list --label release --state merged --limit 1 --json number,title,mergedAt\ngh pr checks <number>                      # CI green?\n\n# packages on npm at the new version\nnpm view <main-package>@<version> version\n\n# GitHub release: exists? still a draft?\ngh release list --limit 5 --json tagName,isDraft,isLatest\ngh release view \"v<version>\" --json tagName,isDraft\n\n# docs live for the new version\ncurl -s <docs-url> | grep \"<version>\"      # or check the Netlify dashboard\n```\n","CLAUDE.md":"# Project guidelines\n\nRefer to @AGENTS.md\n","packages/mcp/README.md":"# `@mui/mcp`\n\nMUI's [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server. Exposes MUI documentation and code-generation tools to any MCP-capable AI client (Claude Code, Cursor, Zed, Continue, etc.) so an agent can answer MUI questions with real, up-to-date docs and generate React + Material UI code.\n\n## What it exposes\n\nThree stdio-based tools, backed by [@mui/x-agent-tools](../x-agent-tools/):\n\n- `useMuiDocs(sources)` : returns the docs catalog (URLs + summaries) for one or more MUI packages (for example `@mui/material`, `@mui/x-data-grid`). Each source is an llms.txt URL or a bare package name. Agents typically use this first to find the right docs page.\n- `fetchDocs(urls)` : fetches the full content of one or more docs URLs (typically taken from a `useMuiDocs` response).\n- `generateReactCode({ prompt, threadId?, designContext?, muiPairing?, model? })` : generates React + Material UI code from a natural-language prompt (optionally grounded in a Figma frame). Returns the generated files plus a short explanation. Requires `MUI_RECIPES_API_KEY`. Pass `threadId` back on subsequent calls to keep multi-turn conversations on the same chat. Pass `muiPairing` to target a specific MUI / MUI X major (see [Targeting a MUI version](#targeting-a-mui-version)).\n\n## Quick start\n\n```bash\npnpm install                          # once, from repo root\npnpm --filter @mui/mcp build:local    # builds @mui/x-agent-tools first, then @mui/mcp -> build/stdio.js\n```\n\nSmoke test:\n\n```bash\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"test\",\"version\":\"0.1\"}}}' \\\n  | node packages/mcp/build/stdio.js\n```\n\nExpected: `serverInfo: { name: \"mui-mcp\", version: \"0.x.0\" }` and the supported `capabilities`.\n\n## Connecting an MCP client\n\n**Available env vars** (all set via your client's config below):\n\n- `MUI_DOCS_BASE_URL` (optional, default `https://chat-backend.mui.com`): docs-catalog API base URL. Override when developing against a local backend.\n- `MUI_RECIPES_API_KEY` (required for `generateReactCode`): API key created at console.mui.com/products/recipes/api-keys. The server exchanges it for a short-lived JWT on the first call and caches the JWT in memory. The docs tools above keep working without it; only codegen requires it.\n- `MUI_BACKEND_BASE_URL` (optional, default `https://api.mui.com`): mui-backend base URL (where API-key → JWT exchange happens). Override for local dev, typically `http://localhost:5002`.\n- `MUI_RECIPES_BACKEND_BASE_URL` (optional, default `https://chat-backend.mui.com`): recipes-backend base URL (where codegen runs). Override for local dev, typically `http://localhost:5003`.\n\n### Claude Code CLI (simplest)\n\n```bash\nclaude mcp add mui-local \\\n  -e MUI_RECIPES_API_KEY=recipes_cli_... \\\n  -e MUI_BACKEND_BASE_URL=http://localhost:5002 \\\n  -e MUI_RECIPES_BACKEND_BASE_URL=http://localhost:5003 \\\n  -e MUI_DOCS_BASE_URL=http://localhost:5003 \\\n  -- node /absolute/path/to/mui-x/packages/mcp/build/stdio.js\n```\n\nDrop any `-e` line you don't need (codegen is the only tool that requires an API key). The `--` separator is required when passing env vars. Verify with `claude mcp list`; remove with `claude mcp remove mui-local`. Writes to your personal `~/.claude.json`, never to the repo's shared `.mcp.json`.\n\nTest prompts:\n\n- Docs lookup:\n  > Use `useMuiDocs` to look up the docs catalog for `@mui/material`. Then fetch the most relevant URL and summarize the `Button` component API.\n- Codegen (requires `MUI_RECIPES_API_KEY`):\n  > Use `generateReactCode` to build a Tomato product card with image, title, price, and an Add-to-cart button.\n\n### Claude Desktop / Cursor / other JSON-config clients\n\nEdit the client's config file (`~/Library/Application Support/Claude/claude_desktop_config.json` for Claude Desktop, `~/.cursor/mcp.json` for Cursor, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"mui-local\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mui-x/packages/mcp/build/stdio.js\"],\n      \"env\": {\n        \"MUI_RECIPES_API_KEY\": \"recipes_cli_...\",\n        \"MUI_BACKEND_BASE_URL\": \"http://localhost:5002\",\n        \"MUI_RECIPES_BACKEND_BASE_URL\": \"http://localhost:5003\",\n        \"MUI_DOCS_BASE_URL\": \"http://localhost:5003\"\n      }\n    }\n  }\n}\n```\n\nDrop any `env` key you don't need (only codegen requires `MUI_RECIPES_API_KEY`). Restart the client.\n\n### MCP Inspector (debug, no client setup needed)\n\n```bash\npnpm --filter @mui/mcp mcp-inspector\n```\n\nBuilds the server, then opens a web UI to call tools and inspect responses in isolation.\n\n## Targeting a MUI version\n\n`generateReactCode` accepts a `muiPairing` field to target a specific MUI / MUI X major. The shape mirrors the version picker on recipes.mui.com:\n\n```ts\nmuiPairing: {\n  material: 'v5' | 'v6' | 'v7' | 'v9',     // Material UI core; v8 was skipped\n  muiX: 'v5' | 'v6' | 'v7' | 'v8' | 'v9'   // MUI X products (DataGrid, DatePickers, etc.)\n}\n```\n\n**Default when omitted**: latest stable pairing (`{ material: 'v9', muiX: 'v9' }` today). Generation stays current with whatever the backend treats as latest.\n\n**Agents should detect and pass** `muiPairing` **for projects pinned to older majors.** Read the project's `package.json`, look at `@mui/material` and `@mui/x-data-grid` ranges, and forward the matching pair. A project pinned to `@mui/material ^7.x` + `@mui/x-data-grid ^8.x` should send `{ material: 'v7', muiX: 'v8' }`. Without this, the agent will silently get v9 code on a v7 codebase.\n\nExample MCP client prompt the host can ship as a guideline:\n\n> Before calling `generateReactCode`, read `package.json` and look up `@mui/material` and `@mui/x-data-grid` (or `@mui/x-data-grid-premium` / `@mui/x-date-pickers`). Pass the detected majors as `muiPairing`. Omit it only if no MUI dependencies are present.\n\n### Response footer\n\nEvery successful call returns the **effective pairing** on the result (and in the rendered text footer), even when the caller omitted `muiPairing`. Use this to confirm what the backend actually applied:\n\n```text\nthreadId: `chat-abc123` (pass on follow-up calls to continue this conversation).\nmuiPairing: `v7` + `v8` (effective targeting)\n```\n\n- Caller provided a pairing → echoes it back.\n- Caller omitted on a follow-up → returns the thread's locked pairing.\n- Caller omitted on a new thread → returns the resolver's default (currently `v9` + `v9`).\n\n## Tips for best results\n\n### Boost agent tool selection in your project\n\nWhen prompts don't explicitly name `generateReactCode`, hosts like Claude Code Agent (WebStorm/Cursor) sometimes pick built-in file-edit tools instead of the MCP, even on prompts that are clearly about Material UI. To nudge selection in your project, drop the following into your repo's `CLAUDE.md` (or your host's equivalent project-config file):\n\n```markdown\n## Generating Material UI components\n\nWhen the user asks to create, scaffold, or implement a Material UI / MUI component or page, prefer the `generateReactCode` MCP tool over writing the component from scratch with `Edit` / `Write`. It stays current with MUI v7 idioms (Grid not Grid2, current MUI X DataGrid props) and grounds in Figma context when available.\n\nBefore calling `generateReactCode`, read `package.json` to detect the project's MUI majors (`@mui/material`, `@mui/x-data-grid`) and pass them as `muiPairing` so the generated code matches the installed versions.\n```\n\nThis compounds with the tool's prescriptive description: the per-project hint reaches the agent in places the global description doesn't.\n\n### What the agent will do with the output\n\nAcross the MCP-host UIs we've tested (Claude Code Agent in WebStorm), the host agent treats `generateReactCode`'s output as a structured suggestion rather than a verbatim file dump. Expect:\n\n- `App.tsx` **is usually discarded or replaced.** The MCP emits an entry-file wrapper alongside the component. Host agents drop it when the project already has a host shell (Next.js page, Vite `main.tsx`, Storybook story, etc.).\n- **Component filenames get renamed to match project conventions.** `components/ContactForm.tsx` may become `contact-form.tsx`; PascalCase may become kebab-case. The `filename` we emit is advisory.\n- **Component bodies stay intact.** When the agent does adapt, it adjusts wrappers and paths, not the React code itself.\n- **Stack-mismatch warnings surface before writing.** On non-MUI projects (Radix, Tailwind-only, etc.) the agent typically asks before writing MUI-importing code, or surfaces a caveat. This is correct, conservative behavior.\n\nIf you're building an integration around `generateReactCode`, design for \"the agent will adapt the shell, keep the body\" rather than \"write all returned files verbatim.\"\n\n## Development\n\nThis package is a thin adapter that registers MUI's agent tools over the MCP protocol. The tool logic and shared infrastructure (auth, logging, retry, caching) live in [@mui/x-agent-tools](../x-agent-tools/); this package only maps them onto MCP handlers.\n\nDev loop: edit `src/`, rebuild, restart your MCP client (Inspector reloads automatically). `build:local`\nalso rebuilds `@mui/x-agent-tools` when you change it (skipped when unchanged).\n\n```bash\npnpm --filter @mui/mcp build:local\n```\n\nSource layout:\n\n```text\npackages/mcp/\n├── src/\n│   ├── stdio.ts            # entry: builds the server and registers the tools\n│   ├── version.ts          # reads the package version (works in the flat published layout)\n│   ├── docs/\n│   │   ├── handler.ts      # adapts the docs tools to MCP handlers\n│   │   └── register.ts     # builds + registers useMuiDocs / fetchDocs\n│   └── codegen/\n│       ├── handler.ts      # adapts generateReactCode to an MCP handler\n│       ├── progress.ts     # forwards codegen progress as MCP notifications\n│       └── register.ts     # builds + registers generateReactCode\n├── build/                  # code-infra build output, gitignored; build/stdio.js is what clients spawn\n├── package.json\n└── tsconfig.json\n```\n\nBuilt with the standard `code-infra` toolchain. The docs/codegen logic lives in [@mui/x-agent-tools](../x-agent-tools/), a published dependency that pnpm links from its `build/` output, so it must be built first: the `build:local` script (`pnpm --filter @mui/mcp build:local`, which expands to `pnpm --filter \"@mui/mcp...\" build`) handles that.\n\n## Publishing\n\nPublished to npm as [@mui/mcp](https://www.npmjs.com/package/@mui/mcp). End users consume it via `npx` (no local build), pointing at the published version:\n\n```json\n{ \"mcpServers\": { \"mui\": { \"command\": \"npx\", \"args\": [\"-y\", \"@mui/mcp\"] } } }\n```\n\n## Troubleshooting\n\n- **Client doesn't see the server.** Verify the path in your client's config is absolute and points at the actual built file. Restart the client after editing config.\n- `MUI_DOCS_BASE_URL` **errors.** Default backend may be cold-starting (Render free tier). Wait a few seconds and retry, or point at a local backend via env var.\n- `Missing API key` **from** `generateReactCode`**.** Set `MUI_RECIPES_API_KEY` in your client's env. Create a key at console.mui.com/products/recipes/api-keys.\n- `Token exchange failed` **/ 401 on codegen.** Check `MUI_BACKEND_BASE_URL`. Default is `https://api.mui.com`; for local mui-backend, set it to `http://localhost:5002`. A 401 also means the API key was revoked: create a new one.\n- `Generation stream ended unexpectedly` **on codegen.** The recipes-backend SSE was truncated mid-stream (transient proxy hangup, backend restart, etc.). Retry.\n","packages/eslint-plugin-mui-x/package.json":"{\n  \"name\": \"eslint-plugin-mui-x\",\n  \"private\": true,\n  \"description\": \"Custom eslint rules for MUI X.\",\n  \"type\": \"module\",\n  \"main\": \"src/index.mjs\",\n  \"dependencies\": {\n    \"@typescript-eslint/utils\": \"^8.71.1\"\n  },\n  \"devDependencies\": {\n    \"@types/eslint\": \"9.6.1\",\n    \"@types/react\": \"catalog:\",\n    \"@typescript-eslint/parser\": \"catalog:\",\n    \"@typescript-eslint/rule-tester\": \"8.71.1\"\n  },\n  \"scripts\": {\n    \"test\": \"vitest\"\n  }\n}\n",".claude/skills/mui-release":"../../.agents/skills/mui-release","packages/mcp/tsconfig.json":"{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    // Node-targeted server: uses process, node:fs/os/path, etc. @types/node is a devDependency so\n    // the isolated CI environment (which only sees declared deps) can resolve these.\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n","packages/eslint-plugin-mui-x/tsconfig.json":"{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"preserve\",\n    \"target\": \"es5\",\n    \"module\": \"preserve\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"lib\": [\"es2015\", \"es2017\", \"esnext\"],\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n","packages/mcp/package.json":"{\n  \"name\": \"@mui/mcp\",\n  \"version\": \"0.1.8\",\n  \"author\": \"MUI Team\",\n  \"description\": \"MUI MCP Server\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/mui/mui-x/issues\"\n  },\n  \"homepage\": \"https://github.com/mui/mui-x/tree/master/packages/mcp#readme\",\n  \"bin\": \"./src/stdio.ts\",\n  \"sideEffects\": false,\n  \"publishConfig\": {\n    \"access\": \"public\",\n    \"directory\": \"build\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mui/mui-x.git\",\n    \"directory\": \"packages/mcp\"\n  },\n  \"dependencies\": {\n    \"@babel/runtime\": \"catalog:\",\n    \"@modelcontextprotocol/sdk\": \"^1.32.1\",\n    \"@mui/x-agent-tools\": \"workspace:^\",\n    \"zod\": \"^4.6.5\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"22.20.5\",\n    \"rimraf\": \"catalog:\",\n    \"vitest\": \"catalog:\"\n  },\n  \"scripts\": {\n    \"typescript\": \"tsc -p tsconfig.json\",\n    \"build\": \"code-infra build --tsgo --bundle cjs --buildTypes false\",\n    \"build:local\": \"pnpm --filter \\\"@mui/mcp...\\\" build\",\n    \"prebuild\": \"rimraf build tsconfig.build.tsbuildinfo\",\n    \"mcp-inspector\": \"pnpm build:local && npx -y @modelcontextprotocol/inspector node build/stdio.js\",\n    \"test\": \"vitest run --config vitest.config.node.mts\"\n  },\n  \"engines\": {\n    \"node\": \">=22.12\"\n  }\n}\n","packages/x-agent-tools/README.md":"# `@mui/x-agent-tools`\n\nThe building blocks behind MUI's AI agent integrations. It implements the MUI documentation and code-generation tools that host packages expose to AI clients, plus the shared infrastructure they run on: JWT auth, SSRF-guarded fetching, caching, retry, and logging.\n\nThis is a library used by host packages such as [@mui/mcp](../mcp/), not something end users install directly.\n\n`zod` is a peer dependency: a host that installs `@mui/x-agent-tools` must also install `zod`, so the tool schemas share a single zod instance across the boundary.\n\n## What's inside\n\n- **Composition layer**: `resolveAgentToolsConfig` reads the backend config from env vars, and `createMuiAgentToolset` assembles the full toolset (SSRF guard, catalog retry, fail-soft, shared cache/queue baked in). The recommended entry point for a host.\n- **Docs tools**: `createDocsTools` builds the `useMuiDocs` / `fetchDocs` tools that look up and fetch MUI docs (`createUseMuiDocsTool` / `createFetchDocTool` are the lower-level factories). `fetchRemotePackages` loads the docs catalog.\n- **Codegen**: `createCodegenTool` generates React + Material UI code from a prompt (POST + buffered SSE). `formatCodegenText` renders the result for a text client.\n- **Auth**: `ApiKeyJwtClient` exchanges a `MUI_RECIPES_API_KEY` for a short-lived JWT (in-memory cache, refresh window, concurrent-call dedup).\n- **Utils**: `LRUCache`, `buildCombinedLogger`, and `createDocsUrlGuard` (the SSRF allowlist for docs fetches).\n\n## Usage\n\nA host composes the toolset and adapts it to its protocol. Minimal sketch:\n\n```ts\nimport { resolveAgentToolsConfig, createMuiAgentToolset } from '@mui/x-agent-tools';\n\nconst toolset = await createMuiAgentToolset(resolveAgentToolsConfig(), { logger });\n\n// codegenTool and fetchDocsTool are ready immediately; neither needs the catalog.\nconst code = await toolset.codegenTool.execute({ prompt: 'Build a product card' }, { signal });\nconst docs = await toolset.fetchDocsTool.execute({ urls: ['https://mui.com/x/...'] }, { signal });\n\n// useMuiDocs needs the catalog; useMuiDocsReady resolves once it settles. Never rejects (fail-soft).\nconst useMuiDocsTool = await toolset.useMuiDocsReady;\nif (useMuiDocsTool) {\n  // null when the catalog was unreachable; codegenTool + fetchDocsTool still work.\n  const grid = await useMuiDocsTool.execute({ sources: ['@mui/x-data-grid'] }, { signal });\n}\n\n// On host shutdown, release the toolset's background resources (docs cache timer + fetch queue).\ntoolset.dispose();\n```\n\nEvery tool exposes `{ name, description, inputSchema, outputSchema, execute(input, ctx?) }`, where `ctx` carries an optional `signal` and `onProgress`. `execute` validates its input against `inputSchema`, so hosts don't need a validation layer of their own. See [@mui/mcp](../mcp/src/) for a full host wiring.\n\n## Development\n\n```bash\npnpm test:unit --project \"@mui/x-agent-tools\" --run\npnpm --filter \"@mui/x-agent-tools\" run typescript\n```\n\nSource layout:\n\n```text\nsrc/\n├── auth/       ApiKeyJwtClient + authed fetch (JWT exchange, 401 retry)\n├── codegen/    generateReactCode: schemas, SSE stream, error mapping, tool, builder\n├── docs/       useMuiDocs / fetchDocs, package catalog, SSRF url guard, fetcher, builder\n├── utils/      cache (LRU), retry, logger, wrapTool\n├── config.ts   env var names, backend defaults, resolveAgentToolsConfig\n├── toolset.ts  createMuiAgentToolset (composes the codegen + docs builders)\n├── types.ts    shared types (AgentTool, ToolExecutionContext, ...)\n└── index.ts    public barrel\n```\n\nBuilt with the standard `code-infra` toolchain and published to npm as `@mui/x-agent-tools`.\n","packages/x-agent-tools/package.json":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/package.json)","packages/x-agent-tools/tsconfig.build.json":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.build.json)","packages/x-agent-tools/tsconfig.json":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.json)","packages/x-charts-premium/README.md":"# x-charts-premium Documentation\n\nPath: `packages/x-charts-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/README.md)","packages/x-charts-premium/package.json":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/package.json)","packages/x-charts-premium/tsconfig.build.json":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.build.json)","packages/x-charts-premium/tsconfig.json":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.json)","packages/x-charts-pro/README.md":"# x-charts-pro Documentation\n\nPath: `packages/x-charts-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/README.md)","packages/x-charts-pro/package.json":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/package.json)","packages/x-charts-pro/tsconfig.build.json":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.build.json)","packages/x-charts-pro/tsconfig.json":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.json)","packages/x-charts-vendor/README.md":"# x-charts-vendor Documentation\n\nPath: `packages/x-charts-vendor/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/README.md)","packages/x-charts-vendor/package.json":"# X-charts-vendor Skill\n\nPath: `packages/x-charts-vendor/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/package.json)","packages/x-charts-vendor/tsconfig.json":"# X-charts-vendor Skill\n\nPath: `packages/x-charts-vendor/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/tsconfig.json)","packages/x-charts/README.md":"# x-charts Documentation\n\nPath: `packages/x-charts/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/README.md)","packages/x-charts/package.json":"# X-charts Skill\n\nPath: `packages/x-charts/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/package.json)","packages/x-charts/tsconfig.build.json":"# X-charts Skill\n\nPath: `packages/x-charts/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.build.json)","packages/x-charts/tsconfig.json":"# X-charts Skill\n\nPath: `packages/x-charts/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.json)","packages/x-chat-headless/README.md":"# x-chat-headless Documentation\n\nPath: `packages/x-chat-headless/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/README.md)","packages/x-chat-headless/package.json":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/package.json)","packages/x-chat-headless/tsconfig.build.json":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/tsconfig.build.json)","packages/x-chat-headless/tsconfig.json":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/tsconfig.json)","packages/x-chat/README.md":"# x-chat Documentation\n\nPath: `packages/x-chat/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/README.md)","packages/x-chat/package.json":"# X-chat Skill\n\nPath: `packages/x-chat/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/package.json)","packages/x-chat/tsconfig.build.json":"# X-chat Skill\n\nPath: `packages/x-chat/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/tsconfig.build.json)","packages/x-chat/tsconfig.json":"# X-chat Skill\n\nPath: `packages/x-chat/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/tsconfig.json)","packages/x-codemod/README.md":"# x-codemod Documentation\n\nPath: `packages/x-codemod/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/README.md)","packages/x-codemod/package.json":"# X-codemod Skill\n\nPath: `packages/x-codemod/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/package.json)","packages/x-codemod/tsconfig.json":"# X-codemod Skill\n\nPath: `packages/x-codemod/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/tsconfig.json)","packages/x-data-grid-generator/README.md":"# x-data-grid-generator Documentation\n\nPath: `packages/x-data-grid-generator/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/README.md)","packages/x-data-grid-generator/package.json":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/package.json)","packages/x-data-grid-generator/tsconfig.build.json":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/tsconfig.build.json)","packages/x-data-grid-generator/tsconfig.json":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/tsconfig.json)","packages/x-data-grid-premium/README.md":"# x-data-grid-premium Documentation\n\nPath: `packages/x-data-grid-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/README.md)","packages/x-data-grid-premium/package.json":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/package.json)","packages/x-data-grid-premium/tsconfig.build.json":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/tsconfig.build.json)","packages/x-data-grid-premium/tsconfig.json":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/tsconfig.json)","packages/x-data-grid-pro/README.md":"# x-data-grid-pro Documentation\n\nPath: `packages/x-data-grid-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/README.md)","packages/x-data-grid-pro/package.json":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/package.json)","packages/x-data-grid-pro/tsconfig.build.json":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/tsconfig.build.json)","packages/x-data-grid-pro/tsconfig.json":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/tsconfig.json)","packages/x-data-grid/README.md":"# x-data-grid Documentation\n\nPath: `packages/x-data-grid/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/README.md)","packages/x-data-grid/package.json":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/package.json)","packages/x-data-grid/tsconfig.build.json":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/tsconfig.build.json)","packages/x-data-grid/tsconfig.json":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/tsconfig.json)","packages/x-date-pickers-pro/README.md":"# x-date-pickers-pro Documentation\n\nPath: `packages/x-date-pickers-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/README.md)","packages/x-date-pickers-pro/package.json":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/package.json)","packages/x-date-pickers-pro/tsconfig.build.json":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/tsconfig.build.json)","packages/x-date-pickers-pro/tsconfig.json":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/tsconfig.json)","packages/x-date-pickers/README.md":"# x-date-pickers Documentation\n\nPath: `packages/x-date-pickers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/README.md)","packages/x-date-pickers/package.json":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/package.json)","packages/x-date-pickers/tsconfig.build.json":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/tsconfig.build.json)","packages/x-date-pickers/tsconfig.json":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/tsconfig.json)","packages/x-internal-gestures/README.md":"# x-internal-gestures Documentation\n\nPath: `packages/x-internal-gestures/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/README.md)","packages/x-internal-gestures/package.json":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/package.json)","packages/x-internal-gestures/tsconfig.build.json":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/tsconfig.build.json)","packages/x-internal-gestures/tsconfig.json":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/tsconfig.json)","packages/x-internals/README.md":"# x-internals Documentation\n\nPath: `packages/x-internals/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/README.md)","packages/x-internals/package.json":"# X-internals Skill\n\nPath: `packages/x-internals/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/package.json)","packages/x-internals/tsconfig.build.json":"# X-internals Skill\n\nPath: `packages/x-internals/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/tsconfig.build.json)","packages/x-internals/tsconfig.json":"# X-internals Skill\n\nPath: `packages/x-internals/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/tsconfig.json)","packages/x-license/README.md":"# x-license Documentation\n\nPath: `packages/x-license/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/README.md)","packages/x-license/package.json":"# X-license Skill\n\nPath: `packages/x-license/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/package.json)","packages/x-license/tsconfig.build.json":"# X-license Skill\n\nPath: `packages/x-license/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/tsconfig.build.json)","packages/x-license/tsconfig.json":"# X-license Skill\n\nPath: `packages/x-license/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/tsconfig.json)","packages/x-scheduler-internals-premium/README.md":"# x-scheduler-internals-premium Documentation\n\nPath: `packages/x-scheduler-internals-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/README.md)","packages/x-scheduler-internals-premium/package.json":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/package.json)","packages/x-scheduler-internals-premium/tsconfig.build.json":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/tsconfig.build.json)","packages/x-scheduler-internals-premium/tsconfig.json":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/tsconfig.json)","packages/x-scheduler-internals/README.md":"# x-scheduler-internals Documentation\n\nPath: `packages/x-scheduler-internals/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/README.md)","packages/x-scheduler-internals/package.json":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/package.json)","packages/x-scheduler-internals/tsconfig.build.json":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/tsconfig.build.json)","packages/x-scheduler-internals/tsconfig.json":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/tsconfig.json)","packages/x-scheduler-premium/README.md":"# x-scheduler-premium Documentation\n\nPath: `packages/x-scheduler-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/README.md)","packages/x-scheduler-premium/package.json":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/package.json)","packages/x-scheduler-premium/tsconfig.build.json":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/tsconfig.build.json)","packages/x-scheduler-premium/tsconfig.json":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/tsconfig.json)","packages/x-scheduler/README.md":"# x-scheduler Documentation\n\nPath: `packages/x-scheduler/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/README.md)","packages/x-scheduler/package.json":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/package.json)","packages/x-scheduler/tsconfig.build.json":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/tsconfig.build.json)","packages/x-scheduler/tsconfig.json":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/tsconfig.json)","packages/x-telemetry/README.md":"# x-telemetry Documentation\n\nPath: `packages/x-telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/README.md)","packages/x-telemetry/package.json":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/package.json)","packages/x-telemetry/tsconfig.build.json":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/tsconfig.build.json)","packages/x-telemetry/tsconfig.json":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/tsconfig.json)","packages/x-tree-view-pro/README.md":"# x-tree-view-pro Documentation\n\nPath: `packages/x-tree-view-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/README.md)","packages/x-tree-view-pro/package.json":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/package.json)","packages/x-tree-view-pro/tsconfig.build.json":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/tsconfig.build.json)","packages/x-tree-view-pro/tsconfig.json":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/tsconfig.json)","packages/x-tree-view/README.md":"# x-tree-view Documentation\n\nPath: `packages/x-tree-view/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/README.md)","packages/x-tree-view/package.json":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/package.json)","packages/x-tree-view/tsconfig.build.json":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/tsconfig.build.json)","packages/x-tree-view/tsconfig.json":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/tsconfig.json)","packages/x-virtualizer/README.md":"# x-virtualizer Documentation\n\nPath: `packages/x-virtualizer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/README.md)","packages/x-virtualizer/package.json":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/package.json)","packages/x-virtualizer/tsconfig.build.json":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/tsconfig.build.json)","packages/x-virtualizer/tsconfig.json":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/tsconfig.json)",".agents/skills/mui-release/stage-1-prepare-pr.md":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-1-prepare-pr.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-1-prepare-pr.md)",".agents/skills/mui-release/stage-2-publish-packages.md":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-2-publish-packages.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-2-publish-packages.md)",".agents/skills/mui-release/stage-3-publish-docs.md":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-3-publish-docs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-3-publish-docs.md)",".agents/skills/mui-release/stage-4-github-release.md":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-4-github-release.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-4-github-release.md)",".agents/skills/mui-x-review/agents/openai.yaml":"# Agents Skill\n\nPath: `.agents/skills/mui-x-review/agents/openai.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-x-review/agents/openai.yaml)","docs/data/charts/plugins/plugins.md":"# Plugins Skill\n\nPath: `docs/data/charts/plugins/plugins.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/plugins/plugins.md)","docs/data/charts/references/references.md":"# References Skill\n\nPath: `docs/data/charts/references/references.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/references/references.md)","packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json":"# Fixtures Skill\n\nPath: `packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json)","packages/x-internal-gestures/src/core/README.md":"# core Documentation\n\nPath: `packages/x-internal-gestures/src/core/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/core/README.md)","packages/x-internal-gestures/src/matchers/README.md":"# matchers Documentation\n\nPath: `packages/x-internal-gestures/src/matchers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/matchers/README.md)","packages/x-internal-gestures/src/testing/README.md":"# testing Documentation\n\nPath: `packages/x-internal-gestures/src/testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/testing/README.md)"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# Project guidelines\n\nCheck `AGENTS.local.md` for personal preferences.\n\n## Linting and formatting\n\n### Linting\n\n```bash\npnpm eslint\npnpm eslint:fix # Auto-fix issues\n```\n\n### Formatting\n\n```bash\npnpm prettier # Format changed files (compared to master)\npnpm prettier:all # Format all files\n```\n\n### Other Linters\n\n```bash\npnpm stylelint # when editing CSS/style files\npnpm generate:exports # when editing code in `packages/x-charts*`\n```\n\n## Testing\n\n### Run unit tests in jsdom\n\n```bash\n# Filter by project name (glob patterns supported)\n# --run flag = run tests once and exit\npnpm test:unit --project \"x-data-grid\" --run # exact match\npnpm test:unit --project \"x-charts*\" --run # starts with\npnpm test:unit --project \"*-pro\" --run # ends with\n```\n\n### Run unit tests in the browser\n\n```bash\n# Filter by project name (glob patterns supported)\n# --run flag = run tests once and exit\npnpm test:browser --project \"x-data-grid\" --run # exact match\npnpm test:browser --project \"x-charts*\" --run # starts with\npnpm test:browser --project \"*-pro\" --run # ends with\n```\n\n### Writing new unit tests\n\n#### Ensuring a test only runs in a specific environment\n\n- Use `it.skipIf(isJSDOM)` to skip when running unit tests\n- Use `it.skipIf(!isJSDOM)` to run only in browser mode.\n\n## TypeScript\n\n```bash\n# Using pnpm filter\npnpm --filter \"@mui/x-data-grid\" run typescript # single package\npnpm --filter \"@mui/x-data-grid*\" run typescript # glob pattern (all data-grid packages)\npnpm --filter \"@mui/x-charts*\" run typescript # all charts packages\npnpm typescript # typecheck the entire monorepo\n```\n\n## Components documentation\n\nWhen editing React components or TypeScript types/interfaces in the `packages` folder, run the following script after you're done with the changes:\n\n```bash\npnpm proptypes # generate PropTypes\npnpm docs:api # generate/update the API documentation\n```\n\n## Error Messages\n\nThese guidelines only apply for errors thrown from public packages.\n\nEvery error message must:\n\n1. **Say what happened** - Describe the problem clearly\n2. **Say why it's a problem** - Explain the consequence\n3. **Point toward how to solve it** - Give actionable guidance\n\nFormat:\n\n- Prefix with `MUI X:` (for internal or generic packages) and `MUI X PackageName:` (for example, `MUI X Charts:` or `MUI X Data Grid:`) for specific packages\n- Use string concatenation for readability\n- Include a documentation link when applicable (`https://mui.com/x/...`)\n\nExample:\n\n```tsx\nthrow new Error(\n  `MUI X Charts: The series configuration is missing a required serializer.\nThis prevents the chart from identifying series items correctly.\nEnsure each series type registers its serializer in the seriesConfig.`,\n);\n```\n\n### Error Minifier\n\nUse the `/* minify-error-disabled */` comment to de-activate the babel plugin for small error messages:\n\n```tsx\nthrow /* minify-error-disabled */ new Error(`MUI X: Unreachable`);\n```\n\nThe minifier works with both `Error` and `TypeError` constructors.\n\n### After Adding/Updating Errors\n\nRun `pnpm extract-error-codes` to update `docs/public/static/error-codes.json`.\n\n**Important:** If the update created a new error code, but the new and original message have the same number of arguments and semantics haven't changed, update the original error in `error-codes.json` instead of creating a new code.\n\n## Dependencies\n\n- Examples (`examples/`) are standalone projects — never use `catalog:` for their dependencies. Always use explicit version ranges.\n\n## Other scripts\n\nRefer to `package.json` for other available scripts.\n\n## Docs\n\n### Updating docs demos\n\nWhen updating demos in the `docs` folder, only update the `.tsx` files.\nTo generate `.js` files, run `pnpm docs:typescript:formatted`.\nAfter updating the demo, run `pnpm eslint` and `pnpm valelint` to ensure the markdown files are valid. Fix the found issues.\n\n## Codemods\n\nCodemods are run by consumers of the MUI X libraries to migrate to newer versions of the libraries.\n\nWhen adding a new codemod, make sure to also document it in the `packages/x-codemod/README.md` following existing examples.\nYou also need to create or expand the `preset-safe` preset to include the new codemod, document the preset in the `README.md` and also include the newly added changes to the `preset-safe` test.\n\n### Versioning\n\nWhen creating codemods, the code should be created in the directory of the target version. E.g., a codemod to migrate from v8 to v9 should be placed inside the `v9.0.0` directory.\n\n### Writing codemods\n\nWhen writing codemods, first check in the `src/util` folder of the `x-codemod` package if there are any utilities that can help you.\n","isInternal":false,"tokens":1129,"sizeBytes":4623},{"name":"SKILL.md","path":".agents/skills/mui-release/SKILL.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/SKILL.md","title":"mui-release","category":"anthropic-skill","format":"markdown","content":"---\nname: mui-release\ndescription: Run or assist a release in any MUI repo, at any stage - release PR, npm publish, docs deploy, GitHub release.\nargument-hint: '[target-version]'\n---\n\n# MUI Release\n\nEvery MUI repo releases through the same staged pipeline. Each stage depends on the previous one completing — never start a stage before its predecessor is done. This skill describes the shared skeleton; the details vary per repo.\n\n**Resumable:** the skill can be invoked at any stage — a release often spans multiple sessions (e.g. the PR was created and merged earlier, and the user now wants to trigger the npm publish). In the pipeline diagram below, each arrow out of a stage states the observable evidence that the stage is complete: resume at the first stage whose evidence is missing. Confirm the detected stage with the user before continuing; earlier stages' outputs are inputs, not work to redo.\n\n**Source of truth:** the target repo's `scripts/README.md` is the authoritative, evolving runbook. Always read it in the target checkout before releasing; use this skill to know what the stages mean and what to expect. Where the README contradicts this skill, the README wins. Repo-specific steps (docs release pages, hotfix flows, prerelease progressions, docs-only deploys, first-time package publishing) live only there. Repos without that runbook: read their release workflow directly.\n\n## The pipeline\n\nEach stage's instructions live in its own file — after detecting and confirming the current stage, read **that stage's file**:\n\n```mermaid\nflowchart TD\n    S1[\"Stage 1: Prepare the release PR\\n(stage-1-prepare-pr.md)\"]\n    S2[\"Stage 2: Merge the PR, then publish\\n(stage-2-publish-packages.md)\"]\n    S3[\"Stage 3: Publish the docs\\n(stage-3-publish-docs.md)\"]\n    S4[\"Stage 4: Publish the GitHub release, then announce\\n(stage-4-github-release.md)\"]\n\n    S1 -- \"open PR with the release label,\\napproved, CI green\" --> S2\n    S2 -- \"release PR merged, packages on npm at\\nthe new version, draft GitHub release created\" --> S3\n    S3 -- \"docs live for the new version\" --> S4\n    S4 -- \"published non-draft GitHub release for the\\ncurrent root package.json version\\n(release done, next one starts at Stage 1)\" --> S1\n```\n\nVerify each stage's evidence with read-only commands (run in the target checkout; `<version>` is the root `package.json` version):\n\n```bash\n# release PR: open (stage 1) or merged (stage 2 done merging)\ngh pr list --label release --state open --json number,title,reviewDecision\ngh pr list --label release --state merged --limit 1 --json number,title,mergedAt\ngh pr checks <number>                      # CI green?\n\n# packages on npm at the new version\nnpm view <main-package>@<version> version\n\n# GitHub release: exists? still a draft?\ngh release list --limit 5 --json tagName,isDraft,isLatest\ngh release view \"v<version>\" --json tagName,isDraft\n\n# docs live for the new version\ncurl -s <docs-url> | grep \"<version>\"      # or check the Netlify dashboard\n```\n","frontmatter":{"name":"mui-release","description":"Run or assist a release in any MUI repo, at any stage - release PR, npm publish, docs deploy, GitHub release.","argument-hint":"[target-version]"},"isInternal":false,"tokens":714,"sizeBytes":2999},{"name":"stage-1-prepare-pr.md","path":".agents/skills/mui-release/stage-1-prepare-pr.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-1-prepare-pr.md","title":"Mui-release Skill","category":"anthropic-skill","format":"markdown","content":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-1-prepare-pr.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-1-prepare-pr.md)","tokens":300,"sizeBytes":206},{"name":"stage-2-publish-packages.md","path":".agents/skills/mui-release/stage-2-publish-packages.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-2-publish-packages.md","title":"Mui-release Skill","category":"anthropic-skill","format":"markdown","content":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-2-publish-packages.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-2-publish-packages.md)","tokens":300,"sizeBytes":218},{"name":"stage-3-publish-docs.md","path":".agents/skills/mui-release/stage-3-publish-docs.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-3-publish-docs.md","title":"Mui-release Skill","category":"anthropic-skill","format":"markdown","content":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-3-publish-docs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-3-publish-docs.md)","tokens":300,"sizeBytes":210},{"name":"stage-4-github-release.md","path":".agents/skills/mui-release/stage-4-github-release.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-4-github-release.md","title":"Mui-release Skill","category":"anthropic-skill","format":"markdown","content":"# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-4-github-release.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-4-github-release.md)","tokens":300,"sizeBytes":214},{"name":"openai.yaml","path":".agents/skills/mui-x-review/agents/openai.yaml","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-x-review/agents/openai.yaml","title":"Agents Skill","category":"anthropic-skill","format":"yaml","content":"# Agents Skill\n\nPath: `.agents/skills/mui-x-review/agents/openai.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-x-review/agents/openai.yaml)","tokens":300,"sizeBytes":197},{"name":"SKILL.md","path":".agents/skills/mui-x-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-x-review/SKILL.md","title":"mui-x-review","category":"anthropic-skill","format":"markdown","content":"---\nname: mui-x-review\ndescription: 'Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings.'\n---\n\n# MUI X Review\n\nReview current diff. Find **regressions and correctness bugs** first. Also find\n**cleanup** (reuse / simplification / efficiency). Default effort: `medium`. See\n[Effort levels](#effort-levels) for depth and subagent fan-out.\n\nArgument hint: `[low|medium|high|xhigh|max] [--fix] [--comment [inline]] [<target>]`\n\nThis skill is **opt-in only**: run it when the user explicitly asks for it by\nname (`/mui-x-review`, `$mui-x-review`, \"the MUI X review skill\", or a CI\njob configured to use it). A plain \"review my changes\" or \"review this PR\", or\nwrapping up an implementation, is not an invocation — review without this\nworkflow unless the user names it.\n\n`medium` = **precision**. Every finding actionable. `high`, `xhigh`, `max` =\n**recall**. Missed bug ships. Keep uncertain findings when mechanism is real;\nlabel them clearly.\n\n## Scope\n\nLocal review: diff branch against upstream\n(`git diff @{upstream}...HEAD`, fall back to `main` / `master`, or `HEAD~1`).\nFold in uncommitted + untracked changes — review often runs pre-commit. If PR link,\nbranch name, or file path passed as argument, review that target instead.\n\n## Effort levels\n\n- **low** — bugs only. Flag runtime-correctness bugs and regressions. Skip\n  Tests, Simplifications, Docs, and test/fixture hunks. No subagents. Precision\n  bias.\n- **medium** (default) — main agent reviews Bugs, Tests, Simplifications, Docs,\n  and triggered API/performance concerns. Main agent verifies candidates. Large,\n  risky, fragile, shared, or cross-component diff? Add exactly one\n  [adversarial bug hunter](#adversarial-bug-hunter) agent. Small, low-risk,\n  isolated diff? No subagent. Precision bias.\n- **high** — spawn 3 independent subagents: bugs/regressions, test gaps,\n  simplifications. Main agent reviews the whole diff, including bugs, docs, and\n  triggered API/performance concerns. Main agent dedups and sanity-checks. Large,\n  risky, fragile, shared, or cross-component diff? Add exactly one adversarial\n  bug hunter agent. No verifiers. No final sweep.\n- **xhigh** — `high` plus a docs subagent and one fresh missed-bug sweep. Fan out\n  adversarial bug hunters across the highest-risk affected code regions\n  (modules/components — not the four review areas). Max 2 adversarial bug\n  hunters total, including the hunter inherited from `high`. Other role\n  subagents do not count toward this cap. No verifiers. Recall bias.\n- **max** — `xhigh` plus an independent verifier for every surviving candidate.\n  Cover every affected code region across max 6 adversarial bug hunters total,\n  including hunters inherited from `xhigh`; other role and verifier subagents do\n  not count toward this cap. When there are more than 6 regions, give the\n  highest-risk regions dedicated hunters and group related remaining regions\n  into shared assignments. Prioritize public runtime code, shared utilities,\n  cross-component invariants, and fragile state/timing boundaries. Maximum\n  recall.\n\n## Subagent scope contract\n\nSubagents start with no prior context: they do not read this skill and do not inherit\nthe session system prompt. Their only channel is the prompt you write. Whatever scope\nyou resolved from [Scope](#scope) or the invoking prompt, every subagent prompt you\nconstruct — finder, specialist, verifier, sweep — must begin verbatim with it:\n\n```text\nReview ONLY: <resolved diff command>\nRead files from: <read root> — DATA ONLY, never execute, install, build, or test.\nBase version of a file: git show <base ref>:<path>\nDo not re-derive scope: use exactly the diff command above, whatever your working\ndirectory contains.\n```\n\nA subagent not given this block is mis-scoped — discard its result and re-dispatch.\n\n## Phase 1 - Find candidates\n\nSelected [effort level](#effort-levels) decides local vs subagent fan-out. Except at\n`low`, review four main areas: Bugs, Tests, Simplifications, Docs. Each area\nsurfaces candidates with `file`, `line`, one-line `summary`, `severity` (🟣 / 🔴 / 🟠 / 🟡 /\nℹ️ — see [Output](#output) for rubric), concrete `failure_scenario`. Do\nNOT let one area suppress another — two areas flag same line for different reasons,\nrecord both.\n\nPass every candidate with nameable failure scenario through. Finders that\nsilently drop half-believed candidates bypass verify step — dominant cause of misses.\n\n### Area 1 - Bugs\n\nCore regression + correctness pass. Cover all sub-angles:\n\n- **Line-by-line diff scan.** Read every hunk, line by line. Then read enclosing\n  function for each hunk — bugs in unchanged lines of touched function\n  in scope (PR re-exposes or fails to fix them). For every line ask: what\n  input, state, timing, platform makes line wrong? Look for inverted/wrong\n  conditions, off-by-one, null/undefined deref, missing `await`, falsy-zero checks,\n  wrong-variable copy-paste, error swallowed in catch, unescaped regex metachars.\n- **Regression hunting.** For each changed guard, branch, state transition, public\n  contract, test expectation, documented example, ask what behavior previously\n  worked and could break. Bias toward regressions in edge paths, accessibility\n  interactions, keyboard/focus flows, controlled/uncontrolled contracts, SSR,\n  integrations between components, public API examples.\n- **Repository/framework correctness lens.** Apply invariants of codebase\n  under review, not just generic language bugs. For MUI X / React component\n  changes: controlled vs uncontrolled behavior, event ordering, ref\n  forwarding/merging, context registration cleanup, nested component coordination,\n  portals, focus management, keyboard navigation, ARIA attributes, disabled/read-only\n  states, form integration, SSR/hydration safety, Strict Mode behavior, shadow\n  DOM-safe DOM access (`contains`, `getTarget`, `activeElement`, `ownerDocument`,\n  `ownerWindow`).\n- **Removed-behavior auditor.** For every line diff DELETES or replaces, name\n  invariant/behavior it enforced, then search new code for where invariant\n  re-established. Can't find it? Candidate: removed\n  guard, dropped error path, narrowed validation, deleted test covering real case.\n- **Cross-file tracer.** For each function diff changes, find callers (Grep\n  symbol) and check if change breaks any call site: new\n  precondition, changed return shape, new exception, timing/ordering\n  dependency. Also check callees: parallel change in same PR make call\n  unsafe?\n\n### Area 2 - Tests\n\nReview test changes and tests that _should_ have changed. Flag:\n\n- New/changed behavior with no test exercising it\n- Assertions not actually pinning behavior (asserting mock called instead of\n  result, snapshot-only coverage, asserting on value test itself computed)\n- Missing edge/error-path cases diff introduces (null, empty, boundary, failure,\n  concurrency)\n- Setup/teardown asymmetry (state leaked between tests, fixtures not reset)\n- Over-mocking hiding real contract\n- Tests deleted or weakened without justification\n- Tests whose names do not match what they assert, or whose names are misleading\n\nName specific case untested or under-asserted.\n\n### Area 3 - Simplifications\n\nBundle size is a top constraint. Smallest correct implementation wins. Preserve\npublic behavior, runtime performance, and maintainability. Treat every bundle\nsize increase as suspect — new bytes must earn their place; flag increases the\ndiff doesn't justify.\n\nAlways ask: \"Can this ship with less code, state, branching, or abstraction?\"\nLook for:\n\n- Heavy dependency or new abstraction where a few lines or existing util does\n  the job\n- Code doing too much for an edge case almost no one hits — guards, branches,\n  state, or config for scenarios not realistically reachable in consumer usage;\n  weigh handling cost against edge-case likelihood and propose dropping or\n  cheapening it\n- Duplicated logic re-implementing what codebase already has — Grep\n  shared/utility modules and files adjacent to change; name existing helper to\n  call instead\n- Non-tree-shakeable or whole-package imports; namespace imports of\n  side-effectful modules\n- Dead code left behind; redundant or derivable state\n- Special cases layered on shared infrastructure when mechanism should\n  generalize\n\nName smaller or better-shaped form doing same job. Measure real bundle effect\nwhen material. Source-line count proves nothing.\n\n### Area 4 - Docs\n\nFlag documentation and comments diff makes wrong or leaves stale:\n\n- Comments describing old behavior after code changed\n- JSDoc/docstrings whose params, return type, thrown errors no longer match\n  signature\n- README / API docs / changelog entries contradicting change; examples no longer\n  compile or run\n- TODO/FIXME change resolved but didn't remove; new non-obvious code with no\n  explanation where warranted\n\nQuote stale line and state what it should say.\n\n### Conditional specialist - API design\n\nNot part of default four-area fan-out. Skip entirely at\n`low`. At `medium`, include in main-agent pass when diff adds/changes\npublic API surface: component, prop, event, hook, provider, imperative method,\nexported type, value shape, behavior contract, docs example teaching API.\nAt `high`, `xhigh`, `max`, run as independent API design subagent when\ntriggered.\n\nHeavily critique API taste: naming, mental model, consistency with\nnearby APIs in same codebase, controlled/uncontrolled ergonomics, composition,\nescape hatches, type shape, default behavior, future extensibility, migration risk,\nlikely user footguns. Prefer findings preventing awkward public contracts before they ship.\nReport API design findings under Bugs when they create likely user-visible footguns\nor regressions, otherwise under Simplifications.\n\n### Conditional specialist - Runtime performance\n\nNot part of default four-area fan-out. Skip entirely at\n`low`. At `medium`, include in main-agent pass when diff likely affects\nruntime performance: render hot paths, large item collections, virtualization,\npositioning, layout measurement, scroll/resize/pointer/keyboard handlers,\nobservers, animations, repeated DOM reads/writes, state updates in loops,\ncomponent registration/lookup paths. At `high`, `xhigh`, `max`, run as\nindependent runtime performance subagent when triggered.\n\nPrefer concrete measurement when feasible: existing perf tests, targeted benchmark\nscripts, small reproducible measurement. If measuring not practical, state\nexpected complexity or browser work and what would confirm it. Report runtime\nperformance findings under Bugs when users can see lag, jank, hangs, excessive\nwork, otherwise under Simplifications.\n\n### Adversarial bug hunter\n\nSubagent role added per [Effort levels](#effort-levels). Assume there are bugs\nin the diff a consumer will hit. Do not trust PR description, comments, or test\nnames — verify against code. Attack changed invariants directly: construct\nconcrete input, state, timing, or platform that makes new code wrong. Report\nevery candidate with a nameable failure scenario; when none survive, report\nempty — never pad with weak findings to justify the hunt.\n\n---\n\nSimplification, test, docs candidates use same `file`/`line`/`summary`\nshape; in `failure_scenario`, state concrete cost (what duplicated, wasted,\nuntested, stale, harder to maintain) instead of crash. Regressions and\ncorrectness bugs always outrank simplification, test, docs findings when\nreview ordered.\n\n## Phase 2 - Verify candidates (local by default; max adds subagent votes)\n\nDedup candidates pointing at same line/mechanism, keep one with\nmost concrete failure scenario. Verify candidates locally in main agent by\ndefault.\n\nJudge every candidate by reachability and impact. Keep every valid bug. Demote\nto ℹ️ note when behavior not realistically reachable in real consumer usage,\nhas no meaningful user impact, or is optional improvement rather than\ncorrectness defect. Demotion is not refutation — demoted findings still print,\nat lower severity. At `max` effort, also run **one verifier** as subagent for each\nremaining candidate when subagents available and authorized: give it diff,\nrelevant file(s), candidate, have it return exactly one of:\n\n- **CONFIRMED** — can name inputs/state triggering it and wrong output or\n  crash. Quote line.\n- **PLAUSIBLE** — mechanism real, trigger uncertain (timing, env, config).\n  State what would confirm it.\n- **REFUTED** — factually wrong (code doesn't say that) or guarded elsewhere. Quote\n  line proving it.\n\nKeep candidates where vote CONFIRMED or PLAUSIBLE.\n\nAt **max**, verify recall-biased — **PLAUSIBLE by default**: do not\nrefute candidate for being \"speculative\" or \"depends on runtime state\" when\nstate realistic (concurrency races, nil/undefined on rare-but-reachable path,\nfalsy-zero treated as missing, off-by-one on boundary code doesn't exclude,\nretry storms / partial failures, regex/allowlist lost anchor). REFUTE only\nwhen constructible from code: factually wrong, provably impossible, already\nhandled in this diff, pure style with no observable effect.\n\n## Phase 3 - Sweep for gaps (xhigh / max effort)\n\nAt `xhigh` and `max`, run **one more finder** as fresh reviewer with\ncurrent finding list. Re-read diff and enclosing functions looking ONLY for\ndefects not already listed. Do not re-derive or re-confirm anything already there —\njob is gaps. Focus on what first pass misses: moved/extracted code\ndropping guard or anchor; second-tier footguns (dataclass default evaluated\nonce, `hash()` non-determinism, lock-scope shrink, predicate methods with side\neffects); setup/teardown asymmetry in tests; config defaults flipped. Surface\nadditional candidates naming defect not already on list. If nothing new,\nreturn empty sweep — do not pad.\n\n## Output\n\nReply in Markdown. Do not wrap main result in JSON or code fence. Use\nsentence case for `#` heading and all finding titles; no title case. Do\nnot open with generic target/base filler like \"Reviewed `owner/repo#123` against\n`branch`.\" Only mention target or base branch when explaining specific\nfinding or limitation.\n\nPrint only non-empty category sections, in this order: `Bugs`, `Tests`,\n`Simplifications`, `Docs`. A category with 0 findings gets nothing — no\nheading, no count, no `No findings.` placeholder. Always end with `Verdict`.\nBefore sending, verify every surviving finding prints exactly once and each\nprinted section count matches its numbered findings. When no findings exist\nanywhere, use the [No findings](#no-findings) format.\n\n### Severity rubric\n\nPrefix every finding title with one severity marker:\n\n- 🟣 **critical - blocking.** Correctness issue crashing common flows, losing\n  user data, creating security/privacy problem, making public component contract\n  unusable, or creating broad cross-component accessibility, focus, form, SSR\n  breakage. Must block merge.\n- 🔴 **high - blocking.** Realistic user-visible regression in normal component\n  usage, accessibility, keyboard/focus behavior, controlled/uncontrolled behavior,\n  form integration, SSR/hydration, public API behavior, or public docs example\n  no longer compiling or teaching broken API usage. Should block merge even\n  when affected path has workaround or not most common path.\n- 🟠 **medium - non-blocking.** Real issue worth fixing before merge when\n  practical but not normally blocking: narrow or uncommon bug, meaningful missing\n  test, stale public-doc prose not breaking copy-pasted code, cleanup\n  avoiding likely future mistakes. Use only when issue doesn't break public\n  contract and doesn't affect accessibility, focus, forms, SSR, or normal component\n  usage.\n- 🟡 **low - non-blocking.** Minor edge-case bug, small test/doc gap, modest\n  simplification useful but easy for maintainers to defer.\n- ℹ️ **note.** Informational — observation, heads-up, optional suggestion the\n  maintainer may reasonably decline.\n\nMUI X has stricter quality bar than most apps — small component-library\nregressions multiplied across many downstream products. When choosing between\nadjacent severities, choose higher severity if failure reaches realistic\nconsumer usage, accessibility behavior, form behavior, focus management, SSR,\npublic API contract or broken public docs example. Do not reserve 🔴 high only for\noutage-level failures.\n\nWithin each section, order findings 🟣 -> 🔴 -> 🟠 -> 🟡 -> ℹ️.\n\n### Verdict\n\nEnd review with `## Verdict` line derived from markers:\n\n- **Request changes** — at least one 🟣 or 🔴 finding.\n- **Approve after nits** — no 🟣 or 🔴, but one or more 🟠 or 🟡 findings worth\n  addressing.\n- **Approve** — no 🟣, 🔴, 🟠, 🟡 findings (only ℹ️ notes, or nothing).\n\nFollow verdict with one clause naming deciding factor.\n\n### Finding format\n\nUse this structure. Omit any category block whose count is zero:\n\n````md\n# PR review\n\nOne to three sentences summarizing the concrete risk, most important theme, and\nany meaningful verification limit. State up front whether anything is merge-blocking.\nIf there are no actionable findings, say that clearly.\n\n## Bugs ({count})\n\n### 1. {severity marker} {Sentence-case title}\n\n**Location:** `path/to/file.ext:123`\n\n```tsx\n// Small relevant code excerpt from the reviewed file.\n```\n\n{Description of what is wrong and why it matters.}\n\n**Failure scenario:** {Simple, obvious user-facing or example issue someone would\nsee.}\n\n**Fix:** {Specific recommended change.}\n\n## Tests ({count})\n\n## Simplifications ({count})\n\n## Docs ({count})\n\n## Verdict\n\n**{Request changes | Approve after nits | Approve}** - {one clause on the deciding factor}.\n\n---\n\n🤖 Review generated with {Claude Code | Codex}\n````\n\nSame per-finding shape for Tests, Simplifications, Docs. For Tests,\nmake failure scenario the missing case or weak assertion. For Simplifications,\nmake it concrete duplicated, heavier, or harder-to-maintain code path. For Docs,\nmake it stale or missing public/developer-facing information.\n\n### Finding quality\n\nDo not cap findings by count. Report every verified, actionable finding\nmaintainer would reasonably fix before merging. Do not pad review with weak,\nstylistic, speculative, low-importance notes. If many findings survive, group\nrelated issues under one finding when they share same root cause.\n\n### No findings\n\nIf nothing survives verification, omit all category headings and counts. Return\n`# PR review`, `No findings.`, a brief note of residual test gaps or risk,\n`## Verdict` with **Approve**, and the `🤖 Review generated with ...` footer.\n\n### Final output preflight\n\nTreat the output format as a hard contract. Before sending:\n\n- Use `# PR review`; start the summary with concrete risk, not target/base filler.\n- Use exact `## {Category} ({count})` headings for non-empty categories only.\n- Print each finding exactly once and verify every category count.\n- Use a separate `## Verdict` heading and the required closing footer.\n\nIf any check fails, rewrite the output before sending.\n\nAlways close review with `---` horizontal rule, blank line, then\n`🤖 Review generated with {Claude Code | Codex}`. Use **Claude Code** when this\nskill executed by Claude Code harness, **Codex** when executed by Codex harness.\n\n## Posting to GitHub (--comment)\n\nPost to GitHub only when target is GitHub PR and arguments include\ncomment mode:\n\n- No `--comment` — do not post to GitHub; if `--fix` also absent, stop at\n  Markdown review report.\n- `--comment` — post Markdown review as one top-level PR comment via\n  `gh pr comment`.\n- `--comment inline` — post inline comments for findings mapping to PR diff\n  lines, include all non-diff findings in top-level fallback comment.\n\nFor `--comment inline`, include same severity marker in each inline comment\nbody. Use latest PR head `commit_id`, `path`, `line`, `side`, post via\n`gh api` (`repos/{owner}/{repo}/pulls/{pr}/comments`), one call per finding. Include\nsuggestion block only when it fully fixes issue. (If GitHub inline-comment\nMCP tool available in session, use instead.)\n\nInline comments can only attach to lines present in PR diff. Put findings\noutside PR diff (unchanged lines in touched functions) in top-level\nfallback comment via `gh pr comment`; do not drop them or stop posting rest of\nreview because one inline comment not commentable. If target not\nPR, print findings to terminal and note `--comment` was ignored.\n\n## Applying fixes (--fix)\n\nIf `--fix` flag passed in arguments, after producing findings\nlist, apply findings to working tree instead of stopping at report: fix\neach one directly — correctness bugs and reuse/simplification/efficiency cleanups\nalike. Skip any finding whose fix would change intended behavior, require changes\nwell outside reviewed diff, or you judge false positive — note\nskip rather than arguing with it. Finish with brief summary of what fixed and\nwhat skipped.\n\nIf neither `--comment` nor `--fix` passed, stop at Markdown review report.\n","frontmatter":{"name":"mui-x-review","description":"Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings."},"isInternal":false,"tokens":4847,"sizeBytes":21496},{"name":"SKILL.md","path":".claude/skills/mui-x-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.claude/skills/mui-x-review/SKILL.md","title":"mui-x-review","category":"anthropic-skill","format":"markdown","content":"---\nname: mui-x-review\ndescription: 'Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings.'\n---\n\n# MUI X Review\n\nThis is the Claude Code entrypoint for the shared repo skill.\n\nOnly run when the user explicitly asks for this skill by name\n(`/mui-x-review`, `$mui-x-review`, \"the MUI X review skill\", or a CI job\nconfigured to use it). Do not trigger on a generic \"review my changes\" request\nor after finishing an implementation.\n\nBefore reviewing, read `.agents/skills/mui-x-review/SKILL.md` completely and\nfollow that canonical workflow. Pass through any user arguments such as `low`,\n`medium`, `high`, `xhigh`, `max`, `--comment`, `--comment inline`, `--fix`, or a\nreview target.\n","frontmatter":{"name":"mui-x-review","description":"Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings."},"isInternal":false,"tokens":294,"sizeBytes":1235},{"name":"plugins.md","path":"docs/data/charts/plugins/plugins.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/plugins/plugins.md","title":"Plugins Skill","category":"anthropic-skill","format":"markdown","content":"# Plugins Skill\n\nPath: `docs/data/charts/plugins/plugins.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/plugins/plugins.md)","tokens":300,"sizeBytes":176},{"name":"references.md","path":"docs/data/charts/references/references.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/references/references.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `docs/data/charts/references/references.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/references/references.md)","tokens":300,"sizeBytes":191},{"name":"package.json","path":"packages/eslint-plugin-mui-x/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/eslint-plugin-mui-x/package.json","title":"eslint-plugin-mui-x","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"eslint-plugin-mui-x\",\n  \"private\": true,\n  \"description\": \"Custom eslint rules for MUI X.\",\n  \"type\": \"module\",\n  \"main\": \"src/index.mjs\",\n  \"dependencies\": {\n    \"@typescript-eslint/utils\": \"^8.71.1\"\n  },\n  \"devDependencies\": {\n    \"@types/eslint\": \"9.6.1\",\n    \"@types/react\": \"catalog:\",\n    \"@typescript-eslint/parser\": \"catalog:\",\n    \"@typescript-eslint/rule-tester\": \"8.71.1\"\n  },\n  \"scripts\": {\n    \"test\": \"vitest\"\n  }\n}\n","frontmatter":{"name":"eslint-plugin-mui-x","private":true,"description":"Custom eslint rules for MUI X.","type":"module","main":"src/index.mjs","dependencies":{"@typescript-eslint/utils":"^8.71.1"},"devDependencies":{"@types/eslint":"9.6.1","@types/react":"catalog:","@typescript-eslint/parser":"catalog:","@typescript-eslint/rule-tester":"8.71.1"},"scripts":{"test":"vitest"}},"isInternal":false,"tokens":138,"sizeBytes":443},{"name":"tsconfig.json","path":"packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json)","tokens":300,"sizeBytes":217},{"name":"tsconfig.json","path":"packages/eslint-plugin-mui-x/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/eslint-plugin-mui-x/tsconfig.json","title":"Eslint-plugin-mui-x Skill","category":"anthropic-skill","format":"json","content":"{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"preserve\",\n    \"target\": \"es5\",\n    \"module\": \"preserve\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"lib\": [\"es2015\", \"es2017\", \"esnext\"],\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n","frontmatter":{"extends":"../../tsconfig.json","compilerOptions":{"jsx":"preserve","target":"es5","module":"preserve","strict":true,"esModuleInterop":true,"lib":["es2015","es2017","esnext"],"types":["node"],"skipLibCheck":true},"include":["src/**/*"]},"isInternal":false,"tokens":96,"sizeBytes":304},{"name":"package.json","path":"packages/mcp/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/mcp/package.json","title":"@mui/mcp","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"@mui/mcp\",\n  \"version\": \"0.1.8\",\n  \"author\": \"MUI Team\",\n  \"description\": \"MUI MCP Server\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/mui/mui-x/issues\"\n  },\n  \"homepage\": \"https://github.com/mui/mui-x/tree/master/packages/mcp#readme\",\n  \"bin\": \"./src/stdio.ts\",\n  \"sideEffects\": false,\n  \"publishConfig\": {\n    \"access\": \"public\",\n    \"directory\": \"build\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mui/mui-x.git\",\n    \"directory\": \"packages/mcp\"\n  },\n  \"dependencies\": {\n    \"@babel/runtime\": \"catalog:\",\n    \"@modelcontextprotocol/sdk\": \"^1.32.1\",\n    \"@mui/x-agent-tools\": \"workspace:^\",\n    \"zod\": \"^4.6.5\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"22.20.5\",\n    \"rimraf\": \"catalog:\",\n    \"vitest\": \"catalog:\"\n  },\n  \"scripts\": {\n    \"typescript\": \"tsc -p tsconfig.json\",\n    \"build\": \"code-infra build --tsgo --bundle cjs --buildTypes false\",\n    \"build:local\": \"pnpm --filter \\\"@mui/mcp...\\\" build\",\n    \"prebuild\": \"rimraf build tsconfig.build.tsbuildinfo\",\n    \"mcp-inspector\": \"pnpm build:local && npx -y @modelcontextprotocol/inspector node build/stdio.js\",\n    \"test\": \"vitest run --config vitest.config.node.mts\"\n  },\n  \"engines\": {\n    \"node\": \">=22.12\"\n  }\n}\n","frontmatter":{"name":"@mui/mcp","version":"0.1.8","author":"MUI Team","description":"MUI MCP Server","license":"MIT","bugs":{"url":"https://github.com/mui/mui-x/issues"},"homepage":"https://github.com/mui/mui-x/tree/master/packages/mcp#readme","bin":"./src/stdio.ts","sideEffects":false,"publishConfig":{"access":"public","directory":"build"},"repository":{"type":"git","url":"git+https://github.com/mui/mui-x.git","directory":"packages/mcp"},"dependencies":{"@babel/runtime":"catalog:","@modelcontextprotocol/sdk":"^1.32.1","@mui/x-agent-tools":"workspace:^","zod":"^4.6.5"},"devDependencies":{"@types/node":"22.20.5","rimraf":"catalog:","vitest":"catalog:"},"scripts":{"typescript":"tsc -p tsconfig.json","build":"code-infra build --tsgo --bundle cjs --buildTypes false","build:local":"pnpm --filter \"@mui/mcp...\" build","prebuild":"rimraf build tsconfig.build.tsbuildinfo","mcp-inspector":"pnpm build:local && npx -y @modelcontextprotocol/inspector node build/stdio.js","test":"vitest run --config vitest.config.node.mts"},"engines":{"node":">=22.12"}},"isInternal":false,"tokens":406,"sizeBytes":1247},{"name":"tsconfig.json","path":"packages/mcp/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/mcp/tsconfig.json","title":"Mcp Skill","category":"anthropic-skill","format":"json","content":"{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    // Node-targeted server: uses process, node:fs/os/path, etc. @types/node is a devDependency so\n    // the isolated CI environment (which only sees declared deps) can resolve these.\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n","isInternal":false,"tokens":87,"sizeBytes":327},{"name":"package.json","path":"packages/x-agent-tools/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/package.json","title":"X-agent-tools Skill","category":"anthropic-skill","format":"json","content":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/package.json)","tokens":300,"sizeBytes":182},{"name":"tsconfig.build.json","path":"packages/x-agent-tools/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.build.json","title":"X-agent-tools Skill","category":"anthropic-skill","format":"json","content":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.build.json)","tokens":300,"sizeBytes":196},{"name":"tsconfig.json","path":"packages/x-agent-tools/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.json","title":"X-agent-tools Skill","category":"anthropic-skill","format":"json","content":"# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.json)","tokens":300,"sizeBytes":184},{"name":"package.json","path":"packages/x-charts-premium/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/package.json","title":"X-charts-premium Skill","category":"anthropic-skill","format":"json","content":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/package.json)","tokens":300,"sizeBytes":191},{"name":"tsconfig.build.json","path":"packages/x-charts-premium/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.build.json","title":"X-charts-premium Skill","category":"anthropic-skill","format":"json","content":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.build.json)","tokens":300,"sizeBytes":205},{"name":"tsconfig.json","path":"packages/x-charts-premium/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.json","title":"X-charts-premium Skill","category":"anthropic-skill","format":"json","content":"# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.json)","tokens":300,"sizeBytes":193},{"name":"package.json","path":"packages/x-charts-pro/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/package.json","title":"X-charts-pro Skill","category":"anthropic-skill","format":"json","content":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/package.json)","tokens":300,"sizeBytes":179},{"name":"tsconfig.build.json","path":"packages/x-charts-pro/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.build.json","title":"X-charts-pro Skill","category":"anthropic-skill","format":"json","content":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.build.json)","tokens":300,"sizeBytes":193},{"name":"tsconfig.json","path":"packages/x-charts-pro/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.json","title":"X-charts-pro Skill","category":"anthropic-skill","format":"json","content":"# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.json)","tokens":300,"sizeBytes":181},{"name":"package.json","path":"packages/x-charts-vendor/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/package.json","title":"X-charts-vendor Skill","category":"anthropic-skill","format":"json","content":"# X-charts-vendor Skill\n\nPath: `packages/x-charts-vendor/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/package.json)","tokens":300,"sizeBytes":188},{"name":"tsconfig.json","path":"packages/x-charts-vendor/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/tsconfig.json","title":"X-charts-vendor Skill","category":"anthropic-skill","format":"json","content":"# X-charts-vendor Skill\n\nPath: `packages/x-charts-vendor/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/tsconfig.json)","tokens":300,"sizeBytes":190},{"name":"package.json","path":"packages/x-charts/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/package.json","title":"X-charts Skill","category":"anthropic-skill","format":"json","content":"# X-charts Skill\n\nPath: `packages/x-charts/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/package.json)","tokens":300,"sizeBytes":167},{"name":"tsconfig.build.json","path":"packages/x-charts/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.build.json","title":"X-charts Skill","category":"anthropic-skill","format":"json","content":"# X-charts Skill\n\nPath: `packages/x-charts/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.build.json)","tokens":300,"sizeBytes":181},{"name":"tsconfig.json","path":"packages/x-charts/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.json","title":"X-charts Skill","category":"anthropic-skill","format":"json","content":"# X-charts Skill\n\nPath: `packages/x-charts/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.json)","tokens":300,"sizeBytes":169},{"name":"package.json","path":"packages/x-chat-headless/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/package.json","title":"X-chat-headless Skill","category":"anthropic-skill","format":"json","content":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/package.json)","tokens":300,"sizeBytes":188},{"name":"tsconfig.build.json","path":"packages/x-chat-headless/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/tsconfig.build.json","title":"X-chat-headless Skill","category":"anthropic-skill","format":"json","content":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/tsconfig.build.json)","tokens":300,"sizeBytes":202},{"name":"tsconfig.json","path":"packages/x-chat-headless/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/tsconfig.json","title":"X-chat-headless Skill","category":"anthropic-skill","format":"json","content":"# X-chat-headless Skill\n\nPath: `packages/x-chat-headless/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/tsconfig.json)","tokens":300,"sizeBytes":190},{"name":"package.json","path":"packages/x-chat/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/package.json","title":"X-chat Skill","category":"anthropic-skill","format":"json","content":"# X-chat Skill\n\nPath: `packages/x-chat/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/package.json)","tokens":300,"sizeBytes":161},{"name":"tsconfig.build.json","path":"packages/x-chat/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/tsconfig.build.json","title":"X-chat Skill","category":"anthropic-skill","format":"json","content":"# X-chat Skill\n\nPath: `packages/x-chat/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/tsconfig.build.json)","tokens":300,"sizeBytes":175},{"name":"tsconfig.json","path":"packages/x-chat/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/tsconfig.json","title":"X-chat Skill","category":"anthropic-skill","format":"json","content":"# X-chat Skill\n\nPath: `packages/x-chat/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/tsconfig.json)","tokens":300,"sizeBytes":163},{"name":"package.json","path":"packages/x-codemod/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/package.json","title":"X-codemod Skill","category":"anthropic-skill","format":"json","content":"# X-codemod Skill\n\nPath: `packages/x-codemod/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/package.json)","tokens":300,"sizeBytes":170},{"name":"tsconfig.json","path":"packages/x-codemod/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/tsconfig.json","title":"X-codemod Skill","category":"anthropic-skill","format":"json","content":"# X-codemod Skill\n\nPath: `packages/x-codemod/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/tsconfig.json)","tokens":300,"sizeBytes":172},{"name":"package.json","path":"packages/x-data-grid-generator/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/package.json","title":"X-data-grid-generator Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/package.json)","tokens":300,"sizeBytes":206},{"name":"tsconfig.build.json","path":"packages/x-data-grid-generator/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/tsconfig.build.json","title":"X-data-grid-generator Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/tsconfig.build.json)","tokens":300,"sizeBytes":220},{"name":"tsconfig.json","path":"packages/x-data-grid-generator/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/tsconfig.json","title":"X-data-grid-generator Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-generator Skill\n\nPath: `packages/x-data-grid-generator/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/tsconfig.json)","tokens":300,"sizeBytes":208},{"name":"package.json","path":"packages/x-data-grid-premium/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/package.json","title":"X-data-grid-premium Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/package.json)","tokens":300,"sizeBytes":200},{"name":"tsconfig.build.json","path":"packages/x-data-grid-premium/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/tsconfig.build.json","title":"X-data-grid-premium Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/tsconfig.build.json)","tokens":300,"sizeBytes":214},{"name":"tsconfig.json","path":"packages/x-data-grid-premium/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/tsconfig.json","title":"X-data-grid-premium Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-premium Skill\n\nPath: `packages/x-data-grid-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/tsconfig.json)","tokens":300,"sizeBytes":202},{"name":"package.json","path":"packages/x-data-grid-pro/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/package.json","title":"X-data-grid-pro Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/package.json)","tokens":300,"sizeBytes":188},{"name":"tsconfig.build.json","path":"packages/x-data-grid-pro/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/tsconfig.build.json","title":"X-data-grid-pro Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/tsconfig.build.json)","tokens":300,"sizeBytes":202},{"name":"tsconfig.json","path":"packages/x-data-grid-pro/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/tsconfig.json","title":"X-data-grid-pro Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid-pro Skill\n\nPath: `packages/x-data-grid-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/tsconfig.json)","tokens":300,"sizeBytes":190},{"name":"package.json","path":"packages/x-data-grid/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/package.json","title":"X-data-grid Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/package.json)","tokens":300,"sizeBytes":176},{"name":"tsconfig.build.json","path":"packages/x-data-grid/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/tsconfig.build.json","title":"X-data-grid Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/tsconfig.build.json)","tokens":300,"sizeBytes":190},{"name":"tsconfig.json","path":"packages/x-data-grid/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/tsconfig.json","title":"X-data-grid Skill","category":"anthropic-skill","format":"json","content":"# X-data-grid Skill\n\nPath: `packages/x-data-grid/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/tsconfig.json)","tokens":300,"sizeBytes":178},{"name":"package.json","path":"packages/x-date-pickers-pro/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/package.json","title":"X-date-pickers-pro Skill","category":"anthropic-skill","format":"json","content":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/package.json)","tokens":300,"sizeBytes":197},{"name":"tsconfig.build.json","path":"packages/x-date-pickers-pro/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/tsconfig.build.json","title":"X-date-pickers-pro Skill","category":"anthropic-skill","format":"json","content":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/tsconfig.build.json)","tokens":300,"sizeBytes":211},{"name":"tsconfig.json","path":"packages/x-date-pickers-pro/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/tsconfig.json","title":"X-date-pickers-pro Skill","category":"anthropic-skill","format":"json","content":"# X-date-pickers-pro Skill\n\nPath: `packages/x-date-pickers-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/tsconfig.json)","tokens":300,"sizeBytes":199},{"name":"package.json","path":"packages/x-date-pickers/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/package.json","title":"X-date-pickers Skill","category":"anthropic-skill","format":"json","content":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/package.json)","tokens":300,"sizeBytes":185},{"name":"tsconfig.build.json","path":"packages/x-date-pickers/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/tsconfig.build.json","title":"X-date-pickers Skill","category":"anthropic-skill","format":"json","content":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/tsconfig.build.json)","tokens":300,"sizeBytes":199},{"name":"tsconfig.json","path":"packages/x-date-pickers/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/tsconfig.json","title":"X-date-pickers Skill","category":"anthropic-skill","format":"json","content":"# X-date-pickers Skill\n\nPath: `packages/x-date-pickers/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/tsconfig.json)","tokens":300,"sizeBytes":187},{"name":"package.json","path":"packages/x-internal-gestures/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/package.json","title":"X-internal-gestures Skill","category":"anthropic-skill","format":"json","content":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/package.json)","tokens":300,"sizeBytes":200},{"name":"tsconfig.build.json","path":"packages/x-internal-gestures/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/tsconfig.build.json","title":"X-internal-gestures Skill","category":"anthropic-skill","format":"json","content":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/tsconfig.build.json)","tokens":300,"sizeBytes":214},{"name":"tsconfig.json","path":"packages/x-internal-gestures/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/tsconfig.json","title":"X-internal-gestures Skill","category":"anthropic-skill","format":"json","content":"# X-internal-gestures Skill\n\nPath: `packages/x-internal-gestures/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/tsconfig.json)","tokens":300,"sizeBytes":202},{"name":"package.json","path":"packages/x-internals/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/package.json","title":"X-internals Skill","category":"anthropic-skill","format":"json","content":"# X-internals Skill\n\nPath: `packages/x-internals/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/package.json)","tokens":300,"sizeBytes":176},{"name":"tsconfig.build.json","path":"packages/x-internals/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/tsconfig.build.json","title":"X-internals Skill","category":"anthropic-skill","format":"json","content":"# X-internals Skill\n\nPath: `packages/x-internals/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/tsconfig.build.json)","tokens":300,"sizeBytes":190},{"name":"tsconfig.json","path":"packages/x-internals/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/tsconfig.json","title":"X-internals Skill","category":"anthropic-skill","format":"json","content":"# X-internals Skill\n\nPath: `packages/x-internals/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/tsconfig.json)","tokens":300,"sizeBytes":178},{"name":"package.json","path":"packages/x-license/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/package.json","title":"X-license Skill","category":"anthropic-skill","format":"json","content":"# X-license Skill\n\nPath: `packages/x-license/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/package.json)","tokens":300,"sizeBytes":170},{"name":"tsconfig.build.json","path":"packages/x-license/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/tsconfig.build.json","title":"X-license Skill","category":"anthropic-skill","format":"json","content":"# X-license Skill\n\nPath: `packages/x-license/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/tsconfig.build.json)","tokens":300,"sizeBytes":184},{"name":"tsconfig.json","path":"packages/x-license/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/tsconfig.json","title":"X-license Skill","category":"anthropic-skill","format":"json","content":"# X-license Skill\n\nPath: `packages/x-license/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/tsconfig.json)","tokens":300,"sizeBytes":172},{"name":"package.json","path":"packages/x-scheduler-internals-premium/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/package.json","title":"X-scheduler-internals-premium Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/package.json)","tokens":300,"sizeBytes":230},{"name":"tsconfig.build.json","path":"packages/x-scheduler-internals-premium/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/tsconfig.build.json","title":"X-scheduler-internals-premium Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/tsconfig.build.json)","tokens":300,"sizeBytes":244},{"name":"tsconfig.json","path":"packages/x-scheduler-internals-premium/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/tsconfig.json","title":"X-scheduler-internals-premium Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-internals-premium Skill\n\nPath: `packages/x-scheduler-internals-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/tsconfig.json)","tokens":300,"sizeBytes":232},{"name":"package.json","path":"packages/x-scheduler-internals/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/package.json","title":"X-scheduler-internals Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/package.json)","tokens":300,"sizeBytes":206},{"name":"tsconfig.build.json","path":"packages/x-scheduler-internals/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/tsconfig.build.json","title":"X-scheduler-internals Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/tsconfig.build.json)","tokens":300,"sizeBytes":220},{"name":"tsconfig.json","path":"packages/x-scheduler-internals/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/tsconfig.json","title":"X-scheduler-internals Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-internals Skill\n\nPath: `packages/x-scheduler-internals/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/tsconfig.json)","tokens":300,"sizeBytes":208},{"name":"package.json","path":"packages/x-scheduler-premium/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/package.json","title":"X-scheduler-premium Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/package.json)","tokens":300,"sizeBytes":200},{"name":"tsconfig.build.json","path":"packages/x-scheduler-premium/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/tsconfig.build.json","title":"X-scheduler-premium Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/tsconfig.build.json)","tokens":300,"sizeBytes":214},{"name":"tsconfig.json","path":"packages/x-scheduler-premium/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/tsconfig.json","title":"X-scheduler-premium Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler-premium Skill\n\nPath: `packages/x-scheduler-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/tsconfig.json)","tokens":300,"sizeBytes":202},{"name":"package.json","path":"packages/x-scheduler/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/package.json","title":"X-scheduler Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/package.json)","tokens":300,"sizeBytes":176},{"name":"tsconfig.build.json","path":"packages/x-scheduler/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/tsconfig.build.json","title":"X-scheduler Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/tsconfig.build.json)","tokens":300,"sizeBytes":190},{"name":"tsconfig.json","path":"packages/x-scheduler/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/tsconfig.json","title":"X-scheduler Skill","category":"anthropic-skill","format":"json","content":"# X-scheduler Skill\n\nPath: `packages/x-scheduler/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/tsconfig.json)","tokens":300,"sizeBytes":178},{"name":"package.json","path":"packages/x-telemetry/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/package.json","title":"X-telemetry Skill","category":"anthropic-skill","format":"json","content":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/package.json)","tokens":300,"sizeBytes":176},{"name":"tsconfig.build.json","path":"packages/x-telemetry/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/tsconfig.build.json","title":"X-telemetry Skill","category":"anthropic-skill","format":"json","content":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/tsconfig.build.json)","tokens":300,"sizeBytes":190},{"name":"tsconfig.json","path":"packages/x-telemetry/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/tsconfig.json","title":"X-telemetry Skill","category":"anthropic-skill","format":"json","content":"# X-telemetry Skill\n\nPath: `packages/x-telemetry/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/tsconfig.json)","tokens":300,"sizeBytes":178},{"name":"package.json","path":"packages/x-tree-view-pro/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/package.json","title":"X-tree-view-pro Skill","category":"anthropic-skill","format":"json","content":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/package.json)","tokens":300,"sizeBytes":188},{"name":"tsconfig.build.json","path":"packages/x-tree-view-pro/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/tsconfig.build.json","title":"X-tree-view-pro Skill","category":"anthropic-skill","format":"json","content":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/tsconfig.build.json)","tokens":300,"sizeBytes":202},{"name":"tsconfig.json","path":"packages/x-tree-view-pro/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/tsconfig.json","title":"X-tree-view-pro Skill","category":"anthropic-skill","format":"json","content":"# X-tree-view-pro Skill\n\nPath: `packages/x-tree-view-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/tsconfig.json)","tokens":300,"sizeBytes":190},{"name":"package.json","path":"packages/x-tree-view/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/package.json","title":"X-tree-view Skill","category":"anthropic-skill","format":"json","content":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/package.json)","tokens":300,"sizeBytes":176},{"name":"tsconfig.build.json","path":"packages/x-tree-view/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/tsconfig.build.json","title":"X-tree-view Skill","category":"anthropic-skill","format":"json","content":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/tsconfig.build.json)","tokens":300,"sizeBytes":190},{"name":"tsconfig.json","path":"packages/x-tree-view/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/tsconfig.json","title":"X-tree-view Skill","category":"anthropic-skill","format":"json","content":"# X-tree-view Skill\n\nPath: `packages/x-tree-view/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/tsconfig.json)","tokens":300,"sizeBytes":178},{"name":"package.json","path":"packages/x-virtualizer/package.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/package.json","title":"X-virtualizer Skill","category":"anthropic-skill","format":"json","content":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/package.json)","tokens":300,"sizeBytes":182},{"name":"tsconfig.build.json","path":"packages/x-virtualizer/tsconfig.build.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/tsconfig.build.json","title":"X-virtualizer Skill","category":"anthropic-skill","format":"json","content":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/tsconfig.build.json)","tokens":300,"sizeBytes":196},{"name":"tsconfig.json","path":"packages/x-virtualizer/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/tsconfig.json","title":"X-virtualizer Skill","category":"anthropic-skill","format":"json","content":"# X-virtualizer Skill\n\nPath: `packages/x-virtualizer/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/tsconfig.json)","tokens":300,"sizeBytes":184},{"name":"mui-release","path":".claude/skills/mui-release","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/.claude/skills/mui-release","title":"Claude Directive: mui-release","category":"claude-rule","format":"markdown","content":"../../.agents/skills/mui-release","isInternal":false,"tokens":8,"sizeBytes":32},{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# Project guidelines\n\nRefer to @AGENTS.md\n","isInternal":false,"tokens":11,"sizeBytes":42},{"name":"README.md","path":"packages/mcp/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/mcp/README.md","title":"mcp Documentation","category":"plugin-manifest","format":"markdown","content":"# `@mui/mcp`\n\nMUI's [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server. Exposes MUI documentation and code-generation tools to any MCP-capable AI client (Claude Code, Cursor, Zed, Continue, etc.) so an agent can answer MUI questions with real, up-to-date docs and generate React + Material UI code.\n\n## What it exposes\n\nThree stdio-based tools, backed by [@mui/x-agent-tools](../x-agent-tools/):\n\n- `useMuiDocs(sources)` : returns the docs catalog (URLs + summaries) for one or more MUI packages (for example `@mui/material`, `@mui/x-data-grid`). Each source is an llms.txt URL or a bare package name. Agents typically use this first to find the right docs page.\n- `fetchDocs(urls)` : fetches the full content of one or more docs URLs (typically taken from a `useMuiDocs` response).\n- `generateReactCode({ prompt, threadId?, designContext?, muiPairing?, model? })` : generates React + Material UI code from a natural-language prompt (optionally grounded in a Figma frame). Returns the generated files plus a short explanation. Requires `MUI_RECIPES_API_KEY`. Pass `threadId` back on subsequent calls to keep multi-turn conversations on the same chat. Pass `muiPairing` to target a specific MUI / MUI X major (see [Targeting a MUI version](#targeting-a-mui-version)).\n\n## Quick start\n\n```bash\npnpm install                          # once, from repo root\npnpm --filter @mui/mcp build:local    # builds @mui/x-agent-tools first, then @mui/mcp -> build/stdio.js\n```\n\nSmoke test:\n\n```bash\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"test\",\"version\":\"0.1\"}}}' \\\n  | node packages/mcp/build/stdio.js\n```\n\nExpected: `serverInfo: { name: \"mui-mcp\", version: \"0.x.0\" }` and the supported `capabilities`.\n\n## Connecting an MCP client\n\n**Available env vars** (all set via your client's config below):\n\n- `MUI_DOCS_BASE_URL` (optional, default `https://chat-backend.mui.com`): docs-catalog API base URL. Override when developing against a local backend.\n- `MUI_RECIPES_API_KEY` (required for `generateReactCode`): API key created at console.mui.com/products/recipes/api-keys. The server exchanges it for a short-lived JWT on the first call and caches the JWT in memory. The docs tools above keep working without it; only codegen requires it.\n- `MUI_BACKEND_BASE_URL` (optional, default `https://api.mui.com`): mui-backend base URL (where API-key → JWT exchange happens). Override for local dev, typically `http://localhost:5002`.\n- `MUI_RECIPES_BACKEND_BASE_URL` (optional, default `https://chat-backend.mui.com`): recipes-backend base URL (where codegen runs). Override for local dev, typically `http://localhost:5003`.\n\n### Claude Code CLI (simplest)\n\n```bash\nclaude mcp add mui-local \\\n  -e MUI_RECIPES_API_KEY=recipes_cli_... \\\n  -e MUI_BACKEND_BASE_URL=http://localhost:5002 \\\n  -e MUI_RECIPES_BACKEND_BASE_URL=http://localhost:5003 \\\n  -e MUI_DOCS_BASE_URL=http://localhost:5003 \\\n  -- node /absolute/path/to/mui-x/packages/mcp/build/stdio.js\n```\n\nDrop any `-e` line you don't need (codegen is the only tool that requires an API key). The `--` separator is required when passing env vars. Verify with `claude mcp list`; remove with `claude mcp remove mui-local`. Writes to your personal `~/.claude.json`, never to the repo's shared `.mcp.json`.\n\nTest prompts:\n\n- Docs lookup:\n  > Use `useMuiDocs` to look up the docs catalog for `@mui/material`. Then fetch the most relevant URL and summarize the `Button` component API.\n- Codegen (requires `MUI_RECIPES_API_KEY`):\n  > Use `generateReactCode` to build a Tomato product card with image, title, price, and an Add-to-cart button.\n\n### Claude Desktop / Cursor / other JSON-config clients\n\nEdit the client's config file (`~/Library/Application Support/Claude/claude_desktop_config.json` for Claude Desktop, `~/.cursor/mcp.json` for Cursor, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"mui-local\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mui-x/packages/mcp/build/stdio.js\"],\n      \"env\": {\n        \"MUI_RECIPES_API_KEY\": \"recipes_cli_...\",\n        \"MUI_BACKEND_BASE_URL\": \"http://localhost:5002\",\n        \"MUI_RECIPES_BACKEND_BASE_URL\": \"http://localhost:5003\",\n        \"MUI_DOCS_BASE_URL\": \"http://localhost:5003\"\n      }\n    }\n  }\n}\n```\n\nDrop any `env` key you don't need (only codegen requires `MUI_RECIPES_API_KEY`). Restart the client.\n\n### MCP Inspector (debug, no client setup needed)\n\n```bash\npnpm --filter @mui/mcp mcp-inspector\n```\n\nBuilds the server, then opens a web UI to call tools and inspect responses in isolation.\n\n## Targeting a MUI version\n\n`generateReactCode` accepts a `muiPairing` field to target a specific MUI / MUI X major. The shape mirrors the version picker on recipes.mui.com:\n\n```ts\nmuiPairing: {\n  material: 'v5' | 'v6' | 'v7' | 'v9',     // Material UI core; v8 was skipped\n  muiX: 'v5' | 'v6' | 'v7' | 'v8' | 'v9'   // MUI X products (DataGrid, DatePickers, etc.)\n}\n```\n\n**Default when omitted**: latest stable pairing (`{ material: 'v9', muiX: 'v9' }` today). Generation stays current with whatever the backend treats as latest.\n\n**Agents should detect and pass** `muiPairing` **for projects pinned to older majors.** Read the project's `package.json`, look at `@mui/material` and `@mui/x-data-grid` ranges, and forward the matching pair. A project pinned to `@mui/material ^7.x` + `@mui/x-data-grid ^8.x` should send `{ material: 'v7', muiX: 'v8' }`. Without this, the agent will silently get v9 code on a v7 codebase.\n\nExample MCP client prompt the host can ship as a guideline:\n\n> Before calling `generateReactCode`, read `package.json` and look up `@mui/material` and `@mui/x-data-grid` (or `@mui/x-data-grid-premium` / `@mui/x-date-pickers`). Pass the detected majors as `muiPairing`. Omit it only if no MUI dependencies are present.\n\n### Response footer\n\nEvery successful call returns the **effective pairing** on the result (and in the rendered text footer), even when the caller omitted `muiPairing`. Use this to confirm what the backend actually applied:\n\n```text\nthreadId: `chat-abc123` (pass on follow-up calls to continue this conversation).\nmuiPairing: `v7` + `v8` (effective targeting)\n```\n\n- Caller provided a pairing → echoes it back.\n- Caller omitted on a follow-up → returns the thread's locked pairing.\n- Caller omitted on a new thread → returns the resolver's default (currently `v9` + `v9`).\n\n## Tips for best results\n\n### Boost agent tool selection in your project\n\nWhen prompts don't explicitly name `generateReactCode`, hosts like Claude Code Agent (WebStorm/Cursor) sometimes pick built-in file-edit tools instead of the MCP, even on prompts that are clearly about Material UI. To nudge selection in your project, drop the following into your repo's `CLAUDE.md` (or your host's equivalent project-config file):\n\n```markdown\n## Generating Material UI components\n\nWhen the user asks to create, scaffold, or implement a Material UI / MUI component or page, prefer the `generateReactCode` MCP tool over writing the component from scratch with `Edit` / `Write`. It stays current with MUI v7 idioms (Grid not Grid2, current MUI X DataGrid props) and grounds in Figma context when available.\n\nBefore calling `generateReactCode`, read `package.json` to detect the project's MUI majors (`@mui/material`, `@mui/x-data-grid`) and pass them as `muiPairing` so the generated code matches the installed versions.\n```\n\nThis compounds with the tool's prescriptive description: the per-project hint reaches the agent in places the global description doesn't.\n\n### What the agent will do with the output\n\nAcross the MCP-host UIs we've tested (Claude Code Agent in WebStorm), the host agent treats `generateReactCode`'s output as a structured suggestion rather than a verbatim file dump. Expect:\n\n- `App.tsx` **is usually discarded or replaced.** The MCP emits an entry-file wrapper alongside the component. Host agents drop it when the project already has a host shell (Next.js page, Vite `main.tsx`, Storybook story, etc.).\n- **Component filenames get renamed to match project conventions.** `components/ContactForm.tsx` may become `contact-form.tsx`; PascalCase may become kebab-case. The `filename` we emit is advisory.\n- **Component bodies stay intact.** When the agent does adapt, it adjusts wrappers and paths, not the React code itself.\n- **Stack-mismatch warnings surface before writing.** On non-MUI projects (Radix, Tailwind-only, etc.) the agent typically asks before writing MUI-importing code, or surfaces a caveat. This is correct, conservative behavior.\n\nIf you're building an integration around `generateReactCode`, design for \"the agent will adapt the shell, keep the body\" rather than \"write all returned files verbatim.\"\n\n## Development\n\nThis package is a thin adapter that registers MUI's agent tools over the MCP protocol. The tool logic and shared infrastructure (auth, logging, retry, caching) live in [@mui/x-agent-tools](../x-agent-tools/); this package only maps them onto MCP handlers.\n\nDev loop: edit `src/`, rebuild, restart your MCP client (Inspector reloads automatically). `build:local`\nalso rebuilds `@mui/x-agent-tools` when you change it (skipped when unchanged).\n\n```bash\npnpm --filter @mui/mcp build:local\n```\n\nSource layout:\n\n```text\npackages/mcp/\n├── src/\n│   ├── stdio.ts            # entry: builds the server and registers the tools\n│   ├── version.ts          # reads the package version (works in the flat published layout)\n│   ├── docs/\n│   │   ├── handler.ts      # adapts the docs tools to MCP handlers\n│   │   └── register.ts     # builds + registers useMuiDocs / fetchDocs\n│   └── codegen/\n│       ├── handler.ts      # adapts generateReactCode to an MCP handler\n│       ├── progress.ts     # forwards codegen progress as MCP notifications\n│       └── register.ts     # builds + registers generateReactCode\n├── build/                  # code-infra build output, gitignored; build/stdio.js is what clients spawn\n├── package.json\n└── tsconfig.json\n```\n\nBuilt with the standard `code-infra` toolchain. The docs/codegen logic lives in [@mui/x-agent-tools](../x-agent-tools/), a published dependency that pnpm links from its `build/` output, so it must be built first: the `build:local` script (`pnpm --filter @mui/mcp build:local`, which expands to `pnpm --filter \"@mui/mcp...\" build`) handles that.\n\n## Publishing\n\nPublished to npm as [@mui/mcp](https://www.npmjs.com/package/@mui/mcp). End users consume it via `npx` (no local build), pointing at the published version:\n\n```json\n{ \"mcpServers\": { \"mui\": { \"command\": \"npx\", \"args\": [\"-y\", \"@mui/mcp\"] } } }\n```\n\n## Troubleshooting\n\n- **Client doesn't see the server.** Verify the path in your client's config is absolute and points at the actual built file. Restart the client after editing config.\n- `MUI_DOCS_BASE_URL` **errors.** Default backend may be cold-starting (Render free tier). Wait a few seconds and retry, or point at a local backend via env var.\n- `Missing API key` **from** `generateReactCode`**.** Set `MUI_RECIPES_API_KEY` in your client's env. Create a key at console.mui.com/products/recipes/api-keys.\n- `Token exchange failed` **/ 401 on codegen.** Check `MUI_BACKEND_BASE_URL`. Default is `https://api.mui.com`; for local mui-backend, set it to `http://localhost:5002`. A 401 also means the API key was revoked: create a new one.\n- `Generation stream ended unexpectedly` **on codegen.** The recipes-backend SSE was truncated mid-stream (transient proxy hangup, backend restart, etc.). Retry.\n","isInternal":false,"tokens":2961,"sizeBytes":11629},{"name":"README.md","path":"packages/x-agent-tools/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/README.md","title":"x-agent-tools Documentation","category":"plugin-manifest","format":"markdown","content":"# `@mui/x-agent-tools`\n\nThe building blocks behind MUI's AI agent integrations. It implements the MUI documentation and code-generation tools that host packages expose to AI clients, plus the shared infrastructure they run on: JWT auth, SSRF-guarded fetching, caching, retry, and logging.\n\nThis is a library used by host packages such as [@mui/mcp](../mcp/), not something end users install directly.\n\n`zod` is a peer dependency: a host that installs `@mui/x-agent-tools` must also install `zod`, so the tool schemas share a single zod instance across the boundary.\n\n## What's inside\n\n- **Composition layer**: `resolveAgentToolsConfig` reads the backend config from env vars, and `createMuiAgentToolset` assembles the full toolset (SSRF guard, catalog retry, fail-soft, shared cache/queue baked in). The recommended entry point for a host.\n- **Docs tools**: `createDocsTools` builds the `useMuiDocs` / `fetchDocs` tools that look up and fetch MUI docs (`createUseMuiDocsTool` / `createFetchDocTool` are the lower-level factories). `fetchRemotePackages` loads the docs catalog.\n- **Codegen**: `createCodegenTool` generates React + Material UI code from a prompt (POST + buffered SSE). `formatCodegenText` renders the result for a text client.\n- **Auth**: `ApiKeyJwtClient` exchanges a `MUI_RECIPES_API_KEY` for a short-lived JWT (in-memory cache, refresh window, concurrent-call dedup).\n- **Utils**: `LRUCache`, `buildCombinedLogger`, and `createDocsUrlGuard` (the SSRF allowlist for docs fetches).\n\n## Usage\n\nA host composes the toolset and adapts it to its protocol. Minimal sketch:\n\n```ts\nimport { resolveAgentToolsConfig, createMuiAgentToolset } from '@mui/x-agent-tools';\n\nconst toolset = await createMuiAgentToolset(resolveAgentToolsConfig(), { logger });\n\n// codegenTool and fetchDocsTool are ready immediately; neither needs the catalog.\nconst code = await toolset.codegenTool.execute({ prompt: 'Build a product card' }, { signal });\nconst docs = await toolset.fetchDocsTool.execute({ urls: ['https://mui.com/x/...'] }, { signal });\n\n// useMuiDocs needs the catalog; useMuiDocsReady resolves once it settles. Never rejects (fail-soft).\nconst useMuiDocsTool = await toolset.useMuiDocsReady;\nif (useMuiDocsTool) {\n  // null when the catalog was unreachable; codegenTool + fetchDocsTool still work.\n  const grid = await useMuiDocsTool.execute({ sources: ['@mui/x-data-grid'] }, { signal });\n}\n\n// On host shutdown, release the toolset's background resources (docs cache timer + fetch queue).\ntoolset.dispose();\n```\n\nEvery tool exposes `{ name, description, inputSchema, outputSchema, execute(input, ctx?) }`, where `ctx` carries an optional `signal` and `onProgress`. `execute` validates its input against `inputSchema`, so hosts don't need a validation layer of their own. See [@mui/mcp](../mcp/src/) for a full host wiring.\n\n## Development\n\n```bash\npnpm test:unit --project \"@mui/x-agent-tools\" --run\npnpm --filter \"@mui/x-agent-tools\" run typescript\n```\n\nSource layout:\n\n```text\nsrc/\n├── auth/       ApiKeyJwtClient + authed fetch (JWT exchange, 401 retry)\n├── codegen/    generateReactCode: schemas, SSE stream, error mapping, tool, builder\n├── docs/       useMuiDocs / fetchDocs, package catalog, SSRF url guard, fetcher, builder\n├── utils/      cache (LRU), retry, logger, wrapTool\n├── config.ts   env var names, backend defaults, resolveAgentToolsConfig\n├── toolset.ts  createMuiAgentToolset (composes the codegen + docs builders)\n├── types.ts    shared types (AgentTool, ToolExecutionContext, ...)\n└── index.ts    public barrel\n```\n\nBuilt with the standard `code-infra` toolchain and published to npm as `@mui/x-agent-tools`.\n","isInternal":false,"tokens":912,"sizeBytes":3687},{"name":"README.md","path":"packages/x-charts-premium/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/README.md","title":"x-charts-premium Documentation","category":"plugin-manifest","format":"markdown","content":"# x-charts-premium Documentation\n\nPath: `packages/x-charts-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/README.md)","tokens":300,"sizeBytes":193},{"name":"README.md","path":"packages/x-charts-pro/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/README.md","title":"x-charts-pro Documentation","category":"plugin-manifest","format":"markdown","content":"# x-charts-pro Documentation\n\nPath: `packages/x-charts-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/README.md)","tokens":300,"sizeBytes":181},{"name":"README.md","path":"packages/x-charts-vendor/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/README.md","title":"x-charts-vendor Documentation","category":"plugin-manifest","format":"markdown","content":"# x-charts-vendor Documentation\n\nPath: `packages/x-charts-vendor/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/README.md)","tokens":300,"sizeBytes":190},{"name":"README.md","path":"packages/x-charts/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/README.md","title":"x-charts Documentation","category":"plugin-manifest","format":"markdown","content":"# x-charts Documentation\n\nPath: `packages/x-charts/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/README.md)","tokens":300,"sizeBytes":169},{"name":"README.md","path":"packages/x-chat-headless/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/README.md","title":"x-chat-headless Documentation","category":"plugin-manifest","format":"markdown","content":"# x-chat-headless Documentation\n\nPath: `packages/x-chat-headless/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat-headless/README.md)","tokens":300,"sizeBytes":190},{"name":"README.md","path":"packages/x-chat/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/README.md","title":"x-chat Documentation","category":"plugin-manifest","format":"markdown","content":"# x-chat Documentation\n\nPath: `packages/x-chat/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-chat/README.md)","tokens":300,"sizeBytes":163},{"name":"README.md","path":"packages/x-codemod/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/README.md","title":"x-codemod Documentation","category":"plugin-manifest","format":"markdown","content":"# x-codemod Documentation\n\nPath: `packages/x-codemod/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-codemod/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"packages/x-data-grid-generator/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/README.md","title":"x-data-grid-generator Documentation","category":"plugin-manifest","format":"markdown","content":"# x-data-grid-generator Documentation\n\nPath: `packages/x-data-grid-generator/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-generator/README.md)","tokens":300,"sizeBytes":208},{"name":"README.md","path":"packages/x-data-grid-premium/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/README.md","title":"x-data-grid-premium Documentation","category":"plugin-manifest","format":"markdown","content":"# x-data-grid-premium Documentation\n\nPath: `packages/x-data-grid-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-premium/README.md)","tokens":300,"sizeBytes":202},{"name":"README.md","path":"packages/x-data-grid-pro/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/README.md","title":"x-data-grid-pro Documentation","category":"plugin-manifest","format":"markdown","content":"# x-data-grid-pro Documentation\n\nPath: `packages/x-data-grid-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid-pro/README.md)","tokens":300,"sizeBytes":190},{"name":"README.md","path":"packages/x-data-grid/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/README.md","title":"x-data-grid Documentation","category":"plugin-manifest","format":"markdown","content":"# x-data-grid Documentation\n\nPath: `packages/x-data-grid/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-data-grid/README.md)","tokens":300,"sizeBytes":178},{"name":"README.md","path":"packages/x-date-pickers-pro/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/README.md","title":"x-date-pickers-pro Documentation","category":"plugin-manifest","format":"markdown","content":"# x-date-pickers-pro Documentation\n\nPath: `packages/x-date-pickers-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers-pro/README.md)","tokens":300,"sizeBytes":199},{"name":"README.md","path":"packages/x-date-pickers/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/README.md","title":"x-date-pickers Documentation","category":"plugin-manifest","format":"markdown","content":"# x-date-pickers Documentation\n\nPath: `packages/x-date-pickers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-date-pickers/README.md)","tokens":300,"sizeBytes":187},{"name":"README.md","path":"packages/x-internal-gestures/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/README.md","title":"x-internal-gestures Documentation","category":"plugin-manifest","format":"markdown","content":"# x-internal-gestures Documentation\n\nPath: `packages/x-internal-gestures/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/README.md)","tokens":300,"sizeBytes":202},{"name":"README.md","path":"packages/x-internal-gestures/src/core/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/core/README.md","title":"core Documentation","category":"plugin-manifest","format":"markdown","content":"# core Documentation\n\nPath: `packages/x-internal-gestures/src/core/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/core/README.md)","tokens":300,"sizeBytes":205},{"name":"README.md","path":"packages/x-internal-gestures/src/matchers/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/matchers/README.md","title":"matchers Documentation","category":"plugin-manifest","format":"markdown","content":"# matchers Documentation\n\nPath: `packages/x-internal-gestures/src/matchers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/matchers/README.md)","tokens":300,"sizeBytes":217},{"name":"README.md","path":"packages/x-internal-gestures/src/testing/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/testing/README.md","title":"testing Documentation","category":"plugin-manifest","format":"markdown","content":"# testing Documentation\n\nPath: `packages/x-internal-gestures/src/testing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internal-gestures/src/testing/README.md)","tokens":300,"sizeBytes":214},{"name":"README.md","path":"packages/x-internals/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/README.md","title":"x-internals Documentation","category":"plugin-manifest","format":"markdown","content":"# x-internals Documentation\n\nPath: `packages/x-internals/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-internals/README.md)","tokens":300,"sizeBytes":178},{"name":"README.md","path":"packages/x-license/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/README.md","title":"x-license Documentation","category":"plugin-manifest","format":"markdown","content":"# x-license Documentation\n\nPath: `packages/x-license/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-license/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"packages/x-scheduler-internals-premium/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/README.md","title":"x-scheduler-internals-premium Documentation","category":"plugin-manifest","format":"markdown","content":"# x-scheduler-internals-premium Documentation\n\nPath: `packages/x-scheduler-internals-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals-premium/README.md)","tokens":300,"sizeBytes":232},{"name":"README.md","path":"packages/x-scheduler-internals/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/README.md","title":"x-scheduler-internals Documentation","category":"plugin-manifest","format":"markdown","content":"# x-scheduler-internals Documentation\n\nPath: `packages/x-scheduler-internals/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-internals/README.md)","tokens":300,"sizeBytes":208},{"name":"README.md","path":"packages/x-scheduler-premium/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/README.md","title":"x-scheduler-premium Documentation","category":"plugin-manifest","format":"markdown","content":"# x-scheduler-premium Documentation\n\nPath: `packages/x-scheduler-premium/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler-premium/README.md)","tokens":300,"sizeBytes":202},{"name":"README.md","path":"packages/x-scheduler/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/README.md","title":"x-scheduler Documentation","category":"plugin-manifest","format":"markdown","content":"# x-scheduler Documentation\n\nPath: `packages/x-scheduler/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-scheduler/README.md)","tokens":300,"sizeBytes":178},{"name":"README.md","path":"packages/x-telemetry/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/README.md","title":"x-telemetry Documentation","category":"plugin-manifest","format":"markdown","content":"# x-telemetry Documentation\n\nPath: `packages/x-telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-telemetry/README.md)","tokens":300,"sizeBytes":178},{"name":"README.md","path":"packages/x-tree-view-pro/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/README.md","title":"x-tree-view-pro Documentation","category":"plugin-manifest","format":"markdown","content":"# x-tree-view-pro Documentation\n\nPath: `packages/x-tree-view-pro/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view-pro/README.md)","tokens":300,"sizeBytes":190},{"name":"README.md","path":"packages/x-tree-view/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/README.md","title":"x-tree-view Documentation","category":"plugin-manifest","format":"markdown","content":"# x-tree-view Documentation\n\nPath: `packages/x-tree-view/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-tree-view/README.md)","tokens":300,"sizeBytes":178},{"name":"README.md","path":"packages/x-virtualizer/README.md","rawUrl":"https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/README.md","title":"x-virtualizer Documentation","category":"plugin-manifest","format":"markdown","content":"# x-virtualizer Documentation\n\nPath: `packages/x-virtualizer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-virtualizer/README.md)","tokens":300,"sizeBytes":184}],"systemPromptSnippet":"<yakaai_skills repo=\"mui/mui-x\">\n<!-- File: AGENTS.md (Tokens: ~1129 | Category: root-instruction) -->\n# Project guidelines\n\nCheck `AGENTS.local.md` for personal preferences.\n\n## Linting and formatting\n\n### Linting\n\n```bash\npnpm eslint\npnpm eslint:fix # Auto-fix issues\n```\n\n### Formatting\n\n```bash\npnpm prettier # Format changed files (compared to master)\npnpm prettier:all # Format all files\n```\n\n### Other Linters\n\n```bash\npnpm stylelint # when editing CSS/style files\npnpm generate:exports # when editing code in `packages/x-charts*`\n```\n\n## Testing\n\n### Run unit tests in jsdom\n\n```bash\n# Filter by project name (glob patterns supported)\n# --run flag = run tests once and exit\npnpm test:unit --project \"x-data-grid\" --run # exact match\npnpm test:unit --project \"x-charts*\" --run # starts with\npnpm test:unit --project \"*-pro\" --run # ends with\n```\n\n### Run unit tests in the browser\n\n```bash\n# Filter by project name (glob patterns supported)\n# --run flag = run tests once and exit\npnpm test:browser --project \"x-data-grid\" --run # exact match\npnpm test:browser --project \"x-charts*\" --run # starts with\npnpm test:browser --project \"*-pro\" --run # ends with\n```\n\n### Writing new unit tests\n\n#### Ensuring a test only runs in a specific environment\n\n- Use `it.skipIf(isJSDOM)` to skip when running unit tests\n- Use `it.skipIf(!isJSDOM)` to run only in browser mode.\n\n## TypeScript\n\n```bash\n# Using pnpm filter\npnpm --filter \"@mui/x-data-grid\" run typescript # single package\npnpm --filter \"@mui/x-data-grid*\" run typescript # glob pattern (all data-grid packages)\npnpm --filter \"@mui/x-charts*\" run typescript # all charts packages\npnpm typescript # typecheck the entire monorepo\n```\n\n## Components documentation\n\nWhen editing React components or TypeScript types/interfaces in the `packages` folder, run the following script after you're done with the changes:\n\n```bash\npnpm proptypes # generate PropTypes\npnpm docs:api # generate/update the API documentation\n```\n\n## Error Messages\n\nThese guidelines only apply for errors thrown from public packages.\n\nEvery error message must:\n\n1. **Say what happened** - Describe the problem clearly\n2. **Say why it's a problem** - Explain the consequence\n3. **Point toward how to solve it** - Give actionable guidance\n\nFormat:\n\n- Prefix with `MUI X:` (for internal or generic packages) and `MUI X PackageName:` (for example, `MUI X Charts:` or `MUI X Data Grid:`) for specific packages\n- Use string concatenation for readability\n- Include a documentation link when applicable (`https://mui.com/x/...`)\n\nExample:\n\n```tsx\nthrow new Error(\n  `MUI X Charts: The series configuration is missing a required serializer.\nThis prevents the chart from identifying series items correctly.\nEnsure each series type registers its serializer in the seriesConfig.`,\n);\n```\n\n### Error Minifier\n\nUse the `/* minify-error-disabled */` comment to de-activate the babel plugin for small error messages:\n\n```tsx\nthrow /* minify-error-disabled */ new Error(`MUI X: Unreachable`);\n```\n\nThe minifier works with both `Error` and `TypeError` constructors.\n\n### After Adding/Updating Errors\n\nRun `pnpm extract-error-codes` to update `docs/public/static/error-codes.json`.\n\n**Important:** If the update created a new error code, but the new and original message have the same number of arguments and semantics haven't changed, update the original error in `error-codes.json` instead of creating a new code.\n\n## Dependencies\n\n- Examples (`examples/`) are standalone projects — never use `catalog:` for their dependencies. Always use explicit version ranges.\n\n## Other scripts\n\nRefer to `package.json` for other available scripts.\n\n## Docs\n\n### Updating docs demos\n\nWhen updating demos in the `docs` folder, only update the `.tsx` files.\nTo generate `.js` files, run `pnpm docs:typescript:formatted`.\nAfter updating the demo, run `pnpm eslint` and `pnpm valelint` to ensure the markdown files are valid. Fix the found issues.\n\n## Codemods\n\nCodemods are run by consumers of the MUI X libraries to migrate to newer versions of the libraries.\n\nWhen adding a new codemod, make sure to also document it in the `packages/x-codemod/README.md` following existing examples.\nYou also need to create or expand the `preset-safe` preset to include the new codemod, document the preset in the `README.md` and also include the newly added changes to the `preset-safe` test.\n\n### Versioning\n\nWhen creating codemods, the code should be created in the directory of the target version. E.g., a codemod to migrate from v8 to v9 should be placed inside the `v9.0.0` directory.\n\n### Writing codemods\n\nWhen writing codemods, first check in the `src/util` folder of the `x-codemod` package if there are any utilities that can help you.\n\n<!-- File: .agents/skills/mui-release/SKILL.md (Tokens: ~714 | Category: anthropic-skill) -->\n---\nname: mui-release\ndescription: Run or assist a release in any MUI repo, at any stage - release PR, npm publish, docs deploy, GitHub release.\nargument-hint: '[target-version]'\n---\n\n# MUI Release\n\nEvery MUI repo releases through the same staged pipeline. Each stage depends on the previous one completing — never start a stage before its predecessor is done. This skill describes the shared skeleton; the details vary per repo.\n\n**Resumable:** the skill can be invoked at any stage — a release often spans multiple sessions (e.g. the PR was created and merged earlier, and the user now wants to trigger the npm publish). In the pipeline diagram below, each arrow out of a stage states the observable evidence that the stage is complete: resume at the first stage whose evidence is missing. Confirm the detected stage with the user before continuing; earlier stages' outputs are inputs, not work to redo.\n\n**Source of truth:** the target repo's `scripts/README.md` is the authoritative, evolving runbook. Always read it in the target checkout before releasing; use this skill to know what the stages mean and what to expect. Where the README contradicts this skill, the README wins. Repo-specific steps (docs release pages, hotfix flows, prerelease progressions, docs-only deploys, first-time package publishing) live only there. Repos without that runbook: read their release workflow directly.\n\n## The pipeline\n\nEach stage's instructions live in its own file — after detecting and confirming the current stage, read **that stage's file**:\n\n```mermaid\nflowchart TD\n    S1[\"Stage 1: Prepare the release PR\\n(stage-1-prepare-pr.md)\"]\n    S2[\"Stage 2: Merge the PR, then publish\\n(stage-2-publish-packages.md)\"]\n    S3[\"Stage 3: Publish the docs\\n(stage-3-publish-docs.md)\"]\n    S4[\"Stage 4: Publish the GitHub release, then announce\\n(stage-4-github-release.md)\"]\n\n    S1 -- \"open PR with the release label,\\napproved, CI green\" --> S2\n    S2 -- \"release PR merged, packages on npm at\\nthe new version, draft GitHub release created\" --> S3\n    S3 -- \"docs live for the new version\" --> S4\n    S4 -- \"published non-draft GitHub release for the\\ncurrent root package.json version\\n(release done, next one starts at Stage 1)\" --> S1\n```\n\nVerify each stage's evidence with read-only commands (run in the target checkout; `<version>` is the root `package.json` version):\n\n```bash\n# release PR: open (stage 1) or merged (stage 2 done merging)\ngh pr list --label release --state open --json number,title,reviewDecision\ngh pr list --label release --state merged --limit 1 --json number,title,mergedAt\ngh pr checks <number>                      # CI green?\n\n# packages on npm at the new version\nnpm view <main-package>@<version> version\n\n# GitHub release: exists? still a draft?\ngh release list --limit 5 --json tagName,isDraft,isLatest\ngh release view \"v<version>\" --json tagName,isDraft\n\n# docs live for the new version\ncurl -s <docs-url> | grep \"<version>\"      # or check the Netlify dashboard\n```\n\n<!-- File: .agents/skills/mui-release/stage-1-prepare-pr.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-1-prepare-pr.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-1-prepare-pr.md)\n\n<!-- File: .agents/skills/mui-release/stage-2-publish-packages.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-2-publish-packages.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-2-publish-packages.md)\n\n<!-- File: .agents/skills/mui-release/stage-3-publish-docs.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-3-publish-docs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-3-publish-docs.md)\n\n<!-- File: .agents/skills/mui-release/stage-4-github-release.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Mui-release Skill\n\nPath: `.agents/skills/mui-release/stage-4-github-release.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-release/stage-4-github-release.md)\n\n<!-- File: .agents/skills/mui-x-review/agents/openai.yaml (Tokens: ~300 | Category: anthropic-skill) -->\n# Agents Skill\n\nPath: `.agents/skills/mui-x-review/agents/openai.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/.agents/skills/mui-x-review/agents/openai.yaml)\n\n<!-- File: .agents/skills/mui-x-review/SKILL.md (Tokens: ~4847 | Category: anthropic-skill) -->\n---\nname: mui-x-review\ndescription: 'Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings.'\n---\n\n# MUI X Review\n\nReview current diff. Find **regressions and correctness bugs** first. Also find\n**cleanup** (reuse / simplification / efficiency). Default effort: `medium`. See\n[Effort levels](#effort-levels) for depth and subagent fan-out.\n\nArgument hint: `[low|medium|high|xhigh|max] [--fix] [--comment [inline]] [<target>]`\n\nThis skill is **opt-in only**: run it when the user explicitly asks for it by\nname (`/mui-x-review`, `$mui-x-review`, \"the MUI X review skill\", or a CI\njob configured to use it). A plain \"review my changes\" or \"review this PR\", or\nwrapping up an implementation, is not an invocation — review without this\nworkflow unless the user names it.\n\n`medium` = **precision**. Every finding actionable. `high`, `xhigh`, `max` =\n**recall**. Missed bug ships. Keep uncertain findings when mechanism is real;\nlabel them clearly.\n\n## Scope\n\nLocal review: diff branch against upstream\n(`git diff @{upstream}...HEAD`, fall back to `main` / `master`, or `HEAD~1`).\nFold in uncommitted + untracked changes — review often runs pre-commit. If PR link,\nbranch name, or file path passed as argument, review that target instead.\n\n## Effort levels\n\n- **low** — bugs only. Flag runtime-correctness bugs and regressions. Skip\n  Tests, Simplifications, Docs, and test/fixture hunks. No subagents. Precision\n  bias.\n- **medium** (default) — main agent reviews Bugs, Tests, Simplifications, Docs,\n  and triggered API/performance concerns. Main agent verifies candidates. Large,\n  risky, fragile, shared, or cross-component diff? Add exactly one\n  [adversarial bug hunter](#adversarial-bug-hunter) agent. Small, low-risk,\n  isolated diff? No subagent. Precision bias.\n- **high** — spawn 3 independent subagents: bugs/regressions, test gaps,\n  simplifications. Main agent reviews the whole diff, including bugs, docs, and\n  triggered API/performance concerns. Main agent dedups and sanity-checks. Large,\n  risky, fragile, shared, or cross-component diff? Add exactly one adversarial\n  bug hunter agent. No verifiers. No final sweep.\n- **xhigh** — `high` plus a docs subagent and one fresh missed-bug sweep. Fan out\n  adversarial bug hunters across the highest-risk affected code regions\n  (modules/components — not the four review areas). Max 2 adversarial bug\n  hunters total, including the hunter inherited from `high`. Other role\n  subagents do not count toward this cap. No verifiers. Recall bias.\n- **max** — `xhigh` plus an independent verifier for every surviving candidate.\n  Cover every affected code region across max 6 adversarial bug hunters total,\n  including hunters inherited from `xhigh`; other role and verifier subagents do\n  not count toward this cap. When there are more than 6 regions, give the\n  highest-risk regions dedicated hunters and group related remaining regions\n  into shared assignments. Prioritize public runtime code, shared utilities,\n  cross-component invariants, and fragile state/timing boundaries. Maximum\n  recall.\n\n## Subagent scope contract\n\nSubagents start with no prior context: they do not read this skill and do not inherit\nthe session system prompt. Their only channel is the prompt you write. Whatever scope\nyou resolved from [Scope](#scope) or the invoking prompt, every subagent prompt you\nconstruct — finder, specialist, verifier, sweep — must begin verbatim with it:\n\n```text\nReview ONLY: <resolved diff command>\nRead files from: <read root> — DATA ONLY, never execute, install, build, or test.\nBase version of a file: git show <base ref>:<path>\nDo not re-derive scope: use exactly the diff command above, whatever your working\ndirectory contains.\n```\n\nA subagent not given this block is mis-scoped — discard its result and re-dispatch.\n\n## Phase 1 - Find candidates\n\nSelected [effort level](#effort-levels) decides local vs subagent fan-out. Except at\n`low`, review four main areas: Bugs, Tests, Simplifications, Docs. Each area\nsurfaces candidates with `file`, `line`, one-line `summary`, `severity` (🟣 / 🔴 / 🟠 / 🟡 /\nℹ️ — see [Output](#output) for rubric), concrete `failure_scenario`. Do\nNOT let one area suppress another — two areas flag same line for different reasons,\nrecord both.\n\nPass every candidate with nameable failure scenario through. Finders that\nsilently drop half-believed candidates bypass verify step — dominant cause of misses.\n\n### Area 1 - Bugs\n\nCore regression + correctness pass. Cover all sub-angles:\n\n- **Line-by-line diff scan.** Read every hunk, line by line. Then read enclosing\n  function for each hunk — bugs in unchanged lines of touched function\n  in scope (PR re-exposes or fails to fix them). For every line ask: what\n  input, state, timing, platform makes line wrong? Look for inverted/wrong\n  conditions, off-by-one, null/undefined deref, missing `await`, falsy-zero checks,\n  wrong-variable copy-paste, error swallowed in catch, unescaped regex metachars.\n- **Regression hunting.** For each changed guard, branch, state transition, public\n  contract, test expectation, documented example, ask what behavior previously\n  worked and could break. Bias toward regressions in edge paths, accessibility\n  interactions, keyboard/focus flows, controlled/uncontrolled contracts, SSR,\n  integrations between components, public API examples.\n- **Repository/framework correctness lens.** Apply invariants of codebase\n  under review, not just generic language bugs. For MUI X / React component\n  changes: controlled vs uncontrolled behavior, event ordering, ref\n  forwarding/merging, context registration cleanup, nested component coordination,\n  portals, focus management, keyboard navigation, ARIA attributes, disabled/read-only\n  states, form integration, SSR/hydration safety, Strict Mode behavior, shadow\n  DOM-safe DOM access (`contains`, `getTarget`, `activeElement`, `ownerDocument`,\n  `ownerWindow`).\n- **Removed-behavior auditor.** For every line diff DELETES or replaces, name\n  invariant/behavior it enforced, then search new code for where invariant\n  re-established. Can't find it? Candidate: removed\n  guard, dropped error path, narrowed validation, deleted test covering real case.\n- **Cross-file tracer.** For each function diff changes, find callers (Grep\n  symbol) and check if change breaks any call site: new\n  precondition, changed return shape, new exception, timing/ordering\n  dependency. Also check callees: parallel change in same PR make call\n  unsafe?\n\n### Area 2 - Tests\n\nReview test changes and tests that _should_ have changed. Flag:\n\n- New/changed behavior with no test exercising it\n- Assertions not actually pinning behavior (asserting mock called instead of\n  result, snapshot-only coverage, asserting on value test itself computed)\n- Missing edge/error-path cases diff introduces (null, empty, boundary, failure,\n  concurrency)\n- Setup/teardown asymmetry (state leaked between tests, fixtures not reset)\n- Over-mocking hiding real contract\n- Tests deleted or weakened without justification\n- Tests whose names do not match what they assert, or whose names are misleading\n\nName specific case untested or under-asserted.\n\n### Area 3 - Simplifications\n\nBundle size is a top constraint. Smallest correct implementation wins. Preserve\npublic behavior, runtime performance, and maintainability. Treat every bundle\nsize increase as suspect — new bytes must earn their place; flag increases the\ndiff doesn't justify.\n\nAlways ask: \"Can this ship with less code, state, branching, or abstraction?\"\nLook for:\n\n- Heavy dependency or new abstraction where a few lines or existing util does\n  the job\n- Code doing too much for an edge case almost no one hits — guards, branches,\n  state, or config for scenarios not realistically reachable in consumer usage;\n  weigh handling cost against edge-case likelihood and propose dropping or\n  cheapening it\n- Duplicated logic re-implementing what codebase already has — Grep\n  shared/utility modules and files adjacent to change; name existing helper to\n  call instead\n- Non-tree-shakeable or whole-package imports; namespace imports of\n  side-effectful modules\n- Dead code left behind; redundant or derivable state\n- Special cases layered on shared infrastructure when mechanism should\n  generalize\n\nName smaller or better-shaped form doing same job. Measure real bundle effect\nwhen material. Source-line count proves nothing.\n\n### Area 4 - Docs\n\nFlag documentation and comments diff makes wrong or leaves stale:\n\n- Comments describing old behavior after code changed\n- JSDoc/docstrings whose params, return type, thrown errors no longer match\n  signature\n- README / API docs / changelog entries contradicting change; examples no longer\n  compile or run\n- TODO/FIXME change resolved but didn't remove; new non-obvious code with no\n  explanation where warranted\n\nQuote stale line and state what it should say.\n\n### Conditional specialist - API design\n\nNot part of default four-area fan-out. Skip entirely at\n`low`. At `medium`, include in main-agent pass when diff adds/changes\npublic API surface: component, prop, event, hook, provider, imperative method,\nexported type, value shape, behavior contract, docs example teaching API.\nAt `high`, `xhigh`, `max`, run as independent API design subagent when\ntriggered.\n\nHeavily critique API taste: naming, mental model, consistency with\nnearby APIs in same codebase, controlled/uncontrolled ergonomics, composition,\nescape hatches, type shape, default behavior, future extensibility, migration risk,\nlikely user footguns. Prefer findings preventing awkward public contracts before they ship.\nReport API design findings under Bugs when they create likely user-visible footguns\nor regressions, otherwise under Simplifications.\n\n### Conditional specialist - Runtime performance\n\nNot part of default four-area fan-out. Skip entirely at\n`low`. At `medium`, include in main-agent pass when diff likely affects\nruntime performance: render hot paths, large item collections, virtualization,\npositioning, layout measurement, scroll/resize/pointer/keyboard handlers,\nobservers, animations, repeated DOM reads/writes, state updates in loops,\ncomponent registration/lookup paths. At `high`, `xhigh`, `max`, run as\nindependent runtime performance subagent when triggered.\n\nPrefer concrete measurement when feasible: existing perf tests, targeted benchmark\nscripts, small reproducible measurement. If measuring not practical, state\nexpected complexity or browser work and what would confirm it. Report runtime\nperformance findings under Bugs when users can see lag, jank, hangs, excessive\nwork, otherwise under Simplifications.\n\n### Adversarial bug hunter\n\nSubagent role added per [Effort levels](#effort-levels). Assume there are bugs\nin the diff a consumer will hit. Do not trust PR description, comments, or test\nnames — verify against code. Attack changed invariants directly: construct\nconcrete input, state, timing, or platform that makes new code wrong. Report\nevery candidate with a nameable failure scenario; when none survive, report\nempty — never pad with weak findings to justify the hunt.\n\n---\n\nSimplification, test, docs candidates use same `file`/`line`/`summary`\nshape; in `failure_scenario`, state concrete cost (what duplicated, wasted,\nuntested, stale, harder to maintain) instead of crash. Regressions and\ncorrectness bugs always outrank simplification, test, docs findings when\nreview ordered.\n\n## Phase 2 - Verify candidates (local by default; max adds subagent votes)\n\nDedup candidates pointing at same line/mechanism, keep one with\nmost concrete failure scenario. Verify candidates locally in main agent by\ndefault.\n\nJudge every candidate by reachability and impact. Keep every valid bug. Demote\nto ℹ️ note when behavior not realistically reachable in real consumer usage,\nhas no meaningful user impact, or is optional improvement rather than\ncorrectness defect. Demotion is not refutation — demoted findings still print,\nat lower severity. At `max` effort, also run **one verifier** as subagent for each\nremaining candidate when subagents available and authorized: give it diff,\nrelevant file(s), candidate, have it return exactly one of:\n\n- **CONFIRMED** — can name inputs/state triggering it and wrong output or\n  crash. Quote line.\n- **PLAUSIBLE** — mechanism real, trigger uncertain (timing, env, config).\n  State what would confirm it.\n- **REFUTED** — factually wrong (code doesn't say that) or guarded elsewhere. Quote\n  line proving it.\n\nKeep candidates where vote CONFIRMED or PLAUSIBLE.\n\nAt **max**, verify recall-biased — **PLAUSIBLE by default**: do not\nrefute candidate for being \"speculative\" or \"depends on runtime state\" when\nstate realistic (concurrency races, nil/undefined on rare-but-reachable path,\nfalsy-zero treated as missing, off-by-one on boundary code doesn't exclude,\nretry storms / partial failures, regex/allowlist lost anchor). REFUTE only\nwhen constructible from code: factually wrong, provably impossible, already\nhandled in this diff, pure style with no observable effect.\n\n## Phase 3 - Sweep for gaps (xhigh / max effort)\n\nAt `xhigh` and `max`, run **one more finder** as fresh reviewer with\ncurrent finding list. Re-read diff and enclosing functions looking ONLY for\ndefects not already listed. Do not re-derive or re-confirm anything already there —\njob is gaps. Focus on what first pass misses: moved/extracted code\ndropping guard or anchor; second-tier footguns (dataclass default evaluated\nonce, `hash()` non-determinism, lock-scope shrink, predicate methods with side\neffects); setup/teardown asymmetry in tests; config defaults flipped. Surface\nadditional candidates naming defect not already on list. If nothing new,\nreturn empty sweep — do not pad.\n\n## Output\n\nReply in Markdown. Do not wrap main result in JSON or code fence. Use\nsentence case for `#` heading and all finding titles; no title case. Do\nnot open with generic target/base filler like \"Reviewed `owner/repo#123` against\n`branch`.\" Only mention target or base branch when explaining specific\nfinding or limitation.\n\nPrint only non-empty category sections, in this order: `Bugs`, `Tests`,\n`Simplifications`, `Docs`. A category with 0 findings gets nothing — no\nheading, no count, no `No findings.` placeholder. Always end with `Verdict`.\nBefore sending, verify every surviving finding prints exactly once and each\nprinted section count matches its numbered findings. When no findings exist\nanywhere, use the [No findings](#no-findings) format.\n\n### Severity rubric\n\nPrefix every finding title with one severity marker:\n\n- 🟣 **critical - blocking.** Correctness issue crashing common flows, losing\n  user data, creating security/privacy problem, making public component contract\n  unusable, or creating broad cross-component accessibility, focus, form, SSR\n  breakage. Must block merge.\n- 🔴 **high - blocking.** Realistic user-visible regression in normal component\n  usage, accessibility, keyboard/focus behavior, controlled/uncontrolled behavior,\n  form integration, SSR/hydration, public API behavior, or public docs example\n  no longer compiling or teaching broken API usage. Should block merge even\n  when affected path has workaround or not most common path.\n- 🟠 **medium - non-blocking.** Real issue worth fixing before merge when\n  practical but not normally blocking: narrow or uncommon bug, meaningful missing\n  test, stale public-doc prose not breaking copy-pasted code, cleanup\n  avoiding likely future mistakes. Use only when issue doesn't break public\n  contract and doesn't affect accessibility, focus, forms, SSR, or normal component\n  usage.\n- 🟡 **low - non-blocking.** Minor edge-case bug, small test/doc gap, modest\n  simplification useful but easy for maintainers to defer.\n- ℹ️ **note.** Informational — observation, heads-up, optional suggestion the\n  maintainer may reasonably decline.\n\nMUI X has stricter quality bar than most apps — small component-library\nregressions multiplied across many downstream products. When choosing between\nadjacent severities, choose higher severity if failure reaches realistic\nconsumer usage, accessibility behavior, form behavior, focus management, SSR,\npublic API contract or broken public docs example. Do not reserve 🔴 high only for\noutage-level failures.\n\nWithin each section, order findings 🟣 -> 🔴 -> 🟠 -> 🟡 -> ℹ️.\n\n### Verdict\n\nEnd review with `## Verdict` line derived from markers:\n\n- **Request changes** — at least one 🟣 or 🔴 finding.\n- **Approve after nits** — no 🟣 or 🔴, but one or more 🟠 or 🟡 findings worth\n  addressing.\n- **Approve** — no 🟣, 🔴, 🟠, 🟡 findings (only ℹ️ notes, or nothing).\n\nFollow verdict with one clause naming deciding factor.\n\n### Finding format\n\nUse this structure. Omit any category block whose count is zero:\n\n````md\n# PR review\n\nOne to three sentences summarizing the concrete risk, most important theme, and\nany meaningful verification limit. State up front whether anything is merge-blocking.\nIf there are no actionable findings, say that clearly.\n\n## Bugs ({count})\n\n### 1. {severity marker} {Sentence-case title}\n\n**Location:** `path/to/file.ext:123`\n\n```tsx\n// Small relevant code excerpt from the reviewed file.\n```\n\n{Description of what is wrong and why it matters.}\n\n**Failure scenario:** {Simple, obvious user-facing or example issue someone would\nsee.}\n\n**Fix:** {Specific recommended change.}\n\n## Tests ({count})\n\n## Simplifications ({count})\n\n## Docs ({count})\n\n## Verdict\n\n**{Request changes | Approve after nits | Approve}** - {one clause on the deciding factor}.\n\n---\n\n🤖 Review generated with {Claude Code | Codex}\n````\n\nSame per-finding shape for Tests, Simplifications, Docs. For Tests,\nmake failure scenario the missing case or weak assertion. For Simplifications,\nmake it concrete duplicated, heavier, or harder-to-maintain code path. For Docs,\nmake it stale or missing public/developer-facing information.\n\n### Finding quality\n\nDo not cap findings by count. Report every verified, actionable finding\nmaintainer would reasonably fix before merging. Do not pad review with weak,\nstylistic, speculative, low-importance notes. If many findings survive, group\nrelated issues under one finding when they share same root cause.\n\n### No findings\n\nIf nothing survives verification, omit all category headings and counts. Return\n`# PR review`, `No findings.`, a brief note of residual test gaps or risk,\n`## Verdict` with **Approve**, and the `🤖 Review generated with ...` footer.\n\n### Final output preflight\n\nTreat the output format as a hard contract. Before sending:\n\n- Use `# PR review`; start the summary with concrete risk, not target/base filler.\n- Use exact `## {Category} ({count})` headings for non-empty categories only.\n- Print each finding exactly once and verify every category count.\n- Use a separate `## Verdict` heading and the required closing footer.\n\nIf any check fails, rewrite the output before sending.\n\nAlways close review with `---` horizontal rule, blank line, then\n`🤖 Review generated with {Claude Code | Codex}`. Use **Claude Code** when this\nskill executed by Claude Code harness, **Codex** when executed by Codex harness.\n\n## Posting to GitHub (--comment)\n\nPost to GitHub only when target is GitHub PR and arguments include\ncomment mode:\n\n- No `--comment` — do not post to GitHub; if `--fix` also absent, stop at\n  Markdown review report.\n- `--comment` — post Markdown review as one top-level PR comment via\n  `gh pr comment`.\n- `--comment inline` — post inline comments for findings mapping to PR diff\n  lines, include all non-diff findings in top-level fallback comment.\n\nFor `--comment inline`, include same severity marker in each inline comment\nbody. Use latest PR head `commit_id`, `path`, `line`, `side`, post via\n`gh api` (`repos/{owner}/{repo}/pulls/{pr}/comments`), one call per finding. Include\nsuggestion block only when it fully fixes issue. (If GitHub inline-comment\nMCP tool available in session, use instead.)\n\nInline comments can only attach to lines present in PR diff. Put findings\noutside PR diff (unchanged lines in touched functions) in top-level\nfallback comment via `gh pr comment`; do not drop them or stop posting rest of\nreview because one inline comment not commentable. If target not\nPR, print findings to terminal and note `--comment` was ignored.\n\n## Applying fixes (--fix)\n\nIf `--fix` flag passed in arguments, after producing findings\nlist, apply findings to working tree instead of stopping at report: fix\neach one directly — correctness bugs and reuse/simplification/efficiency cleanups\nalike. Skip any finding whose fix would change intended behavior, require changes\nwell outside reviewed diff, or you judge false positive — note\nskip rather than arguing with it. Finish with brief summary of what fixed and\nwhat skipped.\n\nIf neither `--comment` nor `--fix` passed, stop at Markdown review report.\n\n<!-- File: .claude/skills/mui-x-review/SKILL.md (Tokens: ~294 | Category: anthropic-skill) -->\n---\nname: mui-x-review\ndescription: 'Review the current diff for regressions, correctness bugs, tests, simplifications, and docs issues, scaling depth to a low/medium/high/xhigh/max effort level. Use ONLY when explicitly requested by name: the user runs /mui-x-review, writes $mui-x-review, or asks for \"the MUI X review skill\". Do NOT use for general review requests such as \"review my changes\", \"review this diff/branch/PR\", or after finishing an implementation — handle those without this skill unless the user names it. Pass --comment to post a top-level PR comment, --comment inline for inline PR comments, or --fix to apply findings.'\n---\n\n# MUI X Review\n\nThis is the Claude Code entrypoint for the shared repo skill.\n\nOnly run when the user explicitly asks for this skill by name\n(`/mui-x-review`, `$mui-x-review`, \"the MUI X review skill\", or a CI job\nconfigured to use it). Do not trigger on a generic \"review my changes\" request\nor after finishing an implementation.\n\nBefore reviewing, read `.agents/skills/mui-x-review/SKILL.md` completely and\nfollow that canonical workflow. Pass through any user arguments such as `low`,\n`medium`, `high`, `xhigh`, `max`, `--comment`, `--comment inline`, `--fix`, or a\nreview target.\n\n<!-- File: docs/data/charts/plugins/plugins.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Plugins Skill\n\nPath: `docs/data/charts/plugins/plugins.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/plugins/plugins.md)\n\n<!-- File: docs/data/charts/references/references.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `docs/data/charts/references/references.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/docs/data/charts/references/references.md)\n\n<!-- File: packages/eslint-plugin-mui-x/package.json (Tokens: ~138 | Category: anthropic-skill) -->\n{\n  \"name\": \"eslint-plugin-mui-x\",\n  \"private\": true,\n  \"description\": \"Custom eslint rules for MUI X.\",\n  \"type\": \"module\",\n  \"main\": \"src/index.mjs\",\n  \"dependencies\": {\n    \"@typescript-eslint/utils\": \"^8.71.1\"\n  },\n  \"devDependencies\": {\n    \"@types/eslint\": \"9.6.1\",\n    \"@types/react\": \"catalog:\",\n    \"@typescript-eslint/parser\": \"catalog:\",\n    \"@typescript-eslint/rule-tester\": \"8.71.1\"\n  },\n  \"scripts\": {\n    \"test\": \"vitest\"\n  }\n}\n\n<!-- File: packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Fixtures Skill\n\nPath: `packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/eslint-plugin-mui-x/src/fixtures/tsconfig.json)\n\n<!-- File: packages/eslint-plugin-mui-x/tsconfig.json (Tokens: ~96 | Category: anthropic-skill) -->\n{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"preserve\",\n    \"target\": \"es5\",\n    \"module\": \"preserve\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"lib\": [\"es2015\", \"es2017\", \"esnext\"],\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n\n<!-- File: packages/mcp/package.json (Tokens: ~406 | Category: anthropic-skill) -->\n{\n  \"name\": \"@mui/mcp\",\n  \"version\": \"0.1.8\",\n  \"author\": \"MUI Team\",\n  \"description\": \"MUI MCP Server\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/mui/mui-x/issues\"\n  },\n  \"homepage\": \"https://github.com/mui/mui-x/tree/master/packages/mcp#readme\",\n  \"bin\": \"./src/stdio.ts\",\n  \"sideEffects\": false,\n  \"publishConfig\": {\n    \"access\": \"public\",\n    \"directory\": \"build\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mui/mui-x.git\",\n    \"directory\": \"packages/mcp\"\n  },\n  \"dependencies\": {\n    \"@babel/runtime\": \"catalog:\",\n    \"@modelcontextprotocol/sdk\": \"^1.32.1\",\n    \"@mui/x-agent-tools\": \"workspace:^\",\n    \"zod\": \"^4.6.5\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"22.20.5\",\n    \"rimraf\": \"catalog:\",\n    \"vitest\": \"catalog:\"\n  },\n  \"scripts\": {\n    \"typescript\": \"tsc -p tsconfig.json\",\n    \"build\": \"code-infra build --tsgo --bundle cjs --buildTypes false\",\n    \"build:local\": \"pnpm --filter \\\"@mui/mcp...\\\" build\",\n    \"prebuild\": \"rimraf build tsconfig.build.tsbuildinfo\",\n    \"mcp-inspector\": \"pnpm build:local && npx -y @modelcontextprotocol/inspector node build/stdio.js\",\n    \"test\": \"vitest run --config vitest.config.node.mts\"\n  },\n  \"engines\": {\n    \"node\": \">=22.12\"\n  }\n}\n\n<!-- File: packages/mcp/tsconfig.json (Tokens: ~87 | Category: anthropic-skill) -->\n{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    // Node-targeted server: uses process, node:fs/os/path, etc. @types/node is a devDependency so\n    // the isolated CI environment (which only sees declared deps) can resolve these.\n    \"types\": [\"node\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n\n<!-- File: packages/x-agent-tools/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/package.json)\n\n<!-- File: packages/x-agent-tools/tsconfig.build.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.build.json)\n\n<!-- File: packages/x-agent-tools/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-agent-tools Skill\n\nPath: `packages/x-agent-tools/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-agent-tools/tsconfig.json)\n\n<!-- File: packages/x-charts-premium/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/package.json)\n\n<!-- File: packages/x-charts-premium/tsconfig.build.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.build.json)\n\n<!-- File: packages/x-charts-premium/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts-premium Skill\n\nPath: `packages/x-charts-premium/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-premium/tsconfig.json)\n\n<!-- File: packages/x-charts-pro/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/package.json)\n\n<!-- File: packages/x-charts-pro/tsconfig.build.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.build.json)\n\n<!-- File: packages/x-charts-pro/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts-pro Skill\n\nPath: `packages/x-charts-pro/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-pro/tsconfig.json)\n\n<!-- File: packages/x-charts-vendor/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts-vendor Skill\n\nPath: `packages/x-charts-vendor/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/package.json)\n\n<!-- File: packages/x-charts-vendor/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts-vendor Skill\n\nPath: `packages/x-charts-vendor/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts-vendor/tsconfig.json)\n\n<!-- File: packages/x-charts/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts Skill\n\nPath: `packages/x-charts/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/package.json)\n\n<!-- File: packages/x-charts/tsconfig.build.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts Skill\n\nPath: `packages/x-charts/tsconfig.build.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.build.json)\n\n<!-- File: packages/x-charts/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# X-charts Skill\n\nPath: `packages/x-charts/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/mui/mui-x/HEAD/packages/x-charts/tsconfig.json)\n\n<!-- ... +90 more modular skills available via /api/skills/mui/mui-x?path={path} -->\n</yakaai_skills>"}