# airflow-plugins

> Claude/Codex skill by [@astronomer](https://omgskills.com/library/astronomer/index.md) · 454 stars · Updated 2026-10-14

Builds Airflow 3.1+ plugins that embed FastAPI apps, custom UI pages, React components, middleware, macros, and operator links directly into the Airflow UI. Use when building anything custom inside Airflow 3.1+ that involves Python and a browser-facing interface - creating an Airflow plugin, adding a custom UI page or nav entry, building FastAPI-backed endpoints inside Airflow, serving static assets from a plugin, embedding a React app, adding middleware to the API server, creating custom operator extra links, or calling the Airflow REST API from inside a plugin; also when AirflowPlugin, fastapi\_apps, external\_views, react\_apps, or plugin registration come up.

Tags: agentic-workflow, agents, ai, ai-agents, airflow, apache-airflow, claude, cursor, dag, data-engineering, data-pipelines, dbt, llm, mcp, orchestrator, skills, workflow-automation, workflow-management, workflow-orchestration, workflows

## Install

```sh
git clone https://github.com/astronomer/agents /tmp/agents && ln -s /tmp/agents/skills/airflow-plugins ~/.claude/skills/airflow-plugins
```

## From README

Airflow 3 Plugins Airflow 3 plugins let you embed FastAPI apps, React UIs, middleware, macros, operator buttons, and custom timetables directly into the Airflow process. No sidecar, no extra server. CRITICAL: Plugin components (fastapiapps, reactapps, externalviews) require Airflow 3.1+. NEVER import flask, flaskappbuilder, or use appbuilderviews / flaskblueprints — these are Airflow 2 patterns and will not work in Airflow 3. If existing code uses them, rewrite the entire registration block using FastAPI. Security: FastAPI plugin endpoints are not automatically protected by Airflow auth. If your endpoints need to be private, implement authentication explicitly using FastAPI's security utilities. Restart required: Changes to Python plugin files require restarting the API server. Static file changes (HTML, JS, CSS) are picked up immediately. Set AIRFLOWCORELAZYLOADPLUGINS=False during development to load plugins at startup rather than lazily.

## Links

- HTML page: https://omgskills.com/skills/astronomer/agents/airflow-plugins/
- GitHub: https://github.com/astronomer/agents
- Author: [@astronomer](https://omgskills.com/library/astronomer/index.md)

## More from this repo

- [airflow-state-store](https://omgskills.com/skills/astronomer/agents/skills/airflow-state-store/index.md) — Persists task and asset state across retries and DAG runs using Airflow 3.3's AIP-103 key/value stores...
   - [@astronomer](https://omgskills.com/library/astronomer/index.md) · 456 stars
- [authoring-go-sdk-tasks](https://omgskills.com/skills/astronomer/agents/skills/authoring-go-sdk-tasks/index.md) — Writes Airflow task logic in Go using the Airflow Go SDK.
   - [@astronomer](https://omgskills.com/library/astronomer/index.md) · 456 stars
- [authoring-java-sdk-tasks](https://omgskills.com/skills/astronomer/agents/skills/authoring-java-sdk-tasks/index.md) — Writes Airflow task logic in Java, Kotlin, or any JVM language using the Airflow Java SDK.
   - [@astronomer](https://omgskills.com/library/astronomer/index.md) · 456 stars
