Check Modules Reference

April 16, 2026 · View on GitHub

Last updated: April 16, 2026

This page consolidates the material that previously lived in early planning documents. It should stay up to date as we evolve the check-modules pipeline and the curated fixture set.

Check group configuration

The Stage 5 runner reads scripts/check-modules/check-groups.config.json to decide which groups execute. All toggles ship enabled; set individual entries to false to skip that category. Personal overrides belong in check-groups.config.local.json (same directory) so local tweaks stay out of version control.

ToggleDefaultControls
groups.fasttrueRegistry-backed text and package.json/package-lock.json pattern scanning.
groups.deeptrueRepository heuristics (README/license/dependabot checks) plus dependency helpers. Disabling this also suppresses the optional integrations below.
integrations.npmCheckUpdatestrueRuns npm-check-updates when the helper budget allows.
integrations.npmDeprecatedChecktrueExecutes npm-deprecated-check to surface deprecated dependencies.
integrations.eslinttrueInvokes the curated ESLint configuration on each module clone.

The runner logs whenever overrides are applied so CI output records which groups were disabled.

Rule inventory

These are the rule IDs currently implemented by the TypeScript checker. Keep this table synchronized with the rule registry schema when adding or modifying checks.

Schema reference: see check-modules-rule-registry.schema.json for the JSON layout the stage expects.

Text scanning rules

Rule IDPatternCategoryNotes
text-deprecated-new-buffernew Buffer(DeprecatedReplace with Buffer.from.
text-deprecated-fs-F_OKfs.F_OKDeprecatedUse fs.constants.F_OK.
text-deprecated-fs-R_OKfs.R_OKDeprecatedUse fs.constants.R_OK.
text-deprecated-fs-W_OKfs.W_OKDeprecatedUse fs.constants.W_OK.
text-deprecated-fs-X_OKfs.X_OKDeprecatedUse fs.constants.X_OK.
text-typo-magic-mirrorMagic MirrorTypoShould be MagicMirror².
text-typo-magicmirror2MagicMirror2TypoShould be MagicMirror².
text-typo-magicmirror-brackets[MagicMirror]TypoShould be [MagicMirror²].
text-typo-html-sub2<sub>2</sub>TypoReplace with ².
text-deprecated-requestrequire("request") (and variants)DeprecatedReplace with built-in fetch.
text-deprecated-request-promiserequire("request-promise") (and variants)DeprecatedReplace with fetch.
text-deprecated-native-requestrequire("native-request")DeprecatedReplace with fetch.
text-recommend-http-modulerequire("http")/require('http')RecommendationUse node:http.
text-recommend-https-modulerequire("https")/require('https')RecommendationUse node:https.
text-recommend-node-fetch'node-fetch'/"node-fetch"RecommendationUse built-in fetch.
text-recommend-require-fetchrequire("fetch")/require('fetch')RecommendationUse built-in fetch.
text-recommend-axiosaxiosRecommendationSuggest fetch.
text-deprecated-omxplayeromxplayerDeprecatedSuggest mplayer or vlc.
text-recommend-xmlhttprequestXMLHttpRequestRecommendationSuggest fetch.
text-recommend-actions-checkoutuses: actions/checkout@v2/@v3/@v4RecommendationUpgrade to v5.
text-recommend-actions-setup-nodeuses: actions/setup-node@v3RecommendationUpgrade to v4.
text-deprecated-node-versionnode-version: 14/16/18 (variants)DeprecatedUpgrade to current LTS.
text-recommend-npm-runnpm runRecommendationPrefer node --run.
text-recommend-jshintjshintRecommendationSuggest ESLint.
text-deprecated-getYeargetYear()DeprecatedUse getFullYear().
text-outdated-michmichMichMich/MagicMirrorOutdatedUpdate org name.
text-outdated-husky/_/husky.shOutdatedHusky v9 change.
text-deprecated-openweathermapapi.openweathermap.org/data/2.5DeprecatedUpgrade to API 3.0.
text-recommend-cdn-cdnjshttps://cdnjs.cloudflare.comRecommendationPrefer local npm package.
text-recommend-cdn-jsdelivrhttps://cdn.jsdelivr.netRecommendationPrefer local npm package.
text-recommend-eslint-doteslint . / eslint --fix .RecommendationDrop trailing dot.
text-recommend-git-checkoutgit checkoutRecommendationSwitch to git switch.

package.json rules

Rule IDPatternCategoryNotes
pkg-deprecated-electron-rebuild"electron-rebuild"DeprecatedUse @electron/rebuild.
pkg-deprecated-eslint-config-airbnbeslint-config-airbnbDeprecatedSeek modern configuration.
pkg-recommend-eslint-plugin-json"eslint-plugin-json"/eslint-plugin-jsoncRecommendationSuggest @eslint/json.
pkg-deprecated-grunt"grunt"DeprecatedTool largely unmaintained.
pkg-outdated-husky-installhusky installOutdatedHusky v9 no longer needs it.
pkg-recommend-needle"needle"RecommendationSuggest fetch.
pkg-missing-dependencyn/a (detected via usage scan)RecommendationFlags modules that import third-party packages without declaring them in package.json (built-ins and the default allowlist express, node_helper, logger are ignored).
pkg-deprecated-rollup-bannerrollup-plugin-bannerDeprecatedReplace with built-in banner.
pkg-deprecated-stylelint-config-prettierstylelint-config-prettierDeprecatedRemove in newer Stylelint setups.

package-lock.json rules

Rule IDPatternCategoryNotes
lock-deprecated-v1"lockfileVersion": 1DeprecatedEncourage upgrade to v3.
lock-deprecated-v2"lockfileVersion": 2DeprecatedEncourage upgrade to v3.

Legacy stage rules

Rule IDCategoryStageNotes
legacy-main-js-mismatchRecommendationcheck-modules-jsRepository name / main JS filename mismatch guard.

File system heuristics & helpers

  • detect-node_modules-dir: flags first-level node_modules directories under module root.
  • detect-jquery-local-copy: warns when a local jquery.js copy is bundled.
  • detect-missing-update-section: ensures README files include ## Update.
  • detect-update-command-block: ensures the README update section contains a copyable fenced shell command block.
  • detect-missing-install-section: ensures README files include ## Install.
  • detect-install-command-block: ensures the README install section contains a copyable fenced shell command block.
  • dependency-deprecation-helper: runs npm-deprecated-check and aggregates results.
  • eslint-helper: executes ESLint with the curated configuration to produce findings.

Fixture coverage

The curated fixture repositories live in fixtures/modules/. Keep this table in sync when you add or update fixtures so we maintain coverage for every rule.

Fixture catalog

Fixture slugTypePrimary coverageRule IDsStatusNotes
baseline-mmm-01zmReal (snapshot)Smoke test, zero findingsNoneReadySnapshot stored under fixtures/modules/baseline-mmm-01zm (1bfc72e).
baseline-mmm-airqualityReal (snapshot)Regression guard (weather module)NoneReadySnapshot stored under fixtures/modules/baseline-mmm-airquality (2641834).
baseline-mmm-admin-interfaceReal (snapshot)README heuristicsdetect-missing-install-section, detect-missing-update-section, duplicate keywordsReadySnapshot stored under fixtures/modules/baseline-mmm-admin-interface (df92c75).
baseline-mmm-actualReal (snapshot)License mismatches + npm metadataLicense mismatch, invalid SPDX licenseReadySnapshot stored under fixtures/modules/baseline-mmm-actual (2a561a9).
synthetic-deprecated-node-apiSyntheticLegacy Node API usagetext-deprecated-new-buffer, text-deprecated-fs-*, text-deprecated-getYear, text-deprecated-node-version, text-recommend-actions-checkout, text-recommend-actions-setup-nodeReadyLocated under fixtures/modules/synthetic-deprecated-node-api.
synthetic-deprecated-http-clientsSyntheticRequest/axios deprecationstext-deprecated-request*, text-recommend-axios, text-recommend-node-fetch, text-recommend-require-fetch, text-recommend-http-module, text-recommend-https-moduleReadyLocated under fixtures/modules/synthetic-deprecated-http-clients.
synthetic-network-apisSyntheticCDN/OpenWeather recommendationstext-recommend-cdn-*, text-deprecated-openweathermapReadyLocated under fixtures/modules/synthetic-network-apis.
synthetic-typo-brandingSyntheticMagicMirror typostext-typo-*, text-outdated-michmichReadyLocated under fixtures/modules/synthetic-typo-branding.
synthetic-github-actionsSyntheticActions upgrade recommendationstext-recommend-actions-checkout, text-recommend-actions-setup-nodeReadyLocated under fixtures/modules/synthetic-github-actions.
synthetic-npm-metadataSyntheticDeprecated npm packagespkg-deprecated-electron-rebuild, pkg-deprecated-eslint-config-airbnb, pkg-recommend-eslint-plugin-json, pkg-deprecated-grunt, pkg-outdated-husky-install, pkg-recommend-needle, pkg-deprecated-rollup-banner, pkg-deprecated-stylelint-config-prettierReadyLocated under fixtures/modules/synthetic-npm-metadata.
synthetic-lockfileSyntheticLegacy lockfile versionslock-deprecated-v1, lock-deprecated-v2ReadyLocated under fixtures/modules/synthetic-lockfile.
synthetic-readme-heuristicsSyntheticREADME structure, command blocks, node_modules detectiondetect-missing-install-section, detect-install-command-block, detect-missing-update-section, detect-update-command-block, detect-node_modules-dirReadyLocated under fixtures/modules/synthetic-readme-heuristics.
synthetic-jquery-localSyntheticLocal jQuery copydetect-jquery-local-copyReadyLocated under fixtures/modules/synthetic-jquery-local.
synthetic-eslint-helperSyntheticESLint integrationeslint-helperReadyLocated under fixtures/modules/synthetic-eslint-helper.
synthetic-deprecation-helperSyntheticnpm deprecated packages via helperdependency-deprecation-helperReadyLocated under fixtures/modules/synthetic-deprecation-helper.

Coverage matrix

CategoryFixtures
Text scanning – Deprecatedsynthetic-deprecated-node-api, synthetic-deprecated-http-clients, synthetic-network-apis
Text scanning – Recommendationsynthetic-deprecated-http-clients, synthetic-network-apis, synthetic-github-actions
Text scanning – Typo/Outdatedsynthetic-typo-branding, synthetic-deprecated-node-api
package.json checkssynthetic-npm-metadata, synthetic-deprecation-helper
package-lock checkssynthetic-lockfile
File-system heuristicsbaseline-mmm-admin-interface, synthetic-readme-heuristics, synthetic-jquery-local
External helperssynthetic-eslint-helper, synthetic-deprecation-helper, baseline-mmm-actual
Baseline controlsbaseline-mmm-01zm, baseline-mmm-airquality

Maintenance checklist

  • Keep each fixture’s FIXTURE.md updated with triggered rule IDs and upstream commit references.
  • When adding a fixture, update the table above and regenerate fixtures/data/ via npm run fixtures:generate.
  • Trim binaries and large assets before committing fixture snapshots.

Housekeeping

  • Update this page whenever you add or modify check-modules rules or fixtures.