dotnet-techne-synopsis — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited dotnet-techne-synopsis (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
No SDK or manual installation needed. The detect script auto-downloads the correct binary on first use.
| Platform | Binary | Downloaded from |
|---|---|---|
| macOS Apple Silicon | bin/osx-arm64/synopsis | GitHub Release synopsis-osx-arm64.tar.gz |
| macOS Intel | bin/osx-x64/synopsis | GitHub Release synopsis-osx-x64.tar.gz |
| Windows x64 | bin/win-x64/synopsis.exe | GitHub Release synopsis-win-x64.zip |
| Windows arm64 | bin/win-arm64/synopsis.exe | GitHub Release synopsis-win-arm64.zip |
| Linux x64 | bin/linux-x64/synopsis | GitHub Release synopsis-linux-x64.tar.gz |
| Linux arm64 | bin/linux-arm64/synopsis | GitHub Release synopsis-linux-arm64.tar.gz |
External dependencies for auto-download:
curl (pre-installed) or wgetSystem.Net.Http)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.shPowerShell (Windows):
.\skills\dotnet-techne-synopsis\scripts\install.ps1Use when the user asks to:
endpoint_callers)package_dependents)table_entry_points)repo_dependency_matrix)Bash:
./skills/dotnet-techne-synopsis/scripts/detect-tool.shPowerShell:
.\skills\dotnet-techne-synopsis\scripts\detect-tool.ps1synopsis scan /path/to/workspace -o graph.jsonThis 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.).
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.jsonImpact analysis:
synopsis query impact --node "OrdersController" --direction downstream --graph graph.json --json
synopsis query impact --node "Orders" --direction upstream --graph graph.json --jsonFind paths between nodes:
synopsis query paths --from "OrdersController" --to "Orders" --graph graph.json --jsonAudit ambiguous edges:
synopsis query ambiguous --graph graph.json --jsonScope analysis to files changed in a PR:
synopsis git-scan /path/to/workspace --base main --jsonCompare architecture before/after a change:
synopsis diff before.json after.json --jsonClassify typed breaking changes between two snapshots:
synopsis breaking-diff before.json after.json --json
synopsis breaking-diff before.json after.json -o report.jsonProduces typed BreakingChangeKind values:
NugetVersionBump, EndpointRouteChange, EndpointVerbChange, ApiSignatureChange, TableRenamePackageRemoved, EndpointRemoved, ApiRemoved, TableRemovedHeuristic pairings carry Ambiguous certainty; unmatched nodes flow into removal kinds.
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.jsonUnix socket daemon (multi-repo, persistent):
synopsis mcp --root /path/to/workspace --socket /tmp/synopsis.sock --state-dir ~/.synopsis/workspaceTCP daemon:
synopsis mcp --root /path/to/workspace --tcp localhost:5100State 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.
# === 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 --jsonWhen --json is used, stdout contains a single JSON envelope:
{"command":"query impact","ok":true,"result":{...},"ms":142}All diagnostics and progress go to stderr. stdout is always machine-readable when --json is specified.
When running in MCP mode (synopsis mcp), the following tools are exposed:
| Tool | Description |
|---|---|
blast_radius | Upstream/downstream impact subgraph for a symbol |
find_paths | All paths between two nodes |
list_endpoints | HTTP endpoints filtered by project/verb |
list_nodes | Nodes filtered by type/project/query |
node_detail | Single node with all incoming/outgoing edges |
db_lineage | EF Core entity-to-table lineage chain |
cross_repo_edges | All cross-repository boundary edges |
ambiguous_review | Unresolved and ambiguous edge audit |
scan_stats | Scan statistics and metadata |
breaking_diff | Classify breaking changes between two graph snapshots |
endpoint_callers | All callers of an HTTP endpoint across repos, with certainty |
package_dependents | All repos/projects that depend on a NuGet package, with versions |
table_entry_points | HTTP endpoints that eventually read or write a database table |
repo_dependency_matrix | Per-repo outbound call counts and resolved cross-repo dependency pairs |
list_repositories | List all repos in the CombinedGraph with scan metadata |
reindex_repository | Re-scan a single repository and update the graph |
reindex_all | Re-scan all known repositories |
Synopsis traces HTTP calls across microservice boundaries. For best resolution accuracy:
Services:CatalogApi:BaseUrl not generic ApiUrlCatalogClient auto-matches repo catalog-api and project Catalog.ApiSee http-resolution.md for the full guide on supported patterns, appsettings configuration, service-affinity matching, certainty levels, and recommendations.
graph.json are instantreindex_* calls), then serves queries with no re-scan overheadPackage type, DependsOnPackage edges) from v1.4.0~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.