Skip to main content
Generaljpoutrin

dbt

dbt (data build tool) patterns for data transformation and analytics engineering. Use when building data models, implementing data quality tests, or managing data transformation pipelines.

Stars
13
Source
jpoutrin/product-forge
Updated
2026-03-01
Slug
jpoutrin--product-forge--dbt
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/jpoutrin/product-forge/HEAD/plugins/devops-data/skills/dbt/SKILL.md -o .claude/skills/dbt.md

Drops the SKILL.md into .claude/skills/dbt.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

dbt Skill

This skill provides dbt patterns for analytics engineering.

Project Structure

dbt_project/
├── dbt_project.yml
├── models/
│   ├── staging/
│   │   └── stg_customers.sql
│   ├── intermediate/
│   │   └── int_customer_orders.sql
│   └── marts/
│       └── fct_orders.sql
├── seeds/
├── macros/
├── tests/
└── snapshots/

Model Patterns

Staging Models

-- models/staging/stg_customers.sql
with source as (
    select * from {{ source('raw', 'customers') }}
),

renamed as (
    select
        id as customer_id,
        lower(email) as email,
        created_at
    from source
)

select * from renamed

Incremental Models

-- models/marts/fct_orders.sql
{{
    config(
        materialized='incremental',
        unique_key='order_id'
    )
}}

select *
from {{ ref('stg_orders') }}
{% if is_incremental() %}
where updated_at > (select max(updated_at) from {{ this }})
{% endif %}

Testing

# models/schema.yml
models:
  - name: stg_customers
    columns:
      - name: customer_id
        tests:
          - unique
          - not_null
      - name: email
        tests:
          - unique

Best Practices

  • Use staging → intermediate → marts pattern
  • Source all raw data with source()
  • Reference models with ref()
  • Add documentation and tests
  • Use incremental models for large datasets