From ADAF — Automated Data Assurance Framework
Find and (on request) fix dbt testing-taxonomy / data-quality test gaps in any dbt project using the ADAF CLI. Use when a developer asks to review a dbt model's tests, find missing data-quality tests (grain, uniqueness, freshness, contracts, FK integrity), check DAMA-UK6 coverage, or close taxonomy gaps before opening a PR. Each finding is explained with its DAMA-UK6 dimension and how to suppress it if it's a false positive; fixes are always applied git-reversibly and models that look like deliberate test fixtures are never silently "repaired".
How this skill is triggered — by the user, by Claude, or both
Slash command
/adaf:adaf-taxonomy-gapsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You drive the **ADAF CLI** (`adaf`) to find, explain, and optionally close data-quality test gaps in
You drive the ADAF CLI (adaf) to find, explain, and optionally close data-quality test gaps in
a dbt project. The catalogue of rules (codes like MD-01, TM-AU-01, EN-03) is the single source of
truth — adaf rules is authoritative; never invent rule codes or dimensions.
git checkout -- <files> or git stash).hybrid rules are heuristics. For every gap, state that
it might not apply and show how to suppress it (see Explain).adafFind the dbt project (the directory containing dbt_project.yml) and pick the invocation that works in
this repo — then pass --project-dir so adaf targets it regardless of your cwd:
PROJECT=$(cd "$(git rev-parse --show-toplevel)" && dirname "$(git ls-files '*dbt_project.yml' | head -1)")
# Choose ONE for $ADAF (try in order):
ADAF="adaf" # installed on PATH (uv tool install / plugin)
ADAF="uv run --directory $PROJECT adaf" # adaf is a dev-dependency of the dbt project
ADAF="uvx --from <repo>/.github/cli/adaf adaf" # run from the adaf source checkout
Verify with $ADAF rules validate. Every command below ends with --project-dir "$PROJECT". (The
uv run --directory form already sets cwd to the project, so --project-dir is belt-and-braces there.)
# Deterministic detectors (grain/freshness/contracts/keys) — fast, no warehouse, no LLM:
$ADAF check taxonomy --all --json --project-dir "$PROJECT"
# Warehouse-resolved columns enrich key/time rules (needs a prior `dbt docs generate`):
$ADAF check taxonomy --all --catalog target/catalog.json --json --project-dir "$PROJECT"
# Only the models changed on this branch:
$ADAF check taxonomy --json --project-dir "$PROJECT"
# The full deterministic gate suite (docs, tests, taxonomy, boundaries, lint, …):
$ADAF check all --all --json --project-dir "$PROJECT"
For the LLM judgement layer (the hybrid/llm rules — applicability, FK intent, ratios, SCD2),
run the reviewer (needs a GitHub token with models: read; makes no changes):
GITHUB_TOKEN=$(gh auth token) $ADAF review --changed-only --json --project-dir "$PROJECT"
Parse the JSON. In check taxonomy, each results[] row has node, rule_code, severity
(blocker/warning), status (missing/present), and a detail with the remediation; the
suppressed[] array lists gaps already opted out (do not re-flag those).
To hand the developer a single reviewable artifact that reconciles the deterministic checks against the LLM (the false-positive / false-negative surface), generate the report:
$ADAF report --all --catalog target/catalog.json --review review.json -o adaf-model-review.md --project-dir "$PROJECT"
For every missing finding, give the developer:
detail, and the rule's DAMA-UK6 dimension + vignette path:
$ADAF rules show MD-02 --project-dir "$PROJECT". Read the vignette it names for the worked pattern.blocker (deterministic; almost certainly real) vs a warning (hybrid
heuristic; may be a false positive).$ADAF rules explain MD-02 --project-dir "$PROJECT"
prints the exact syntax: an inline -- adaf-disable: MD-02 (reason) comment in the model's .sql, or
an adaf.yml entry with a path glob + reason. Recommend suppression-with-a-reason over a fix when the
rule genuinely doesn't apply.Apply the smallest change that satisfies the rule, following the vignette's framework_first (the
ladder dbt core → dbt-utils → dbt_expectations → elementary → audit_helper). Typical fixes:
dbt_utils.unique_combination_of_columns model-level test naming the grain
(and document the grain in the model description).freshness: block (loaded_at_field + warn_after/error_after) on the
source.config: { contract: { enforced: true } } + declared column data_types.unique+not_null on the PK, or a relationships test on the FK.Re-run $ADAF check taxonomy --json --project-dir "$PROJECT" to confirm the finding cleared, then show
the diff (git diff) and the one-line undo. If the gap is a deliberate fixture, prefer a suppression
(with a reason) over a fix and say so.
Summarise as a short table: rule (code + slug) · node · DAMA dimension · blocker/warning ·
recommended action (fix / suppress / accept). End with the exact commands you ran so the developer can
reproduce.
You can be wrong: the detectors are deterministic for structure but heuristic for applicability. When in doubt, present the choice (fix vs. suppress) and let the developer decide — the suppression escape hatch exists precisely so a false positive never blocks a PR.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub neozenith/dbt-gcp-jaffleshop --plugin adaf