skills/data/dbt-expert/SKILL.md
dbt best practices for models, tests, documentation, and project organization.
npx skillsauth add timequity/vibe-coder dbt-expertInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
dbt_project/
├── models/
│ ├── staging/ # 1:1 with sources
│ │ └── stg_*.sql
│ ├── intermediate/ # Business logic
│ │ └── int_*.sql
│ └── marts/ # Final tables
│ ├── dim_*.sql
│ └── fct_*.sql
├── tests/
├── macros/
├── seeds/
└── dbt_project.yml
-- models/staging/stg_orders.sql
with source as (
select * from {{ source('raw', 'orders') }}
),
renamed as (
select
id as order_id,
customer_id,
cast(amount as decimal(10,2)) as order_amount,
created_at::timestamp as ordered_at
from source
)
select * from renamed
-- models/intermediate/int_orders_by_customer.sql
select
customer_id,
count(*) as order_count,
sum(order_amount) as total_amount,
min(ordered_at) as first_order_at
from {{ ref('stg_orders') }}
group by 1
-- models/marts/dim_customer.sql
select
c.customer_id,
c.name,
c.email,
o.order_count,
o.total_amount,
o.first_order_at
from {{ ref('stg_customers') }} c
left join {{ ref('int_orders_by_customer') }} o using (customer_id)
# schema.yml
models:
- name: stg_orders
columns:
- name: order_id
tests:
- unique
- not_null
- name: order_amount
tests:
- not_null
- dbt_utils.accepted_range:
min_value: 0
models:
- name: dim_customer
description: "Customer dimension with order metrics"
columns:
- name: customer_id
description: "Primary key"
- name: total_amount
description: "Lifetime order value"
development
Hidden quality gate that runs before showing "Done!" to user - ensures all tests pass, build succeeds, and requirements met before claiming completion
data-ai
Use when about to claim work is complete or fixed - requires running verification commands and confirming output before making any success claims
tools
Generate UI components from natural language descriptions. Use when: user asks for a page, component, or UI element. Triggers: "create page", "add component", "show form", "make button", "страница", "компонент", "форма".
content-media
10 ready-to-use themes with colors and fonts for consistent styling. Use when: applying visual themes to pages, components, or design systems. Triggers: "theme", "color palette", "color scheme", "fonts", "branding", "visual identity", "design system colors".