agentsclimarketplace

Dotnet techne synopsis

Skill Metalnib/dotnet-episteme-skills/skills/dotnet-techne-synopsis

Use when you need blast-radius analysis, dependency graphs, cross-repo impact, breaking-change diff, or architectural overview of .NET workspaces. Keywords: blast radius, dependency graph, impact analysis, cross-repo, call graph, endpoint map, EF Core lineage, breaking change, daemon, reindex.From its SKILL.md

Install
npx -y skills add Metalnib/dotnet-episteme-skills --skill dotnet-techne-synopsis

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

10.8 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it

Synopsis - .NET Workspace Dependency & Blast-Radius Explorer

Static analysis tool that scans .NET workspaces via Roslyn, builds a dependency graph, and answers blast-radius and breaking-change queries. Supports both one-shot CLI use and long-running daemon mode for multi-repo workspaces.

Requirements

No SDK or manual installation needed. The detect script auto-downloads the correct binary on first use.

PlatformBinaryDownloaded from
macOS Apple Siliconbin/osx-arm64/synopsisGitHub Release synopsis-osx-arm64.tar.gz
macOS Intelbin/osx-x64/synopsisGitHub Release synopsis-osx-x64.tar.gz
Windows x64bin/win-x64/synopsis.exeGitHub Release synopsis-win-x64.zip
Windows arm64bin/win-arm64/synopsis.exeGitHub Release synopsis-win-arm64.zip
Linux x64bin/linux-x64/synopsisGitHub Release synopsis-linux-x64.tar.gz
Linux arm64bin/linux-arm64/synopsisGitHub Release synopsis-linux-arm64.tar.gz

External dependencies for auto-download:

  • macOS/Linux: curl (pre-installed) or wget
  • Windows: PowerShell 5+ (built-in System.Net.Http)

When a .NET 10 SDK is installed, the detect script downloads the slim framework-dependent build (synopsis-<RID>-slim, ~7x smaller) instead of the self-contained one. No SDK - self-contained build, no difference in behaviour.

Install (optional - build from source)

Only needed if you want to rebuild or no GitHub Release is available. Requires .NET 10+ SDK.

Bash (Linux/macOS):

./skills/dotnet-techne-synopsis/scripts/install.sh

PowerShell (Windows):

.\skills\dotnet-techne-synopsis\scripts\install.ps1

When to use this skill

Use when the user asks to:

  • Analyze blast radius of a code change
  • Map dependencies across .NET repos
  • Find what endpoints/services are affected by a change
  • Trace call chains from controller to database
  • Review cross-repo boundaries
  • Audit ambiguous/unresolved dependencies
  • Compare architecture between two snapshots (diff)
  • Classify breaking changes between two snapshots
  • Scope a PR's impact via git diff
  • Run a persistent daemon serving multiple repos under one graph
  • Find all callers of an HTTP endpoint across repos (endpoint_callers)
  • Find which services depend on a NuGet package and at what version (package_dependents)
  • Find HTTP endpoints that write to a specific database table (table_entry_points)
  • Get a service-to-service HTTP call dependency map (repo_dependency_matrix)

Workflow

Step 0: Detect tool

Claude Code (plugin install): if mcp__plugin_dotnet-episteme-skills_synopsis__* tools are visible, use them directly - the plugin already runs the MCP server with persistent state, so skip detection and the CLI steps below entirely. The CLI path remains for every other tool and for one-shot commands (scan, diff, breaking-diff).

Bash:

./skills/dotnet-techne-synopsis/scripts/detect-tool.sh

PowerShell:

.\skills\dotnet-techne-synopsis\scripts\detect-tool.ps1

Step 1: Scan a workspace

synopsis scan /path/to/workspace -o graph.json

This produces graph.json containing all nodes (repos, projects, controllers, methods, endpoints, HTTP clients, DB contexts, entities, tables, NuGet packages) and edges (calls, injects, implements, cross-repo, depends-on-package, etc.).

Step 2: Query the graph

Blast radius of a symbol:

synopsis query symbol --fqn "OrdersController" --blast-radius --graph graph.json
synopsis query symbol --fqn "IOrderRepository" --blast-radius --direction upstream --graph graph.json

Impact analysis:

synopsis query impact --node "OrdersController" --direction downstream --graph graph.json --json
synopsis query impact --node "Orders" --direction upstream --graph graph.json --json

Find paths between nodes:

synopsis query paths --from "OrdersController" --to "Orders" --graph graph.json --json

Audit ambiguous edges:

synopsis query ambiguous --graph graph.json --json

Step 3: Git-aware analysis

Scope analysis to files changed in a PR:

synopsis git-scan /path/to/workspace --base main --json

Step 4: Diff two scans

Compare architecture before/after a change:

synopsis diff before.json after.json --json

Step 5: Breaking-change classification

Classify typed breaking changes between two snapshots:

synopsis breaking-diff before.json after.json --json
synopsis breaking-diff before.json after.json -o report.json

Produces typed BreakingChangeKind values:

  • Paired changes: NugetVersionBump, EndpointRouteChange, EndpointVerbChange, ApiSignatureChange, TableRename
  • Removals: PackageRemoved, EndpointRemoved, ApiRemoved, TableRemoved

Heuristic pairings carry Ambiguous certainty; unmatched nodes flow into removal kinds.

Step 6: MCP daemon mode (multi-repo)

For persistent AI agent integration over multiple repositories. The daemon holds a CombinedGraph that merges per-repo scans in memory and persists state to disk.

stdio (one-shot, single repo):

synopsis mcp --root /path/to/workspace
synopsis mcp --graph graph.json

Unix socket daemon (multi-repo, persistent):

synopsis mcp --root /path/to/workspace --socket /tmp/synopsis.sock --state-dir ~/.synopsis/workspace

TCP daemon:

synopsis mcp --root /path/to/workspace --tcp localhost:5100

State is persisted to --state-dir and restored on restart. On restart, repos are loaded from disk without re-scanning; use reindex_all to force a fresh scan of all known repos.

Log file (v1.6.0+): --log-file <path> (or env SYNOPSIS_LOG_FILE) appends UTC-timestamped diagnostics to a file in addition to stderr, so external monitors can tail daemon activity. Older binaries ignore the flag.

Async startup scan (v1.6.0+): with --root, the server answers initialize immediately and scans in the background - graph tools return an "indexing in progress" message until the first scan lands (state-dir-hydrated repos serve queries right away); scan_stats reports indexing.inProgress/startedAtUtc/error.

Quick Reference

# === One-shot scan and query ===
synopsis scan /workspace -o graph.json                              # Scan
synopsis query symbol --fqn "OrdersController" --blast-radius       # Blast radius
synopsis query impact --node "Orders" --direction upstream --json   # Upstream impact
synopsis git-scan /workspace --base main --json                     # PR impact
synopsis breaking-diff before.json after.json --json                # Breaking changes

# === Export formats ===
synopsis export json /workspace -o graph.json
synopsis export csv /workspace -o output/
synopsis export jsonl /workspace -o graph.jsonl

# === Daemon (multi-repo) ===
synopsis mcp --root /workspace --socket /tmp/synopsis.sock --state-dir ~/.synopsis/ws

# === All commands support --json for machine-readable output ===
synopsis scan /workspace --json
synopsis query impact --node X --json

Output Contract

When --json is used, stdout contains a single JSON envelope:

{"command":"query impact","ok":true,"result":{...},"ms":142,"schemaVersion":1}

schemaVersion identifies the envelope contract (bumps only on a breaking shape change). All diagnostics and progress go to stderr. stdout is always machine-readable when --json is specified.

MCP Tools Available

When running in MCP mode (synopsis mcp), the following tools are exposed:

ToolDescription
blast_radiusUpstream/downstream impact subgraph for a symbol
find_pathsAll paths between two nodes
list_endpointsHTTP endpoints filtered by project/verb
list_nodesNodes filtered by type/project/query
node_detailSingle node with all incoming/outgoing edges
db_lineageEF Core entity-to-table lineage chain
cross_repo_edgesAll cross-repository boundary edges
ambiguous_reviewUnresolved and ambiguous edge audit
scan_statsScan statistics and metadata
breaking_diffClassify breaking changes between two graph snapshots
endpoint_callersAll callers of an HTTP endpoint across repos, with certainty
package_dependentsAll repos/projects that depend on a NuGet package, with versions
table_entry_pointsHTTP endpoints that eventually read or write a database table
repo_dependency_matrixPer-repo outbound call counts and resolved cross-repo dependency pairs
list_repositoriesList all repos in the CombinedGraph with scan metadata
reindex_repositoryRe-scan a single repository and update the graph
reindex_allRe-scan all known repositories

HTTP Cross-Service Resolution

Synopsis traces HTTP calls across microservice boundaries. For best resolution accuracy:

  • Use IHttpClientFactory with named clients — the client name is the strongest signal for matching
  • Put base URLs in appsettings with descriptive keys — Services:CatalogApi:BaseUrl not generic ApiUrl
  • Name repos and projects consistently — CatalogClient auto-matches repo catalog-api and project Catalog.Api

See http-resolution.md for the full guide on supported patterns, appsettings configuration, service-affinity matching, certainty levels, and recommendations.

Notes

  • Synopsis uses Roslyn MSBuildWorkspace for semantic analysis — it understands DI registration, interface dispatch, call graphs, and EF Core mappings
  • The tool targets .NET Core/.NET 5+ projects only (no .NET Framework 4.x support)
  • First scan of a large workspace takes 15–60s; subsequent queries on a loaded graph.json are instant
  • MCP daemon mode scans once at startup (or on reindex_* calls), then serves queries with no re-scan overhead
  • NuGet packages are first-class graph nodes (Package type, DependsOnPackage edges) from v1.4.0
  • Graph node IDs are SHA256-based and stable across scans of the same codebase

What ships with it: 5 files

17.2 KB alongside SKILL.md, 4 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.