Skip to content
Merged
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
ff1b46f
Add azure-reliability skill with checklist-based assessment
MadhuraBharadwaj-MSFT May 11, 2026
b480480
azure-reliability: address test-feedback (AVM, FC1, JSON output, defa…
MadhuraBharadwaj-MSFT May 11, 2026
1b35a55
azure-reliability: require user consent before adding HTTP health tri…
MadhuraBharadwaj-MSFT May 11, 2026
9f81fe8
azure-reliability: do quick wins first, ask before storage migration …
MadhuraBharadwaj-MSFT May 11, 2026
450522c
azure-reliability: pivot assessment table to feature-rows for clarity
MadhuraBharadwaj-MSFT May 11, 2026
81a0fb9
azure-reliability: skill executes deploys itself instead of telling u…
MadhuraBharadwaj-MSFT May 11, 2026
3e5725d
azure-reliability: remove Integration with Other Skills section
MadhuraBharadwaj-MSFT May 11, 2026
e11217d
azure-reliability: dedup overlapping content + fix literal escape bugs
MadhuraBharadwaj-MSFT May 11, 2026
96c712d
Merge branch 'microsoft:main' into main
MadhuraBharadwaj-MSFT May 11, 2026
d015b4d
azure-reliability: fix known issues in services/{container-apps,app-s…
MadhuraBharadwaj-MSFT May 11, 2026
59eb631
azure-reliability: pivot to per-service ownership for service-specifi…
MadhuraBharadwaj-MSFT May 12, 2026
a9c9f1f
azure-reliability: restore Y1 upgrade path notes (Functions) and shar…
MadhuraBharadwaj-MSFT May 12, 2026
d7c2f96
Scope to Functions for initial PR; App Service + Container Apps land …
MadhuraBharadwaj-MSFT May 12, 2026
63a66f8
Add App Service reliability reference
MadhuraBharadwaj-MSFT May 12, 2026
97ec558
Apply suggestion from @apwestgarth
MadhuraBharadwaj-MSFT May 13, 2026
1adba7f
Apply suggestion from @apwestgarth
MadhuraBharadwaj-MSFT May 13, 2026
70fd932
Apply suggestion from @apwestgarth
MadhuraBharadwaj-MSFT May 13, 2026
ad1d097
Apply suggestion from @apwestgarth
MadhuraBharadwaj-MSFT May 13, 2026
71e3e31
Apply suggestions from code review
MadhuraBharadwaj-MSFT May 13, 2026
5581ce8
Update plugin/skills/azure-reliability/references/services/app-servic…
MadhuraBharadwaj-MSFT May 14, 2026
59e3655
Update plugin/skills/azure-reliability/references/services/app-servic…
MadhuraBharadwaj-MSFT May 14, 2026
64f7c35
Update plugin/skills/azure-reliability/references/services/app-servic…
MadhuraBharadwaj-MSFT May 14, 2026
22e11fc
Update plugin/skills/azure-reliability/references/services/app-servic…
MadhuraBharadwaj-MSFT May 14, 2026
39874dd
Merge branch 'main' into azure-reliability/app-service
apwestgarth May 15, 2026
f92106b
Enhance Azure Reliability skill for App Service support
apwestgarth May 15, 2026
afbc0f7
Revise health probe details in documentation
apwestgarth May 15, 2026
42bca61
Add Azure App Service reference for zone redundancy
apwestgarth May 15, 2026
0c89d1c
Clarify compute patches for App Service Plans
apwestgarth May 15, 2026
8b388b1
Update Bicep patch references in documentation
apwestgarth May 15, 2026
32beca1
Update references for Azure App Service and Functions
apwestgarth May 15, 2026
22f2039
Update SKILL.md
apwestgarth May 15, 2026
0856018
Update unit.test.ts
apwestgarth May 15, 2026
402e1b6
Update test description for Azure Functions scope
apwestgarth May 18, 2026
a98f31b
Fix spelling mistake in descripton - SKILL.md
apwestgarth May 18, 2026
bea41e4
Update unit.test.ts
apwestgarth May 18, 2026
18ea518
Update unit.test.ts
apwestgarth May 18, 2026
6a5318f
Fix to ensure consistency and update unit test to correctly reflect c…
apwestgarth May 18, 2026
27d03f4
Update snapshot descriptions and keywords for triggers
apwestgarth May 18, 2026
8c7baec
Update test snapshot
apwestgarth May 18, 2026
241ca21
Update triggers.test.ts.snap
apwestgarth May 18, 2026
08d057c
Update triggers.test.ts
apwestgarth May 18, 2026
1e40c34
Update triggers.test.ts.snap
apwestgarth May 18, 2026
7903af1
Added App Service End to End Zone Redundancy Integration Test
apwestgarth May 21, 2026
f6b90c6
Apply suggestions from code review
apwestgarth May 21, 2026
3662cd3
closed fencing on code block for Auto Heal
apwestgarth May 21, 2026
58aa4d2
Deleted unit tests as no longer valuable due to #2294
apwestgarth May 22, 2026
40e63f2
Update description in snapshot
apwestgarth May 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 30 additions & 22 deletions plugin/skills/azure-reliability/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: azure-reliability
description: "Assess and improve the reliability posture of Azure Functions: zone redundancy, ZRS storage, health probes, multi-region failover. Scans deployed resources, presents a feature-pivoted checklist, then drives staged remediation (CLI or IaC patches) end-to-end with user confirmation. WHEN: \"assess reliability\", \"check reliability\", \"zone redundant\", \"multi-region failover\", \"high availability\", \"disaster recovery\", \"single points of failure\", \"reliability posture\"."
description: "Assess and improve the reliability posture of PaaS Applications (Azure Functions and Azure App Service). Scans deployed resources for zone redundancy, ZRS storage, health probes, and multi-region failover. Scans deployed resources, presents a feature-pivoted checklist, then drives staged remediation (CLI or IaC patches) end-to-end with user confirmation. WHEN: \"assess reliability\", \"check reliability\", \"zone redundant\", \"multi-region failover\", \"high availability\", \"disaster recovery\", \"single points of failure\", \"reliability posture\", \"resiliency\"."
Comment thread
apwestgarth marked this conversation as resolved.
Outdated
license: MIT
metadata:
author: Microsoft
Expand All @@ -15,24 +15,27 @@ metadata:
|---|---|
| Best for | Reliability posture assessment, zone redundancy enablement, multi-region failover setup |
| Primary capabilities | Reliability assessment table, Zone Redundancy Configuration, Multi-Region IaC Generation |
| Supported services | Azure Functions (App Service and Container Apps planned for a future version) |
| Supported services | Azure Functions, App Service (Container Apps planned for a future version) |
| MCP tools | Azure Resource Graph queries, Azure CLI commands |

## When to Use This Skill

Activate this skill when user wants to:
- "Assess my Functions app's reliability"
- "Check the reliability of my resource group" (Functions resources only)
- "Is my function app zone redundant?"
- "Make my function app zone redundant"
- "Set up multi-region failover for my Functions app"
- "Assess my Function app's reliability"
- "Assess my Web app's reliability"
- "Check the reliability of my resource group" (App Service and Functions resources only)
- "Is my app zone redundant?" (App Service and Functions resources only)
- "Is my app service plan zone redundant?"
- "Make my app zone redundant" (App Service and Functions resources only)
- "Make my app service plan zone redundant"
- "Set up multi-region failover for my app" (App Service and Functions resources only)
- "Check my reliability posture"
- "Find single points of failure" (in Functions workloads)
- "Enable high availability for my Functions app"
- "Find single points of failure" (App Service and Functions resources only)
- "Enable high availability for my app" (App Service and Functions resources only)
- "Check disaster recovery readiness"
- "Improve my Functions app's resilience"
- "Improve my app's resilience" (App Service and Functions resources only)

> **Scope note:** This skill currently covers **Azure Functions** only. If the user asks about Azure App Service or Azure Container Apps reliability, acknowledge that support is planned but not yet available, and only proceed with the parts that apply to Functions resources in scope.
> **Scope note:** This skill currently covers **Azure Functions and Azure App Service** only. If the user asks about Azure Container Apps reliability, acknowledge that support is planned but not yet available, and only proceed with the parts that apply to App Service and Functions resources in scope.

## Prerequisites

Expand Down Expand Up @@ -79,12 +82,12 @@ Two-step assessment: **platform-level discovery first, then per-service deep div

**Step 2 — Per-service deep dive.** For each compute resource discovered in Step 1, load the matching service reference. The service reference is the single source of truth for that service's plan/SKU rules, assessment queries, CLI commands, IaC patches (Bicep + Terraform + AVM), and reporting hints.

This skill version ships **only the Azure Functions** per-service reference. Other compute services are listed below explicitly so the dispatch logic is unambiguous: if a resource matches an unsupported row, do **not** attempt to load a reference, fabricate CLI commands, or generate IaC patches for it.
This skill version ships **only the Azure Functions and App Service** per-service references. Other compute services are listed below explicitly so the dispatch logic is unambiguous: if a resource matches an unsupported row, do **not** attempt to load a reference, fabricate CLI commands, or generate IaC patches for it.

| Service detected | Reference |
|---|---|
| Azure Functions (`microsoft.web/serverfarms` with `kind contains 'functionapp'`) | [references/services/functions/reliability.md](references/services/functions/reliability.md) |
| Azure App Service (non-Functions sites: `microsoft.web/sites` without `kind contains 'functionapp'`, `microsoft.web/serverfarms` without `kind contains 'functionapp'`) | ⚪ Not yet shipped — planned for a future version |
| Azure App Service (non-Functions sites: `microsoft.web/sites` without `kind contains 'functionapp'`, `microsoft.web/serverfarms` without `kind contains 'functionapp'`) | [references/services/app-service/reliability.md](references/services/app-service/reliability.md) |
| Azure Container Apps (`microsoft.app/containerapps`, `microsoft.app/managedenvironments`) | ⚪ Not yet shipped — planned for a future version |

> **Handling unsupported services:** If a resource matches an unsupported row above, surface it in the discovery summary, mark it as `⚪ not assessed (planned)` in the Phase 3 table, and skip the per-service remediation steps for it. Do **not** attempt to fabricate CLI commands or IaC patches for those services.
Expand All @@ -98,16 +101,18 @@ Present findings as a **feature-pivoted** table: one row per reliability feature
─────────────────────────────────────────────────────────────────────────────────────────────
Reliability Feature Status Resources
─────────────────────────────────────────────────────────────────────────────────────────────
Zone redundancy — compute 🔴 OFF • plan-ii5trxva2ark4 (FC1)
Zone redundancy — compute 🔴 OFF • plan-web-ii5trxva2ark4 (P1v3)
• plan-ii5trxva2ark4 (FC1)

Zone-redundant storage 🔴 GRS • stii5trxva2ark4 (defaulted; no SKU set in IaC)

Health probes 🔴 OFF • func-api-ii5trxva2ark4 — needs code change (FC1)
• app-web-ii5trxva2ark4 — no health check path

Multi-region failover 🔴 OFF • Single region (eastus) only — Front Door not configured
─────────────────────────────────────────────────────────────────────────────────────────────

Want me to fix the 🔴 items? I'll do the quick wins first (Function App
Want me to fix the 🔴 items? I'll do the quick wins first (App
plan zone redundancy + health checks on supported plans), then ask before
storage migration and multi-region setup. (yes/no)
```
Expand Down Expand Up @@ -171,13 +176,14 @@ The exact CLI commands per service live in the per-service references — pick t
| Fix | Reference |
|---|---|
| Enable zone redundancy / configure health probes (Functions) | [references/services/functions/reliability.md](references/services/functions/reliability.md) |
| Enable zone redundancy / configure health probes (App Service) | [references/services/app-service/reliability.md](references/services/app-service/reliability.md) |
| Upgrade storage replication (cross-service) | [references/configure-storage.md](references/configure-storage.md) |
| Set up multi-region (cross-service) | [references/configure-multi-region.md](references/configure-multi-region.md) |
| Platform overview / verification | [references/configure-zone-redundancy.md](references/configure-zone-redundancy.md), [references/configure-health-probes.md](references/configure-health-probes.md) |

**Execution order — always quick wins first:**

1. **Zone redundancy on compute** (fast, in-place property update on the Function App's plan).
1. **Zone redundancy on compute** (fast, in-place property update on the App's plan).
2. **Health probes** (Premium / Dedicated only — in-place; for FC1 / Consumption, follow the consent gate in [configure-health-probes.md](references/configure-health-probes.md)).
3. **Verify** the compute changes succeeded before doing anything else.
4. **⛔ STOP — Ask about storage upgrade.** Compute is now zone-redundant, but storage may still be LRS or GRS. Ask the user explicitly:
Expand Down Expand Up @@ -220,9 +226,9 @@ Update the user's Bicep or Terraform files so reliability settings are persisten

| Fix | Risk Level | What Happens |
|-----|-----------|--------------|
| Zone redundancy (Function App plan) | 🟢 Safe patch | In-place property update on next deploy |
| Zone redundancy (App plan) | 🟢 Safe patch | In-place property update on next deploy |
| Storage LRS → ZRS | 🟡 Pre-migration required | Live storage migration must complete before the IaC SKU change can deploy. **Never bundle with safe patches** — use the two-deploy flow in Steps 3–5. |
| Health check path (Premium / Dedicated) | 🟢 Safe patch | In-place update, but causes app restart |
| Health check path (Basic/Standard/Premium / Dedicated) | 🟢 Safe patch | In-place update, but causes app restart |
| Health check path (FC1 / Consumption) | ⚪ Code-only — ask first | `healthCheckPath` is unsupported. Adding a health endpoint requires adding an HTTP-triggered `/api/health` function to **app code**. **Always ask the user for explicit consent before touching source code.** Do **not** patch IaC. |

**Step 3: Apply patches in two deploys (quick wins first)**
Expand All @@ -234,9 +240,9 @@ The IaC patching framework (detection, AVM-module guidance, deploy-order rule, s
| Bicep | [references/iac-patching-bicep.md](references/iac-patching-bicep.md) |
| Terraform | [references/iac-patching-terraform.md](references/iac-patching-terraform.md) |

The actual **per-service compute patches** (Function App plan ZR, etc.) live in the per-service references — load the matching service file from Phase 2 for the exact Bicep / Terraform / AVM snippets. Only Azure Functions has a per-service reference in this skill version; non-Functions compute (App Service / Container Apps) is out of scope.
The actual **per-service compute patches** (Function App plan ZR, App Service Plan ZR, etc.) live in the per-service references — load the matching service file from Phase 2 for the exact Bicep / Terraform / AVM snippets. Only Azure Functions and App Service have per-service references in this skill version; Container Apps is out of scope.

**Deploy 1 — Quick wins only.** Patch the 🟢 Safe items (zone redundancy on the Function App plan, health probes on Premium / Dedicated). Do **NOT** include the storage SKU patch in this deploy.
**Deploy 1 — Quick wins only.** Patch the 🟢 Safe items (zone redundancy on the App Service/Function App plan, health probes on Basic/Standard/Premium / Dedicated). Do **NOT** include the storage SKU patch in this deploy.

After patching, **the skill runs the deploy itself** (do not stop and tell the user to run it). Detect the deployment tool and confirm once before executing:

Expand Down Expand Up @@ -306,15 +312,17 @@ After changes are applied (CLI) or deployed (IaC), automatically re-run the asse
Reliability Feature Status Resources
───────────────────────────────────────────────────────────────────────────────────────
Zone redundancy — compute 🟢 ON • plan-ii5trxva2ark4 (FC1) — now ON
• plan-web-ii5trxva2ark4 (P1v3) — now ON

Zone-redundant storage 🟢 ZRS • stii5trxva2ark4 — GRS → ZRS

Health probes 🔴 OFF • func-api-ii5trxva2ark4 — still off (FC1, code change declined)
Health probes 🟡 PARTIAL • func-api-ii5trxva2ark4 — still off (FC1, code change declined)
• app-web-ii5trxva2ark4 — now ON

Multi-region failover 🔴 OFF • Single region (eastus) only
───────────────────────────────────────────────────────────────────────────────────────

What changed: Function App plan zone redundancy and storage replication.
What changed: Function App and App Service plan zone redundancy, storage replication and health probes on App Service.
(Multi-region offered next — see Step 3.)
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@

| Service | Mechanism | Where |
|---|---|---|
| App Service (Basic / Standard / Premium / Dedicated) | `siteConfig.healthCheckPath` (platform health check) | [services/app-service/reliability.md](services/app-service/reliability.md) |
| Functions Premium / Dedicated | `siteConfig.healthCheckPath` (platform health check) | [services/functions/reliability.md](services/functions/reliability.md) |
| Functions Flex Consumption (FC1) / Consumption (Y1) | HTTP-triggered `/api/health` function in **app code** — `healthCheckPath` is unsupported | [services/functions/reliability.md](services/functions/reliability.md) |
| Azure Front Door | `healthProbeSettings` on origin group | [health-probe-checks.md](health-probe-checks.md) |
| Traffic Manager | `monitorConfig` on profile | [health-probe-checks.md](health-probe-checks.md) |

> App Service (`siteConfig.healthCheckPath`) and Container Apps (`liveness` / `readiness` probes) deep-dive references are planned for a future version of this skill but are not yet shipped.
> Container Apps (`liveness` / `readiness` probes) deep-dive references are planned for a future version of this skill but are not yet shipped.

## ⛔ STOP — Code-only fixes require user consent

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ The `az` CLI commands, plan-upgrade paths, blue/green migration steps, and verif

| Service | Reference |
|---|---|
| Azure App Service (P1v2+, P0v3+, P0v4+, ASEv3) | [services/app-service/reliability.md](services/app-service/reliability.md) |
| Azure Functions (FC1, EP1–EP3) | [services/functions/reliability.md](services/functions/reliability.md) |

## Verification
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,14 @@ If the project uses **Azure Verified Modules** (`br/public:avm/res/...`), the pa

## Per-service Bicep patches

The patches for compute (zone redundancy on the Function App plan, health check path) live in the per-service references because the SKU rules and ARM types differ:
The patches for compute (zone redundancy on the App Service plan or Function App plan, health check path) live in the per-service references because the SKU rules and ARM types differ:

| Service | Reference |
|---|---|
| Azure App Service | [services/app-service/reliability.md](services/app-service/reliability.md) |
| Azure Functions | [services/functions/reliability.md](services/functions/reliability.md) |

> Azure App Service and Azure Container Apps per-service Bicep patches are planned for a future version of this skill.
> Azure Container Apps per-service Bicep patches are planned for a future version of this skill.

The one truly cross-service patch — **storage** — lives below.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,11 @@ Resource definitions may be in module files. Search all `.tf` files for the reso

## Per-service Terraform patches

The patches for compute (zone redundancy on the Function App plan, health check path) live in the per-service references because the SKU rules and resource types differ:
The patches for compute (zone redundancy on the App Service Plans / environments, Function App plan, health check path) live in the per-service references because the SKU rules and resource types differ:

| Service | Reference |
|---|---|
| Azure App Service | [services/app-service/reliability.md](services/app-service/reliability.md) |
| Azure Functions | [services/functions/reliability.md](services/functions/reliability.md) |

> Azure App Service and Azure Container Apps per-service Terraform patches are planned for a future version of this skill.
Expand Down
Loading