Code & Engineering

Terraform Plan Risk Review

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.

Tested 2026-10-26No code, no hidden instructionsv1.0.0 · 6.2 KB · perpetual license

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.

  1. 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.

Share

Read this page as Markdown: /skills/terraform-plan-risk-review.md.

More in Code & Engineering

  • Kubernetes Manifest Review

    Code & Engineering

    SKILL.md · v1.0.0 · 6.4 KB

    Reviews ONE Kubernetes Pod or Deployment manifest for the five settings that most often make a workload unsafe or unpredictable, and lists only those, one line each with a fixed code, the container or volume, why it hurts and the fix - or exactly No findings. It catches a container that is privileged or may run as root, an image with no tag or the latest tag, a container with no memory limit, a secret value written as a literal in env, and a hostPath volume. It leaves out the safe look-alikes, such as a pod that sets runAsNonRoot, an image pinned by digest, a read-only configMap volume and a secret read through secretKeyRef. Use to review a manifest before it is applied, to audit a repository of deployments, or to check a Pod that keeps being killed.

    $0.01once

    • x402
    • USDC
    • Base
    Get skill

    Tested with Sonnet and Haiku, 26 Oct 2026

  • CORS Config Review

    Code & Engineering

    SKILL.md · v1.0.0 · 6.2 KB

    Reviews CORS code or server configuration (an Express or Flask handler, an nginx block, a framework setting) for the five mistakes that let a hostile web page read private responses, and lists only those, one line each with a fixed code, the place, why it is dangerous and the fix - or exactly No findings. It catches a request Origin copied into the allow header while cookies are allowed, a wildcard origin together with credentials, the null origin allowed, an origin check by suffix, substring or an unanchored pattern, and a per-origin allow header sent without Vary Origin. It leaves out the safe look-alikes, such as an exact allow-list with credentials and a public read-only API that answers with a wildcard and no credentials. Use to review CORS code before release, to audit a gateway config, or to debug a browser CORS error that looks like a server mistake.

    $0.01once

    • x402
    • USDC
    • Base
    Get skill

    Tested with Sonnet and Haiku, 19 Oct 2026

  • IAM Policy Review

    Code & Engineering

    SKILL.md · v1.0.0 · 6.2 KB

    Reviews ONE AWS IAM policy (an identity policy, or a bucket policy) written as JSON for the five grants that hand out far more than a job needs, and lists only those, one line each with a fixed code, the statement, why it is dangerous and the fix - or exactly No findings. It catches every action on every resource or a whole service on every resource, iam:PassRole on any role, Allow combined with NotAction, a public principal with no condition, and actions that let a holder raise their own rights such as creating a policy version or attaching a policy. It leaves out the safe look-alikes, such as a public principal narrowed to an organization, read-only access to one bucket, and a Deny with NotAction. Use to review a policy before attaching it, to audit a role, or to check a bucket policy for public access.

    $0.01once

    • x402
    • USDC
    • Base
    Get skill

    Tested with Sonnet and Haiku, 19 Oct 2026

  • Dockerfile Review

    Code & Engineering

    SKILL.md · v1.0.0 · 6.1 KB

    Reviews ONE Dockerfile for the five build mistakes that cost security or build time, and lists only those, one line each with a fixed code, the instruction, why it hurts and the fix - or exactly No findings. It catches a final image that runs as root, a base image with no tag or the latest tag, a secret passed through an argument, an environment value or a file copy so that it stays in the image history, source copied in before the dependencies are installed so the cache is lost on every edit, and the package index left in the layer after apt-get. It leaves out the safe look-alikes, such as a build secret mounted for one instruction, a tag pinned by digest, and root in a build stage that never ships. Use to review a Dockerfile before merging, to audit the images of a repository, or to speed up a slow image build.

    $0.01once

    • x402
    • USDC
    • Base
    Get skill

    Tested with Sonnet and Haiku, 19 Oct 2026