AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Firewall Config Diff

skill-fastrevmd-lab-fwskillsshare-firewall-config-diff · by fastrevmd-lab

Compare two parsed firewall configurations by semantic intent rather than text. Use when checking drift, HA parity, pre/post-change results, migration fidelity, or round-trip conversion. Parse raw configs first; use a text diff for literal line changes.

No reviews yet
0 installs
24 views
0.0% view→install

Install

$ agentstack add skill-fastrevmd-lab-fwskillsshare-firewall-config-diff

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-fastrevmd-lab-fwskillsshare-firewall-config-diff)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
28d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Firewall Config Diff? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Firewall Config Diff

Overview

Use this skill to compare two firewall or NGFW configurations and report how they differ, by pivoting both through the parsing-* intermediate JSON schema. Each side is normalized to the same vendor-neutral sections — address_objects, address_groups, service_objects, service_groups, security_policies, nat_rules, zones, interfaces, static_routes / virtual_routers / routing, vpn_tunnels, ha_config, admin_users, and system — and then compared section by section. Because the comparison happens on the schema pivot rather than the raw text, same-vendor and cross-vendor diffs are one mechanism: the only cross-vendor addition is a normalization step for constructs that two vendors model differently.

The comparison is always semantic, never textual. Items are paired by what they mean — an address object by its value, a policy by its match-and-action tuple — so a rename, a reorder, or a different vendor's syntax does not register as a difference. A plain diff of two config files would flag every cosmetic and ordering change and miss the fact that two differently-named objects describe the same subnet; it would add nothing here and actively mislead. This skill compares meaning; it does not emit a target config (that is firewall-config-conversion) and does not judge the rulebase against best practice (that is firewall-best-practices-audit).

The output is always two parts: a per-section report listing what was added, removed, and changed, followed by a single parity verdict (EQUIVALENT or DIFFERENCES FOUND). Where a feature on one side has no equivalent on the other — common in cross-vendor comparisons — it is flagged not-comparable and excluded from the diff rather than reported as a false difference. The report never claims more than the schema supports and always lists what could not be compared.

Scope and routing

Compare two normalized parser outputs. Use a text-diff tool for literal line changes, firewall-config-conversion to emit target syntax, and firewall-best-practices-audit to assess one rulebase.

Input Handling

There are two inputs, A and B. Route each side independently on what you were given:

  • Parsed intermediate schema (the vendor-neutral JSON produced by any parsing-* skill; the schema definition lives in the parsing-srx-configs skill) — diff directly. Read each side's source vendor from metadata.source_vendor (the canonical schema field); for robustness also accept a legacy metadata.vendor key if a non-conformant parse provides one — read whichever is present, and label the two sides A and B by their vendors.
  • Raw config — identify the vendor from the syntax, run the matching parsing-* skill (parsing-cisco-configs, parsing-fortinet-configs, parsing-palo-configs, parsing-srx-configs) to produce the intermediate schema, then diff the result. Never re-implement parsing in this skill.

A and B may be the same vendor (drift, HA-pair, pre/post-change) or different vendors (migration parity, round-trip). The two sides may arrive in different forms — one parsed schema and one raw config — in which case parse the raw side first so both are schema before any comparison begins.

Semantic Identity

Items pair across A and B by MEANING, not order. Identity is value/tuple-based by default;
a stable name is a valid anchor only in the same-vendor case (see the convention below):
- address objects: by value (e.g. 10.0.1.10/32), not object name.
- service objects: by protocol + port(s). applications: by canonical app name.
- address/service groups: by their expanded member set.
- security policies: by the tuple (src_addresses, dst_addresses, service/app, action, src_zones, dst_zones), addresses compared by value.
- nat_rules: by (match addresses/zones + translation).
- interfaces: by name/unit + address. static routes: by prefix + next-hop. OSPF/BGP: by area/AS + neighbor.
- system / admin_users / dhcp_config / ha_config / screen_config / schedules / security_services: by their natural key (name or the field identity).
A matched pair is `unchanged` (all attributes equal) or `changed` (same identity, ≥1 differing attribute — e.g. logging, profile, description). Unmatched in A only = `removed`; in B only = `added`.
Security-policy ORDER differences are reported separately (order affects shadowing) and do NOT count as add/remove.

Name-anchoring convention (resolves how value changes are reported):
- CROSS-vendor → identity is strictly value/tuple-based (names differ across platforms), so a
  value change is a `removed` + `added` pair.
- SAME-vendor drift → when object/policy NAMES are stable you MAY anchor pairs by name and
  report the value/attribute delta as `changed` (applies to address objects, service objects,
  address/service groups, AND security policies). A policy whose referenced object value
  shifts stays paired by name; the shift is noted on the `changed` pair, not as add+remove.

Diff Workflow

  1. Normalize both sides to schema. Confirm A and B are each the intermediate schema (parse any raw side first), and record each side's source vendor.
  2. Pair items per section. For every schema section, pair items between A and B by their semantic identity from the rules above — by value, member set, or match-and-action tuple. This is the cross-vendor default; for same-vendor drift a stable name is a valid anchor (see the Name-anchoring convention). Never pair by position.
  3. Classify each pairing. Mark each pair unchanged (all attributes equal) or changed (same identity, differing attributes); items unmatched in A are removed, in B are added. Note security_policies rule-order differences separately, since order affects shadowing — a reorder is not an add/remove.
  4. Normalize cross-vendor constructs. When A and B are different vendors, normalize the constructs that the two vendors model differently using references/equivalence-rules.md before pairing, and flag any feature with no equivalent on the other side as not-comparable — never let a non-isomorphic feature surface as a false diff.
  5. Emit the report and verdict. Produce the per-section report and the single parity verdict in the templates below, and list everything that could not be compared.

Output & Verdict

Section:    unchanged   added   removed   changed [  | order:  reordered]
  + [B] 
  - [A] 
  ~ [A→B] : 
Not comparable: 
Parity verdict: )>  (A=, B=)

The per-section report comes first; the single Parity verdict: line is always last (the worked examples follow this order). ` in the verdict equals the total added + removed + changed across all sections (comparable items only — not-comparable` entries are listed but never counted).

Framings: drift (A=old, B=new → what changed) and parity (A vs B → equivalent?) — same mechanism. Never claim more than the schema supports; always list what could not be compared.

Reference Material (load on demand)

  • references/equivalence-rules.md — the cross-vendor normalization rules: how constructs that two vendors model differently (zones vs security-levels, App-ID vs port-based services, address/service representations, NAT models) are reduced to a common form before pairing, and which features are inherently not-comparable.
  • references/example-diff.md — a worked diff against parsing-* fixtures, including a same-vendor drift case and a cross-vendor round-trip case with its parity verdict.

Common Pitfalls

  • Doing a textual or line diff — this skill compares by MEANING over the schema; never diff raw text.
  • Treating a rename or a reorder as add+remove — match by semantic identity, and report order separately.
  • Emitting false diffs on cross-vendor non-isomorphic features — flag them not-comparable instead.
  • Re-implementing parsing instead of delegating to the matching parsing-* skill.
  • Comparing object NAMES instead of VALUES across vendors — two configs can use different names for the same subnet (same-vendor drift may anchor by stable name — see Name-anchoring convention).
  • Forgetting that NAT can change the effective meaning of traffic when reasoning about policy equivalence.
  • Path-referencing another skill's files in the round-trip example — keep this skill self-contained with inline snippets.

Verification Checklist

  • [ ] Confirm both inputs are intermediate schema (parse raw first); note each side's vendor.
  • [ ] Items paired by semantic identity (value/tuple), not name or order.
  • [ ] Each section reports unchanged/added/removed/changed; rule-order changes reported separately.
  • [ ] Cross-vendor non-isomorphic features flagged not-comparable, not as false diffs.
  • [ ] Output has a parity verdict and lists everything that could not be compared.
  • [ ] No textual line-diff; no secrets surfaced in the report.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.