Trace a reported dotnet/maui issue to the commit or PR that introduced its regression using release boundaries, source history, and linked evidence. Use for "/issue trace-regression", "which PR introduced this issue", or "trace this regression". Distinguish confirmed introductions from likely candidates and missing evidence. Report-only; not PR regression-risk review, CI failure triage, or automatic bug fixing.
72
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Investigate the supplied issue independently and produce one evidence-based report.
Use GPT-6.1 Sol in the automated workflow. Do not delegate to other models or
invoke find-regression-risk: that skill checks whether a PR removes earlier
fixes, not which change introduced an issue.
jq can select relevant portions of the frozen context.Read the frozen context.json supplied by the workflow. It contains the issue,
its form fields, up to 100 latest comments, reported good/bad versions, resolved
release tags and commit SHAs, and a bounded comparison. Read gaps,
commentsTruncated, comparison.commitsTruncated and filesPossiblyTruncated;
an incomplete list cannot prove a change is absent. With unavailable or invalid
context, report Insufficient evidence, explain the collection gap and request
a refresh rather than inventing a regression assessment.
For interactive use without workflow context, read the supplied issue and its comments through GitHub. The deterministic collector is also available:
. .github/scripts/Get-IssueRegressionContext.ps1
$issue = gh api repos/dotnet/maui/issues/ISSUE_NUMBER | ConvertFrom-Json
Get-IssueRegressionContext -Issue $issue | ConvertTo-Json -Depth 20Extract expected versus actual behavior, affected controls/handlers, platforms, OS versions, reproduction conditions, and the reported working/failing versions. Attribute later corrections to their comment permalink; do not silently replace the original report. Labels and previous AI reports are leads, not proof. Xamarin.Forms-only behavior or an untested prior release is not evidence of a MAUI regression.
The form's "Version with bug" is an observed failing version, not necessarily the first bad release. Keep .NET SDK, MAUI package/workload, Android/iOS workload, OS and dependency versions separate.
Use boundaries.reportedGood and boundaries.reportedBad only when their status
is resolved. The collector resolves exact tags (including annotated tags);
ambiguous means prefixed and unprefixed tags disagree. For an unresolved
version, inspect release/tag metadata to establish an exact mapping or explicitly
leave it unknown. Never guess a tag or map a major version to its latest release.
Treat comparison.isForwardRange == false as a non-linear, reversed or identical
range, not a valid good-to-bad interval; investigate servicing/backport ancestry.
Even a forward comparison establishes code ancestry, not runtime causality.
Duplicate version headings are also ambiguous; do not choose a value from the
raw issue body to bypass that gap. Ask for one unambiguous reported version.
Headings inside fenced examples are not form fields. Respect the collector's
comment-snapshot revalidation gaps rather than treating a short list as complete.
If the source interval does not explain the symptom, inspect relevant dependency
version changes (eng/Version.Details.xml, package versions, workload metadata).
Clearly distinguish an upstream regression, an OS change or a pre-existing issue
from a MAUI introduction. Stop with an evidence gap instead of blaming a random PR.
Rank at most three supported candidates and include contrary evidence. When no
version boundary is known, a candidate must explicitly state that limitation.
| Classification | Required evidence |
|---|---|
| Confirmed introduction | Verifiable linked evidence of the same repro/test passing on the candidate's parent and failing on the candidate, under equivalent platform/toolchain conditions, plus verified shipped ancestry. State whose execution produced the evidence; this workflow does not run tests or bisect. |
| Likely introduction | Verified good/bad source difference and shipped history, with a concrete causal explanation matching the symptom, but no paired runtime confirmation. |
| Candidate | A relevant changed behavior that plausibly explains the symptom, with unresolved boundary, ancestry or reproduction evidence explicitly identified. |
| Insufficient evidence | No defensible introducing change; specify the smallest missing fact or comparison needed. |
Do not promote maintainer speculation or an earlier AI summary into confirmation. Never claim a completed bisect, successful reproduction, test result or clean range from static inspection. If evidence cannot distinguish candidates, propose the specific same-environment parent/candidate comparison that would do so.
Follow the /review tests visual style: a visible author/issue header, exactly
two blue flat-square Scope/Range badges, and closed top-level sibling
Regression Analysis and Follow-up accordions. Nest Version boundary
and Candidate changes inside Regression Analysis. Do not use <details open>.
Keep prose near 300 words; omit raw logs, full diff/history inventories and empty
candidate lists. Place the conclusion first inside Regression Analysis.
Use the issue author, not the requester. Use seven-character resolved SHAs for
the Range badge (GOOD..BAD); use unknown if either boundary is unresolved.
Put full-SHA commit/comparison links and the reported versions in Version boundary.
Omit unknown mentions/links. Each candidate needs a PR/commit permalink, a
SHA-pinned source/diff link, the causal change, and the specific uncertainty.
Use the following layout, replacing placeholders with evidence:
<!-- Issue Regression Trace -->
## Regression Trace
> @AUTHOR_LOGIN — regression investigation for #ISSUE_NUMBER.
<p align="left">
<img alt="Scope Regression trace" src="https://img.shields.io/badge/Scope-Regression%20trace-1f6feb?labelColor=30363d&style=flat-square">
<img alt="Range GOOD..BAD" src="https://img.shields.io/badge/Range-GOOD..BAD-1f6feb?labelColor=30363d&style=flat-square">
</p>
---
<details>
<summary><strong>🔎 Regression Analysis</strong> — click to expand</summary>
<br/>
**CLASSIFICATION:** [Concise, evidence-supported finding.]
<details>
<summary><strong>📊 Version boundary</strong></summary>
<br/>
[Reported good/bad versions, resolved SHA links, platform and relevant gaps.]
</details>
---
<details>
<summary><strong>🧬 Candidate changes</strong></summary>
<br/>
[Up to three candidates with causal evidence and uncertainty, or a short
explanation of why no introducing change can be supported.]
</details>
</details>
---
<details>
<summary><strong>🧭 Follow-up</strong> — actions and refresh</summary>
<br/>
**Next action:** [A discriminating parent/candidate test or the exact missing
version, platform, or reproduction information; omit when none is needed.]
> Maintainers: comment `/issue trace-regression` to refresh this report.
</details>In the workflow, call add_comment exactly once for the triggering issue, including
when context is incomplete or no candidate is supported. The safe-output job owns
publication and hides older reports. In interactive/local use, return the report
without posting unless explicitly asked.
7a5a5d6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.