Skip to content

Latest commit

 

History

History
70 lines (48 loc) · 3.22 KB

File metadata and controls

70 lines (48 loc) · 3.22 KB

Plumb — deterministic design-system linter for rendered websites

A deterministic design-system linter for rendered websites, not the code behind it.

CI crates.io docs.rs npm Codecov License: MIT OR Apache-2.0 Rust 1.95+

Plumb opens a web page in a headless browser at multiple viewports, extracts the computed DOM, and measures it against a declarative design-system spec. It emits structured, pixel-precise violations an AI coding agent can fix in one shot — "ESLint for rendered websites."

Plumb ships as a single Rust binary with two entry points:

  • A CLI (plumb lint <url>) for developers and CI.
  • An MCP server (plumb mcp) that exposes tools to AI coding agents (Claude Code, Cursor, Codex, Windsurf) via the Model Context Protocol.

Demo

plumb lint against any URL produces structured, pixel-precise violations grouped by viewport, rule, and selector:

Terminal output of plumb lint showing spacing, type, and touch-target violations

Install

# Install script (macOS / Linux / Windows)
curl -LsSf https://plumb.aramhammoudeh.com/install.sh | sh

# Cargo
cargo install plumb-cli

# Homebrew
brew install aram-devdocs/plumb/plumb

# npm
npm i -g plumb-cli

Intel Mac: native binaries return when #269 closes. Use cargo install plumb-cli in the meantime.

Per-channel notes, version pinning, and offline attestation verification live in the Install page.

Documentation

License

Dual-licensed under either of:

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Plumb by you, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.