Download for MacApple silicon, macOS 14+
Skill

authoring-language-sdk-tasks

@astronomer Updated 2026-10-14

The language-neutral foundation for Airflow language SDKs — implement task logic in a non-Python language while the DAG stays in Python. Use when the user wants to run an Airflow task in another language (Java, Kotlin, Go, or other JVM/native languages), asks how the Python `@task.stub` pairs with native task code, how task/DAG IDs must match across the two sides, how data passes via XCom as JSON, or which language SDKs exist. This skill owns the shared Python-stub pattern and conceptual model; for a specific language's native API, build, and runtime, use that language's skill (e.g. authoring-java-sdk-tasks, authoring-go-sdk-tasks).

agentic-workflowagentsaiai-agentsairflowapache-airflowclaudecursor

Install

With your agent

Install OMGSkills skill "astronomer/agents:skills/authoring-language-sdk-tasks" into this agent's normal skills directory: call the OMGSkills MCP get_install_plan tool for your agent and run the script it returns (it installs only the pinned commit and verifies SKILL.md), and stop if MCP or the pin is unavailable. Do not overwrite or change existing skills without asking me.

Manual command

git clone https://github.com/astronomer/agents /tmp/agents && ln -s /tmp/agents/skills/authoring-language-sdk-tasks ~/.claude/skills/authoring-language-sdk-tasks

From README

Authoring Language SDK Tasks (Shared Foundation) Airflow language SDKs let you implement task logic in a language other than Python while the DAG and its scheduling stay in Python. This skill describes the parts that are identical across every language SDK. Each language has its own companion skill for the native API, build tooling, and runtime — see Per-language skills. Experimental. The language SDKs are in preview. APIs and artifact coordinates may change. --- The model A DAG is authored in Python as usual. Tasks that should run in another language are declared as stubs routed to a dedicated queue. At runtime, Airflow hands a stub task to a coordinator that launches a short-lived native subprocess for that one task instance, runs your compiled/native code, and shuts the subprocess down. Consequences that hold for every language SDK: One subprocess per task instance — there is no shared in-process state between task instances. Pass data via XCom or an external store.