--- description: impact-analysis allowed-tools: Bash, Read, Edit, Write, Glob, Grep --- # impact-analysis Analyze the impact of code changes on other parts of the codebase. ## Prompt ROLE: Impact Analyzer OBJECTIVE Identify which files, tests, and features are affected by code changes to prevent regressions. INPUTS (optional) - FILES= (default: auto-detect from git diff) - BASE= (default: main/master) - RUN_TESTS=yes|no (default: yes, if tests found) DETECTION 1. Get changed files: ```bash git diff ...HEAD --name-only ``` 2. For each changed file, find: - **Direct imports**: Files that import this file - **Indirect imports**: Files that import files that import this file (2 levels) - **Test files**: Corresponding test files (*\.test\*, *\.spec\*) - **Related stories**: Stories mentioning this file in docs/06-stories/ ANALYSIS METHODS ### Static Analysis (AST parsing) - Parse import/require statements - Build dependency graph - Identify circular dependencies - Find dead code (exported but never imported) ### Test Coverage Mapping - Read coverage reports (coverage/lcov.info, coverage.json) - Map changed lines to test files - Identify uncovered changes ### Pattern Matching - API routes → API tests - Components → Component tests + Storybook stories - Services → Service tests + Integration tests - Database models → Migration tests IMPACT REPORT ```markdown # Impact Analysis Report **Branch**: **Base**: **Changed Files**: 5 **Potentially Affected Files**: 23 **Tests to Run**: 12 ## Direct Impacts ### src/api/auth/login.ts (MODIFIED) **Type**: API endpoint **Changes**: 23 lines modified **Direct dependents** (3): - src/api/auth/index.ts (exports this endpoint) - src/middleware/auth.ts (uses login logic) - tests/api/auth/login.test.ts (tests this file) **Indirect dependents** (8): - src/app.ts → src/api/auth/index.ts → login.ts - src/routes.ts → src/api/auth/index.ts → login.ts - [6 more...] **Related tests**: - ✅ tests/api/auth/login.test.ts (exists) - ⚠️ tests/integration/auth-flow.test.ts (may need updates) - ❌ Missing: E2E test for login flow **Related stories**: - US-0042: Implement JWT authentication (IN-REVIEW) **Coverage**: 87% (lines 45-52 uncovered) --- ### src/components/LoginForm.tsx (MODIFIED) **Type**: UI component **Changes**: 15 lines modified **Direct dependents** (2): - src/pages/Login.tsx - src/components/AuthModal.tsx **Related tests**: - ✅ tests/components/LoginForm.test.tsx (exists) - ⚠️ Accessibility tests not found **Related stories**: - US-0041: Create login form UI (IN-REVIEW) **Coverage**: 92% ``` ## Breaking Changes Detection Analyze function signatures and types: ``` ⚠️ BREAKING CHANGE DETECTED File: src/api/auth/login.ts Function: login() Before: login(email: string, password: string): Promise After: login(credentials: LoginRequest): Promise Affected callers (3): - src/middleware/auth.ts:45 - tests/api/auth/login.test.ts:23 - tests/integration/auth-flow.test.ts:67 ``` ## Test Recommendations Based on changes, suggest tests to run: **Critical** (always run): - tests/api/auth/login.test.ts (direct test) - tests/integration/auth-flow.test.ts (integration) **Recommended** (affected indirectly): - tests/api/users/*.test.ts (uses auth) - tests/e2e/login.spec.ts (E2E) **Optional** (low risk): - tests/components/Header.test.tsx (displays user from auth) ACTIONS (after user review) 1. Show impact summary 2. Ask: "Run affected tests? (YES/NO)" 3. If YES: ```bash # Run only affected tests npm test -- tests/api/auth/login.test.ts tests/integration/auth-flow.test.ts ``` 4. If tests fail: - Show failures - Suggest creating story: "US-XXXX: Fix regressions from " 5. If breaking changes detected: - Warn user - Suggest creating ADR if architectural change - Create stories for updating affected callers INTEGRATION ### CI Optimization Suggest optimized CI that only runs affected tests: ```yaml - name: Impact analysis run: npx claude-code /AgileFlow:impact-analysis BASE=main - name: Run affected tests run: npm test -- $(cat affected-tests.txt) ``` ### Story Updates - Update related stories with impact notes - Create new stories for regressions or breaking changes - Append to bus/log.jsonl: {"type":"impact","affected":23,"tests":12} VISUALIZATION (optional) Generate dependency graph: ``` src/api/auth/login.ts ├── src/api/auth/index.ts │ ├── src/app.ts │ └── src/routes.ts ├── src/middleware/auth.ts │ └── src/app.ts └── tests/api/auth/login.test.ts ``` RULES - Use static analysis when possible (faster than running tests) - Prioritize tests by risk (critical path first) - Never skip tests for modified files - Warn about uncovered changes - Suggest creating tests for uncovered code - Diff-first for any file modifications OUTPUT - Impact analysis report (markdown) - List of affected files and tests - Test recommendations (critical/recommended/optional) - Optional: Run tests and report results