---
title: "Terraform AzureRM Set Diff Analyzer: review, setup & limitations · Undominated.ai"
canonical: https://undominated.ai/skills/github-terraform-azurerm-set-diff-analyzer/
description: "Separates false-positive Terraform plan diffs — order-only changes in Set-type attributes — from real resource changes, using a stdlib-only Python analyzer over terraform show -json output with CI-ready exit codes."
---

# Terraform AzureRM Set Diff Analyzer: review, setup & limitations · Undominated.ai

> Separates false-positive Terraform plan diffs — order-only changes in Set-type attributes — from real resource changes, using a stdlib-only Python analyzer over terraform show -json output with CI-ready exit codes.

[← Explore all skills](/skills/)

CLOUD OPERATIONS / GitHub community

# Terraform AzureRM Set Diff Analyzer

Separates false-positive Terraform plan diffs — order-only changes in Set-type attributes — from real resource changes, using a stdlib-only Python analyzer over terraform show -json output with CI-ready exit codes.

 [See setup guidance ↓](#setup)[Original source ↗](https://github.com/github/awesome-copilot/tree/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer)

SOURCE REVIEW

 Reviewed 2026-10-15
 Evidence 9 linked sources
 Publisher GitHub community
 Licence [MIT ↗](https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/LICENSE)
 Revision 2dfe04eaeb5f
 [Read what was—and wasn’t—checked ↓](#review)

“Analyze Terraform plan JSON output for AzureRM Provider to distinguish between false-positive diffs (order-only changes in Set-type attributes) and actual resource changes. …”

 [GitHub community · upstream description ↗](https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/SKILL.md) Our analysis follows below.

01 / THE REASONING

## Why this made the selection.

 - Ships a runnable analyzer rather than prose: scripts/analyze_plan.py is standard-library-only Python 3.8+ that classifies order-only versus real changes and exposes --exit-code semantics for CI gating.
- Grounds the mechanism — Terraform's Set type compares by position, so one added element marks every element changed — and backs it with a checked-in reference enumerating the Set-type attributes per AzureRM resource.

### A good fit for

 - Reviewing a noisy terraform plan on Azure resources such as Application Gateway, Load Balancer, Firewall, Front Door or NSG
- Gating CI on real Set-attribute changes instead of spurious order-only diffs
- Inspect non-Set attribute changes in JSON output alongside Set changes before choosing a CI gate.

### Weigh up before choosing

 - AzureRM-focused: the position-comparison mechanism is general Terraform, but the attribute reference and examples cover Azure resources only.
- Requires a saved plan rendered as JSON (terraform show -json) and Python 3.8+; it analyzes plans, it does not validate the resulting infrastructure.
- The script can return its no-change exit code for a plan containing only non-Set updates; the summary formatter can likewise say no changes because neither checks other_changes_count. This is a source finding, not a runtime test.

02 / THE REVIEW RECORD

## What we actually inspected.

Source review has boundaries. A clear record is more useful than a “safe” badge.

### Material inspected

 - skills/terraform-azurerm-set-diff-analyzer/SKILL.md
- skills/terraform-azurerm-set-diff-analyzer/references/azurerm_set_attributes.md
- skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py
- LICENSE
- vercel-labs/skills@7407f3893ad4dceab546ac002c3ef806e4000c73:README.md
- skills/terraform-azurerm-set-diff-analyzer/scripts/README.md

### Our findings

 - The analyzer defines distinct exit codes — order-only changes exit 0 because they are not real changes, actual Set-attribute changes exit 1 — so a pipeline can gate on the difference.
- The reference file lists the Set-type attributes per AzureRM resource so a reviewer can confirm the pattern applies before running the script.
- The script is argparse/json/dataclasses over the plan JSON with no third-party dependencies, and points to a scripts README for CI/CD usage.
- Source inspection of analyze_plan.py shows that JSON has_real_changes includes non-Set changes, while determine_exit_code omits other_changes_count; its summary formatter also omits that category.

### Not established by this review

 - The analyzer was not executed against a real Terraform plan.
- No Azure resources were planned, applied or inspected.
- Not executed: it was not installed or run.

The review applies to the material and revision named here. A newer upstream release can change its behavior.

03 / PUT IT TO WORK

## Add a skill to your workflow.

[Upstream setup instructions ↗](https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md)

DOCUMENTED COMMAND

 npx skills add github/awesome-copilot/skills/terraform-azurerm-set-diff-analyzer Copy command ↗

Run in your terminal to choose your AI tools, project or global scope, and installation method. This short command follows the current upstream version; the review covers the revision shown above.

 Optional: install the reviewed revision

Keeps the original source and installer version where recorded, while leaving your AI tools and installation scope for you to choose.

 npx skills add https://github.com/github/awesome-copilot/tree/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer Copy reviewed-revision command ↗ - Install the complete skill directory with its references and scripts; the analyzer script is the working part of this skill.
- Choose your AI tools and project or global scope in the installer, then review its permissions before using the skill.

### Before you start

 - Node.js/npm for this installer
- An agent that supports the Agent Skills format
- Terraform CLI to produce a plan, and Python 3.8+ to run the analyzer

### Compatibility

Agent Skills-compatible coding agents · Terraform plans with AzureRM provider resources; Python 3.8+ for the analyzer

### Reads Terraform plan JSON; runs a local Python analyzer

 - Read terraform plan files and rendered plan JSON
- Run the bundled analyze_plan.py locally
- No cloud credentials are needed; the skill never applies a plan

### Cost model

The instruction package is MIT-licensed; Terraform and cloud usage have their own costs.

04 / FOLLOW THE EVIDENCE

## The source trail.

Our notes are separate from the original resource. Check upstream before adopting a new version.

 - [Skill definition at reviewed revision ↗](https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/SKILL.md) Checked 2026-10-07 https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/SKILL.md Supports: summary, upstreamDescription, whySelected, bestFor, limitations, review, compatibility, access
- [Reviewed reference or helper: references/azurerm_set_attributes.md ↗](https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/references/azurerm_set_attributes.md) Checked 2026-10-07 https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/references/azurerm_set_attributes.md Supports: review, whySelected, limitations
- [Reviewed reference or helper: scripts/analyze_plan.py ↗](https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py) Checked 2026-10-07 https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py Supports: review, whySelected, access
- [Upstream license or licensing declaration ↗](https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/LICENSE) Checked 2026-10-07 https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/LICENSE Supports: license
- [Publisher installation and project documentation ↗](https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/README.md) Checked 2026-10-07 https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/README.md Supports: install, compatibility, access
- [Skills installer source formats and selective installation ↗](https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md) Checked 2026-10-07 https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md Supports: install
- [Pinned continuation review W33 ↗](https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/SKILL.md) Checked 2026-10-15 https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/SKILL.md Supports: upstreamDescription
- [Pinned supporting source W33 ↗](https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py) Checked 2026-10-15 https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py Supports: review.findings, bestFor, limitations
- [Pinned supporting source W33 ↗](https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/README.md) Checked 2026-10-15 https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/README.md Supports: review.inspected

KEEP COMPARING

## Other approaches to consider.

Related by category or shared topics. These are alternatives to inspect, not a measured quality order.

 [### Azure Deploy ↗ Pins Microsoft's Azure deploy skill, which stops unless a separate validation skill has already marked the deployment plan validated.](/skills/microsoft-azure-deploy/)[### Azure Enterprise Infra Planner ↗ Pins Microsoft's enterprise Azure infrastructure skill, which holds IaC and deployment until the user approves the plan and acknowledges deploy risk.](/skills/microsoft-azure-enterprise-infra-planner/)[### AKS Automatic Readiness ↗ Pins Microsoft's AKS Automatic readiness skill, which assesses a cluster or local manifests without changing the cluster and writes files only after an accepted diff.](/skills/microsoft-azure-kubernetes-automatic-readiness/)

 [AI Tools ↗](/tools/)[Skills ↗](/skills/)[Agents ↗](/agents/)[MCP Servers ↗](/mcp-servers/)[Workflows ↗](/workflows/)

## Continue your investigation

 - [Choose a toolkit](/tools/)
- [Inspect execution hosts](/agents/)
- [Check tool access](/mcp-servers/)
- [Check project dependencies](/check-repo/)
