Uh oh!
There was an error while loading. Please reload this page.
Add Copilot instructions for PR labeling - #2310
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds a new .github/copilot-instructions.md file to provide Copilot agents (and human contributors) with guidance on how to label pull requests. The labels drive GitHub's auto-generated release notes via .github/release.yml, so correct labeling is important for changelog accuracy.
Changes:
- Introduces a labeling policy requiring at least one
Area-*label, exactly oneIssue-*label, and optionallyOS-*orIgnorelabels. - Documents the connection between
Issue-*labels and the changelog categories defined in.github/release.yml. - Points readers to
gh label listand the repo's Labels page for the current label set, avoiding hard-coded lists that could drift.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Uh oh!
There was an error while loading. Please reload this page.
Andy Jordan (andyleejordan)
left a comment
There was a problem hiding this comment.
Bah why can't I approve this myself it's just instructions I asked it to add. Please approve Patrick Meinecke (@SeeminglyScience) or Justin Grote (@JustinGrote)
We had no `.github/copilot-instructions.md`, so agents working in this repo had to rediscover how to build and test, how the projects fit together, and how we label pull requests. This adds a single instructions file covering all of it: - **Build & Test** — `dotnet` directly for the fast inner loop versus `Invoke-Build` (which needs `InvokeBuild`/`platyPS`) for assembling the full module and running the complete CI suite. - **Architecture** — the project layout, key services, the LSP/DAP handler pattern, and how the server is wired up. - **Conventions** — C# style enforced by `.editorconfig`, the xUnit testing setup, and the multi-targeting story. - **Pull Request Labels** — every PR needs at least one `Area-*` label and exactly one `Issue-*` label (plus `OS-*` and `Ignore` when relevant). The `Issue-*` label is what GitHub's auto-generated release notes key off of (see `.github/release.yml`); a PR without one silently falls through to "Other Changes 🙏". The build, architecture, and conventions content previously rode along in #2298; consolidating it here keeps that PR focused on its LSP changes and gives us a single source of truth for the instructions. Drafted by Copilot (Claude Opus 4.8). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
86e06dc to
696233cCompare
Justin Grote (JustinGrote)
left a comment
There was a problem hiding this comment.
Agreed Low Risk. Maybe there's a special CODEOWNERS file for copilot instructions, docs, and other low risk things that don't require two reviewers to approve?
Andy Jordan (andyleejordan)
commented
Jun 18, 2026
I'm bypassing policy because it's dumb. |
Uh oh!
There was an error while loading. Please reload this page.
Why
PowerShellEditorServices has no
.github/copilot-instructions.md, so Copilot agents (and humans) opening PRs get no guidance on labeling. This matters for the changelog: GitHub's auto-generated release notes categorize merged PRs by theirIssue-*label, per.github/release.yml:Issue-Enhancement→ Enhancements & Features ✨Issue-Bug→ Squashed Bugs 🐛"*"catch-all → Other Changes 🙏So a PR with no
Issue-*label is silently miscategorized into "Other Changes".Ignoreexcludes a PR from the changelog, anddependabotPRs are excluded by author.What
Adds a focused "Pull Request Labels" policy stating every PR must carry at least one
Area-*label and exactly oneIssue-*label (Issue-Bug/Issue-Enhancement/Issue-Performance), withOS-*for platform-specific changes andIgnoreto exclude from release notes.It references
.github/release.ymlas the source of truth for the changelog mapping and tells readers to rungh label listfor the authoritativeArea-*set rather than hard-coding a list that will drift — so it does not duplicate existing config or CONTRIBUTING.