{
  "version": "act 1.0.17",
  "slug": "change-impact",
  "name": "change-impact",
  "description": "Use before modifying a file or symbol, or when asked \"what breaks if I change X?\". Depth 0 \u2014 fast, no follow-up queries, returns immediately. Two modes: inline (no artifacts, default for agent-initiated use) and artifact (writes to docs/act/, triggered for human-initiated requests or Critical risk verdicts).",
  "url": "https://act101.ai/docs/skills/change-impact",
  "body_md": "# Change Impact\n\n**Depth:** Level 0 (Collect).\n\nSee `../analysis-protocol/references/protocol.md` for: artifact directory structure,\nthe investigation loop, depth levels, summary format, token budget rules, and project\nmap structure.\n\n## Tools\n\n| Tool | Purpose | MCP call |\n|------|---------|----------|\n| `analyze_impact` | Blast radius (R1) | `analyze_impact` with `target: <X>` |\n| `analyze_test_gaps` | Is the target tested? (R5) | `analyze_test_gaps` |\n| `analyze_cycle_risk` | Is the target in a risky cycle? (R6) | `analyze_cycle_risk` |\n\nIf `analyze_test_gaps` or `analyze_cycle_risk` are unavailable: run `analyze_impact`\nonly. Note which tools were skipped in the verdict and caveat accordingly.\n\nIf `analyze_impact` is unavailable: report that and stop \u2014 no useful verdict possible.\n\n## Two Modes\n\n**Inline mode** (default for agent-initiated use):\n- Returns the summary directly to the calling agent\n- Does NOT write artifacts to disk\n- Use when an agent needs a quick risk check before making a change\n\n**Artifact mode** (for human-initiated requests, or when verdict is Critical):\n- Follows the full artifact protocol: create `docs/act/<timestamp>/`, write\n  `manifest.json`, save `raw/*.json`, write `report.md`\n- Triggered automatically when verdict is **Critical**, even if initially invoked inline\n- Triggered by explicit user request (e.g., \"analyze impact of changing X\")\n\n## Risk Verdict\n\nCompute from tool outputs:\n\n| Verdict | Criteria |\n|---------|----------|\n| **Low** | Blast radius < 5 files, target is tested, not in a risky cycle |\n| **Medium** | Blast radius 5-15 files, OR target is untested |\n| **High** | Blast radius > 15 files, OR target is untested AND in a cycle |\n| **Critical** | Blast radius > 30 files, OR target is in a high-risk cycle (>50% of codebase risk surface) |\n\nWhen multiple criteria apply, use the highest verdict. When tools are missing, caveat\nthe verdict: \"Medium (test coverage unknown \u2014 analyze_test_gaps not available)\".\n\n## Summary Format\n\nReturn this to the calling agent:\n\n```\n## Change Impact: <target>\n\n**Risk: <Low / Medium / High / Critical>**\n- Blast radius: N direct, M transitive dependents\n- Test coverage: tested / untested / unknown (tool unavailable)\n- Cycle risk: none / low / high (N% of codebase affected) / unknown (tool unavailable)\n\n**Caution areas:** <list of highest-risk direct dependents, or \"none identified\">\n**Suggested:** <e.g., \"run tests in X before merging\", \"review Y for breakage\", \"run architecture-audit to understand full impact\">\n```\n\n## Project Map Updates\n\nNone. Change Impact reads `project-map.md` (workspace root) for context (chokepoints, known\nrisky files) but does not modify it."
}