ipcalc-for-cloud — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ipcalc-for-cloud (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<objective> Calculate IP ranges, CIDR blocks, and subnet allocations for cloud network planning. This skill:
Supported Cloud Providers: Azure, AWS, GCP, Oracle Cloud, AliCloud, On-Premises
Uses Python for deterministic IP calculations matching the TypeScript CLI implementation. </objective>
<quick_start> Users ask for IP calculations and subnet planning in natural language. Examples of how users will phrase requests:
Show network information:
"Calculate 4 subnets for Azure, base CIDR 10.0.0.0/16"
Generate Terraform for AWS:
"Give me Terraform for an AWS VPC at 10.0.0.0/16 with 3 subnets"
Custom subnet prefix (to avoid filling entire network):
"Plan 4 subnets for Azure 172.16.1.0/24 using /26 prefix"
Hub-spoke topology for Azure:
"Create an Azure hub-spoke with hub 10.0.0.0/16 (2 subnets), spokes at 10.1.0.0/16 and 10.2.0.0/16 (2 subnets each), output Terraform"
</quick_start>
<workflow>
Accept user input specifying:
info and json work for all providersterraform, bicep, arm, powershell, cliterraform, cloudformation, cliterraform, gcloudterraform, ociterraform, aliyun--subnet-prefix): Desired subnet prefix (e.g., /26) to override auto-calculation--prefix): Prefix for resource names in generated IaC (default: ipcalc)Hub-spoke is only supported for Azure and GCP. If the user requests hub-spoke for AWS, Oracle, AliCloud, or On-Premises, explain the limitation and suggest using a single VNet/VPC instead.
If the user requests a format not supported by their chosen provider, inform them and suggest the closest available alternative (e.g., use terraform or info instead).
Path assumption: The script path~/.claude/skills/ipcalc-for-cloud/scripts/ipcalc.pyassumes this skill is installed or symlinked at~/.claude/skills/ipcalc-for-cloud/. If the script is not found, inform the user and ask them to confirm the installation path.
Execute the IP calculation script with cloud provider configuration:
python ~/.claude/skills/ipcalc-for-cloud/scripts/ipcalc.py \
--provider azure \
--cidr "10.0.0.0/16" \
--subnets 4 \
--output terraformWith custom subnet prefix:
python ~/.claude/skills/ipcalc-for-cloud/scripts/ipcalc.py \
--provider azure \
--cidr "172.16.1.0/24" \
--subnets 4 \
--subnet-prefix 26 \
--output infoWith hub-spoke topology:
python ~/.claude/skills/ipcalc-for-cloud/scripts/ipcalc.py \
--provider azure \
--cidr "10.0.0.0/16" \
--subnets 2 \
--spoke-cidrs "10.1.0.0/16,10.2.0.0/16,10.3.0.0/16" \
--spoke-subnets "2,2,2" \
--output terraformThe script validates CIDR, calculates optimal subnets, distributes across AZs, applies provider-specific reserved IP counts (Azure: 5, AWS: 5, GCP: 4, Oracle: 3, AliCloud: 4), detects overlaps, and renders the requested output format.
Info format (default): Human-readable table with network details, subnet CIDRs, AZ assignments, reserved and usable IP counts.
JSON format: Structured JSON with complete network and subnet data; machine-readable for integration.
Terraform format: HCL with provider config, variables, network/subnet resources, outputs, hub-spoke peering (if applicable), and IP allocation comments.
Other IaC formats (all fully implemented):
terraform init && terraform validate)</workflow>
<examples> <example number="1"> <input> User: "Calculate IP allocation for Azure with 10.0.0.0/16 and 4 subnets" </input> <process>
</process> <output> Formatted table: network address, CIDR, total IPs; each subnet with CIDR, usable IPs, usable range, AZ, reserved IPs </output> </example>
<example number="2"> <input> User: "Azure hub-spoke with hub 10.0.0.0/16 (2 subnets), spokes 10.1.0.0/16 and 10.2.0.0/16 (2 subnets each), Terraform output" </input> <process>
</process> <output> Terraform with hub VNet + subnets, 2 spoke VNets + subnets, bidirectional peering (hub↔spoke1, hub↔spoke2), outputs for all resource IDs </output> </example> </examples>
<validation> IP Range:
IaC output checklist:
</validation>
<anti_patterns> <pitfall name="filling_entire_network"> ❌ Auto-calculating subnet size fills entire network, no room for growth ✅ Use --subnet-prefix to specify smaller subnets, leave address space for future </pitfall>
<pitfall name="ignoring_provider_constraints"> ❌ Requesting /30 subnets in AWS (minimum is /28) ✅ Check provider min/max CIDR prefixes before planning </pitfall>
<pitfall name="uneven_az_distribution"> ❌ All subnets in single availability zone ✅ Use automatic AZ distribution (AWS, GCP, AliCloud) for high availability </pitfall>
<pitfall name="incorrect_reserved_ips"> ❌ Assuming standard 2 reserved IPs (network + broadcast) ✅ Use provider-specific reserved counts (Azure: 5, AWS: 5, GCP: 4, Oracle: 3, AliCloud: 4) </pitfall>
<pitfall name="missing_hub_spoke_peering"> ❌ Creating hub and spoke VNets without peering configuration ✅ Use --spoke-cidrs to automatically generate bidirectional peering </pitfall> </anti_patterns>
<success_criteria>
For script and template internals, read references/internals.md. </success_criteria>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.