agentleFS
RagnarPitlaRagnarPitla/microsoft-agent-skills-private-archive/.github/skills/assess-change-blast-radius/SKILL.md

assess-change-blast-radius

Skill2 starsChanged 2 months agoMITView on GitHub

Work out what a Power Platform or Copilot Studio change breaks somewhere else, before it ships. Use when a solution is about to be imported into production, when a connection reference or environment variable is being repointed, when a connector is being added to a DLP policy, when trigger phrases or a knowledge source are changing, when a shared component is being deleted, when an agent is about to be published, or when someone asks \"what could this break\".

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    A managed or unmanaged layer: If an unmanaged layer sits above a managed component, it wins, and your managed update lands underneath it …

    line 98
  2. Distinctive:

    A custom connector: Every consumer moves with it.

    line 119
  3. Distinctive:

    Keep the risk list short and honest.

    line 138

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- Generated from SKILL.md by scripts/build-harnesses.mjs. Do not edit by hand; run `npm run build`. --><!-- Source: skills/review/assess-change-blast-radius/SKILL.md -->

On a code change, the callers are greppable. You read the diff, search the symbol, and the tooling shows you who is affected.

None of that holds here. The things that depend on a Power Platform change are not in the file you edited. They are in Dataverse solution metadata, in an environment you are not currently looking at, in a DLP policy set by somebody in another team, and in a classifier that will reroute traffic you never touched. So the instinct that works on a pull request under-reports every time, and it under-reports confidently, which is the dangerous part.

Listing the components in the solution is not the job. Anyone can read the component list. The job is the breakage the component list does not show.

Companion to review-copilot-studio-agent, which reads one agent's configuration for defects, and to power-platform-alm-connection-refs, which fixes the import itself when it breaks. This skill answers a different question: the change is correct, so what else moves when it lands?

Do not trust your own writeup

A blast-radius writeup that sounds right is worthless, because it reads as equally convincing whether or not it is true. That is the trap.

So do not hand back the reasoning. Find the one or two facts the change's safety actually depends on, and settle them against the platform rather than against your own model of the platform.

How sure are you

For each safety-critical fact, get it as far down this list as is cheap, and say out loud where it stopped.

  1. You said so. Worthless on its own, however plausible.
  2. You pointed at the artifact. A real file and line in the YAML, a named component in the solution, the exact environment variable schema name.
  3. You walked the path. You traced how the failure would have to happen and it does not reach.
  4. You asked the platform. You opened the dependency view, the connection reference's consumers, the solution layers, or the DLP impact, and read what Dataverse says rather than what you inferred.
  5. You ran it. You imported into a non-production environment and watched the behaviour.

Step 4 is the one people skip, and it is the only step that beats inference, because Dataverse tracks dependencies that are invisible in the file you edited. Anything you cannot get to step 4, mark unproven. Do not round up.

Find the one fact it is safe because of

Most changes that look frightening are safe because of a single fact. "This topic is only reachable from one parent topic, which we are not changing." "This environment variable already has a current value in every target environment, so the new default is inert." "This connector is already in the Business group of every policy that touches these environments."

Find that fact first. If it holds, most of the scary cases die at once and you can spend your attention on the two that survive. If you cannot find it, that is itself the finding, and it usually means the change is larger than it looks.

Where the blast radius actually goes

Work from what changed. Each of these reaches past the artifact in front of you, and none of them shows up in a diff.

A connection reference. Connection references are shared. Repointing one, or reassigning the connection behind it, moves every flow and agent action that references it, across every solution in that environment, not just the one you are working in. Enumerate the consumers before you touch it.

An environment variable. There are two values: a default that travels in the solution, and a current value set in the environment. The current value wins. So changing the default is a no-op wherever a current value already exists, and a live change wherever one does not. That asymmetry is why the same deployment behaves differently in test and production, and why "it worked in UAT" is not evidence here.

A DLP policy. Policy changes are environment-wide or tenant-wide, and they apply to things that already exist. Moving a connector into the blocked group affects every flow, app and agent already using it, immediately and without a deployment. Check what is using the connector before the policy changes, not after somebody reports it.

A deleted or removed component. Removing a component from a solution and deleting it from the environment are different actions with very different consequences. Use the dependency view first: it separates what merely uses the component from what blocks its deletion outright, and the second list is the one that tells you the change is bigger than planned.

A managed or unmanaged layer. If an unmanaged layer sits above a managed component, it wins, and your managed update lands underneath it and appears to do nothing. The deployment succeeds, the behaviour does not change, and everyone looks for the bug in the wrong place. Check the layers before concluding a change failed to apply.

Topic triggering in a Copilot Studio agent. Routing is global, so a topic you add or a trigger phrase you edit changes selection for topics you did not touch. The new topic can quietly capture traffic that used to reach an existing one. The blast radius of adding a topic is every topic near it in meaning, which is why this needs an evaluation rather than one test question.

A knowledge source. Adding, removing or rescoping a source changes answers to every question in its neighbourhood, not only the question that prompted the change. If you are fixing one bad answer this way, measure the others before and after.

A connected or child agent. Its behaviour propagates to every parent that calls it. Ownership of the change and ownership of the consequences are usually different people, so find the callers before shipping.

A custom connector. Every consumer moves with it. Version and deprecate rather than editing in place when the consumers are not all yours.

Publishing. Publishing pushes the draft live to the channels the agent is already published on. There is no per-channel staging, so "let me publish and check it in the test pane" is a production change if the agent is on Teams.

What to hand back

  • What changed, including the part the diff does not state.
  • The one fact it is safe because of. Name it, say which rung of the ladder you got it to, and show what you checked. If you could not settle it, write unproven rather than softening it.
  • Real risks only. Each one names how it breaks, where to look, roughly how likely and how bad, and the cheapest way to check.
  • Cleared. What you checked and ruled out. A search that found nothing is a result worth reporting, and it stops the next person repeating it.
  • Before you deploy. The smallest check that would catch the real failure.

Keep the risk list short and honest. A blast-radius report padded with theoretical failures gets skimmed once and ignored afterwards, which leaves the reader worse off than no report at all.

Sources

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.