dbt-score (GitHub Repo)
dbt-score is a linter that scores data transformation models on metadata quality to enforce documentation, testing, and governance standards across growing dbt projects.
What: A linting tool for dbt projects that evaluates models against configurable rules for documentation completeness, test coverage, ownership metadata, naming conventions, and SQL complexity, assigning numerical scores (0-10) to individual models and entire projects.
Why it matters: As dbt projects scale to hundreds or thousands of models, inconsistent documentation and missing tests become major problems; this tool provides automated quality checks that can fail CI/CD builds when standards slip, preventing technical debt accumulation.
Takeaway: Install via pip in your dbt-core environment and run `dbt-score lint` from your project root to get immediate quality feedback, or integrate into CI pipelines with fail thresholds.
Deep dive
- Provides a 0-10 scoring system for both individual dbt models and overall project health, with configurable badge thresholds (gold/silver/bronze icons)
- Ships with built-in rules covering common needs: column descriptions, model documentation, ownership metadata, test presence, and SQL line count limits
- Supports custom rules written as simple Python functions using decorators, enabling organization-specific governance requirements (e.g., requiring business owner metadata)
- Configuration via
pyproject.tomlallows setting CI fail thresholds, disabling specific rules, adjusting rule severity levels, and customizing rule parameters - Integrates with dbt's native selection syntax for targeted linting (e.g.,
--select staging.*for staging models only,--select state:modifiedfor changed models) - Can auto-generate the dbt manifest via
--run-dbt-parseflag, eliminating the need for separate dbt parse step - Exit codes (0 for pass, 1 for fail) make CI/CD integration straightforward across different platforms
- Warnings include severity levels (low/medium/high) and specific guidance on what's missing (e.g., which columns lack descriptions)
- Addresses real scaling problems: inconsistent documentation, missing tests on critical models, naming convention violations, and compliance metadata gaps
- Requires Python 3.10+ and dbt-core 1.5+, installed in the same environment as dbt
Decoder
- dbt (Data Build Tool): An open-source framework for transforming data in warehouses using SQL SELECT statements, organizing data pipelines as versioned models
- Linter: A static analysis tool that checks code or metadata against style rules and best practices without executing it
- Manifest: A JSON file generated by dbt containing metadata about all models, tests, and dependencies in a project
Original article
dbt-score is a linter for dbt metadata quality. It scores models and projects against rules for docs, tests, ownership, naming, and SQL complexity, so teams can enforce standards in CI/CD and catch weak models early. It supports custom rules for org-specific governance.