.github/plugins/azure-skills/skills/azure-resource-lookup/SKILL.md
List, find, and show Azure resources across subscriptions or resource groups. Handles prompts like "list websites", "list virtual machines", "list my VMs", "show storage accounts", "find container apps", and "what resources do I have". USE FOR: resource inventory, find resources by tag, tag analysis, orphaned resource discovery (not for cost analysis), unattached disks, count resources by type, cross-subscription lookup, and Azure Resource Graph queries. DO NOT USE FOR: deploying/changing resources (use azure-deploy), cost optimization (use azure-cost), or non-Azure clouds.
npx skillsauth add microsoft/azure-skills azure-resource-lookupInstall 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.
List, find, and discover Azure resources of any type across subscriptions and resource groups. Use Azure Resource Graph (ARG) for fast, cross-cutting queries when dedicated MCP tools don't cover the resource type.
Use this skill when the user wants to:
💡 Tip: For single-resource-type queries, first check if a dedicated MCP tool can handle it (see routing table below). If none exists, use Azure Resource Graph.
| Property | Value |
|----------|-------|
| Query Language | KQL (Kusto Query Language subset) |
| CLI Command | az graph query -q "<KQL>" -o table |
| Extension | az extension add --name resource-graph |
| MCP Tool | extension_cli_generate with intent for az graph query |
| Best For | Cross-subscription queries, orphaned resources, tag audits |
| Tool | Purpose | When to Use |
|------|---------|-------------|
| extension_cli_generate | Generate az graph query commands | Primary tool — generate ARG queries from user intent |
| mcp_azure_mcp_subscription_list | List available subscriptions | Discover subscription scope before querying |
| mcp_azure_mcp_group_list | List resource groups | Narrow query scope |
For single-resource-type queries, check if a dedicated MCP tool can handle it:
| Resource Type | MCP Tool | Coverage |
|---|---|---|
| Virtual Machines | compute | ✅ Full — list, details, sizes |
| Storage Accounts | storage | ✅ Full — accounts, blobs, tables |
| Cosmos DB | cosmos | ✅ Full — accounts, databases, queries |
| Key Vault | keyvault | ⚠️ Partial — secrets/keys only, no vault listing |
| SQL Databases | sql | ⚠️ Partial — requires resource group name |
| Container Registries | acr | ✅ Full — list registries |
| Kubernetes (AKS) | aks | ✅ Full — clusters, node pools |
| App Service / Web Apps | appservice | ❌ No list command — use ARG |
| Container Apps | — | ❌ No MCP tool — use ARG |
| Event Hubs | eventhubs | ✅ Full — namespaces, hubs |
| Service Bus | servicebus | ✅ Full — queues, topics |
If a dedicated tool is available with full coverage, use it. Otherwise proceed to Step 2.
Use extension_cli_generate to build the az graph query command:
mcp_azure_mcp_extension_cli_generate
intent: "query Azure Resource Graph to <user's request>"
cli-type: "az"
See Azure Resource Graph Query Patterns for common KQL patterns.
Run the generated command. Use --query (JMESPath) to shape output:
az graph query -q "<KQL>" --query "data[].{name:name, type:type, rg:resourceGroup}" -o table
Use --first N to limit results. Use --subscriptions to scope.
| Error | Cause | Fix |
|-------|-------|-----|
| resource-graph extension not found | Extension not installed | az extension add --name resource-graph |
| AuthorizationFailed | No read access to subscription | Check RBAC — need Reader role |
| BadRequest on query | Invalid KQL syntax | Verify table/column names; use =~ for case-insensitive type matching |
| Empty results | No matching resources or wrong scope | Check --subscriptions flag; verify resource type spelling |
=~ for case-insensitive type matching (types are lowercase)--subscriptions or --first for large tenantstools
Deploy, evaluate, fine-tune, and manage Foundry agents end-to-end: Docker build, ACR push, hosted/prompt agent create, batch eval, continuous eval, prompt optimizer, Agent Optimizer scaffold, agent.yaml, dataset curation from traces, model fine-tuning (SFT/DPO/RFT). USE FOR: deploy agent, hosted agent, create agent, add tool to agent, invoke agent, evaluate agent, continuous eval, continuous monitoring, optimize prompt, improve prompt, optimize agent instructions, agent optimizer, deploy model, Foundry project, RBAC, role assignment, permissions, quota, capacity, region, troubleshoot agent, deployment failure, AI Services, create Foundry resource, provision, knowledge index, customize deployment, onboard, availability, fine-tune, SFT, DPO, RFT, training-data, grader, distillation, fine-tuned model, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure-prepare).
testing
Architect and provision enterprise Azure infrastructure from workload descriptions. For cloud architects and platform engineers planning networking, identity, security, compliance, and multi-resource topologies with WAF alignment. Generates Bicep or Terraform directly (no azd). WHEN: 'plan Azure infrastructure', 'architect Azure landing zone', 'design hub-spoke network', 'plan multi-region DR topology', 'set up VNets firewalls and private endpoints', 'subscription-scope Bicep deployment', 'Azure Backup for VM workloads'. PREFER azure-prepare FOR app-centric workflows.
testing
Azure cost management: query costs, forecast spending, optimize to reduce waste. WHEN: "Azure costs", "Azure bill", "cost breakdown", "how much am I spending", "forecast spending", "optimize costs", "reduce spending", "orphaned resources", "rightsize VMs", "cost spike", "reduce storage costs", "AKS cost". DO NOT USE FOR: deploying resources, provisioning, diagnostics, or security audits.
development
Assess and upgrade Azure workloads between plans, tiers, or SKUs, or modernize Azure SDK dependencies in source code. WHEN: upgrade Consumption to Flex Consumption, upgrade Azure Functions plan, change hosting plan, function app SKU, migrate App Service to Container Apps, modernize legacy Azure Java SDKs (com.microsoft.azure to com.azure), migrate Azure Cache for Redis (ACR/ACRE) to Azure Managed Redis (AMR).