7 Commits

  • Python: Improve PR template and breaking-change label automation (#6473)
    * Improve PR template and breaking-change label automation
    
    - Add a structured "Related Issue" section using GitHub closing keywords
    - Add a Review Guide prompt (major changes, impact, reviewer focus) with a
      note that the focus item is for human reviewers only
    - Add checklist items for issue linkage / no duplicate PRs and invert the
      breaking-change item (checked = not breaking)
    - Extend label-title-prefix to prepend [BREAKING] when the "breaking change"
      label is added
    - Add label-breaking-change workflow to apply the "breaking change" label
      when a PR title contains [BREAKING]
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add pull-requests agent skill with dotnet/python links
    
    - Add root .github/skills/pull-requests/SKILL.md covering PR description
      authoring (following the PR template) and the review-comment workflow
      (review -> plan -> user review -> implement -> reply to all -> resolve)
    - Symlink the skill from python/.github/skills and dotnet/.github/skills
    - Reference the skill from python/AGENTS.md and dotnet/AGENTS.md
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Fold breaking-change labeling into label-pr workflow
    
    Move the title -> 'breaking change' label logic into the existing label-pr
    workflow (which already applies the python/.NET labels) and drop the separate
    label-breaking-change workflow.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address PR title prefix review feedback
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Pin patched MessagePack for .NET restore
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Revert MessagePack central pin
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Move title prefix tests out of tracked GitHub tests
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Exclude skill docs from CI path filters
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Match skill symlinks in CI path exclusions
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Exclude AGENTS docs from CI path filters
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Scope title-prefix normalization to a real prefix
    
    The normalization branch in addTitlePrefix matched ^Python (no colon), so
    titles like "Python samples improvements" or "Pythonic refactor" were treated
    as already-prefixed and only re-cased, never receiving the "Python: " prefix.
    Scope the match to ^<prefix>:\s* so only an actual existing prefix is
    normalized; otherwise the prefix is prepended. Same fix applies to the .NET
    prefix (e.g. ".NETStandard bump").
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Add community PR limit workflow (#6229)
    * Add community PR limit workflow
    
    * Address PR limit workflow review feedback
  • Automated issue triage workflow (#5419)
    * Automated issue triage workflow
    
    * Bump dependencies
    
    * Fix issue-triage workflow: security, reliability, and testability
    
    Address six review comments on the issue-triage workflow:
    
    1. Change trigger from issues:opened to issues:labeled so the
       secret-backed triage flow is only triggered by a maintainer-
       controlled signal.
    
    2. Include inputs.issue_number in the concurrency group so
       workflow_dispatch runs for the same issue are properly
       de-duplicated.
    
    3. Improve team membership error handling to fail closed: verify
       the team exists before checking membership, and only treat a
       404 as 'not a member' (all other errors fail the job).
    
    4. Use optional chaining (issue.user?.login) for the API-fetched
       issue to handle deleted GitHub accounts without crashing.
    
    5. Extract the inline github-script into a testable module at
       .github/scripts/check_team_membership.js with 10 tests in
       .github/tests/test_check_team_membership.js covering all
       code paths (payload/API author resolution, deleted accounts,
       team lookup failure, 404 vs non-404 membership errors).
    
    6. Make the spam gate actually stop the job by exiting non-zero
       instead of just logging, so future steps cannot accidentally
       run for spam issues.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Make issue-triage workflow manually triggered only for initial testing
    
    Remove the 'issues' event trigger, keeping only 'workflow_dispatch' so the
    workflow can be tested manually before enabling automatic triggers.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <copilot@github.com>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Update script to ping only on waiting-for-author label (#4812)
    * update script to ping only on certain waiting for author label
    
    * Update .github/scripts/stale_issue_pr_ping.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update .github/scripts/stale_issue_pr_ping.py
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Fix docstring
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • Add automated stale issue and PR follow-up ping workflow (#4776)
    * Add script to ping on stale issues/PRs
    
    * Add script to ping on stale issues/PRs
    
    * Fix stale issue/PR ping script review comments
    
    - Rename TEAM_NAME env var to TEAM_SLUG for clarity
    - Add actionable error messages for 403/404 team lookup failures
    - Add contents:read permission for actions/checkout
    - Use github.event.inputs context with fallback for scheduled runs
    - Pin PyGithub to 2.6.0 for reproducible builds
    - Fetch comments once in should_ping() to reduce API calls
    - Make ping() retry loop idempotent (track comment/label state)
    - Validate DAYS_THRESHOLD with helpful error for non-numeric input
    - Fix timezone bug: use astimezone() instead of replace(tzinfo=)
    - Add comprehensive unit tests (29 tests)
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Copilot <copilot@github.com>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>