Skip to content

chore(ci): add issue triage, stale, and Slack PR automation - #725

Merged
anfibiacreativa merged 8 commits into
mainfrom
chore/gh-issue-pr-automation
Sep 7, 2026
Merged

chore(ci): add issue triage, stale, and Slack PR automation#725
anfibiacreativa merged 8 commits into
mainfrom
chore/gh-issue-pr-automation

Conversation

@anfibiacreativa

Copy link
Copy Markdown
Member

What this does

This adds a set of GitHub Actions bots and issue/PR templates to help us keep
the backlog tidy without much manual effort. There is no runtime or site-visible
change here, it is all repo automation under .github/.

Included:

  • Issue forms (bug and feature) with required fields that drive triage: an
    "Experience Workspace (EW)" question, a Scope / Area picker, customer-vs-developer,
    and priority (P0 to P3). Blank issues are disabled.
  • triage-assign: applies the ew label when EW is selected, adds a scope:*
    label, and auto-assigns the area owner(s) based on scope.
  • issue-completeness: on open or edit, checks the issue has what triage needs
    (description, customer-vs-developer, priority, and for bugs the repro steps and a
    repro link). If something is missing it applies triage-incomplete and leaves a
    single comment that tags the reporter and clears once the issue is complete. A
    video is prompted but never blocks.
  • pr-ew-review: when a PR ticks the "Experience Workspace (EW)" box, it applies
    the ew label and requests review from the core team (excluding the PR author).
  • slack-pr-ticker: posts a note to Slack when a PR is opened, routing core vs
    external contributions to separate channels.
  • stale: warns then closes inactive issues (60 days, then 21) and PRs (49 days,
    then 14). Any activity resets it, and pinned / security / keep-open /
    milestoned items are exempt.
  • CONTRIBUTING.md documents all of the above.

Notes before this is fully live

  • The event-driven workflows and the issue forms only take effect once this is on
    main, so nothing runs from the branch alone (stale can be triggered manually via
    workflow_dispatch to smoke-test).
  • The Slack ticker needs two secrets, SLACK_WEBHOOK_CORE_PRS and
    SLACK_WEBHOOK_COMMUNITY_PRS. It fails safe and just skips if they are absent.
  • One scope area is named "Heli" as a placeholder, happy to rename it if there is a
    better label.

Fix #

Test URLs:

  • Not applicable, this PR only changes .github/ automation.

Experience Workspace (EW)

  • This PR touches Experience Workspace (EW)

- add issue forms (bug/feature) with required EW, scope, request-type,
  and priority fields; disable blank issues
- triage-assign: apply `ew` and `scope:*` labels and auto-assign area owners
- issue-completeness: flag missing info with `triage-incomplete` plus an
  OP-tagged comment that clears once the issue is complete
- stale: warn then close inactive issues (60d + 21d) and PRs (49d + 14d)
- slack-pr-ticker: route core vs outside-contributor PRs to two channels
- document the automation in CONTRIBUTING.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@aem-code-sync

aem-code-sync Bot commented Sep 7, 2026

Copy link
Copy Markdown

Hello, I'm the AEM Code Sync Bot and I will run some actions to deploy your branch.
In case there are problems, just click the checkbox below to rerun the respective action.

  • Re-sync branch
Commits

- change checkbox to "This PR's scope is Experience Workspace"
- keep pr-ew-review detection regex in sync with the new wording

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment thread .github/workflows/triage-assign.yml Outdated
Comment thread .github/ISSUE_TEMPLATE/bug_report.yml Outdated
Comment thread .github/ISSUE_TEMPLATE/bug_report.yml Outdated
Comment thread .github/ISSUE_TEMPLATE/bug_report.yml
Comment thread .github/ISSUE_TEMPLATE/bug_report.yml Outdated
Comment thread .github/ISSUE_TEMPLATE/bug_report.yml Outdated
Comment thread .github/ISSUE_TEMPLATE/bug_report.yml
Comment thread .github/ISSUE_TEMPLATE/bug_report.yml
Comment thread .github/ISSUE_TEMPLATE/bug_report.yml
Comment thread .github/ISSUE_TEMPLATE/feature_request.yml
Comment thread .github/pull_request_template.md Outdated
Comment thread .github/workflows/triage-assign.yml Outdated
Comment thread .github/workflows/stale.yml
…plates

- drop the "EW related?" dropdown from bug/feature forms
- drop the EW checkbox from the PR template
- remove the pr-ew-review workflow and ew labeling in triage-assign

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
anfibiacreativa and others added 2 commits September 7, 2026 14:22
- drop the placeholder "Heli" scope from bug/feature forms
- remove its triage-assign mapping and CONTRIBUTING table row

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Notice #1 (re-engage): no-pressure check-in at the stale threshold
- Notice #2 (final): companion step posts a closing-soon warning ~7 days out
- close after the grace period
- scope to items created on/after 2026-03-01 (start-date)
- exempt `hold` and `awaiting-maintainer` labels for PTO / on-us cases

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
mhaack
mhaack previously approved these changes Sep 7, 2026
anfibiacreativa and others added 2 commits September 7, 2026 15:29
- explain the two notices (re-engage, then final notice) before close
- note `hold` and `awaiting-maintainer` pause stale for PTO / on-us cases
- note the flow only applies to items created on/after 2026-03-01

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- triage-assign: apply scope label only, drop auto-assignment (work from the board)
- issue forms: replace "Customer request or developer need?" with "Who is affected?"
  (customer-facing / internal)
- issue forms: remove the Priority field
- issue-completeness: check "Who is affected?", drop the priority check
- CONTRIBUTING: reflect label-only triage and the new field

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@anfibiacreativa

Copy link
Copy Markdown
Member Author

Thanks @maximilianvoss @mhaack , this is much tighter now. Here's what changed based on the review:

  • Dropped the "Is this EW related?" question from the issue forms and the PR
    template, and removed the pr-ew-review workflow and ew labeling with it (@mhaack).
  • Removed the Helix option from the Scope list (@mhaack).
  • Triage now just applies a scope label, no auto-assignment. We work from the
    prioritized board instead, which is what you were after (@maximilianvoss).
  • Swapped "Customer request or developer need?" for "Who is affected?"
    (customer-facing or internal). It keeps the signal we use to triage impact
    without the feature-request framing.
  • Removed the Priority field entirely, since we set priority on the board.
  • Reworked the stale flow so nothing closes out of nowhere: a soft check-in first
    with no close pressure, then a final notice about a week before close, then
    close. It only applies to items created since March 1 so it does not sweep the
    old backlog, and a hold or awaiting-maintainer label pauses it for PTO or
    when the wait is on us (@mhaack).

I kept the Scope list as is (MCP and friends included) and the structured
reproduction link field, since one intake door and queryable fields are what let
us build the board later.

@anfibiacreativa
anfibiacreativa merged commit fecfd24 into main Sep 7, 2026
3 checks passed
@anfibiacreativa
anfibiacreativa deleted the chore/gh-issue-pr-automation branch September 7, 2026 15:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants