Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Compute the blast radius of modifying a symbol through transitive graph impact. Use when the user asks about blast radius, impact, what breaks, risk, upstream callers, downstream dependencies, or consequences of modifying a symbol, before or during source-code changes. Do not use Grep or manual reference search; Memtrace computes transitive graph impact. For a full risk-rated plan covering a multi-part change, use memtrace-change-impact-analysis.
.claude/skills/syncable-dev-memtrace-impact/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-19 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 7% | 0% |
Compute the blast radius of changing a specific symbol. Traces upstream (what depends on this) and downstream (what this depends on) through the knowledge graph to quantify risk before making modifications.
| Tool | Purpose | |------|---------| | get_impact | Blast radius from a symbol name (target) | | detect_changes | Scope symbols affected by a diff/patch |
> Parameter types: MCP parameters are strictly typed. Numbers (depth, limit, etc.) must be JSON numbers — not strings.
get_impact| Parameter | Required | Default | Notes | |---|---|---|---| | repo_id | yes | — | | | target | yes | — | Symbol name (e.g. "validateToken") — not symbol_id | | direction | no | "both" | "upstream" \| "downstream" \| "both" | | depth | no | 5 | BFS depth (max 15) | | as_of | no | now | ISO-8601 for time-travel |
json{ "repo_id": "memdb", "target": "validateToken", "direction": "both", "depth": 5 }
Full parameter spec for every Memtrace tool: references/mcp-parameters.md (bundled at the memtrace-skills plugin root).
If you don't know the exact name:
find_symbol(name="...") for exact identifiersfind_code(query="...") for natural-language queriesUse the returned name (and optional file_path hint) — graph tools resolve by name, not internal IDs.
json{ "repo_id": "memdb", "target": "validateToken", "direction": "upstream", "depth": 5 }
| Risk | Meaning | Action | |------|---------|--------| | Low | Few dependents, leaf node | Safe to modify; minimal testing needed | | Medium | Moderate dependents | Test direct callers; review interface contracts | | High | Many dependents across modules | Coordinate changes; comprehensive test coverage | | Critical | Core infrastructure, many transitive dependents | Plan migration strategy; backward-compatible changes |
When you have an actual code diff, use detect_changes:
json{ "repo_id": "memdb", "diff": "<unified git diff text>" }
Or pass changed_files: ["path/a.rs", "path/b.ts"] when no diff text is available.
| Situation | Action | |-----------|--------| | Changing a single function | get_impact with direction: "both" | | Reviewing a PR or diff | detect_changes with the diff content | | Renaming/removing a public API | get_impact with direction: "upstream", higher depth | | Refactoring internals | get_impact with direction: "downstream" |
get_impact returns the blast radius for the target symbol:
| Field | Example / meaning | |---|---| | Risk rating | High — one of Low / Medium / High / Critical (interpret via step 3) | | Upstream | Transitive dependents (callers/importers) within depth hops — what breaks if the target changes | | Downstream | Transitive dependencies — what the target relies on |
detect_changes returns the set of symbols affected by the supplied diff / changed_files, plus the affected processes (execution flows).
| Mistake | Reality | |---------|---------| | Passing symbol_id or name | Required param is target | | Omitting repo_id | Both repo_id and target are required | | Defaulting depth to 3 | API default is 5 |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-19 | fail→pass | 8,750 | 5,570 | -36% | 1 | 1 | 0% | 1,459 | 1,345 | -8% | 0 | 0 | — |
case-01 | fail→fail | 9,807 | 5,227 | -47% | 1 | 1 | 0% | 1,498 | 1,265 | -16% | 0 | 0 | — |
case-02 | fail→fail | 9,472 | 6,539 | -31% | 1 | 1 | 0% | 1,779 | 1,323 | -26% | 0 | 0 | — |
case-03 | fail→fail | 18,061 | 10,885 | -40% | 1 | 1 | 0% | 2,984 | 1,262 | -58% | 0 | 0 | — |
case-04 | fail→pass | 12,138 | 4,362 | -64% | 1 | 1 | 0% | 1,742 | 1,625 | -7% | 0 | 0 | — |
case-05 | fail→pass | 4,702 | 1,873 | -60% | 1 | 1 | 0% | 925 | 1,272 | +38% | 0 | 0 | — |
case-06 | pass→pass | 6,023 | 2,069 | -66% | 1 | 1 | 0% | 952 | 1,339 | +41% | 0 | 0 | — |
case-07 | fail→pass | 8,716 | 1,919 | -78% | 1 | 1 | 0% | 1,231 | 1,181 | -4% | 0 | 0 | — |
case-08 | pass→pass | 1,726 | 2,384 | +38% | 1 | 1 | 0% | 230 | 1,264 | +450% | 0 | 0 | — |
case-09 | pass→pass | 3,006 | 2,647 | -12% | 1 | 1 | 0% | 472 | 1,399 | +196% | 0 | 0 | — |
case-10 | fail→pass | 6,945 | 1,853 | -73% | 1 | 1 | 0% | 1,137 | 1,212 | +7% | 0 | 0 | — |
case-11 | fail→pass | 10,791 | 2,458 | -77% | 1 | 1 | 0% | 1,691 | 1,300 | -23% | 0 | 0 | — |
case-12 | fail→pass | 11,923 | 2,977 | -75% | 1 | 1 | 0% | 1,843 | 1,349 | -27% | 0 | 0 | — |
case-13 | pass→pass | 5,638 | 2,817 | -50% | 1 | 1 | 0% | 1,109 | 1,423 | +28% | 0 | 0 | — |
case-14 | pass→pass | 6,168 | 2,178 | -65% | 1 | 1 | 0% | 997 | 1,288 | +29% | 0 | 0 | — |
case-15 | fail→pass | 9,173 | 2,232 | -76% | 1 | 1 | 0% | 1,381 | 1,318 | -5% | 0 | 0 | — |
case-16 | fail→pass | 6,971 | 1,693 | -76% | 1 | 1 | 0% | 1,027 | 1,214 | +18% | 0 | 0 | — |
case-17 | fail→pass | 8,718 | 2,978 | -66% | 1 | 1 | 0% | 1,227 | 1,423 | +16% | 0 | 0 | — |
case-18 | pass→pass | 15,434 | 10,747 | -30% | 1 | 1 | 0% | 2,219 | 1,794 | -19% | 0 | 0 | — |
case-20 | fail→pass | 13,395 | 3,300 | -75% | 1 | 1 | 0% | 2,019 | 1,461 | -28% | 0 | 0 | — |
case-21 | pass→pass | 4,908 | 2,750 | -44% | 1 | 1 | 0% | 781 | 1,331 | +70% | 0 | 0 | — |
case-22 | pass→pass | 7,847 | 3,432 | -56% | 1 | 1 | 0% | 1,175 | 1,463 | +25% | 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 19 counted toward the lift figure. The other 3 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 +50 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is 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.