Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Compute what a planned source-code change will break — blast radius, affected processes, cross-repo callers, temporal stability, and Cortex decision-memory constraints — and produce a risk-rated change plan. Use for multi-symbol or multi-part edits, refactors, API changes, renames, removals, PR reviews, or risk assessments that need a plan; for one symbol's raw blast radius, call get_impact directly. Do not manually grep references or browse files for impact; use Memtrace graph context, change h
.claude/skills/syncable-dev-memtrace-change-impact-analysis/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 20% | 0% |
Pre-change risk assessment workflow. Before modifying code, this workflow maps the full blast radius, identifies affected processes, checks recent change history for instability signals, checks Cortex decision memory for recorded decisions/bans/contracts, and produces a risk-rated change plan.
Use this workflow when the change spans multiple symbols or needs a risk-rated plan. For a quick raw upstream/downstream radius around one known symbol, call get_impact directly.
Find the target symbol(s):
find_symbol if the user named specific functions/classesfind_code if the user described behaviour ("the authentication middleware")Collect symbol names (name, scope_path, file_path) for all targets — graph tools use names, not internal IDs.
For each symbol, call get_symbol_context (repo_id, symbol, file_path):
Decision: If cross-repo API callers exist, this change requires coordination with other teams. Flag this immediately.
For each target, call get_impact (repo_id, target) with direction: "both", depth: 5:
Decision: | Risk | Action | |------|--------| | Low | Proceed with standard testing | | Medium | Review all direct callers; test affected processes | | High | Plan incremental migration; consider feature flags | | Critical | Full migration strategy; backward-compatible changes required |
For each target or subsystem, call recall_decision("<target/subsystem/approach>"). If the graph result exposes a numeric symbol_id, also call why_is_this_here(symbol_id) and governing_contracts(symbol_id).
verify_intent(decision_id) first.Call get_evolution (repo_id, from: "30d ago", mode: "compound"), then get_timeline on each target symbol (requires scope_path + file_path from find_symbol):
top_touched_symbols → high churn + high impact = volatile hotspot.From step 2, you already know which processes are affected. For critical changes, use analyze_relationships (repo_id, target) with query_type: "find_callers" at depth: 3 to trace the full transitive caller chain.
depth: 3 is a JSON number, not a string — the validator rejects "3". Full parameter spec for every Memtrace tool: references/mcp-parameters.md (bundled at the memtrace-skills plugin root).
Synthesize into a change plan:
get_timeline history (stable) vs frequent appearance in top_touched_symbols (volatile)| Condition | Action | |-----------|--------| | Risk = Critical | Recommend backward-compatible change + deprecation path | | Cross-repo callers exist | Flag as requiring multi-service coordination | | Symbol has sparse timeline but high impact | Extra review — this rarely changes; make sure the change is intentional | | Multiple processes affected | List each affected flow; recommend testing each one | | Symbol is a bridge point | Change may disconnect parts of the architecture — verify alternative paths exist | | Cortex returns a held ban/contract | Do not recommend contradicting it without explicit user sign-off |
The workflow's artifact is the step-6 risk-rated change plan. Compact example:
textTarget: AuthService::validateToken (src/auth/service.ts) Blast Radius: 4 direct / 23 transitive dependents — Risk: High Affected Processes: login-flow, session-refresh Cross-Service Impact: 2 cross-repo API callers — needs multi-service coordination Stability Signal: appears in top_touched_symbols (volatile hotspot) Recommended Approach: incremental migration behind a feature flag Test Coverage: all 4 direct callers + both affected processes
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→fail | 19,019 | 8,247 | -57% | 1 | 1 | 0% | 4,114 | 1,768 | -57% | 0 | 0 | — |
case-07 | fail→fail | 9,015 | 5,378 | -40% | 1 | 1 | 0% | 538 | 1,521 | +183% | 0 | 0 | — |
case-01 | fail→fail | 22,286 | 7,226 | -68% | 1 | 1 | 0% | 3,713 | 1,586 | -57% | 0 | 0 | — |
case-02 | fail→fail | 33,007 | 12,387 | -62% | 1 | 1 | 0% | 5,262 | 1,635 | -69% | 0 | 0 | — |
case-03 | fail→fail | 33,073 | 4,669 | -86% | 1 | 1 | 0% | 4,955 | 1,505 | -70% | 0 | 0 | — |
case-04 | fail→fail | 6,723 | 8,498 | +26% | 1 | 1 | 0% | 985 | 1,614 | +64% | 0 | 0 | — |
case-05 | fail→fail | 4,813 | 36,640 | +661% | 1 | 1 | 0% | 716 | 2,084 | +191% | 0 | 0 | — |
case-08 | fail→fail | 7,006 | 4,220 | -40% | 1 | 1 | 0% | 312 | 1,272 | +308% | 0 | 0 | — |
case-09 | fail→fail | 12,929 | 11,627 | -10% | 1 | 1 | 0% | 1,100 | 1,445 | +31% | 0 | 0 | — |
case-10 | pass→pass | 11,481 | 5,138 | -55% | 1 | 1 | 0% | 1,828 | 1,962 | +7% | 0 | 0 | — |
case-11 | fail→pass | 12,233 | 3,879 | -68% | 1 | 1 | 0% | 1,791 | 1,822 | +2% | 0 | 0 | — |
case-12 | pass→pass | 7,568 | 4,310 | -43% | 1 | 1 | 0% | 1,266 | 1,920 | +52% | 0 | 0 | — |
case-13 | fail→pass | 12,605 | 7,029 | -44% | 1 | 1 | 0% | 1,794 | 2,190 | +22% | 0 | 0 | — |
case-14 | pass→pass | 9,742 | 6,692 | -31% | 1 | 1 | 0% | 1,480 | 2,150 | +45% | 0 | 0 | — |
case-15 | fail→pass | 8,272 | 6,251 | -24% | 1 | 1 | 0% | 1,223 | 1,646 | +35% | 0 | 0 | — |
case-16 | fail→pass | 13,205 | 5,489 | -58% | 1 | 1 | 0% | 2,225 | 2,180 | -2% | 0 | 0 | — |
case-17 | fail→pass | 8,253 | 2,695 | -67% | 1 | 1 | 0% | 1,325 | 1,594 | +20% | 0 | 0 | — |
case-18 | fail→pass | 11,024 | 3,506 | -68% | 1 | 1 | 0% | 1,739 | 1,774 | +2% | 0 | 0 | — |
case-19 | fail→pass | 13,588 | 8,301 | -39% | 1 | 1 | 0% | 2,119 | 1,951 | -8% | 0 | 0 | — |
case-20 | pass→pass | 10,567 | 9,841 | -7% | 1 | 1 | 0% | 1,621 | 2,719 | +68% | 0 | 0 | — |
case-21 | fail→pass | 12,527 | 4,966 | -60% | 1 | 1 | 0% | 2,027 | 2,093 | +3% | 0 | 0 | — |
case-22 | pass→pass | 14,358 | 9,366 | -35% | 1 | 1 | 0% | 2,141 | 2,586 | +21% | 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 13 counted toward the lift figure. The other 9 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 13 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.