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.
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 - 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
04 / FOLLOW THE EVIDENCE
The source trail.
Our notes are separate from the original resource.
Check upstream before adopting a new version.
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
https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/references/azurerm_set_attributes.md
Supports: review, whySelected, limitations
https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py
Supports: review, whySelected, access
https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/LICENSE
Supports: license
https://github.com/github/awesome-copilot/blob/2dfe04eaeb5faf9c168d78041d660c0123893d85/README.md
Supports: install, compatibility, access
https://github.com/vercel-labs/skills/blob/7407f3893ad4dceab546ac002c3ef806e4000c73/README.md
Supports: install
https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/SKILL.md
Supports: upstreamDescription
https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py
Supports: review.findings, bestFor, limitations
https://raw.githubusercontent.com/github/awesome-copilot/2dfe04eaeb5faf9c168d78041d660c0123893d85/skills/terraform-azurerm-set-diff-analyzer/scripts/README.md
Supports: review.inspected