← Explore all 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.

“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. …”

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.

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 ↗

DOCUMENTED COMMAND

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

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
  1. Install the complete skill directory with its references and scripts; the analyzer script is the working part of this skill.
  2. 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

04 / FOLLOW THE EVIDENCE

The source trail.

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

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

  2. https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/references/azurerm_set_attributes.md

    Supports: review, whySelected, limitations

  3. https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py

    Supports: review, whySelected, access

  4. https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/LICENSE

    Supports: license

  5. https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/README.md

    Supports: install, compatibility, access

  6. https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md

    Supports: install

  7. https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/SKILL.md

    Supports: upstreamDescription

  8. https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py

    Supports: review.findings, bestFor, limitations

  9. https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/README.md

    Supports: review.inspected

Evidence & Ask