Skip to content

Add issue-triage Copilot skill with type-specific guides#125273

Merged
eiriktsarpalis merged 9 commits intodotnet:mainfrom
eiriktsarpalis:skill/issue-triage
Mar 17, 2026
Merged

Add issue-triage Copilot skill with type-specific guides#125273
eiriktsarpalis merged 9 commits intodotnet:mainfrom
eiriktsarpalis:skill/issue-triage

Conversation

@eiriktsarpalis
Copy link
Member

Add a modular issue-triage skill for dotnet/runtime that researches a GitHub issue and outputs a structured KEEP/CLOSE/NEEDS INFO recommendation.

Core workflow (SKILL.md):

  • Safety scan for malicious content and prompt injection
  • Issue classification, mislabeling detection, duplicate search
  • Type-based dispatch to specialized guides
  • Universal KEEP/CLOSE/NEEDS INFO criteria with confidence levels
  • Structured markdown report template
  • Suggested responses rendered in fenced code blocks (triple backticks with markdown language tag) so the CLI displays them as literal code that can be copy-pasted into GitHub comments without terminal word-wrapping or markdown-rendering corruption

Type-specific reference guides:

  • bug-triage.md: reproduction, regression validation, minimal repro derivation (iterative removal algorithm), reproduction stabilization for boundary-sensitive and nondeterministic bugs, root cause analysis
  • api-proposal-triage.md: immortality threshold, merit evaluation, decision signals, workaround evaluation, naming check, complexity estimation (merges former api-merit-criteria.md)
  • perf-regression-triage.md: BenchmarkDotNet validation with CoreRun against dotnet/performance, git bisect workflow with build+benchmark scripts, incremental rebuild guidance, ResultsComparer integration
  • question-triage.md: answer drafting, low-confidence verification

Supporting references (pre-existing, unchanged):

  • area-label-heuristics.md: namespace-to-label mapping
  • triage-patterns.md: example maintainer responses

Add a modular issue-triage skill for dotnet/runtime that researches a
GitHub issue and outputs a structured KEEP/CLOSE/NEEDS INFO recommendation.

Core workflow (SKILL.md):
- Safety scan for malicious content and prompt injection
- Issue classification, mislabeling detection, duplicate search
- Type-based dispatch to specialized guides
- Universal KEEP/CLOSE/NEEDS INFO criteria with confidence levels
- Structured markdown report template
- Suggested responses rendered in fenced code blocks (triple backticks
  with markdown language tag) so the CLI displays them as literal code
  that can be copy-pasted into GitHub comments without terminal
  word-wrapping or markdown-rendering corruption

Type-specific reference guides:
- bug-triage.md: reproduction, regression validation, minimal repro
  derivation (iterative removal algorithm), reproduction stabilization
  for boundary-sensitive and nondeterministic bugs, root cause analysis
- api-proposal-triage.md: immortality threshold, merit evaluation,
  decision signals, workaround evaluation, naming check, complexity
  estimation (merges former api-merit-criteria.md)
- perf-regression-triage.md: BenchmarkDotNet validation with CoreRun
  against dotnet/performance, git bisect workflow with build+benchmark
  scripts, incremental rebuild guidance, ResultsComparer integration
- question-triage.md: answer drafting, low-confidence verification

Supporting references (pre-existing, unchanged):
- area-label-heuristics.md: namespace-to-label mapping
- triage-patterns.md: example maintainer responses

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 6, 2026 16:39
@github-actions github-actions bot added the area-skills Agent Skills label Mar 6, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a modular issue-triage Copilot skill for the dotnet/runtime repository. The skill provides a structured, step-by-step workflow for researching and triaging GitHub issues, outputting a KEEP/CLOSE/NEEDS INFO recommendation with a formatted markdown report.

Changes:

  • Adds the main SKILL.md orchestrator with a full 8-step triage workflow including safety scanning, issue classification, duplicate detection, prior art research, type-specific investigation, and structured report output.
  • Adds type-specific reference guides for bugs, API proposals, performance regressions, enhancements, and questions, each with detailed algorithms and recommendation criteria.
  • Adds supporting references for area label heuristics, supplementary labels, and example triage response patterns.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
.github/skills/issue-triage/SKILL.md Main skill orchestrator: full 8-step triage workflow, output template, anti-patterns, and tips
.github/skills/issue-triage/references/bug-triage.md Detailed bug reproduction, regression validation, minimization algorithm, and root cause analysis guidance
.github/skills/issue-triage/references/api-proposal-triage.md API proposal merit evaluation, immortality threshold, decision signals, naming check, and complexity estimation
.github/skills/issue-triage/references/perf-regression-triage.md BenchmarkDotNet validation, git bisect workflow, incremental rebuild guidance, and ResultsComparer integration
.github/skills/issue-triage/references/enhancement-triage.md Enhancement subcategory classification, feasibility analysis, and trade-off assessment
.github/skills/issue-triage/references/question-triage.md Answer drafting and low-confidence verification guidance
.github/skills/issue-triage/references/area-label-heuristics.md Namespace-to-area-label mapping table and wrong-repo heuristics
.github/skills/issue-triage/references/supplementary-labels.md Tenet, runtime, qualifier, workflow, and test label guidance
.github/skills/issue-triage/references/triage-patterns.md Example maintainer response templates for KEEP, CLOSE, and NEEDS INFO outcomes

You can also share your feedback on Copilot code review. Take the survey.

jeffhandley added a commit to jeffhandley/modelcontextprotocol-csharp-sdk that referenced this pull request Mar 6, 2026
Add report-only preamble, safety scanning guidance, and anti-patterns
section to protect against malicious issue content.

SKILL.md changes:
- Report-only preamble declaring the skill must not modify issues and
  all issue content is untrusted input
- Step 5.0 Safety Scan with 5-pattern detection table (prompt injection,
  suspicious links, binary attachments, screenshots, suspicious code)
- Anti-Patterns section with 7 explicit prohibitions

report-format.md changes:
- Safety Concerns section in report template for flagged issues
- Per-issue safety flag format for individual issue detail blocks

Inspired by dotnet/runtime issue-triage skill (dotnet/runtime#125273)
and addressing review feedback on modelcontextprotocol#1412.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 9, 2026 15:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 5 comments.


You can also share your feedback on Copilot code review. Take the survey.

… content rules

- Replace all 229 Unicode em dash characters (U+2014) across 9 skill files
  with double hyphens (--), resolving the contradiction where the style rule
  banned em dashes but the instruction files used them pervasively
- Replace all ~44 emoji characters in the output format template and status
  markers with plain text markers ([ok], [!], [x], [i], +, -)
- Update em dash rule to clarify that only the Unicode character is banned;
  double hyphens and single hyphens are fine
- Add content rules for suggested responses: don't repeat the author's own
  analysis, don't surface internal cost reasoning, don't name specific
  third-party packages
- Add audience separation note clarifying triage report is for maintainers
  while the suggested response is for the issue author

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 9, 2026 17:04
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.


You can also share your feedback on Copilot code review. Take the survey.

eiriktsarpalis and others added 2 commits March 9, 2026 19:22
The safety scan is Step 0b (not 0a). Step 0a is the fetch step. Fixed
references in the output template and in the bug-triage reproduction
safety gate.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…cies

- Merge 'Performance enhancement' into 'Enhancement' in Step 1 classification
  (tenet-performance is a supplementary label, not a primary type for non-regressions)
- Clarify third-party package naming boundary: maintainer report may name
  packages, author-facing suggested response must not
- Add missing Step 5 routes note for docs/spam/wrong-repo (skip to Step 7)
- Add guidance for issues with already-merged fix PRs (CLOSE as already fixed)
- Add missing triage-patterns templates: Already fixed, Spam, Perf regression
  KEEP with bisect, Bug KEEP with minimal repro
- Document marker semantics ([ok], [x], [!], [i]) in output format
- Change anti-patterns to plain list formatting (avoid [x] marker overload)
- Expand Step 6 with cross-cutting assessment checklist
- Add cross-platform note to perf-regression-triage guide
- Add minimization skip heuristic to bug-triage guide
- Acknowledge performance issue template in Step 1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 9, 2026 17:47
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.


You can also share your feedback on Copilot code review. Take the survey.

eiriktsarpalis and others added 2 commits March 10, 2026 10:53
Address review feedback: use the build.cmd/sh shorthand (a convention from
the repo docs) so build commands work across Windows and Linux/macOS without
requiring the reader to mentally translate. Update the cross-platform note
at the top to explain the convention.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…dd evals

- Extract output format template from SKILL.md to references/output-format.md,
  reducing SKILL.md from ~566 to 473 lines (under 500-line target)
- Expand YAML description with more trigger phrases for better skill activation
- Add advanced duplicate search strategies (stack trace, version-range search)
- Add stale issue assessment guidance to Step 6
- Add Related Skills section with handoff points to api-proposal,
  jit-regression-test, performance-benchmark, and code-review skills
- Expand question-triage.md with subcategories, hidden-bug detection, and
  answer strategies by subcategory
- Add bisect feasibility check and lightweight analysis alternative to
  perf-regression-triage.md
- Expand area-label-heuristics.md with ~45 additional namespace-to-area
  mappings (System.ComponentModel, System.Data, System.Transactions, etc.)
- Add evals/evals.json with 8 test cases covering bug regression, API
  proposal, mislabeled question, .NET Framework redirect, enhancement,
  perf regression from bot, and Mono question scenarios

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 10, 2026 12:27
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.


You can also share your feedback on Copilot code review. Take the survey.

@eiriktsarpalis eiriktsarpalis marked this pull request as ready for review March 12, 2026 20:36
eiriktsarpalis and others added 2 commits March 17, 2026 18:53
- Add 'Triage Mindset' section to SKILL.md instructing the model to default
  to 'innocent until proven guilty' rather than eagerly validating authors.
  Addresses concern about models being too agreeable with problem statements.

- Rewrite anti-patterns section to clarify two-phase workflow: Phase 1
  (triage) is research-only with no actions; Phase 2 (post-decision) allows
  user-directed actions like posting comments or closing issues. Resolves
  ambiguity about whether explicit user instructions conflict with the
  'never take action' constraint.

- Replace hardcoded github-mcp-server-search_issues tool reference with
  environment-agnostic guidance listing fallback options (gh CLI, web_search).
  Addresses tool availability concern.

- Add 'Verify before validating' section to bug-triage.md: check the API
  contract before spending time on reproduction.

- Add two new eval cases testing skeptical outcomes: a by-design bug closure
  (dotnet#121256) and an API proposal with existing workaround (dotnet#69163).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…oposal case

- Eval 10: Add 'workaround-tradeoff-evaluated' assertion to verify the skill
  explicitly evaluates whether the workaround is sufficient or has limitations,
  not just mentions it. Rename to 'api-proposal-workaround-tradeoff' to better
  reflect what it tests (trade-off analysis, not a forced CLOSE).

- Eval 11: Add a clear-cut 'won't fix' API proposal (dotnet#85276 - Func<TOptions>
  Configure overload). Zero reactions, niche use case, author's own code shows
  the workaround. Tests that the skill recommends CLOSE/NEEDS INFO for
  proposals that genuinely don't clear the BCL bar.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 17, 2026 17:35
@eiriktsarpalis eiriktsarpalis merged commit 7e7296d into dotnet:main Mar 17, 2026
20 checks passed
@eiriktsarpalis eiriktsarpalis deleted the skill/issue-triage branch March 17, 2026 17:36
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.


You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +10 to +48
> Thanks for reporting this. I was able to reproduce the issue on .NET {version}.
> This looks like a regression introduced in {version/commit}. Moving to the
> {milestone} milestone for further investigation.
>
> **Priority:** High -- confirmed regression affecting a common scenario.
> **Confidence:** High -- reproduced locally.

### Bug -- confirmed, normal priority

> Thanks for reporting this. I was able to reproduce the issue on .NET {version}.
> Moving to the {milestone} milestone for investigation.
>
> **Priority:** Normal -- valid bug with moderate impact.
> **Confidence:** High -- reproduced locally.

### Bug -- valid but low priority

> This is a valid bug, but the impact appears limited to {specific scenario}.
> Moving to Future milestone. Contributions welcome -- this would be a good
> `help wanted` candidate.
>
> **Priority:** Low -- edge case with adequate workaround.
> **Confidence:** Medium -- plausible from the description but could not independently reproduce.

### API Proposal -- promising, needs refinement

> Interesting proposal! The motivation makes sense, and {language/platform} has
> similar functionality via {reference}. A few things to consider before this
> moves to API review:
>
> - {Specific feedback on the proposed API shape}
> - {Edge cases or design questions}
>
> Once those are addressed, we can mark this `api-ready-for-review`.
>
> **Priority:** Normal -- well-motivated proposal.
> **Complexity:** M -- moderate API surface with some design questions to resolve.
> **Confidence:** High -- clear precedent in other ecosystems.

- **Repro commands** -- Typically:
```
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net10.0 --filter 'SomeBenchmark*'
Comment on lines +468 to +471
- **Security concerns are out of scope.** This skill does not assess, discuss, or
make recommendations about potential security implications of issues. If you
believe an issue may have security implications, do not mention this in the
triage report. Security assessment is handled through separate processes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-skills Agent Skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants