Align plugin marketplace ownership and PR review routing (#4749)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 88f4f5b8-b61a-4f5b-845f-dcc8c82ce55e
This commit is contained in:
Aaron Powell
2026-10-09 15:42:20 +11:00
committed by GitHub
co-authored by Copilot
parent 87b76d88f0
commit 04440f4f78
5 changed files with 15 additions and 3 deletions
+1 -1
View File
@@ -138,7 +138,7 @@ domains:
paths: ["extensions/**"] paths: ["extensions/**"]
pools: ["canvas"] pools: ["canvas"]
plugin: plugin:
paths: ["plugins/**"] paths: ["plugins/**", ".github/plugin/**"]
pools: ["plugin"] pools: ["plugin"]
content: content:
paths: ["agents/**", "instructions/**", "skills/**", "workflows/**", "hooks/**"] paths: ["agents/**", "instructions/**", "skills/**", "workflows/**", "hooks/**"]
+2 -1
View File
@@ -68,7 +68,8 @@ jobs:
/^skills\// /^skills\//
], ],
plugin: [ plugin: [
/^plugins\// /^plugins\//,
/^\.github\/plugin\//
], ],
agent: [ agent: [
/^agents\/.+\.agent\.md$/ /^agents\/.+\.agent\.md$/
+3
View File
@@ -24,3 +24,6 @@
/website/**/cli-for-beginners/ @github/awesome-copilot-workshop-reviewers /website/**/cli-for-beginners/ @github/awesome-copilot-workshop-reviewers
/website/**/app-for-beginners/ @github/awesome-copilot-workshop-reviewers /website/**/app-for-beginners/ @github/awesome-copilot-workshop-reviewers
/website/**/copilot-workshops/ @github/awesome-copilot-workshop-reviewers /website/**/copilot-workshops/ @github/awesome-copilot-workshop-reviewers
# Specific allocations
/.github/plugin/ @github/awesome-copilot-plugin-reviewers
+2 -1
View File
@@ -11,11 +11,12 @@ The root [`CODEOWNERS`](../../CODEOWNERS) file assigns every path to a team, not
| `*` (default) | `@github/awesome-copilot-core-maintainers` | | `*` (default) | `@github/awesome-copilot-core-maintainers` |
| `/extensions/` | `@github/awesome-copilot-canvas-reviewers` | | `/extensions/` | `@github/awesome-copilot-canvas-reviewers` |
| `/plugins/` | `@github/awesome-copilot-plugin-reviewers` | | `/plugins/` | `@github/awesome-copilot-plugin-reviewers` |
| `/.github/plugin/` | `@github/awesome-copilot-plugin-reviewers` |
| `/agents/`, `/instructions/`, `/skills/`, `/hooks/`, `/workflows/` | `@github/awesome-copilot-content-reviewers` | | `/agents/`, `/instructions/`, `/skills/`, `/hooks/`, `/workflows/` | `@github/awesome-copilot-content-reviewers` |
| `/.github/` (including GitHub Actions workflows), `/eng/` | `@github/awesome-copilot-core-maintainers` | | `/.github/` (including GitHub Actions workflows), `/eng/` | `@github/awesome-copilot-core-maintainers` |
| Copilot workshop content under `/website/` | `@github/awesome-copilot-workshop-reviewers` | | Copilot workshop content under `/website/` | `@github/awesome-copilot-workshop-reviewers` |
GitHub applies the **last** matching rule, so the workshop entries at the bottom of the file override the default team for their paths. When you edit `CODEOWNERS` by hand: GitHub applies the **last** matching rule, so the workshop entries and the `/.github/plugin/` entry override broader rules for their paths. When you edit `CODEOWNERS` by hand:
- Keep the `*` rule and the domain team block at the top of the file. - Keep the `*` rule and the domain team block at the top of the file.
- Never add an individual user to the `*` rule. - Never add an individual user to the `*` rule.
+7
View File
@@ -33,6 +33,7 @@ import {
STATUS_MARKER, STATUS_MARKER,
summarizeChecks, summarizeChecks,
syncPullRequestStatus, syncPullRequestStatus,
touchedDomains,
} from "./submission-gate.mjs"; } from "./submission-gate.mjs";
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
@@ -129,6 +130,12 @@ test("documentation and generated output are low risk", () => {
assert.equal(result.tier, "low"); assert.equal(result.tier, "low");
}); });
test("generated plugin marketplace output is owned by the plugin domain", () => {
assert.deepEqual(touchedDomains([file(".github/plugin/marketplace.json")], tiers.domains), [
{ id: "plugin", pools: ["plugin"] },
]);
});
test("small modification of an existing resource is low risk", () => { test("small modification of an existing resource is low risk", () => {
const result = classifyRisk({ files: [file("skills/foo/SKILL.md", { changes: 10 })], tiers }); const result = classifyRisk({ files: [file("skills/foo/SKILL.md", { changes: 10 })], tiers });
assert.equal(result.tier, "low"); assert.equal(result.tier, "low");