dbt-model-spec
Spec a dbt model — its grain, sources, transformations, tests, and materialization. Use when asked to design a dbt model, plan a data transformation…
它会碰到什么
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
dbt Model Spec Skill
A dbt model is only trustworthy if its grain is unambiguous, its sources are declared, and it's
tested. This skill specs a model the way a good analytics engineer would — naming the grain first,
mapping lineage, defining each column, choosing the right materialization, and writing the dbt tests
that keep it correct — so the model is reviewable before a line of SQL ships.
Required Inputs
Ask for these only if they aren't already provided:
- What the model represents and its grain (one row per ___ — the single most important decision).
- Layer — staging, intermediate, or mart (dimension/fact). Conventions differ per layer.
- Sources / upstream refs — the raw tables or models it builds on.
- The business logic — joins, filters, aggregations, and any business rules.
Output Format
dbt Model: [model_name]
1. Purpose & grain — what it is, and one row per [grain] stated explicitly. Layer (staging/intermediate/mart).
2. Lineage — source('…') / ref('…') upstreams → this model → likely downstream consumers.
3. Transformation logic — the joins, filters, aggregations, window functions, and business rules, in order. Flag fan-out risks (joins that break the grain).
4. Columns — a table: name · type · description · (key/measure/dimension). The schema contract.
| column | type | description |
|---|---|---|
5. Tests (dbt) — unique + not_null on the grain key, relationships for FKs, accepted_values for enums, and any custom/dbt_utils tests the logic needs. Tests are the model's guarantees — don't skip them.
6. Materialization — view / table / incremental / ephemeral, with the reasoning (incremental needs a unique_key + an is_incremental() filter).
7. Skeleton — a starting model.sql (CTE-structured: imports → logic → final select) and the schema.yml with tests, ready to fill in.
Quality Checks
- [ ] The grain is stated as "one row per ___" and the key is tested unique + not_null
- [ ] Sources/refs use
source()/ref(), not hard-coded table names - [ ] Every column has a type and description (the schema contract)
- [ ] Tests cover the grain key, FKs (relationships), and enum columns
- [ ] Materialization is justified; incremental models declare a unique_key and is_incremental() logic
- [ ] Fan-out joins that could break the grain are flagged
Anti-Patterns
- [ ] Do not leave the grain ambiguous — an untested, unclear grain is how duplicate rows and wrong metrics happen
- [ ] Do not hard-code upstream table names — use ref()/source() so lineage and environments work
- [ ] Do not ship a model with no tests — untested models silently rot; the grain key at minimum must be tested
- [ ] Do not default everything to a table — pick the materialization the use justifies (views for light, incremental for large append-only)
- [ ] Do not bury business logic without comments — the next analyst must understand the rules
Based On
dbt / analytics-engineering best practice — explicit grain, ref/source lineage, layered modelling (staging→intermediate→mart), schema tests.
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
它属于哪个仓库
exports/openclaw/dbt-model-spec/SKILL.md同一个仓库里的其他技能
同名技能的其他版本
有 3 个不同仓库或目录里都有叫 dbt-model-spec 的技能。它们内容并不相同,别混用:
- mohitagw15856/pm-claude-skills — Spec a dbt model — its grain, sources, transformations, tests, and materialization. Use wh
- mohitagw15856/pm-claude-skills — Spec a dbt model — its grain, sources, transformations, tests, and materialization. Use wh