Add maintainer dashboard, trends, and recommendations to pr-stats skill#66464
Conversation
18ca6ce to
98fe327
Compare
choo121600
left a comment
There was a problem hiding this comment.
Nice restructure overall — the dashboard sections (hero / recommendations / velocity / pressure / funnel) translate the raw tables into something a maintainer can actually scan in 30 seconds, and keeping the original tables in collapsed <details> is the right call for users who want the raw numbers. Two doc-quality nits worth a follow-up commit before merge:
-
Anchor links drop the fragment in the URL.
Multiple cross-references write[`render.md#recommendation-rules`](render.md)— the visible text shows an anchor but the URL doesn't include it, so GFM won't actually scroll to that section. Same pattern in 10+ links acrossSKILL.md(Step 5a-5f bodies, Golden rules 6-7) and insiderender.md/aggregate.md. Fix is mechanical: copy the visible anchor into the URL. -
Some
actiontemplates aren't paste-clean.
The recommendation-rules table inrender.mdsays "The action template must be a literal slash-command the maintainer can paste — never instructions like 'consider running …'". A few rules in the same table don't satisfy that:- Rule 1:
/pr-triage all PR issues (focus on >4w bucket)— parenthetical - Rule 3:
/pr-triage stale → sweep 1a— unicode arrow + prose - Rule 8:
No immediate action — check next week.— not a command at all - Rule 10:
review /pr-triage stale cadence — too many PRs reaching the sweep— prose
For rules where there's genuinely no paste-action (rule 8), consider splitting
actioninto two columns (action_command+note) or makingactionnullable so the renderer can present no-command rules differently (e.g. a different icon). - Rule 1:
-
Mirror-PR reference.
Body says "the same conceptual changes have been mirrored to thepr-management-statsskill inapache/airflow-steward(PR coming separately)". Per AGENTS.md "Tracking issues for deferred work", a link to the mirror PR (or a tracking issue) here would lock in the parity. The two skills are intentionally pinned via.apache-steward.lockin adopter repos, so anyone who adopts the framework version sees the dashboard exactly when both PRs land.
CI is green, the change is well-scoped, no architectural concerns. None of the above is blocking.
🤖 This review was drafted by an AI-assisted tool (Claude Opus 4.7) and may contain mistakes. An Apache Airflow maintainer has confirmed the review before posting; please flag anything that looks off.
Drafted-by: Claude Code (Opus 4.7); reviewed by @choo121600 before posting
Restructure pr-stats from "two dense tables" to a multi-section maintainer dashboard. Hero cards show repo-health rating; a deterministic recommendation panel surfaces the next slash-command to run; weekly charts cover closure velocity, opened-vs-closed momentum, ready-for-review trend by top areas, and closed-by-triage-reason breakdown; a pressure ranking points at where to focus a triage/review session. Original tables move into collapsible details for maintainers who want raw per-area numbers. Adds five new sections to aggregate.md (pressure score, weekly velocity, opened-vs-closed buckets, ready-for-review trend by top areas, closed-by-triage-reason buckets, health rating), a pressure_weight helper to classify.md, a ready-label timeline fetch to fetch.md, and a full dashboard layout + recommendation rules + verbose legend to render.md.
98fe327 to
3396328
Compare
…106) Two doc-quality fixes for the pr-management-stats skill, mirroring the review feedback from @choo121600 on the corresponding apache/airflow PR (apache/airflow#66464): 1. **Anchor links drop the fragment in the URL.** Cross-references like `[`render.md#recommendation-rules`](render.md)` show an anchor in the visible text but the URL omits it, so GFM never scrolls to the target section. Mechanically copied each visible anchor into the URL across 26 references in 5 files. Three target headings were tweaked so the GFM-generated anchors actually exist: - `aggregate.md#counters` → `#counters-per-area` (matches heading "Counters (per area)") - `fetch.md`: "Known limitation — GitHub search-index lag for closed-since counts" renamed to "Known limitation" - `fetch.md`: "Closed / merged triaged PRs (since cutoff)" renamed to "Closed-merged-triaged PRs" 2. **Some `action` templates aren't paste-clean.** The recommendation-rules table in `render.md` conflated paste-ready slash commands with parentheticals, prose, and unicode arrows in a single "Action template" column — directly contradicting the rule on the same page that says "the action template must be a literal slash-command the maintainer can paste". Split into two columns: `Action` (slash command, or `—` when no command applies) and `Detail` (prose explanation that goes in the card body). Card rendering description and SKILL.md schema description updated to match.
|
Should be resolved @choo121600 |
Backport failed to create: v3-2-test. View the failure log Run detailsNote: As of Merging PRs targeted for Airflow 3.X In matter of doubt please ask in #release-management Slack channel.
You can attempt to backport this manually by running: cherry_picker 167d7cc v3-2-testThis should apply the commit to the v3-2-test branch and leave the commit in conflict state marking After you have resolved the conflicts, you can continue the backport process by running: cherry_picker --continueIf you don't have cherry-picker installed, see the installation guide. |
Summary
Restructure
pr-statsfrom "two dense tables" to a multi-section maintainer dashboard. Hero cards show repo-health rating; a deterministic recommendation panel surfaces the next slash-command to run; weekly charts cover closure velocity, opened-vs-closed momentum, ready-for-review trend by top areas, and closed-by-triage-reason breakdown; a pressure ranking points at where to focus a triage/review session. Original tables move into collapsible details for maintainers who want raw per-area numbers.What changed
SKILL.md— new frontmatter; new Steps 5a–5f (health/actions, weekly velocity, opened-vs-closed buckets, ready-trend, closed-by-reason, pressure score); restructured Step 6 (render dashboard primary, with detailed tables collapsed); new Golden rules 6+7 (deterministic recommendations, actions link to other skills).aggregate.md— five new sections: pressure score formula, weekly velocity, opened-vs-closed weekly buckets, ready-for-review trend by top areas, closed-by-triage-reason buckets, plus a health-rating thresholds table.classify.md— newpressure_weighthelper definition.fetch.md— new "Ready-label timeline" section documenting the aliased GraphQLLabeledEventquery needed for the ready-for-review trend chart.render.md— full restructure: HTML dashboard becomes primary output (hero cards / action panel / four chart panels / pressure-by-area / triage-funnel / collapsed detailed tables / verbose legend); Rich tables move to atables-onlyopt-in. New recommendation-rule table (10 rules), expanded colour scheme covering all chart elements, and a verbose multi-section legend.Why
Maintainers asked variations of "what should I do today" — a 17-column raw-numbers table requires the maintainer to scan, compare, and infer. The dashboard surfaces those conclusions explicitly with priority colours and one-paste slash-commands. Trend charts (closure velocity, opened-vs-closed momentum, ready-for-review per area) make queue dynamics legible at a glance instead of requiring weekly mental modelling.
The change keeps the skill read-only — every recommendation points at another skill (
pr-triage,maintainer-review) for the actual mutation.Mirror
The same conceptual changes have been mirrored to the
pr-management-statsskill inapache/airflow-steward(PR coming separately).Was generative AI tooling used to co-author this PR?
Generated-by: Claude Code (Opus 4.7) following the guidelines