diff --git a/.agents/skills/dotnet-inspect/SKILL.md b/.agents/skills/dotnet-inspect/SKILL.md index cdcd719..6e04d1f 100644 --- a/.agents/skills/dotnet-inspect/SKILL.md +++ b/.agents/skills/dotnet-inspect/SKILL.md @@ -45,9 +45,7 @@ Selector syntax: first run `member Type --platform Lib -m Name -S "Member Index" A selected overload defaults to `Signature`; bare `-S` adds `Decompiled Source`. Use `-S "Source Locations"` for member file/line URLs without fetching source bodies. Use `-S @Source` for source and IL evidence: `Decompiled Source` (raised C#), `Annotated Source` (C# with hidden-fact comments and interleaved IL), `Original Source`, and `IL`. Use `Annotated Source` or `IL` when exact opcodes, offsets, branches, tokens, or calls matter. -Use `-S Calls` for direct call-site evidence, `-S Callers` for reverse edges (widen with `--bin`, `--project`, or `--caller-package`), `-S "Call Graph"` for a bounded outbound tree, `-S "Caller Graph"` for a bounded reverse tree that shows which entry points or callers reach the selected method (its root is labelled `target`, far entry points `entrypoint`, and `loop call` marks a caller that invokes toward the target inside a loop), `-S "Unsafe Operations"` for unsafe evidence, and `-S Facts --tsv` for structured hidden facts. - -For perf or correctness triage, rank by call-graph leverage (direct callers, root reach, fanout, depth, loop calls): `library MyLib.dll -S "Top Leverage"` ranks across the whole assembly, or `type T --library MyLib.dll --all -S "Top Leverage"` ranks one type's members. The `Root Reach` column counts the distinct roots (entry points / public API with no in-assembly caller) that transitively reach a member, so a low-fanin helper sitting under many roots still shows wide inbound scale. Both library- and type-scope rows carry a copyable `Stable` selector (`Name~digest`), a `Visibility` column, and a `Selector` (`Name:N`), and mark compiler-`Generated` rows; copy the `Stable` selector to drill straight in. Then drill the top candidates with `-S "Call Graph,Facts"` (outbound cost) and `-S "Caller Graph"` (inbound reach). On either graph, project the *kind* of cost per node with `--fields "Fanout,Fanin,Depth,Loop,Alloc,Copy,Unsafe,Reflection,Throw,Exceptions,Catch,Finally,EvidenceIL"` (signals are opt-in and annotate only the nodes that carry them; for exception-risk triage read `Throw`/`Catch`/`Finally` over `Caller Graph`). Add `--tsv` or `-n` to trim to the top rows. The ranking surfaces non-public helpers, so add `--all` when drilling a private/internal candidate (otherwise member selection can't resolve it). +Use `-S Calls` for direct call-site evidence, `-S Callers` for reverse edges (widen with `--bin`, `--project`, or `--caller-package`), `-S "Unsafe Operations"` for unsafe evidence, and `-S Facts --tsv` for structured hidden facts. ## Query and output diff --git a/apm.lock.yaml b/apm.lock.yaml index 19f5d96..38089e5 100644 --- a/apm.lock.yaml +++ b/apm.lock.yaml @@ -1,5 +1,5 @@ lockfile_version: '1' -generated_at: '2026-06-24T15:39:37.782393+00:00' +generated_at: '2026-06-25T15:46:42.256474+00:00' apm_version: 0.14.0 dependencies: - repo_url: Faithlife/RepoConventions @@ -13,10 +13,10 @@ dependencies: content_hash: sha256:6e4dc45d96d7adc8f1d3e3300d9ee90eef9c2d0231ea83ad86fed64fca105034 - repo_url: richlander/dotnet-inspect host: github.com - resolved_commit: eca70c384d2edbb4d57bc4e195d0cc62de4212e4 + resolved_commit: e0710ec1780b8e0893dfb3c7417c469ec3248a36 virtual_path: skills/dotnet-inspect is_virtual: true package_type: claude_skill deployed_files: - .agents/skills/dotnet-inspect - content_hash: sha256:27c5facb98687a18c8169f89f84e74153bf3f43bd201c187ec6c226d618045bd + content_hash: sha256:091c8576b7d3b25fdca8104aeb2d343206b5531bdc79db067d018e59f072a8b7