senior-data-engineer

Build and validate data pipelines with Airflow, dbt, Spark, and Kafka.

1|Updated May 10, 2026
One-click install
npx skills add https://github.com/Tgoldi/claude-skills --skill senior-data-engineer-tgoldi
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: senior-data-engineer
Source: https://github.com/Tgoldi/claude-skills/tree/main/senior-data-engineer
Command: npx skills add https://github.com/Tgoldi/claude-skills --skill senior-data-engineer-tgoldi

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires great_expectations, and includes scripts (resource) and references (resource) components.

What problem does it solve? Designing, building, and maintaining production data pipelines requires coordinating many tools—Airflow for orchestration, dbt for transformation, Spark for processing, Kafka for streaming, and Great Expectations for quality. This Skill provides end-to-end workflows, architecture decision frameworks, and troubleshooting guidance so you can ship reliable ETL/ELT systems without reinventing patterns. ## Core Features & Use Cases - Pipeline Workflows: Step-by-step guides for batch ETL (PostgreSQL → dbt → Snowflake), real-time streaming (Kafka → Spark Structured Streaming → Delta Lake), and data quality frameworks with Great Expectations and dbt tests. - Architecture Decision Framework: Decision trees and comparison tables for batch vs streaming, Lambda vs Kappa, and warehouse vs lakehouse architectures. - Reference Documentation: Deep-dive references on data modeling (star schema, SCD Types 1-6, Data Vault) and pipeline architecture (exactly-once semantics, DLQs, CDC, backfills). - Use Case: You need to build a daily incremental pipeline from Postgres to Snowflake with data quality gates—follow Workflow 1 to generate the Airflow DAG, dbt incremental models, and schema tests, then validate with the data quality validator script. ## Quick Start Ask the assistant to design a daily incremental ETL pipeline from PostgreSQL to Snowflake using Airflow and dbt with data quality tests.

Frequently Asked Questions about senior-data-engineer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build an incremental ETL pipeline with Airflow and dbt?

Define the source schema, generate an Airflow DAG for extraction, create dbt staging and incremental mart models with a unique_key and is_incremental filter, then add schema tests for uniqueness, not-null, and accepted ranges. Schedule the DAG with retries and alerting.

Should I use batch or streaming for my data pipeline?

Choose streaming when you need second-to-minute latency on continuous event data, and batch for hourly or daily transformations of large historical datasets. Batch is more cost-effective; streaming requires careful watermarking and exactly-once design.

What is the difference between Lambda and Kappa architecture?

Lambda maintains separate batch and speed layers with merged serving views, suiting ML training plus real-time serving. Kappa uses a single stream-processing path with replay from an immutable Kafka log, reducing code duplication when all logic can be expressed as streams.

How do I implement Slowly Changing Dimensions in dbt?

Use an incremental model with the check strategy and check_cols listing tracked attributes, generating surrogate keys and effective start/end dates. Type 2 inserts a new row per change while closing the prior record; Type 1 simply overwrites in place.

Why is my Spark job running out of memory?

OOM errors usually come from undersized executor memory or skewed partitions. Increase spark.executor.memory, raise spark.sql.shuffle.partitions to spread data, enable Kryo serialization, and repartition skewed join keys before wide transformations.

How do I handle late-arriving data in Spark Structured Streaming?

Add a watermark with withWatermark on the event-time column, such as 10 minutes, so state is dropped after the threshold. Records arriving later than the watermark are discarded; route them to a dead letter queue via foreachBatch if they must be captured.