Skip to main content

🕵️ dbtective

dbt Core dbt Core v2 dbt Fusion codecov

dbtective is a Rust-powered 'detective' for dbt metadata best practices. As your dbt project grows, keeping metadata consistent and high-quality can become a real challenge.

CLI demo

Explore the full documentation or the possible rules.

dbtective makes it easy to spot and fix common issues, examples:

  • Missing descriptions: Does every model and seed have a description?
  • Column types: Are all columns explicitly typed?
  • Ownership: Do all sources have an owner?
  • Naming conventions: Are all marts following your team's naming standards?

We detect and enforce these rules in your cli, prek/pre-commit and CI/CD pipeline, so fast you will barely notice🕵️.

Supports dbt Core v1 and v2, including v2's new Parquet artifacts.

Installation

Pip (pypi)
pip install dbtective
uv

Install as a dev dependency:

uv add dbtective --dev
Homebrew
brew install feliblo/tap/dbtective
GitHub Actions

Run dbtective as part of your CI/CD pipeline. See the GitHub Actions documentation for more details.

- uses: feliblo/dbtective@v0.3.5
  with:
    config-file: "dbtective.yml"
    entry-point: "."
    only-manifest: "true"
    verbose: "false"
prek/pre-commit

Prerequisite: dbtective is installed via one of the methods above.

We recommend using --only-manifest and --hide-warnings with prek/pre-commit to avoid issues caused by catalog.json mismatches. Eligible catalog rules automatically fall back to manifest data. See the pre-commit documentation and Only Manifest Mode for details.

Add the following to your .pre-commit-config.yaml:

repos:
  - repo: https://github.com/feliblo/dbtective
    rev: v0.3.5
    hooks:
      - id: dbtective-run
        entry: dbtective run
        args: [--only-manifest, --hide-warnings, --auto-parse]

And run:

prek install
prek run --all-files
# or with pre-commit
pre-commit install
pre-commit run --all-files
Shell installer (macOS/Linux)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/feliblo/dbtective/releases/latest/download/dbtective-installer.sh | sh
PowerShell installer (Windows)
irm https://github.com/feliblo/dbtective/releases/latest/download/dbtective-installer.ps1 | iex
Binary download

Pre-built binaries for Linux, macOS, and Windows are available on the releases page.

Quickstart

All possible rules can be found in the rules documentation. Information about customizing dbtective is shown at the config documentation

  1. Generate your config file by answering a few simple questions:

    dbtective init
    

    This walks you through picking a config format, and which rules to enable. It then generates a config you can start with. See the CLI reference for details.

  2. (Optional) Generate the dbt manifest and catalog files if you haven't done so already. Most dbt commands automatically generate the manifest.json, but if you want to ensure both files are up to date, run:

    # dbt v1
    dbt compile
    dbt docs generate
    
    # dbt v2 — one command produces everything dbtective needs
    dbt build --write-index --static-analysis strict
    

    Tip: For local development and pre-commit, use --only-manifest to skip catalog.json. Eligible catalog rules will fall back to manifest data automatically.

    On dbt v2 the Parquet index carries column types itself, so --only-manifest is not needed. Note dbt docs generate was removed in v2; use dbt compile --write-catalog if you still want a catalog.json.

  3. Run dbtective in the root of your current directory or specify an entry point if your dbt_project is not located in the root/current drectory.

    dbtective run
    dbtective run --entry-point "my_dbt_project"
    
  4. Review the output and fix any issues found.

  5. (Optional) Integrate dbtective into your CI/CD pipeline or pre-commit hooks to automate rules on every commit and/or pull request.

Contributing

We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation, your help makes dbtective better for everyone.

For detailed contributing guidelines, development setup, and coding standards, please see the contributing documentation.

Acknowledgements

This project is heavily inspired by dbt-bouncer. It tries to improve certain aspects of the amazing work by pgoslatara, while giving me an opportunity to improve my Rust. More about the aspects we try to improve is available in our FAQ.

Metadata

Release files for dbtective 0.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for dbtective 0.3.5
File Actions
dbtective-0.3.5-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for dbtective-0.3.5-py3-none-win_amd64.whl
dbtective-0.3.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details for dbtective-0.3.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
dbtective-0.3.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details for dbtective-0.3.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
dbtective-0.3.5-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for dbtective-0.3.5-py3-none-macosx_11_0_arm64.whl
dbtective-0.3.5-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details for dbtective-0.3.5-py3-none-macosx_10_12_x86_64.whl

Total release size: 15.7 MB

Release files / dbtective-0.3.5-py3-none-win_amd64.whl

Download URL dbtective-0.3.5-py3-none-win_amd64.whl
Size 3.2 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
2bc63cce1615ec4a510a58fe96abba71c8e34e7229256b8087c2340c55433d20
BLAKE2b-256 checksum
How to use checksums
6ea957b27851c30e6329ed13787cdfa537f090a9f4baeed1445682e3c6cff9bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dbtective-0.3.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL dbtective-0.3.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.3 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
136a932f0cb93f708b7fb5ac188636d06a4fde50bba6216138d6dc8de0528104
BLAKE2b-256 checksum
How to use checksums
baf4063f0fc57b880628b3a409230f9fd51d8cda55c68a14eccdd57b0145f6e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dbtective-0.3.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL dbtective-0.3.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.1 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
71dfe92e74d4d59d4656e5cfdaf6fb8c0fc6cef7a839ffd613a94b36bbb8d956
BLAKE2b-256 checksum
How to use checksums
4342c98ee8caf9f90b6c43c9615b7a721bad699f8076dcf714f543cbcef4ea4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dbtective-0.3.5-py3-none-macosx_11_0_arm64.whl

Download URL dbtective-0.3.5-py3-none-macosx_11_0_arm64.whl
Size 3.0 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
738bd45a9f55c2023b3806e68bfadd987c2818a1e76d3b89a2116e7bfad0a6d4
BLAKE2b-256 checksum
How to use checksums
12528bb30f85a477482e62e5b4aa3ee719629aa6e5f9263620f504bfc52755a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dbtective-0.3.5-py3-none-macosx_10_12_x86_64.whl

Download URL dbtective-0.3.5-py3-none-macosx_10_12_x86_64.whl
Size 3.2 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
5b88f02674fdd2f98c695a5285d8fb0af63df31b0d83d6325ae517ba4ab69949
BLAKE2b-256 checksum
How to use checksums
dcb7c598fdea08d478840fd45bf29de2f35300273cecbc180d1913732aca476c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for dbtective 0.3.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.5 This release

5 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page