documenting-dbt-modelslisted
Install: claude install-skill Unknown-333/awesome-data-engineering-skills
# Documenting dbt Models
## When to use
- Adding or improving descriptions for models, columns, and sources.
- Registering downstream dashboards/apps as exposures for lineage.
- Setting up `dbt docs` generation and reusable doc blocks.
- Do NOT use for writing tests (use `testing-dbt-projects`).
## Workflow
```
- [ ] Describe each model: what it is, its grain, and who uses it
- [ ] Describe key columns (keys, enums, money, dates)
- [ ] Reuse repeated definitions with doc blocks
- [ ] Register BI dashboards as exposures
- [ ] Run dbt docs generate and review lineage
```
1. **Model description** states the grain and purpose in one or two lines — the
grain is the most valuable fact for a consumer.
2. **Column descriptions** for keys, enums, money, and dates; skip self-evident
ones to avoid noise.
3. **Doc blocks** (`{% docs %}`) for definitions reused across models (e.g. what
"active customer" means) so they stay consistent.
4. **Exposures** connect models to the dashboards/ML jobs that consume them, so
lineage and `dbt build --select +exposure` work.
## Patterns
**schema.yml with descriptions:**
```yaml
models:
- name: fct_orders
description: "One row per order line. Grain: order_id + line_number. Feeds Finance revenue dashboard."
columns:
- name: order_id
description: "Natural order identifier from the shop system."
- name: status
description: '{{ doc("order_status") }}'
```
**Reusable doc block** (in a `.md` file unde