ricmmartins/azure-sre-agent-skills/03-capacity-planning

Claude Code and agent skill by ricmmartins/azure-sre-agent-skills

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Assess Azure resource capacity, quota utilization, and growth trends to prevent outages from resource exhaustion. Use when asked about capacity, quotas, scaling readiness, load testing prep, Black Friday readiness, or growth projections.

Install

npx vskill@latest install ricmmartins/azure-sre-agent-skills/03-capacity-planning

SKILL.md

Capacity Planning

Purpose

Analyze current resource utilization, quota consumption, and growth trends to predict capacity risks and recommend scaling actions before limits are hit.

When to use this skill

  • User asks "will our infrastructure handle the traffic spike?"
  • User asks about quotas, limits, or capacity
  • Pre-event planning (Black Friday, product launch, marketing campaign)
  • Quarterly capacity review
  • After hitting a quota or throttling limit

Pre-check

Confirm with the user:

  • Scope: which subscriptions and regions
  • Time horizon: when is the expected load increase? (default: 30 days)
  • Expected growth factor (e.g., 2x, 5x, 10x current load)
  • Critical workloads to prioritize

Assessment procedure

Step 1: Quota utilization

Check current quota usage across all critical resource providers.

bash
az vm list-usage --location <region> -o table
az network list-usages --location <region> -o table
az storage account list --query "length(@)"

Check for:

  • vCPU quotas: Total and per-family (Dv5, Ev5, etc.) — flag if > 70% utilized
  • Public IPs: Usage vs. limit
  • Load balancers: Usage vs. limit
  • Network interfaces: Usage vs. limit
  • Storage accounts per subscription: Usage vs. 250 limit
  • App Service plans per region
  • AKS clusters per subscription

Build a quota utilization table. Use Unicode emoji characters directly (🟢🟡🔴) — never use emoji shortcodes like :green_circle: or :red_circle:.

ResourceRegionUsedLimitUtilizationRisk
Total vCPUsEast US8510085%🔴
Dv5 vCPUsEast US325064%🟡
Public IPsEast US82040%🟢
Step 2: Compute capacity

Analyze current compute utilization and headroom.

  1. VM utilization (last 14 days):
  • Average and P95 CPU across all VMs
  • Average and P95 memory (if available via Log Analytics)
  • Flag VMs consistently > 80% CPU or memory
  1. App Service plan utilization:

``bash az appservice plan list --query "[].{name:name, sku:sku.name, workers:numberOfWorkers, maxWorkers:maximumElasticWorkerCount}" -o table ``

  • Current instance count vs. max
  • CPU/memory % of the plan
  • Autoscale rules and current headroom
  1. AKS cluster capacity:

``bash az aks list --query "[].{name:name, nodeCount:agentPoolProfiles[0].count, maxCount:agentPoolProfiles[0].maxCount, vmSize:agentPoolProfiles[0].vmSize}" -o table ``

  • Node count vs. max count
  • Pod density per node
  • Cluster autoscaler configuration
  1. Container Apps:
  • Current replicas vs. max replicas
  • Autoscale rules (HTTP concurrency, CPU, custom)
Step 3: Data layer capacity
  1. SQL Database:
  • DTU/vCore utilization (avg and P95)
  • Storage usage vs. max size
  • Connection count vs. limit
  1. Cosmos DB:
  • RU consumption vs. provisioned (or autoscale max)
  • Storage per container
  • 429 (throttling) rate from metrics
  1. Redis Cache:
  • Memory usage %
  • Connection count vs. max
  • Server load %
  1. Storage accounts:
  • Ingress/egress patterns
  • Transaction rates vs. limits
  • Blob count growth rate
Step 4: Networking capacity
  1. ExpressRoute / VPN Gateway: Bandwidth utilization %
  2. Application Gateway / Front Door: Connection count, throughput
  3. NAT Gateway: SNAT port utilization
  4. DNS zones: Query volume trends
Step 5: Growth projection

Based on the data collected:

  1. Plot utilization trends for the last 90 days
  2. Apply linear projection to estimate when each resource hits 80% and 100%
  3. If the user specified a growth factor, multiply current usage and check against limits

Build a risk timeline:

ResourceCurrentAt 2x LoadAt 5x LoadHits LimitAction Needed
vCPUs East US85/100170 ❌425 ❌NowQuota increase
SQL DTU60%120% ❌300% ❌At 1.7xScale up tier
AKS nodes5/1010/10 ⚠️25 ❌At 2xIncrease max
Redis memory45%90% ⚠️225% ❌At 2.2xUpgrade SKU
Step 6: Quota increase requests

For any quota that needs increasing, generate the correct request command:

bash
# Request a quota increase via the Azure portal Support + Troubleshooting flow,
# or use the REST API directly:
az rest --method patch \
--url "https://management.azure.com/subscriptions/<sub-id>/providers/Microsoft.Capacity/resourceProviders/Microsoft.Compute/locations/<region>/serviceLimits/StandardDv5Family?api-version=2020-10-25" \
--body '{"properties":{"limit":{"limitObjectType":"LimitValue","value":<new-limit>}}}'

Note: The az quota CLI extension is in preview and syntax may change. The REST API approach above is stable. Alternatively, guide users to submit quota requests via the Azure portal: Help + support > New support request > Service and subscription limits (quotas).

Step 7: Recommendations

For each risk identified:

  1. Immediate: Quota increase requests, SKU upgrades
  2. Short-term (1-2 weeks): Autoscale configuration, caching layers
  3. Long-term: Architecture changes (sharding, async patterns, CDN)

Accepted exceptions (optional)

If the user provides a list of accepted exceptions, do not flag those items. Instead, note them in the report as Accepted Exception with the reason provided.

Example format the user may provide:

CheckReason
1.1 vCPU quota utilizationQuota increase already submitted, awaiting approval
2.3 AKS cluster capacityCluster is scheduled for decommission next month
4.2 Application Gateway throughputTraffic is seasonal, current capacity is intentional

When exceptions are provided:

  • Skip the flagged checks in scoring
  • List them in a separate "Accepted Exceptions" section at the end of the report
  • Recalculate the overall score excluding excepted checks

Expected output

Report header (mandatory — use this exact format)

Capacity Planning Report

FieldValue
Subscription(name + ID)
Assessment DateYYYY-MM-DD
Region(s) Assessed(list)
Capacity summary
MetricValue
🏗️ Resources scannedX
⚠️ Resources at risk (>70% capacity)Y
🔴 Resources critical (>90% capacity)Z
📈 Projected limit breach within 30 daysW resources
Risk matrix

Table with all resources, current utilization, projected utilization at specified growth factor, and recommended action.

Scaling runbook

Step-by-step actions to prepare for the expected load increase, ordered by priority and dependency.

Remediation guidance

For each capacity risk identified, include in the output:

  1. The specific az CLI command to remediate (quota increase, scale-up, autoscale config)
  2. Use GetAzCliHelp to validate the command syntax before suggesting
  3. The official Microsoft Learn documentation link
References
  • Quotas Overview: https://learn.microsoft.com/en-us/azure/quotas/quotas-overview
  • VM Sizes: https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview
  • Autoscale: https://learn.microsoft.com/en-us/azure/azure-monitor/autoscale/autoscale-overview
  • App Service Scaling: https://learn.microsoft.com/en-us/azure/app-service/manage-scale-up

Sample output

The following is a redacted example of what the report looks like when run against a subscription.

Capacity Planning Report

FieldValue
Subscriptioncontoso-prod-001 (a1b2c3d4-e5f6-7890-abcd-ef1234567890)
Assessment Date2026-07-15
Region(s) AssessedEast US, West Europe
Capacity summary
MetricValue
🏗️ Resources scanned47
⚠️ Resources at risk (>70% capacity)5
🔴 Resources critical (>90% capacity)2
📈 Projected limit breach within 30 days1 resource
Risk matrix (sample)
ResourceRegionCurrentAt 2x LoadHits LimitAction Needed
Total vCPUsEast US85/100 (85%)170 ❌NowQuota increase
Dv5 vCPUsEast US32/50 (64%)64 ⚠️At 1.6xQuota increase
SQL DTU sql-contoso-prodEast US78% avg156% ❌At 1.3xScale up tier
AKS nodes aks-app-prodWest Europe7/1014 ❌At 1.4xIncrease max count
Public IPsEast US8/20 (40%)16 🟢At 2.5xMonitor
Scaling runbook (sample)
PriorityActionResourceEstimated Time
1Request vCPU quota increase to 200East US subscription1–3 business days
2Scale SQL DB from S3 to S4sql-contoso-prod15 min (online)
3Increase AKS max node count to 20aks-app-prod5 min
Remediation guidance (sample)
bash
# Request vCPU quota increase via REST API
az rest --method patch \
--url "https://management.azure.com/subscriptions/a1b2c3d4-.../providers/Microsoft.Capacity/resourceProviders/Microsoft.Compute/locations/eastus/serviceLimits/StandardDv5Family?api-version=2020-10-25" \
--body '{"properties":{"limit":{"limitObjectType":"LimitValue","value":200}}}'
# Scale up SQL Database
az sql db update --resource-group rg-data-prod --server sql-contoso-prod --name appdb --service-objective S4

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
70
Repository forks
13
7-day trend score
21

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/ricmmartins/azure-sre-agent-skills/03-capacity-planning/badge)](https://verified-skill.com/skills/ricmmartins/azure-sre-agent-skills/03-capacity-planning)

Something wrong with this skill or its page? Tell us.