Skip to content

Commit 0d4b328

Browse files
rahulbatsCopilot
andauthored
Azure pricing skill (#859)
* Add azure-pricing plugin * changes for azure pricing skill * Remove plugin files, not part of this PR * added changes for copilot estimator * refactor: replace Playwright script with web fetch approach for Copilot Studio estimation - Remove copilot-studio-estimator.py (Playwright browser automation) - Update SKILL.md to instruct Copilot to fetch live billing rates from Microsoft docs URLs - Keep COPILOT-STUDIO-RATES.md as cached fallback reference - No Python dependencies needed — uses Copilot's built-in web fetch tool * cleanup: remove estimator URL, mark rates as cached fallback - Remove microsoft.github.io/copilot-studio-estimator from fetch URLs (React SPA, not fetchable) - Mark billing rates table as dated cached snapshot with fallback notice - Keep only Microsoft Learn URLs as live data sources * fix: correct serviceName examples to match API values * Update skills/azure-pricing/references/SERVICE-NAMES.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: regenerate README.skills.md after build * fix: remove URL triggering codespell false positive * feat: add azure-pricing skill to azure-cloud-development plugin --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 40fd1a6 commit 0d4b328

File tree

8 files changed

+660
-2
lines changed

8 files changed

+660
-2
lines changed

docs/README.plugins.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-plugins) for guidelines on how t
2121
| Name | Description | Items | Tags |
2222
| ---- | ----------- | ----- | ---- |
2323
| [awesome-copilot](../plugins/awesome-copilot/README.md) | Meta prompts that help you discover and generate curated GitHub Copilot agents, instructions, prompts, and skills. | 5 items | github-copilot, discovery, meta, prompt-engineering, agents |
24-
| [azure-cloud-development](../plugins/azure-cloud-development/README.md) | Comprehensive Azure cloud development tools including Infrastructure as Code, serverless functions, architecture patterns, and cost optimization for building scalable cloud applications. | 10 items | azure, cloud, infrastructure, bicep, terraform, serverless, architecture, devops |
24+
| [azure-cloud-development](../plugins/azure-cloud-development/README.md) | Comprehensive Azure cloud development tools including Infrastructure as Code, serverless functions, architecture patterns, and cost optimization for building scalable cloud applications. | 11 items | azure, cloud, infrastructure, bicep, terraform, serverless, architecture, devops |
2525
| [cast-imaging](../plugins/cast-imaging/README.md) | A comprehensive collection of specialized agents for software analysis, impact assessment, structural quality advisories, and architectural review using CAST Imaging. | 3 items | cast-imaging, software-analysis, architecture, quality, impact-analysis, devops |
2626
| [clojure-interactive-programming](../plugins/clojure-interactive-programming/README.md) | Tools for REPL-first Clojure workflows featuring Clojure instructions, the interactive programming chat mode and supporting guidance. | 2 items | clojure, repl, interactive-programming |
2727
| [context-engineering](../plugins/context-engineering/README.md) | Tools and techniques for maximizing GitHub Copilot effectiveness through better context management. Includes guidelines for structuring code, an agent for planning multi-file changes, and prompts for context-aware development. | 4 items | context, productivity, refactoring, best-practices, architecture |

docs/README.skills.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-skills) for guidelines on how to
3939
| [az-cost-optimize](../skills/az-cost-optimize/SKILL.md) | Analyze Azure resources used in the app (IaC files and/or resources in a target rg) and optimize costs - creating GitHub issues for identified optimizations. | None |
4040
| [azure-deployment-preflight](../skills/azure-deployment-preflight/SKILL.md) | Performs comprehensive preflight validation of Bicep deployments to Azure, including template syntax validation, what-if analysis, and permission checks. Use this skill before any deployment to Azure to preview changes, identify potential issues, and ensure the deployment will succeed. Activate when users mention deploying to Azure, validating Bicep files, checking deployment permissions, previewing infrastructure changes, running what-if, or preparing for azd provision. | `references/ERROR-HANDLING.md`<br />`references/REPORT-TEMPLATE.md`<br />`references/VALIDATION-COMMANDS.md` |
4141
| [azure-devops-cli](../skills/azure-devops-cli/SKILL.md) | Manage Azure DevOps resources via CLI including projects, repos, pipelines, builds, pull requests, work items, artifacts, and service endpoints. Use when working with Azure DevOps, az commands, devops automation, CI/CD, or when user mentions Azure DevOps CLI. | `references/advanced-usage.md`<br />`references/boards-and-iterations.md`<br />`references/org-and-security.md`<br />`references/pipelines-and-builds.md`<br />`references/repos-and-prs.md`<br />`references/variables-and-agents.md`<br />`references/workflows-and-patterns.md` |
42+
| [azure-pricing](../skills/azure-pricing/SKILL.md) | Fetches real-time Azure retail pricing using the Azure Retail Prices API (prices.azure.com) and estimates Copilot Studio agent credit consumption. Use when the user asks about the cost of any Azure service, wants to compare SKU prices, needs pricing data for a cost estimate, mentions Azure pricing, Azure costs, Azure billing, or asks about Copilot Studio pricing, Copilot Credits, or agent usage estimation. Covers compute, storage, networking, databases, AI, Copilot Studio, and all other Azure service families. | `references/COPILOT-STUDIO-RATES.md`<br />`references/COST-ESTIMATOR.md`<br />`references/REGIONS.md`<br />`references/SERVICE-NAMES.md` |
4243
| [azure-resource-health-diagnose](../skills/azure-resource-health-diagnose/SKILL.md) | Analyze Azure resource health, diagnose issues from logs and telemetry, and create a remediation plan for identified problems. | None |
4344
| [azure-resource-visualizer](../skills/azure-resource-visualizer/SKILL.md) | Analyze Azure resource groups and generate detailed Mermaid architecture diagrams showing the relationships between individual resources. Use this skill when the user asks for a diagram of their Azure resources or help in understanding how the resources relate to each other. | `LICENSE.txt`<br />`assets/template-architecture.md` |
4445
| [azure-role-selector](../skills/azure-role-selector/SKILL.md) | When user is asking for guidance for which role to assign to an identity given desired permissions, this agent helps them understand the role that will meet the requirements with least privilege access and how to apply that role. | `LICENSE.txt` |

plugins/azure-cloud-development/.github/plugin/plugin.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"skills": [
3030
"./skills/azure-resource-health-diagnose/",
3131
"./skills/az-cost-optimize/",
32-
"./skills/import-infrastructure-as-code/"
32+
"./skills/import-infrastructure-as-code/",
33+
"./skills/azure-pricing/"
3334
]
3435
}

skills/azure-pricing/SKILL.md

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
---
2+
name: azure-pricing
3+
description: 'Fetches real-time Azure retail pricing using the Azure Retail Prices API (prices.azure.com) and estimates Copilot Studio agent credit consumption. Use when the user asks about the cost of any Azure service, wants to compare SKU prices, needs pricing data for a cost estimate, mentions Azure pricing, Azure costs, Azure billing, or asks about Copilot Studio pricing, Copilot Credits, or agent usage estimation. Covers compute, storage, networking, databases, AI, Copilot Studio, and all other Azure service families.'
4+
compatibility: Requires internet access to prices.azure.com and learn.microsoft.com. No authentication needed.
5+
metadata:
6+
author: anthonychu
7+
version: "1.2"
8+
---
9+
10+
# Azure Pricing Skill
11+
12+
Use this skill to retrieve real-time Azure retail pricing data from the public Azure Retail Prices API. No authentication is required.
13+
14+
## When to Use This Skill
15+
16+
- User asks about the cost of an Azure service (e.g., "How much does a D4s v5 VM cost?")
17+
- User wants to compare pricing across regions or SKUs
18+
- User needs a cost estimate for a workload or architecture
19+
- User mentions Azure pricing, Azure costs, or Azure billing
20+
- User asks about reserved instance vs. pay-as-you-go pricing
21+
- User wants to know about savings plans or spot pricing
22+
23+
## API Endpoint
24+
25+
```
26+
GET https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview
27+
```
28+
29+
Append `$filter` as a query parameter using OData filter syntax. Always use `api-version=2023-01-01-preview` to ensure savings plan data is included.
30+
31+
## Step-by-step Instructions
32+
33+
If anything is unclear about the user's request, ask clarifying questions to identify the correct filter fields and values before calling the API.
34+
35+
1. **Identify filter fields** from the user's request (service name, region, SKU, price type).
36+
2. **Resolve the region**: the API requires `armRegionName` values in lowercase with no spaces (e.g. "East US" → `eastus`, "West Europe" → `westeurope`, "Southeast Asia" → `southeastasia`). See [references/REGIONS.md](references/REGIONS.md) for a complete list.
37+
3. **Build the filter string** using the fields below and fetch the URL.
38+
4. **Parse the `Items` array** from the JSON response. Each item contains price and metadata.
39+
5. **Follow pagination** via `NextPageLink` if you need more than the first 1000 results (rarely needed).
40+
6. **Calculate cost estimates** using the formulas in [references/COST-ESTIMATOR.md](references/COST-ESTIMATOR.md) to produce monthly/annual estimates.
41+
7. **Present results** in a clear summary table with service, SKU, region, unit price, and monthly/annual estimates.
42+
43+
## Filterable Fields
44+
45+
| Field | Type | Example |
46+
|---|---|---|
47+
| `serviceName` | string (exact, case-sensitive) | `'Functions'`, `'Virtual Machines'`, `'Storage'` |
48+
| `serviceFamily` | string (exact, case-sensitive) | `'Compute'`, `'Storage'`, `'Databases'`, `'AI + Machine Learning'` |
49+
| `armRegionName` | string (exact, lowercase) | `'eastus'`, `'westeurope'`, `'southeastasia'` |
50+
| `armSkuName` | string (exact) | `'Standard_D4s_v5'`, `'Standard_LRS'` |
51+
| `skuName` | string (contains supported) | `'D4s v5'` |
52+
| `priceType` | string | `'Consumption'`, `'Reservation'`, `'DevTestConsumption'` |
53+
| `meterName` | string (contains supported) | `'Spot'` |
54+
55+
Use `eq` for equality, `and` to combine, and `contains(field, 'value')` for partial matches.
56+
57+
## Example Filter Strings
58+
59+
```
60+
# All consumption prices for Functions in East US
61+
serviceName eq 'Functions' and armRegionName eq 'eastus' and priceType eq 'Consumption'
62+
63+
# D4s v5 VMs in West Europe (consumption only)
64+
armSkuName eq 'Standard_D4s_v5' and armRegionName eq 'westeurope' and priceType eq 'Consumption'
65+
66+
# All storage prices in a region
67+
serviceName eq 'Storage' and armRegionName eq 'eastus'
68+
69+
# Spot pricing for a specific SKU
70+
armSkuName eq 'Standard_D4s_v5' and contains(meterName, 'Spot') and armRegionName eq 'eastus'
71+
72+
# 1-year reservation pricing
73+
serviceName eq 'Virtual Machines' and priceType eq 'Reservation' and armRegionName eq 'eastus'
74+
75+
# Azure AI / OpenAI pricing (now under Foundry Models)
76+
serviceName eq 'Foundry Models' and armRegionName eq 'eastus' and priceType eq 'Consumption'
77+
78+
# Azure Cosmos DB pricing
79+
serviceName eq 'Azure Cosmos DB' and armRegionName eq 'eastus' and priceType eq 'Consumption'
80+
```
81+
82+
## Full Example Fetch URL
83+
84+
```
85+
https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview&$filter=serviceName eq 'Functions' and armRegionName eq 'eastus' and priceType eq 'Consumption'
86+
```
87+
88+
URL-encode spaces as `%20` and quotes as `%27` when constructing the URL.
89+
90+
## Key Response Fields
91+
92+
```json
93+
{
94+
"Items": [
95+
{
96+
"retailPrice": 0.000016,
97+
"unitPrice": 0.000016,
98+
"currencyCode": "USD",
99+
"unitOfMeasure": "1 Execution",
100+
"serviceName": "Functions",
101+
"skuName": "Premium",
102+
"armRegionName": "eastus",
103+
"meterName": "vCPU Duration",
104+
"productName": "Functions",
105+
"priceType": "Consumption",
106+
"isPrimaryMeterRegion": true,
107+
"savingsPlan": [
108+
{ "unitPrice": 0.000012, "term": "1 Year" },
109+
{ "unitPrice": 0.000010, "term": "3 Years" }
110+
]
111+
}
112+
],
113+
"NextPageLink": null,
114+
"Count": 1
115+
}
116+
```
117+
118+
Only use items where `isPrimaryMeterRegion` is `true` unless the user specifically asks for non-primary meters.
119+
120+
## Supported serviceFamily Values
121+
122+
`Analytics`, `Compute`, `Containers`, `Data`, `Databases`, `Developer Tools`, `Integration`, `Internet of Things`, `Management and Governance`, `Networking`, `Security`, `Storage`, `Web`, `AI + Machine Learning`
123+
124+
## Tips
125+
126+
- `serviceName` values are case-sensitive. When unsure, filter by `serviceFamily` first to discover valid `serviceName` values in the results.
127+
- If results are empty, try broadening the filter (e.g., remove `priceType` or region constraints first).
128+
- Prices are always in USD unless `currencyCode` is specified in the request.
129+
- For savings plan prices, look for the `savingsPlan` array on each item (only in `2023-01-01-preview`).
130+
- See [references/SERVICE-NAMES.md](references/SERVICE-NAMES.md) for a catalog of common service names and their correct casing.
131+
- See [references/COST-ESTIMATOR.md](references/COST-ESTIMATOR.md) for cost estimation formulas and patterns.
132+
- See [references/COPILOT-STUDIO-RATES.md](references/COPILOT-STUDIO-RATES.md) for Copilot Studio billing rates and estimation formulas.
133+
134+
## Troubleshooting
135+
136+
| Issue | Solution |
137+
|-------|----------|
138+
| Empty results | Broaden the filter — remove `priceType` or `armRegionName` first |
139+
| Wrong service name | Use `serviceFamily` filter to discover valid `serviceName` values |
140+
| Missing savings plan data | Ensure `api-version=2023-01-01-preview` is in the URL |
141+
| URL errors | Check URL encoding — spaces as `%20`, quotes as `%27` |
142+
| Too many results | Add more filter fields (region, SKU, priceType) to narrow down |
143+
144+
---
145+
146+
# Copilot Studio Agent Usage Estimation
147+
148+
Use this section when the user asks about Copilot Studio pricing, Copilot Credits, or agent usage costs.
149+
150+
## When to Use This Section
151+
152+
- User asks about Copilot Studio pricing or costs
153+
- User asks about Copilot Credits or agent credit consumption
154+
- User wants to estimate monthly costs for a Copilot Studio agent
155+
- User mentions agent usage estimation or the Copilot Studio estimator
156+
- User asks how much an agent will cost to run
157+
158+
## Key Facts
159+
160+
- **1 Copilot Credit = $0.01 USD**
161+
- Credits are pooled across the entire tenant
162+
- Employee-facing agents with M365 Copilot licensed users get classic answers, generative answers, and tenant graph grounding at zero cost
163+
- Overage enforcement triggers at 125% of prepaid capacity
164+
165+
## Step-by-step Estimation
166+
167+
1. **Gather inputs** from the user: agent type (employee/customer), number of users, interactions/month, knowledge %, tenant graph %, tool usage per session.
168+
2. **Fetch live billing rates** — use the built-in web fetch tool to download the latest rates from the source URLs listed below. This ensures the estimate always uses the most current Microsoft pricing.
169+
3. **Parse the fetched content** to extract the current billing rates table (credits per feature type).
170+
4. **Calculate the estimate** using the rates and formulas from the fetched content:
171+
- `total_sessions = users × interactions_per_month`
172+
- Knowledge credits: apply tenant graph grounding rate, generative answer rate, and classic answer rate
173+
- Agent tools credits: apply agent action rate per tool call
174+
- Agent flow credits: apply flow rate per 100 actions
175+
- Prompt modifier credits: apply basic/standard/premium rates per 10 responses
176+
5. **Present results** in a clear table with breakdown by category, total credits, and estimated USD cost.
177+
178+
## Source URLs to Fetch
179+
180+
When answering Copilot Studio pricing questions, fetch the latest content from these URLs to use as context:
181+
182+
| URL | Content |
183+
|---|---|
184+
| https://learn.microsoft.com/en-us/microsoft-copilot-studio/requirements-messages-management | Billing rates table, billing examples, overage enforcement rules |
185+
| https://learn.microsoft.com/en-us/microsoft-copilot-studio/billing-licensing | Licensing options, M365 Copilot inclusions, prepaid vs pay-as-you-go |
186+
187+
Fetch at least the first URL (billing rates) before calculating. The second URL provides supplementary context for licensing questions.
188+
189+
See [references/COPILOT-STUDIO-RATES.md](references/COPILOT-STUDIO-RATES.md) for a cached snapshot of rates, formulas, and billing examples (use as fallback if web fetch is unavailable).

0 commit comments

Comments
 (0)