Communitygithub.com

G1Joshi/Agent-Skills

Professionelle dbt-Unterstützung (Data Build Tool) für SQL-Modellierung, Jinja-Makros, Tests, Dokumentation und die semantische Schicht. Verwenden für Analytics-Engineering-Pipelines mit BigQuery, Snowflake oder PostgreSQL.

Was ist Agent-Skills?

Diese Fähigkeit bietet umfassende Unterstützung für dbt (Data Build Tool), das bevorzugte Framework für Datentransformationen im Warehouse. Sie deckt alle wesentlichen Aspekte ab: deklarative SQL-Modellierung mit `ref()` und `source()`, Wiederverwendbarkeit durch Jinja-Makros, Schema- und Datentests (`unique`, `not_null`, Beziehungen) sowie automatisierte Dokumentation und Abhängigkeitsvisualisierung. Der Skill eignet sich besonders für Analytics Engineers, die moderne Cloud-Warehouses wie Snowflake, BigQuery, Databricks oder Redshift nutzen. Er führt durch gängige Muster wie inkrementelle Modelle zur effizienten Verarbeitung großer Datenmengen und betont Best Practices wie die Projektstrukturierung in Staging-, Intermediate- und Marts-Layer. Zudem enthält er eine Troubleshooting-Tabelle für häufige Fehler wie Kompilierungsfehler oder Schemaänderungen. Die Unterstützung gilt für dbt v2.0 mit der neuen Fusion Engine (Rust) für verbesserte Leistung.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/G1Joshi/Agent-Skills/tree/HEAD/skills/ai-ml/dbt

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

dbt (Data Build Tool)

dbt verwaltet Datentransformationen im Warehouse mittels SQL. Version 2.0 führt die Fusion Engine (Rust) für verbesserte Leistung ein.

Wann verwenden

  • Analytics Engineering & Datentransformationen: Transformation von Rohdaten in modernen Cloud-Warehouses (Snowflake, BigQuery, Databricks, Redshift).
  • Modulares SQL mit Jinja & Versionskontrolle: Erstellung wiederverwendbarer SQL-Modelle mit DAG-Abhängigkeiten und Makros.
  • Datenqualität & Schema-Tests: Durchsetzung von unique, not_null, referenzieller Integrität und benutzerdefinierten Tests.
  • Automatisierte Datendokumentation & Abhängigkeiten: Generierung interaktiver Abhängigkeitsdiagramme direkt aus Codebasis-Schemas.

Schnellstart

-- models/marts/fct_orders.sql
{{ config(materialized='table') }}

with orders as (
    select * from {{ ref('stg_orders') }}
),
payments as (
    select * from {{ ref('stg_payments') }}
)

select
    orders.order_id,
    orders.customer_id,
    orders.order_date,
    coalesce(payments.amount, 0) as total_amount
from orders
left join payments using (order_id)

Kernkonzepte

#Deklarative SQL-Modellierung mit ref() & source()

Erstellung von Transformationsmodellen mit Abhängigkeitsauflösung:

-- models/marts/core/fct_customer_orders.sql
{{
  config(
    materialized = 'incremental',
    unique_key = 'order_id',
    on_schema_change = 'fail'
  )
}}

with orders as (
    select * from {{ ref('stg_orders') }}
    {% if is_incremental() %}
      where order_date >= (select coalesce(max(order_date), '1970-01-01') from {{ this }})
    {% endif %}
),

customers as (
    select * from {{ ref('stg_customers') }}
)

select
    o.order_id,
    o.customer_id,
    c.full_name as customer_name,
    o.order_date,
    o.total_amount_usd
from orders o
inner join customers c on o.customer_id = c.customer_id

#Schema-Tests & Dokumentation in YAML

Durchsetzung von Spaltenbeschränkungen und Dokumentation:

# models/marts/core/schema.yml
version: 2

models:
  - name: fct_customer_orders
    description: "Tägliche Kundenbestell-Faktentabelle, die Bestellungen aus Staging und Kundendimensionen kombiniert."
    columns:
      - name: order_id
        description: "Primärschlüssel für Bestellungen."
        tests:
          - unique
          - not_null

      - name: customer_id
        description: "Fremdschlüssel, der auf Staging-Kunden verweist."
        tests:
          - not_null
          - relationships:
              to: ref('stg_customers')
              field: customer_id

      - name: total_amount_usd
        description: "Gesamttransaktionswert in USD."
        tests:
          - not_null

#Jinja-Makros für DRY wiederverwendbare Logik

Erstellung benutzerdefinierter wiederverwendbarer SQL-Hilfsfunktionen:

-- macros/cents_to_dollars.sql
{% macro cents_to_dollars(column_name, decimal_places=2) -%}
    round(cast(({{ column_name }} / 100.0) as numeric), {{ decimal_places }})
{%- endmacro %}

-- Verwendung im Modell:
select
    id,
    {{ cents_to_dollars('amount_in_cents') }} as amount_usd
from {{ ref('stg_payments') }}

Häufige Muster

Inkrementelle Modelle mit Zeitstempelfilterung

Problem: Der vollständige Neuaufbau von Tabellen mit Milliarden Zeilen bei jedem dbt-Lauf ist langsam und teuer.

Lösung: Verwende incremental-Materialisierung mit is_incremental():

{{ config(
    materialized='incremental',
    unique_key='event_id'
) }}

select * from {{ source('raw', 'events') }}

{% if is_incremental() %}
  -- Nur Zeilen abfragen, die nach dem aktuellsten Event in der Zieltabelle erstellt wurden
  where event_timestamp > (select max(event_timestamp) from {{ this }})
{% endif %}

Best Practices (2026)

  • Tun: Organisiere Projekte in standardisierte Schichten: staging (1:1 mit Rohquellen), intermediate und marts.
  • Tun: Verwende immer {{ ref('model_name') }} und {{ source('source_name', 'table_name') }}, um die DAG-Abhängigkeit zu erhalten.
  • Tun: Implementiere inkrementelle Modelle (materialized='incremental') für Faktentabellen mit Millionen von Zeilen.
  • Tun: Führe dbt test in CI-Pipelines bei jedem Pull-Request aus, um Schema-Regressionen zu erkennen.
  • Nicht tun: Schreibe rohe Datenbanktabellenreferenzen (z.B. analytics.raw.users); verwende immer source() oder ref().
  • Nicht tun: Führe Geschäftslogik in Staging-Modellen aus; Staging sollte nur Spalten bereinigen, umwandeln und umbenennen.
  • Nicht tun: Hartcodiere Umgebungen (dev vs. prod); verwende target.name-Bedingungen in profiles.yml.

Fehlerbehebung

FehlerUrsacheLösung
Compilation Error: Model '...' depends on a node named '...' which was not foundTippfehler in {{ ref('model_name') }} oder Modelldatei fehlt.Überprüfe, ob der Modellname mit dem referenzierten String exakt übereinstimmt.
dbt test failed: unique constraint violatedDoppelte Schlüssel durch nicht-eindeutige Join-Bedingung.Untersuche doppelte Schlüssel im kompilierten SQL in target/compiled/.
Schema change error during incremental runUpstream-Modell hat Spalten hinzugefügt/entfernt, die die bestehende inkrementelle Tabelle brechen.Führe einmalig --full-refresh aus, um das Schema neu aufzubauen: dbt run --full-refresh.

Referenzen

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

G1Joshi/Agent-Skills

Expert Dask distributed computing assistance covering Dask DataFrames, Arrays, Futures, and cluster scaling. Use when analyzing datasets too large for pandas on a single machine or multi-node cluster.

G1Joshi/Agent-Skills

Expert JAX assistance covering Autograd, XLA compilation (`jit`), vectorization (`vmap`), and parallelization (`pmap`). Use when building high-performance numerical computing and cutting-edge deep learning research.

G1Joshi/Agent-Skills

Expert Ray distributed computing assistance covering Ray Core (actors, tasks), Ray Train, Ray Tune, and Ray Serve. Use when scaling Python compute and ML training across multi-node clusters.

G1Joshi/Agent-Skills

Expert Git version control assistance covering branching, interactive rebase, cherry-pick, submodules, worktrees, and conflict resolution. Use when managing source code history and collaboration workflows.

G1Joshi/Agent-Skills

Expert K9s CLI assistance covering terminal Kubernetes cluster navigation, real-time log streaming, port forwarding, and pod debugging. Use when managing and troubleshooting Kubernetes clusters with speed.

G1Joshi/Agent-Skills

Expert SWC assistance covering high-performance Rust-based JavaScript/TypeScript compilation, .swcrc configuration, Jest testing via @swc/jest, and minification. Use when replacing Babel with SWC for faster builds, accelerating test execution, or compiling modern ECMAScript features.

G1Joshi/Agent-Skills

Expert Tig assistance covering text-mode interface for Git, interactive staging, commit graph visualization, diff exploration, and blame navigation. Use when navigating Git commit history in the terminal, staging hunks interactively, browsing file changes, or reviewing revisions.

G1Joshi/Agent-Skills

Expert Vim assistance covering modal editing, .vimrc configuration, registers, macros, search/replace, and plugin management via vim-plug. Use when editing text efficiently in terminal environments, writing Vimscript, recording macros, or configuring core Vim settings.

G1Joshi/Agent-Skills

Expert Zed editor assistance covering high-performance Rust-based text editing, multi-buffer editing, language server protocols (LSP), and AI assistant integrations. Use when configuring Zed settings.json, setting up language extensions, collaborating in real-time channels, or optimizing editor startup speed.

G1Joshi/Agent-Skills

Expert Zsh assistance covering shell customization, Oh My Zsh plugins, Zinit plugin manager, prompt engineering (Starship/Powerlevel10k), and shell scripting. Use when configuring .zshrc, writing Zsh automation scripts, optimizing shell startup time, or configuring tab-completion.

G1Joshi/Agent-Skills

Expert [skill-name] assistance covering [feature 1], [feature 2], and [feature 3]. Use when [working with X], [debugging Y], or [implementing Z].

Verwandte Skills