You are viewing a plain text version of this content. The canonical link for it is here.
Posted to gsoc@community.apache.org by "Maxim Solodovnik (Jira)" <ji...@apache.org> on 2026/05/05 08:34:00 UTC
[jira] [Updated] (GSOC-329) Apache Airflow: Contribution & Verification Agent Skills
[ https://issues.apache.org/jira/browse/GSOC-329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maxim Solodovnik updated GSOC-329:
----------------------------------
Labels: Airflow gsoc gsoc2026 large mentor (was: Airflow full-time gsoc gsoc2026 mentor)
> Apache Airflow: Contribution & Verification Agent Skills
> --------------------------------------------------------
>
> Key: GSOC-329
> URL: https://issues.apache.org/jira/browse/GSOC-329
> Project: Comdev GSOC
> Issue Type: New Feature
> Reporter: Zhe You Liu
> Priority: Major
> Labels: Airflow, gsoc, gsoc2026, large, mentor
>
> h3. Background
> Apache Airflow’s *Breeze* environment is the de facto way to reproduce CI, run tests, and verify changes locally. It encapsulates complex tooling (Docker, integrations, static checks, tests, system verification) behind a single, consistent developer interface.
> However, modern AI coding tools (e.g. Claude Code, Gemini CLI, GitHub Copilot–style agents) currently treat Airflow’s repo like any generic Python project. They {*}rarely{*}:
> * Understand whether they are running inside or outside Breeze.
> * Choose the correct commands for host vs. container.
> * Follow the same workflows that Airflow contributors actually use (e.g. {{{}prek{}}}, {{{}breeze shell{}}}, {{{}breeze start-airflow{}}}).
> We already expose some information through docs (e.g. {{{}AGENTS.md{}}}), but this mostly inflates the context window rather than giving agents a structured, machine-usable interface to Breeze.
> This project aims to bridge that gap by creating an *“Airflow Breeze Contribution / Contribution Verification” AI skill* (final name TBD) that systematically encodes common contribution workflows and makes them reliably executable and testable by AI agents.
> h3. Goal
> The overarching goal is to make AI tools:
> {*}Breeze-aware{*}: able to detect whether they are running inside or outside Breeze and act accordingly.
> In practice, this means that for a typical contributor PR, an AI agent can:
> * Run the right static checks.
> * Run the right subset of tests in Breeze.
> * Spin up Airflow and verify system behavior for a Dag representing the change (nice-to-have).
> * {*}Do all of the above while respecting host/container boundaries{*}.
> Additionally, the solution should be {*}consistency-focused{*}, meaning that we want to {*}keep Breeze CLI as the single source of truth for agent skills{*}. This can be achieved by auto-syncing CLI docstrings and behaviors into the AI skill using existing tooling (e.g. {{{}prek{}}}), ensuring that the skill definitions always reflect the current state of the Breeze CLI.
> h3. Core Tasks
> h5. 1. Environment Awareness & Detection
> * Design and implement a simple, robust mechanism for the agent skills to detect:
> ** “Host” vs “inside Breeze container”.
> ** Relevant environment variables, markers, or file paths that indicate context.
> * Encode decision logic for when to run:
> ** Host-only commands (e.g. {{{}breeze shell{}}}, {{{}breeze start-airflow{}}}, {{git}} operations).
> ** Container-only commands (e.g. {{{}pytest{}}}, {{{}airflow ...{}}}).
> * Provide a clear API/contract that AI tools can call to query current context and get recommended commands.
> {*}Note{*}: Maybe we need to add some explicit markers, files in the repo, or write a small helper script that can be called to determine context in a reliable way. Or maybe we can rely on existing environment variables or filesystem cues. This is an open design question to explore.
> h5. 2. Modeling Core Contributor Workflows as Skills
> Based on the three scenarios described, define and implement skills that represent common contribution flows:
> *Scenario 1: Static checks pass*
> * Stage changes ({{{}git add ...{}}}).
> * Run {{{}prek{}}}.
> * Collect and surface failures in a structured way so that an agent can fix them.
> *Scenario 2: Unit tests in Breeze*
> * Start or attach to a Breeze container with {{breeze shell}} or {{{}breeze exec{}}}.
> * Run {{pytest}} with a targeted module/test path (not the whole suite).
> * Then the agent can inspect results and decide on next steps (e.g. fix code, exit Breeze).
> h5. 3. Syncing with Breeze CLI as Source of Truth (via {{{}prek{}}})
> * Investigate existing Breeze CLI docstrings and structure.
> * Define a mapping from Breeze commands (and their docstrings) to skill definitions, paths, and parameters.
> * Implement a {{prek}} hook that:
> ** Generates or updates the agent skills definition files from Breeze CLI docstrings.
> ** Fails when drift is detected (e.g. a command changed but the skill spec was not updated).
> * Integrate these checks into existing static check pipelines so the skills stay in sync automatically.
> h5. 4. Evaluation & Test Harness
> * Design a testable user scenario or “exam” that simulates a typical contribution workflow (e.g. fixing a simple bug, adding a small feature) to verify that the added skills work as intended.
> * Add unit tests for any additional scripts or helper functions created.
> h5. 5. Documentation & Developer Guide
> * Add or extend documentation (e.g. {{{}AGENTS.md{}}}, Breeze docs) to:
> ** Describe the new Breeze-aware skills.
> ** Show example workflows for human contributors and AI tools.
> ** Document how other tools can integrate with the skills (e.g. path to spec file, key commands).
> h3. Advanced Tasks (Optional / Stretch Goals)
> *Scenario: System behavior verification*
> * Write a Dag representing the feature/bugfix being contributed (or use an existing one).
> * Run {{breeze start-airflow}} (with {{--integration}} when needed).
> * Trigger the Dag via CLI (instead of UI) and wait for completion.
> * Inspect logs/status to determine success/failure from the TaskInstance logs.
> * Inspect logs/status from all the component services (scheduler, api-server, triggerer, etc) to determine if there are any underlying issues.
> * The agent can then decide to fix code, fix the Dag, or exit Breeze based on the results.
> h3. Expected Outcome
> By the end of the project, we expect:
> * A *Breeze-aware AI skill* that can:
> ** Detect host vs. container context.
> ** Choose appropriate commands and environment transitions.
> * The AI toolings will be "smart-enough" to handle the core workflows for contributions, including:
> ** Static checks with {{{}prek{}}}.
> ** Targeted unit tests in Breeze.
> ** Continue iterating based on results (e.g. fix code, fix tests, exit).
> * A *sync mechanism* (likely using {{{}prek{}}}) that:
> ** Keeps Breeze CLI and the skill definitions in sync.
> ** Fails CI when they diverge, ensuring Breeze remains the single source of truth.
> * Initial *evaluation “exam(s)”* and test harnesses that:
> ** Verify that an implementation of the skill behaves correctly on at least the core scenarios.
> * Updated *documentation* explaining how contributors and AI tools can make use of the new capability.
> A successful project will make it much easier for future AI tooling (IDEs, CLIs, bots) to interact with Breeze in a reliable and Airflow-native way, increasing contributor productivity and lowering the barrier to entry.
> h3. Recommended Skills
> * *Programming & Tooling*
> ** Solid Python skills (CLI tools, packaging, basic testing).
> ** Familiarity with Docker and containerized development environments.
> ** Experience with writing or using CLIs and handling subprocesses.
> * *Dev Workflow & CI*
> ** Understanding of typical open source contribution workflows (git, PRs, static checks, unit tests, pre-commit).
> ** Exposure to CI systems and concepts of reproducible environments.
> * *AI/Agents*
> ** Interest in or experience with AI coding assistants, Agent Skills, tool-calling, or agent frameworks.
> ** Comfort reasoning about what “smart enough” means in terms of concrete, testable behaviors.
> * *Airflow/Breeze (Nice to Have)*
> ** Basic knowledge of Apache Airflow concepts (Dags, tasks, operators).
> ** Prior use of Breeze for development or testing is a plus, but not strictly required.
> Motivation to work at the intersection of developer experience, tooling, and AI is more important than prior deep expertise in all of these areas.
> h3. Mentors
> - Jason Liu (GitHub: @jason810496, Slack: Zhe-You(Jason) Liu)
> - Jarek Potiuk (GitHub: @potiuk, Slack: Jarek Potiuk)
> - #gsoc Slack Channel in Apache Airflow workspace: [https://apache-airflow.slack.com/archives/CSC0FLNJF]
> h3. Learning Materials
> * Airflow Breeze documentation: [https://github.com/apache/airflow/blob/main/dev/breeze/doc/README.rst]
> * Recent Airflow Dev Mailing List discussion regarding Agent Skills/ Agents:
> ** [[CONTRIBUTION OPPORTUNITY] Help Define Translation Agent Skills for Airflow Terminology|https://lists.apache.org/thread/r6m7wkkflpqzjjvcmg93xwlhn6nqjylt]
> ** [New: AGENTS.md overhaul + Copilot catches AI-slop PRs automatically|https://lists.apache.org/thread/szygtjs2t7mb6c2kk4zjygslxf0d4od8]
> * Airflow {{prek}} ({{{}pre-commit{}}}) hooks entrypoint: [https://github.com/apache/airflow/blob/main/.pre-commit-config.yaml]
> * Modern Python monorepo for Apache Airflow (by Jarek): [https://medium.com/apache-airflow/modern-python-monorepo-for-apache-airflow-part-1-1fe84863e1e1]
> * {{{}pre-commit{}}}: [https://pre-commit.com/]
> * {{{}prek{}}}: [https://github.com/j178/prek]
> h3. Tracked GitHub Issue
> [https://github.com/apache/airflow/issues/62500]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: gsoc-unsubscribe@community.apache.org
For additional commands, e-mail: gsoc-help@community.apache.org