Skip to main content
skill GitHub Copilot official · GitHub

terraform-azurerm-set-diff-analyzer — GitHub Copilot skill

Analyzes Terraform plan JSON for AzureRM to separate Set ordering noise from real resource changes. Use it when plan reviews show a noisy diff.

Install into GitHub Copilot · Skills CLI (Vercel) All methods and platforms ↓
npx skills add github/awesome-copilot --skill terraform-azurerm-set-diff-analyzer
Open on GitHub

What terraform-azurerm-set-diff-analyzer does

This skill reads Terraform plan JSON for the AzureRM Provider and separates order-only Set diffs from actual resource edits. It helps review Application Gateway, Load Balancer, Firewall, Front Door, and NSG plans where adding or removing one item can make an entire set look changed.

Create plan.tfplan, export it to plan.json, then run python scripts/analyze_plan.py plan.json. The script requires Python 3.8+ and uses the standard library. Install it for teams reviewing AzureRM plans in CI/CD; if Set attributes rarely cause noise in your plans, a separate analyzer is unnecessary.

What it helps with

  • separate Set ordering changes from resource edits
  • review a noisy Application Gateway diff
  • inspect Load Balancer and NSG plan changes
  • filter false-positive diffs in CI/CD

Example prompts for the agent

  • Analyze `plan.json` and identify false-positive diffs caused by Set ordering.
  • Which AzureRM changes in this plan are actual resource changes?
  • Generate plan JSON with `terraform show -json plan.tfplan > plan.json` and analyze it.

How to install terraform-azurerm-set-diff-analyzer

1Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill terraform-azurerm-set-diff-analyzer

2GitHub CLI

gh skill install github/awesome-copilot terraform-azurerm-set-diff-analyzer

3Manually: put the files in place

.github/skills/terraform-azurerm-set-diff-analyzer/SKILL.md

From the same set554

The whole set →
git-commit official github This skill reviews Git changes, stages related files, and creates Conventional Commits. Use it when you want an agent to make one commit or split work into separate commits. GitHub Copilot 47,165installs excalidraw-diagram-generator official github Turn a plain-language description into an Excalidraw diagram. Useful for mapping processes, system structure, and relationships between entities. GitHub Copilot 31,639installs multi-stage-dockerfile official github This skill guides GitHub Copilot in writing multi-stage Dockerfiles for different languages and frameworks. Use it when the final runtime image should contain fewer build dependencies. GitHub Copilot 29,688installs documentation-writer official github Skill that turns the agent into a technical writer following the Diátaxis framework: tutorials, how-to guides, reference, and explanation. Proposes structure before writing. GitHub Copilot 27,757installs prd official github Turns a feature idea into a structured PRD with user stories, technical requirements, and risks. Use it when planning a software feature or an AI-powered one. GitHub Copilot 24,035installs refactor official github This skill reshapes existing code without changing its external behavior. Use it for gradual cleanup of large functions, duplication, weak types, and code smells. GitHub Copilot 22,321installs java-springboot official github Gives GitHub Copilot Spring Boot development practices, from project layout to tests and security. Use it when writing or reviewing Java application code. GitHub Copilot 21,272installs create-readme official github This skill reviews a project and creates a structured README.md. Use it when the repository needs clear documentation based on its actual files and code. GitHub Copilot 19,081installs

Similar

Questions about terraform-azurerm-set-diff-analyzer

How do I install terraform-azurerm-set-diff-analyzer in GitHub Copilot?

Run npx skills add github/awesome-copilot --skill terraform-azurerm-set-diff-analyzer. You can also use gh skill install github/awesome-copilot terraform-azurerm-set-diff-analyzer.

What does terraform-azurerm-set-diff-analyzer do?

It reads Terraform plan JSON for AzureRM and identifies diffs caused by Set element ordering versus changes that alter a resource.

What is required to analyze a plan?

You need a plan JSON file and Python 3.8+. Run the script with python scripts/analyze_plan.py plan.json; it uses the Python standard library.

Source text

SKILL.md · MIT
---
name: terraform-azurerm-set-diff-analyzer
description: 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. Use when reviewing terraform plan output for Azure resources like Application Gateway, Load Balancer, Firewall, Front Door, NSG, and other resources with Set-type attributes that cause spurious diffs due to internal ordering changes.
license: MIT
---

# Terraform AzureRM Set Diff Analyzer

A skill to identify "false-positive diffs" in Terraform plans caused by AzureRM Provider's Set-type attributes and distinguish them from actual changes.

## When to Use

- `terraform plan` shows many changes, but you only added/removed a single element
- Application Gateway, Load Balancer, NSG, etc. show "all elements changed"
- You want to automatically filter false-positive diffs in CI/CD

## Background

Terraform's Set type compares by position rather than by key, so when adding or removing elements, all elements appear as "changed". This is a general Terraform issue, but it's particularly noticeable with AzureRM resources that heavily use Set-type attributes like Application Gateway, Load Balancer, and NSG.

These "false-positive diffs" don't actually affect the resources, but they make reviewing terraform plan output difficult.

## Prerequisites

- Python 3.8+

If Python is unavailable, install via your package manager (e.g., `apt install python3`, `brew install python3`) or from [python.org](https://www.python.org/downloads/).

## Basic Usage

```bash
# 1. Generate plan JSON output
terraform plan -out=plan.tfplan
terraform show -json plan.tfplan > plan.json

# 2. Analyze
python scripts/analyze_plan.py plan.json
```

## Troubleshooting

- **`python: command not found`**: Use `python3` instead, or install Python
- **`ModuleNotFoundError`**: Script uses only standard library; ensure Python 3.8+

## Detailed Documentation

- [scripts/README.md](scripts/README.md) - All options, output formats, exit codes, CI/CD examples
- [references/azurerm_set_attributes.md](references/azurerm_set_attributes.md) - Supported resources and attributes

© github · MIT · github/awesome-copilot

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor