{"id":25497,"library":"eslint-plugin-actions","title":"eslint-plugin-actions","description":"An ESLint plugin that lints JavaScript code embedded in GitHub Actions workflow files (`.yml`/`.yaml`). Version 2.0.0 supports ESLint 8 and Node 12+; Node 10, 13, 15 and ESLint 6/7 are dropped. The plugin provides a processor that extracts JS from literal blocks (e.g., `script:` in `actions/github-script`) and lint them with standard ESLint rules. Recommended config `plugin:actions/recommended` enables the processor automatically. Unlike generic YAML linting tools, it gives full ESLint support for inline JS with virtual filenames for granular rule overrides. Experimental auto-fixing is available.","status":"active","version":"2.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/ylemkimon/eslint-plugin-actions","tags":["javascript","eslint","eslintplugin","eslint-plugin","github-actions","github-script"],"install":[{"cmd":"npm install eslint-plugin-actions","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-actions","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-actions","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required, version ^8.0.0","package":"eslint","optional":false}],"imports":[{"note":"Use the string 'actions' in ESLint config's plugins array; no direct import needed.","wrong":"const plugin = require('eslint-plugin-actions')","symbol":"plugin","correct":"module.exports = { plugins: ['actions'] }"},{"note":"ESLint expects the full 'plugin:' prefix for plugin configs.","wrong":"extends: ['actions/recommended']","symbol":"configs.recommended","correct":"extends: ['plugin:actions/recommended']"},{"note":"Processor name is 'actions/actions' (plugin name + 'actions').","wrong":"processor: 'eslint-plugin-actions/actions'","symbol":"processor","correct":"processor: 'actions/actions'"}],"quickstart":{"code":"// .eslintrc.json\n{\n  \"extends\": [\"plugin:actions/recommended\"],\n  \"ignorePatterns\": [\"!/.github\"]\n}","lang":"json","description":"Enable the plugin via the recommended config and ensure .github directory is not ignored."},"warnings":[{"fix":"Upgrade to Node >=12.22.0 and ESLint >=8.0.0.","message":"Node 10, 13, 15 and ESLint 6, 7 are no longer supported.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use ESLint 8+.","message":"ESLint 6 and 7 support removed in v2.0.0.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Avoid --fix in production; manually check diffs.","message":"Autofixing is experimental and may change whitespace. Always review results.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use `|` for script content in workflows.","message":"Only literal blocks (`|`) are supported; folded blocks (`>`) or other YAML multi-line strings are not linted.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Set indent rule option: ['error', 2, { outerIIFEBody: 0 }].","message":"Rules like `indent` require `outerIIFEBody: 0` because scripts are wrapped in an IIFE.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run `npm install eslint-plugin-actions --save-dev`.","cause":"Plugin not installed in node_modules.","error":"Oops! Something went wrong! :( ESLint: 8.57.0\nESLint couldn't find the plugin \"eslint-plugin-actions\".\n\nThe plugin is not installed."},{"fix":"Add outerIIFEBody: 0 to the indent rule options.","cause":"Missing outerIIFEBody option in indent rule configuration.","error":"Configuration for rule \"indent\" is invalid: Value \"outerIIFEBody\" is not defined."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}