dbt-pr-review

star 675

Cloudflare-style AI code review for dbt/SQL pull requests. Produces a signed APPROVE/COMMENT/REQUEST_CHANGES verdict where every blocking finding is backed by a deterministic engine call — column-lineage blast radius, query equivalence, PII classification, and A–F grade. Use to review a dbt PR or the working-tree changes before merge.

AltimateAI By AltimateAI schedule Updated 6/1/2026

name: dbt-pr-review description: Cloudflare-style AI code review for dbt/SQL pull requests. Produces a signed APPROVE/COMMENT/REQUEST_CHANGES verdict where every blocking finding is backed by a deterministic engine call — column-lineage blast radius, query equivalence, PII classification, and A–F grade. Use to review a dbt PR or the working-tree changes before merge.

dbt PR Review

Requirements

Agent: reviewer (read-only) — also works from analyst/builder. Tools used: dbt_pr_review (primary), impact_analysis, altimate_core_equivalence, altimate_core_check, lineage_check, read-only git.

When to Use This Skill

Use when the user wants to:

  • Review a dbt pull request (changed models) before merge
  • Get a single verdict (APPROVE / COMMENT / REQUEST_CHANGES) with evidence
  • Understand the downstream blast radius of a model/column change
  • Check whether a "refactor" actually preserves results (query equivalence)
  • Catch PII exposure, contract breaks, or warehouse-cost anti-patterns pre-merge

What makes this different from a generic AI reviewer

Generic reviewers read the diff as text and guess. This review is backed by the Rust core: every blocking finding carries a deterministic proof (an equivalence counterexample, a downstream-model list, a PII classification). The verdict is signed into a replayable envelope keyed to the dbt manifest.

Workflow

  1. Run the verdict engine. Call dbt_pr_review once:

    • dbt_pr_review({}) reviews the working tree against origin/main.
    • dbt_pr_review({ base: "origin/main", head: "HEAD", manifest_path: "target/manifest.json" }) for an explicit PR range.
    • The tool reads .altimate/review.yml for the per-repo rubric and mode.
  2. Read the signed envelope. It contains the verdict, a risk tier (trivial / lite / full), and findings grouped by severity (critical / warning / suggestion), each with engine evidence.

  3. Present the verdict exactly as returned. Group findings by severity. If the run is degraded (no manifest/warehouse), state that lineage, equivalence, and data-impact were NOT verified — it is a lint-only review.

  4. Respect the safety invariant. An UNDECIDABLE equivalence result is a WARNING, never a block. Never claim a refactor is unsafe when equivalence could not be decided — recommend a data-diff instead.

Configuration (.altimate/review.yml)

mode: comment            # comment (never blocks) | gate (blocks on REQUEST_CHANGES)
severityThreshold: suggestion
manifestPath: target/manifest.json
dialect: snowflake
reviewers: []            # empty = tier defaults; or pin lanes e.g. [lineage_breakage, semantic_change]
exclude:
  - models/legacy/**
rubric:
  blockOn: [lineage_breakage, contract_violation, pii_exposure, semantic_change]
  warningPatternThreshold: 3
  thresholds:
    warehouseCostMinRows: 1000000

Verdict rubric (defaults)

  • REQUEST_CHANGES — any blocking-category critical (broken lineage with downstream consumers, contract violation, PII exposure, proven non-equivalent rewrite), or ≥3 warnings (risk pattern).
  • COMMENT — only suggestions, or a single non-blocking warning.
  • APPROVE — no findings.

In comment mode (default), REQUEST_CHANGES is posted as comments rather than blocking the merge. Switch to gate per-repo once you trust the false-positive rate.

Install via CLI
npx skills add https://github.com/AltimateAI/altimate-code --skill dbt-pr-review
Repository Details
star Stars 675
call_split Forks 91
navigation Branch main
article Path SKILL.md
More from Creator