what-could-break
Identifies what a change might affect in other parts of the code. It's useful before making changes to important files to avoid errors.
What it does
This tool helps you find out what might break in your code when you make a change. It checks not only what you modified but also how that change could affect other parts of the system that aren't directly related to your edit.
When to use it
- ✓Before making large changes across multiple code sections.
- ✓When editing files used by many other programs.
- ✓When you want to ensure a small change won't cause unexpected issues.
Example of what to ask your AI
“What could this change break in other parts of the system?”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool analyzes your change and looks for potential problems elsewhere. It tries to prove your change is safe by running real tests with the modified code.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill what-could-breakOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/what-could-break/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
What Could Break
Overview
Listing callers is not the job. Grep does that in a second. This skill finds the breakage grep will not show you, and produces one proof that the change is safe.
Run it before design, not only before merge. Whenever a task asserts something about existing code ("X already handles Y", "just make X public"), that assertion is a hypothesis, and the census of real consumers decides the design.
When to Use
- Use before any multi-file edit, or an edit to a shared path: API payload, config, stored data, a client other apps read, a prompt or policy file
- Use when the user asks "what could this break" or "blast radius of X"
- Use for a small diff you do not trust
- Use when a brief asserts something about existing code, before you design against that assertion
How It Works
Step 1: Do not trust your own writeup
A risk analysis that sounds right is worthless: it reads as convincing whether or not it is true. Find the one or two facts the whole change depends on, and get each one as far down this ladder as is cheap. Say where it stopped.
- You said so. Worth nothing on its own.
- You pointed at it. A real
file:line, or the library's own source at the pinned version. - You walked it. You traced the bad case step by step and it does not reach.
- You ran it. A script or test calls the real code and fails loud if you are wrong.
- You saw it live. Reproduced in the running app, service or device.
Rung 4 is usually one small script that imports the same module production runs and calls the exact function you are worried about, with the input you are worried about.
Step 2: Read the change
The diff, the symbols it adds, changes and deletes, and what it now does differently,
including what the diff does not spell out. git log -S '<symbol>' and
git log -L :<function>:<file> show why the old shape exists; a guard that looks
pointless often has a commit explaining the incident it stopped.
Step 3: Find the one fact it is safe because of
Most risky-looking changes are safe because of one fact ("this only drops cache entries that are already expired", "no client reads this field"). If it holds, most risks clear at once. If you cannot find one, the change is not understood yet.
Step 4: Look where grep stops
Search for the literal value, the field name, the error text and the old behavior, not only the symbol you renamed. Then check each of these by hand:
- The same rule living twice. A second config file, a fallback path that hardcodes the old default, a copy synced into another repo, a constant duplicated in a migration or test fixture, a feature flag default.
- Prompts and agent files that restate the rule. System prompts, agent and skill files,
AGENTS.md,CLAUDE.md, runbooks. An agent obeys the stale sentence, not your code. - Every other client. Web, iOS, Android, desktop, CLI, extensions, partner integrations. Mobile clients in users' hands stay on the old version for weeks: what does an old client do with the new shape, and a new client with the old server?
- Wire formats. JSON field names and types, enum values, null versus missing, date formats, pagination shape, error codes, webhook payloads, queue schemas, GraphQL and protobuf contracts.
- Stored state. Columns and their defaults, rows written under the old shape, cache entries, files on disk, append-only logs, session and cookie contents, search indexes. Old data outlives the deploy.
- Environment and secrets. An env var renamed in code but not in the deploy config, CI, the image, or the second service that reads it.
- Processes that restart separately. Web server, workers, cron jobs, serverless functions, the mobile app, a sidecar. During a rollout one runs new code while another runs old code against the same data. Can both coexist for an hour?
- Timing and concurrency. Two writers on the same row or key, a retry that now fires twice, ordering that only held because one step was slow.
- Library source at its pinned version. Read the dependency's code at the lockfile version, not your memory of its docs.
- Generated and vendored code. Clients generated from a schema, vendored copies, committed build artifacts, bundles whose cache-busting key did not change.
- Tests and fixtures that encode the old behavior. A test that passes because its fixture still has the old shape proves nothing about the new one.
…
FAQ
Why can't I just use 'grep'?
'Grep' searches for specific text. This tool goes further by checking how the code actually works and communicates with other parts, which 'grep' cannot do.
What does 'rung 4' mean?
'Rung 4' is a confidence level where a test or script executes the real code with expected inputs and fails if something is wrong. It's a way to prove the code works as intended.
What are 'wire formats'?
These are the ways data is exchanged between different parts of a system, such as message formats (JSON, XML), field names, data types, and how errors are communicated.
Details
Original description by the author
Find what a change breaks outside its own diff, then prove the one fact that makes it safe by running real code. Use before any multi-file edit or an edit to a shared path.
Popularity
- GitHub stars
- 48k
- Ranking position
- #4557
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
cpp-testing
Makes your agent write and improve tests for C++ code. It helps set up testing tools and fix errors.
affaan-m/ECC
csharp-testing
Helps your agent create tests for C# and .NET code. It uses best practices to ensure tests are efficient and reliable.
affaan-m/ECC
django-tdd
Enables your agent to apply testing strategies for Django with pytest-django and TDD. It's useful for writing robust tests and ensuring code quality, especially for DRF APIs.
affaan-m/ECC