Agent skill
airflow-workflows
Apache Airflow DAG design, operators, and scheduling best practices.
Install this agent skill to your Project
npx add-skill https://github.com/timequity/plugins/tree/main/vibe-coder/skills/data/airflow-workflows
SKILL.md
Airflow Workflows
DAG Structure
from airflow import DAG
from airflow.operators.python import PythonOperator
from airflow.providers.common.sql.operators.sql import SQLExecuteQueryOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'data-team',
'depends_on_past': False,
'email_on_failure': True,
'retries': 3,
'retry_delay': timedelta(minutes=5),
}
with DAG(
'daily_etl',
default_args=default_args,
description='Daily ETL pipeline',
schedule_interval='0 6 * * *', # 6 AM daily
start_date=datetime(2024, 1, 1),
catchup=False,
tags=['etl', 'daily'],
) as dag:
extract = PythonOperator(
task_id='extract_data',
python_callable=extract_function,
)
transform = SQLExecuteQueryOperator(
task_id='transform_data',
conn_id='warehouse',
sql='sql/transform.sql',
)
load = PythonOperator(
task_id='load_data',
python_callable=load_function,
)
extract >> transform >> load
Common Operators
| Operator | Use Case |
|---|---|
PythonOperator |
Custom Python code |
BashOperator |
Shell commands |
SQLExecuteQueryOperator |
Database queries |
S3ToSnowflakeOperator |
Cloud data transfers |
DbtCloudRunJobOperator |
dbt Cloud jobs |
Best Practices
- Idempotent tasks - Safe to re-run
- Small tasks - Easy to debug, retry
- XCom sparingly - Only small data
- Templating - Use
{{ ds }}for dates - Sensors wisely - Avoid blocking workers
Task Dependencies
# Linear
task1 >> task2 >> task3
# Parallel
[task1, task2] >> task3
# Complex
task1 >> [task2, task3]
[task2, task3] >> task4
Dynamic DAGs
for table in ['users', 'orders', 'products']:
task = PythonOperator(
task_id=f'process_{table}',
python_callable=process_table,
op_kwargs={'table': table},
)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
claude-code-course
Learn Claude Code in 5 hands-on lessons. From basics to building applications. Use when: user wants to learn Claude Code, asks "how do I...", or is new. Triggers: "learn", "teach me", "how does this work", "I'm new", "course".
foundations
Claude Code basics for new users. Covers essential concepts and commands. Use when: user is new to Claude Code or routed here by learning-path assessment.
advanced
Claude Code mastery for power users. Build agents, MCP servers, publish plugins. Use when: user wants to create agents, build integrations, or publish plugins.
lessons
Lesson content for Claude Code Course. Use when: loading lesson content. Internal skill - contains lesson files.
intermediate
Claude Code customization for comfortable users. Covers skills, commands, MCP, hooks. Use when: user knows basics and wants to customize Claude Code.
course-help
Help and navigation for Claude Code Course. Use when: user asks about the course, lessons, or progress. Triggers: "help", "course help", "what lessons", "my progress".
Didn't find tool you were looking for?