Inspiration
LLMs produce probabilistic outputs and thrive on deterministic feedback mechanisms in their environment. Over time in large codebases their quality suffers if left unattended, they adopt bad patterns, and can quietly break applications in subtle ways. We often judge their output qualitatively on the frontend while the backend gets measured quantitatively, and that mismatch can lead to bad patterns that future developers (and agents) pick up on. Web standards plus deterministic feedback give frontend agents something objective to measure against.
What it does
Baseline Warden is a pre-commit/CI step for HTML/CSS that maps your code to the Web Baseline and stops “limited” features from being committed to the codebase. You get deterministic, line-level feedback in the console, a JSON artifact, and PR annotations.
How we built it
A small Typer CLI wraps fast detectors (HTML parser + tinycss2), a resolver against a locked snapshot from Web Status + web-features, and a simple policy engine. It filters common descriptors to cut down on noise and logs outputs tuned for both humans and bots.
Challenges I ran into
Finding edge cases. To solve this I created a stock Django repo and built samples that were explicitly designed to trigger baseline-warden's check for unknown attributes: https://github.com/Mockapapella/django-bw
Accomplishments that we're proud of
It's an end-to-end pipeline that just works and is installable via pip. The CLI feels frictionless and adding it to pre-commit or GitHub Actions is extremely easy and straightforward.
What we learned
If you get too specific with analysis tools it can increase churn in between revisions, dramatically increasing the friction to adopt a tool. Adding options for this (e.g. only allowing "widely adopted" vs "new and widely adopted") helps make the onboarding process easier and lets the developer tune the strictness to their preferred level.
What's next for baseline-warden
Checks for JS/TSX/JSX/SCSS and other types of more JS-centric workflows that might require build systems.
Built With
- python
- typer
Log in or sign up for Devpost to join the conversation.