blast-radius
Skill1 starsChanged 57 days agoMITView on GitHub
Find what a change could break somewhere else, beyond the diff, and prove the one fact it is safe because of by running real code instead of writing it up. Use when the user asks what a change could break, wants the blast radius of a change assessed, or has a small-looking diff they do not trust yet.
111 other projects use a version of this, 72 of them edited.
Adopted by
Most recently taken up by
- marmot-protocol/mdktheir own version, first seen Nov 9, 2026
- Yeachan-Heo/oh-my-claude-sisyphustheir own version, first seen Nov 8, 2026
- Loner1024/skillsedited, first seen Nov 8, 2026
- imranbarbhuiya/skillstheir own version, first seen Nov 8, 2026
- caidanw/skillsedited, first seen Nov 8, 2026
- pedrohcgs/claude-code-my-workflowtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use ketchup-video, principle-never-block-on-the-human and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
tristanphvnSkillketchup-video
Catch the user up like /keel:ketchup, with a short silent video of slides for what happened and the waiting calls as text under it. Use for /keel:ketchup-video.
Also in 14 projects that use this
jaydubya818Skillprinciple-never-block-on-the-human
Apply when safe reversible implementation details can proceed inside scope.
Also in 44 projects that use this
ianclearySkillprinciple-explain-the-number
Apply before you trust, report, or act on a number you measured: a speedup, a regression, a throughput, a latency, or an eval result. Find what limits it, and rule out that it measured something other than the work you think.
Also in 29 projects that use this
eryzerzSkillmake-bot-ui
Use when building a custom UI (page, dashboard, buttons) that should wake a Grok Bot over a webhook, when the user must provide a webhook sender key, or when exposing that UI on Tailscale.
Also in 20 projects that use this
bnemaSkillsetup-pstack
Configure which Pi models pstack uses per role. Detects available provider/model specs and writes pstack's user configuration. Use for /setup-pstack, "configure pstack models", or changing pstack model choices.
Also in 25 projects that use this
jaydubya818Skillprinciple-make-operations-idempotent
Apply when an operation must tolerate retries after partial completion.
Also in 46 projects that use this
- +6 more from jaydubya818
Other versions111 projects use a version of this.
Word for word · 0
None found.
Edited · 72
- backnotprop/pstack★ 3.8k39% same
- pixeltable/pixeltable★ 1.7k39% same
- moeru-ai/xsai★ 66739% same
- savannahfeder/agentbox★ 37617% same
- jtaroreh/agystack★ 12837% same
- uzairansaruzi/p3-stack★ 12639% same
- Dimon94/dverity★ 10738% same
- Dimon94/skills★ 10738% same
- dsebban/skills★ 7139% same
- timharris707/skills★ 4426% same
62 more not listed
Wrote their own version · 39
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
- Yeachan-Heo/oh-my-claudecode★ 41ksame name
- pedrohcgs/claude-code-my-workflow★ 1.7ksame name
- marmot-protocol/mdk★ 69same name
- JetBrains/context★ 38same name
- TheOnlyFusionCube/potetos-for-everyone★ 21same name
- korallis/skills-collection★ 14same name
- rizzn/Public-Agent-Kit★ 11same name
- jjxmonster/skills★ 8same name
- anotherben/claude-harness★ 7same name
29 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository27 other files it gives its agents.
- codebase-designSkill
- code-reviewSkill
- create-verification-skillSkill
- designingSkill
- domain-modelingSkill
- handoffSkill
- hf-cliSkill
- howSkill
- implementSkill
- improve-codebase-architectureSkill
- interrogateSkill
- laziness-protocolSkill
- maintain-verification-skillSkill
- navigatorSkill
- no-commentsSkill
- prototypeSkill
- recallSkill
- redesign-from-first-principlesSkill
- researchSkill
- review-unpushedSkill
- scopeSkill
- show-me-your-workSkill
- technical-writingSkill
- tracerSkill
- unslopSkill
- whiteboardSkill
- writing-for-agentsSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 2 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 106 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 55
The dependency's real source: Read it, at the version the lockfile pins, plus any local patch.
- Distinctive: line 69
Write the script or test that runs the real code, run it, and paste what happened.
- Very specific: line 73
If the change is wide enough that one reading will miss something, run the diff through interrogate as well and fold its consensus findings …
- Very specific: line 87
Risks: Only the real ones. Each names how it breaks, a real file:line, how likely, how bad, and how to check.
- Very specific: line 92
Write it through the unslop skill, cite real code, and strip anything private before it leaves the repo.
“Common” is measured: kept by at least 6 in 10 of the 106 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Blast radius
Find what a change breaks somewhere else, before it ships. The answer is only worth having if the fact it rests on was proven by running code.
Listing the callers is not the job. Any agent can grep those in a second. The job is the breakage grep will not show you.
This is not code-review, which judges a diff against the repo's documented standards, spec, and invariants. It is not interrogate, which throws several models at the diff itself. Both look at the change. This one looks at everything the change reaches.
Do not trust your own writeup
A blast-radius writeup that sounds right is worthless. It reads as convincing whether or not it is true, and the more fluent it is the more expensive the mistake. So the deliverable is not the writeup. It is the one or two facts the whole thing depends on, proven.
How sure are you
For each fact the change's safety depends on, get it as far down this ladder as is cheap, and say where it stopped.
- You said so. Worthless on its own.
- You pointed at the line. A real
file:line, in this repo or in the dependency's own source. - You showed the bad case cannot happen. You walked the failure step by step and it does not reach.
- You ran it. A script or test that calls the real code and fails loud if you are wrong.
- You reproduced it in the running app.
Rung 4 is usually one small script that imports the same version of the library the app ships and calls the exact function you are worried about. That is minutes of work, so the bar is rung 4 unless you can say concretely why it is expensive here.
Any safety fact you cannot get to rung 4, label unproven and leave labelled. Do not write it up as settled.
1. Read the change
The diff, the symbols it adds, changes, and deletes, and what the code now does differently. Include the part the diff does not spell out: the behaviour that moved without the line moving, the default that changed, the call that is now reached on a path it was not reached on before.
Where the change has a spec, read it. In a repo with a docs/app-maps/APP_MAP.json, an item id in the commit messages resolves to an openDebt or plannedWork.backlog entry, and that entry's fix states the shape the change was meant to take. A diff that reaches further than its fix described is itself a finding.
2. Load what this repo has already been burned by
Read invariants.items and evolutionTraps.items from the map for the area the change touches. Every invariant is a rule that has already caused a real bug here, and every trap is something that used to be true. This is the cheapest blast-radius signal in the repo and it is one read.
For each invariant that the change could plausibly reach, that is a candidate risk, and its enforcedBy tells you whether anything would catch it. An invariant whose enforcedBy is prose rather than a command is the one to worry about.
3. Find the one fact it is safe because of
Most changes that look risky are safe because of a single fact. "This call only drops cache entries that are already dead, and does nothing else." "This field is written in one place and that place runs before any reader exists."
Find that fact and name it. If it holds, most of the risky cases clear at once. Spend your time here rather than on a long list of maybes, because a long list of maybes is what this skill exists to avoid producing.
4. Look where grep stops
A symbol search covers the easy half. Work the other half deliberately:
- The dependency's real source. Read it, at the version the lockfile pins, plus any local patch. What the docs say and what the shipped code does are different objects.
- When things run. Microtask versus macrotask, mount versus effect versus teardown, transaction boundaries, retries, what happens on the second call.
- Data that crosses a wall. The JSON an API returns, a database column, a cache key, a queue payload, a wire format, a generated file, another language reading the same bytes.
- Indirection a search cannot follow. A string key, a route table, dependency injection, an event name, a feature flag, reflection.
- Three hops downstream. The caller's caller's caller, where the change alters something the immediate caller does not care about but a distant one does.
5. Be honest about each risk
Give every risk a real chance of happening and a real cost if it does. Keep the ones you confirmed. List what you checked and cleared separately, because "I looked and it is fine" is information and deleting it means the next person looks again.
Cite a real file:line for every risk. A search that finds nothing is still an answer, so report it as one. Never invent a caller or an API.
6. Prove it
Write the script or test that runs the real code, run it, and paste what happened. Not what you expect to happen.
Where the risk is durable rather than specific to this diff, the proof should not be a one-off. The project's anchors in .claude/harness.config.json are the commands it trusts, and a proof worth keeping belongs there as a new anchor, or as an enforcedBy command on an invariant. Propose that; do not add it as a side effect of answering the question.
If the change is wide enough that one reading will miss something, run the diff through interrogate as well and fold its consensus findings in here. Different models catch different real bugs.
7. Feed what you learned back to the map
A risk you confirmed and fixed is a bug this repo has now been burned by, which is the bar for invariants.items. Offer the entry, shaped as the map wants it: rule, failureMode, and enforcedBy naming the command from step 6 that catches it.
An assumption you found to be stale belongs in evolutionTraps.items. A risk you confirmed but chose not to fix belongs in openDebt with its evidence and mechanism, not in a paragraph of chat that scrolls away.
Offer these as edits and let the user take them. Do not write to the map as a side effect.
Output contract
- What it does. What changed, including the part that is not obvious from the diff.
- The one fact it is safe because of. State it, say which rung of the ladder you got it to, and show the proof. If you could not prove it, write unproven and leave it there.
- Risks. Only the real ones. Each names how it breaks, a real
file:line, how likely, how bad, and how to check. Paste the proof for the ones that matter. - Cleared. What you checked and why it is fine, including the searches that found nothing.
- Before you merge. The cheapest test or repro that catches the real bug, including the script you wrote.
- Map edits offered. Any invariant, trap, anchor, or debt entry step 7 turned up, ready for the user to accept.
Write it through the unslop skill, cite real code, and strip anything private before it leaves the repo.
Reply: the writeup above, with the one safety fact either proven or marked unproven.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

