This is an automated email from the ASF dual-hosted git repository.
nsivabalan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new 2b6d8b2d6859 refactor(agent): move the Hudi Architect skill under
hudi-ai-operator (#20223)
2b6d8b2d6859 is described below
commit 2b6d8b2d6859ffa2ddf6f34b516ebcb239a6a25e
Author: Sivabalan Narayanan <[email protected]>
AuthorDate: Thu Oct 22 08:31:17 2026 -0700
refactor(agent): move the Hudi Architect skill under hudi-ai-operator
(#20223)
The agent gateway serves people consuming data from Hudi tables: Trino
SQL tools, a chat UI, an MCP endpoint for querying. The Architect skill
serves a different audience — people designing, deploying and operating
the tables themselves — and sat under the gateway only because that was
the first place skills lived.
Moves it to a new top-level hudi-ai-operator/skills/, which is where
operator-facing tooling will live. No content change beyond path
references: the skill, its references and its three validation scripts
are unchanged.
---
.github/workflows/agent_gateway_ci.yml | 28 ++++++++++++----------
.../tests/test_hudi_architect_skill.py | 2 +-
hudi-ai-operator/README.md | 2 +-
.../skills/hudi-architect/README.md | 12 +++++-----
.../skills/hudi-architect/RUNBOOK.md | 4 ++--
.../skills/hudi-architect/SKILL.md | 0
.../hudi-architect/redact_sensitive_values.py | 0
.../hudi-architect/references/adr-template.md | 0
.../hudi-architect/references/config-templates.md | 0
.../hudi-architect/references/decision-tables.md | 0
.../flink-1.20-hudi-1.2.0-capabilities.md | 0
.../flink-1.20-hudi-1.2.0-capabilities.toml | 0
.../references/flink-config-templates.md | 0
.../references/flink-decision-overrides.md | 0
.../flink-existing-table-reconciliation.md | 0
.../references/flink-question-flow.md | 0
.../hudi-architect/references/flink-warnings.md | 0
.../hudi-architect/references/question-flow.md | 0
.../skills/hudi-architect/references/warnings.md | 0
.../skills/hudi-architect/validate_config_keys.py | 4 ++--
.../validate_config_keys_allowlist.txt | 0
.../hudi-architect/validate_flink_capabilities.py | 0
.../skills/hudi-architect/validate_flink_design.py | 0
.../validate_flink_existing_table.py | 0
24 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/.github/workflows/agent_gateway_ci.yml
b/.github/workflows/agent_gateway_ci.yml
index ce1a1360222a..d008332dc70c 100644
--- a/.github/workflows/agent_gateway_ci.yml
+++ b/.github/workflows/agent_gateway_ci.yml
@@ -23,6 +23,7 @@ on:
- 'release-*'
paths:
- 'hudi-agent-gateway/**'
+ - 'hudi-ai-operator/**'
- 'hudi-lakehouse/**'
- '.github/workflows/agent_gateway_ci.yml'
pull_request:
@@ -30,6 +31,7 @@ on:
- master
paths:
- 'hudi-agent-gateway/**'
+ - 'hudi-ai-operator/**'
- 'hudi-lakehouse/**'
- '.github/workflows/agent_gateway_ci.yml'
@@ -66,34 +68,34 @@ jobs:
refs/tags/release-1.2.0:refs/tags/release-1.2.0
- name: Validate Hudi Architect references
run: |
- python skills/hudi-architect/validate_config_keys.py
- python skills/hudi-architect/validate_flink_capabilities.py
--verify-source
- python skills/hudi-architect/validate_flink_design.py \
+ python
../hudi-ai-operator/skills/hudi-architect/validate_config_keys.py
+ python
../hudi-ai-operator/skills/hudi-architect/validate_flink_capabilities.py
--verify-source
+ python
../hudi-ai-operator/skills/hudi-architect/validate_flink_design.py \
--input tests/fixtures/hudi_architect/flink_pr2/stable_key.json \
--emit-sql > /dev/null
- python skills/hudi-architect/validate_flink_design.py \
+ python
../hudi-ai-operator/skills/hudi-architect/validate_flink_design.py \
--input tests/fixtures/hudi_architect/flink_pr3/mutable_cow.json \
--emit-sql > /dev/null
- python skills/hudi-architect/validate_flink_design.py \
+ python
../hudi-ai-operator/skills/hudi-architect/validate_flink_design.py \
--input tests/fixtures/hudi_architect/flink_pr4/mutable_mor.json \
--emit-sql > /dev/null
- python skills/hudi-architect/validate_flink_existing_table.py \
+ python
../hudi-ai-operator/skills/hudi-architect/validate_flink_existing_table.py \
--input
tests/fixtures/hudi_architect/flink_pr5/compatible_mutable_cow.json
- name: Test
run: python -m pytest tests -q
- name: Lint
run: >-
ruff check src tests
- skills/hudi-architect/redact_sensitive_values.py
- skills/hudi-architect/validate_flink_capabilities.py
- skills/hudi-architect/validate_flink_design.py
- skills/hudi-architect/validate_flink_existing_table.py
+ ../hudi-ai-operator/skills/hudi-architect/redact_sensitive_values.py
+
../hudi-ai-operator/skills/hudi-architect/validate_flink_capabilities.py
+ ../hudi-ai-operator/skills/hudi-architect/validate_flink_design.py
+
../hudi-ai-operator/skills/hudi-architect/validate_flink_existing_table.py
- name: Type-check
run: >-
mypy src
- skills/hudi-architect/validate_flink_capabilities.py
- skills/hudi-architect/validate_flink_design.py
- skills/hudi-architect/validate_flink_existing_table.py
+
../hudi-ai-operator/skills/hudi-architect/validate_flink_capabilities.py
+ ../hudi-ai-operator/skills/hudi-architect/validate_flink_design.py
+
../hudi-ai-operator/skills/hudi-architect/validate_flink_existing_table.py
flink-sql-fixtures:
name: Hudi 1.2.0 / Flink 1.20.1 SQL fixtures
diff --git a/hudi-agent-gateway/tests/test_hudi_architect_skill.py
b/hudi-agent-gateway/tests/test_hudi_architect_skill.py
index bc5b8505892a..bd480490fae9 100644
--- a/hudi-agent-gateway/tests/test_hudi_architect_skill.py
+++ b/hudi-agent-gateway/tests/test_hudi_architect_skill.py
@@ -30,7 +30,7 @@ import pytest
GATEWAY_DIR = Path(__file__).resolve().parents[1]
REPO_ROOT = GATEWAY_DIR.parent
-SKILL_DIR = GATEWAY_DIR / "skills" / "hudi-architect"
+SKILL_DIR = REPO_ROOT / "hudi-ai-operator" / "skills" / "hudi-architect"
REFERENCES_DIR = SKILL_DIR / "references"
CAPABILITY_MANIFEST = REFERENCES_DIR /
"flink-1.20-hudi-1.2.0-capabilities.toml"
GATE_FIXTURE = (
diff --git a/hudi-ai-operator/README.md b/hudi-ai-operator/README.md
index df694f9272fa..026741f336a9 100644
--- a/hudi-ai-operator/README.md
+++ b/hudi-ai-operator/README.md
@@ -64,7 +64,7 @@ judgement on top of it, and a fix to a detector reaches every
Skill at once.
Skills also hand off to each other by name. `hudi-optimizer` stops at anything
that would change
what is on storage — table type, index type, partitioning — and hands the
measurements to
-`hudi-architect` (in `hudi-agent-gateway/skills/hudi-architect`) for an
Architecture Decision
+`hudi-architect` (in `hudi-ai-operator/skills/hudi-architect`) for an
Architecture Decision
Record. If the job is failing rather than slow, that is `hudi-rca`.
## Install
diff --git a/hudi-agent-gateway/skills/hudi-architect/README.md
b/hudi-ai-operator/skills/hudi-architect/README.md
similarity index 95%
rename from hudi-agent-gateway/skills/hudi-architect/README.md
rename to hudi-ai-operator/skills/hudi-architect/README.md
index a138324d43f8..edd5b6801a1c 100644
--- a/hudi-agent-gateway/skills/hudi-architect/README.md
+++ b/hudi-ai-operator/skills/hudi-architect/README.md
@@ -53,7 +53,7 @@ Copy this directory into your Claude Code skills location:
```bash
# From the root of a Hudi checkout.
-SKILL=hudi-agent-gateway/skills/hudi-architect
+SKILL=hudi-ai-operator/skills/hudi-architect
# User-level (available in every project)
mkdir -p ~/.claude/skills && cp -r "$SKILL" ~/.claude/skills/
@@ -99,7 +99,7 @@ baseline.
Every `hoodie.*` key mentioned in `SKILL.md` and `references/` is checked
against the actual `ConfigProperty` definitions in the Hudi source tree:
```bash
-python3 hudi-agent-gateway/skills/hudi-architect/validate_config_keys.py
+python3 hudi-ai-operator/skills/hudi-architect/validate_config_keys.py
```
Run it after any edit to the reference files (exit 1 lists unknown keys).
Intentional exceptions — e.g. future-version keys the references discuss but
never emit — live in `validate_config_keys_allowlist.txt` with a comment each.
@@ -107,7 +107,7 @@ Run it after any edit to the reference files (exit 1 lists
unknown keys). Intent
Validate the Flink baseline manifest without consulting the current checkout:
```bash
-python3 hudi-agent-gateway/skills/hudi-architect/validate_flink_capabilities.py
+python3 hudi-ai-operator/skills/hudi-architect/validate_flink_capabilities.py
```
Maintainers with the pinned release commit available locally can additionally
verify every source
@@ -117,7 +117,7 @@ Flink assessment.
Validate and render a complete bounded Flink design contract:
```bash
-python3 hudi-agent-gateway/skills/hudi-architect/validate_flink_design.py \
+python3 hudi-ai-operator/skills/hudi-architect/validate_flink_design.py \
--input
hudi-agent-gateway/tests/fixtures/hudi_architect/flink_pr2/stable_key.json \
--emit-sql
```
@@ -133,14 +133,14 @@ The mutable MOR schema-3 fixture is
Validate a structured existing-table reconciliation contract without rendering
SQL:
```bash
-python3
hudi-agent-gateway/skills/hudi-architect/validate_flink_existing_table.py \
+python3
hudi-ai-operator/skills/hudi-architect/validate_flink_existing_table.py \
--input
hudi-agent-gateway/tests/fixtures/hudi_architect/flink_pr5/compatible_mutable_cow.json
```
Credential-bearing evidence can be sanitized without executing or parsing it
as configuration:
```bash
-python3 hudi-agent-gateway/skills/hudi-architect/redact_sensitive_values.py <
evidence.txt
+python3 hudi-ai-operator/skills/hudi-architect/redact_sensitive_values.py <
evidence.txt
```
## What to look for during review
diff --git a/hudi-agent-gateway/skills/hudi-architect/RUNBOOK.md
b/hudi-ai-operator/skills/hudi-architect/RUNBOOK.md
similarity index 99%
rename from hudi-agent-gateway/skills/hudi-architect/RUNBOOK.md
rename to hudi-ai-operator/skills/hudi-architect/RUNBOOK.md
index 5d691415918e..9579026b6b9a 100644
--- a/hudi-agent-gateway/skills/hudi-architect/RUNBOOK.md
+++ b/hudi-ai-operator/skills/hudi-architect/RUNBOOK.md
@@ -52,8 +52,8 @@ Copy the `hudi-architect` directory into a Claude Code skills
location:
```bash
# The skill ships inside a Hudi checkout at:
-# hudi-agent-gateway/skills/hudi-architect
-SKILL=/path/to/hudi/hudi-agent-gateway/skills/hudi-architect
+# hudi-ai-operator/skills/hudi-architect
+SKILL=/path/to/hudi/hudi-ai-operator/skills/hudi-architect
# Option A — user-level: available in every project on your machine
mkdir -p ~/.claude/skills
diff --git a/hudi-agent-gateway/skills/hudi-architect/SKILL.md
b/hudi-ai-operator/skills/hudi-architect/SKILL.md
similarity index 100%
rename from hudi-agent-gateway/skills/hudi-architect/SKILL.md
rename to hudi-ai-operator/skills/hudi-architect/SKILL.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/redact_sensitive_values.py
b/hudi-ai-operator/skills/hudi-architect/redact_sensitive_values.py
similarity index 100%
rename from hudi-agent-gateway/skills/hudi-architect/redact_sensitive_values.py
rename to hudi-ai-operator/skills/hudi-architect/redact_sensitive_values.py
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/adr-template.md
b/hudi-ai-operator/skills/hudi-architect/references/adr-template.md
similarity index 100%
rename from hudi-agent-gateway/skills/hudi-architect/references/adr-template.md
rename to hudi-ai-operator/skills/hudi-architect/references/adr-template.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/config-templates.md
b/hudi-ai-operator/skills/hudi-architect/references/config-templates.md
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/config-templates.md
rename to hudi-ai-operator/skills/hudi-architect/references/config-templates.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/decision-tables.md
b/hudi-ai-operator/skills/hudi-architect/references/decision-tables.md
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/decision-tables.md
rename to hudi-ai-operator/skills/hudi-architect/references/decision-tables.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/flink-1.20-hudi-1.2.0-capabilities.md
b/hudi-ai-operator/skills/hudi-architect/references/flink-1.20-hudi-1.2.0-capabilities.md
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/flink-1.20-hudi-1.2.0-capabilities.md
rename to
hudi-ai-operator/skills/hudi-architect/references/flink-1.20-hudi-1.2.0-capabilities.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/flink-1.20-hudi-1.2.0-capabilities.toml
b/hudi-ai-operator/skills/hudi-architect/references/flink-1.20-hudi-1.2.0-capabilities.toml
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/flink-1.20-hudi-1.2.0-capabilities.toml
rename to
hudi-ai-operator/skills/hudi-architect/references/flink-1.20-hudi-1.2.0-capabilities.toml
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/flink-config-templates.md
b/hudi-ai-operator/skills/hudi-architect/references/flink-config-templates.md
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/flink-config-templates.md
rename to
hudi-ai-operator/skills/hudi-architect/references/flink-config-templates.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/flink-decision-overrides.md
b/hudi-ai-operator/skills/hudi-architect/references/flink-decision-overrides.md
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/flink-decision-overrides.md
rename to
hudi-ai-operator/skills/hudi-architect/references/flink-decision-overrides.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/flink-existing-table-reconciliation.md
b/hudi-ai-operator/skills/hudi-architect/references/flink-existing-table-reconciliation.md
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/flink-existing-table-reconciliation.md
rename to
hudi-ai-operator/skills/hudi-architect/references/flink-existing-table-reconciliation.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/flink-question-flow.md
b/hudi-ai-operator/skills/hudi-architect/references/flink-question-flow.md
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/flink-question-flow.md
rename to
hudi-ai-operator/skills/hudi-architect/references/flink-question-flow.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/flink-warnings.md
b/hudi-ai-operator/skills/hudi-architect/references/flink-warnings.md
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/references/flink-warnings.md
rename to hudi-ai-operator/skills/hudi-architect/references/flink-warnings.md
diff --git
a/hudi-agent-gateway/skills/hudi-architect/references/question-flow.md
b/hudi-ai-operator/skills/hudi-architect/references/question-flow.md
similarity index 100%
rename from hudi-agent-gateway/skills/hudi-architect/references/question-flow.md
rename to hudi-ai-operator/skills/hudi-architect/references/question-flow.md
diff --git a/hudi-agent-gateway/skills/hudi-architect/references/warnings.md
b/hudi-ai-operator/skills/hudi-architect/references/warnings.md
similarity index 100%
rename from hudi-agent-gateway/skills/hudi-architect/references/warnings.md
rename to hudi-ai-operator/skills/hudi-architect/references/warnings.md
diff --git a/hudi-agent-gateway/skills/hudi-architect/validate_config_keys.py
b/hudi-ai-operator/skills/hudi-architect/validate_config_keys.py
similarity index 97%
rename from hudi-agent-gateway/skills/hudi-architect/validate_config_keys.py
rename to hudi-ai-operator/skills/hudi-architect/validate_config_keys.py
index 4ed0e435d1eb..7e27e728be64 100644
--- a/hudi-agent-gateway/skills/hudi-architect/validate_config_keys.py
+++ b/hudi-ai-operator/skills/hudi-architect/validate_config_keys.py
@@ -31,7 +31,7 @@ Intentional exceptions (e.g. keys targeting a future Hudi
version that the
skill discusses but does not emit) live in validate_config_keys_allowlist.txt,
one key per line, '#' comments allowed.
-Run from anywhere: python3
hudi-agent-gateway/skills/hudi-architect/validate_config_keys.py
+Run from anywhere: python3
hudi-ai-operator/skills/hudi-architect/validate_config_keys.py
"""
import re
@@ -195,7 +195,7 @@ def main():
print("ERROR: no config keys resolved from the source tree.")
print(f" Looked under: {REPO_ROOT}")
print(" This script must run from a copy of the skill INSIDE a
Hudi checkout")
- print(" (hudi-agent-gateway/skills/hudi-architect/), not from an
installed copy under")
+ print(" (hudi-ai-operator/skills/hudi-architect/), not from an
installed copy under")
print(" ~/.claude/skills/. Run the repo copy instead.")
return 2
diff --git
a/hudi-agent-gateway/skills/hudi-architect/validate_config_keys_allowlist.txt
b/hudi-ai-operator/skills/hudi-architect/validate_config_keys_allowlist.txt
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/validate_config_keys_allowlist.txt
rename to
hudi-ai-operator/skills/hudi-architect/validate_config_keys_allowlist.txt
diff --git
a/hudi-agent-gateway/skills/hudi-architect/validate_flink_capabilities.py
b/hudi-ai-operator/skills/hudi-architect/validate_flink_capabilities.py
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/validate_flink_capabilities.py
rename to hudi-ai-operator/skills/hudi-architect/validate_flink_capabilities.py
diff --git a/hudi-agent-gateway/skills/hudi-architect/validate_flink_design.py
b/hudi-ai-operator/skills/hudi-architect/validate_flink_design.py
similarity index 100%
rename from hudi-agent-gateway/skills/hudi-architect/validate_flink_design.py
rename to hudi-ai-operator/skills/hudi-architect/validate_flink_design.py
diff --git
a/hudi-agent-gateway/skills/hudi-architect/validate_flink_existing_table.py
b/hudi-ai-operator/skills/hudi-architect/validate_flink_existing_table.py
similarity index 100%
rename from
hudi-agent-gateway/skills/hudi-architect/validate_flink_existing_table.py
rename to
hudi-ai-operator/skills/hudi-architect/validate_flink_existing_table.py