paddleocr
Reads text from scanned pages, photos and PDFs and returns it as structured Markdown or JSON, so you can pull tables, formulas and headers out of a document without retyping them. Covers many languages and works as input for AI tools.
Lets your AI coding agent work with Apache Airflow directly, so you can inspect DAG runs, read task logs, fix broken DAGs and build human approval steps without switching tools. Works with open-source Airflow and Astronomer's managed platform.
Claude Code
> /plugin marketplace add astronomer/agents> /plugin install astronomer-data@astronomer
Codex
$ npx skills add astronomer/agents -a codex
Cursor
$ npx skills add astronomer/agents -a cursor
Gemini CLI
$ npx skills add astronomer/agents -a gemini-cli
GitHub Copilot
$ copilot plugin marketplace add astronomer/agents$ copilot plugin install astronomer-data@astronomer
OpenCode
$ npx skills add astronomer/agents -a opencode
Windsurf
$ npx skills add astronomer/agents -a windsurf

AI agent tooling for data engineering workflows. Includes an MCP server for Airflow, a CLI tool (af) for interacting with Airflow from your terminal, and skills that extend AI coding agents with specialized capabilities for working with Airflow and data warehouses. Works with Claude Code, Cursor, and other agentic coding tools.
Built by Astronomer. Apache 2.0 licensed and compatible with open-source Apache Airflow.
af)npx skills add astronomer/agents --skill '*'
This installs all Astronomer skills into your project via skills.sh. You'll be prompted to select which agents to install to. To also select skills individually, omit the --skill flag.
Important Claude Code users: We recommend using the plugin instead (see Claude Code section below) for better integration with MCP servers and hooks.
Skills: Works with 25+ AI coding agents including Claude Code, Cursor, VS Code (GitHub Copilot), Windsurf, Cline, and more.
MCP Server: Works with any MCP-compatible client including Claude Desktop, VS Code, and others.
Note Open-source Airflow users: The MCP server works with any Airflow 2.x/3.x REST API. Set
AIRFLOW_API_URLto your self-hosted instance. Skills are tool-agnostic and work with any Airflow deployment.
# Add the marketplace and install the plugin
claude plugin marketplace add astronomer/agents
claude plugin install astronomer-data@astronomer
# Upgrading from the old plugin name? Uninstall first:
# claude plugin uninstall data@astronomer && claude plugin marketplace update && claude plugin install astronomer-data@astronomer
The plugin includes the Airflow MCP server that runs via uvx from PyPI. Data warehouse queries are handled by the analyzing-data skill using a background Jupyter kernel.
Cursor supports both MCP servers and skills.
MCP Server - Click to install:
Skills - Install to your project:
npx skills add astronomer/agents --skill '*' -a cursor
This installs skills to .cursor/skills/ in your project.
Manual MCP configuration
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": ["astro-airflow-mcp", "--transport", "stdio"]
}
}
}
Enable hooks (session management)
Create .cursor/hooks.json in your project:
{
"version": 1,
"hooks": {
"stop": [
{
"command": "uv run $CURSOR_PROJECT_DIR/.cursor/skills/analyzing-data/scripts/cli.py stop",
"timeout": 10
}
]
}
}
What these hooks do:
stop: Cleans up kernel when session endsFor any MCP-compatible client (Claude Desktop, VS Code, etc.):
# Airflow MCP
uvx astro-airflow-mcp --transport stdio
# With remote Airflow
AIRFLOW_API_URL=https://your-airflow.example.com \
AIRFLOW_USERNAME=admin \
AIRFLOW_PASSWORD=admin \
uvx astro-airflow-mcp --transport stdio
The astronomer-data plugin bundles an MCP server and skills into a single installable package.
| Server | Description |
|---|---|
| Airflow | Full Airflow REST API integration via astro-airflow-mcp: DAG management, triggering, task logs, system health |
| Skill | Description |
|---|---|
| warehouse-init | Initialize schema discovery - generates .astro/warehouse.md for instant lookups |
| analyzing-data | SQL-based analysis to answer business questions (uses background Jupyter kernel) |
| checking-freshness | Check how current your data is |
| profiling-tables | Comprehensive table profiling and quality assessment |
| Skill | Description |
|---|---|
| tracing-downstream-lineage | Analyze what breaks if you change something |
| tracing-upstream-lineage | Trace where data comes from |
| annotating-task-lineage | Add manual lineage to tasks using inlets/outlets |
| creating-openlineage-extractors | Build custom OpenLineage extractors for operators |
| Skill | Description |
|---|---|
| airflow | Main entrypoint - routes to specialized Airflow skills |
| setting-up-astro-project (Astro) | Initialize and configure new Astro/Airflow projects |
| managing-astro-local-env (Astro) | Manage local Airflow environment (start, stop, logs, troubleshoot) |
| authoring-dags | Create and validate Airflow DAGs with best practices |
| blueprint | Compose DAGs from YAML using reusable templates with Pydantic validation (airflow-blueprint) |
| testing-dags | Test and debug Airflow DAGs locally |
| debugging-dags | Deep failure diagnosis and root cause analysis |
| deploying-airflow | Deploy Airflow DAGs and projects (Astro, Docker Compose, Kubernetes) |
| airflow-hitl | Human-in-the-loop workflows: approval gates, form input, branching (Airflow 3.1+) |
| Skill | Description |
|---|---|
| cosmos-dbt-core | Run dbt Core projects as Airflow DAGs using Astronomer Cosmos |
| cosmos-dbt-fusion | Run dbt Fusion projects with Cosmos (Snowflake/Databricks only) |
| Skill | Description |
|---|---|
| migrating-airflow-2-to-3 | Migrate DAGs from Airflow 2.x to 3.x |
Astro is Astronomer's managed Airflow platform. It's optional, but a good fit if you want managed deployments, built-in alerting, and centralized observability across environments. If you run open-source Airflow, everything in this repo still applies—you'll just configure your own Airflow URL and infrastructure.
flowchart LR
init["/astronomer-data:warehouse-init"] --> analyzing["/astronomer-data:analyzing-data"]
analyzing --> profiling["/astronomer-data:profiling-tables"]
analyzing --> freshness["/astronomer-data:checking-freshness"]
/astronomer-data:warehouse-init) - One-time setup to generate warehouse.md with schema metadata/astronomer-data:analyzing-data) - Answer business questions with SQL/astronomer-data:profiling-tables) - Deep dive into specific tables for statistics and quality/astronomer-data:checking-freshness) - Verify data is up to date before usingFor open-source Airflow, use Docker Compose for local dev and the Helm chart for production (see deploying-airflow) instead of Astro setup skills.
flowchart LR
setup["/astronomer-data:setting-up-astro-project"] --> authoring["/astronomer-data:authoring-dags"]
setup --> env["/astronomer-data:managing-astro-local-env"]
authoring --> testing["/astronomer-data:testing-dags"]
testing --> debugging["/astronomer-data:debugging-dags"]
/astronomer-data:setting-up-astro-project) - Initialize project structure and dependencies/astronomer-data:managing-astro-local-env) - Start/stop local Airflow for development/astronomer-data:authoring-dags) - Write DAG code following best practices/astronomer-data:testing-dags) - Run DAGs and fix issues iteratively/astronomer-data:debugging-dags) - Deep investigation for complex failuresaf)The af command-line tool lets you interact with Airflow directly from your terminal. Install it with:
uvx --from astro-airflow-mcp af --help
For frequent use, add an alias to your shell config (~/.bashrc or ~/.zshrc):
alias af='uvx --from astro-airflow-mcp af'
Then use it for quick operations like af health, af dags list, or af runs trigger <dag_id>.
See the full CLI documentation for all commands and instance management.
Telemetry: The
afCLI collects anonymous usage telemetry to help improve the tool. Only the command name is collected (e.g.,dags list), never the arguments or their values. Opt out withaf telemetry disable.
Configure data warehouse connections at ~/.astro/agents/warehouse.yml:
my_warehouse:
type: snowflake
account: ${SNOWFLAKE_ACCOUNT}
user: ${SNOWFLAKE_USER}
auth_type: private_key
private_key_path: ~/.ssh/snowflake_key.p8
private_key_passphrase: ${SNOWFLAKE_PRIVATE_KEY_PASSPHRASE}
warehouse: COMPUTE_WH
role: ANALYST
query_tag: claude-code
databases:
- ANALYTICS
- RAW
Important How the
databaseslist works:
- Optional for most connectors (
snowflake,postgres,bigquery) but required forsqlalchemy- For schema discovery (
/astronomer-data:warehouse-init): Determines which databases are scanned and included in the generated.astro/warehouse.md. Only databases listed here will be discovered. If omitted, no schema discovery will occur.
Reads text from scanned pages, photos and PDFs and returns it as structured Markdown or JSON, so you can pull tables, formulas and headers out of a document without retyping them. Covers many languages and works as input for AI tools.
Gives your AI assistant a memory that persists across sessions, so it remembers your preferences and earlier work in this repository instead of starting fresh. Search, forget, pause and resume memories with simple commands.
Gives AI agents a library of ready-made skills for scientific work such as metabolic flux analysis, protein experiment design, time series modeling, and analytical method validation, so research tasks need less hand-built code. It works with any agent that supports the open Agent Skills standard.
Gives Claude Code skills, agents, and commands for PostHog analytics, session replay, feature flags, error tracking, and LLM observability. Includes MCP server setup and project access checks.
Install it with the command on its page. It includes airflow-adapter, airflow-hitl, airflow-plugins. Its skills do not fire on their own yet. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it