--- name: apex-azure-cost-optimization user-invocable: true disable-model-invocation: false argument-hint: "subscription scope and analysis period" description: '**ANALYSIS SKILL** — Query, forecast and optimize Azure costs via cost + utilization analysis. WHEN: "optimize Azure costs", "find cost savings", "what did we spend", "cost forecast", "rightsize VMs", "find orphaned resources", "optimize Redis costs". DO NOT USE FOR: deploying (apex-azure-deploy), general diagnostics (apex-azure-diagnostics), security issues (apex-azure-compliance).' license: MIT metadata: author: Microsoft version: "1.0.0" --- # Azure Cost Optimization Skill Analyze Azure subscriptions to identify cost savings through orphaned resource cleanup, rightsizing, and optimization recommendations based on actual usage data. ## Routing | User intent | Workflow | | ------------------------------------- | ----------------------------------------------------------------- | | Understand current or historical cost | [Cost query](references/cost-query/workflow.md) (`query_costs`) | | Reduce costs or find waste | [Instructions](#instructions) below | | Project future cost | [Cost forecast](references/cost-forecast/workflow.md) (`forecast_costs`) | ## Scope Reference (Shared Across All Workflows) - Subscription: `/subscriptions/` - Resource group: `/subscriptions//resourceGroups/` - Management group: `/providers/Microsoft.Management/managementGroups/` - Billing account: `/providers/Microsoft.Billing/billingAccounts/` ## When to Use This Skill Use this skill when the user asks to: - Optimize Azure costs or reduce spending - Analyze Azure subscription for cost savings - Generate cost optimization report - Find orphaned or unused resources - Rightsize Azure VMs, containers, or services - Identify where they're overspending in Azure - **Optimize Redis costs specifically** - See [Azure Redis Cost Optimization](./references/azure-redis.md) for Redis-specific analysis - **Review storage tiers and lifecycle** - See [Azure Storage Cost Review](./references/azure-storage-tiers.md) ## Rules - **Read-only analysis first** — never delete or modify resources during the assessment phase; remediation is a separate user-approved step - **Validate prerequisites** before starting (Azure CLI authenticated, `costmanagement` + `resource-graph` extensions, `azqr` installed, Cost Management Reader + Monitoring Reader + Reader roles) - **Use real data** — recommendations must be grounded in actual cost queries and utilization metrics, not assumptions - **ARM MCP first** — use API fallbacks only when an operation is unavailable, never to bypass invalid input, denied access, throttling or empty data ([tool and safety guidance](references/tools-and-safety.md)) - **Cite sources** — every savings estimate must reference the underlying cost query or pricing API result (audit trail in `agent-output/{project}/cost-query-result.json`) - **Classify safely** — mark recommendations as Safe / Review / Risky; never auto-apply destructive operations - **Show the total bill** — present savings next to the scope's total actual cost for the same period, so each saving reads against the whole bill - **Redis-specific scope** — when the user asks about Redis only, follow [Azure Redis Cost Optimization](./references/azure-redis.md) instead of the general subscription workflow - **Save artifacts** to `agent-output/{project}/costoptimizereport.md` and the audit trail JSON; without a project, ask for its name before writing - **Out of scope**: deploying resources (use `apex-azure-deploy`), security issues (use `apex-azure-compliance`), general diagnostics (use `apex-azure-diagnostics`) ## Instructions High-level step list (full procedure in [`references/workflow-steps.md`](./references/workflow-steps.md)): | # | Step | Reference | | --: | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | 0 | Validate prerequisites (Azure CLI, `costmanagement` + `resource-graph` extensions, azqr, RBAC) | [`workflow-steps.md`](./references/workflow-steps.md) | | 1 | Load Azure cost-optimization best practices via `mcp_azure-mcp_get_azure_bestpractices` | [`workflow-steps.md`](./references/workflow-steps.md) | | 1.5 | (Conditional) Redis-specific analysis branch | [`azure-redis.md`](./references/azure-redis.md) | | 1.6 | (Redis branch) Choose analysis scope (subscription / prefix / tenant-wide) | [`azure-redis.md`](./references/azure-redis.md) | | 2 | Run Azure Quick Review (`extension_azqr`) for orphaned-resource discovery | [`azure-quick-review.md`](./references/azure-quick-review.md) | | 3 | Discover resources cross-subscription via Azure Resource Graph | [`azure-resource-graph.md`](./references/azure-resource-graph.md) | | 4–9 | Cost queries, pricing validation, metrics, report, audit trail, cleanup | [`detailed-workflow-steps.md`](./references/detailed-workflow-steps.md) | > **Branching rule**: use Redis-only analysis only for an explicitly Redis-only request. > Mixed-service or subscription-wide requests retain the general workflow and add > Redis analysis for those resources. An ambiguous Redis mention never narrows scope; > clarify intent while preserving all requested services. ## Output The skill generates: 1. **Cost Optimization Report** (`agent-output/{project}/costoptimizereport.md`) - Executive summary with total costs and top drivers - Detailed cost breakdown with Azure Portal links - Prioritized recommendations with actual data and estimated savings - Implementation commands with safety warnings 2. **Cost Query Results** (`agent-output/{project}/cost-query-result.json`) - Audit trail of all cost queries and responses - Validation evidence for recommendations ## Important Notes 📋 **Reference**: Read `references/best-practices-notes.md` for data classification labels, best practices, common pitfalls, and safety requirements. ## SDK Quick References - **Redis Management**: [.NET](references/sdk/azure-resource-manager-redis-dotnet.md) ## Reference Index Load these on demand — do NOT read all at once: | Reference | When to Load | | --------------------------------------- | ------------------------------------------------------------------ | | `../apex-entra-app-registration/references/auth-best-practices.md` | Auth Best Practices | | `references/azure-quick-review.md` | Azure Quick Review | | `references/azure-redis.md` | Azure Redis | | `references/azure-resource-graph.md` | Azure Resource Graph | | `references/workflow-steps.md` | Steps 0–3: prerequisites, best practices, azqr, resource discovery | | `references/detailed-workflow-steps.md` | Steps 4-9: cost queries, pricing, metrics, report, audit, cleanup | | `references/best-practices-notes.md` | Data classification, best practices, pitfalls, safety | | `references/cost-query/workflow.md` | Cost breakdowns, trends and totals; `query_costs` limits and errors | | `references/cost-forecast/workflow.md` | Forecasts; `forecast_costs` period and row limits | | `references/tools-and-safety.md` | ARM MCP fallback APIs, evidence labels and approval rules | | `references/azure-storage-tiers.md` | Storage access tiers, lifecycle tiering and review signals |