
Capacity Discovery
OfficialFreeFind optimal Azure model deployment locations.
Free · Opens the source repo
What Capacity Discovery does
Capacity Discovery is a skill designed to help users identify where they can deploy Azure OpenAI models based on available capacity across various regions and projects. By analyzing quota limits and model availability, this skill provides a ranked list of potential deployment locations tailored to the user's specific capacity requirements. It is particularly useful for developers and data scientists who need to ensure that their chosen model can be deployed without hitting capacity constraints.
The skill operates through a series of scripts that automate the process of querying Azure's REST APIs. Users begin by validating their Azure subscription and identifying the model and version they wish to deploy. The primary script, discover_and_rank, then performs a comprehensive discovery, querying all accessible regions and cross-referencing them with the user's current projects. The output is a ranked table indicating which regions meet the specified capacity target, along with details about available quota and project counts.
This tool is ideal for situations where users need to quickly assess model deployment options, especially when they encounter quota errors or need to compare availability across different regions. It streamlines the decision-making process by providing clear recommendations based on real-time data. After identifying suitable locations, users are guided to hand off to other skills for actual deployment, ensuring a smooth workflow.
However, it's important to note that this skill is not designed for actual model deployment or for requesting quota increases. Users should have a clear understanding of their deployment needs and follow up with the appropriate Azure tools for those tasks. Overall, Capacity Discovery is an essential resource for optimizing the deployment of Azure OpenAI models, making it easier to navigate the complexities of cloud resources and capacity management.
When to use it
Use this skill when you need to determine the best region for deploying a model based on capacity requirements or when facing quota errors.
When not to use it
Do not use this skill for actual deployment tasks or for requesting quota increases; those actions should be handled through the Azure Portal.
What you can build with it
Finding Deployment Options
A developer needs to deploy a GPT-4o model but is unsure which Azure region has sufficient capacity. They use the skill to discover available options.
Quota Error Resolution
After encountering a quota error during deployment, a user runs the skill to identify alternative regions where they can successfully deploy their model.
Comparing Regions for Capacity
A data scientist wants to compare the availability of multiple regions for a specific model. They leverage the skill to get a ranked list of regions based on capacity.
How to install Capacity Discovery
View source1. Install with the skills CLI
npx skills add microsoft/azure-skills/capacity --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by microsoftCapacity Discovery
Finds available Azure OpenAI model capacity across all accessible regions and projects. Recommends the best deployment location based on capacity requirements.
Quick Reference
| Property | Description |
|---|---|
| Purpose | Find where you can deploy a model with sufficient capacity |
| Scope | All regions and projects the user has access to |
| Output | Ranked table of regions/projects with available capacity |
| Action | Read-only analysis — does NOT deploy. Hands off to preset or customize |
| Authentication | Azure CLI (az login) |
When to Use This Skill
- ✅ User asks "where can I deploy gpt-4o?"
- ✅ User specifies a capacity target: "find a region with 10K TPM for gpt-4o"
- ✅ User wants to compare availability: "which regions have gpt-4o available?"
- ✅ User got a quota error and needs to find an alternative location
- ✅ User asks "best region and project for deploying model X"
After discovery → hand off to preset or customize for actual deployment.
Scripts
Pre-built scripts handle the complex REST API calls and data processing. Use these instead of constructing commands manually.
| Script | Purpose | Usage |
|---|---|---|
scripts/discover_and_rank.ps1 | Full discovery: capacity + projects + ranking | Primary script for capacity discovery |
scripts/discover_and_rank.sh | Same as above (bash) | Primary script for capacity discovery |
scripts/query_capacity.ps1 | Raw capacity query (no project matching) | Quick capacity check or version listing |
scripts/query_capacity.sh | Same as above (bash) | Quick capacity check or version listing |
Workflow
Phase 1: Validate Prerequisites
az account show --query "{Subscription:name, SubscriptionId:id}" --output table
Phase 2: Identify Model and Version
Extract model name from user prompt. If version is unknown, query available versions:
.\scripts\query_capacity.ps1 -ModelName <model-name>
./scripts/query_capacity.sh <model-name>
This lists available versions. Use the latest version unless user specifies otherwise.
Phase 3: Run Discovery
Run the full discovery script with model name, version, and minimum capacity target:
.\scripts\discover_and_rank.ps1 -ModelName <model-name> -ModelVersion <version> -MinCapacity <target>
./scripts/discover_and_rank.sh <model-name> <version> <min-capacity>
💡 The script automatically queries capacity across ALL regions, cross-references with the user's existing projects, and outputs a ranked table sorted by: meets target → project count → available capacity.
Phase 3.5: Validate Subscription Quota
After discovery identifies candidate regions, validate that the user's subscription actually has available quota in each region. Model capacity (from Phase 3) shows what the platform can support, but subscription quota limits what this specific user can deploy.
# For each candidate region from discovery results:
$usageData = az cognitiveservices usage list --location <region> --subscription $SUBSCRIPTION_ID -o json 2>$null | ConvertFrom-Json
# Check quota for each SKU the model supports
# Quota names follow pattern: OpenAI.<SKU>.<model-name>
$usageEntry = $usageData | Where-Object { $_.name.value -eq "OpenAI.<SKU>.<model-name>" }
if ($usageEntry) {
$quotaAvailable = $usageEntry.limit - $usageEntry.currentValue
} else {
$quotaAvailable = 0 # No quota allocated
}
# For each candidate region from discovery results:
usage_json=$(az cognitiveservices usage list --location <region> --subscription "$SUBSCRIPTION_ID" -o json 2>/dev/null)
# Extract quota for specific SKU+model
quota_available=$(echo "$usage_json" | jq -r --arg name "OpenAI.<SKU>.<model-name>" \
'.[] | select(.name.value == $name) | .limit - .currentValue')
Annotate discovery results:
Add a "Quota Available" column to the ranked output from Phase 3:
| Region | Available Capacity | Meets Target | Projects | Quota Available |
|---|---|---|---|---|
| eastus2 | 120K TPM | ✅ | 3 | ✅ 80K |
| westus3 | 90K TPM | ✅ | 1 | ❌ 0 (at limit) |
| swedencentral | 100K TPM | ✅ | 0 | ✅ 100K |
Regions/SKUs where quotaAvailable = 0 should be marked with ❌ in the results. If no region has available quota, hand off to the quota skill for increase requests and troubleshooting.
Phase 4: Present Results and Hand Off
After the script outputs the ranked table (now annotated with quota info), present it to the user and ask:
- 🚀 Quick deploy to top recommendation with defaults → route to preset
- ⚙️ Custom deploy with version/SKU/capacity/RAI selection → route to customize
- 📊 Check another model or capacity target → re-run Phase 2
- ❌ Cancel
Phase 5: Confirm Project Before Deploying
Before handing off to preset or customize, always confirm the target project with the user. See the Project Selection rules in the parent router.
If the discovery table shows a sample project for the chosen region, suggest it as the default. Otherwise, query projects in that region and let the user pick.
Error Handling
| Error | Cause | Resolution |
|---|---|---|
| "No capacity found" | Model not available or all at quota | Hand off to quota skill for increase requests and troubleshooting |
| Script auth error | az login expired | Re-run az login |
| Empty version list | Model not in region catalog | Try a different region: ./scripts/query_capacity.sh <model> "" eastus |
| "No projects found" | No AI Services resources | Guide to project/create skill or Azure Portal |
Related Skills
Frequently asked questions about Capacity Discovery
Similar skills
Turborepo
Optimized build system for JavaScript/TypeScript monorepos.
Azure Pipelines Validation
Streamline your Azure DevOps pipeline changes locally.
Azure Developer CLI
Streamline your Azure project workflows with best practices.
Azure Container Registry CLI
Manage Azure Container Registry resources with ease.
Aspire
Build and orchestrate polyglot distributed applications seamlessly.
Vercel CLI
Manage and deploy Vercel projects from the command line.
