Leadership1 publisherNot yet confirmed elsewhere2 min readPublished
eslint-plugin-unicorn 77 moves 11 CSS rules into a package that requires ESLint 10.4 and ESM
eslint-plugin-unicorn 77 moves 11 CSS rules to eslint-cssicorn and removes its deprecated flat configs. Keeping those checks after the upgrade means adopting a version 0.1 package with its own ESLint and ESM requirements that does not accept pull requests.
The Board Room · Leadership desk
What happened
- Configs that used the removed flat/recommended or flat/all presets are told to switch to the recommended and all presets.
- Some moved rules lose 'css' from their names as well, so unicorn/no-duplicate-css-selectors becomes cssicorn/no-duplicate-selectors.
- Version 77 also adds new rules, among them no-javascript-url, no-loss-of-precision and indent.
- eslint-disable comments now suppress a rule's reports, where before they made the rule skip the code and the directive could look unused.
Compiled by The Board RoomSomething wrong?How this is made
Why it matters
- decision Teams that relied on the CSS rules now have to choose between adopting cssicorn and letting those 11 checks lapse when they upgrade.
- exposure Teams that adopt cssicorn depend on rules they cannot patch upstream by pull request, so a false positive waits on the maintainers or gets switched off in the team's own config.
- cost The upgrade takes two rounds of work: config edits first, then code fixes for whatever the changed recommended preset now flags.
Every change here ships in version 77.0.0 [2], so the break arrives when a team chooses to install it. The work comes in two sizes. The config fix is a rename of two preset names [4]. Of the 11 CSS rules that left the plugin [14], seven change only their prefix, from unicorn/ to cssicorn/ [15]. The other four also drop "css" from the rule name. A search-and-replace on the prefix alone leaves those four pointing at names eslint-cssicorn does not use [15][3].
The larger cost sits in the new package's install line. eslint-cssicorn runs through the @eslint/css language plugin, which goes in next to it as a dev dependency [9]. Its README lists ESLint 10.4 or later, flat config and ESM as requirements [10]. Its presets cover `**/*.css` files and set up the language plugin themselves [11]. For a team already on that stack, the case for calling version 77 routine holds: two packages and a preset. A team on an older ESLint, or with a config that is not ESM, has to finish that migration before it can run version 77 and its CSS checks at once.
A team that lets the CSS rules go at the upgrade keeps some coverage. The cssicorn README says unicorn still has rules that lint CSS, naming no-zero-fractions and no-shorthand-property-overrides [1]. Version 77 also adds a recommended-css preset, one of six new presets for languages other than JavaScript [5].
The new package is young, and it does not take outside code. It is at version 0.1 [13], and its README states: "We do not accept pull requests because of too much AI slop." [12]
The recommended preset also changes for teams that make every edit. The rule number-literal-case moves into it from the unopinionated preset, and no-asterisk-prefix-in-documentation-comments, which now also covers CSS and JSON, is enabled in it [7]. The release notes list 28 new rules [16] without saying which of them recommended turns on.
What to watch
- A cssicorn release past 0.1, or any change to the README's policy on pull requests.
- Unicorn documentation stating which of the 28 new rules the recommended preset enables.
- Other rule families leaving unicorn for standalone packages, as the CSS rules did with eslint-cssicorn.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence85
- Adoption
- Insufficient
- Hype gap+5
- Incentives
- Insufficient
- Confidence80
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
The eslint-cssicorn README says eslint-plugin-unicorn has more rules that also lint CSS, such as no-zero-fractions and no-shorthand-property-overrides, and describes unicorn as having more than 300 rules.
ReportedSupportedSource: eslint-cssicorn README2 sources— create a free account to open themView cited source - [2]
eslint-plugin-unicorn published release v77.0.0, which lists under 'Breaking' the move of CSS-only rules to the eslint-cssicorn package (#3811).
- [3]
Moved rules: unicorn/no-deprecated-css-features to cssicorn/no-deprecated-features; unicorn/no-duplicate-css-selectors to cssicorn/no-duplicate-selectors; unicorn/no-duplicate-font-family-names to cssicorn/no-duplicate-font-family-names; unicorn/no-invalid-media-features to cssicorn/no-invalid-media-features; unicorn/no-nesting-with-mixed-specificity to cssicorn/no-nesting-with-mixed-specificity; unicorn/no-redundant-nested-style-rules to cssicorn/no-redundant-nested-style-rules; unicorn/no-unknown-css-annotations to cssicorn/no-unknown-annotations; unicorn/no-unknown-pseudo-selectors to cssicorn/no-unknown-pseudo-selectors; unicorn/no-unscoped-css-nesting-selector to cssicorn/no-unscoped-nesting-selector; unicorn/prefer-explicit-viewport-units to cssicorn/prefer-explicit-viewport-units; unicorn/prefer-media-feature-range-syntax to cssicorn/prefer-media-feature-range-syntax.
- [4]
The release removes the deprecated flat/recommended and flat/all configs (#3810) and tells users to use recommended and all instead.
- [5]
The release adds recommended presets for non-JavaScript languages: recommended-css, recommended-html, recommended-json, recommended-markdown, recommended-toml and recommended-yaml (#3810).
- [6]
New rules in the release include no-invalid-response-options, no-prevent-default-in-passive-listener, no-invalid-boolean-attribute-value, no-conflicting-constraints, no-invalid-property-descriptor, no-invalid-url-protocol-comparison, no-invalid-integrity, no-url-in-search-params, no-invalid-dom-token, require-text-decoder-streaming, no-invalid-temporal-arithmetic, no-invalid-style-set-property, no-ineffective-csp-directives, no-invalid-intl-options, no-unsafe-json-serialization, comma-spacing, no-empty-link-text, no-leading-empty-lines, no-unnecessary-parameters, prefer-promise-static-methods, no-javascript-url, no-incomplete-accessor-override, prefer-escaped-irregular-whitespace, key-name-casing, prefer-literal-ascii, prefer-short-escape-sequences, no-loss-of-precision and indent.
- [7]
number-literal-case moves from the unopinionated to the recommended preset; no-asterisk-prefix-in-documentation-comments gains CSS and JSON support and is enabled in the recommended preset (#3725).
- [8]
eslint-disable comments now suppress reports instead of making rules skip the code, which the notes say made the directive look unused (#3783).
- [9]
eslint-cssicorn rules work with the @eslint/css language plugin; the install command is npm install --save-dev eslint @eslint/css eslint-cssicorn.
- [10]
eslint-cssicorn requires ESLint >=10.4, flat config, and ESM.
- [11]
eslint-cssicorn exports recommended, unopinionated and all configs; the preset configs apply to **/*.css files, set language: 'css/css' and add the @eslint/css plugin.
- [12]
"We do not accept pull requests because of too much AI slop."
- [13]
eslint-cssicorn is at version 0.1.
- [14]
Eleven CSS rules moved from eslint-plugin-unicorn to eslint-cssicorn.
- [15]
Four of the 11 moved rules drop 'css' from their names (no-deprecated-css-features, no-duplicate-css-selectors, no-unknown-css-annotations, no-unscoped-css-nesting-selector); the other seven change only the prefix.
Sources
1 independent publisher whose own reporting we read for this story.
- github.comeslint-plugin-unicorn
2 articles · October 6, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
- Open-source maintainer economicsFollow
- JavaScript lintingFollow
- CSS lintingFollow