Step 1: Call the mf-context Skill (pass $ARGUMENTS) to collect MFContext.
Step 2: Serialize MFContext to JSON and pass it to the check script via the --context argument:
node scripts/performance-check.js --context '<MFContext-JSON>'
Provide recommendations for each item in the output results and context.bundler.name:
PERF · info — dev.disableAssetsAnalyze (applies to all projects)
- Disabling bundle size analysis during local development significantly improves HMR speed
- Add to the Rsbuild config:
dev: { disableAssetsAnalyze: true }
PERF · info — Rspack splitChunks optimization (shown only when bundler.name is rspack or rsbuild)
- Setting
splitChunks.chunksto"async"reduces initial bundle size and speeds up first-screen loading - Add to the build config:
output: { splitChunks: { chunks: 'async' } }
PERF · info — TypeScript DTS optimization (shown only when typescript dependency is detected)
- If type generation (DTS) is the main bottleneck, options include:
- Temporarily disable DTS: set
dts: falsein the@module-federation/enhancedconfig - Switch to
ts-gofor significantly faster type generation
- Temporarily disable DTS: set
Step 3: After presenting the DTS recommendation, ask the user:
"Would you like me to automatically try switching to
ts-goand verify compatibility?"
If the user confirms, execute the following steps in order:
-
Backup — copy the current generated type output directory (e.g.
@mf-types/) to a timestamped backup path such as@mf-types.bak.<timestamp>/ -
Configure — set
dts.generateTypes.compilerInstance = "tsgo"in the Module Federation config -
Install — install the required package:
npm install @typescript/native-preview --save-dev(use the project's actual package manager from MFContext)
-
Regenerate — run:
npx mf dts -
Verify — diff the newly generated type output against the backup:
- If the output is identical: inform the user that
ts-gois compatible and the switch is safe; offer to remove the backup - If the output differs: revert the config change, restore the backup, and explain clearly what differs (e.g. missing declarations, changed signatures) so the user can decide whether the difference is acceptable
- If the output is identical: inform the user that
Webpack projects do not show Rspack-specific entries to avoid irrelevant suggestions.