diff --git a/.github/risk-tiers.yml b/.github/risk-tiers.yml index ae5e35e5c..e7ef9d80e 100644 --- a/.github/risk-tiers.yml +++ b/.github/risk-tiers.yml @@ -138,7 +138,7 @@ domains: paths: ["extensions/**"] pools: ["canvas"] plugin: - paths: ["plugins/**"] + paths: ["plugins/**", ".github/plugin/**"] pools: ["plugin"] content: paths: ["agents/**", "instructions/**", "skills/**", "workflows/**", "hooks/**"] diff --git a/.github/workflows/label-pr-intent.yml b/.github/workflows/label-pr-intent.yml index dfb53320d..5e61be055 100644 --- a/.github/workflows/label-pr-intent.yml +++ b/.github/workflows/label-pr-intent.yml @@ -68,7 +68,8 @@ jobs: /^skills\// ], plugin: [ - /^plugins\// + /^plugins\//, + /^\.github\/plugin\// ], agent: [ /^agents\/.+\.agent\.md$/ diff --git a/CODEOWNERS b/CODEOWNERS index 9c58a6af4..e5c99c8f8 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -24,3 +24,6 @@ /website/**/cli-for-beginners/ @github/awesome-copilot-workshop-reviewers /website/**/app-for-beginners/ @github/awesome-copilot-workshop-reviewers /website/**/copilot-workshops/ @github/awesome-copilot-workshop-reviewers + +# Specific allocations +/.github/plugin/ @github/awesome-copilot-plugin-reviewers diff --git a/docs/maintainers/review-routing.md b/docs/maintainers/review-routing.md index f4ee50fca..74416e936 100644 --- a/docs/maintainers/review-routing.md +++ b/docs/maintainers/review-routing.md @@ -11,11 +11,12 @@ The root [`CODEOWNERS`](../../CODEOWNERS) file assigns every path to a team, not | `*` (default) | `@github/awesome-copilot-core-maintainers` | | `/extensions/` | `@github/awesome-copilot-canvas-reviewers` | | `/plugins/` | `@github/awesome-copilot-plugin-reviewers` | +| `/.github/plugin/` | `@github/awesome-copilot-plugin-reviewers` | | `/agents/`, `/instructions/`, `/skills/`, `/hooks/`, `/workflows/` | `@github/awesome-copilot-content-reviewers` | | `/.github/` (including GitHub Actions workflows), `/eng/` | `@github/awesome-copilot-core-maintainers` | | 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. - Never add an individual user to the `*` rule. diff --git a/eng/submission-gate.test.mjs b/eng/submission-gate.test.mjs index b0c891d37..62fa3ea81 100644 --- a/eng/submission-gate.test.mjs +++ b/eng/submission-gate.test.mjs @@ -33,6 +33,7 @@ import { STATUS_MARKER, summarizeChecks, syncPullRequestStatus, + touchedDomains, } from "./submission-gate.mjs"; 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"); }); +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", () => { const result = classifyRisk({ files: [file("skills/foo/SKILL.md", { changes: 10 })], tiers }); assert.equal(result.tier, "low");