This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow-steward.git
The following commit(s) were added to refs/heads/main by this push:
new 835453b skills: clear 24 frontmatter SOFT warnings, no routing-recall
loss (#142)
835453b is described below
commit 835453b507d275c14b420d410e99d6f15b13cb84
Author: Yeonguk Choo <[email protected]>
AuthorDate: Wed May 13 18:04:05 2026 +0900
skills: clear 24 frontmatter SOFT warnings, no routing-recall loss (#142)
---
.claude/skills/pr-management-code-review/SKILL.md | 6 +++---
.claude/skills/pr-management-mentor/SKILL.md | 2 +-
.claude/skills/pr-management-triage/SKILL.md | 12 +++++-------
.claude/skills/security-cve-allocate/SKILL.md | 18 ++++++++----------
.claude/skills/security-issue-deduplicate/SKILL.md | 16 +++++++---------
.claude/skills/security-issue-fix/SKILL.md | 2 +-
.claude/skills/security-issue-import-from-md/SKILL.md | 11 ++++-------
.claude/skills/security-issue-import-from-pr/SKILL.md | 11 +++++------
.claude/skills/security-issue-invalidate/SKILL.md | 13 ++++++-------
.claude/skills/security-issue-sync/SKILL.md | 10 +++++-----
.claude/skills/security-issue-triage/SKILL.md | 4 ++--
.claude/skills/setup-isolated-setup-install/SKILL.md | 10 ++++------
.claude/skills/setup-isolated-setup-update/SKILL.md | 15 +++++----------
.claude/skills/setup-isolated-setup-verify/SKILL.md | 14 ++++++--------
.claude/skills/setup-override-upstream/SKILL.md | 11 +++--------
.claude/skills/setup-steward/SKILL.md | 7 +++----
.claude/skills/write-skill/SKILL.md | 17 ++++++-----------
17 files changed, 74 insertions(+), 105 deletions(-)
diff --git a/.claude/skills/pr-management-code-review/SKILL.md
b/.claude/skills/pr-management-code-review/SKILL.md
index 3e5d040..0150d14 100644
--- a/.claude/skills/pr-management-code-review/SKILL.md
+++ b/.claude/skills/pr-management-code-review/SKILL.md
@@ -5,13 +5,13 @@ description: |
Walk a maintainer through deep, sequential code review of open pull requests
on the configured `<upstream>` repo.
Defaults to the **"my reviews"** queue (the union of five maintainer signals
— see the Inputs table); selectors can
narrow to a single PR, an area label, or a collaborator subset. Drafts an
`approve` / `request-changes` / `comment`
- review per PR and posts on the maintainer's confirmation. Deep-review
counterpart to the triage skill.
+ review per PR and posts on the maintainer's confirmation.
when_to_use: |
Invoke when a maintainer says "review my PRs", "go through my review queue",
"review PR NNN", "review the
area:scheduler PRs", "do my review pass", or any variation on "look over PRs
I'm responsible for, one at a time."
Also fires on "review my CODEOWNER PRs", "pair this PR with Codex /
adversarial review", and "review the
- ready-for-maintainer-review queue". Distinct from `pr-management-triage`
(which decides *whether* to engage);
- this skill runs **after** triage has produced reviewable PRs.
+ ready-for-maintainer-review queue". Use after `pr-management-triage` has
produced reviewable PRs; skip when triage
+ has not yet engaged the PR.
argument-hint: "[pr:N] [area:LBL] [collab:true|false] [team:NAME] [ready]
[dry-run]"
license: Apache-2.0
---
diff --git a/.claude/skills/pr-management-mentor/SKILL.md
b/.claude/skills/pr-management-mentor/SKILL.md
index 419d240..1e0bb6f 100644
--- a/.claude/skills/pr-management-mentor/SKILL.md
+++ b/.claude/skills/pr-management-mentor/SKILL.md
@@ -9,7 +9,7 @@ description: |
decides whether a mentoring intervention is warranted,
drafts one comment per the project's tone guide and
convention pointers, and waits for explicit maintainer
- confirmation before posting via `gh`. Hands off to the
+ confirmation before posting via `gh`. Escalates to the
configured maintainer team on the four hand-off triggers.
when_to_use: |
Invoke when a maintainer says "mentor PR NNN", "help the
diff --git a/.claude/skills/pr-management-triage/SKILL.md
b/.claude/skills/pr-management-triage/SKILL.md
index 3ce3452..7adc468 100644
--- a/.claude/skills/pr-management-triage/SKILL.md
+++ b/.claude/skills/pr-management-triage/SKILL.md
@@ -5,13 +5,11 @@ description: |
Sweep open pull requests on the configured `<upstream>` repo,
classify each one against the project's quality criteria,
propose a disposition, and — on the maintainer's
- confirmation — carry out the action via `gh`. Decides
- whether each PR should be converted to draft, commented on,
- closed, rebased, have CI reruns triggered, have a
- first-time-contributor workflow approved, be pinged to a
- stale reviewer, or marked `ready for maintainer review`.
- Does **not** perform code review — that lives in
- `pr-management-code-review`.
+ confirmation — carry out the action via `gh`. Disposition
+ options per PR: draft / comment / close / rebase / CI-rerun
+ / workflow-approve / ping-stale-reviewer / mark `ready for
+ maintainer review`. Does **not** perform code review — that
+ lives in `pr-management-code-review`.
when_to_use: |
Invoke when a maintainer says "triage the PR queue", "go
through new contributor PRs", "run the morning triage",
diff --git a/.claude/skills/security-cve-allocate/SKILL.md
b/.claude/skills/security-cve-allocate/SKILL.md
index 5bc6f95..aeefa86 100644
--- a/.claude/skills/security-cve-allocate/SKILL.md
+++ b/.claude/skills/security-cve-allocate/SKILL.md
@@ -4,20 +4,18 @@ mode: Triage
description: |
Walk a security team member through allocating a CVE for an
`<tracker>` tracking issue (PMC-gated). Prints the ASF
- Vulnogram allocation URL and a CVE-ready title, waits for
- the allocated CVE ID, then updates the tracker in place:
- fills in the *CVE tool link* field, adds the `cve allocated`
- label, posts a status-change comment, and embeds the
- paste-ready CVE JSON in the body. Hands off to
- `security-issue-sync` to reconcile the rest of the tracker.
+ Vulnogram allocation URL, waits for the allocated CVE ID,
+ then updates the tracker in place. Tracker updates: CVE tool
+ link field, cve allocated label, status-change comment, CVE
+ JSON. Chains into `security-issue-sync` afterwards to
+ reconcile the rest of the tracker.
when_to_use: |
Invoke when a security team member says "allocate a CVE for
NNN", "open the ASF CVE tool for NNN", "time to allocate
NNN" — typically after the tracker has been assessed and the
- team has agreed the report is valid (process step 6). Skip
- before the valid/invalid decision has landed, or for
- trackers that already carry a CVE ID in their *CVE tool
- link* body field.
+ team has agreed the report is valid. Skip before the
+ valid/invalid decision has landed, or for trackers that
+ already carry a CVE ID in their *CVE tool link* body field.
argument-hint: "[issue-number] [CVE-YYYY-NNNNN]"
license: Apache-2.0
---
diff --git a/.claude/skills/security-issue-deduplicate/SKILL.md
b/.claude/skills/security-issue-deduplicate/SKILL.md
index f4b420b..716008a 100644
--- a/.claude/skills/security-issue-deduplicate/SKILL.md
+++ b/.claude/skills/security-issue-deduplicate/SKILL.md
@@ -3,18 +3,16 @@ name: security-issue-deduplicate
mode: Triage
description: |
Merge two <tracker> tracking issues that describe the same
- root-cause vulnerability (typically discovered independently by two
- reporters, arriving via different channels), preserving every
- reporter's credit, every mailing-list thread reference, and every
- independent attack-vector description. Updates the kept issue's body
- in place, closes the duplicate with the `duplicate` label, and
- regenerates the CVE JSON attachment so both finders land in
- `credits[]`.
+ root-cause vulnerability, preserving every reporter's credit,
+ every mailing-list thread reference, and every independent
+ attack-vector description. Updates the kept issue's body in place,
+ closes the duplicate with the `duplicate` label, and regenerates
+ the CVE JSON attachment so both finders land in `credits[]`.
when_to_use: |
Invoke when a security team member says "dedupe #NNN and #MMM",
"merge #MMM into #NNN", "#MMM is a duplicate of #NNN", or when the
- security-issue-import skill's Step 2a surfaces a STRONG match (GHSA
- ID collision) between a new report and an existing tracker. Also
+ security-issue-import skill surfaces a STRONG match (GHSA ID
+ collision) between a new report and an existing tracker. Also
appropriate as a periodic cleanup action when a triager spots two
open trackers describing the same bug from different angles.
argument-hint: "[kept-issue] [duplicate-issue]"
diff --git a/.claude/skills/security-issue-fix/SKILL.md
b/.claude/skills/security-issue-fix/SKILL.md
index f4b7607..6ca4949 100644
--- a/.claude/skills/security-issue-fix/SKILL.md
+++ b/.claude/skills/security-issue-fix/SKILL.md
@@ -18,7 +18,7 @@ when_to_use: |
the team has a rough consensus on what the fix should look
like. Skip for issues still being assessed, reports not yet
classified as valid vulnerabilities, or changes that require
- the private-PR fallback in process step 9 of README.md.
+ the private-PR fallback path.
argument-hint: "[issue-number]"
license: Apache-2.0
---
diff --git a/.claude/skills/security-issue-import-from-md/SKILL.md
b/.claude/skills/security-issue-import-from-md/SKILL.md
index e77a137..ca47e22 100644
--- a/.claude/skills/security-issue-import-from-md/SKILL.md
+++ b/.claude/skills/security-issue-import-from-md/SKILL.md
@@ -3,13 +3,10 @@ name: security-issue-import-from-md
mode: Triage
description: |
Open one or more `<tracker>` tracking issues from a markdown
- file containing a batch of security findings (typically the
- output of an AI security review or a third-party scanner).
- Each finding becomes one tracker landing in the `Needs
- triage` board column. Unlike `security-issue-import` (Gmail)
- and `security-issue-import-from-pr` (public PR), there is no
- inbound reporter to reply to and no PR to inspect — the file
- itself is the full report.
+ file containing a batch of security findings. Each finding
+ becomes one tracker landing in the `Needs triage` board
+ column. The file itself is the full report — there is no
+ inbound reporter to reply to and no PR to inspect.
when_to_use: |
Invoke when a security team member says "import findings
from <path>", "import this scan output", "load these issues
diff --git a/.claude/skills/security-issue-import-from-pr/SKILL.md
b/.claude/skills/security-issue-import-from-pr/SKILL.md
index 1fc7062..2bde220 100644
--- a/.claude/skills/security-issue-import-from-pr/SKILL.md
+++ b/.claude/skills/security-issue-import-from-pr/SKILL.md
@@ -5,12 +5,11 @@ description: |
Open a tracking issue in <tracker> for a security-relevant fix that
has already been opened (or merged) as a public PR in <upstream>,
in the case where there is no inbound `<security-list>`
- report. The tracker lands in the `Assessed` board column (the
- team-deliberate import implies the security assessment has already
- happened) with the scope label applied, `pr created` / `pr merged`
- reflecting the PR's state, and `Remediation developer` / `PR with
- the fix` body fields populated from the PR — ready for
- `security-cve-allocate` to take over.
+ report. The tracker lands in the `Assessed` board column with
+ the scope label applied, `pr created` / `pr merged` reflecting
+ the PR's state, and `Remediation developer` / `PR with the
+ fix` body fields populated from the PR. Pairs with
+ `security-cve-allocate` afterwards.
when_to_use: |
Invoke when a security team member says "import a tracker from
PR <N>", "open a tracker for <upstream>#NNN", "we need a CVE
diff --git a/.claude/skills/security-issue-invalidate/SKILL.md
b/.claude/skills/security-issue-invalidate/SKILL.md
index 89aa310..c9e9f4f 100644
--- a/.claude/skills/security-issue-invalidate/SKILL.md
+++ b/.claude/skills/security-issue-invalidate/SKILL.md
@@ -14,13 +14,12 @@ description: |
when_to_use: |
Invoke when a security team member says "close NN as invalid",
"invalidate NN", "mark NN invalid", "NN is not a security
- issue" — typically after a Step 5 consensus-invalid decision
- in the issue's discussion. Not appropriate when the team has
- not yet reached consensus, when a CVE has already been allocated
- (a separate Vulnogram REJECT flow is required first), or when
- the advisory has already shipped (closing as invalid then is a
- retraction with public consequences and needs explicit team
- escalation).
+ issue" — typically after a consensus-invalid decision in the
+ issue's discussion. Skip when the team has not yet reached
+ consensus, when a CVE has already been allocated (a separate
+ Vulnogram REJECT flow runs first), or when the advisory has
+ already shipped — closing as invalid then is a retraction with
+ public consequences and warrants explicit team escalation.
argument-hint: "[issue-number]"
license: Apache-2.0
---
diff --git a/.claude/skills/security-issue-sync/SKILL.md
b/.claude/skills/security-issue-sync/SKILL.md
index 06a37ca..63aff78 100644
--- a/.claude/skills/security-issue-sync/SKILL.md
+++ b/.claude/skills/security-issue-sync/SKILL.md
@@ -4,11 +4,11 @@ mode: Triage
description: |
Synchronize a security issue in <tracker> with the state of its
GitHub discussion, the <security-list> mailing thread, and any
- <upstream> PRs that fix it. The skill gathers all relevant signals,
- proposes label, milestone, assignee, field and draft-email updates, and
- only applies changes the user has explicitly confirmed. Suggests the next
- step in the handling process and prints the CVE allocation link when a CVE
- is needed.
+ <upstream> PRs that fix it. The skill gathers all relevant signals
+ and proposes label / milestone / assignee / field / draft-email
+ updates — applying only what the user has explicitly confirmed.
+ Suggests the next step in the handling process and prints the CVE
+ allocation link when a CVE is needed.
when_to_use: |
Invoke when a security team member says "sync issue NNN", "refresh the
state of issue NNN", "update issue NNN from the thread", or "walk me
diff --git a/.claude/skills/security-issue-triage/SKILL.md
b/.claude/skills/security-issue-triage/SKILL.md
index 82c8d13..b99a616 100644
--- a/.claude/skills/security-issue-triage/SKILL.md
+++ b/.claude/skills/security-issue-triage/SKILL.md
@@ -4,8 +4,8 @@ mode: Triage
description: |
For each open `<tracker>` issue carrying the `needs triage`
label, read body + comments and classify the candidate
- disposition into one of five classes: VALID, DEFENSE-IN-DEPTH,
- INFO-ONLY, NOT-CVE-WORTHY, PROBABLE-DUP. On user confirmation,
+ disposition into one of five classes: VALID / DEFENSE-IN-DEPTH
+ / INFO-ONLY / NOT-CVE-WORTHY / PROBABLE-DUP. On user confirmation,
posts a triage-proposal comment that invites the security team
to react. Read-only on tracker state — no label flips, closes,
or CVE allocations. Supports `--retriage` for re-litigating
diff --git a/.claude/skills/setup-isolated-setup-install/SKILL.md
b/.claude/skills/setup-isolated-setup-install/SKILL.md
index 76003d6..b5667f4 100644
--- a/.claude/skills/setup-isolated-setup-install/SKILL.md
+++ b/.claude/skills/setup-isolated-setup-install/SKILL.md
@@ -2,12 +2,10 @@
name: setup-isolated-setup-install
description: |
Guide an adopter through the first-time install of the
- framework's secure agent setup — pinned system tools
- (`bubblewrap`, `socat`, `claude-code`), project + user-scope
- `.claude/settings.json` wiring, the `claude-iso` clean-env
- wrapper, and the user-scope `sandbox-bypass-warn` /
- `sandbox-status-line` hooks. Walks every step interactively;
- never auto-runs sudo, shell-rc edits, or settings overwrites.
+ framework's secure agent setup (bubblewrap + socat +
+ claude-code, sandbox/permissions/clean-env layers). Walks
+ every step interactively; never auto-runs sudo, shell-rc
+ edits, or settings overwrites.
when_to_use: |
Invoke when the user says "set up the secure agent setup",
"first-time install of the secure config", "install the
diff --git a/.claude/skills/setup-isolated-setup-update/SKILL.md
b/.claude/skills/setup-isolated-setup-update/SKILL.md
index cbf0a68..8736c26 100644
--- a/.claude/skills/setup-isolated-setup-update/SKILL.md
+++ b/.claude/skills/setup-isolated-setup-update/SKILL.md
@@ -1,16 +1,11 @@
---
name: setup-isolated-setup-update
description: |
- Surface drift between the user's installed secure agent setup and
- the framework's latest. Reports framework-checkout updates
- (`git pull` on `airflow-steward`), pinned-tool upgrade candidates
- (`bubblewrap`, `socat`, `claude-code` newer than the manifest's
- 7-day-cooldown floor), drift between the user-scope script
- copies (`~/.claude/scripts/`, `~/.claude/agent-isolation/`) and
- the framework's source-of-truth, and any newly-allowed denial
- command that should still be denied. Read-only — surfaces
- candidates and diffs, never auto-applies. The user decides what
- to update.
+ Surface drift between the user's installed secure agent setup
+ and the framework's latest (framework checkout, pinned tools,
+ user-scope script copies, denial commands). Read-only —
+ surfaces candidates and diffs, never auto-applies. The user
+ decides what to update.
when_to_use: |
Invoke when the user says "update secure setup", "check for
secure-config drift", "is my setup at the framework's latest?",
diff --git a/.claude/skills/setup-isolated-setup-verify/SKILL.md
b/.claude/skills/setup-isolated-setup-verify/SKILL.md
index 3a2d5c7..ef9826b 100644
--- a/.claude/skills/setup-isolated-setup-verify/SKILL.md
+++ b/.claude/skills/setup-isolated-setup-verify/SKILL.md
@@ -1,14 +1,12 @@
---
name: setup-isolated-setup-verify
description: |
- Walk the verification checklist documented in
- `docs/setup/secure-agent-setup.md` and report ✓ done / ✗ missing / ⚠ partial
- for each piece of the secure agent setup — project + user-scope
- `settings.json` wiring, hook scripts present + executable,
- `claude-iso` sourced, pinned tool versions installed at the
- pinned versions, status-line state in this session, and the three
- denial commands that prove the sandbox + permissions + clean-env
- layers are actually firing. Read-only — never modifies anything.
+ Walk the verification checklist for the framework's secure
+ agent setup and report ✓ done / ✗ missing / ⚠ partial for
+ each check, with concrete evidence (file paths, command
+ output, version strings). Coverage: settings.json wiring,
+ claude-iso sourced, pinned tool versions, denial commands.
+ Read-only — never modifies anything.
when_to_use: |
Invoke when the user says "verify my secure setup", "is my
secure config done?", "check that the secure agent setup is
diff --git a/.claude/skills/setup-override-upstream/SKILL.md
b/.claude/skills/setup-override-upstream/SKILL.md
index d90f9b3..6868fbc 100644
--- a/.claude/skills/setup-override-upstream/SKILL.md
+++ b/.claude/skills/setup-override-upstream/SKILL.md
@@ -3,14 +3,9 @@ name: setup-override-upstream
description: |
Walk an adopter through promoting a local
`.apache-steward-overrides/<skill>.md` file into a PR
- against `apache/airflow-steward`. Lists the adopter's
- overrides, helps pick one, reads it alongside the framework
- skill it modifies, decides whether the change is
- generalisable, designs the framework-level abstraction,
- implements it in the user's local apache-steward clone, and
- opens the PR. After the PR merges and the adopter runs
- `/setup-steward upgrade`, the override file is no longer
- needed and the skill prompts for its removal.
+ against `apache/airflow-steward`. After the PR merges and
+ the adopter runs `/setup-steward upgrade`, the override file
+ is no longer needed and the skill prompts for its removal.
when_to_use: |
Invoke when the user says "upstream my override", "promote
this override to the framework", "convert my local
diff --git a/.claude/skills/setup-steward/SKILL.md
b/.claude/skills/setup-steward/SKILL.md
index 579b334..fb9b8b4 100644
--- a/.claude/skills/setup-steward/SKILL.md
+++ b/.claude/skills/setup-steward/SKILL.md
@@ -19,10 +19,9 @@ description: |
`.apache-steward-overrides/`
`/setup-steward unadopt` — reverse the adoption (snapshot,
locks, symlinks, hook, doc
- sections, this skill itself);
- preserves `.apache-steward-
- overrides/` by default
- (main-checkout only)
+ sections); preserves
+ `.apache-steward-overrides/` by
+ default (main-checkout only)
when_to_use: |
Invoke when the user says "adopt apache-steward", "adopt
apache/airflow-steward", "set up steward in this repo",
diff --git a/.claude/skills/write-skill/SKILL.md
b/.claude/skills/write-skill/SKILL.md
index 340c3a6..b3a118f 100644
--- a/.claude/skills/write-skill/SKILL.md
+++ b/.claude/skills/write-skill/SKILL.md
@@ -1,18 +1,13 @@
---
name: write-skill
description: |
- Author a new skill for the Apache Steward framework, or update an
- existing one. Walks the user through the framework-specific skill
- shape — YAML frontmatter (with `license: Apache-2.0`), bundled
- resources (scripts / references / assets), placeholder convention
- (`<tracker>`, `<upstream>`, `<security-list>`), the
- Adopter-overrides + Snapshot-drift preamble every framework skill
- carries, the prompt-injection-defence patterns required of every
- skill that ingests external content (per the 2026-05 audit
- recorded at the gist link in the skill body), and the Privacy-LLM
- gate-check boilerplate. Scaffolds the skill via `init_skill.py`
- and validates via the framework's existing
+ Author a new skill for the Apache Steward framework, or update
+ an existing one. Walks the user through the framework's skill
+ shape (frontmatter, resources, placeholder convention,
+ prompt-injection defences, Privacy-LLM gate-check) and
+ validates via the framework's existing
[`tools/skill-validator`](../../../tools/skill-validator/).
+ Scaffolds new skills via `init_skill.py`.
when_to_use: |
Invoke when the user says "write a skill", "create a new skill",
"add a skill for X", "I want to make a skill that does Y", or