Reviews the text of ONE terraform plan for the four changes that can lose data or open a door, and lists only those, one line each with a fixed code, the resource, why it hurts and the fix - or exactly No findings. It catches a database, bucket or disk that the plan destroys or replaces, an ingress rule open to the whole internet on a port other than web, encryption switched off, and a rebuild forced only because an id changes upstream. It leaves out the safe look-alikes, such as a tag changed in place, a stateless server replaced because of a new image, and a web port open to the world. Use to read a plan before terraform apply, to review a pull request that shows plan output, or to check what a change will destroy.
Terraform Plan Risk Review is a tested SKILL.md that reviews the text of ONE terraform plan for the four changes that can lose data or open a door, and lists only those, one line each with a fixed code, the resource, why it hurts and the fix - or exactly No findings; an agent buys it once for $0.01 over x402.
Not for
The .tf source, state files, cost estimates, policy-as-code engines, Terraform Cloud run settings and anything the plan hides behind an unchanged-attributes line. It reads one pasted plan and judges only what the text says will happen.
Tested, honestly
Tested 2026-10-26 with a strong and a weak model.
- SonnetStrong model, claude-sonnet-5-5
- Right on all 3 cases, read by hand. On the orders plan it gave the replaced database and the database port opened to the internet, and left out the web port 443 rule, the instance swapped for a new image and the bucket tag edit. On the data-volume plan it gave the replaced disk, the encryption turned off and the server rebuilt only because its subnet id changes, and left out the database tag change and the subnet that was replaced for a new range. On the clean platform plan it answered exactly No findings.
- HaikuWeak model, claude-haiku-5-5
- Right on all 3 cases, read by hand. It matched the strong model on both planted plans, with sound fixes, and kept every safe look-alike out of its list: the stateless instance, the tag edits, port 443 and the subnet that was replaced for a new range. On the clean plan it answered exactly No findings.
Full test summary
Example
Our own test text, before and after the skill ran. Excerpts only.
English · claude-sonnet-5-5
Before
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
~ update in-place
-/+ destroy and then create replacement
Terraform will perform the following actions:
# aws_db_instance.orders must be replaced
-/+ resource "aws_db_instance" "orders" {…
After
STATEFUL-LOSS — aws_db_instance.orders, `db_subnet_group_name = "orders-a" -> "orders-b" # forces replacement` — the database instance is destroyed and recreated, so its data is lost — keep the original subnet group, or snapshot and restore the data before applying…
What is in the file
- What the Terraform documentation says, as published on 26 October 2026
- The answer
- The codes
- Rules
- Work in this order
- Short example
Languages
English. Tried in: English.
License
Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Full terms.
Versions
Current version 1.0.0, updated 2026-10-26. Whoever bought an earlier version gets new ones free through the same re-download token.
v1.0.0 · 2026-10-26
First release, written in the light-test batch of 26 October 2026 (three cases, price $0.01). The idea is ours; no foreign skill was opened, facts come from public documentation (see notes/ideas.md). Output: see the skill description.
Test: three cases written by hand (two planted, each with a safe look-alike, one clean control), one run on Claude Sonnet and one on Claude Haiku, no run without the skill, no iteration on the skill rules after the runs. `test/control.mjs` shows that the checks pass on the ideal answers and fail on realistic wrong ones. See `test-summary.json` for the verdicts read by hand.
FAQ
Stateless server replaced for a new image: any line?
No. Replacing a server, a function or a subnet because of a literal value is ordinary change. Only a data-holding resource that is destroyed or replaced is reported, and a database that is merely resized or retagged in place is left alone.
Is port 443 open to the whole internet reported?
No. Web ports 80 and 443 are accepted for a world-facing rule. A database, shell or remote desktop port open to anywhere, or a rule that opens every port, is the case that earns a line.
What plans went into the test?
Three plan texts of our own making. One replaces a database and opens its port beside a harmless instance swap and a bucket tag edit. One drops disk encryption and rebuilds a server because a subnet id moves. The third is a clean platform plan. Both models were given each plan a single time.
What does a harmless plan return?
Only the sentence No findings., with no extra remark. Any real problem becomes one line giving the code, the resource address, the damage and the repair, and nothing is said about the parts that were examined and found acceptable.