Browserslist Validator

Integrations
BrowserJson

Validate .browserslistrc files and browserslist config in package.json for syntax errors, deprecated browsers, redundant queries, and best practices. Use when validating browserslist configuration, checking browser targeting, auditing frontend build configs, or linting .browserslistrc files.

Install

openclaw skills install @charlie-morrison/browserslist-validator

Browserslist Validator

Validate .browserslistrc files and browserslist entries in package.json for syntax errors, deprecated browsers, redundant queries, and best practices.

Commands

# Full validation (all rules)
python3 scripts/browserslist_validator.py validate .browserslistrc

# Validate browserslist in package.json
python3 scripts/browserslist_validator.py validate package.json

# Quick syntax-only check
python3 scripts/browserslist_validator.py check .browserslistrc

# Estimate coverage
python3 scripts/browserslist_validator.py coverage .browserslistrc

# Explain each query in human-readable form
python3 scripts/browserslist_validator.py explain .browserslistrc

# JSON output
python3 scripts/browserslist_validator.py validate .browserslistrc --format json

# One-line PASS/WARN/FAIL summary
python3 scripts/browserslist_validator.py validate .browserslistrc --format summary

# Strict mode (warnings become errors)
python3 scripts/browserslist_validator.py validate .browserslistrc --strict

# Target environment
python3 scripts/browserslist_validator.py validate .browserslistrc --env production

Rules (20)

#CategorySeverityRule
S1SyntaxEFile not found or unreadable
S2SyntaxEEmpty config (no queries)
S3SyntaxEInvalid query syntax / unknown browser name
S4SyntaxWDuplicate queries
B1BrowsersWDead/deprecated browser (IE, Blackberry, etc.)
B2BrowsersWBrowser with <0.01% global usage
B3BrowsersEBrowser version does not exist (e.g. Chrome 999)
B4BrowsersEUnknown browser name
Q1QueriesWRedundant query (covered by broader query)
Q2QueriesWConflicting queries (e.g. > 1% and < 0.5%)
Q3QueriesEnot dead without any positive query
Q4QueriesWEmpty result after not negation
C1CoverageWVery low total coverage (<80%)
C2CoverageWVery high coverage (>99.5%, may include dead browsers)
C3CoverageINo mobile browser coverage hint
C4CoverageINo country-specific override detected
P1Best PracticesWIE queries present (recommend dropping IE)
P2Best PracticesWUnreasonably old versions (last 20 versions)
P3Best PracticesWall query used (too broad)
P4Best PracticesWVersion pinning instead of range (Chrome 90)

Output Formats

  • text (default): Human-readable with [E]/[W]/[I] severity prefix
  • json: Machine-readable structured output
  • summary: Single-line PASS / WARN / FAIL

Exit Codes

  • 0 — No errors
  • 1 — Errors found (or warnings in --strict mode)
  • 2 — File not found or parse error