airflow-dag-patterns — Claude Code skill: install guide
This skill helps design Apache Airflow DAGs, connect tasks, and test pipelines. Use it for ETL workflows, batch jobs, and failed-run debugging.
/plugin marketplace add wshobson/agents
/plugin install data-engineering@claude-code-workflowsWhat airflow-dag-patterns does
airflow-dag-patterns covers Apache Airflow DAG structure, task dependencies, operators, and sensors. It shows linear chains, fan-out, and fan-in, with design guidance for idempotent, atomic, incremental, and observable tasks.
The skill includes dags/example_dag.py with PythonOperator, EmptyOperator, a schedule, retries, and an active-run limit. It also covers the TaskFlow API, timeouts, mode='reschedule' for sensors, unit and integration tests, deployment, and failed DAG runs. Detailed patterns are stored in references/details.md.
Install it when an agent needs to write or review Apache Airflow DAGs. It adds little value to a project that does not use Airflow.
What it helps with
- design task dependencies in a DAG
- build a scheduled ETL pipeline
- add Apache Airflow operators and sensors
- prepare tests for a DAG
- debug a failed DAG run
Example prompts for the agent
- Create an ETL DAG in `dags/example_dag.py` with task dependencies and retries.
- Review this DAG for idempotency, timeouts, and correct sensor usage.
- Debug this failed DAG run using the patterns in `references/details.md`.
How to install airflow-dag-patterns
1Plugin marketplace
/plugin marketplace add wshobson/agents/plugin install data-engineering@claude-code-workflowsThis installs the whole data-engineering plugin with all its skills
2Skills CLI (Vercel)
npx skills add wshobson/agents --skill airflow-dag-patterns -a claude-code3Manually: put the files in place
~/.claude/skills/airflow-dag-patterns/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/airflow-dag-patterns/
1Skills CLI (Vercel)
npx skills add wshobson/agents --skill airflow-dag-patterns -a codex2Manually: put the files in place
.agents/skills/airflow-dag-patterns/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add wshobson/agents --skill airflow-dag-patterns -a cursor2Manually: put the files in place
.cursor/skills/airflow-dag-patterns/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install wshobson/agents airflow-dag-patterns2Manually: put the files in place
.github/skills/airflow-dag-patterns/SKILL.mdPlatform CLI
gemini skills install https://github.com/wshobson/agents --path plugins/data-engineering/skills/airflow-dag-patternsManually: put the files in place
.devin/skills/airflow-dag-patterns/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set213
The whole set →Similar
Questions about airflow-dag-patterns
How do I install airflow-dag-patterns in Claude Code?
Run npx skills add wshobson/agents --skill airflow-dag-patterns -a claude-code. The skill file is placed at ~/.claude/skills/airflow-dag-patterns/SKILL.md.
What does airflow-dag-patterns do?
It helps create Apache Airflow DAGs, define task dependencies, choose operators and sensors, test pipelines, and prepare them for deployment.
Which platforms support airflow-dag-patterns?
The skill targets Claude Code, Codex, and Cursor. For Codex, run npx skills add wshobson/agents --skill airflow-dag-patterns -a codex; for Cursor, run npx skills add wshobson/agents --skill airflow-dag-patterns -a cursor.
Source text
SKILL.md · MIT
---
name: airflow-dag-patterns
description: Build production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. Use when creating data pipelines, orchestrating workflows, or scheduling batch jobs.
---
# Apache Airflow DAG Patterns
Production-ready patterns for Apache Airflow including DAG design, operators, sensors, testing, and deployment strategies.
## When to Use This Skill
- Creating data pipeline orchestration with Airflow
- Designing DAG structures and dependencies
- Implementing custom operators and sensors
- Testing Airflow DAGs locally
- Setting up Airflow in production
- Debugging failed DAG runs
## Core Concepts
### 1. DAG Design Principles
| Principle | Description |
| --------------- | ----------------------------------- |
| **Idempotent** | Running twice produces same result |
| **Atomic** | Tasks succeed or fail completely |
| **Incremental** | Process only new/changed data |
| **Observable** | Logs, metrics, alerts at every step |
### 2. Task Dependencies
```python
# Linear
task1 >> task2 >> task3
# Fan-out
task1 >> [task2, task3, task4]
# Fan-in
[task1, task2, task3] >> task4
# Complex
task1 >> task2 >> task4
task1 >> task3 >> task4
```
## Quick Start
```python
# dags/example_dag.py
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.python import PythonOperator
from airflow.operators.empty import EmptyOperator
default_args = {
'owner': 'data-team',
'depends_on_past': False,
'email_on_failure': True,
'email_on_retry': False,
'retries': 3,
'retry_delay': timedelta(minutes=5),
'retry_exponential_backoff': True,
'max_retry_delay': timedelta(hours=1),
}
with DAG(
dag_id='example_etl',
default_args=default_args,
description='Example ETL pipeline',
schedule='0 6 * * *', # Daily at 6 AM
start_date=datetime(2024, 1, 1),
catchup=False,
tags=['etl', 'example'],
max_active_runs=1,
) as dag:
start = EmptyOperator(task_id='start')
def extract_data(**context):
execution_date = context['ds']
# Extract logic here
return {'records': 1000}
extract = PythonOperator(
task_id='extract',
python_callable=extract_data,
)
end = EmptyOperator(task_id='end')
start >> extract >> end
```
## Detailed patterns and worked examples
Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.
## Best Practices
### Do's
- **Use TaskFlow API** - Cleaner code, automatic XCom
- **Set timeouts** - Prevent zombie tasks
- **Use `mode='reschedule'`** - For sensors, free up workers
- **Test DAGs** - Unit tests and integration tests
- **Idempotent tasks** - Safe to retry
### Don'ts
- **Don't use `depends_on_past=True`** - Creates bottlenecks
- **Don't hardcode dates** - Use `{{ ds }}` macros
- **Don't use global state** - Tasks should be stateless
- **Don't skip catchup blindly** - Understand implications
- **Don't put heavy logic in DAG file** - Import from modules
© Seth Hobson · MIT · wshobson/agents