[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-amg-check-cosmosdb-mongo-ru":3,"mdc-exi12n-key":37,"related-repo-azure-amg-check-cosmosdb-mongo-ru":1658,"related-org-azure-amg-check-cosmosdb-mongo-ru":1726},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":27,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"amg-check-cosmosdb-mongo-ru","monitor Cosmos DB for MongoDB health","Fleet-wide Cosmos DB for MongoDB (RU) health check — scans NormalizedRU consumption, service availability, server-side latency, throttling (429s), and replication metrics across all accounts, then deep-dives into abnormal accounts with resource logs and correlation analysis. Tracks known issues across sessions via persistent report. Uses AMG-MCP pulse check for Tier 1 triage, then batched Azure Monitor queries for Tier 2 investigation. On first run, auto-discovers datasource UID and prompts for subscription ID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,17,18,21,24],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"Cosmos DB","cosmos-db",{"name":22,"slug":23,"type":16},"MongoDB","mongodb",{"name":25,"slug":26,"type":16},"Monitoring","monitoring",2,"https:\u002F\u002Fgithub.com\u002FAzure\u002Famg-skills","2026-07-12T08:19:56.052424",null,[],{"repoUrl":28,"stars":27,"forks":27,"topics":33,"description":34},[],"Agent skills for Azure Managed Grafana","https:\u002F\u002Fgithub.com\u002FAzure\u002Famg-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Famg-toolkit\u002Fskills\u002Famg-check-cosmosdb-mongo-ru","---\nname: amg-check-cosmosdb-mongo-ru\ndescription: Fleet-wide Cosmos DB for MongoDB (RU) health check — scans NormalizedRU consumption, service availability, server-side latency, throttling (429s), and replication metrics across all accounts, then deep-dives into abnormal accounts with resource logs and correlation analysis. Tracks known issues across sessions via persistent report. Uses AMG-MCP pulse check for Tier 1 triage, then batched Azure Monitor queries for Tier 2 investigation. On first run, auto-discovers datasource UID and prompts for subscription ID.\nargument-hint: \"[time-range, e.g. 7d, 1d, 3d] [subscription-id]\"\ndisable-model-invocation: true\neffort: max\nallowed-tools: mcp__amg__amgmcp_pulse_check mcp__amg__amgmcp_query_resource_graph mcp__amg__amgmcp_query_resource_metric mcp__amg__amgmcp_query_resource_metric_definition mcp__amg__amgmcp_query_resource_log mcp__amg__amgmcp_datasource_list mcp__amg__amgmcp_query_activity_log Bash(node *) Glob Read Write Edit\n---\n\n## Runtime Context\n- Current UTC time: !`date -u +%Y-%m-%dT%H:%M:%SZ`\n- Config: !`cat memory\u002Famg-check-cosmosdb-mongo-ru\u002Fconfig.md 2>\u002Fdev\u002Fnull || echo \"NOT_CONFIGURED\"`\n- Prior report: !`[ -f memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md ] && echo \"exists ($(grep -c '^### BUG-' memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md) bugs documented)\" || echo \"not found\"`\n- Arguments: time-range=$0, subscription-override=$1\n\n> **Known Issues**: Before presenting findings, cross-reference results against `memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md`.\n\n# Cosmos DB for MongoDB (RU) Health Check\n\n## Critical Constraints\n\n- **No subagents for MCP.** The Agent tool cannot access MCP tools — all MCP calls must be made from the main context.\n- **Scan every resource.** No sampling or early stopping.\n- **Time format**: ISO 8601 UTC with explicit `from`\u002F`to` — NEVER use `timespan` (it causes errors).\n- **Safe interval**: Always use `PT1H` — it works for all Cosmos DB metrics. `PT6H` is NOT supported. `DataUsage`, `IndexUsage`, and `DocumentCount` do NOT support `P1D`.\n- **Parallelism cap**: 30 concurrent MCP calls per batch. Reduce to 4-5 if rate-limited.\n- **Result too large**: Save to temp file and parse outside the context window. Prefer `node -e \"...\"` if installed; otherwise fall back to `python -c \"...\"`, `jq`, or `pwsh -Command \"...\"`. Bash permission for the chosen interpreter will be prompted on first use.\n\n## Progress Tracking\n\nUpdate checkboxes as you complete each phase:\n\n- [ ] Phase 1a: Datasource validated\n- [ ] Phase 1b: Accounts discovered (N=?)\n- [ ] Phase 1c: Non-succeeded accounts investigated (if any)\n- [ ] Phase 2: Metric definitions validated\n- [ ] Phase 3: Pulse check completed (N scanned, N findings)\n- [ ] Phase 4: Deep metrics for abnormal accounts\n- [ ] Phase 5: Resource logs for abnormal accounts\n- [ ] Report presented\n- [ ] Known issues updated in `memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md`\n\n## Configuration\n\n**If Config shows `NOT_CONFIGURED`**: Run [First-Run Setup](#first-run-setup) at the bottom of this file, then return here.\n\n**If Config is populated**: Extract the datasource UID and subscription ID from the pre-loaded Runtime Context above and use them for all queries. Use `$1` as the subscription override if provided.\n\n- **Datasource UID**: from `## Azure Monitor Datasource` > `UID`\n- **Subscription ID**: from `## Subscription` (or `$1` if provided)\n- **Resource Type**: `microsoft.documentdb\u002Fdatabaseaccounts` (lowercase) with `kind == 'MongoDB'`\n\n## Time Range\n\nDefault: 7 days for metrics, 24 hours for logs. Override with `$0` (e.g., `3d`). Keep log queries to 1-2 days to avoid timeouts.\n\n---\n\n## Workflow\n\n### Phase 1a: Validate Datasource\n\nCall `amgmcp_datasource_list` (no parameters). Find entry with `type == \"grafana-azure-monitor-datasource\"`.\n\n- Matches configured UID → proceed.\n- Different UID → update `memory\u002Famg-check-cosmosdb-mongo-ru\u002Fconfig.md`, warn user, use new UID.\n- Not found → abort with error.\n\n### Phase 1b: Discover All Cosmos DB for MongoDB (RU) Accounts\n\n```\nazureMonitorDatasourceUid: {DATASOURCE_UID}\nquery: |\n  resources\n  | where type == 'microsoft.documentdb\u002Fdatabaseaccounts'\n  | where kind == 'MongoDB'\n  | project name, resourceGroup, location, subscriptionId, id, properties.provisioningState\n  | order by location asc, name asc\n```\n\nIf the config specifies subscription IDs (not \"all\"), add `| where subscriptionId in ('{ID1}', '{ID2}')`. Derive region summary by counting accounts per `location`. Flag accounts not in \"Succeeded\" state. Stop if zero accounts found.\n\n> **Why `kind == 'MongoDB'`?** Filters for RU-based MongoDB API accounts. vCore-based MongoDB uses `microsoft.documentdb\u002Fmongoclusters`.\n\n### Phase 1c: Activity Log for Non-Succeeded Accounts\n\nIf any accounts are not in \"Succeeded\" state, query the activity log for up to 3 of them:\n\n```\nazureMonitorDatasourceUid: {DATASOURCE_UID}\nscope: {account's full ARM resource ID}\nstartTime: now-3d\nendTime: now\nselect: eventTimestamp,operationName,status,caller,subStatus\n```\n\nIf the response exceeds 500 KB, retry with `startTime: now-1d`. Summarize: operations performed, caller type, success\u002Fin-progress status, likely cause.\n\n### Phase 2: Validate Available Metrics\n\nCall `amgmcp_query_resource_metric_definition` on the first account from Phase 1. Confirm expected metrics exist. Run only once — definitions are the same across all accounts.\n\n### Phase 3: Tier 1 — Fleet-Wide Pulse Check\n\n```\nazureMonitorDatasourceUid: {DATASOURCE_UID}\npastDays: 7\nscenarios: cosmosdb_mongo\n```\n\nScans all accounts across 3 scenarios: `cosmosdb_mongo_ru`, `cosmosdb_mongo_throttling`, `cosmosdb_mongo_availability`.\n\n**Before moving to Phase 4, verify:**\n1. `scanSummary.totalResourcesScanned` matches Phase 1 account count.\n2. All 3 scenarios show `status: \"completed\"` in `scenarioResults`.\n3. If `errors` non-empty, retry affected scenarios individually.\n4. If >10% accounts missing, fall back to batched `amgmcp_query_resource_metric` for unscanned accounts.\n\nAccounts in the `findings` array are abnormal. Also flag any non-Succeeded accounts from Phase 1.\n\n> **Note**: Sustained-high detection (>50% for 6+ hours), RU spike pattern detection (>30pp jump in 1h), and latency analysis require hourly time-series data and are performed in Phase 4 on flagged accounts only.\n\n### Phase 4: Tier 2 — Deep Metrics for Abnormal Accounts\n\nRead **[reference\u002Fphase4-deep-metrics.md](${CLAUDE_SKILL_DIR}\u002Freference\u002Fphase4-deep-metrics.md)** before starting Phase 4. It contains:\n- Response size management (critical — fleet-wide PT1H queries exceed 500 KB)\n- Fleet-wide triage strategy (when >50% accounts are flagged)\n- Core and secondary metrics tables\n- Batch strategy and correlation analysis patterns (use ultrathink)\n\n### Phase 5: Resource Logs for Abnormal Accounts\n\nRead **[reference\u002Fphase5-resource-logs.md](${CLAUDE_SKILL_DIR}\u002Freference\u002Fphase5-resource-logs.md)** before starting Phase 5. It contains:\n- 5 KQL query templates: throttling, high latency, request volume, top RU operations, error codes\n- Fallback table guidance (CDBDataPlaneRequests if CDBMongoRequests is empty)\n\n---\n\n## Output\n\nPresent the report using the structure in **[reference\u002Foutput-format.md](${CLAUDE_SKILL_DIR}\u002Freference\u002Foutput-format.md)**.\n\n**Classification:**\n\n| Severity | Criteria |\n|----------|----------|\n| **CRITICAL** | NormalizedRU = 100% sustained, OR ServiceAvailability \u003C 99.9%, OR latency avg > 50ms |\n| **HIGH** | NormalizedRU max 85-100% with frequent spikes, OR ReplicationLatency > 1000ms |\n| **WARNING** | NormalizedRU max 70-85% sustained, OR sustained RU > 50% for 6h+, OR RU spike >30pp in 1h, OR ServiceAvailability \u003C 99.99%, OR latency avg > 10ms, OR ReplicationLatency > 100ms |\n| **MODERATE** | NormalizedRU max 50-70% |\n| **HEALTHY** | All metrics within normal ranges (NormalizedRU \u003C 50%) |\n\n## Update Known Issues\n\nAfter presenting findings, update `memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md`:\n\n1. Read the current file.\n2. Rebuild the Resource Inventory table at the end: every account, full ARM ID, region, subscription, state. Group by region, sorted alphabetically.\n3. Update existing bug status from today's telemetry (resolved \u002F improving \u002F worsening \u002F still active).\n4. Add new bugs with: severity, account name, region, metric evidence, log evidence, root cause, recommended action.\n5. Update the \"Updated\" date header.\n\nOnly add genuine issues: sustained throttling, availability drops, high latency patterns, or replication problems. Skip transient single-hour spikes or expected maintenance windows.\n\n## Error Handling\n\nSee **[reference\u002Ferror-handling.md](${CLAUDE_SKILL_DIR}\u002Freference\u002Ferror-handling.md)** for the full recovery table.\n\n## Analysis Guidance\n\n- Known patterns, signals, root causes: [reference\u002Fanalysis-patterns.md](${CLAUDE_SKILL_DIR}\u002Freference\u002Fanalysis-patterns.md)\n- Optional deep-dive KQL queries: [reference\u002Fdeep-dive-queries.md](${CLAUDE_SKILL_DIR}\u002Freference\u002Fdeep-dive-queries.md)\n\n## Reference\n\n- Cosmos DB resource type: `microsoft.documentdb\u002Fdatabaseaccounts` (kind: `MongoDB`)\n- vCore resource type (different): `microsoft.documentdb\u002Fmongoclusters`\n- Latency metrics: `ServerSideLatencyDirect` and `ServerSideLatencyGateway` (the old `ServerSideLatency` is deprecated)\n- Resource log tables: `CDBMongoRequests` (primary), `CDBDataPlaneRequests` (fallback)\n- Key error codes: `429` \u002F `16500` (throttling), `50` (server error), `13` (unauthorized)\n- Safe metric interval: `PT1H` for all metrics (PT6H NOT supported)\n- Known issues: `memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md`\n- User config: `memory\u002Famg-check-cosmosdb-mongo-ru\u002Fconfig.md`\n\n---\n\n## First-Run Setup\n\nRun only when Config shows `NOT_CONFIGURED`. After completing, return to the [Workflow](#workflow) above.\n\n**1. Discover Datasource UID**: Call `amgmcp_datasource_list`. Filter `type == \"grafana-azure-monitor-datasource\"`. Prefer `uid == \"azure-monitor-oob\"` if multiple match. Abort if zero match.\n\n**2. Discover Subscription ID**: Run this Resource Graph query to list all subscriptions with Cosmos DB for MongoDB (RU) accounts, then present the results as a table and ask the user which subscription(s) to use:\n```\nresources\n| where type == 'microsoft.documentdb\u002Fdatabaseaccounts'\n| where kind == 'MongoDB'\n| join kind=inner (\n    resourcecontainers\n    | where type == 'microsoft.resources\u002Fsubscriptions'\n    | project subscriptionId, subscriptionName=name\n) on subscriptionId\n| summarize AccountCount=count() by subscriptionId, subscriptionName\n| order by AccountCount desc\n```\n\nPresent the results as a table with columns: **Subscription Name**, **Subscription ID**, **Account Count**. Then ask the user: *\"Which subscription ID(s) should I configure for this health check? Or type 'all' to scan all subscriptions.\"*\n\n**3. Write config**: Write `memory\u002Famg-check-cosmosdb-mongo-ru\u002Fconfig.md`:\n```markdown\n# amg-check-cosmosdb-mongo-ru Configuration\n\nUser-specific values for the Cosmos DB for MongoDB (RU) health check skill.\nThis file is auto-generated on first run and can be edited manually.\n\n## Azure Monitor Datasource\n- **UID**: {discovered_uid}\n- **Name**: {discovered_name}\n\n## Subscription\n- {subscription_id_or_\"all\"}\n```\n\n**4. Confirm**: Show the resolved config and ask for confirmation before proceeding.\n",{"data":38,"body":43},{"name":4,"description":6,"argument-hint":39,"disable-model-invocation":40,"effort":41,"allowed-tools":42},"[time-range, e.g. 7d, 1d, 3d] [subscription-id]",true,"max","mcp__amg__amgmcp_pulse_check mcp__amg__amgmcp_query_resource_graph mcp__amg__amgmcp_query_resource_metric mcp__amg__amgmcp_query_resource_metric_definition mcp__amg__amgmcp_query_resource_log mcp__amg__amgmcp_datasource_list mcp__amg__amgmcp_query_activity_log Bash(node *) Glob Read Write Edit",{"type":44,"children":45},"root",[46,55,99,123,130,136,301,307,312,406,412,437,455,530,536,557,561,567,574,594,620,626,638,659,686,692,697,706,719,725,737,743,752,778,786,847,860,873,879,895,918,924,939,952,955,961,976,984,1092,1098,1110,1138,1143,1149,1165,1171,1196,1202,1353,1356,1361,1380,1412,1422,1431,1460,1476,1642,1652],{"type":47,"tag":48,"props":49,"children":51},"element","h2",{"id":50},"runtime-context",[52],{"type":53,"value":54},"text","Runtime Context",{"type":47,"tag":56,"props":57,"children":58},"ul",{},[59,72,83,94],{"type":47,"tag":60,"props":61,"children":62},"li",{},[63,65],{"type":53,"value":64},"Current UTC time: !",{"type":47,"tag":66,"props":67,"children":69},"code",{"className":68},[],[70],{"type":53,"value":71},"date -u +%Y-%m-%dT%H:%M:%SZ",{"type":47,"tag":60,"props":73,"children":74},{},[75,77],{"type":53,"value":76},"Config: !",{"type":47,"tag":66,"props":78,"children":80},{"className":79},[],[81],{"type":53,"value":82},"cat memory\u002Famg-check-cosmosdb-mongo-ru\u002Fconfig.md 2>\u002Fdev\u002Fnull || echo \"NOT_CONFIGURED\"",{"type":47,"tag":60,"props":84,"children":85},{},[86,88],{"type":53,"value":87},"Prior report: !",{"type":47,"tag":66,"props":89,"children":91},{"className":90},[],[92],{"type":53,"value":93},"[ -f memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md ] && echo \"exists ($(grep -c '^### BUG-' memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md) bugs documented)\" || echo \"not found\"",{"type":47,"tag":60,"props":95,"children":96},{},[97],{"type":53,"value":98},"Arguments: time-range=$0, subscription-override=$1",{"type":47,"tag":100,"props":101,"children":102},"blockquote",{},[103],{"type":47,"tag":104,"props":105,"children":106},"p",{},[107,113,115,121],{"type":47,"tag":108,"props":109,"children":110},"strong",{},[111],{"type":53,"value":112},"Known Issues",{"type":53,"value":114},": Before presenting findings, cross-reference results against ",{"type":47,"tag":66,"props":116,"children":118},{"className":117},[],[119],{"type":53,"value":120},"memory\u002Famg-check-cosmosdb-mongo-ru\u002Freport.md",{"type":53,"value":122},".",{"type":47,"tag":124,"props":125,"children":127},"h1",{"id":126},"cosmos-db-for-mongodb-ru-health-check",[128],{"type":53,"value":129},"Cosmos DB for MongoDB (RU) Health Check",{"type":47,"tag":48,"props":131,"children":133},{"id":132},"critical-constraints",[134],{"type":53,"value":135},"Critical Constraints",{"type":47,"tag":56,"props":137,"children":138},{},[139,149,159,193,250,260],{"type":47,"tag":60,"props":140,"children":141},{},[142,147],{"type":47,"tag":108,"props":143,"children":144},{},[145],{"type":53,"value":146},"No subagents for MCP.",{"type":53,"value":148}," The Agent tool cannot access MCP tools — all MCP calls must be made from the main context.",{"type":47,"tag":60,"props":150,"children":151},{},[152,157],{"type":47,"tag":108,"props":153,"children":154},{},[155],{"type":53,"value":156},"Scan every resource.",{"type":53,"value":158}," No sampling or early stopping.",{"type":47,"tag":60,"props":160,"children":161},{},[162,167,169,175,177,183,185,191],{"type":47,"tag":108,"props":163,"children":164},{},[165],{"type":53,"value":166},"Time format",{"type":53,"value":168},": ISO 8601 UTC with explicit ",{"type":47,"tag":66,"props":170,"children":172},{"className":171},[],[173],{"type":53,"value":174},"from",{"type":53,"value":176},"\u002F",{"type":47,"tag":66,"props":178,"children":180},{"className":179},[],[181],{"type":53,"value":182},"to",{"type":53,"value":184}," — NEVER use ",{"type":47,"tag":66,"props":186,"children":188},{"className":187},[],[189],{"type":53,"value":190},"timespan",{"type":53,"value":192}," (it causes errors).",{"type":47,"tag":60,"props":194,"children":195},{},[196,201,203,209,211,217,219,225,227,233,235,241,243,249],{"type":47,"tag":108,"props":197,"children":198},{},[199],{"type":53,"value":200},"Safe interval",{"type":53,"value":202},": Always use ",{"type":47,"tag":66,"props":204,"children":206},{"className":205},[],[207],{"type":53,"value":208},"PT1H",{"type":53,"value":210}," — it works for all Cosmos DB metrics. ",{"type":47,"tag":66,"props":212,"children":214},{"className":213},[],[215],{"type":53,"value":216},"PT6H",{"type":53,"value":218}," is NOT supported. ",{"type":47,"tag":66,"props":220,"children":222},{"className":221},[],[223],{"type":53,"value":224},"DataUsage",{"type":53,"value":226},", ",{"type":47,"tag":66,"props":228,"children":230},{"className":229},[],[231],{"type":53,"value":232},"IndexUsage",{"type":53,"value":234},", and ",{"type":47,"tag":66,"props":236,"children":238},{"className":237},[],[239],{"type":53,"value":240},"DocumentCount",{"type":53,"value":242}," do NOT support ",{"type":47,"tag":66,"props":244,"children":246},{"className":245},[],[247],{"type":53,"value":248},"P1D",{"type":53,"value":122},{"type":47,"tag":60,"props":251,"children":252},{},[253,258],{"type":47,"tag":108,"props":254,"children":255},{},[256],{"type":53,"value":257},"Parallelism cap",{"type":53,"value":259},": 30 concurrent MCP calls per batch. Reduce to 4-5 if rate-limited.",{"type":47,"tag":60,"props":261,"children":262},{},[263,268,270,276,278,284,285,291,293,299],{"type":47,"tag":108,"props":264,"children":265},{},[266],{"type":53,"value":267},"Result too large",{"type":53,"value":269},": Save to temp file and parse outside the context window. Prefer ",{"type":47,"tag":66,"props":271,"children":273},{"className":272},[],[274],{"type":53,"value":275},"node -e \"...\"",{"type":53,"value":277}," if installed; otherwise fall back to ",{"type":47,"tag":66,"props":279,"children":281},{"className":280},[],[282],{"type":53,"value":283},"python -c \"...\"",{"type":53,"value":226},{"type":47,"tag":66,"props":286,"children":288},{"className":287},[],[289],{"type":53,"value":290},"jq",{"type":53,"value":292},", or ",{"type":47,"tag":66,"props":294,"children":296},{"className":295},[],[297],{"type":53,"value":298},"pwsh -Command \"...\"",{"type":53,"value":300},". Bash permission for the chosen interpreter will be prompted on first use.",{"type":47,"tag":48,"props":302,"children":304},{"id":303},"progress-tracking",[305],{"type":53,"value":306},"Progress Tracking",{"type":47,"tag":104,"props":308,"children":309},{},[310],{"type":53,"value":311},"Update checkboxes as you complete each phase:",{"type":47,"tag":56,"props":313,"children":316},{"className":314},[315],"contains-task-list",[317,329,338,347,356,365,374,383,392],{"type":47,"tag":60,"props":318,"children":321},{"className":319},[320],"task-list-item",[322,327],{"type":47,"tag":323,"props":324,"children":326},"input",{"disabled":40,"type":325},"checkbox",[],{"type":53,"value":328}," Phase 1a: Datasource validated",{"type":47,"tag":60,"props":330,"children":332},{"className":331},[320],[333,336],{"type":47,"tag":323,"props":334,"children":335},{"disabled":40,"type":325},[],{"type":53,"value":337}," Phase 1b: Accounts discovered (N=?)",{"type":47,"tag":60,"props":339,"children":341},{"className":340},[320],[342,345],{"type":47,"tag":323,"props":343,"children":344},{"disabled":40,"type":325},[],{"type":53,"value":346}," Phase 1c: Non-succeeded accounts investigated (if any)",{"type":47,"tag":60,"props":348,"children":350},{"className":349},[320],[351,354],{"type":47,"tag":323,"props":352,"children":353},{"disabled":40,"type":325},[],{"type":53,"value":355}," Phase 2: Metric definitions validated",{"type":47,"tag":60,"props":357,"children":359},{"className":358},[320],[360,363],{"type":47,"tag":323,"props":361,"children":362},{"disabled":40,"type":325},[],{"type":53,"value":364}," Phase 3: Pulse check completed (N scanned, N findings)",{"type":47,"tag":60,"props":366,"children":368},{"className":367},[320],[369,372],{"type":47,"tag":323,"props":370,"children":371},{"disabled":40,"type":325},[],{"type":53,"value":373}," Phase 4: Deep metrics for abnormal accounts",{"type":47,"tag":60,"props":375,"children":377},{"className":376},[320],[378,381],{"type":47,"tag":323,"props":379,"children":380},{"disabled":40,"type":325},[],{"type":53,"value":382}," Phase 5: Resource logs for abnormal accounts",{"type":47,"tag":60,"props":384,"children":386},{"className":385},[320],[387,390],{"type":47,"tag":323,"props":388,"children":389},{"disabled":40,"type":325},[],{"type":53,"value":391}," Report presented",{"type":47,"tag":60,"props":393,"children":395},{"className":394},[320],[396,399,401],{"type":47,"tag":323,"props":397,"children":398},{"disabled":40,"type":325},[],{"type":53,"value":400}," Known issues updated in ",{"type":47,"tag":66,"props":402,"children":404},{"className":403},[],[405],{"type":53,"value":120},{"type":47,"tag":48,"props":407,"children":409},{"id":408},"configuration",[410],{"type":53,"value":411},"Configuration",{"type":47,"tag":104,"props":413,"children":414},{},[415,426,428,435],{"type":47,"tag":108,"props":416,"children":417},{},[418,420],{"type":53,"value":419},"If Config shows ",{"type":47,"tag":66,"props":421,"children":423},{"className":422},[],[424],{"type":53,"value":425},"NOT_CONFIGURED",{"type":53,"value":427},": Run ",{"type":47,"tag":429,"props":430,"children":432},"a",{"href":431},"#first-run-setup",[433],{"type":53,"value":434},"First-Run Setup",{"type":53,"value":436}," at the bottom of this file, then return here.",{"type":47,"tag":104,"props":438,"children":439},{},[440,445,447,453],{"type":47,"tag":108,"props":441,"children":442},{},[443],{"type":53,"value":444},"If Config is populated",{"type":53,"value":446},": Extract the datasource UID and subscription ID from the pre-loaded Runtime Context above and use them for all queries. Use ",{"type":47,"tag":66,"props":448,"children":450},{"className":449},[],[451],{"type":53,"value":452},"$1",{"type":53,"value":454}," as the subscription override if provided.",{"type":47,"tag":56,"props":456,"children":457},{},[458,482,506],{"type":47,"tag":60,"props":459,"children":460},{},[461,466,468,474,476],{"type":47,"tag":108,"props":462,"children":463},{},[464],{"type":53,"value":465},"Datasource UID",{"type":53,"value":467},": from ",{"type":47,"tag":66,"props":469,"children":471},{"className":470},[],[472],{"type":53,"value":473},"## Azure Monitor Datasource",{"type":53,"value":475}," > ",{"type":47,"tag":66,"props":477,"children":479},{"className":478},[],[480],{"type":53,"value":481},"UID",{"type":47,"tag":60,"props":483,"children":484},{},[485,490,491,497,499,504],{"type":47,"tag":108,"props":486,"children":487},{},[488],{"type":53,"value":489},"Subscription ID",{"type":53,"value":467},{"type":47,"tag":66,"props":492,"children":494},{"className":493},[],[495],{"type":53,"value":496},"## Subscription",{"type":53,"value":498}," (or ",{"type":47,"tag":66,"props":500,"children":502},{"className":501},[],[503],{"type":53,"value":452},{"type":53,"value":505}," if provided)",{"type":47,"tag":60,"props":507,"children":508},{},[509,514,516,522,524],{"type":47,"tag":108,"props":510,"children":511},{},[512],{"type":53,"value":513},"Resource Type",{"type":53,"value":515},": ",{"type":47,"tag":66,"props":517,"children":519},{"className":518},[],[520],{"type":53,"value":521},"microsoft.documentdb\u002Fdatabaseaccounts",{"type":53,"value":523}," (lowercase) with ",{"type":47,"tag":66,"props":525,"children":527},{"className":526},[],[528],{"type":53,"value":529},"kind == 'MongoDB'",{"type":47,"tag":48,"props":531,"children":533},{"id":532},"time-range",[534],{"type":53,"value":535},"Time Range",{"type":47,"tag":104,"props":537,"children":538},{},[539,541,547,549,555],{"type":53,"value":540},"Default: 7 days for metrics, 24 hours for logs. Override with ",{"type":47,"tag":66,"props":542,"children":544},{"className":543},[],[545],{"type":53,"value":546},"$0",{"type":53,"value":548}," (e.g., ",{"type":47,"tag":66,"props":550,"children":552},{"className":551},[],[553],{"type":53,"value":554},"3d",{"type":53,"value":556},"). Keep log queries to 1-2 days to avoid timeouts.",{"type":47,"tag":558,"props":559,"children":560},"hr",{},[],{"type":47,"tag":48,"props":562,"children":564},{"id":563},"workflow",[565],{"type":53,"value":566},"Workflow",{"type":47,"tag":568,"props":569,"children":571},"h3",{"id":570},"phase-1a-validate-datasource",[572],{"type":53,"value":573},"Phase 1a: Validate Datasource",{"type":47,"tag":104,"props":575,"children":576},{},[577,579,585,587,593],{"type":53,"value":578},"Call ",{"type":47,"tag":66,"props":580,"children":582},{"className":581},[],[583],{"type":53,"value":584},"amgmcp_datasource_list",{"type":53,"value":586}," (no parameters). Find entry with ",{"type":47,"tag":66,"props":588,"children":590},{"className":589},[],[591],{"type":53,"value":592},"type == \"grafana-azure-monitor-datasource\"",{"type":53,"value":122},{"type":47,"tag":56,"props":595,"children":596},{},[597,602,615],{"type":47,"tag":60,"props":598,"children":599},{},[600],{"type":53,"value":601},"Matches configured UID → proceed.",{"type":47,"tag":60,"props":603,"children":604},{},[605,607,613],{"type":53,"value":606},"Different UID → update ",{"type":47,"tag":66,"props":608,"children":610},{"className":609},[],[611],{"type":53,"value":612},"memory\u002Famg-check-cosmosdb-mongo-ru\u002Fconfig.md",{"type":53,"value":614},", warn user, use new UID.",{"type":47,"tag":60,"props":616,"children":617},{},[618],{"type":53,"value":619},"Not found → abort with error.",{"type":47,"tag":568,"props":621,"children":623},{"id":622},"phase-1b-discover-all-cosmos-db-for-mongodb-ru-accounts",[624],{"type":53,"value":625},"Phase 1b: Discover All Cosmos DB for MongoDB (RU) Accounts",{"type":47,"tag":627,"props":628,"children":632},"pre",{"className":629,"code":631,"language":53},[630],"language-text","azureMonitorDatasourceUid: {DATASOURCE_UID}\nquery: |\n  resources\n  | where type == 'microsoft.documentdb\u002Fdatabaseaccounts'\n  | where kind == 'MongoDB'\n  | project name, resourceGroup, location, subscriptionId, id, properties.provisioningState\n  | order by location asc, name asc\n",[633],{"type":47,"tag":66,"props":634,"children":636},{"__ignoreMap":635},"",[637],{"type":53,"value":631},{"type":47,"tag":104,"props":639,"children":640},{},[641,643,649,651,657],{"type":53,"value":642},"If the config specifies subscription IDs (not \"all\"), add ",{"type":47,"tag":66,"props":644,"children":646},{"className":645},[],[647],{"type":53,"value":648},"| where subscriptionId in ('{ID1}', '{ID2}')",{"type":53,"value":650},". Derive region summary by counting accounts per ",{"type":47,"tag":66,"props":652,"children":654},{"className":653},[],[655],{"type":53,"value":656},"location",{"type":53,"value":658},". Flag accounts not in \"Succeeded\" state. Stop if zero accounts found.",{"type":47,"tag":100,"props":660,"children":661},{},[662],{"type":47,"tag":104,"props":663,"children":664},{},[665,677,679,685],{"type":47,"tag":108,"props":666,"children":667},{},[668,670,675],{"type":53,"value":669},"Why ",{"type":47,"tag":66,"props":671,"children":673},{"className":672},[],[674],{"type":53,"value":529},{"type":53,"value":676},"?",{"type":53,"value":678}," Filters for RU-based MongoDB API accounts. vCore-based MongoDB uses ",{"type":47,"tag":66,"props":680,"children":682},{"className":681},[],[683],{"type":53,"value":684},"microsoft.documentdb\u002Fmongoclusters",{"type":53,"value":122},{"type":47,"tag":568,"props":687,"children":689},{"id":688},"phase-1c-activity-log-for-non-succeeded-accounts",[690],{"type":53,"value":691},"Phase 1c: Activity Log for Non-Succeeded Accounts",{"type":47,"tag":104,"props":693,"children":694},{},[695],{"type":53,"value":696},"If any accounts are not in \"Succeeded\" state, query the activity log for up to 3 of them:",{"type":47,"tag":627,"props":698,"children":701},{"className":699,"code":700,"language":53},[630],"azureMonitorDatasourceUid: {DATASOURCE_UID}\nscope: {account's full ARM resource ID}\nstartTime: now-3d\nendTime: now\nselect: eventTimestamp,operationName,status,caller,subStatus\n",[702],{"type":47,"tag":66,"props":703,"children":704},{"__ignoreMap":635},[705],{"type":53,"value":700},{"type":47,"tag":104,"props":707,"children":708},{},[709,711,717],{"type":53,"value":710},"If the response exceeds 500 KB, retry with ",{"type":47,"tag":66,"props":712,"children":714},{"className":713},[],[715],{"type":53,"value":716},"startTime: now-1d",{"type":53,"value":718},". Summarize: operations performed, caller type, success\u002Fin-progress status, likely cause.",{"type":47,"tag":568,"props":720,"children":722},{"id":721},"phase-2-validate-available-metrics",[723],{"type":53,"value":724},"Phase 2: Validate Available Metrics",{"type":47,"tag":104,"props":726,"children":727},{},[728,729,735],{"type":53,"value":578},{"type":47,"tag":66,"props":730,"children":732},{"className":731},[],[733],{"type":53,"value":734},"amgmcp_query_resource_metric_definition",{"type":53,"value":736}," on the first account from Phase 1. Confirm expected metrics exist. Run only once — definitions are the same across all accounts.",{"type":47,"tag":568,"props":738,"children":740},{"id":739},"phase-3-tier-1-fleet-wide-pulse-check",[741],{"type":53,"value":742},"Phase 3: Tier 1 — Fleet-Wide Pulse Check",{"type":47,"tag":627,"props":744,"children":747},{"className":745,"code":746,"language":53},[630],"azureMonitorDatasourceUid: {DATASOURCE_UID}\npastDays: 7\nscenarios: cosmosdb_mongo\n",[748],{"type":47,"tag":66,"props":749,"children":750},{"__ignoreMap":635},[751],{"type":53,"value":746},{"type":47,"tag":104,"props":753,"children":754},{},[755,757,763,764,770,771,777],{"type":53,"value":756},"Scans all accounts across 3 scenarios: ",{"type":47,"tag":66,"props":758,"children":760},{"className":759},[],[761],{"type":53,"value":762},"cosmosdb_mongo_ru",{"type":53,"value":226},{"type":47,"tag":66,"props":765,"children":767},{"className":766},[],[768],{"type":53,"value":769},"cosmosdb_mongo_throttling",{"type":53,"value":226},{"type":47,"tag":66,"props":772,"children":774},{"className":773},[],[775],{"type":53,"value":776},"cosmosdb_mongo_availability",{"type":53,"value":122},{"type":47,"tag":104,"props":779,"children":780},{},[781],{"type":47,"tag":108,"props":782,"children":783},{},[784],{"type":53,"value":785},"Before moving to Phase 4, verify:",{"type":47,"tag":787,"props":788,"children":789},"ol",{},[790,801,821,834],{"type":47,"tag":60,"props":791,"children":792},{},[793,799],{"type":47,"tag":66,"props":794,"children":796},{"className":795},[],[797],{"type":53,"value":798},"scanSummary.totalResourcesScanned",{"type":53,"value":800}," matches Phase 1 account count.",{"type":47,"tag":60,"props":802,"children":803},{},[804,806,812,814,820],{"type":53,"value":805},"All 3 scenarios show ",{"type":47,"tag":66,"props":807,"children":809},{"className":808},[],[810],{"type":53,"value":811},"status: \"completed\"",{"type":53,"value":813}," in ",{"type":47,"tag":66,"props":815,"children":817},{"className":816},[],[818],{"type":53,"value":819},"scenarioResults",{"type":53,"value":122},{"type":47,"tag":60,"props":822,"children":823},{},[824,826,832],{"type":53,"value":825},"If ",{"type":47,"tag":66,"props":827,"children":829},{"className":828},[],[830],{"type":53,"value":831},"errors",{"type":53,"value":833}," non-empty, retry affected scenarios individually.",{"type":47,"tag":60,"props":835,"children":836},{},[837,839,845],{"type":53,"value":838},"If >10% accounts missing, fall back to batched ",{"type":47,"tag":66,"props":840,"children":842},{"className":841},[],[843],{"type":53,"value":844},"amgmcp_query_resource_metric",{"type":53,"value":846}," for unscanned accounts.",{"type":47,"tag":104,"props":848,"children":849},{},[850,852,858],{"type":53,"value":851},"Accounts in the ",{"type":47,"tag":66,"props":853,"children":855},{"className":854},[],[856],{"type":53,"value":857},"findings",{"type":53,"value":859}," array are abnormal. Also flag any non-Succeeded accounts from Phase 1.",{"type":47,"tag":100,"props":861,"children":862},{},[863],{"type":47,"tag":104,"props":864,"children":865},{},[866,871],{"type":47,"tag":108,"props":867,"children":868},{},[869],{"type":53,"value":870},"Note",{"type":53,"value":872},": Sustained-high detection (>50% for 6+ hours), RU spike pattern detection (>30pp jump in 1h), and latency analysis require hourly time-series data and are performed in Phase 4 on flagged accounts only.",{"type":47,"tag":568,"props":874,"children":876},{"id":875},"phase-4-tier-2-deep-metrics-for-abnormal-accounts",[877],{"type":53,"value":878},"Phase 4: Tier 2 — Deep Metrics for Abnormal Accounts",{"type":47,"tag":104,"props":880,"children":881},{},[882,884,893],{"type":53,"value":883},"Read ",{"type":47,"tag":108,"props":885,"children":886},{},[887],{"type":47,"tag":429,"props":888,"children":890},{"href":889},"$%7BCLAUDE_SKILL_DIR%7D\u002Freference\u002Fphase4-deep-metrics.md",[891],{"type":53,"value":892},"reference\u002Fphase4-deep-metrics.md",{"type":53,"value":894}," before starting Phase 4. It contains:",{"type":47,"tag":56,"props":896,"children":897},{},[898,903,908,913],{"type":47,"tag":60,"props":899,"children":900},{},[901],{"type":53,"value":902},"Response size management (critical — fleet-wide PT1H queries exceed 500 KB)",{"type":47,"tag":60,"props":904,"children":905},{},[906],{"type":53,"value":907},"Fleet-wide triage strategy (when >50% accounts are flagged)",{"type":47,"tag":60,"props":909,"children":910},{},[911],{"type":53,"value":912},"Core and secondary metrics tables",{"type":47,"tag":60,"props":914,"children":915},{},[916],{"type":53,"value":917},"Batch strategy and correlation analysis patterns (use ultrathink)",{"type":47,"tag":568,"props":919,"children":921},{"id":920},"phase-5-resource-logs-for-abnormal-accounts",[922],{"type":53,"value":923},"Phase 5: Resource Logs for Abnormal Accounts",{"type":47,"tag":104,"props":925,"children":926},{},[927,928,937],{"type":53,"value":883},{"type":47,"tag":108,"props":929,"children":930},{},[931],{"type":47,"tag":429,"props":932,"children":934},{"href":933},"$%7BCLAUDE_SKILL_DIR%7D\u002Freference\u002Fphase5-resource-logs.md",[935],{"type":53,"value":936},"reference\u002Fphase5-resource-logs.md",{"type":53,"value":938}," before starting Phase 5. It contains:",{"type":47,"tag":56,"props":940,"children":941},{},[942,947],{"type":47,"tag":60,"props":943,"children":944},{},[945],{"type":53,"value":946},"5 KQL query templates: throttling, high latency, request volume, top RU operations, error codes",{"type":47,"tag":60,"props":948,"children":949},{},[950],{"type":53,"value":951},"Fallback table guidance (CDBDataPlaneRequests if CDBMongoRequests is empty)",{"type":47,"tag":558,"props":953,"children":954},{},[],{"type":47,"tag":48,"props":956,"children":958},{"id":957},"output",[959],{"type":53,"value":960},"Output",{"type":47,"tag":104,"props":962,"children":963},{},[964,966,975],{"type":53,"value":965},"Present the report using the structure in ",{"type":47,"tag":108,"props":967,"children":968},{},[969],{"type":47,"tag":429,"props":970,"children":972},{"href":971},"$%7BCLAUDE_SKILL_DIR%7D\u002Freference\u002Foutput-format.md",[973],{"type":53,"value":974},"reference\u002Foutput-format.md",{"type":53,"value":122},{"type":47,"tag":104,"props":977,"children":978},{},[979],{"type":47,"tag":108,"props":980,"children":981},{},[982],{"type":53,"value":983},"Classification:",{"type":47,"tag":985,"props":986,"children":987},"table",{},[988,1007],{"type":47,"tag":989,"props":990,"children":991},"thead",{},[992],{"type":47,"tag":993,"props":994,"children":995},"tr",{},[996,1002],{"type":47,"tag":997,"props":998,"children":999},"th",{},[1000],{"type":53,"value":1001},"Severity",{"type":47,"tag":997,"props":1003,"children":1004},{},[1005],{"type":53,"value":1006},"Criteria",{"type":47,"tag":1008,"props":1009,"children":1010},"tbody",{},[1011,1028,1044,1060,1076],{"type":47,"tag":993,"props":1012,"children":1013},{},[1014,1023],{"type":47,"tag":1015,"props":1016,"children":1017},"td",{},[1018],{"type":47,"tag":108,"props":1019,"children":1020},{},[1021],{"type":53,"value":1022},"CRITICAL",{"type":47,"tag":1015,"props":1024,"children":1025},{},[1026],{"type":53,"value":1027},"NormalizedRU = 100% sustained, OR ServiceAvailability \u003C 99.9%, OR latency avg > 50ms",{"type":47,"tag":993,"props":1029,"children":1030},{},[1031,1039],{"type":47,"tag":1015,"props":1032,"children":1033},{},[1034],{"type":47,"tag":108,"props":1035,"children":1036},{},[1037],{"type":53,"value":1038},"HIGH",{"type":47,"tag":1015,"props":1040,"children":1041},{},[1042],{"type":53,"value":1043},"NormalizedRU max 85-100% with frequent spikes, OR ReplicationLatency > 1000ms",{"type":47,"tag":993,"props":1045,"children":1046},{},[1047,1055],{"type":47,"tag":1015,"props":1048,"children":1049},{},[1050],{"type":47,"tag":108,"props":1051,"children":1052},{},[1053],{"type":53,"value":1054},"WARNING",{"type":47,"tag":1015,"props":1056,"children":1057},{},[1058],{"type":53,"value":1059},"NormalizedRU max 70-85% sustained, OR sustained RU > 50% for 6h+, OR RU spike >30pp in 1h, OR ServiceAvailability \u003C 99.99%, OR latency avg > 10ms, OR ReplicationLatency > 100ms",{"type":47,"tag":993,"props":1061,"children":1062},{},[1063,1071],{"type":47,"tag":1015,"props":1064,"children":1065},{},[1066],{"type":47,"tag":108,"props":1067,"children":1068},{},[1069],{"type":53,"value":1070},"MODERATE",{"type":47,"tag":1015,"props":1072,"children":1073},{},[1074],{"type":53,"value":1075},"NormalizedRU max 50-70%",{"type":47,"tag":993,"props":1077,"children":1078},{},[1079,1087],{"type":47,"tag":1015,"props":1080,"children":1081},{},[1082],{"type":47,"tag":108,"props":1083,"children":1084},{},[1085],{"type":53,"value":1086},"HEALTHY",{"type":47,"tag":1015,"props":1088,"children":1089},{},[1090],{"type":53,"value":1091},"All metrics within normal ranges (NormalizedRU \u003C 50%)",{"type":47,"tag":48,"props":1093,"children":1095},{"id":1094},"update-known-issues",[1096],{"type":53,"value":1097},"Update Known Issues",{"type":47,"tag":104,"props":1099,"children":1100},{},[1101,1103,1108],{"type":53,"value":1102},"After presenting findings, update ",{"type":47,"tag":66,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":53,"value":120},{"type":53,"value":1109},":",{"type":47,"tag":787,"props":1111,"children":1112},{},[1113,1118,1123,1128,1133],{"type":47,"tag":60,"props":1114,"children":1115},{},[1116],{"type":53,"value":1117},"Read the current file.",{"type":47,"tag":60,"props":1119,"children":1120},{},[1121],{"type":53,"value":1122},"Rebuild the Resource Inventory table at the end: every account, full ARM ID, region, subscription, state. Group by region, sorted alphabetically.",{"type":47,"tag":60,"props":1124,"children":1125},{},[1126],{"type":53,"value":1127},"Update existing bug status from today's telemetry (resolved \u002F improving \u002F worsening \u002F still active).",{"type":47,"tag":60,"props":1129,"children":1130},{},[1131],{"type":53,"value":1132},"Add new bugs with: severity, account name, region, metric evidence, log evidence, root cause, recommended action.",{"type":47,"tag":60,"props":1134,"children":1135},{},[1136],{"type":53,"value":1137},"Update the \"Updated\" date header.",{"type":47,"tag":104,"props":1139,"children":1140},{},[1141],{"type":53,"value":1142},"Only add genuine issues: sustained throttling, availability drops, high latency patterns, or replication problems. Skip transient single-hour spikes or expected maintenance windows.",{"type":47,"tag":48,"props":1144,"children":1146},{"id":1145},"error-handling",[1147],{"type":53,"value":1148},"Error Handling",{"type":47,"tag":104,"props":1150,"children":1151},{},[1152,1154,1163],{"type":53,"value":1153},"See ",{"type":47,"tag":108,"props":1155,"children":1156},{},[1157],{"type":47,"tag":429,"props":1158,"children":1160},{"href":1159},"$%7BCLAUDE_SKILL_DIR%7D\u002Freference\u002Ferror-handling.md",[1161],{"type":53,"value":1162},"reference\u002Ferror-handling.md",{"type":53,"value":1164}," for the full recovery table.",{"type":47,"tag":48,"props":1166,"children":1168},{"id":1167},"analysis-guidance",[1169],{"type":53,"value":1170},"Analysis Guidance",{"type":47,"tag":56,"props":1172,"children":1173},{},[1174,1185],{"type":47,"tag":60,"props":1175,"children":1176},{},[1177,1179],{"type":53,"value":1178},"Known patterns, signals, root causes: ",{"type":47,"tag":429,"props":1180,"children":1182},{"href":1181},"$%7BCLAUDE_SKILL_DIR%7D\u002Freference\u002Fanalysis-patterns.md",[1183],{"type":53,"value":1184},"reference\u002Fanalysis-patterns.md",{"type":47,"tag":60,"props":1186,"children":1187},{},[1188,1190],{"type":53,"value":1189},"Optional deep-dive KQL queries: ",{"type":47,"tag":429,"props":1191,"children":1193},{"href":1192},"$%7BCLAUDE_SKILL_DIR%7D\u002Freference\u002Fdeep-dive-queries.md",[1194],{"type":53,"value":1195},"reference\u002Fdeep-dive-queries.md",{"type":47,"tag":48,"props":1197,"children":1199},{"id":1198},"reference",[1200],{"type":53,"value":1201},"Reference",{"type":47,"tag":56,"props":1203,"children":1204},{},[1205,1224,1234,1263,1284,1321,1333,1343],{"type":47,"tag":60,"props":1206,"children":1207},{},[1208,1210,1215,1217,1222],{"type":53,"value":1209},"Cosmos DB resource type: ",{"type":47,"tag":66,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":53,"value":521},{"type":53,"value":1216}," (kind: ",{"type":47,"tag":66,"props":1218,"children":1220},{"className":1219},[],[1221],{"type":53,"value":22},{"type":53,"value":1223},")",{"type":47,"tag":60,"props":1225,"children":1226},{},[1227,1229],{"type":53,"value":1228},"vCore resource type (different): ",{"type":47,"tag":66,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":53,"value":684},{"type":47,"tag":60,"props":1235,"children":1236},{},[1237,1239,1245,1247,1253,1255,1261],{"type":53,"value":1238},"Latency metrics: ",{"type":47,"tag":66,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":53,"value":1244},"ServerSideLatencyDirect",{"type":53,"value":1246}," and ",{"type":47,"tag":66,"props":1248,"children":1250},{"className":1249},[],[1251],{"type":53,"value":1252},"ServerSideLatencyGateway",{"type":53,"value":1254}," (the old ",{"type":47,"tag":66,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":53,"value":1260},"ServerSideLatency",{"type":53,"value":1262}," is deprecated)",{"type":47,"tag":60,"props":1264,"children":1265},{},[1266,1268,1274,1276,1282],{"type":53,"value":1267},"Resource log tables: ",{"type":47,"tag":66,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":53,"value":1273},"CDBMongoRequests",{"type":53,"value":1275}," (primary), ",{"type":47,"tag":66,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":53,"value":1281},"CDBDataPlaneRequests",{"type":53,"value":1283}," (fallback)",{"type":47,"tag":60,"props":1285,"children":1286},{},[1287,1289,1295,1297,1303,1305,1311,1313,1319],{"type":53,"value":1288},"Key error codes: ",{"type":47,"tag":66,"props":1290,"children":1292},{"className":1291},[],[1293],{"type":53,"value":1294},"429",{"type":53,"value":1296}," \u002F ",{"type":47,"tag":66,"props":1298,"children":1300},{"className":1299},[],[1301],{"type":53,"value":1302},"16500",{"type":53,"value":1304}," (throttling), ",{"type":47,"tag":66,"props":1306,"children":1308},{"className":1307},[],[1309],{"type":53,"value":1310},"50",{"type":53,"value":1312}," (server error), ",{"type":47,"tag":66,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":53,"value":1318},"13",{"type":53,"value":1320}," (unauthorized)",{"type":47,"tag":60,"props":1322,"children":1323},{},[1324,1326,1331],{"type":53,"value":1325},"Safe metric interval: ",{"type":47,"tag":66,"props":1327,"children":1329},{"className":1328},[],[1330],{"type":53,"value":208},{"type":53,"value":1332}," for all metrics (PT6H NOT supported)",{"type":47,"tag":60,"props":1334,"children":1335},{},[1336,1338],{"type":53,"value":1337},"Known issues: ",{"type":47,"tag":66,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":53,"value":120},{"type":47,"tag":60,"props":1344,"children":1345},{},[1346,1348],{"type":53,"value":1347},"User config: ",{"type":47,"tag":66,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":53,"value":612},{"type":47,"tag":558,"props":1354,"children":1355},{},[],{"type":47,"tag":48,"props":1357,"children":1359},{"id":1358},"first-run-setup",[1360],{"type":53,"value":434},{"type":47,"tag":104,"props":1362,"children":1363},{},[1364,1366,1371,1373,1378],{"type":53,"value":1365},"Run only when Config shows ",{"type":47,"tag":66,"props":1367,"children":1369},{"className":1368},[],[1370],{"type":53,"value":425},{"type":53,"value":1372},". After completing, return to the ",{"type":47,"tag":429,"props":1374,"children":1376},{"href":1375},"#workflow",[1377],{"type":53,"value":566},{"type":53,"value":1379}," above.",{"type":47,"tag":104,"props":1381,"children":1382},{},[1383,1388,1390,1395,1397,1402,1404,1410],{"type":47,"tag":108,"props":1384,"children":1385},{},[1386],{"type":53,"value":1387},"1. Discover Datasource UID",{"type":53,"value":1389},": Call ",{"type":47,"tag":66,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":53,"value":584},{"type":53,"value":1396},". Filter ",{"type":47,"tag":66,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":53,"value":592},{"type":53,"value":1403},". Prefer ",{"type":47,"tag":66,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":53,"value":1409},"uid == \"azure-monitor-oob\"",{"type":53,"value":1411}," if multiple match. Abort if zero match.",{"type":47,"tag":104,"props":1413,"children":1414},{},[1415,1420],{"type":47,"tag":108,"props":1416,"children":1417},{},[1418],{"type":53,"value":1419},"2. Discover Subscription ID",{"type":53,"value":1421},": Run this Resource Graph query to list all subscriptions with Cosmos DB for MongoDB (RU) accounts, then present the results as a table and ask the user which subscription(s) to use:",{"type":47,"tag":627,"props":1423,"children":1426},{"className":1424,"code":1425,"language":53},[630],"resources\n| where type == 'microsoft.documentdb\u002Fdatabaseaccounts'\n| where kind == 'MongoDB'\n| join kind=inner (\n    resourcecontainers\n    | where type == 'microsoft.resources\u002Fsubscriptions'\n    | project subscriptionId, subscriptionName=name\n) on subscriptionId\n| summarize AccountCount=count() by subscriptionId, subscriptionName\n| order by AccountCount desc\n",[1427],{"type":47,"tag":66,"props":1428,"children":1429},{"__ignoreMap":635},[1430],{"type":53,"value":1425},{"type":47,"tag":104,"props":1432,"children":1433},{},[1434,1436,1441,1442,1446,1447,1452,1454],{"type":53,"value":1435},"Present the results as a table with columns: ",{"type":47,"tag":108,"props":1437,"children":1438},{},[1439],{"type":53,"value":1440},"Subscription Name",{"type":53,"value":226},{"type":47,"tag":108,"props":1443,"children":1444},{},[1445],{"type":53,"value":489},{"type":53,"value":226},{"type":47,"tag":108,"props":1448,"children":1449},{},[1450],{"type":53,"value":1451},"Account Count",{"type":53,"value":1453},". Then ask the user: ",{"type":47,"tag":1455,"props":1456,"children":1457},"em",{},[1458],{"type":53,"value":1459},"\"Which subscription ID(s) should I configure for this health check? Or type 'all' to scan all subscriptions.\"",{"type":47,"tag":104,"props":1461,"children":1462},{},[1463,1468,1470,1475],{"type":47,"tag":108,"props":1464,"children":1465},{},[1466],{"type":53,"value":1467},"3. Write config",{"type":53,"value":1469},": Write ",{"type":47,"tag":66,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":53,"value":612},{"type":53,"value":1109},{"type":47,"tag":627,"props":1477,"children":1481},{"className":1478,"code":1479,"language":1480,"meta":635,"style":635},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# amg-check-cosmosdb-mongo-ru Configuration\n\nUser-specific values for the Cosmos DB for MongoDB (RU) health check skill.\nThis file is auto-generated on first run and can be edited manually.\n\n## Azure Monitor Datasource\n- **UID**: {discovered_uid}\n- **Name**: {discovered_name}\n\n## Subscription\n- {subscription_id_or_\"all\"}\n","markdown",[1482],{"type":47,"tag":66,"props":1483,"children":1484},{"__ignoreMap":635},[1485,1503,1511,1521,1530,1538,1552,1582,1608,1616,1629],{"type":47,"tag":1486,"props":1487,"children":1490},"span",{"class":1488,"line":1489},"line",1,[1491,1497],{"type":47,"tag":1486,"props":1492,"children":1494},{"style":1493},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1495],{"type":53,"value":1496},"# ",{"type":47,"tag":1486,"props":1498,"children":1500},{"style":1499},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1501],{"type":53,"value":1502},"amg-check-cosmosdb-mongo-ru Configuration\n",{"type":47,"tag":1486,"props":1504,"children":1505},{"class":1488,"line":27},[1506],{"type":47,"tag":1486,"props":1507,"children":1508},{"emptyLinePlaceholder":40},[1509],{"type":53,"value":1510},"\n",{"type":47,"tag":1486,"props":1512,"children":1514},{"class":1488,"line":1513},3,[1515],{"type":47,"tag":1486,"props":1516,"children":1518},{"style":1517},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1519],{"type":53,"value":1520},"User-specific values for the Cosmos DB for MongoDB (RU) health check skill.\n",{"type":47,"tag":1486,"props":1522,"children":1524},{"class":1488,"line":1523},4,[1525],{"type":47,"tag":1486,"props":1526,"children":1527},{"style":1517},[1528],{"type":53,"value":1529},"This file is auto-generated on first run and can be edited manually.\n",{"type":47,"tag":1486,"props":1531,"children":1533},{"class":1488,"line":1532},5,[1534],{"type":47,"tag":1486,"props":1535,"children":1536},{"emptyLinePlaceholder":40},[1537],{"type":53,"value":1510},{"type":47,"tag":1486,"props":1539,"children":1541},{"class":1488,"line":1540},6,[1542,1547],{"type":47,"tag":1486,"props":1543,"children":1544},{"style":1493},[1545],{"type":53,"value":1546},"## ",{"type":47,"tag":1486,"props":1548,"children":1549},{"style":1499},[1550],{"type":53,"value":1551},"Azure Monitor Datasource\n",{"type":47,"tag":1486,"props":1553,"children":1555},{"class":1488,"line":1554},7,[1556,1561,1567,1572,1577],{"type":47,"tag":1486,"props":1557,"children":1558},{"style":1493},[1559],{"type":53,"value":1560},"-",{"type":47,"tag":1486,"props":1562,"children":1564},{"style":1563},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[1565],{"type":53,"value":1566}," **",{"type":47,"tag":1486,"props":1568,"children":1570},{"style":1569},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[1571],{"type":53,"value":481},{"type":47,"tag":1486,"props":1573,"children":1574},{"style":1563},[1575],{"type":53,"value":1576},"**",{"type":47,"tag":1486,"props":1578,"children":1579},{"style":1517},[1580],{"type":53,"value":1581},": {discovered_uid}\n",{"type":47,"tag":1486,"props":1583,"children":1585},{"class":1488,"line":1584},8,[1586,1590,1594,1599,1603],{"type":47,"tag":1486,"props":1587,"children":1588},{"style":1493},[1589],{"type":53,"value":1560},{"type":47,"tag":1486,"props":1591,"children":1592},{"style":1563},[1593],{"type":53,"value":1566},{"type":47,"tag":1486,"props":1595,"children":1596},{"style":1569},[1597],{"type":53,"value":1598},"Name",{"type":47,"tag":1486,"props":1600,"children":1601},{"style":1563},[1602],{"type":53,"value":1576},{"type":47,"tag":1486,"props":1604,"children":1605},{"style":1517},[1606],{"type":53,"value":1607},": {discovered_name}\n",{"type":47,"tag":1486,"props":1609,"children":1611},{"class":1488,"line":1610},9,[1612],{"type":47,"tag":1486,"props":1613,"children":1614},{"emptyLinePlaceholder":40},[1615],{"type":53,"value":1510},{"type":47,"tag":1486,"props":1617,"children":1619},{"class":1488,"line":1618},10,[1620,1624],{"type":47,"tag":1486,"props":1621,"children":1622},{"style":1493},[1623],{"type":53,"value":1546},{"type":47,"tag":1486,"props":1625,"children":1626},{"style":1499},[1627],{"type":53,"value":1628},"Subscription\n",{"type":47,"tag":1486,"props":1630,"children":1632},{"class":1488,"line":1631},11,[1633,1637],{"type":47,"tag":1486,"props":1634,"children":1635},{"style":1493},[1636],{"type":53,"value":1560},{"type":47,"tag":1486,"props":1638,"children":1639},{"style":1517},[1640],{"type":53,"value":1641}," {subscription_id_or_\"all\"}\n",{"type":47,"tag":104,"props":1643,"children":1644},{},[1645,1650],{"type":47,"tag":108,"props":1646,"children":1647},{},[1648],{"type":53,"value":1649},"4. Confirm",{"type":53,"value":1651},": Show the resolved config and ask for confirmation before proceeding.",{"type":47,"tag":1653,"props":1654,"children":1655},"style",{},[1656],{"type":53,"value":1657},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1659,"total":1532},[1660,1677,1685,1698,1711],{"slug":1661,"name":1661,"fn":1662,"description":1663,"org":1664,"tags":1665,"stars":27,"repoUrl":28,"updatedAt":1676},"amg-check-azure-spend","analyze monthly Azure subscription costs","Monthly Azure subscription cost analysis — lists all accessible subscriptions, lets the user choose which to analyze, then queries last billing month's cost breakdown by resource type, region, and service category for each subscription. Queries subscriptions sequentially with 1-minute waits between calls to avoid billing API rate limits (429). On first run, auto-discovers datasource UID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1666,1667,1670,1673],{"name":11,"slug":8,"type":16},{"name":1668,"slug":1669,"type":16},"Cost Optimization","cost-optimization",{"name":1671,"slug":1672,"type":16},"Finance","finance",{"name":1674,"slug":1675,"type":16},"Reporting","reporting","2026-07-12T08:19:59.033036",{"slug":4,"name":4,"fn":5,"description":6,"org":1678,"tags":1679,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1680,1681,1682,1683,1684],{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},{"name":22,"slug":23,"type":16},{"name":25,"slug":26,"type":16},{"name":14,"slug":15,"type":16},{"slug":1686,"name":1686,"fn":1687,"description":1688,"org":1689,"tags":1690,"stars":27,"repoUrl":28,"updatedAt":1697},"amg-check-key-vault","monitor Azure Key Vault health","Fleet-wide Azure Key Vault health check — pulse check for availability, API latency, throttling (429s), auth failures (401\u002F403), and vault saturation across all vaults, then deep-dives into the top 7 most interesting vaults with metrics and resource logs. Tracks known issues across sessions via persistent report. On first run, auto-discovers datasource UID and prompts for subscription ID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1691,1692,1693,1694],{"name":11,"slug":8,"type":16},{"name":25,"slug":26,"type":16},{"name":14,"slug":15,"type":16},{"name":1695,"slug":1696,"type":16},"Security","security","2026-07-12T08:19:53.484442",{"slug":1699,"name":1699,"fn":1700,"description":1701,"org":1702,"tags":1703,"stars":27,"repoUrl":28,"updatedAt":1710},"amg-check-pg-flex","monitor PostgreSQL Flexible Server health","Fleet-wide PostgreSQL Flexible Server health check — scans CPU, memory, storage, IOPS, disk bandwidth, and connection metrics across all servers, then deep-dives into abnormal servers with resource logs and correlation analysis. Tracks known issues across sessions via persistent report. Uses AMG-MCP pulse check for Tier 1 triage, then batched Azure Monitor queries for Tier 2 investigation. On first run, auto-discovers datasource UID and prompts for subscription ID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1704,1705,1706,1707],{"name":11,"slug":8,"type":16},{"name":25,"slug":26,"type":16},{"name":14,"slug":15,"type":16},{"name":1708,"slug":1709,"type":16},"PostgreSQL","postgresql","2026-07-12T08:19:54.767507",{"slug":1712,"name":1712,"fn":1713,"description":1714,"org":1715,"tags":1716,"stars":27,"repoUrl":28,"updatedAt":1725},"amg-check-storage-account","monitor Azure Storage Account health","Fleet-wide Azure Storage Account health check — pulse check for availability, latency, transactions, and error rates across all accounts, then deep-dives into the top 7 most interesting accounts with metrics (E2E latency, server latency, capacity, ingress\u002Fegress) and resource logs. Tracks known issues across sessions via persistent report. On first run, auto-discovers datasource UID and prompts for subscription ID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1717,1718,1719,1722],{"name":11,"slug":8,"type":16},{"name":25,"slug":26,"type":16},{"name":1720,"slug":1721,"type":16},"Performance","performance",{"name":1723,"slug":1724,"type":16},"Storage","storage","2026-07-12T08:19:57.37917",{"items":1727,"total":1904},[1728,1747,1766,1785,1800,1815,1828,1843,1854,1866,1879,1892],{"slug":1729,"name":1729,"fn":1730,"description":1731,"org":1732,"tags":1733,"stars":1744,"repoUrl":1745,"updatedAt":1746},"azure-arg-external-evaluation-policy-author","author and test Azure Resource Graph policies","Use when the user wants to author, design, or test an Azure Policy that queries Azure Resource Graph (ARG) at request-time — i.e. a policy whose deny\u002Faudit decision depends on data from elsewhere in the subscription (sibling\u002Fparent resource state, RG-wide invariants, multi-hop relationships, etc.). Formally called Azure Policy External Evaluation; sometimes referred to colloquially as \"Invoke\". Drives an iterative KQL co-design loop against the user's real subscription via `az graph query`, then emits a policy definition, assignment, `.http` test flow, and an `EXPLANATION.md` companion. Read-only; never provisions anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1734,1735,1738,1741],{"name":11,"slug":8,"type":16},{"name":1736,"slug":1737,"type":16},"Compliance","compliance",{"name":1739,"slug":1740,"type":16},"Governance","governance",{"name":1742,"slug":1743,"type":16},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":1748,"name":1748,"fn":1749,"description":1750,"org":1751,"tags":1752,"stars":1763,"repoUrl":1764,"updatedAt":1765},"azure-blueprints-migration","migrate Azure Blueprints to Template Specs","Use when a user needs to migrate off Azure Blueprints (definitions and\u002For assignments) to Template Specs and Deployment Stacks before the January 31, 2027 retirement. Covers inventory, export, conversion to Bicep, policy decoupling, Template Spec publishing, Deployment Stack deployment with deny-settings, validation, and cutover.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1753,1754,1757,1760],{"name":11,"slug":8,"type":16},{"name":1755,"slug":1756,"type":16},"Deployment","deployment",{"name":1758,"slug":1759,"type":16},"Infrastructure as Code","infrastructure-as-code",{"name":1761,"slug":1762,"type":16},"Migration","migration",260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":1767,"name":1767,"fn":1768,"description":1769,"org":1770,"tags":1771,"stars":1782,"repoUrl":1783,"updatedAt":1784},"apiview-feedback-resolution","resolve APIView feedback on Azure SDKs","Analyze and resolve APIView review feedback on Azure SDK PRs. **UTILITY SKILL**. USE FOR: APIView comments, API review feedback, SDK API surface changes. DO NOT USE FOR: general code review, non-APIView feedback. INVOKES: azure-sdk-mcp:azsdk_apiview_get_comments, azure-sdk-mcp:azsdk_typespec_customized_code_update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1772,1775,1776,1779],{"name":1773,"slug":1774,"type":16},"API Development","api-development",{"name":11,"slug":8,"type":16},{"name":1777,"slug":1778,"type":16},"Code Review","code-review",{"name":1780,"slug":1781,"type":16},"Documentation","documentation",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:43.350876",{"slug":1786,"name":1786,"fn":1787,"description":1788,"org":1789,"tags":1790,"stars":1782,"repoUrl":1783,"updatedAt":1799},"azsdk-common-live-and-recorded-tests","deploy resources and run Azure SDK tests","Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \"run live tests\", \"run recorded tests\", \"deploy test resources\", \"record tests\", \"run tests in record mode\", \"clean up test resources\", \"run tests against live resources\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1791,1792,1793,1796],{"name":11,"slug":8,"type":16},{"name":1755,"slug":1756,"type":16},{"name":1794,"slug":1795,"type":16},"SDK","sdk",{"name":1797,"slug":1798,"type":16},"Testing","testing","2026-07-12T08:17:44.718943",{"slug":1801,"name":1801,"fn":1802,"description":1803,"org":1804,"tags":1805,"stars":1782,"repoUrl":1783,"updatedAt":1814},"azsdk-common-prepare-release-plan","manage Azure SDK release plan work items","Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: \"create release plan\", \"get release plan\", \"update release plan\", \"update API spec in release plan\", \"update SDK details in release plan\", \"abandon release plan\", \"link SDK PR to plan\", \"namespace approval\", \"check release plan status\". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1806,1807,1810,1813],{"name":11,"slug":8,"type":16},{"name":1808,"slug":1809,"type":16},"GitHub","github",{"name":1811,"slug":1812,"type":16},"Project Management","project-management",{"name":1794,"slug":1795,"type":16},"2026-07-12T08:17:38.345387",{"slug":1816,"name":1816,"fn":1817,"description":1818,"org":1819,"tags":1820,"stars":1782,"repoUrl":1783,"updatedAt":1827},"azsdk-common-sdk-release","release Azure SDK packages","Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: \"release SDK\", \"trigger release\", \"check release readiness\", \"release pipeline\", \"publish package\", \"ship SDK\". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1821,1822,1825,1826],{"name":11,"slug":8,"type":16},{"name":1823,"slug":1824,"type":16},"CI\u002FCD","ci-cd",{"name":1755,"slug":1756,"type":16},{"name":1794,"slug":1795,"type":16},"2026-07-12T08:17:34.27607",{"slug":1829,"name":1829,"fn":1830,"description":1831,"org":1832,"tags":1833,"stars":1782,"repoUrl":1783,"updatedAt":1842},"azure-typespec-author","author and modify Azure TypeSpec API specifications","Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec\u002Ftsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1834,1835,1836,1839],{"name":1773,"slug":1774,"type":16},{"name":11,"slug":8,"type":16},{"name":1837,"slug":1838,"type":16},"OpenAPI","openapi",{"name":1840,"slug":1841,"type":16},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":1844,"name":1844,"fn":1845,"description":1846,"org":1847,"tags":1848,"stars":1782,"repoUrl":1783,"updatedAt":1853},"generate-sdk-locally","generate and test Azure SDKs locally","Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization. WHEN: \"generate SDK locally\", \"build SDK\", \"run SDK tests\", \"run CI checks\", \"validate package\", \"run checks\", \"update changelog\", \"fix SDK build errors\", \"fix breaking changes\", \"resolve SDK generation errors\", \"customize TypeSpec\", \"rename SDK client\", \"rename SDK model\", \"hide operation from SDK\", \"fix analyzer errors\", \"resolve customization drift\", \"create subclient\", \"update metadata\", \"update version\". DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API design review. INVOKES: azsdk_verify_setup, azsdk_package_generate_code, azsdk_package_build_code, azsdk_package_run_check, azsdk_package_run_tests, azsdk_customized_code_update, azsdk_package_update_changelog_content, azsdk_package_update_metadata, azsdk_package_update_version.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1849,1850,1851,1852],{"name":11,"slug":8,"type":16},{"name":1823,"slug":1824,"type":16},{"name":1794,"slug":1795,"type":16},{"name":1797,"slug":1798,"type":16},"2026-07-12T08:17:37.08523",{"slug":1855,"name":1855,"fn":1856,"description":1857,"org":1858,"tags":1859,"stars":1782,"repoUrl":1783,"updatedAt":1865},"markdown-token-optimizer","optimize markdown files for token efficiency","Analyze markdown files for token efficiency and reduce context-window bloat. **UTILITY SKILL**. DO NOT USE FOR: code optimization, general file editing, non-markdown files. TRIGGERS: optimize markdown, reduce tokens, token count, token bloat, too many tokens, make concise, shrink file, file too large, optimize for AI, token efficiency, verbose markdown, reduce file size. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1860,1863,1864],{"name":1861,"slug":1862,"type":16},"LLM","llm",{"name":1720,"slug":1721,"type":16},{"name":1840,"slug":1841,"type":16},"2026-07-12T08:17:42.080413",{"slug":1867,"name":1867,"fn":1868,"description":1869,"org":1870,"tags":1871,"stars":1782,"repoUrl":1783,"updatedAt":1878},"pipeline-troubleshooting","troubleshoot Azure SDK CI pipelines","Diagnose and resolve failures in Azure SDK CI and generation pipelines. **UTILITY SKILL**. USE FOR: \"pipeline failed\", \"build failure\", \"CI check failing\", \"SDK generation error\", \"reproduce pipeline locally\", \"debug SDK pipeline\". DO NOT USE FOR: local build issues without pipeline context, API design review, SDK publishing. INVOKES: azure-sdk-mcp:azsdk_analyze_pipeline, azure-sdk-mcp:azsdk_package_build_code, azure-sdk-mcp:azsdk_package_run_check.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1872,1873,1874,1877],{"name":11,"slug":8,"type":16},{"name":1823,"slug":1824,"type":16},{"name":1875,"slug":1876,"type":16},"Debugging","debugging",{"name":1794,"slug":1795,"type":16},"2026-07-12T08:17:40.821512",{"slug":1880,"name":1880,"fn":1881,"description":1882,"org":1883,"tags":1884,"stars":1782,"repoUrl":1783,"updatedAt":1891},"sensei","improve skill frontmatter compliance","**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \"run sensei\", \"sensei help\", \"improve skill\", \"fix frontmatter\", \"skill compliance\", \"frontmatter audit\", \"score skill\", \"check skill tokens\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1885,1886,1887,1890],{"name":11,"slug":8,"type":16},{"name":1736,"slug":1737,"type":16},{"name":1888,"slug":1889,"type":16},"Process Optimization","process-optimization",{"name":1840,"slug":1841,"type":16},"2026-07-12T08:17:32.970921",{"slug":1893,"name":1893,"fn":1894,"description":1895,"org":1896,"tags":1897,"stars":1782,"repoUrl":1783,"updatedAt":1903},"skill-authoring","author agent skills for agentskills.io","Write Agent Skills that comply with the agentskills.io specification. WHEN: \"create a skill\", \"new skill\", \"write a skill\", \"skill template\", \"skill structure\", \"review skill\", \"skill PR\", \"skill compliance\", \"SKILL.md format\", \"skill frontmatter\", \"skill best practices\". DO NOT USE FOR: improving existing skills (use sensei), general documentation. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1898,1899,1902],{"name":1780,"slug":1781,"type":16},{"name":1900,"slug":1901,"type":16},"Plugin Development","plugin-development",{"name":1840,"slug":1841,"type":16},"2026-07-12T08:17:35.873862",109]