{"id":19935,"library":"eslint-plugin-skuba","title":"eslint-plugin-skuba","description":"ESLint plugin for skuba, the SEEK development toolkit. Version 2.0.1, released as a stable major after a major rewrite to support ESLint 9 flat config and TypeScript ESLint v8. It is part of the skuba ecosystem and is released alongside skuba releases, with a cadence of minor/patch releases as needed. Key differentiator: enforces SEEK-specific lint rules and style conventions, integrates closely with skuba's build and template system, and now ships ESM with type declarations. Intended for use with skuba-managed projects.","status":"active","version":"2.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/seek-oss/skuba","tags":["javascript","typescript"],"install":[{"cmd":"npm install eslint-plugin-skuba","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-skuba","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-skuba","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: ESLint 9.22.0+ required for flat config support.","package":"eslint","optional":false},{"reason":"Peer dependency: TypeScript ESLint 8.39.0+ required for TS rule support.","package":"typescript-eslint","optional":false}],"imports":[{"note":"ESM-only since v2. CommonJS require will fail.","wrong":"const plugin = require('eslint-plugin-skuba')","symbol":"default","correct":"import plugin from 'eslint-plugin-skuba'"},{"note":"Access named export for flat config presets.","wrong":"","symbol":"configs","correct":"import { configs } from 'eslint-plugin-skuba'"},{"note":"ESM-only; rules key contains all rule implementations.","wrong":"const { rules } = require('eslint-plugin-skuba')","symbol":"rules","correct":"import { rules } from 'eslint-plugin-skuba'"}],"quickstart":{"code":"// eslint.config.js\nimport plugin from 'eslint-plugin-skuba';\nimport tseslint from 'typescript-eslint';\n\nexport default tseslint.config(\n  ...tseslint.configs.recommended,\n  plugin.configs.recommended,\n  {\n    rules: {\n      'skuba/no-ts-expect-error': 'error',\n    },\n  },\n);","lang":"javascript","description":"Configure ESLint flat config to use eslint-plugin-skuba with TypeScript ESLint recommended rules and a custom plugin rule."},"warnings":[{"fix":"Migrate to ESM imports and flat config. See migration guide: https://seek-oss.github.io/skuba/docs/migration/eslint-plugin-skuba.html","message":"Version 2.x drops CommonJS support and requires ESLint 9+ flat config.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Update typescript-eslint to ^8.39.0 or newer.","message":"Peer dependency typescript-eslint >=8.39.0 required; older versions incompatible.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Upgrade Node.js to version 22.14.0 or higher.","message":"Node.js >=22.14.0 required starting from v2.0.1.","severity":"breaking","affected_versions":">=2.0.1"},{"fix":"Replace 'skuba/ts-expect-error' with 'skuba/no-ts-expect-error'.","message":"Rule 'ts-expect-error' is deprecated in favor of 'no-ts-expect-error'.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Use eslint.config.js with flat config structure.","message":"Flat config only: .eslintrc files are not supported in v2.","severity":"gotcha","affected_versions":">=2.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Change to import statement or rename eslint.config.js to eslint.config.mjs.","cause":"Using CommonJS require() on an ESM-only plugin.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module /path/to/node_modules/eslint-plugin-skuba/dist/index.js from /path/to/eslint.config.js not supported."},{"fix":"Run npm install typescript-eslint@latest.","cause":"Missing peer dependency typescript-eslint.","error":"ESLint: Failed to load plugin 'skuba': Cannot find module 'typescript-eslint'"},{"fix":"Check available rules in plugin.configs.recommended or rules object.","cause":"Using a rule name that does not exist in the plugin (typo or removed).","error":"ESLint: Error while loading rule 'skuba/no-ts-expect-error': Rule is not found"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}