change-impact

change-impact is a skill for Claude Code from uqeu/estelle-cli. It costs 0 tokens per session (1,404 once invoked), scanned A, original, Apache-2.0.

A repository-wide analysis of what else may be affected when a symbol, interface, or other code element changes, followed by checks that the proposed references are valid.

In plain words
What is it for?
It helps plan renames, type changes, signature changes, and deletions by mapping affected code and checking that the proposed change type-checks.
Why use it?
It helps reveal ripple effects across files and layers that a file-by-file edit can miss.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the estelle plugin — 26 skills, 4 agents, 9 hooks shipped together

Good fit It helps plan renames, type changes, signature changes, and deletions by mapping affected code and checking that the proposed change type-checks.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/uqeu/estelle-cli/change-impact
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add uqeu/estelle-cli --skill change-impact
Clone the repo
git clone --depth 1 https://github.com/uqeu/estelle-cli

Made for: Claude Code.

Or install estelle, the plugin that ships this one along with the rest of its 26 skills, 4 agents, 9 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for change-impact

README.md
[![agentmods](https://agentmods.dev/badge/skills/uqeu/estelle-cli/change-impact/github.svg)](https://agentmods.dev/skills/uqeu/estelle-cli/change-impact)
Your own site
<a href="https://agentmods.dev/skills/uqeu/estelle-cli/change-impact"><img src="https://agentmods.dev/badge/skills/uqeu/estelle-cli/change-impact/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for change-impact

Your own site · 80×15
<a href="https://agentmods.dev/skills/uqeu/estelle-cli/change-impact"><img src="https://agentmods.dev/badge/skills/uqeu/estelle-cli/change-impact.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,404 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.01404
Opus 5.5 $0.00000 $0.00562
Sonnet 5.5 $0.00000 $0.00281
Haiku 4.5 $0.00000 $0.00140

Measured 1mo ago against content hash e14519b86750, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

change-impact scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

estelle-plugin/skills/change-impact/SKILL.md · 73 lines

How it starts

The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.

change-impact

Estelle's cross-cutting-change skill, and a direct answer to Sourcegraph's flagship demo (a batch change that touched "31 files across 7 layers a naive agent missed"). Finding those files is the easy half — a structural graph does it deterministically. This playbook runs that half over the CUSTOMER's whole-repo RepoSurface / CodeGraph (a Sweep of their code, not Estelle's package), then adds the half a find-the-files tool structurally cannot: verification. It doesn't just list the sites — it certifies that the proposed edit references only symbols that actually exist and type-checks, using the same deterministic grounding gate that earns "zero hallucinated APIs on your own codebase". Sourcegraph finds; Estelle finds and verifies.

The whole capability is pure and reproducible — same graph → same map — and is exposed directly as change_impact(graph, target, *, changed_symbols=()) -> ImpactReport in conveyor/change_impact.py, composed with the grounding gate by the POST /impact endpoint.

When to run

Before any change that could ripple beyond the file you're editing: renaming or retyping a model field, changing a function signature, deleting a symbol, a framework/library bump, or a batch codemod across the repo. Run it first to size the blast radius and to catch the layer you'd otherwise forget (the migration, the tests, the serializer), and run /impact verification on the drafted edit before it lands so a hallucinated API never reaches review.

Procedure

  1. Build the code graph of the customer's repo. Sweep their repository into a CodeGraph / RepoSurface (build_repo_surface over the Sweep's (path, content) files) so the fan-out in step 3 rides their real import edges and symbol definitions — resolved Python dotted imports and JS/TS relative imports — not assumed ones. This is the ground truth a chunk-RAG index cannot provide.
  2. Name the change precisely. The target is the changed symbol or file; changed_symbols narrows the fan-out to the specific fields/methods that moved. For "I changed field total on class Order", pass change_impact(graph, "Order", changed_symbols=("total",)) — the class gives the origin file for the import closure, the field drives the reference fan-out.
  3. Fan out to EVERY affected site (nothing missed). Union three deterministic graph queries, deduped by file: the definition sites (definition_sites — the change's own home, file:line); every direct reference (references — repo-wide find-usages, instant where grep is noisy); and the transitive importer closure (blast_radius — every file that transitively imports an origin file, the reverse-import closure that answers "what could break?"). Each site carries WHY it's in the set (defines / references / transitively imports).
  4. Group the sites into stack layers. Cluster the affected files by subsystems plus a deterministic path/name heuristic into the layers a cross-cutting change commonly spans — model, data-access/store, api/dto, auth/middleware, routes/frontend, migration, audit/logging, tests — so the map reads top-down through the stack instead of as a flat file list. Rank the load-bearing layers with betweenness_centrality / central_files when you need to know which hop is riskiest.
  5. Flag the layers this change FORGOT. When the change touches a core-data layer (model or store) but leaves a companion layer untouched — no migration, no updated tests — surface it in commonly_missed. This is the "did you forget the migration?" signal: the exact class of miss a naive per-file search silently ships, and the reason a graph beats grep here.
  6. VERIFY the proposed edit — the beat. Send the drafted cross-cutting change through /impact, which reuses the deterministic grounding + TYPE gate (check_grounding): it flags any symbol the edit references that the repo doesn't define (ungrounded — a hallucinated API), any call with the wrong arity (arity_errors), and any attribute/argument that contradicts the repo's own types (type_errors). A find-the-files tool would list your invented Order.recompute_totals() right next to the real methods; the gate refuses it. Certification, not a suggestion.
  7. Route the model by task. Producing the human-readable change plan from the report is a classify / chat job, so model_router.route("classify", tokens=…) returns the CHEAP tier; drafting the actual cross-cutting edit is an architect task, so route("architect", needs_reasoning=True) returns FRONTIER. Route.reason keeps the choice auditable. The verify step costs zero model calls when the edit is clean.
  8. Emit the map and gate the edit into the loop. Return the ImpactReport — target, total sites, the ordered per-layer breakdown with file:line sites and the why, and commonly_missed — then require the proposed change to clear the grounding gate (and the merge gate + test suite) before it lands. File wide-radius changes as run_autonomy swarm tasks, ceiling-gated, one worktree per affected subsystem.

Read the full file on GitHub · 73 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 73 lines · 0 tokens per session scan A e14519b86750

Subscribe to this mod's changes

change-impact is a skill published in the GitHub repository uqeu/estelle-cli (0 stars, last pushed 14d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 1,404 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-12.

Related

Other skills, from other repositories

cocosearch-review-pr

Use when reviewing a GitHub PR or GitLab MR by URL. Fetches diff and metadata via API, then uses CocoSearch for blast radius analysis, dependency impact, pattern consistency, and test coverage assessment. Read-only by default; optionally pushes findings back as inline PR/MR comments after your confirmation.

VioletCranberry/coco-search · 68 tokens

find-simplifications

Use for a periodic repo-wide sweep of qwen-code for accumulated excess surface — dead components and files, orphaned locale keys, exports nothing consumes, added-then-removed scaffolding — filing candidates on a tracking issue and landing only what a maintainer has said yes to. Repo-wide and evidence-first; every…

QwenLM/qwen-code · 103 tokens

swarm-pr-review

Run a graph-guided, tool-augmented PR review using context packing, parallel exploration, mandatory repository-agnostic risk-family coverage with dispatch scaled to diff size and risk, independent reviewer validation, critic challenge, and metrics writeback. Use for deep pull request review with low false-positive…

ZaxbyHub/opencode-swarm · 91 tokens

code-review

You are a senior code reviewer. You receive diffs via stdin.

jrswab/axe · 0 tokens

include-test-files-that-assert-on-behavior-being-changed-in-decl

When delegating a task affected by this skill, include.

ZaxbyHub/opencode-swarm · 29 tokens

review

Adversarial fresh-context review and risk check of an increment before it ships; every finding cites path:line and is re-verified. Use for "review", "qa", "quality check", "critique this".

anton-abyzov/specweave · 45 tokens