annotating-task-lineage

Annotate Airflow tasks with inlets and outlets for dataset lineage.

2|Updated Apr 8, 2026
One-click install
npx skills add https://github.com/miptah21/skills --skill annotating-task-lineage-miptah21
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: annotating-task-lineage
Source: https://github.com/miptah21/skills/tree/main/.agents/skills/annotating-task-lineage
Command: npx skills add https://github.com/miptah21/skills --skill annotating-task-lineage-miptah21

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Airflow pipelines often lack dataset lineage visibility, making it difficult to audit upstream-to-downstream data flow when operators don’t automatically emit OpenLineage events.

Core Features & Use Cases

  • Manual lineage via inlets/outlets: Annotate Airflow operators with explicit input and output datasets for lineage tracking even without built-in OpenLineage extractors.
  • Works with multiple dataset types: Use OpenLineage Dataset objects (recommended) or Airflow Assets/Datasets (Airflow 3+/2.4+).
  • Clear precedence and limitations: Prefer OpenLineage methods/custom extractors when available; use inlets/outlets as the lowest-priority fallback for table-level lineage.

Quick Start

Use annotating-task-lineage to add inlets and outlets to your Airflow operators so their dataset reads and writes show up in the lineage UI for tasks that don’t natively support extraction.

Frequently Asked Questions about annotating-task-lineage

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

FAQPage Schema
How do I add data lineage to Airflow tasks without built-in OpenLineage extractors?

To add data lineage to Airflow tasks lacking native OpenLineage extractors, manually annotate operators with explicit input (inlets) and output (outlets) datasets. This provides table-level lineage visibility for ETL/ELT DAGs by explicitly declaring dataset reads and writes.

What dataset types can I use for Airflow inlets and outlets?

You can use OpenLineage Dataset objects or native Airflow Asset and Dataset types for Airflow inlets and outlets. OpenLineage Dataset objects are recommended for annotating Airflow tasks, while Airflow Assets work for versions 2.4+ and 3+.

When should I manually declare inlets and outlets instead of using OpenLineage extractors?

Manually declare inlets and outlets only as a fallback when higher-priority OpenLineage extractors or get_openlineage_facets_on_* methods are unavailable. OpenLineage precedence rules dictate using native extractors first for automatic lineage tracking.

Why are my Airflow pipeline datasets not showing up in the lineage UI?

Airflow pipeline datasets may not show up in the lineage UI if operators lack built-in OpenLineage extractors. Annotate tasks with explicit inlet and outlet datasets to ensure table-level lineage visibility and audit upstream-to-downstream data flow.

Can I track table-level lineage for ETL orchestration in Airflow without custom extractors?

Yes, you can track table-level lineage for ETL orchestration in Airflow without custom extractors by manually defining inlets and outlets. This lowest-priority fallback method ensures dataset reads and writes appear in the lineage UI.

Does annotating task lineage work with Airflow Assets and OpenLineage Datasets?

Yes, annotating task lineage works with both Airflow Assets and OpenLineage Datasets. You can use either type to declare explicit inputs and outputs for Airflow operators, ensuring dataset lineage visibility across your ETL pipelines.