From infra
Blast-radius assessment for a pending Terraform plan, Ansible playbook, or Kubernetes manifest diff. Answers 'what could this take down?'
How this skill is triggered — by the user, by Claude, or both
Slash command
/infra:assess-change-risk [path to plan file or diff][path to plan file or diff]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Evaluate the blast radius of a pending infrastructure change — Terraform plan, Ansible check-mode diff, or Kubernetes manifest diff — and report which resources could experience downtime, which downstream consumers reference them, and which changes touch network or IAM boundaries. This skill is strictly **read-only**; it parses already-generated plan artifacts and repository source and never in...
Evaluate the blast radius of a pending infrastructure change — Terraform plan, Ansible check-mode diff, or Kubernetes manifest diff — and report which resources could experience downtime, which downstream consumers reference them, and which changes touch network or IAM boundaries. This skill is strictly read-only; it parses already-generated plan artifacts and repository source and never invokes apply, upgrade, or any mutating command.
The user runs /assess-change-risk [path to plan file or diff]. The argument points to one of:
terraform show -json <plan> JSON export) or the JSON directly.--check --diff output file.kubectl diff output file.git diff as a fallback when no planner output is available.If the argument is omitted, scan the working tree for recent plan artifacts and ask the user to confirm which to assess.
Walk the steps in order. Record each change with a file path and line reference so reviewers can audit the source of the judgement.
First, run the shared scope helper to learn which IaC tool owns the diff. Prefer ${CLAUDE_PLUGIN_ROOT}/scripts/detect-iac-scope.sh and fall back to plugins/infra/scripts/detect-iac-scope.sh when running from the plugin dev repo.
SCRIPT="${CLAUDE_PLUGIN_ROOT:-plugins/infra}/scripts/detect-iac-scope.sh"
[ -x "$SCRIPT" ] || SCRIPT="plugins/infra/scripts/detect-iac-scope.sh"
"$SCRIPT"
Use the JSON to record which IaC tools and modules are present in the repo so later steps can resolve dependent references against the right declaration set.
Then detect the artifact format by inspection:
resource_changes[] array. Parse directly.terraform show -json <plan> in the plan's directory. If terraform is unavailable, report SKIPPED and ask for the JSON form.TASK [...] + changed + diff blocks.# Source: markers.Never run terraform plan, ansible-playbook (without --check), or kubectl apply. Only read existing artifacts.
For every resource or task in the diff, assign an action category:
For Ansible tasks, map to the closest category (e.g. file: state=absent → DELETE; service: state=restarted → UPDATE-IN-PLACE with downtime flag).
Record the reason Terraform chose REPLACE (forces_new_resource attribute) so reviewers can evaluate whether the trigger is intentional.
For every REPLACE or DELETE resource, search the repository for references:
aws_db_instance.primary.endpoint, ${module.x.output}).Service names referenced by manifests, Helm values, or ingress backends.List each dependent with its file and line, plus the reference style (direct, SSM, DNS, etc.).
Regardless of change category, flag any change that touches:
NetworkPolicy, CiliumNetworkPolicy.Role / ClusterRole / RoleBinding.Certificate resources.Each item gets its own section in the report regardless of whether the classification would otherwise mark it low risk.
Determine whether the change has been tried in a non-production environment first:
environment, env, or stage label on the resources in the plan.envs/prod, envs/staging), or Helm release namespace.If the plan targets production and no evidence of prior rehearsal in a lower environment exists, emit a dedicated warning.
Dispatch to the principal-sre subagent with the evidence collected in steps 1-5. Ask it to apply its production-readiness lens (failure modes, recovery path, blast radius) and rank the findings in severity order. Receive back a prioritized list and integrate it into the Output Format below — do not replace this skill's verdict contract.
Agent({
subagent_type: "principal-sre",
description: "Rank change-risk findings",
prompt: "Review this change diff: <summary of artifact, classified changes, dependents, network/IAM specials, rehearsal evidence>. Rank the blast-radius findings in severity order and call out any that should block ship. Return top findings in severity order."
})
## Change-Risk Assessment
**Source artifact:** <path>
**Detected format:** <terraform-json | terraform-plan | ansible-check | kubectl-diff | git-diff>
**Target environment:** <env or unknown>
**Change summary:** +N create, ~N update, !N replace, -N delete
### High-blast-radius changes
- aws_db_instance.primary — REPLACE (forces_new: engine_version).
Dependents: 4 apps reference its endpoint via SSM param /rds/primary/endpoint.
Downtime window: until SSM refresh + app restart.
- kubernetes_deployment.api — UPDATE-IN-PLACE with rolling strategy; surge=1.
...
### Network & IAM changes
- aws_security_group_rule.web-ingress — new 0.0.0.0/0 on port 22. Review.
- aws_iam_role_policy.lambda-exec — Action "*" added on Resource "*". Review.
...
### Dependents table
| Resource | Action | Dependent | Reference style | File |
|----------|--------|-----------|-----------------|------|
| aws_db_instance.primary | REPLACE | apps/orders | SSM param | apps/orders/config.yaml:17 |
...
### Rehearsal
- Target env: prod
- Prior rehearsal: none detected in envs/staging
- Recommendation: stage first
**Verdict:** <LOW | MEDIUM | HIGH | CRITICAL>
* on *, public-ingress opening, or simultaneous REPLACE of more than one dependency-shared resource.terraform apply, ansible-playbook without --check, kubectl apply, or helm upgrade. Never invoke terraform plan either — the plan artifact is an input.[INCONCLUSIVE].terraform is not installed and the input is a binary plan, skip parsing and request JSON form; do not attempt recovery.unknown rather than guessing from filenames alone.$ARGUMENTS
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub brenthaertlein/universal-skills --plugin infra