본문으로 건너뛰기
cccskills
무료GitHub에 공개

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(6)

  • SKILL.md10.8 KB
  • http-resolution.md8.6 KB
  • scripts/detect-tool.ps13.2 KB
  • scripts/detect-tool.sh2.9 KB
  • scripts/install.ps11.2 KB
  • scripts/install.sh1.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when reviewing PRs/diffs/branches/documents for .NET quality, correctness, performance, security, data access, messaging, and observability. Includes adversarial critical-thinking mode for skeptical/cynical review requests. Keywords: code review, review PR, review diff, critical review, cynical review, adversarial review, production readiness, low GC, AOT, security review.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Metalnib/dotnet-episteme-skills122026년 9월 9일 업데이트

Use when you need CRAP score and coverage risk analysis to find high-risk code before refactoring or release. Keywords: CRAP score, risk hotspots, cyclomatic complexity, test coverage gaps, coverage threshold.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Metalnib/dotnet-episteme-skills122026년 9월 9일 업데이트

Use when reviewing a .NET pull request for breaking changes that may affect other microservice repositories. Detects cross-repo API, DTO, endpoint, EF entity, and NuGet-package breaks, and checks whether a compatible downstream PR already exists. Keywords: cross-repo impact, breaking change, microservice compatibility, downstream break, compatible PR, blast radius review, api compatibility, contract break, dto shape change, endpoint break.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Metalnib/dotnet-episteme-skills122026년 9월 9일 업데이트

Use when designing or changing public C#/.NET APIs with compatibility and versioning constraints. Keywords: breaking change, API design, backward compatibility, binary compatibility, deprecation strategy, versioning.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Metalnib/dotnet-episteme-skills122026년 9월 9일 업데이트

Use when writing or refactoring modern C# with maintainability and performance standards. Keywords: coding standards, C# best practices, refactor C#, records, pattern matching, async best practices.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Metalnib/dotnet-episteme-skills122026년 9월 9일 업데이트

Use when choosing .NET concurrency patterns for async I/O, queues, pipelines, or thread safety. Keywords: async/await, channels, dataflow, Rx, lock contention, producer consumer, parallel processing.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

Metalnib/dotnet-episteme-skills122026년 9월 9일 업데이트

Metalnib의 스킬 모두 보기

이 스킬의 문제 신고