From dotnet-dnceng
Trace dependency flow across .NET repos through the VMR pipeline. USE FOR: checking if a PR/commit from repo A has reached repo B, finding what runtime SHA is in an SDK build, tracing dependency versions through the VMR, checking if a commit is included in an SDK build, decoding SDK version strings, "has my fix reached runtime", "did roslyn#80873 flow to runtime", "what SHA is in SDK version X", cross-repo dependency tracing, mapping SDK versions to VMR commits. DO NOT USE FOR: codeflow PR health or staleness (use flow-analysis skill), CI build failures (use ci-analysis skill). INVOKES: maestro and GitHub MCP tools, Get-SdkVersionTrace.ps1 script.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dotnet-dnceng:flow-tracingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Trace dependency flow across .NET repositories through the VMR pipeline. Two workflows:
Trace dependency flow across .NET repositories through the VMR pipeline. Two workflows:
Get-SdkVersionTrace.ps1 (handles version decoding, build lookup, and servicing topology automatically)Question: "Has change X from repo A reached repo B?"
Identify the merge commit SHA in repo A from the PR number, issue number, commit SHA, or description the user provides. If the PR isn't merged yet, stop — the change hasn't entered the pipeline.
⚠️ Internal branches (
internal/release/*) exist only on AzDO, not GitHub. Use the AzDO REST API to read files. See references/internal-vmr.md.
Read src/source-manifest.json from dotnet/dotnet on the target VMR branch (usually main or release/*). This file is the authoritative record of what the VMR has actually consumed — subscription status reflects Maestro's bookkeeping, but the manifest reflects reality. Find the entry for repo A — the commitSha field shows the latest commit the VMR has consumed.
Determine if the change is included (try in order):
If repo A's SHA in source-manifest is not past the merge commit → the change hasn't reached the VMR yet. Check for an open forward flow PR from repo A into dotnet/dotnet.
⚠️ 2xx/3xx bands: Only the 1xx branch source-builds all components. If tracing to a 2xx/3xx branch, runtime/aspnetcore won't appear in source-manifest — they're consumed as prebuilts from 1xx. See references/servicing-topology.md.
If the VMR has the change, check if it has flowed to repo B:
⚠️
eng/Version.Details.xmlis the file you want — it contains source dependency entries withShafields. Do NOT useeng/Versions.props(that has NuGet package versions, not source SHAs).
eng/Version.Details.xml in repo B.eng/Version.Details.xml in repo B — the dotnet/dotnet entry's Sha is the VMR commit repo B last consumed. Check src/source-manifest.json at that SHA for repo A's commitSha. If it's past the merge commit, the change reached repo B despite the stale subscription.Summarize the trace chain:
abc123 → VMR consumed it → runtime backflow current"Run the script to trace from an SDK version string to a component commit SHA:
# Trace runtime SHA in a specific SDK version
./scripts/Get-SdkVersionTrace.ps1 -SdkVersion "10.0.300-preview.26117.103"
# Trace a specific component
./scripts/Get-SdkVersionTrace.ps1 -SdkVersion "10.0.300-preview.26117.103" -Component "aspnetcore"
# Check if specific commits are included
./scripts/Get-SdkVersionTrace.ps1 -SdkVersion "10.0.300-preview.26117.103" -CheckCommit "b226ba1f77a4","f3bc0212e637"
# Just decode the version string
./scripts/Get-SdkVersionTrace.ps1 -SdkVersion "10.0.300-preview.26117.103" -DecodeOnly
The script decodes the SDK version, maps to a VMR branch, finds the build in AzDO, and walks the dependency chain through source-manifest.json (and Version.Details.xml for servicing branches that don't source-build all components).
⚠️ SDK version dates use Arcade's SHORT_DATE formula:
YY*1000 + MM*50 + DD(NOT YYDDD day-of-year).26117= Feb 17, 2026, NOT April 27. See references/sdk-version-format.md.
⚠️ Servicing branches (2xx, 3xx) do NOT source-build runtime. The script automatically follows the dependency chain through
Version.Details.xmlto the 1xx branch. See references/servicing-topology.md.
npx claudepluginhub lewing/agent-plugins --plugin dotnet-dncengInspects .NET packages, assemblies, APIs, dependencies, and API diffs. Reports evidence for types, members, SourceLink, and breaking changes.
Inspects .NET packages, assemblies, APIs, and dependencies to provide evidence-based answers about APIs, source links, and version diffs.
Queries live .NET metadata and NuGet feeds to discover SDK versions, workload sets, manifest versions, and dependency requirements for .NET development.