Data Pipeline Spec Skill

Design an ETL/ELT data pipeline specification.

Data Pipeline Spec Skill — The Skill Playground: pick the Executive Update skill, fill in a few notes, hit run, and watch a structured executive… (from the mohitagw15856/pm-claude-skills README)

From the mohitagw15856/pm-claude-skills README — shows the whole collection, not only this skill. · view on GitHub

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/data-pipeline-spec.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit mohitagw15856/pm-claude-skills/skills/data-pipeline-spec#main ~/.claude/skills/data-pipeline-spec

For one project only, change the path to .claude/skills/data-pipeline-spec.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Data Pipeline Spec Skill

Show the full text230 lines
namedescription
data-pipeline-specDesign an ETL/ELT data pipeline specification. Use when asked to design a data pipeline, spec an ETL or ELT process, document a data ingestion workflow, or plan a data integration. Produces a complete pipeline spec with sources, transforms, destinations, SLAs, error handling, and data quality rules.

Data Pipeline Spec Skill

This skill produces a complete data pipeline specification covering sources, transformations, destinations, scheduling, SLAs, error handling, data quality checks, and monitoring requirements. Output is ready for engineering handoff or architecture review.

Required Inputs

Ask the user for these if not provided:

  • Pipeline purpose — what business question or workflow does this pipeline serve?
  • Source systems — where does data come from? (databases, APIs, files, event streams)
  • Destination — where does data land? (data warehouse, data lake, downstream DB, reporting tool)
  • Transformation type — ETL (transform before loading) or ELT (load raw, transform in warehouse)?
  • Frequency / SLA — how often must data be fresh? (real-time / hourly / daily / weekly)
  • Volume estimate — approximate rows/events per run
  • Data quality requirements — completeness, deduplication, freshness, schema enforcement
  • Team or stack — any specific tools in use? (Airflow, dbt, Fivetran, Spark, Kafka, etc.)

Output Structure


Data Pipeline Spec: [Pipeline Name]

Purpose: [One sentence — what decision or workflow does this pipeline enable?] Type: [ETL / ELT / Streaming / Batch] Owner: [Team or individual] Version: [1.0] Date: [Date] Status: [Draft / Under Review / Approved]


1. Overview

[2–3 sentences describing the pipeline end-to-end: what data moves, from where to where, at what cadence, and why.]

Architecture diagram (text):

[Source A] ──┐
[Source B] ──┤──► [Ingestion Layer] ──► [Transform Layer] ──► [Destination] ──► [Consumers]
[Source C] ──┘

2. Sources

Source System Connection type Data format Update pattern Volume
[Source 1] [PostgreSQL / Salesforce / S3 / Kafka] [JDBC / REST API / SDK / Webhook] [JSON / CSV / Parquet / CDC] [Append / Full refresh / Incremental] [X rows/day]
[Source 2] [...] [...] [...] [...] [...]

Incremental key (if applicable): [The column used to identify new or changed records — e.g. updated_at, event_id]

Authentication: [API key / OAuth / IAM role / connection string — note where credentials are stored]


3. Ingestion Layer

Tool: [Fivetran / Airbyte / Kafka Connect / custom script / dbt source]

Ingestion method:

  • Full extract (full table refresh each run)
  • Incremental extract (only new/changed rows since last run)
  • CDC (change data capture from database transaction log)
  • Event streaming (continuous ingestion from Kafka/Kinesis)

Raw landing zone: [Where raw data lands before transformation — e.g. raw.salesforce_opportunities in Snowflake, S3 bucket s3://data-raw/crm/]

Schema handling: [Strict schema enforcement / Schema evolution allowed / Union schema]


4. Transformation Logic

List each transformation in execution order. For ELT pipelines, this is the dbt model or SQL layer.

Step Name Description Input Output Tool
1 [Deduplicate events] [Remove duplicate event rows based on event_id] raw.events staging.events_deduped [dbt / SQL / Spark]
2 [Join user profile] [Enrich events with user attributes from CRM] staging.events_deduped, raw.users staging.events_enriched [...]
3 [Aggregate to daily] [Roll up to user×day grain] staging.events_enriched mart.user_daily_activity [...]

Business logic rules:

  • [e.g. Revenue is recognised on payment_confirmed_at, not payment_initiated_at]
  • [e.g. Users in the [email protected] domain are excluded from all metrics]
  • [e.g. Currency conversion uses the ECB rate from the first business day of each month]

Slowly Changing Dimensions (SCD) — if applicable:

  • [e.g. users.plan_tier is SCD Type 2 — keep history of plan changes with valid_from / valid_to]

5. Destination

Destination System Schema / Table Write mode Consumers
[Primary] [Snowflake / BigQuery / Redshift / PostgreSQL] [analytics.mart_user_activity] [Append / Upsert / Full replace] [Looker / Metabase / downstream pipeline]
[Secondary] [...] [...] [...] [...]

Partitioning / Clustering: [e.g. Partitioned by event_date, clustered by user_id — reduces query cost for time-range scans]

Retention policy: [e.g. Raw data retained for 90 days; mart tables retained indefinitely]


6. Scheduling & SLAs

SLA Target Breach action
Data freshness [Data must be ≤ X hours old by HH:MM UTC] [Page on-call / alert Slack channel]
Pipeline completion [Must complete within X minutes of trigger] [Alert and auto-retry]
Availability [Pipeline must run successfully X% of days per month] [Incident review]

Schedule: [Cron expression and human description — e.g. 0 6 * * * — daily at 06:00 UTC]

Trigger type:

  • Time-based (cron)
  • Event-based (triggered by upstream pipeline success / file arrival / Kafka lag)
  • Manual (ad hoc runs only)

Backfill strategy: [How to reprocess historical data if the pipeline fails or logic changes — e.g. parameterised date range, full drop-and-reload]


7. Data Quality Rules

Check Table Rule Failure action
Completeness staging.events event_id IS NOT NULL — 100% of rows Block load / Alert
Uniqueness mart.user_daily_activity (user_id, date) must be unique Block load
Freshness mart.user_daily_activity max(event_date) >= CURRENT_DATE - 1 Alert
Volume staging.events Row count within ±20% of 7-day average Alert
Referential integrity staging.events All user_id values exist in users table Alert

DQ tool: [dbt tests / Great Expectations / Monte Carlo / custom SQL assertions]


8. Error Handling & Recovery

Retry policy: [e.g. 3 retries with exponential back-off: 5 min, 20 min, 60 min]

Failure modes and responses:

Failure Detection Response Owner
Source unavailable HTTP 5xx / connection timeout Retry 3×, then alert and skip run Data engineering
Schema change in source Column missing or type mismatch Block load, alert schema owner Data owner + engineering
DQ check fails dbt test failure / assertion error Block load for P1 checks; alert for P2 Data engineering
Partial load Row count < expected threshold Alert; do not publish to consumers until resolved Data engineering

Dead-letter queue: [Where failed records are routed for manual inspection — e.g. raw.dlq_events]


9. Monitoring & Observability

Metrics to track:

  • Pipeline run duration (p50, p95)
  • Rows processed per run
  • DQ check pass rate
  • Source freshness lag
  • Error rate per source

Alerting:

  • [Slack channel: #data-alerts]
  • [PagerDuty: data-on-call escalation for P1 SLA breaches]
  • [Dashboard: [link to monitoring dashboard]]

Logging: [What gets logged and where — e.g. Airflow task logs to CloudWatch, structured JSON to data lake]


10. Dependencies & Sequencing

Upstream dependencies: [Which pipelines or data sources must succeed before this pipeline runs?]

Downstream dependents: [Which dashboards, pipelines, or models depend on this pipeline's output?]

[upstream pipeline A] ──► THIS PIPELINE ──► [downstream dashboard B]
                                          └──► [downstream pipeline C]

Coordination mechanism: [Airflow DAG dependency / dbt ref() / event trigger / manual gate]


11. Security & Compliance

  • PII fields: [List columns containing PII — e.g. email, ip_address, name]
  • Masking / Pseudonymisation: [e.g. email hashed with SHA-256 before landing in mart layer]
  • Access control: [Who can query the destination tables? — e.g. Role-based access in Snowflake]
  • Data residency: [Which regions is data permitted to transit and rest in?]
  • Audit trail: [Is pipeline execution auditable for compliance purposes? Where are logs retained?]

Quality Checks

  • Every source has an incremental key or full-refresh justification
  • Business logic rules are documented, not just the SQL
  • SLAs are agreed with consumers, not set unilaterally by engineering
  • DQ checks cover completeness, uniqueness, freshness, and volume
  • Failure modes include a documented recovery owner
  • PII fields are identified and a treatment plan is specified

Anti-Patterns

  • Do not spec a pipeline without defining SLAs — "as fast as possible" is not an acceptable freshness target
  • Do not omit error handling and dead-letter queue strategy — every pipeline must specify what happens to failed records
  • Do not design idempotent loads without documenting the deduplication key — assume reruns will happen
  • Do not leave data quality rules implicit — schema validation, null checks, and referential integrity must be explicit
  • Do not ignore schema evolution — specify how upstream schema changes are detected and handled

Example Trigger Phrases

  • "Design a data pipeline for our Salesforce to Snowflake sync"
  • "Write a pipeline spec for ingesting Stripe events into our data warehouse"
  • "Build an ETL spec for our user activity data"
  • "Document our dbt pipeline from raw events to the analytics mart"
  • "Spec out the pipeline that feeds the executive dashboard"
1---
2name: data-pipeline-spec
3description: "Design an ETL/ELT data pipeline specification. Use when asked to design a data pipeline, spec an ETL or ELT process, document a data ingestion workflow, or plan a data integration. Produces a complete pipeline spec with sources, transforms, destinations, SLAs, error handling, and data quality rules."
4---
5 
6# Data Pipeline Spec Skill
7 
8This skill produces a complete data pipeline specification covering sources, transformations, destinations, scheduling, SLAs, error handling, data quality checks, and monitoring requirements. Output is ready for engineering handoff or architecture review.
9 
10## Required Inputs
11 
12Ask the user for these if not provided:
13- **Pipeline purpose** — what business question or workflow does this pipeline serve?
14- **Source systems** — where does data come from? (databases, APIs, files, event streams)
15- **Destination** — where does data land? (data warehouse, data lake, downstream DB, reporting tool)
16- **Transformation type** — ETL (transform before loading) or ELT (load raw, transform in warehouse)?
17- **Frequency / SLA** — how often must data be fresh? (real-time / hourly / daily / weekly)
18- **Volume estimate** — approximate rows/events per run
19- **Data quality requirements** — completeness, deduplication, freshness, schema enforcement
20- **Team or stack** — any specific tools in use? (Airflow, dbt, Fivetran, Spark, Kafka, etc.)
21 
22## Output Structure
23 
24---
25 
26# Data Pipeline Spec: [Pipeline Name]
27 
28**Purpose:** [One sentence — what decision or workflow does this pipeline enable?]
29**Type:** [ETL / ELT / Streaming / Batch]
30**Owner:** [Team or individual]
31**Version:** [1.0]
32**Date:** [Date]
33**Status:** [Draft / Under Review / Approved]
34 
35---
36 
37## 1. Overview
38 
39[2–3 sentences describing the pipeline end-to-end: what data moves, from where to where, at what cadence, and why.]
40 
41**Architecture diagram (text):**
42 
43```
44[Source A] ──┐
45[Source B] ──┤──► [Ingestion Layer] ──► [Transform Layer] ──► [Destination] ──► [Consumers]
46[Source C] ──┘
47```
48 
49---
50 
51## 2. Sources
52 
53| Source | System | Connection type | Data format | Update pattern | Volume |
54|---|---|---|---|---|---|
55| [Source 1] | [PostgreSQL / Salesforce / S3 / Kafka] | [JDBC / REST API / SDK / Webhook] | [JSON / CSV / Parquet / CDC] | [Append / Full refresh / Incremental] | [X rows/day] |
56| [Source 2] | [...] | [...] | [...] | [...] | [...] |
57 
58**Incremental key (if applicable):** [The column used to identify new or changed records — e.g. `updated_at`, `event_id`]
59 
60**Authentication:** [API key / OAuth / IAM role / connection string — note where credentials are stored]
61 
62---
63 
64## 3. Ingestion Layer
65 
66**Tool:** [Fivetran / Airbyte / Kafka Connect / custom script / dbt source]
67 
68**Ingestion method:**
69- [ ] Full extract (full table refresh each run)
70- [ ] Incremental extract (only new/changed rows since last run)
71- [ ] CDC (change data capture from database transaction log)
72- [ ] Event streaming (continuous ingestion from Kafka/Kinesis)
73 
74**Raw landing zone:** [Where raw data lands before transformation — e.g. `raw.salesforce_opportunities` in Snowflake, S3 bucket `s3://data-raw/crm/`]
75 
76**Schema handling:** [Strict schema enforcement / Schema evolution allowed / Union schema]
77 
78---
79 
80## 4. Transformation Logic
81 
82List each transformation in execution order. For ELT pipelines, this is the dbt model or SQL layer.
83 
84| Step | Name | Description | Input | Output | Tool |
85|---|---|---|---|---|---|
86| 1 | [Deduplicate events] | [Remove duplicate event rows based on event_id] | `raw.events` | `staging.events_deduped` | [dbt / SQL / Spark] |
87| 2 | [Join user profile] | [Enrich events with user attributes from CRM] | `staging.events_deduped`, `raw.users` | `staging.events_enriched` | [...] |
88| 3 | [Aggregate to daily] | [Roll up to user×day grain] | `staging.events_enriched` | `mart.user_daily_activity` | [...] |
89 
90**Business logic rules:**
91- [e.g. Revenue is recognised on `payment_confirmed_at`, not `payment_initiated_at`]
92- [e.g. Users in the `[email protected]` domain are excluded from all metrics]
93- [e.g. Currency conversion uses the ECB rate from the first business day of each month]
94 
95**Slowly Changing Dimensions (SCD) — if applicable:**
96- [e.g. `users.plan_tier` is SCD Type 2 — keep history of plan changes with `valid_from` / `valid_to`]
97 
98---
99 
100## 5. Destination
101 
102| Destination | System | Schema / Table | Write mode | Consumers |
103|---|---|---|---|---|
104| [Primary] | [Snowflake / BigQuery / Redshift / PostgreSQL] | [`analytics.mart_user_activity`] | [Append / Upsert / Full replace] | [Looker / Metabase / downstream pipeline] |
105| [Secondary] | [...] | [...] | [...] | [...] |
106 
107**Partitioning / Clustering:** [e.g. Partitioned by `event_date`, clustered by `user_id` — reduces query cost for time-range scans]
108 
109**Retention policy:** [e.g. Raw data retained for 90 days; mart tables retained indefinitely]
110 
111---
112 
113## 6. Scheduling & SLAs
114 
115| SLA | Target | Breach action |
116|---|---|---|
117| **Data freshness** | [Data must be ≤ X hours old by HH:MM UTC] | [Page on-call / alert Slack channel] |
118| **Pipeline completion** | [Must complete within X minutes of trigger] | [Alert and auto-retry] |
119| **Availability** | [Pipeline must run successfully X% of days per month] | [Incident review] |
120 
121**Schedule:** [Cron expression and human description — e.g. `0 6 * * *` — daily at 06:00 UTC]
122 
123**Trigger type:**
124- [ ] Time-based (cron)
125- [ ] Event-based (triggered by upstream pipeline success / file arrival / Kafka lag)
126- [ ] Manual (ad hoc runs only)
127 
128**Backfill strategy:** [How to reprocess historical data if the pipeline fails or logic changes — e.g. parameterised date range, full drop-and-reload]
129 
130---
131 
132## 7. Data Quality Rules
133 
134| Check | Table | Rule | Failure action |
135|---|---|---|---|
136| Completeness | `staging.events` | `event_id IS NOT NULL` — 100% of rows | Block load / Alert |
137| Uniqueness | `mart.user_daily_activity` | `(user_id, date)` must be unique | Block load |
138| Freshness | `mart.user_daily_activity` | `max(event_date) >= CURRENT_DATE - 1` | Alert |
139| Volume | `staging.events` | Row count within ±20% of 7-day average | Alert |
140| Referential integrity | `staging.events` | All `user_id` values exist in `users` table | Alert |
141 
142**DQ tool:** [dbt tests / Great Expectations / Monte Carlo / custom SQL assertions]
143 
144---
145 
146## 8. Error Handling & Recovery
147 
148**Retry policy:** [e.g. 3 retries with exponential back-off: 5 min, 20 min, 60 min]
149 
150**Failure modes and responses:**
151 
152| Failure | Detection | Response | Owner |
153|---|---|---|---|
154| Source unavailable | HTTP 5xx / connection timeout | Retry 3×, then alert and skip run | Data engineering |
155| Schema change in source | Column missing or type mismatch | Block load, alert schema owner | Data owner + engineering |
156| DQ check fails | dbt test failure / assertion error | Block load for P1 checks; alert for P2 | Data engineering |
157| Partial load | Row count < expected threshold | Alert; do not publish to consumers until resolved | Data engineering |
158 
159**Dead-letter queue:** [Where failed records are routed for manual inspection — e.g. `raw.dlq_events`]
160 
161---
162 
163## 9. Monitoring & Observability
164 
165**Metrics to track:**
166- Pipeline run duration (p50, p95)
167- Rows processed per run
168- DQ check pass rate
169- Source freshness lag
170- Error rate per source
171 
172**Alerting:**
173- [Slack channel: #data-alerts]
174- [PagerDuty: data-on-call escalation for P1 SLA breaches]
175- [Dashboard: [link to monitoring dashboard]]
176 
177**Logging:** [What gets logged and where — e.g. Airflow task logs to CloudWatch, structured JSON to data lake]
178 
179---
180 
181## 10. Dependencies & Sequencing
182 
183**Upstream dependencies:** [Which pipelines or data sources must succeed before this pipeline runs?]
184 
185**Downstream dependents:** [Which dashboards, pipelines, or models depend on this pipeline's output?]
186 
187```
188[upstream pipeline A] ──► THIS PIPELINE ──► [downstream dashboard B]
189 └──► [downstream pipeline C]
190```
191 
192**Coordination mechanism:** [Airflow DAG dependency / dbt ref() / event trigger / manual gate]
193 
194---
195 
196## 11. Security & Compliance
197 
198- **PII fields:** [List columns containing PII — e.g. `email`, `ip_address`, `name`]
199- **Masking / Pseudonymisation:** [e.g. email hashed with SHA-256 before landing in mart layer]
200- **Access control:** [Who can query the destination tables? — e.g. Role-based access in Snowflake]
201- **Data residency:** [Which regions is data permitted to transit and rest in?]
202- **Audit trail:** [Is pipeline execution auditable for compliance purposes? Where are logs retained?]
203 
204---
205 
206## Quality Checks
207 
208- [ ] Every source has an incremental key or full-refresh justification
209- [ ] Business logic rules are documented, not just the SQL
210- [ ] SLAs are agreed with consumers, not set unilaterally by engineering
211- [ ] DQ checks cover completeness, uniqueness, freshness, and volume
212- [ ] Failure modes include a documented recovery owner
213- [ ] PII fields are identified and a treatment plan is specified
214 
215## Anti-Patterns
216 
217- [ ] Do not spec a pipeline without defining SLAs — "as fast as possible" is not an acceptable freshness target
218- [ ] Do not omit error handling and dead-letter queue strategy — every pipeline must specify what happens to failed records
219- [ ] Do not design idempotent loads without documenting the deduplication key — assume reruns will happen
220- [ ] Do not leave data quality rules implicit — schema validation, null checks, and referential integrity must be explicit
221- [ ] Do not ignore schema evolution — specify how upstream schema changes are detected and handled
222 
223## Example Trigger Phrases
224 
225- "Design a data pipeline for our Salesforce to Snowflake sync"
226- "Write a pipeline spec for ingesting Stripe events into our data warehouse"
227- "Build an ETL spec for our user activity data"
228- "Document our dbt pipeline from raw events to the analytics mart"
229- "Spec out the pipeline that feeds the executive dashboard"
230 

Discussion

Alternatives

Also in Data pipelinesSee all 533 in Development →