Postcss Config Validator

Other

Validate PostCSS config files (.postcssrc, postcss.config.js, package.json#postcss) for plugin ordering, deprecated plugins, Tailwind integration, and best practices. Use when validating CSS processing configs, auditing PostCSS setups, or linting frontend build configuration.

Install

openclaw skills install postcss-config-validator

PostCSS Config Validator

Validate .postcssrc, .postcssrc.json, postcss.config.js, postcss.config.ts, and package.json#postcss for deprecated plugins, ordering issues, Tailwind integration problems, parser misconfiguration, and best practices. JS/TS configs are detected but cannot be statically validated. Supports text, JSON, and summary output formats with CI-friendly exit codes.

Commands

# Full validation (all 22+ rules)
python3 scripts/postcss_config_validator.py validate .postcssrc

# Quick structure-only check
python3 scripts/postcss_config_validator.py check .postcssrc.json

# Explain config in human-readable form
python3 scripts/postcss_config_validator.py explain package.json

# Suggest improvements
python3 scripts/postcss_config_validator.py suggest .postcssrc

# JSON output (CI-friendly)
python3 scripts/postcss_config_validator.py validate .postcssrc --format json

# Summary only (pass/fail + counts)
python3 scripts/postcss_config_validator.py validate .postcssrc --format summary

# Strict mode (warnings and infos become errors)
python3 scripts/postcss_config_validator.py validate .postcssrc --strict

Rules (22+)

#IDCategorySeverityRule
1S1StructureErrorFile not found or unreadable
2S2StructureErrorEmpty config file
3S3StructureErrorInvalid JSON syntax
4S4StructureWarningUnknown top-level keys (valid: plugins, parser, syntax, stringifier, map, from, to)
5S5StructureInfoJS/TS config detected — cannot statically validate
6P1PluginsWarningEmpty plugins object/array
7P2PluginsWarningDeprecated plugin (autoprefixer-core, postcss-cssnext, lost, postcss-sprites)
8P3PluginsWarningDuplicate plugins
9P4PluginsInfoPlugin ordering issues (autoprefixer after preset-env, cssnano last)
10P5PluginsInfopostcss-import should be first plugin
11P6PluginsInfoUnknown/uncommon plugin name (not in top 50 list)
12T1TailwindInfotailwindcss without nesting plugin
13T2TailwindWarningtailwindcss after autoprefixer (wrong order)
14T3TailwindInfopostcss-preset-env with tailwindcss (potential conflict)
15X1Syntax/ParserWarningBoth parser and syntax specified
16X2Syntax/ParserInfoUnknown parser value
17X3Syntax/ParserInfoParser set but no matching preprocessor plugin
18M1Source MapsInfoSource maps disabled (map: false)
19M2Source MapsInfoInline source maps enabled (map.inline: true)
20B1Best PracticesWarningNo plugins configured
21B2Best PracticesInfoUsing postcss-preset-env AND individual feature plugins it includes
22B3Best PracticesInfoVery large number of plugins (>15)

Output Formats

  • text (default): Human-readable with severity icons
  • json: Machine-parseable JSON with findings array and summary
  • summary: Pass/fail with error/warning/info counts

Exit Codes

  • 0: No errors (warnings/infos only or clean)
  • 1: One or more errors found
  • 2: File not found or invalid input

Requirements

  • Python 3.8+
  • No external dependencies (pure stdlib)