Skip to main content

data-engineering-command-center

Complete methodology for designing, building, operating, and scaling data pipelines and infrastructure. Zero dependencies — pure agent skill.

Informações da origem

Repositório
modbender/skill-library-mcp
Última atividade na origem
6 de março de 2026 às 18:33
Idioma detectado do SKILL.md
inglês
Estrelas
12
Forks
3

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
Data Engineering Command Center
description
Complete methodology for designing, building, operating, and scaling data pipelines and infrastructure. Zero dependencies — pure agent skill.
# Data Engineering Command Center Complete methodology for designing, building, operating, and scaling data pipelines and infrastructure. Zero dependencies — pure agent skill. --- ## Phase 1: Data Architecture Assessment Before building anything, understand the landscape. ### Architecture Brief ```yaml project_name: "" business_context: "" data_consumers: - team: "" use_case: "" # analytics | ML | operational | reporting | reverse-ETL latency_requirement: "" # real-time (<1s) | near-real-time (<5min) | batch (hourly+) query_pattern: "" # ad-hoc | scheduled | API | dashboard current_state: sources: [] # list every system producing data storage: [] # where data lives today pain_points: [] # what's broken, slow, unreliable data_volume: current_gb_per_day: 0 growth_rate_percent: 0 retention_months: 0 constraints: budget_monthly_usd: 0 team_size: 0 skill_level: "" # junior | mid | senior | mixed compliance: [] # GDPR, HIPAA, SOX, PCI, none cloud_provider: "" # AWS | GCP | Azure | multi | on-prem ``` ### Architecture Pattern Decision Matrix | Signal | Pattern | When to Use | |--------|---------|-------------| | All consumers need data hourly+ | **Batch ETL** | Reporting, warehousing, most analytics | | Some need <5 min latency | **Micro-batch** | Dashboard freshness, near-real-time analytics | | Events need <1s processing | **Streaming** | Fraud detection, real-time pricing, alerts | | Need both batch + streaming | **Lambda** | When batch accuracy + real-time speed both matter | | Want to simplify Lambda | **Kappa** | When you can reprocess from stream replay | | Data lake + warehouse combined | **Lakehouse** | When you need both cheap storage + fast SQL | | Sources change independently | **Data Mesh** | Large orgs, domain-owned data, >5 teams | | ML is primary consumer | **Feature Store** | ML-heavy orgs with feature reuse needs | ### Technology Selection Guide #### Orchestration | Tool | Best For | Avoid When | |------|----------|------------| | **Airflow** | Complex DAGs, Python-native teams, mature ecosystem | Simple pipelines (<5 tasks) | | **Dagster** | Software-defined assets, strong typing, dev experience | Legacy team resistant to new paradigms | | **Prefect** | Dynamic workflows, cloud-native, Python-first | Need on-prem with no cloud dependency | | **dbt** | SQL transformations, ELT, analytics engineering | Non-SQL transforms, streaming | | **Temporal** | Long-running workflows, retry-heavy, microservices | Simple ETL, small teams | | **Cron + scripts** | <3 pipelines, solo engineer, simple schedules | Anything with dependencies or retries | #### Processing | Tool | Best For | Avoid When | |------|----------|------------| | **Spark** | >100GB, complex transforms, ML pipelines | <10GB (overkill), real-time streaming | | **DuckDB** | Local analytics, <100GB, SQL on files | Distributed processing, production streaming | | **Polars** | Single-node, Rust-speed, <50GB, DataFrames | Distributed, need Spark ecosystem | | **Pandas** | <1GB, quick analysis, prototyping | Production pipelines, anything >5GB | | **Flink** | True streaming, event-time processing | Batch-only, small team (steep learning curve) | | **SQL (warehouse)** | ELT in Snowflake/BigQuery/Redshift | Complex ML transforms, binary data | #### Storage | Tool | Best For | Avoid When | |------|----------|------------| | **Snowflake** | Analytics, separation of compute/storage, multi-cloud | Tight budget, real-time OLTP | | **BigQuery** | GCP-native, serverless, large-scale analytics | Multi-cloud, need fine-grained cost control | | **Redshift** | AWS-native, existing AWS ecosystem | Elastic scaling needs, multi-cloud | | **Databricks** | ML + analytics unified, Spark-native, lakehouse | Pure SQL analytics, small data | | **PostgreSQL** | OLTP + light analytics, <500GB, budget-conscious | >1TB analytics, real-time dashboards on large data | | **S3/GCS/ADLS** | Raw data lake, cheap storage, any format | Direct SQL queries (need compute layer) | | **Delta Lake/Iceberg** | Table format on data lake, ACID on files | Simple file storage, no lakehouse need | --- ## Phase 2: Data Modeling ### Modeling Methodology Decision | Approach | Best For | Key Concept | |----------|----------|-------------| | **Kimball (Dimensional)** | BI/reporting, star schemas | Facts + Dimensions, business-process-centric | | **Inmon (3NF)** | Enterprise data warehouse, single source of truth | Normalized, subject-area-centric | | **Data Vault 2.0** | Agile warehousing, auditability, multiple sources | Hubs + Links + Satellites, insert-only | | **One Big Table (OBT)** | Simple analytics, few joins, dashboard performance | Pre-joined, denormalized, fast queries | | **Activity Schema** | Event analytics, product analytics | Entity + Activity + Feature columns | ### Dimensional Model Template ```yaml fact_table: name: "fact_[business_process]" grain: "" # one row = one [what]? grain_statement: "One row per [transaction/event/snapshot] at [time grain]" measures: - name: "" type: "" # additive | semi-additive | non-additive aggregation: "" # SUM | AVG | COUNT | MIN | MAX | COUNT DISTINCT business_definition: "" degenerate_dimensions: [] # IDs stored in fact (order_number, invoice_id) foreign_keys: [] # links to dimension tables dimensions: - name: "dim_[entity]" type: "" # Type 1 (overwrite) | Type 2 (history) | Type 3 (previous value) natural_key: "" # business key from source surrogate_key: "" # warehouse-generated key attributes: - name: "" source: "" scd_type: "" # 1 | 2 | 3 hierarchy: [] # e.g., [country, region, city, store] ``` ### SCD Type Decision Guide | Scenario | SCD Type | Implementation | |----------|----------|----------------| | Don't care about history | **Type 1** | UPDATE in place | | Need full history | **Type 2** | New row + valid_from/valid_to + is_current flag | | Only need previous value | **Type 3** | Add previous_[column] | | Track changes with timestamps | **Type 4** | Mini-dimension (history table) | | Hybrid: some attrs Type 1, some Type 2 | **Type 6** | Combine 1+2+3 in one table | **Default recommendation:** Type 2 for anything business-critical (customer status, product price, employee department). Type 1 for everything else. ### Naming Conventions | Object | Convention | Example | |--------|-----------|---------| | Raw/staging tables | `raw_[source]_[table]` | `raw_stripe_payments` | | Staging models | `stg_[source]__[entity]` | `stg_stripe__payments` | | Intermediate models | `int_[entity]_[verb]` | `int_orders_pivoted` | | Mart/fact tables | `fct_[business_process]` | `fct_orders` | | Dimension tables | `dim_[entity]` | `dim_customers` | | Metrics/aggregates | `mrt_[domain]_[metric]` | `mrt_sales_daily` | | Snapshots | `snp_[entity]_[grain]` | `snp_inventory_daily` | | Columns: boolean | `is_[state]` or `has_[thing]` | `is_active`, `has_subscription` | | Columns: timestamp | `[event]_at` | `created_at`, `shipped_at` | | Columns: date | `[event]_date` | `order_date` | | Columns: ID | `[entity]_id` | `customer_id` | | Columns: amount | `[thing]_amount` | `order_amount` | | Columns: count | `[thing]_count` | `line_item_count` | --- ## Phase 3: Pipeline Design Patterns ### Universal Pipeline Template ```yaml pipeline: name: "" owner: "" schedule: "" # cron expression sla_minutes: 0 # max acceptable runtime tier: "" # 1 (critical) | 2 (important) | 3 (nice-to-have) extract: source_system: "" connection: "" strategy: "" # full | incremental | CDC | log-based incremental_key: "" # column for incremental (e.g., updated_at) watermark_storage: "" # where to persist last-extracted position transform: engine: "" # SQL | Spark | Python | dbt stages: - name: "clean" operations: [] # dedupe, null handling, type casting, trimming - name: "conform" operations: [] # standardize codes, currencies, timezones - name: "enrich" operations: [] # lookups, calculations, derived fields - name: "aggregate" operations: [] # rollups, pivots, window functions load: target_system: "" strategy: "" # append | upsert | merge | truncate-reload | partition-swap merge_keys: [] partition_key: "" clustering_keys: [] quality_gates: pre_load: [] # checks before writing post_load: [] # checks after writing error_handling: strategy: "" # fail-fast | dead-letter | retry | skip-and-alert max_retries: 3 retry_delay_seconds: 300 alert_channels: [] ``` ### Extraction Strategy Decision Tree ``` Is the source database? ├── Yes → Does it support CDC? │ ├── Yes → Use CDC (Debezium, AWS DMS, Fivetran) │ │ Best for: high-volume, low-latency, minimal source impact │ └── No → Does it have a reliable updated_at column? │ ├── Yes → Incremental extraction on updated_at │ │ ⚠️ Won't catch hard deletes — add periodic full reconciliation │ └── No → Full extraction │ Only viable for small tables (<1M rows) ├── Is it an API? │ ├── Supports webhooks? → Event-driven ingestion │ ├── Has cursor/pagination? → Incremental with cursor bookmark │ └── No pagination? → Full pull with rate-limit handling ├── Is it files (S3, SFTP, email)? │ └── Event-triggered (S3 notification, file watcher) │ Validate: schema, completeness, filename pattern └── Is it streaming (Kafka, Kinesis, Pub/Sub)? └── Consumer group with offset management Key decisions: at-least-once vs exactly-once, consumer lag alerting ``` ### Load Strategy Decision | Strategy | When | Trade-off | |----------|------|-----------| | **Append** | Event/log data, immutable facts | Simple but grows forever — partition + retain | | **Upsert/Merge** | Dimension updates, SCD Type 1 | Handles updates but slower on large tables | | **Truncate-Reload** | Small tables (<1M), reference data | Simple but window of missing data | | **Partition Swap** | Large fact tables, daily loads | Atomic, fast, but needs partition alignment | | **Soft Delete** | Need audit trail of deletions | Adds complexity to every downstream query | ### Idempotency Rules (NON-NEGOTIABLE) Every pipeline MUST be re-runnable without side effects: 1. **Use MERGE/UPSERT, never blind INSERT** for mutable data 2. **Partition-swap for immutable data** — drop partition + reload 3. **Store watermarks externally** — not in the pipeline code 4. **Dedup at ingestion** — use source natural keys 5. **Test by running twice** — output must be identical both times --- ## Phase 4: Data Quality Framework ### Quality Dimensions | Dimension | Definition | Example Check | |-----------|-----------|---------------| | **Completeness** | No missing values where required | `NOT NULL` on required fields, row count within range | | **Uniqueness** | No unexpected duplicates | Primary key uniqueness, natural key uniqueness | | **Validity** | Values within expected domain | Enum checks, range checks, regex patterns | | **Accuracy** | Data matches real-world truth | Cross-system reconciliation, manual spot checks |
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub