Incremental Change Impact
Overview
Identify full impact scope before making changes. Trace dependencies, enumerate affected
components, and assess cascading effects. Prevents blind changes that break unrelated systems.
REQUIRED: superpowers:verification-before-completion
When to Use
- User proposes changes, refactoring, or feature additions
- User asks "what will this affect?" or "what needs testing?"
- Before structural changes (renaming, moving, deleting)
- Before configuration changes (timeouts, thresholds, limits)
- When reviewing change proposals for impact
Core Workflow
- Identify change type (rename, add, modify, delete, config)
- Trace direct dependencies (callers, imports, references)
- Trace indirect dependencies (reflection, serialization, dynamic loading)
- Identify affected tests (unit, integration, e2e)
- Check non-code impacts (docs, configs, external APIs)
- Assess cascading effects (timeouts, retries, error handling)
- Provide risk assessment (breaking vs non-breaking, severity)
- Recommend verification approach
See references/dependency-analysis.md, references/impact-matrix.md,
and references/tooling.md for detailed techniques.
Quick Reference
| Change Type |
Typical Impact Areas |
| Method rename |
Callers, tests, reflection, serialization, docs, APIs |
| Add caching |
Invalidation points, transactions, all consumers |
| Config change |
Cascading timeouts, retries, health checks |
| Schema change |
Data access, migrations, backward compatibility |
| Delete component |
All dependents, error handling, fallback paths |
Red Flags - STOP
- "It's just a rename/config change"
- "IDE/compiler will catch it"
- "Tests will tell us if it breaks"
- "Too urgent to analyze"
- "Already done, let's ship"
All mean: Apply skill to identify full impact before proceeding.
Rationalizations Table
| Excuse |
Reality |
| "It's just a simple rename" |
Dynamic usage, reflection, external APIs make renames risky. |
| "IDE will catch all usages" |
IDE misses reflection, serialization, config files, docs. |
| "Tests will fail if broken" |
Tests may not cover all paths. Identify impact before, not after. |
| "This is an internal change" |
Internal changes cascade through timeouts, retries, monitoring. |
| "Too urgent to analyze" |
5-minute analysis prevents hours of production debugging. |
| "Already done, just ship" |
Sunk cost fallacy. Identify impact before deployment. |
Evidence Checklist
Dependency Tracing Commands
.NET (C#)
# Find all references to a type/method using dotnet CLI
dotnet build --no-incremental 2>&1 | grep "error CS"
# Using grep for direct references
grep -rn "ClassName" --include="*.cs" src/
# Using Roslyn analyzers (via dotnet format)
dotnet format analyzers --diagnostics=IDE0051 # Find unused members
# NuGet dependency graph
dotnet list package --include-transitive
TypeScript/JavaScript
# Find imports of a module
grep -rn "from ['\"].*moduleName" --include="*.ts" --include="*.tsx" src/
# Using madge for dependency graph
npx madge --circular src/ # Find circular deps
npx madge --depends-on src/utils/helper.ts src/ # Find dependents
# TypeScript compiler for unused exports
npx ts-prune # Find unused exports
Python
# Find imports using grep
grep -rn "^from module import\|^import module" --include="*.py" src/
# Using pipdeptree for package dependencies
pipdeptree --reverse --packages mypackage
# Using vulture for dead code
vulture src/ # Find unused code
# AST-based analysis
python -c "import ast; print(ast.dump(ast.parse(open('file.py').read())))"
Go
# Find package usages
go list -f '{{.ImportPath}} {{.Imports}}' ./... | grep "target/package"
# Reverse dependencies
go mod why -m github.com/org/package
# Find all callers of a function
grep -rn "FunctionName(" --include="*.go" .
Java
# Using jdeps for module dependencies
jdeps --module-path mods -s myapp.jar
# Gradle dependencies
./gradlew dependencies --configuration compileClasspath
# Find class references
grep -rn "ClassName" --include="*.java" src/
Recording Findings Template
# Impact Analysis: [Change Description]
**Date**: YYYY-MM-DD
**Analyst**: [Name]
**Change Type**: [rename|add|modify|delete|config]
## Summary
[1-2 sentence description of the proposed change]
## Direct Dependencies
| File | Line | Usage Type | Risk |
| --------------------------- | ---- | --------------------- | ------ |
| src/api/UserController.cs | 42 | Method call | Medium |
| src/services/AuthService.cs | 118 | Constructor injection | High |
## Indirect Dependencies
| Category | Finding | Risk |
| ------------- | ---------------------------------- | ------ |
| Reflection | Used in DI container registration | High |
| Serialization | JSON property name in API response | Medium |
| Configuration | Referenced in appsettings.json | Low |
## Affected Tests
| Test Category | Count | Files |
| ------------- | ----- | ----------------------------- |
| Unit | 12 | tests/unit/UserTests.cs, ... |
| Integration | 3 | tests/integration/ApiTests.cs |
| E2E | 1 | tests/e2e/LoginFlow.spec.ts |
## Non-Code Impacts
- [ ] API documentation needs update
- [ ] README references this component
- [ ] External API consumers may be affected
## Risk Assessment
**Breaking Change**: Yes/No
**Severity**: High/Medium/Low
**Recommended Approach**: [Incremental migration with feature flag / Direct replacement / etc.]
## Verification Plan
1. Run affected unit tests: `dotnet test --filter "Category=User"`
2. Run integration tests: `dotnet test --filter "Category=Integration"`
3. Manual verification: [specific steps]
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: incremental-change-impact3description: Use when user proposes changes, refactoring, or feature additions; asks about impact, affected components, or what needs testing; or before making structural changes. Identifies blast radius and cascading effects.4---56# Incremental Change Impact78## Overview910Identify full impact scope **before** making changes. Trace dependencies, enumerate affected11components, and assess cascading effects. Prevents blind changes that break unrelated systems.1213**REQUIRED:** superpowers:verification-before-completion1415## When to Use1617- User proposes changes, refactoring, or feature additions18- User asks "what will this affect?" or "what needs testing?"19- Before structural changes (renaming, moving, deleting)20- Before configuration changes (timeouts, thresholds, limits)21- When reviewing change proposals for impact2223## Core Workflow24251. **Identify change type** (rename, add, modify, delete, config)262. **Trace direct dependencies** (callers, imports, references)273. **Trace indirect dependencies** (reflection, serialization, dynamic loading)284. **Identify affected tests** (unit, integration, e2e)295. **Check non-code impacts** (docs, configs, external APIs)306. **Assess cascading effects** (timeouts, retries, error handling)317. **Provide risk assessment** (breaking vs non-breaking, severity)328. **Recommend verification approach**3334See `references/dependency-analysis.md`, `references/impact-matrix.md`,35and `references/tooling.md` for detailed techniques.3637## Quick Reference3839| Change Type | Typical Impact Areas |40| ---------------- | ----------------------------------------------------- |41| Method rename | Callers, tests, reflection, serialization, docs, APIs |42| Add caching | Invalidation points, transactions, all consumers |43| Config change | Cascading timeouts, retries, health checks |44| Schema change | Data access, migrations, backward compatibility |45| Delete component | All dependents, error handling, fallback paths |4647## Red Flags - STOP4849- "It's just a rename/config change"50- "IDE/compiler will catch it"51- "Tests will tell us if it breaks"52- "Too urgent to analyze"53- "Already done, let's ship"5455**All mean: Apply skill to identify full impact before proceeding.**5657## Rationalizations Table5859| Excuse | Reality |60| ---------------------------- | ----------------------------------------------------------------- |61| "It's just a simple rename" | Dynamic usage, reflection, external APIs make renames risky. |62| "IDE will catch all usages" | IDE misses reflection, serialization, config files, docs. |63| "Tests will fail if broken" | Tests may not cover all paths. Identify impact before, not after. |64| "This is an internal change" | Internal changes cascade through timeouts, retries, monitoring. |65| "Too urgent to analyze" | 5-minute analysis prevents hours of production debugging. |66| "Already done, just ship" | Sunk cost fallacy. Identify impact before deployment. |6768## Evidence Checklist6970- [ ] Change type identified explicitly71- [ ] All direct dependencies listed with file paths72- [ ] Indirect dependencies checked (reflection, serialization, configs)73- [ ] Affected tests identified by category (unit, integration, e2e)74- [ ] Non-code impacts included (docs, external APIs, configs)75- [ ] Cascading effects assessed if applicable76- [ ] Risk assessment provided (breaking/non-breaking, severity)77- [ ] Verification approach recommended7879## Dependency Tracing Commands8081### .NET (C#)8283```bash84# Find all references to a type/method using dotnet CLI85dotnet build --no-incremental 2>&1 | grep "error CS"8687# Using grep for direct references88grep -rn "ClassName" --include="*.cs" src/8990# Using Roslyn analyzers (via dotnet format)91dotnet format analyzers --diagnostics=IDE0051 # Find unused members9293# NuGet dependency graph94dotnet list package --include-transitive95```9697### TypeScript/JavaScript9899```bash100# Find imports of a module101grep -rn "from ['\"].*moduleName" --include="*.ts" --include="*.tsx" src/102103# Using madge for dependency graph104npx madge --circular src/ # Find circular deps105npx madge --depends-on src/utils/helper.ts src/ # Find dependents106107# TypeScript compiler for unused exports108npx ts-prune # Find unused exports109```110111### Python112113```bash114# Find imports using grep115grep -rn "^from module import\|^import module" --include="*.py" src/116117# Using pipdeptree for package dependencies118pipdeptree --reverse --packages mypackage119120# Using vulture for dead code121vulture src/ # Find unused code122123# AST-based analysis124python -c "import ast; print(ast.dump(ast.parse(open('file.py').read())))"125```126127### Go128129```bash130# Find package usages131go list -f '{{.ImportPath}} {{.Imports}}' ./... | grep "target/package"132133# Reverse dependencies134go mod why -m github.com/org/package135136# Find all callers of a function137grep -rn "FunctionName(" --include="*.go" .138```139140### Java141142```bash143# Using jdeps for module dependencies144jdeps --module-path mods -s myapp.jar145146# Gradle dependencies147./gradlew dependencies --configuration compileClasspath148149# Find class references150grep -rn "ClassName" --include="*.java" src/151```152153## Recording Findings Template154155```markdown156# Impact Analysis: [Change Description]157158**Date**: YYYY-MM-DD159**Analyst**: [Name]160**Change Type**: [rename|add|modify|delete|config]161162## Summary163164[1-2 sentence description of the proposed change]165166## Direct Dependencies167168| File | Line | Usage Type | Risk |169| --------------------------- | ---- | --------------------- | ------ |170| src/api/UserController.cs | 42 | Method call | Medium |171| src/services/AuthService.cs | 118 | Constructor injection | High |172173## Indirect Dependencies174175| Category | Finding | Risk |176| ------------- | ---------------------------------- | ------ |177| Reflection | Used in DI container registration | High |178| Serialization | JSON property name in API response | Medium |179| Configuration | Referenced in appsettings.json | Low |180181## Affected Tests182183| Test Category | Count | Files |184| ------------- | ----- | ----------------------------- |185| Unit | 12 | tests/unit/UserTests.cs, ... |186| Integration | 3 | tests/integration/ApiTests.cs |187| E2E | 1 | tests/e2e/LoginFlow.spec.ts |188189## Non-Code Impacts190191- [ ] API documentation needs update192- [ ] README references this component193- [ ] External API consumers may be affected194195## Risk Assessment196197**Breaking Change**: Yes/No198**Severity**: High/Medium/Low199**Recommended Approach**: [Incremental migration with feature flag / Direct replacement / etc.]200201## Verification Plan2022031. Run affected unit tests: `dotnet test --filter "Category=User"`2042. Run integration tests: `dotnet test --filter "Category=Integration"`2053. Manual verification: [specific steps]206```207208---209> Converted and distributed by [TomeVault](https://tomevault.io/claim/mcj-coder) — claim your Tome and manage your conversions.210<!-- tomevault:4.0:skill_md:2026-04-15 -->