CtrlK
BlogDocsLog inGet started
Tessl Logo

find-regression-risk

Detects potential regression risks in a PR by cross-referencing lines the PR REMOVES against lines ADDED by recent labeled bug-fix PRs (`i/regression`, `t/bug`, `p/0`, `p/1`) touching the same files. Purely mechanical — no AI/LLM. Emits a CLEAN / OVERLAP / REVERT verdict plus structured findings. Triggers on: "does this PR revert a previous fix", "check PR for regression risk", "find regression risks in PR", "is this change reverting a bug fix". Do NOT use for: assessing ship-readiness of a release branch (use release-readiness), investigating CI failures (use azdo-build-investigator), or general code review (use code-review).

77

Quality

96%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

find-regression-risk

Detects potential regression risks in a PR by cross-referencing removed lines against lines added by recent labeled bug-fix PRs.

How It Works

Purely mechanical — no AI/LLM. Five-step algorithm:

  1. PR diff — collects lines REMOVED by the PR under review.
  2. Git historygit log --follow --since=6mo finds recent PRs that touched the same files.
  3. Label filter — keeps PRs (or their linked issues) labeled i/regression, t/bug, p/0, or p/1.
  4. Fix diff — fetches each fix PR's diff and collects lines it ADDED to the same file.
  5. Compare — whitespace-insensitive string equality:
    • 🔴 REVERT — removed line matches a line a fix PR added (highest risk).
    • 🟡 OVERLAP — same file modified, but no exact line revert.
    • 🟢 CLEAN — no bug-fix PRs touch the same files.

Standalone Invocation

# Analyze a specific PR (auto-detects files)
pwsh -NoProfile -Command '& ./.github/scripts/Find-RegressionRisks.ps1 -PRNumber 33908 -OutputDir /tmp/out'

# Analyze specific files only
pwsh -NoProfile -Command '& ./.github/scripts/Find-RegressionRisks.ps1 -PRNumber 33908 -OutputDir /tmp/out -FilePaths @("src/Core/src/Platform/Android/MauiWindowInsetListener.cs")'

Parameters

ParameterRequiredDefaultDescription
-PRNumberYesPR number to analyze
-RepoNodotnet/mauiRepository in owner/name form
-FilePathsNoauto-detectImplementation files to check
-MonthsBackNo6History window for git log
-MaxRecentPRsPerFileNo20Rate-limit guard per file
-BaseBranchNomainBase branch for git log scope
-OutputDirNoDirectory for output files
-WriteInlineFindingsNooffEmit inline-findings.json

Outputs

When -OutputDir is specified:

  • result.txt — single token: CLEAN, OVERLAP, or REVERT
  • risks.json — structured findings for downstream agents
  • content.md — markdown summary for the PR comment
  • inline-findings.json — (only with -WriteInlineFindings) inline annotations

Integration

The script runs as STEP 4 in Review-PR.ps1 (Regression Cross-Reference, after UI test detection and before the Gate step). Its content.md is assembled into the AI summary review by post-ai-summary-comment.ps1.

When REVERT risks are detected, the regression tests from the reverted fix PRs are executed:

  • UI testsBuildAndRunHostApp.ps1 -Platform <plat> -TestFilter <filter>
  • Device testsRun-DeviceTests.ps1 -Project <proj> -Platform <plat> -TestFilter <filter>
  • Unit/XAML testsdotnet test <project> --filter <filter>

The expert reviewer agent (maui-expert-reviewer.md, dimension #6) reads risks.json to check for REVERT entries.

Known Limitations

  • Inline findings: The -WriteInlineFindings flag emits deletion-side (LEFT) annotations, but post-inline-review.ps1 currently only posts RIGHT-side comments. LEFT-side findings are silently dropped. This is documented as future work.
  • Whitespace-only changes: By design, an indent-only change to a fix line won't trigger a REVERT (the normalization collapses whitespace). This avoids false positives from reformatting.
  • pwsh -File array parameters: When invoking standalone from bash, use pwsh -Command '& ./script.ps1 -FilePaths @(...)' syntax. pwsh -File doesn't evaluate @() expressions.

Tests

pwsh -NoProfile -File .github/scripts/tests/Test-FindRegressionRisks.ps1
Repository
dotnet/maui
Last updated
First committed

Is this your skill?

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.