Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Map source-code relationships between symbols. Use when the user asks about callers, callees, references, imports, exports, type usages, class hierarchy, inheritance, implementations, overrides, or dependencies between symbols. Do not use Grep, Glob, rg, find, or manual text search for references; Memtrace traverses typed AST graph edges.
.claude/skills/syncable-dev-memtrace-relationships/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 120% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 153% | 0% |
Traverse the code knowledge graph to map relationships between symbols — callers, callees, class hierarchies, imports, exports, and type usages. Essential for understanding a symbol's neighbourhood before modifying it.
| query_type | What it finds | |------------|---------------| | find_callers | What calls this function/method? | | find_callees | What does this function call? | | class_hierarchy | Parent classes, interfaces, mixins | | overrides | Which child classes override this method? | | imports | What modules does this file import? | | exporters | Which files import this module? | | type_usages | Where is this type/interface referenced? |
> Parameter types: Numbers (depth, etc.) must be JSON numbers — not strings.
get_symbol_context (360° view — prefer this first)Required: repo_id, symbol
json{ "repo_id": "memdb", "symbol": "validateToken", "file_path": "src/auth.ts" }
Returns: callers, callees, type references, community, processes, cross-repo API callers.
analyze_relationships (targeted traversal)Required: repo_id, target, query_type
json{ "repo_id": "memdb", "target": "validateToken", "query_type": "find_callers", "depth": 3, "file_path": "src/auth.ts" }
| Param | Default | Notes | |---|---|---| | depth | 3 (max 10) | Not 2 | | file_path | — | Disambiguates overloaded names |
Full parameter spec for every Memtrace tool: references/mcp-parameters.md (bundled at the memtrace-skills plugin root).
Use find_symbol or find_code. Save name, scope_path, and file_path from results — pass symbol/target plus optional file_path to graph tools.
Quick 360° view → get_symbol_context (one call).
Targeted traversal → analyze_relationships when you need a specific query_type at custom depth.
Use get_symbol_context fields (callers, callees, community, processes) for blast-radius and architecture context. For degree-style metrics on a specific symbol, follow up with get_impact.
get_impact(repo_id, target=...) — quantify blast radiusget_timeline(repo_id, scope_path, file_path) — full version historyget_evolution(repo_id, from=..., target=...) — window-scoped activityget_symbol_context returns the symbol's 360° neighbourhood:
json{ "symbol": "validateToken", "callers": ["..."], "callees": ["..."], "type_references": ["..."], "community": "...", "processes": ["..."], "api_callers_cross_repo": ["..."] }
analyze_relationships returns the symbols/edges matching the requested query_type (no degree metrics — see Common Mistakes).
| Mistake | Reality | |---------|---------| | Passing symbol_id | Use target (analyze_relationships) or symbol (get_symbol_context) | | Assuming default depth: 2 | Default is 3 | | Expecting in_degree on analyze_relationships results | Use get_symbol_context or get_impact for centrality/risk context |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,486 | 8,217 | -43% | 1 | 1 | 0% | 2,671 | 1,279 | -52% | 0 | 0 | — |
case-02 | fail→fail | 11,451 | 9,275 | -19% | 1 | 1 | 0% | 1,838 | 1,342 | -27% | 0 | 0 | — |
case-03 | fail→fail | 12,973 | 8,599 | -34% | 1 | 1 | 0% | 2,136 | 1,467 | -31% | 0 | 0 | — |
case-04 | pass→fail | 10,314 | 6,558 | -36% | 1 | 1 | 0% | 1,693 | 1,361 | -20% | 0 | 0 | — |
case-05 | pass→fail | 12,558 | 8,832 | -30% | 1 | 1 | 0% | 2,200 | 1,693 | -23% | 0 | 0 | — |
case-06 | pass→fail | 6,261 | 7,740 | +24% | 1 | 1 | 0% | 1,151 | 1,442 | +25% | 0 | 0 | — |
case-07 | fail→pass | 8,693 | 2,927 | -66% | 1 | 1 | 0% | 1,373 | 1,454 | +6% | 0 | 0 | — |
case-08 | fail→pass | 3,851 | 3,749 | -3% | 1 | 1 | 0% | 705 | 1,549 | +120% | 0 | 0 | — |
case-09 | fail→pass | 7,335 | 1,638 | -78% | 1 | 1 | 0% | 1,063 | 1,173 | +10% | 0 | 0 | — |
case-10 | fail→pass | 7,368 | 2,596 | -65% | 1 | 1 | 0% | 1,178 | 1,377 | +17% | 0 | 0 | — |
case-11 | fail→pass | 3,566 | 2,670 | -25% | 1 | 1 | 0% | 565 | 1,429 | +153% | 0 | 0 | — |
case-12 | fail→fail | 7,051 | 5,793 | -18% | 1 | 1 | 0% | 289 | 1,162 | +302% | 0 | 0 | — |
case-13 | fail→fail | 8,849 | 7,317 | -17% | 1 | 1 | 0% | 1,414 | 1,263 | -11% | 0 | 0 | — |
case-14 | fail→fail | 7,810 | 6,399 | -18% | 1 | 1 | 0% | 258 | 1,259 | +388% | 0 | 0 | — |
case-15 | fail→fail | 5,122 | 6,357 | +24% | 1 | 1 | 0% | 733 | 1,228 | +68% | 0 | 0 | — |
case-16 | pass→pass | 5,032 | 3,165 | -37% | 1 | 1 | 0% | 790 | 1,480 | +87% | 0 | 0 | — |
case-17 | fail→pass | 6,060 | 2,983 | -51% | 1 | 1 | 0% | 982 | 1,377 | +40% | 0 | 0 | — |
case-18 | fail→fail | 12,937 | 2,702 | -79% | 1 | 1 | 0% | 2,266 | 1,155 | -49% | 0 | 0 | — |
case-19 | fail→pass | 3,644 | 3,064 | -16% | 1 | 1 | 0% | 505 | 1,464 | +190% | 0 | 0 | — |
case-20 | fail→pass | 11,219 | 21,476 | +91% | 1 | 1 | 0% | 1,798 | 1,228 | -32% | 0 | 0 | — |
case-21 | fail→pass | 5,618 | 1,995 | -64% | 1 | 1 | 0% | 799 | 1,244 | +56% | 0 | 0 | — |
case-22 | fail→pass | 4,722 | 2,696 | -43% | 1 | 1 | 0% | 720 | 1,334 | +85% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 12 counted toward the lift figure. The other 10 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 12 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.