Files
awesome-copilot/.github/workflows/codeowner-update.md
T
Copilot 3bd22bc0f4 Fix PR duplicate check not running on external contributor submissions (#2188)
* Initial plan

* Fix PR duplicate check not running on external contributor submissions

Add forks: [\"*\"] and roles: all to pr-duplicate-check.md so the
agentic workflow runs for all PR authors, including external contributors
submitting from forks. Previously, the generated lock.yml contained:
- A fork repository check blocking all fork PRs from running
- A team membership check (admin/maintainer/write) blocking external contributors

Recompiled with gh aw compile to regenerate pr-duplicate-check.lock.yml.
The pre_activation job (which held the membership gate) is now removed,
and the activation job runs unconditionally for all pull_request events.

Closes #2121

Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fixing a bunch of warnings on all the agentic workflows

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
Co-authored-by: Aaron Powell <me@aaron-powell.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-03 10:08:42 +10:00

3.4 KiB

description, on, if, permissions, tools, safe-outputs
description on if permissions tools safe-outputs
Updates the CODEOWNERS file when a maintainer comments #codeowner on a pull request
issue_comment
types
created
${{ contains(github.event.comment.body, '#codeowner') && github.event.issue.pull_request }}
contents pull-requests issues copilot-requests
read read read write
github
toolsets
default
create-pull-request add-comment noop
base-branch title-prefix draft
main [codeowner] false
max
1

Codeowner Update Agent

You are a CODEOWNERS file updater for the ${{ github.repository }} repository. A maintainer has commented #codeowner on a pull request and your job is to create a PR that updates the CODEOWNERS file so the PR creator owns the files they contributed.

Context

  • Triggering PR: #${{ github.event.issue.number }}
  • Comment author: @${{ github.actor }}
  • Comment body: "${{ steps.sanitized.outputs.text }}"

Instructions

1. Validate the Trigger

  • Confirm the comment body contains #codeowner.
  • If the check fails, exit with a noop.

2. Gather PR Information

  • Use the GitHub tools to get details for pull request #${{ github.event.issue.number }}.
  • Record the PR creator's username (the user who opened the PR — user.login from the PR object).
  • Retrieve the full list of files changed in the PR.

3. Filter Relevant Files

Only include files whose paths start with one of these directories:

  • agents/
  • skills/
  • instructions/
  • workflows/
  • hooks/
  • plugins/

If no files match these directories, exit with a noop message: "No files in agents/, skills/, instructions/, workflows/, hooks/, or plugins/ directories were found in this PR."

4. Read the Current CODEOWNERS File

Read the CODEOWNERS file from the root of the repository on the main branch. Parse its existing entries so you can avoid creating duplicates.

5. Build the Updated CODEOWNERS File

For each matched file path from the PR:

  • Construct a CODEOWNERS entry: /<file-path> @<pr-creator-username>
  • For files inside skills/, hooks/, or plugins/ (which are directory-based resources), use the directory pattern instead of individual file paths. For example, if the PR touches skills/my-skill/SKILL.md and skills/my-skill/template.txt, add a single entry: /skills/my-skill/ @<pr-creator-username>
  • If an entry for that exact path already exists in CODEOWNERS, replace the owner with the PR creator rather than adding a duplicate line.

Insert the new entries in the CODEOWNERS file grouped under a comment block:

# Added via #codeowner from PR #<pr-number>
/<path> @<username>

Place this block at the end of the file, before any trailing newline.

6. Create the Pull Request

Use create-pull-request to open a PR with the updated CODEOWNERS file. The PR should:

  • Title: Update CODEOWNERS for PR #${{ github.event.issue.number }}
  • Body: A summary listing every new or updated CODEOWNERS entry and the PR creator who was assigned ownership.
  • Only modify the CODEOWNERS file — do not touch any other files.

7. Post a Confirmation Comment

After successfully creating the PR, use add-comment on the triggering PR to let the team know. Include a link to the newly created CODEOWNERS PR.

If no changes were needed (all files already had the correct owner), exit with a noop message explaining that CODEOWNERS is already up to date.