Agent skill
dependency-graph
Show module dependencies by analyzing imports, exports, and cross-references. Use when the user asks what a file imports, what depends on a module, or wants to see dependency structure.
Install this agent skill to your Project
npx add-skill https://github.com/anortham/julie/tree/main/.claude/skills/dependency-graph
SKILL.md
Dependency Graph
Analyze module dependencies by examining what a file imports and what depends on it.
Process
Step 1: Get Broad Context (Optional)
For a quick overview of what's connected to this module:
get_context(query="<module name or concept>")
The file map and neighbors in the response often reveal the dependency structure immediately.
Step 2: Get Module Symbols
get_symbols(file_path="<module_path>", mode="structure", max_depth=1)
List all symbols (functions, structs, traits, imports) in the module.
Step 3: Identify Imports (What This Module Depends On)
From the symbol list, extract all import/use statements. Group by source:
- Internal project: Imports from other modules within the same project
- External libraries: Third-party dependencies (crates, npm packages, pip packages, etc.)
- Standard library: Language-provided standard library imports
Step 4: Identify Exports (What Depends on This Module)
For each public symbol in the module, check who uses it:
fast_refs(symbol="<public_symbol>", include_definition=false, limit=20)
Group results by file to see which modules depend on this one.
Step 5: Report
Module: <file_path>
Imports (depends on):
Internal:
- database/SymbolDatabase (queries, storage)
- search/SearchIndex (full-text search)
- workspace/JulieWorkspace (workspace context)
External:
- tantivy (full-text search engine)
- serde (serialization)
Stdlib:
- HashMap, Path
Exports (depended on by):
FastSearchTool → used by:
- handler.rs (tool registration + routing)
- tests/tools/search.rs (test suite)
SearchResult → used by:
- tools/deep_dive/mod.rs (result formatting)
Internal Only (not exported):
- build_query() — private helper
- format_results() — private helper
Summary:
Imports: 3 internal, 2 external, 2 stdlib
Exports: 2 public symbols used by 3 files
Coupling: Medium (core handler depends on this)
Important Notes
- Focus on public API — private symbols don't affect other modules
- Count references to gauge coupling — a module with 50+ external references is tightly coupled
- Watch for circular dependencies — if A imports B and B imports A, flag it
- Reference workspaces: Pass
workspace: "<workspace_id>"to all tool calls when analyzing a non-primary workspace
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
logic-flow
Explain a function's logic step-by-step by analyzing its implementation and call graph. Use when the user asks "how does this work", "walk me through this", or wants to understand control flow and decision points.
metrics
Show Julie operational metrics -- session stats, tool usage, context efficiency, and historical trends. Use when the user asks about Julie's performance, how it's doing, how much context was saved, or wants a metrics/stats report.
architecture
Generate an architecture overview — key entry points, module map, dependency flow, and suggested reading order. Use when the user is new to a codebase, asks "how does this work?", wants an architecture overview, or needs onboarding documentation.
search-debug
Diagnose why a search returns unexpected results — analyze scoring factors, tokenization, and index health for dogfooding Julie's search quality. Use when a Julie search misses an expected symbol, returns wrong results, ranks something surprisingly low, or when investigating search quality issues during development.
impact-analysis
call-trace
Trace the call path between two functions by following callers/callees. Use when the user asks how function A reaches function B, wants to see connections between symbols, or asks "what calls what."
Didn't find tool you were looking for?