skills/azure-cost-calculator/SKILL.md
Helps estimate and calculate Azure resource costs. Use this skill when users ask about Azure pricing, cost estimation, resource sizing costs, comparing pricing tiers, budgeting for Azure deployments, or understanding Azure billing. Triggers include questions like "how much will this cost in Azure", "estimate Azure costs", "compare Azure pricing", "budget for Azure resources".
npx skillsauth add ahmadabdalla/azure-cost-calculator-skill azure-cost-calculatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Deterministic Azure cost estimation using the public Retail Prices API. Never guess prices; always query the live API via the scripts.
Choose the script runtime based on what is available:
| Runtime | Condition | Pricing script | Explore script |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | ---------------------------------- |
| Bash (preferred) | curl and jq available | scripts/get-azure-pricing.sh | scripts/explore-azure-pricing.sh |
| PowerShell 7+ | pwsh available | scripts/Get-AzurePricing.ps1 | scripts/Explore-AzurePricing.ps1 |
| Windows PowerShell 5.1 | powershell.exe available (Windows only). Add -ExecutionPolicy RemoteSigned before -File to avoid silent failures from default policy restrictions. | scripts/Get-AzurePricing.ps1 | scripts/Explore-AzurePricing.ps1 |
Both produce identical JSON output. Bash flags use --kebab-case equivalents of PowerShell -PascalCase parameters (e.g., -ServiceName → --service-name).
Service reference files specify query parameters as Key: Value pairs. Translate to Bash --kebab-case or PowerShell -PascalCase flags; quote string values with spaces. See workflow.md for the full parameter table, translation examples, and output formats.
Parse: extract resource types, quantities, and sizing from user's architecture
Clarify: if any of these are true, stop and ask before continuing:
Locate each service reference using the lookup workflow in shared.md (file search → routing map → category browse → broad search → discovery)
Read matched service files; check billingNeeds and follow dependency chains (e.g., AKS → VMs → Managed Disks)
Classify each parameter using the Disambiguation Protocol in shared.md:
Specification Review: present a summary:
| Service | Specified | Missing (will ask) | Defaults (will assume) | | ------- | --------- | ------------------ | ---------------------- |
14.5 × 640 → 14 × 640 → 10 × 640 = 6,400; 4 × 640 = 2,560; subtotal = 8,960; 0.5 × 640 = 320; total = 9,280). Do not rely on mental math for multi-digit operations.After presenting the estimate, the user may request changes (switch region, add RI, resize instances, add/remove services). Re-run only the affected queries; do not restart the full workflow.
| Condition | Read | | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Always (entry point) | references/shared.md: constants, category index, alias lookup | | Query returned 0 results or wrong data | references/pitfalls.md: troubleshooting and traps | | User asks about Reserved Instances or savings plans | references/reserved-instances.md | | Non-USD currency or non-eastus region | references/regions-and-currencies.md | | User requests private endpoints or private access; confirm PE intent with user | references/services/networking/private-link.md: PE pricing, references/services/networking/private-dns.md: DNS zone pricing | | File search returned 0 or ambiguous results | references/service-routing.md - implemented services routing | | First time running scripts or unfamiliar with parameters | references/workflow.md: script parameters and output formats |
references/services/ directly required by the user's query. Use the file-search workflow (Step 2) to locate specific files.-File, not -Command: run scripts with pwsh -File or powershell.exe -File; on Linux/macOS, bash strips OData quotes from inline commands. PS 5.1 caveats: (a) Always add -ExecutionPolicy RemoteSigned before -File when using powershell.exe; default Windows policies silently block script execution (see Runtime Detection note above). (b) Use -Command instead of -File when passing array parameters (e.g., -Region 'eastus','australiaeast'), because -File mode does not parse PowerShell expression syntax and collapses the array into a single string.billingNeeds are included automatically.--include-meter-id / -IncludeMeterId. No extra API calls needed.YAML front matter fields. Optional fields use default elision; omitted means the default applies.
| Field | Required | Default | Action |
| ----------------------- | :------: | ---------- | --------------------------------------------------------------------------------------- |
| billingNeeds | - | omit | Read and price listed dependency services |
| billingConsiderations | - | omit | Ask user about listed pricing factors before calculating |
| primaryCost | ✔ | - | One-line billing summary for quick cost context |
| apiServiceName | - | omit | Use instead of serviceName in API queries |
| hasMeters | - | true | false → skip API, use Known Rates table |
| pricingRegion | - | regional | global → Region: Global; api-unavailable → skip API; empty-region → omit region |
| hasKnownRates | - | false | true → file contains manual pricing table |
| hasFreeGrant | - | false | true → apply free grant deduction from Cost Formula |
| privateEndpoint | - | false | true → aggregate PE costs via networking/private-link.md |
These apply to EVERY query:
serviceName and all filter values are case-sensitive: use exact values from service reference filesproductName/skuName to the specific variant needed-MeterNameWhen estimating 3 or more services, use these rules to reduce token consumption:
hasMeters: false / pricingRegion: api-unavailable → skip API; use Known Rates or primaryCostpricingRegion: global → Region: Global; empty-region → omit regionapiServiceName → use instead of serviceName in querieshasFreeGrant: true → apply grant deduction; privateEndpoint: true → add PE line itembillingConsiderations applies.| Category | Service | Resource | Unit Price | Unit | Qty | Monthly Cost | Notes |
Multi-meter services get one row per line item. After all queries complete, assemble the final estimate from the accumulated rows. Do not re-read service files already distilled unless a full read trigger is needed. During Post-Estimate Iteration, replace the distillation row(s) for any re-queried service.OutputFormat: Compact (or --output-format Compact in Bash) for batch queries. Compact returns only the 9 fields needed for cost calculation (MeterName, ProductName, SkuName, UnitPrice, UnitOfMeasure, MonthlyCost, Currency, ReservationTerm, TierMinUnits); no query echo, no summary block. With --include-meter-id, Compact includes MeterId as a 10th field. Use full Json format when debugging unexpected results or when a service file requires fields not in the Compact set.tools
GitHub CLI (gh) commands for repositories, issues, pull requests, and actions. Use when user mentions PRs, issues, CI/CD, workflows, or GitHub operations.
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".
testing
Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".