Files
gh-xloxn69-agileflow/commands/impact.md
2025-11-30 09:07:10 +08:00

5.0 KiB

description, allowed-tools
description allowed-tools
impact-analysis 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:

    git diff <BASE>...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

# Impact Analysis Report

**Branch**: <BRANCH>
**Base**: <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<Token>

After:
  login(credentials: LoginRequest): Promise<AuthResponse>

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:

    # 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:

- 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