| name | es-x-node-support-update |
| description | Update eslint-plugin-es-x Node.js support in its own dedicated PR. Use during major release preparation or support policy changes to check the current Node.js release schedule, keep the intended non-EOL Node.js lines with explicit major-line ranges, and update package engines, public documentation requirements, Node.js CI matrix entries, lockfile root metadata, release notes, and verification without changing the ESLint peer dependency. |
ES-X Node.js Support Update
Workflow
Use this when dropping old Node.js support. Keep this work separate from ESLint support drops and annual ECMAScript snapshot config updates unless the user explicitly asks for a combined PR.
- Inspect current Node.js support declarations:
package.json engines.node
docs/index.md Requirements Node.js line
.github/workflows/ci.yml Node.js matrix entries
- top-level
package-lock.json engines.node
- Check current Node.js EOL status and releases before choosing the new support range:
- Prefer the official schedule data at
https://raw.githubusercontent.com/nodejs/Release/main/schedule.json.
- Use the current date to exclude Node.js majors whose
end date has passed.
- Use official release data, such as
https://nodejs.org/dist/index.json, to find the latest release for each retained non-EOL major.
- Include Current and LTS Node.js majors when they are not EOL; do not restrict the choice to LTS unless the user explicitly asks.
- Choose the non-EOL Node.js major lines that should remain supported after the drop, then build
package.json engines.node from those lines:
- For each retained line except the newest retained major, use a caret range from the first patch release of that line's latest required major/minor line, such as
^22.18.0.
- For the newest retained major, use an open lower-bound range from the first patch release of that line's latest required major/minor line, such as
>=24.7.0.
- Join multiple ranges with
||. For example, if Node.js 22 and 24 remain supported, use a range shaped like ^22.18.0 || >=24.7.0, not >=22.18.0.
- Do not add any other upper bound unless the project already has one or the user explicitly asks for one.
- Update CI:
- Remove jobs for Node.js majors and minor lines outside the new supported range, even if those older majors are not EOL.
- Keep one minimum-supported Node.js job for each retained major line, such as
22.18.0 and 24.7.0 when the new range is ^22.18.0 || >=24.7.0.
- Keep platform coverage on a normal supported Node.js version.
- Do not change ESLint matrix versions except where a Node.js job must be moved to a supported Node.js version.
- Update user-facing support documentation:
- Keep
docs/index.md Requirements in sync with package.json engines.node.
- Preserve the existing prose format:
- Node.js `X.Y.Z`, `A.B.C` or newer..
- For multiple supported Node.js ranges, list the lower-bound version from each range rather than pasting the raw semver expression.
- Refresh lockfile root metadata with
npm install --package-lock-only if package-lock.json does not update automatically.
- Add release notes through
.agents/es-x-changeset/SKILL.md.
- Verify through
.agents/es-x-release-verification/SKILL.md.
Current Major-Prep Pattern
For any major-prep Node.js support PR:
- Check the official Node.js release schedule and release index.
- Build the engine range from the retained non-EOL Node.js lines. Use caret ranges for retained older majors and an open lower-bound range for the newest retained major, such as
^22.18.0 || >=24.7.0.
- Keep
docs/index.md Requirements synchronized with the same minimum versions while preserving its prose format.
- Remove CI coverage for Node.js versions outside that range.
- Keep the ESLint support range unchanged in this PR.