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.git
The following commit(s) were added to refs/heads/main by this push:
new 15180025fae PR triage: shorter contributor comments, link to docs for
fixes (#66055)
15180025fae is described below
commit 15180025fae9867608a9dde617a02ad76d6b78e8
Author: Jarek Potiuk <[email protected]>
AuthorDate: Thu Apr 30 19:59:20 2026 +0200
PR triage: shorter contributor comments, link to docs for fixes (#66055)
The draft / comment-only / close templates carried multi-paragraph
remediation prose, a Slack invite, and an inline "what to do next" list
that mostly paraphrased the linked Pull Request quality criteria doc.
Trim them to one short body + a link, and replace the per-violation
inline `prek` / `breeze` commands with a doc link so the bullet stays
on one line. Keep the "not a rejection" reassurance on draft and close
where it carries weight, the no-rush line, the AI-attribution footer,
and the canonical "Pull Request quality criteria" link text that
re-triage classification uses as a marker.
---
.github/skills/pr-triage/comment-templates.md | 91 +++++++++++----------------
1 file changed, 36 insertions(+), 55 deletions(-)
diff --git a/.github/skills/pr-triage/comment-templates.md
b/.github/skills/pr-triage/comment-templates.md
index 3211890a657..0550fb2e96f 100644
--- a/.github/skills/pr-triage/comment-templates.md
+++ b/.github/skills/pr-triage/comment-templates.md
@@ -88,17 +88,13 @@ Used when the action is `draft` (see
[`actions.md#draft`](actions.md)).
```markdown
-@<author> This PR has been converted to **draft** because it does not yet meet
our [Pull Request quality
criteria](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-quality-criteria).
+@<author> Converting to **draft** — this PR doesn't yet meet our [Pull Request
quality
criteria](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-quality-criteria).
-**Issues found:**
<violations>
<rebase_note_if_needed>
-**What to do next:**
-<what_to_do_next>
-
-Converting a PR to draft is **not** a rejection — it is an invitation to bring
the PR up to the project's standards so that maintainer review time is spent
productively. There is no rush — take your time and work at your own pace. We
appreciate your contribution and are happy to wait for updates. If you have
questions, feel free to ask on the [Airflow
Slack](https://s.apache.org/airflow-slack).
+See the linked criteria for how to fix each item, then mark the PR "Ready for
review". This is **not** a rejection — just an invitation to bring the PR up to
standard. No rush.
<ai_attribution_footer>
```
@@ -107,19 +103,7 @@ Converting a PR to draft is **not** a rejection — it is an
invitation to bring
`commits_behind > 50`:
```markdown
-> **Note:** Your branch is **<commits_behind> commits behind `<base>`**. Some
check failures may be caused by changes in the base branch rather than by your
PR. Please rebase your branch and push again to get up-to-date CI results.
-```
-
-`<what_to_do_next>` is the "what to do next" block read from
-the [Converting to draft
-section](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst)
-of the contributing docs. If unavailable at runtime, fall back
-to:
-
-```markdown
-- Fix each issue listed above.
-- Make sure static checks pass locally (`prek run --from-ref <base> --stage
pre-commit`).
-- Mark the PR as "Ready for review" when you're done.
+> **Note:** Your branch is **<commits_behind> commits behind `<base>`**.
Please rebase and push again to get up-to-date CI results.
```
---
@@ -132,25 +116,22 @@ Used when the action is `comment` for a
`deterministic_flag`
classification.
```markdown
-@<author> This PR has a few issues that need to be addressed before it can be
reviewed — please see our [Pull Request quality
criteria](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-quality-criteria).
+@<author> A few things need addressing before review — see our [Pull Request
quality
criteria](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-quality-criteria).
-**Issues found:**
<violations>
<rebase_note_if_needed>
-**What to do next:**
-<what_to_do_next>
-
-There is no rush — take your time and work at your own pace. We appreciate
your contribution and are happy to wait for updates. If you have questions,
feel free to ask on the [Airflow Slack](https://s.apache.org/airflow-slack).
+No rush.
<ai_attribution_footer>
```
-Identical body to the `draft` variant minus the "converted to
-draft" opener. The classification marker ("Pull Request quality
-criteria" link text) is still present — re-triage logic
-recognises both.
+Same shape as the `draft` variant minus the "Converting to
+draft" opener and the "not a rejection" reassurance (nothing
+is being drafted/closed here, so it doesn't apply). The
+classification marker ("Pull Request quality criteria" link
+text) is still present — re-triage logic recognises both.
---
@@ -163,13 +144,12 @@ has >3 flagged PRs) — see
[`actions.md#close`](actions.md).
```markdown
-@<author> This PR has been **closed because of multiple quality violations** —
it does not meet our [Pull Request quality
criteria](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-quality-criteria).
+@<author> Closing — this PR has multiple violations of our [Pull Request
quality
criteria](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-quality-criteria).
-**Issues found:**
<violations>
-- :x: **Multiple flagged PRs**: You currently have **<flagged_count> PRs**
flagged for quality issues in this repository. We recommend focusing on
improving your existing PRs before opening new ones.
+- :x: **Multiple flagged PRs**: <flagged_count> of your PRs are currently
flagged for quality issues. Please focus on those before opening new ones.
-You are welcome to open a new PR that addresses the issues listed above. There
is no rush — take your time and work at your own pace. If you have questions,
feel free to ask on the [Airflow Slack](https://s.apache.org/airflow-slack).
+This is **not** a rejection — you're welcome to open a new PR addressing the
issues above. No rush.
<ai_attribution_footer>
```
@@ -442,41 +422,42 @@ one bullet per violation returned by the classifier. Each
bullet has the form:
```
-- :x: **<category>**: <explanation> <details>
+- :x: **<category>** — <explanation>. See [docs](<doc_link>).
```
- `:x:` for severity `error`, `:warning:` for severity `warning`.
- `<category>` — short category name, e.g.
`Merge conflicts`, `mypy (type checking)`,
`Unresolved review comments`.
-- `<explanation>` — one sentence stating what's wrong
+- `<explanation>` — one short clause stating what's wrong
(e.g. *"Failing: mypy-airflow-core, mypy-providers"*).
-- `<details>` — remediation guidance with a doc link (e.g.
- *"Run `prek run mypy-airflow-core --all-files` locally to
- reproduce. See [mypy checks docs](…)"*).
+- `<doc_link>` — link to the canonical doc that explains how to
+ fix this category. Do **not** inline `prek` / `breeze`
+ commands or step-by-step remediation prose in the bullet —
+ the linked doc has them. Keep the bullet to one line.
-The category / explanation / details triples come from
+The category / explanation / doc-link triples come from
`assess_pr_checks` / `assess_pr_conflicts` /
`assess_pr_unresolved_comments`-equivalent logic — this skill
reproduces those deterministic assessments without the LLM
-layer. The canonical categories are:
+layer. The canonical categories and their doc links are:
-| Category | Signal | Remediation pattern |
+| Category | Signal | Doc link |
|---|---|---|
-| `Merge conflicts` | `mergeable == CONFLICTING` | `git fetch upstream <base>
&& git rebase upstream/<base>`, resolve, push |
-| `Failing CI checks` (fallback) | `checks_state == FAILURE`, no failed names
available | `prek run --from-ref <base> --stage pre-commit`; docs links to
static-checks + testing |
-| `Pre-commit / static checks` | failed check name matches `static checks`,
`pre-commit`, `prek` | `prek run --from-ref <base>` |
-| `Ruff (linting / formatting)` | `ruff` | `prek run ruff --from-ref <base>` +
`prek run ruff-format --from-ref <base>` |
-| `mypy (type checking)` | `mypy-*` | `prek --stage manual mypy-<hook>
--all-files` for each failing hook |
-| `Unit tests` | `unit test`, `test-` | `breeze run pytest <path> -xvs` |
-| `Build docs` | `docs`, `spellcheck-docs`, `build-docs` | `breeze build-docs`
|
-| `Helm tests` | `helm` | `breeze k8s run-complete-tests` |
-| `Kubernetes tests` | `k8s`, `kubernetes` | "See the K8s testing
documentation." |
-| `Image build` | `build ci image`, `build prod image`, `ci-image`,
`prod-image` | "Check Dockerfiles and dependencies." |
-| `Provider tests` | `provider` | `breeze run pytest <provider-test-path>
-xvs` |
-| `Other failing CI checks` | anything uncategorised | `prek run --from-ref
<base>` |
-| `Unaddressed Copilot review` | classification `stale_copilot_review` —
unresolved review thread by a `copilot*[bot]` login older than 7 days with no
author reply | "GitHub Copilot posted automated review comments on this PR that
have been sitting unaddressed for more than a week. **Some of the Copilot
suggestions may be irrelevant or incorrect** — that is expected. However it is
the author's responsibility to go through each thread and either apply the fix,
reply in-thread with a short [...]
-| `Unresolved review comments` | `unresolved_threads > 0` | "There are
unresolved review threads on this PR. For each one: either apply the suggestion
in a follow-up commit, or reply in-thread with a brief explanation of why the
feedback doesn't apply, or resolve the thread if the feedback is no longer
relevant. **Once you believe a thread is resolved — whether by pushing a fix or
by explaining why the suggestion doesn't apply — it is the author's
responsibility to mark it as resolved by [...]
+| `Merge conflicts` | `mergeable == CONFLICTING` | [Working with git —
rebasing](https://github.com/apache/airflow/blob/main/contributing-docs/10_working_with_git.rst)
|
+| `Failing CI checks` (fallback) | `checks_state == FAILURE`, no failed names
available | [Static
checks](https://github.com/apache/airflow/blob/main/contributing-docs/08_static_code_checks.rst)
|
+| `Pre-commit / static checks` | failed check name matches `static checks`,
`pre-commit`, `prek` | [Static
checks](https://github.com/apache/airflow/blob/main/contributing-docs/08_static_code_checks.rst)
|
+| `Ruff (linting / formatting)` | `ruff` | [Static checks —
ruff](https://github.com/apache/airflow/blob/main/contributing-docs/08_static_code_checks.rst)
|
+| `mypy (type checking)` | `mypy-*` | [Static checks —
mypy](https://github.com/apache/airflow/blob/main/contributing-docs/08_static_code_checks.rst)
|
+| `Unit tests` | `unit test`, `test-` |
[Testing](https://github.com/apache/airflow/blob/main/contributing-docs/09_testing.rst)
|
+| `Build docs` | `docs`, `spellcheck-docs`, `build-docs` | [Building
documentation](https://github.com/apache/airflow/blob/main/contributing-docs/11_documentation_building.rst)
|
+| `Helm tests` | `helm` | [Helm
tests](https://github.com/apache/airflow/blob/main/contributing-docs/testing/helm_unit_tests.rst)
|
+| `Kubernetes tests` | `k8s`, `kubernetes` | [K8s
testing](https://github.com/apache/airflow/blob/main/contributing-docs/testing/k8s_tests.rst)
|
+| `Image build` | `build ci image`, `build prod image`, `ci-image`,
`prod-image` | [Static
checks](https://github.com/apache/airflow/blob/main/contributing-docs/08_static_code_checks.rst)
|
+| `Provider tests` | `provider` | [Provider
testing](https://github.com/apache/airflow/blob/main/contributing-docs/12_provider_distributions.rst)
|
+| `Other failing CI checks` | anything uncategorised | [Static
checks](https://github.com/apache/airflow/blob/main/contributing-docs/08_static_code_checks.rst)
|
+| `Unaddressed Copilot review` | classification `stale_copilot_review` —
unresolved review thread by a `copilot*[bot]` login older than 7 days with no
author reply | [Pull request quality
criteria](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-quality-criteria)
|
+| `Unresolved review comments` | `unresolved_threads > 0` | [Pull request
quality
criteria](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-quality-criteria)
|
When a category has multiple matching failed check names,
list the first 5 and summarise the rest as `(+N more)`.