$npx -y skills add microsoft/azure-skills --skill azure-quotasCheck/manage Azure quotas and usage across providers. For deployment planning, capacity validation, region selection. WHEN: \"check quotas\", \"service limits\", \"current usage\", \"request quota increase\", \"quota exceeded\", \"validate capacity\", \"regional availability\", \
| 1 | # Azure Quotas - Service Limits & Capacity Management |
| 2 | |
| 3 | > **AUTHORITATIVE GUIDANCE** — Follow these instructions exactly for quota management and capacity validation. |
| 4 | |
| 5 | ## Overview |
| 6 | |
| 7 | **What are Azure Quotas?** |
| 8 | |
| 9 | Azure quotas (also called service limits) are the maximum number of resources you can deploy in a subscription. Quotas: |
| 10 | - Prevent accidental over-provisioning |
| 11 | - Ensure fair resource distribution across Azure |
| 12 | - Represent **available capacity** in each region |
| 13 | - Can be increased (adjustable quotas) or are fixed (non-adjustable) |
| 14 | |
| 15 | **Key Concept:** **Quotas = Resource Availability** |
| 16 | |
| 17 | If you don't have quota, you cannot deploy resources. Always check quotas when planning deployments or selecting regions. |
| 18 | |
| 19 | ## When to Use This Skill |
| 20 | |
| 21 | Invoke this skill when: |
| 22 | |
| 23 | - **Planning a new deployment** - Validate capacity before deployment |
| 24 | - **Selecting an Azure region** - Compare quota availability across regions |
| 25 | - **Troubleshooting quota exceeded errors** - Check current usage vs limits |
| 26 | - **Requesting quota increases** - Submit increase requests via CLI or Portal |
| 27 | - **Comparing regional capacity** - Find regions with available quota |
| 28 | - **Validating provisioning limits** - Ensure deployment won't exceed quotas |
| 29 | |
| 30 | ## Quick Reference |
| 31 | |
| 32 | | **Property** | **Details** | |
| 33 | |--------------|-------------| |
| 34 | | **Primary Tool** | Azure CLI (`az quota`) - **USE THIS FIRST, ALWAYS** | |
| 35 | | **Extension Required** | `az extension add --name quota` (MUST install first) | |
| 36 | | **Key Commands** | `az quota list`, `az quota show`, `az quota usage list`, `az quota usage show` | |
| 37 | | **Complete CLI Reference** | [commands.md](./references/commands.md) | |
| 38 | | **Azure Portal** | [My quotas](https://portal.azure.com/#blade/Microsoft_Azure_Capacity/QuotaMenuBlade/myQuotas) - Use only as fallback | |
| 39 | | **REST API** | Microsoft.Quota provider - **Unreliable, do NOT use first** | |
| 40 | | **MCP Server** | `azure-quota` MCP server — **NEVER use this. It is unreliable. Always use `az quota` CLI instead.** | |
| 41 | | **Required Permission** | Reader (view) or Quota Request Operator (manage) | |
| 42 | |
| 43 | > **⚠️ ALWAYS USE CLI FIRST** |
| 44 | > |
| 45 | > REST API and Portal can show misleading "No Limit" values — this does **not** mean unlimited capacity. It means the quota API doesn't support that resource type. Always start with `az quota` commands; fall back to [Azure service limits docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits) if CLI returns `BadRequest`. |
| 46 | > |
| 47 | > For complete CLI reference, see [commands.md](./references/commands.md). |
| 48 | |
| 49 | ## Quota Types |
| 50 | |
| 51 | | **Type** | **Adjustability** | **Approval** | **Examples** | |
| 52 | |----------|-------------------|--------------|--------------| |
| 53 | | **Adjustable** | Can increase via Portal/CLI/API | Usually auto-approved | VM vCPUs, Public IPs, Storage accounts | |
| 54 | | **Non-adjustable** | Fixed limits | Cannot be changed | Subscription-wide hard limits | |
| 55 | |
| 56 | **Important:** Requesting quota increases is **free**. You only pay for resources you actually use, not for quota allocation. |
| 57 | |
| 58 | ## Understanding Resource Name Mapping |
| 59 | |
| 60 | **⚠️ CRITICAL:** There is **NO 1:1 mapping** between ARM resource types and quota resource names. |
| 61 | |
| 62 | ### Example Mappings |
| 63 | |
| 64 | | ARM Resource Type | Quota Resource Name | |
| 65 | |-------------------|---------------------| |
| 66 | | `Microsoft.App/managedEnvironments` | `ManagedEnvironmentCount` | |
| 67 | | `Microsoft.Compute/virtualMachines` | `standardDSv3Family`, `cores`, `virtualMachines` | |
| 68 | | `Microsoft.Network/publicIPAddresses` | `PublicIPAddresses`, `IPv4StandardSkuPublicIpAddresses` | |
| 69 | |
| 70 | ### Discovery Workflow |
| 71 | |
| 72 | **Never assume the quota resource name from the ARM type.** Always use this workflow: |
| 73 | |
| 74 | 1. **List all quotas** for the resource provider: |
| 75 | ```bash |
| 76 | az quota list --scope /subscriptions/<id>/providers/<ProviderNamespace>/locations/<region> |
| 77 | ``` |
| 78 | |
| 79 | 2. **Match by `localizedValue`** (human-readable description) to find the relevant quota |
| 80 | |
| 81 | 3. **Use the `name` field** (not ARM resource type) in subsequent commands: |
| 82 | ```bash |
| 83 | az quota show --resource-name ManagedEnvironmentCount --scope ... |
| 84 | az quota usage show --resource-name ManagedEnvironmentCount --scope ... |
| 85 | ``` |
| 86 | |
| 87 | > **📖 Detailed mapping examples and workflow:** See [commands.md - Resource Name Mapping](./references/commands.md#resource-name-mapping) |
| 88 | |
| 89 | ## Scripts |
| 90 | |
| 91 | Pre-built scripts handle quota extension installation, usage queries, and capacity calculation. Use these instead of constructing commands manually. A single call returns limits, usage, and available capacity. |
| 92 | |
| 93 | | Script | Purpose | Usage | |
| 94 | |---- |