buildscope-choke-points
Analyzes dependency graphs to identify hotspots and suggest refactoring strategies.
Install
mkdir -p .claude/skills/buildscope-choke-points && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13047" && unzip -o skill.zip -d .claude/skills/buildscope-choke-points && rm skill.zipInstalls to .claude/skills/buildscope-choke-points
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Detect choke points, hotspots, and breakup candidates in BuildScope dependency graphs. Use when Codex needs to inspect a running BuildScope server or a saved `graph.json`, fetch precomputed rankings from `/analysis.json`, inspect focused split seams from `/decomposition.json`, inspect raw graph and details data from `/graph.json` and `/graph.details.json`, or propose how to split large shared hubs in a BuildScope graph.Key capabilities
- →Detect choke points in BuildScope dependency graphs.
- →Identify hotspots in BuildScope dependency graphs.
- →Propose breakup candidates in BuildScope dependency graphs.
- →Fetch precomputed rankings from /analysis.json.
- →Inspect focused split seams from /decomposition.json.
- →Inspect raw graph and details data from /graph.json and /graph.details.json.
How it works
The skill queries BuildScope server endpoints like /analysis.json and /decomposition.json to retrieve precomputed rankings and focused decomposition data, which it then translates into refactor guidance.
Inputs & outputs
When to use buildscope-choke-points
- →Identify dependency bottlenecks
- →Analyze graph hotspots
- →Get refactoring guidance
About this skill
BuildScope Choke Points
Use this skill to turn a BuildScope graph into concrete refactor guidance. Always prefer the backend's precomputed analysis: if you only have a saved graph.json, serve it through BuildScope first and then query /analysis.json. Use /decomposition.json for one selected target when the question shifts from "which target matters?" to "how should this target split?" Use /file-focus.json for one file label when you need to explain why a specific file is pulling heavy targets into rebuild paths.
Quick Start
- Pick a graph source.
- Running app: read references/backend-endpoints.md and fetch
/analysis.jsonfrom the Go server. - Saved graph: use a checked-in fixture or a file from
buildscope extract, then start a local BuildScope server for it withbuildscope vieworgo run ./cli/cmd/buildscope view. - If the graph was extracted with enrichment enabled, expect a sibling
graph.details.jsonsidecar and richer node fields insidegraph.json.
- If you only have a saved graph file, serve it through BuildScope.
go run ./cli/cmd/buildscope view fixtures/buildscope_large_angular_app.json -addr :4422
buildscope view auto-loads a sibling *.details.json sidecar when present. Use buildscope serve --graph ... --details ... when the details file lives elsewhere.
- Use the backend analysis endpoint.
curl -fsS "http://localhost:4422/analysis.json?top=15" | jq
- Deep-dive a suspicious target through the backend.
curl -fsS "http://localhost:4422/analysis.json?top=15&focus=//pkg:target" | jq
- Inspect its focused decomposition.
curl -fsS "http://localhost:4422/decomposition.json?target=//pkg:target" | jq
- Translate the output into a breakup plan.
- Use references/refactor-playbook.md when the ranking alone is not enough to pick a split strategy.
- Prefer recommendations that reduce
outDegree, isolate stable facades from unstable implementation detail, or peel build-heavy subtargets away from broad shared hubs. - When enrichment is available, use file counts, input bytes, output bytes, and action count to explain why a target is a bottleneck instead of relying only on degree.
- If one file keeps showing up in a heavy target, drill into the file.
curl -fsS "http://localhost:4422/file-focus.json?label=//pkg:file.go" | jq
- Use this when the question shifts from "which target is heavy?" to "which file is actually dragging rebuild pain into the graph?"
- Treat current-graph consumers and live workspace reverse dependencies as different scopes.
Workflow
- Confirm how the graph is exposed.
- The preferred backend contract is
/analysis.json. /decomposition.jsonis the focused follow-up contract for one target./graph.jsonis still the raw graph endpoint when you need the unsummarized dependency data./graph.details.jsonis the detail sidecar for large direct input/output lists and mnemonic mixes.- If the user says "use the running app", fetch backend JSON over HTTP instead of trying to scrape the UI.
- Reuse the backend analysis for every graph source.
- Prefer the backend's precomputed analysis from
/analysis.json. - For a checked-in or extracted
graph.json, startbuildscope view /path/to/graph.jsonfirst instead of reimplementing the analysis locally. buildscope viewauto-loads a siblinggraph.details.jsonwhen present.- Use
buildscope serve --graph /path/to/graph.json --details /path/to/graph.details.jsonwhen the sidecar is not adjacent.
- Separate the questions.
- "High impact" means many downstream dependents and broad blast radius.
- "Break up first" means the node is both highly shared and heavy enough to matter, while also being structurally broad enough to benefit from splitting.
- "How should this split?" means inspect
/decomposition.jsonfor dependency groups and cross-group coupling. - "Source-heavy" means a target owns a large direct file surface or rolls up many bytes of source inputs.
- "Output-heavy" means a target emits large artifacts or fans out through many actions.
- "File focus" means a specific file label is worth tracing because it feeds a heavy target or shows unexpectedly broad reverse dependencies.
- Do not recommend splitting every high-impact target. A stable leaf utility with low
outDegreeis often central but not a good first breakup target.
- Focus on a small shortlist.
- Start with the top 5 to 15 breakup candidates.
- If the graph is large, use the
focusquery param on one or two candidates before writing recommendations, then fetch/decomposition.jsonfor the strongest breakup targets. - Quote concrete numbers from the analyzer: dependents, direct deps, SCC size, pressure score, file counts, byte totals, and notable direct neighbors.
Interpreting Results
- High-impact targets are ranked mostly by
transitiveInDegree. These are the nodes with the largest downstream blast radius. - Breakup candidates are ranked primarily by
opportunityScore, which combines impact, build mass, and shardability. The olderpressurefield is still emitted for compatibility. /decomposition.jsonis the second-stage view for one target. It groups direct rule deps into dependency domains and reports how much coupling remains across those groups.- Source-heavy targets are useful when a broadly shared target hides just a few large files inside a much larger rule.
- Output-heavy targets are useful when slow or bulky generated artifacts, not just dependency fan-out, are the real chokepoint.
- A node with high
transitiveInDegreeand lowoutDegreeis usually a stable shared leaf. Keep it stable; do not automatically split it. - A node with high
transitiveInDegreeand highoutDegreeis a better breakup target because it combines broad fan-in with broad fan-out. - A node with high impact but low mass should usually lose to a heavier target with slightly lower fan-in.
/file-focus.jsonis the right tool when you need to validate that a particular file is a real rebuild lever rather than just a passenger inside a big rule.
Output Style
- Lead with the top breakup candidates and why they are choke points.
- Add source-heavy or output-heavy evidence when it strengthens the recommendation.
- Use file-focus evidence when one file label appears central to the diagnosis.
- Use decomposition evidence when you need to name likely shard boundaries instead of only saying that a target is big.
- For each recommended split, name the likely seam:
- domain slice
- interface extraction
- dependency inversion
- stable facade with internal shards
- Use exact target labels, not vague descriptions.
- Call out when the graph suggests "stabilize, do not split" instead of forcing a breakup recommendation.
Resources
- Read references/backend-endpoints.md for the exact backend endpoints, CLI entrypoints, and port behavior.
- Read references/refactor-playbook.md for concrete breakup patterns tied to graph shapes.
- Use
/analysis.jsonfor both running app instances and saved graph files after serving them through BuildScope. - Use
/decomposition.jsonafter you have picked one target from that shortlist. - When the graph includes
detailsPath, use or mention the sidecar instead of claiming the summary view is the full artifact list.
Limits
- Do not claim every BuildScope instance exposes
/analysis.jsonor/decomposition.jsonunless it is running a version that includes those Go-side endpoints. - Do not infer architecture from one node alone when the SCC or direct-dependency list says otherwise.
- Do not recommend a breakup without naming which incoming or outgoing edges the split is meant to reduce.
- Do not confuse source/generated file nodes with split candidates. Keep the recommendations target-centric unless the user explicitly asks for file-level drill-down.
When not to use it
- →When only a saved graph.json is available and not served through BuildScope.
- →When the BuildScope instance does not expose /analysis.json or /decomposition.json.
- →When inferring architecture from one node alone.
Limitations
- →It does not claim every BuildScope instance exposes /analysis.json or /decomposition.json.
- →It does not infer architecture from one node alone.
- →It does not recommend a breakup without naming which incoming or outgoing edges the split is meant to reduce.
How it compares
This skill provides structured, data-driven refactor guidance based on precomputed analysis, unlike manually inspecting a graph or relying on intuition to identify bottlenecks and split candidates.
Compared to similar skills
buildscope-choke-points side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| buildscope-choke-points (this skill) | 0 | 4mo | Review | Advanced |
| architecture-patterns | 55 | 2mo | No flags | Advanced |
| workflow-orchestration-patterns | 10 | 2mo | No flags | Advanced |
| go-dev-guidelines | 14 | 9mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
architecture-patterns
wshobson
Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.
workflow-orchestration-patterns
wshobson
Design durable workflows with Temporal for distributed systems. Covers workflow vs activity separation, saga patterns, state management, and determinism constraints. Use when building long-running processes, distributed transactions, or microservice orchestration.
go-dev-guidelines
jumppad-labs
This skill should be used when writing, refactoring, or testing Go code. It provides idiomatic Go development patterns, TDD-based workflows, project structure conventions, and testing best practices using testify/require and mockery. Activate this skill when creating new Go features, services, packages, tests, or when setting up new Go projects.
golang-pro
sickn33
Master Go 1.21+ with modern patterns, advanced concurrency, performance optimization, and production-ready microservices. Expert in the latest Go ecosystem including generics, workspaces, and cutting-edge frameworks. Use PROACTIVELY for Go development, architecture design, or performance optimization.
go-concurrency-patterns
wshobson
Master Go concurrency with goroutines, channels, sync primitives, and context. Use when building concurrent Go applications, implementing worker pools, or debugging race conditions.
golang-performance
MadAppGang
Use when profiling Go applications (pprof), running benchmarks, optimizing memory/CPU usage, or debugging performance bottlenecks in production Go code.