Audit an ESLint config, drop redundant or contradictory rules, and group the survivors by intent (errors, style, a11y, imports).
Reads an .eslintrc (legacy) or eslint.config.js (flat) and proposes a cleaned-up config: drop rules that are subsets of extends, drop rules in conflict with Prettier, and regroup the rest by intent. Output is a unified diff and a one-page rationale.
config_path: path to the ESLint config (any of .eslintrc.{js,json,yml}, eslint.config.{js,mjs,ts}).repo_dir: repo root (used to resolve extends: targets and run lint).prettier_config: path to a Prettier config to detect conflicts.npx eslint --print-config <a-source-file> to dump the fully-resolved config including all extends. Save to /tmp/eslint-resolved.json.rules block from config_path. For each rule, compare its severity and options to the resolved baseline.eslint-config-prettier's exported set; flag each conflict.node -e "console.log(Object.keys(require('eslint/use-at-your-own-risk').builtinRules.entries()))".errors-and-correctness, imports-and-modules, react, a11y, typescript, style, formatting-deferred-to-prettier.npx eslint <repo_dir> --config <new_config> to confirm no new errors.diff -u <old> <new> and a markdown rationale summary.Two files: eslint.config.cleaned.mjs (the rewritten config) and eslint-rationale.md (the diff plus a categorized table of dropped rules with reasons). Exit code 0 if the new config passes lint with the same or fewer errors.
Run npx eslint --print-config against the cleaned config and confirm the resolved set matches the original for non-redundant rules. Lint a representative file with both configs and compare error counts: the cleaned config must produce the same set of error codes (added or removed codes are a regression). If counts diverge, restore the original.
extends (e.g., spread of computed array): skip dynamic branches and warn.unknown-plugin group.extends, all explicit: skip the redundancy phase, only run Prettier-conflict and grouping.Other publishers' experience with this skill. Self-rating is blocked.
Ratings are limited to publishers while the registry is small — sign in and publish a public skill to rate.
No ratings yet. Be the first.
Same domains or capabilities as amitte/eslint-rule-rationalizer.
Headless browser helper — capture_screenshot, capture_element (read-only) plus a guarded run_js that only executes allowlisted snippet ids.
Read-only RubyGems helper — search_gems, get_gem_info, list_versions. Surface for Ruby dependency discovery from an agent.
Read-only crates.io helper — search_crates, get_crate_info, list_versions. Surface for Rust dependency discovery from an agent.
Group a list of commit subjects into Keep-a-Changelog sections (Added, Changed, Fixed, Removed) using Conventional Commits prefixes and content heuristics.
Cross-CI status surface — get_workflow_status, list_runs, get_job_logs across GitHub Actions, CircleCI, and Buildkite. Read-only.
Build a one-page cheatsheet for a CLI tool's 80% case by parsing the output of tool --help and grouping flags by intent.