Ipcalc for cloud
Calculates IP ranges, CIDR blocks, and subnet allocations for cloud networks (Azure, AWS, GCP, Oracle, AliCloud). Supports single VNet/VPC or hub-spoke topologies with automatic AZ distribution. Outputs as info tables, JSON, or IaC templates (Terraform, Bicep, ARM, PowerShell, CloudFormation). Use for network planning, IP calculations, CIDR notation, or infrastructure as code generation.From its SKILL.md
npx -y skills add jvhoof/ipcalc --skill ipcalc-for-cloudAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.8 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it
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:
<workflow> ## Step 1: Parse Input Specifications"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>
Accept user input specifying:
- Cloud provider: azure, aws, gcp, oracle, alicloud, onpremises
- Base CIDR: Network CIDR block (e.g., "10.0.0.0/16")
- Number of subnets: How many subnets to create (1-256)
- Output format: depends on provider (see mapping below);
infoandjsonwork for all providers- Azure:
terraform,bicep,arm,powershell,cli - AWS:
terraform,cloudformation,cli - GCP:
terraform,gcloud - Oracle:
terraform,oci - AliCloud:
terraform,aliyun - On-Premises: (info and json only)
- Azure:
- Optional - Custom subnet prefix (
--subnet-prefix): Desired subnet prefix (e.g., /26) to override auto-calculation - Optional - Resource name prefix (
--prefix): Prefix for resource names in generated IaC (default:ipcalc) - Optional - Hub-spoke: Spoke network CIDRs and subnet counts for hub-spoke topology
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).
Step 2: Run IP Calculations
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 terraform
With 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 info
With 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 terraform
The 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.
Step 3: Output Results
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):
- Bicep (Azure only): Azure Bicep template with inline subnets
- ARM (Azure only): Azure Resource Manager JSON template
- PowerShell (Azure only): Azure PowerShell script with cmdlets
- CloudFormation (AWS only): AWS YAML template with intrinsic functions
- CLI (Azure, AWS): Bash scripts with az/aws commands
- gcloud (GCP only): gcloud CLI commands
- OCI (Oracle only): OCI CLI commands
- Aliyun (AliCloud only): Aliyun CLI commands
Step 4: Validate Output
- IP range validation: no overlaps, proper nesting, valid CIDR notation
- Provider constraint validation (prefix limits)
- Capacity validation: requested subnets fit in network
- For Terraform: syntax validation if terraform CLI available (
terraform init && terraform validate) - For hub-spoke: peering configuration correctness </workflow>
IaC output checklist:
- Provider configuration present with correct version
- Variables defined for customization (region, prefix, CIDRs)
- Output variables defined for resource IDs
- Hub-spoke peering complete and bidirectional (if applicable)
- IP allocation table in comments </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>
<success_criteria>
- IP calculations are mathematically correct and deterministic
- Provider constraints enforced (CIDR prefix limits, reserved IPs)
- Subnets fit within parent network with no overlaps
- AZ distribution applied for AWS, GCP, AliCloud
- Hub-spoke: bidirectional peering configured, no overlapping CIDRs
- IaC: passes syntax validation, variables and outputs present
For script and template internals, read references/internals.md.
</success_criteria>
What ships with it: 27 files
174.4 KB alongside SKILL.md, 12 of them executable
evals/
- trigger_eval.json3.9 KB
references/
- internals.md3.1 KB
scripts/
- cloud_provider_config.pyruns3.9 KB
- diagram_generator.pyruns8.8 KB
- ipcalc.pyruns21.0 KB
- template_processor.pyruns71.0 KB
- test_diagram_generator.pyruns6.3 KB
- test_ipcalc.pyruns13.8 KB
templates/
- alicloud/aliyun.template.shruns1.3 KB
- alicloud/terraform.template.tf2.4 KB
- aws/cli.template.shruns1.3 KB
- aws/cloudformation.template.yaml1.2 KB
- aws/terraform.template.tf1.7 KB
- azure/arm.template.json1.9 KB
- azure/bicep.template.bicep1.6 KB
- azure/cli.template.shruns1.1 KB
- azure/powershell.template.ps1runs2.9 KB
- azure/terraform.template.tf2.2 KB
- gcp/gcloud.template.shruns1.5 KB
- gcp/terraform.template.tf2.5 KB
- oracle/oci.template.shruns2.6 KB
- oracle/terraform.template.tf3.3 KB
- pyproject.toml1.3 KB
- README.md2.5 KB
- requirements-dev.txt117 B
- requirements.txt63 B
- USAGE.md10.9 KB
Gives 0 of the 12 instructions most containers cloud skills give in ~2.4k tokens
Counted across 607 of the 657 authors here whose files we hold, read 2026-08-07
- Run containers as a non-root userin 66 of 607, across 46 files
- Use multi-stage buildsin 53 of 607, across 44 files
- Use Promise.all for independent operationsin 47 of 607, across 13 files
- Import directly instead of barrel filesin 46 of 607, across 12 files
- Use ternary instead of AND for conditionalsin 45 of 607, across 12 files
- Use Set or Map for O(1) lookupsin 42 of 607, across 10 files
- Create a .dockerignore filein 41 of 607, across 31 files
- Read individual rule files for detailsin 39 of 607, across 9 files
- Copy dependency files before source codein 36 of 607, across 23 files
- Authenticate server actions like API routesin 35 of 607, across 7 files
- Use next/dynamic for heavy componentsin 34 of 607, across 9 files
- Use React.cache for per-request deduplicationin 34 of 607, across 10 files
Said here and by no other author read
- Parse provider, CIDR, subnet count, and output format
- Run the IP calculation script
- Use a custom subnet prefix to leave address space
- Use automatic availability zone distribution
- Validate IP ranges for proper nesting and overlaps
- Validate infrastructure code syntax
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.