Chart Tests
astronomer/airflow-chart
A skill your agent uses when writing, editing, reviewing, or running Helm chart tests for the Astronomer airflow-chart repository.
Builds and deploys compiled Airflow Java SDK bundles so workers can run them.
$ npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install astronomer/agents deploying-java-sdk-bundles --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/astronomer/agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/deploying-java-sdk-bundles .claude/skills/deploying-java-sdk-bundles && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "deploying-java-sdk-bundles" agent skill from https://github.com/astronomer/agents/tree/main/skills/deploying-java-sdk-bundles into .claude/skills/deploying-java-sdk-bundles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploying-java-sdk-bundles", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/astronomer/agents/tree/main/skills/deploying-java-sdk-bundlesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install astronomer/agents deploying-java-sdk-bundles --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/astronomer/agents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/deploying-java-sdk-bundles .agents/skills/deploying-java-sdk-bundles && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "deploying-java-sdk-bundles" agent skill from https://github.com/astronomer/agents/tree/main/skills/deploying-java-sdk-bundles into .agents/skills/deploying-java-sdk-bundles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploying-java-sdk-bundles", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install astronomer/agents deploying-java-sdk-bundles --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/astronomer/agents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/deploying-java-sdk-bundles .cursor/skills/deploying-java-sdk-bundles && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "deploying-java-sdk-bundles" agent skill from https://github.com/astronomer/agents/tree/main/skills/deploying-java-sdk-bundles into .cursor/skills/deploying-java-sdk-bundles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploying-java-sdk-bundles", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/astronomer/agents.git --path skills/deploying-java-sdk-bundles--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install astronomer/agents deploying-java-sdk-bundles --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/astronomer/agents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/deploying-java-sdk-bundles .gemini/skills/deploying-java-sdk-bundles && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "deploying-java-sdk-bundles" agent skill from https://github.com/astronomer/agents/tree/main/skills/deploying-java-sdk-bundles into .gemini/skills/deploying-java-sdk-bundles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploying-java-sdk-bundles", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install astronomer/agents deploying-java-sdk-bundlesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/astronomer/agents.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/deploying-java-sdk-bundles .github/skills/deploying-java-sdk-bundles && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "deploying-java-sdk-bundles" agent skill from https://github.com/astronomer/agents/tree/main/skills/deploying-java-sdk-bundles into .github/skills/deploying-java-sdk-bundles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploying-java-sdk-bundles", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install astronomer/agents deploying-java-sdk-bundles --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/astronomer/agents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/deploying-java-sdk-bundles .opencode/skills/deploying-java-sdk-bundles && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "deploying-java-sdk-bundles" agent skill from https://github.com/astronomer/agents/tree/main/skills/deploying-java-sdk-bundles into .opencode/skills/deploying-java-sdk-bundles/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deploying-java-sdk-bundles", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
deploying-java-sdk-bundlesBuilds and deploys compiled Airflow Java SDK bundles so workers can run them.
Deploying Java SDK Bundles is an agent skill from astronomer/agents. Builds and deploys compiled Airflow Java SDK bundles so workers can run them. Use when the user wants to package a JVM task bundle into a JAR, asks about the org.apache.airflow.sdk Gradle plugin, ./gradlew bundle, the Maven shade/BOM setup, fat vs thin JARs, the logging integration artifacts (JPL, SLF4J, Log4j 2, JUL), preview/snapshot builds, or getting the JAR onto an Airflow worker (Docker, Kubernetes, or Astro). For the task code see authoring-java-sdk-tasks; for the Airflow coordinator settings see…
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Data & Analytics, covering Data pipelines and ETL, Static sites and blogs and Container orchestration. It works with Java, Apache Airflow, Gradle and Astro. The repository describes itself as: AI agent tooling for data engineering workflows. The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 486ee63. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
mvnFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
repository.apache.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Deploying Java SDK Bundles loads about 2.8k tokens when it runs. Until then it costs about 144 tokens; SKILL.md has 1,051 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
the coordinator config in the project's `.env` (loaded automatically) — see **configuring-airflow-language-sdks** for thAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from astronomer/agents at commit 486ee63, republished under its Apache-2.0 licence (© astronomer). 1,051 words, ~2,794 tokens.
.claude/skills/deploying-java-sdk-bundles/SKILL.md (or your agent's skills folder).A Java SDK deployment has one artifact: a bundle — your compiled task classes plus the SDK, packaged as a JAR (or a thin JAR alongside its dependency JARs). You build it with Gradle or Maven, then place it in a directory that the JavaCoordinator scans (jars_root) on every worker. This skill is platform-neutral; it shows the build once, then both an open-source and an Astro deployment path.
Experimental. The Java SDK is in preview. Artifact versions below are shown as
${version}; while the SDK is pre-release you may need to build the artifacts into your local Maven repository yourself (see the preview builds section).
Order of operations: build the bundle (this skill) → place it where
jars_rootpoints → configure the coordinator (configuring-airflow-language-sdks). The task code itself is authoring-java-sdk-tasks.
Apply the SDK's Gradle plugin and declare dependencies in build.gradle:
plugins {
id("org.apache.airflow.sdk") version "${version}"
}
repositories {
mavenCentral()
}
dependencies {
annotationProcessor("org.apache.airflow:airflow-sdk-processor:${version}") // annotation API only
implementation("org.apache.airflow:airflow-sdk:${version}")
// Optional logging integration, e.g.:
// implementation("org.apache.airflow:airflow-sdk-jpl:${version}")
}
airflowBundle {
mainClass = "com.example.Main" // your BundleBuilder entry point
// fatJar = false // opt out of the single-JAR build (see below)
}Build it:
./gradlew bundleThe build/bundle/ directory then holds all required JAR(s). Notes:
annotationProcessor line is needed only if you use the annotation-based API. The interface-based API doesn't need it.fatJar = false in airflowBundle for thin JARs; you then deploy every dependency JAR too.mainClass exists at build time (verifyBundleMainClass).Import the BOM so artifact versions and the supervisor schema version are managed in one place:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.airflow</groupId>
<artifactId>airflow-sdk-bom</artifactId>
<version>${version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.airflow</groupId>
<artifactId>airflow-sdk</artifactId> <!-- version from the BOM -->
</dependency>
</dependencies>Wire the annotation processor through maven-compiler-plugin (annotation API only) so it stays off the runtime classpath. Then pick a packaging option:
maven-shade-plugin. In its ManifestResourceTransformer, set <mainClass> to your BundleBuilder and add the manifest entry Airflow-Supervisor-Schema-Version resolved from the BOM property ${airflow.supervisor.schema.version} (don't hard-code it). mvn package writes the JAR to target/.maven-jar-plugin to set Main-Class and maven-dependency-plugin (copy-dependencies) to collect runtime JARs into target/bundle/. Here Airflow-Supervisor-Schema-Version is not needed — Airflow reads it from the airflow-sdk JAR on the classpath.Unlike Gradle, Maven does not validate mainClass at build time; a wrong value only fails at runtime.
For task log records to reach Airflow's log store (and the task log view in the UI), the bundle must include exactly one SDK logging artifact per logging facade you use. Versions are managed by airflow-sdk-bom; Maven users apply the same artifact IDs.
Choosing a facade. For a greenfield project, prefer JPL (System.Logger) — it is built into the JDK, so your tasks need no extra logging API. Pick another facade only when the libraries you integrate with already log through it, so their records reach Airflow too. Preference order: JPL > SLF4J = Log4j 2 > JUL; treat JUL as legacy integration only, not a choice for new code.
| Facade | Artifact | Setup beyond the dependency |
|---|---|---|
System.Logger (JPL) | airflow-sdk-jpl | None — the provider is discovered via ServiceLoader. |
| SLF4J 2.x | airflow-sdk-slf4j | None — the binding is discovered automatically (pulls in slf4j-api for you). |
| Log4j 2 | airflow-sdk-log4j2 | log4j-core on the runtime classpath + AirflowAppender declared in log4j2.xml (below). |
java.util.logging (JUL) | airflow-sdk-jul | Call AirflowJulHandler.setup() in main() (below), or use a logging.properties file (see configuring-airflow-language-sdks). |
Log4j 2 — log4j-core hosts the plugin loader that discovers the appender (log4j-api comes in transitively):
implementation("org.apache.airflow:airflow-sdk-log4j2:${version}")
runtimeOnly("org.apache.logging.log4j:log4j-core:${log4jVersion}")<Configuration>
<Appenders>
<AirflowAppender name="Airflow"/>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Airflow"/>
</Root>
</Loggers>
</Configuration>JUL — call AirflowJulHandler.setup() before any task runs. It clears the root logger's existing handlers (the default ConsoleHandler writes to stderr, which Airflow would otherwise capture as task.stderr at ERROR level, duplicating each record):
public static void main(String[] args) {
AirflowJulHandler.setup();
Server.create(args).serve(new MyBundle().build());
}Don't double up providers. A second System.LoggerFinder implementation alongside airflow-sdk-jpl, or a second SLF4J binding (logback-classic, slf4j-simple) alongside airflow-sdk-slf4j, makes provider selection unpredictable.
Skip this section if you depend on a stable release. Once you pin a released version (e.g. 1.0.0) published to Maven Central, the mavenCentral() repository in the build snippets above is enough.
While the SDK is pre-release, the documented path is to build the artifacts and the Gradle plugin from the Airflow repo into your local Maven repository:
# in apache/airflow's java-sdk/ directory
./gradlew publishToMavenLocal -PskipSigning=trueThen add mavenLocal() in your project, in both pluginManagement (in settings.gradle) and project repositories (in build.gradle) — this is how the SDK's own example project resolves it.
Once -SNAPSHOT artifacts are published to Apache's snapshot Nexus, that repository can stand in for the local build (same two places):
maven {
name = "apacheSnapshots"
url = "https://repository.apache.org/content/repositories/snapshots/"
mavenContent { snapshotsOnly() }
}Snapshots move; force a refresh with ./gradlew bundle --refresh-dependencies. (For Maven, add the same repository to <repositories> and <pluginRepositories>.)
The coordinator scans jars_root recursively and builds the classpath automatically, so you copy the whole output directory:
cp build/bundle/* /opt/airflow/jars/ # /opt/airflow/jars == jars_rootThe worker also needs a JRE 17+. Wiring the coordinator to this directory is covered in configuring-airflow-language-sdks.
Astronomer tooling is not required — the SDK runs on any Airflow with the Task SDK. Choose the path that matches the user's setup.
Bake the JRE and the bundle into your Airflow image, or mount them:
FROM apache/airflow:3 # pin a specific 3.x in production
USER root
RUN apt-get update \
&& apt-get install -y --no-install-recommends default-jre-headless \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
RUN mkdir -p /opt/airflow/jars
COPY build/bundle/ /opt/airflow/jars/
USER airflowOn Kubernetes (Helm chart), bake the JAR into a custom image as above, or mount it via a shared volume; set the [sdk] config through environment variables on the worker/scheduler. See deploying-airflow for the broader Docker Compose and Helm workflow.
If the user is on Astronomer's Astro CLI, the same idea maps onto an Astro project:
Build the bundle, then stage it in the project: mkdir -p include/jars && cp ../java-bundle/build/bundle/*.jar include/jars/.
Edit the project Dockerfile to install a JRE and copy the JARs to the coordinator's directory:
FROM quay.io/astronomer/astro-runtime:<version>
USER root
RUN apt-get update \
&& apt-get install -y --no-install-recommends default-jre-headless \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
RUN mkdir -p /opt/airflow/jars
COPY include/jars/ /opt/airflow/jars/
USER airflowPut the coordinator config in the project's .env (loaded automatically) — see configuring-airflow-language-sdks for the AIRFLOW__SDK__* values.
astro dev start (or astro dev restart after changes) builds the image and starts Airflow locally; deploy with astro deploy as usual.
Don't pin Astro Runtime / Airflow versions from memory — read the generated
Dockerfileor check current docs. While the SDK and Airflow 3.3 are in preview, a beta/dev Astro Runtime image may be required.
./gradlew bundle or mvn package) and mainClass points at your BundleBuilder.annotationProcessor present iff you use the annotation API.jars_root directory; with thin JARs, dependency JARs too.queue_to_coordinator configured (configuring-airflow-language-sdks).jars_root, set main_class explicitly.© astronomer, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/deploying-java-sdk-bundles of astronomer/agents.
Open the folder on GitHubat commit 486ee63
Deploying Java SDK Bundles next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Deploying Java SDK Bundles this skillastronomer/agents | 451 | — | ~2.8k | Automated safety check: Notes | Apache-2.0 | |
| Chart Testsastronomer/airflow-chart | 297 | — | ~2.8k | Automated safety check: Pass | Custom licence | |
| Functional Testsastronomer/airflow-chart | 297 | — | ~2.2k | Automated safety check: Pass | Custom licence | |
| Helm Chartastronomer/airflow-chart | 297 | — | ~6.4k | Automated safety check: Pass | Custom licence | |
| Paidf Orchestration Write DagNVIDIA/skills | 3.5k | — | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| Paidf Orchestration SetupNVIDIA/skills | 3.5k | — | ~3.8k | Automated safety check: Warn | Apache-2.0 |
astronomer/airflow-chart
A skill your agent uses when writing, editing, reviewing, or running Helm chart tests for the Astronomer airflow-chart repository.
astronomer/airflow-chart
A skill your agent uses when writing, editing, reviewing, or running functional (end-to-end) tests for the Astronomer airflow-chart repository.
astronomer/airflow-chart
A skill your agent uses for Helm chart work - creating charts, modifying existing charts, values design, testing.
NVIDIA/skills
A skill your agent uses when a user describes a custom PAIDF Orchestration pipeline — a specific ordered combination of stages such as augmentation only, auto-labeling only, detection+captioning…
NVIDIA/skills
Audit, prepare, and deploy PAIDF Orchestration on a Kubernetes GPU cluster - single-GPU H100/L40S hosts, managed Kubernetes, kubeadm, and similar.
rodrigorodrigues/microservices-design-patterns
Check Docker Hub for a new :latest image on a managed service and roll it out to the home Pi k8s cluster, the same way authentication-service was deployed on 2026-08-29 (SSH + kubectl rollout…
astronomer/agents
Queries the data warehouse with SQL and answers business questions about data.
astronomer/agents
Queries, manages, and troubleshoots Apache Airflow using the af CLI.
astronomer/agents
Guide for migrating Dagster projects to Apache Airflow 3 on Astro.
astronomer/agents
Workflow and best practices for writing Apache Airflow DAGs.
astronomer/agents
Deploys Airflow DAGs and projects. An agent skill from astronomer/agents.
astronomer/agents
Trace downstream data lineage and impact analysis. An agent skill from astronomer/agents.
Categories
Builds and deploys compiled Airflow Java SDK bundles so workers can run them. Deploying Java SDK Bundles is an agent skill from astronomer/agents. Builds and deploys compiled Airflow Java SDK bundles so workers can run them.
Deploying Java SDK Bundles fits situations like: the user wants to package a JVM task bundle into a JAR; asks about the org.apache.airflow.sdk Gradle plugin; ./gradlew bundle; the Maven shade/BOM setup.
Run `npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a claude-code`. Or copy the skill folder (skills/deploying-java-sdk-bundles in astronomer/agents) into .claude/skills/deploying-java-sdk-bundles in your project. Claude Code loads it when a task matches its description.
Run `npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a codex`. Or copy the skill folder (skills/deploying-java-sdk-bundles in astronomer/agents) into .agents/skills/deploying-java-sdk-bundles in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add astronomer/agents --skill deploying-java-sdk-bundles -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deploying-java-sdk-bundles, .gemini/skills/deploying-java-sdk-bundles, .github/skills/deploying-java-sdk-bundles and .opencode/skills/deploying-java-sdk-bundles in your project.
Going by SKILL.md and its folder, Deploying Java SDK Bundles needs the command-line tools its instructions call (mvn). Our summary lists: Python 3; Docker.
SKILL.md names 1 domain. In commands or code: repository.apache.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Deploying Java SDK Bundles is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Deploying Java SDK Bundles: Chart Tests (astronomer/airflow-chart, 297 stars), Functional Tests (astronomer/airflow-chart, 297 stars), Helm Chart (astronomer/airflow-chart, 297 stars) and Paidf Orchestration Write Dag (NVIDIA/skills, 3.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
astronomer (a GitHub organization) maintains it in astronomer/agents, which has 451 GitHub stars. The repository holds 34 skills in this directory. The repository was last updated on October 7, 2026.
Source: astronomer/agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.