Skip to content

feat(skills): lift pr-triage, pr-stats, pr-maintainer-review#33

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:feat/lift-pr-skills-from-airflow
May 2, 2026
Merged

feat(skills): lift pr-triage, pr-stats, pr-maintainer-review#33
potiuk merged 1 commit into
apache:mainfrom
potiuk:feat/lift-pr-skills-from-airflow

Conversation

@potiuk

@potiuk potiuk commented May 2, 2026

Copy link
Copy Markdown
Member

Summary

  • Lift three maintainer-facing PR-queue skills from apache/airflow into the framework: pr-triage, pr-stats, pr-maintainer-review (renamed from maintainer-review per the category-prefix convention). 7522 lines of skill content moved.
  • Genericise: all apache/airflow<upstream>, Apache Airflow<PROJECT> per the framework's placeholder convention (enforced by tools/dev/check-placeholders.sh).
  • Add adopter-contract scaffolds in projects/_template/: pr-triage-config.md, pr-triage-comment-templates.md, pr-triage-ci-check-map.md, pr-maintainer-review-criteria.md. Each skill's SKILL.md adds a new ## Adopter configuration section pointing at these.
  • README's PR triage and review section graduates from a placeholder to the actual skill listing + adopter contract pointers.

What the skills do

Skill Purpose
pr-triage First-pass triage: classify, propose disposition (draft / comment / close / rebase / rerun / mark ready / ping), execute on confirmation. Successor to breeze pr auto-triage.
pr-stats Read-only summary tables of the open PR backlog grouped by area label.
pr-maintainer-review Deep code review one PR at a time. Reads diff, applies project's review criteria, drafts APPROVE / REQUEST_CHANGES / COMMENT review with inline findings.

Known follow-up work

The framework currently ships with airflow-flavored defaults inline in the supporting files of each skill (e.g. pr-triage/comment-templates.md references airflow's PR-quality-criteria URL; pr-maintainer-review/criteria.md lists airflow's code-review.instructions.md and AGENTS.md paths). The new template scaffolds in projects/_template/ document the contract; a follow-up PR will complete the extraction so the skills read exclusively from <project-config>/. Until then, non-airflow adopters override by forking the relevant supporting file into their own .claude/skills/. This is documented in each skill's new "Adopter configuration" section.

Two minor pre-commit-config additions

  • .typos.toml: allowlist bracket-prefix CLI prompt fragments (ody from [B]ody, equest from [R]equest, etc.) used in the skills' interactive prompts.
  • pr-triage-ci-check-map.md heading uses to instead of : markdownlint MD051 doesn't recognise UTF-8 arrows in heading-derived anchors.

Test plan

  • All pre-commit hooks pass (markdownlint, typos, doctoc, check-placeholders)
  • No apache/airflow / Apache Airflow literals in framework files
  • Slash command /maintainer-review/pr-maintainer-review renamed everywhere
  • Internal cross-refs (pr-triagepr-stats, pr-triagepr-maintainer-review) updated
  • Reviewer eyeballs whether the four template scaffolds capture the right contract knobs (committers team / area-label prefix / CI-check map / review-criteria source files)
  • CI link-check (lychee) passes

🤖 Generated with Claude Code

…apache/airflow

Three maintainer-facing PR-queue skills move from `<upstream>` into
the framework so adopters with a public contributor PR queue can
reuse the same playbook. The skills cover:

- `pr-triage` — first-pass triage: classify, propose disposition
  (draft / comment / close / rebase / rerun / mark ready / ping),
  execute on confirmation. Successor to `breeze pr auto-triage`.
- `pr-stats` — read-only summary tables of the open PR backlog
  grouped by area label.
- `pr-maintainer-review` — deep code review one PR at a time;
  reads the diff, applies the project's review criteria, drafts an
  `approve` / `request-changes` / `comment` review.

The slash command for the third one is renamed from
`/maintainer-review` → `/pr-maintainer-review` to fit the
category-prefix convention.

Project-agnostic genericisation:

- All `apache/airflow` → `<upstream>`, `Apache Airflow` →
  `<PROJECT>` (placeholder convention enforced by
  `tools/dev/check-placeholders.sh`).
- SKILL.md descriptions updated to point at
  `<project-config>/project.md → upstream_repo` for the default
  repo.

Adopter contract scaffolds added under `projects/_template/`:

- `pr-triage-config.md` — committers team handle, area-label
  prefix, project-specific labels, grace windows.
- `pr-triage-comment-templates.md` — comment-body URLs + AI-
  attribution footer wording + project display name.
- `pr-triage-ci-check-map.md` — CI-check name pattern → category +
  doc-URL map.
- `pr-maintainer-review-criteria.md` — list of project's review-
  criteria source files, security-model calibration doc, backport
  pattern, section anchors.

Each skill's SKILL.md adds a new `## Adopter configuration` section
documenting which template files it reads.

The framework currently ships with airflow-flavored defaults inline
in the supporting files of each skill (comment-templates.md,
criteria.md). Follow-up work will move those out so the skills are
fully project-agnostic — until then, non-airflow adopters override
by forking the relevant supporting file into their own
`.claude/skills/`.

README "PR triage and review" section updated from a placeholder to
the actual skill listing + adopter contract pointers.

Two pre-commit-config additions to keep typos / markdownlint clean:

- `.typos.toml`: allowlist bracket-prefix CLI prompt fragments
  (`ody` from `[B]ody`, `equest` from `[R]equest`, etc.) used in
  the skills' interactive prompts.
- `pr-triage-ci-check-map.md`: heading uses `to` instead of `→`
  for the anchor — markdownlint MD051 doesn't recognise UTF-8
  arrows in anchor links.

Generated-by: Claude Code (Claude Opus 4.7)
@potiuk potiuk merged commit b30cd5a into apache:main May 2, 2026
7 checks passed
potiuk added a commit that referenced this pull request May 2, 2026
…ract (#34)

Two doc surfaces updated to surface the four PR-skill scaffold
files added in #33:

- **Top-level README `## Adopting the framework`** — restructured
  into four subsections:
  - `Bootstrapping a new adopter` — three concrete steps (submodule
    add, copy `_template/`, symlink `.claude/skills/`) with the
    actual commands;
  - `Per-skill-family contract` — splits the adopter's required
    `<project-config>/` files by skill family (security workflow vs
    PR triage and review). Adopters who use only one family can
    delete the other family's scaffold;
  - `How skills resolve <project-config>/ paths` — explains the
    pure-text placeholder convention so adopters don't go hunting
    for an env var or build step;
  - `Keeping the submodule current` — preserves the existing
    `git submodule update --init --recursive` post-merge-hook
    guidance.
- **`projects/_template/README.md`** — adds a `### PR triage and
  review` subsection listing the four PR-skill scaffold files
  (`pr-triage-config.md`, `pr-triage-comment-templates.md`,
  `pr-triage-ci-check-map.md`, `pr-maintainer-review-criteria.md`)
  with per-file purpose and which skills consume them. The
  "Checklist after copying" splits into three groups (security
  workflow / PR triage and review / common finishers) so adopters
  who only use one family can skip the other group's checks.

doctoc TOCs regenerated.

Both surfaces carry the same disclaimer that the framework
currently embeds airflow-flavoured defaults inline in the PR-
skill supporting files; a follow-up PR completes the extraction.
Until then non-airflow adopters override by forking the relevant
supporting file into their own `.claude/skills/<skill-name>/`.

Generated-by: Claude Code (Claude Opus 4.7)
potiuk added a commit that referenced this pull request May 4, 2026
…sedes #30) (#44)

* docs: enable markdownlint MD040 and tag all fenced code blocks

Follow-up to #18. Flips MD040 from `false` to `true` and tags the 64
previously untagged fences across the tree.

Most fences ended up `text` (MCP call sketches, URL examples, dir
trees, plain output, commit trailers). 3 got `html` for HTML-comment
idempotency markers and the <details> envelope, 3 `markdown` for the
AI-disclosure block and rollup body samples, 1 `yaml` for the
subagent return block in sync-security-issue.

One nested-fence case in allocate-cve/SKILL.md needed the outer
fence promoted from 3 to 4 backticks so the inner 3-backtick block
renders as an actual nested code block instead of breaking the outer
one.

Signed-off-by: André Ahlert <andre@aex.partners>

* docs: extend MD040 tagging to skills added since #30

#30 was opened against an earlier tree state; the pr-management
skill family (lifted in #33, renamed to type-what-action in
#35) added 9 new skill supporting files with 20 untagged
fences that fail markdownlint MD040 once it's enabled.

This commit applies the same tagging convention #30 established
for the security family + tools to the new pr-management files:

  pr-management-triage/fetch-and-batch.md     1 fence
  pr-management-triage/comment-templates.md   2 fences  → markdown
  pr-management-triage/interaction-loop.md    4 fences  → text (UI mockups)
  pr-management-triage/workflow-approval.md   2 fences  → text (UI mockups)
  pr-management-stats/fetch.md                3 fences  → text (search queries)
  pr-management-stats/render.md               3 fences  → text (output samples)
  pr-management-stats/classify.md             3 fences  → text (pseudocode)
  pr-management-code-review/review-flow.md    1 fence   → text (CLI mockup)
  pr-management-code-review/prerequisites.md  1 fence   → text (HTTP error)

Most fences ended up `text` (the same catch-all #30's commit
message used for "MCP call sketches, URL examples, dir trees,
plain output"). Two `markdown` fences in
`pr-management-triage/comment-templates.md` because the
content is a markdown link / list item example that GitHub
should render as markdown.

prek run --all-files clean. MD040 reports zero violations
across the tree.

Generated-by: Claude Code (Claude Opus 4.7)

---------

Signed-off-by: André Ahlert <andre@aex.partners>
Co-authored-by: André Ahlert <andre@aex.partners>
@andreahlert andreahlert added the mode:Triage Agentic Triage — spot, classify, route, surface duplicates label May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mode:Triage Agentic Triage — spot, classify, route, surface duplicates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants