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-dncengFinds evidence for .NET packages, platform libraries, assemblies, APIs, dependencies, SourceLink/symbol provenance, and version-to-version API changes. Useful for resolving API usage, inspecting types and members, comparing package versions, and auditing unsafe calls.
Inspects .NET packages, assemblies, APIs, dependencies, and API diffs. Reports evidence for types, members, SourceLink, and breaking changes.
Queries live .NET metadata and NuGet feeds to discover SDK versions, workload sets, manifest versions, and dependency requirements for .NET development.