A plugin for ESLint that allows you to use project-specific rules, similar to the deprecated --rulesdir command line option (more).
npm install eslint-plugin-local-rules'use strict';
module.exports = {
  'disallow-identifiers': {
    meta: {
      docs: {
        description: 'disallow identifiers',
        category: 'Possible Errors',
      },
      schema: [],
    },
    create: function (context) {
      return {
        Identifier: function (node) {
          context.report({
            node: node,
            message: 'Identifiers not allowed for Super Important reasons.',
          });
        },
      };
    },
  },
};{
  "plugins": ["local-rules"],
  "extends": [
    "plugin:local-rules/all"
  ]
}{
  "plugins": ["local-rules"],
  "extends": [
    "plugin:local-rules/all-warn"
  ]
}{
  "plugins": ["local-rules"],
  "rules": {
    "local-rules/disallow-identifiers": "error"
  }
}npm install ts-node @types/eslint
You'll also need an eslint config like the .eslintrc above (more info).
require("ts-node").register({
  transpileOnly: true,
  compilerOptions: {
    module: "commonjs",
  },
});
module.exports = require("./rules").default;import type { Rule } from "eslint";
export default {
  "disallow-identifiers": {
    meta: {
      docs: {
        description: 'disallow identifiers',
        category: 'Possible Errors',
      },
      schema: [],
    },
    create: function (context) {
      return {
        Identifier: function (node) {
          context.report({
            node: node,
            message: 'Identifiers not allowed for Super Important reasons.',
          });
        },
      };
    },
  },
} satisfies Record<string, Rule.RuleModule>;This plugin supports npm/yarn/pnpm workspaces, although note that if the eslint-local-rules.js file is in the workspace subdirectory, running from the project root is unsupported.
For example, if there's an eslint-local-rules.js and index.js in ./src/app:
Wrong: npx eslint src/app/index.js
Right: (cd src/app; npx eslint index.js)
Also note that if there is an eslint-local-rules.js file in both the workspace subdirectory and project root, the workspace one takes precedence (assuming you're running eslint from the workspace directory, as above).
- eslint-plugin-local - Allows specifying additonal plugin config such as 
processors - eslint-plugin-rulesdir - Allows for a custom rules directory name
 
MIT