Agent Skills: Impact Analysis

Analyze what would break if a symbol is changed — finds all callers, groups by risk level, and assesses change impact. Use when the user asks about the blast radius of a change, wants to know who uses a symbol, or is planning a refactor and needs to understand downstream effects.

UncategorizedID: anortham/julie/impact-analysis

Install this agent skill to your local

pnpm dlx add-skill https://github.com/anortham/julie/tree/HEAD/.claude/skills/impact-analysis

Skill Files

Browse the full folder contents for impact-analysis.

Download Skill

Loading file tree…

.claude/skills/impact-analysis/SKILL.md

Skill Metadata

Name
impact-analysis
Description
Analyze what would break if a symbol is changed — finds all callers, groups by risk level, and assesses change impact. Use when the user asks about the blast radius of a change, wants to know who uses a symbol, or is planning a refactor and needs to understand downstream effects.

Impact Analysis

Analyze the impact of changing a symbol by finding all references and assessing risk. Use this BEFORE modifying widely-used symbols.

Process

Step 0: Orient on the Area (Optional)

Get a broad view of the symbol's neighborhood:

get_context(query="<symbol_name>")

This reveals the symbol's centrality (how well-connected it is) and surrounding context. High-centrality symbols in the pivot list are inherently higher risk — they're well-connected in the reference graph.

Step 1: Find All References

fast_refs(symbol="<symbol>", include_definition=true, limit=100)

Step 2: Deep Dive the Symbol

deep_dive(symbol="<symbol>", depth="context")

Understand what the symbol does, its signature, and what it depends on.

If deep_dive returns the wrong symbol (common names like new, result, config), use context_file to disambiguate:

deep_dive(symbol="<symbol>", context_file="<partial_file_path>")

Step 3: Categorize References by Risk

Group each reference by the file it appears in, then classify:

High Risk — Changes here could cause cascading failures:

  • Entry points and core orchestration files (e.g., main entry, request handlers, routers)
  • Files with 10+ references to this symbol
  • Files that re-export or wrap this symbol

Medium Risk — Changes need careful testing:

  • Feature implementation files
  • Data access / storage modules
  • Files with 3-9 references

Low Risk — Changes are isolated:

  • Test files (paths containing test, tests, spec, __tests__, or test annotations)
  • Files with 1-2 references

Step 4: Sample Deep Dives on High-Risk Callers

For each high-risk file, deep_dive on the calling function to understand HOW the symbol is used:

  • Is it called with specific arguments?
  • Does the caller depend on the return type?
  • Is it used in error handling paths?

Step 5: Report

Impact Analysis: <symbol_name>
Definition: <file>:<line> (<kind>)
Centrality: <high/medium/low>

Total: <N> references across <M> files

High Risk (<count> files):
  src/handler.rs — 15 refs
    Callers: process_request, handle_error, validate_input
    Usage: Core request pipeline, changes here affect all tool calls

  src/database/queries.rs — 12 refs
    Callers: fetch_symbols, update_index
    Usage: Database layer, type changes would require migration

Medium Risk (<count> files):
  src/tools/search.rs — 5 refs
  src/tools/navigation.rs — 3 refs

Low Risk (<count> files):
  src/tests/search_tests.rs — 8 refs (test code)
  src/tests/handler_tests.rs — 2 refs (test code)

Recommendation:
  <1-2 sentences on how to approach this change safely>

Important Notes

  • Always check test coverage — high-risk changes with no test references are especially dangerous
  • Type changes cascade — if the symbol is a type/struct, any field change affects all users
  • Interface/trait changes are widest — changing an interface method, trait, or abstract class affects all implementors
  • Reference workspaces: Pass workspace: "<workspace_id>" to all tool calls when analyzing a non-primary workspace