Their Claude agent to self-improve from past usage

SkillOpt-Sleep: usage-driven self-evolution for a local Claude agent

by microsoft · MIT license · ★ 17,328 on GitHub · updated Sep 5

SkillOpt-Sleep: usage-driven self-evolution for a local Claude agent cover

Use when the user wants their Claude agent to self-improve from past usage, asks about a nightly/offline 'sleep' or 'dream' cycle, memory/skill consolidation, or says things like 'make my agent better the more I use it', 'review my past…

---
name: skillopt-sleep
description: "Use when the user wants their Claude agent to self-improve from past usage, asks about a nightly/offline 'sleep' or 'dream' cycle, memory/skill consolidation, or says things like 'make my agent better the more I use it', 'review my past sessions', 'learn my preferences', 'consolidate what you learned', 'run the sleep cycle', or wants to schedule background self-optimization. Drives the skillopt_sleep engine: harvest past sessions -> mine recurring tasks -> replay through a selected backend -> consolidate validated CLAUDE.md/SKILL.md behind a held-out gate."
---

# SkillOpt-Sleep: usage-driven self-evolution for a local Claude agent

SkillOpt-Sleep gives the user's agent a **sleep cycle**. On demand or on a
nightly schedule, it reviews real past Claude Code sessions, re-runs recurring
tasks through the selected backend, and consolidates what it
learns into **memory** (`CLAUDE.md`) and **skills** (`SKILL.md`). With the
default validation gate enabled, it keeps only changes that improve a held-out
score. Live files change only through explicit adoption or a user-requested
`--auto-adopt`. It aims to improve this user's recurring work, while making
each accepted proposal measurable on the run's held-out tasks,
with no model-weight training. It is the deployment-time analogue of training:
short-term experience → long-term competence.

Overview

SkillOpt-Sleep gives the user's agent a sleep cycle. On demand or on a nightly schedule, it reviews real past Claude Code sessions, re-runs recurring tasks through the selected backend, and consolidates what it learns into memory (CLAUDE.md) and skills (SKILL.md). With the default validation gate enabled, it keeps only changes that improve a held-out score. Live files change only through explicit adoption or a user-requested --auto-adopt. It aims to improve this user's recurring work, while making each accepted proposal measurable on the run's held-out tasks, with no model-weight training. It is the deployment-time analogue of training: short-term experience → long-term competence.

Manual install (npx, ZIP)
Claude Codenpx skills add microsoft/SkillOpt --skill skillopt-sleep -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/microsoft/SkillOpt/tar.gz/79124b37e9a6 \ | tar -xz -C ~/.claude/skills --strip-components=4 SkillOpt-79124b37e9a6/plugins/claude-code/skills/skillopt-sleep
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/ec57c1f6f37a18959dd4/skillopt-sleep.zip" -OutFile "$env:TEMP\skillopt-sleep.zip"; Expand-Archive "$env:TEMP\skillopt-sleep.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md8.8 KB
Read the files here
microsoft/79124b31 file
Shared references1SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text157 lines

SkillOpt-Sleep: usage-driven self-evolution for a local Claude agent

SkillOpt-Sleep gives the user's agent a sleep cycle. On demand or on a nightly schedule, it reviews real past Claude Code sessions, re-runs recurring tasks through the selected backend, and consolidates what it learns into memory (CLAUDE.md) and skills (SKILL.md). With the default validation gate enabled, it keeps only changes that improve a held-out score. Live files change only through explicit adoption or a user-requested --auto-adopt. It aims to improve this user's recurring work, while making each accepted proposal measurable on the run's held-out tasks, with no model-weight training. It is the deployment-time analogue of training: short-term experience → long-term competence.

It synthesizes three ideas:

  • SkillOpt — the skill/memory doc is trainable text; bounded add/delete/replace edits; accepted only through a held-out gate; rejected edits are recorded in the run report for review.
  • Claude Dreams — consolidation that reads past sessions and proposes changes inside protected learned blocks; the input is never mutated, and output is reviewed before adoption.
  • Agent sleep — periodic background replay turns episodes into durable skill.

When to use this skill

Trigger when the user wants any of:

  • "make my agent learn from how I use it" / "get better the more I use it" / "remember my preferences across sessions"
  • a nightly/scheduled or on-demand offline self-improvement / dream / sleep run
  • to review past sessions/trajectories and distill recurring tasks
  • to consolidate feedback into CLAUDE.md or a managed skill
  • to schedule the cycle (cron) or adopt a staged proposal

The cycle (six stages)

  1. Harvest — read ~/.claude/projects/*/<session>.jsonl + ~/.claude/history.jsonl (READ-ONLY) → session digests.
  2. Mine — digests → TaskRecords (recurring intents + outcome labels + checkable refs where possible).
  3. Replay — re-run tasks through the selected backend under the current skill+memory → (hard, soft) scores.
  4. Consolidate — reflect on failures → propose bounded edits → gate on a held-out slice; with the default gate enabled, accept only if it strictly improves.
  5. Stage — write the accepted proposed_CLAUDE.md and/or proposed_SKILL.md, plus report.md, report.json, manifest.json, and diagnostics.json into <project>/.skillopt-sleep/staging/<timestamp>/. Nothing live changes. A rejected run still has a report but no proposed live-file replacement.
  6. Adopt — explicit (or opt-in auto): copy staged files over live ones, backing up first.

How to drive it

Prefer the /skillopt-sleep command. Under the hood it calls the bundled runner:

"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" status                       # what's happened
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" dry-run --project "$(pwd)"    # no-staging preview
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" run --project "$(pwd)"        # full cycle, stages a proposal
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" adopt --project "$(pwd)"      # apply staged proposal (with backup)
  • Default backend is mock (deterministic, no API spend) — good for trying the plumbing.
  • Add --backend claude or --backend codex to spend the user's real budget for model-driven optimization. A held-out gain is run-specific evidence, not a guarantee of broader improvement; results depend on the tasks, model, and checks.
  • Scope defaults to the invoked project; --scope all harvests every Claude project into the current run's configured targets.
  • A real backend sends truncated transcript/task content to its provider. See the data-boundary rules below before using one with sensitive sessions.
Scheduling
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" schedule --project "$(pwd)" --hour 3 --minute 17
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" unschedule --project "$(pwd)"

Installs a nightly cron entry. unschedule --all removes every managed entry.

Common CLI flags

Flag Default Description
--project PATH cwd Project directory to evolve
--scope all|invoked invoked Harvest scope
--backend mock|claude|codex|copilot|handoff|azure_openai mock Backend (mock = no provider calls)
--model NAME backend default Override the model used for replay
--source claude|codex|auto claude Transcript source
--lookback-hours N 72 Harvest window
--max-sessions N derived Cap harvested sessions; defaults to 3 × max tasks (120 with current defaults)
--max-tasks N 40 Cap mined tasks
--target-skill-path PATH ~/.claude/skills/skillopt-sleep-learned/SKILL.md Explicit SKILL.md to evolve
--tasks-file PATH — Reviewed TaskRecord JSON (skip harvest)
--progress off Print phase progress to stderr
--auto-adopt off Auto-adopt if gate passes
--edit-budget N 4 Max bounded edits per night
--preferences TEXT empty Add house rules to the optimizer's reflection prior
--json off Machine-readable JSON output

The CLI also has source/runtime path overrides (--claude-home, --codex-home, and --codex-path) and action-specific flags. Use python -m skillopt_sleep <action> --help as the authoritative surface.

Config keys (~/.skillopt-sleep/config.json)

Beyond the CLI flags, advanced behavior is controlled via config:

  • preferences — free-text house rules injected into the optimizer's reflect step (e.g. "Always use async/await", "Answers in \boxed{}").
  • gate_mode — on (default, validation-gated) or off (greedy, accept all edits).
  • gate_metric — hard, soft, or mixed (default). Controls how the held-out gate scores.
  • gate_no_regression — false by default. Set to true to reject a candidate when any validation task's configured gate score decreases.
  • dream_rollouts — >1 enables multi-rollout contrastive reflection per task.
  • recall_k — >0 recalls K similar past tasks into the dream (long-term memory).
  • evolve_memory / evolve_skill — independently toggle CLAUDE.md vs SKILL.md consolidation.

Memory consolidation

The sleep cycle can consolidate both:

  • SKILL.md — the managed skill file (bounded edits: add/delete/replace)
  • CLAUDE.md — the project memory (same bounded edits)

With the default gate enabled, both are evaluated by the same held-out score. Set evolve_memory: false to consolidate only skills, or evolve_skill: false for only memory.

Hard rules

  • Never hand-edit the user's CLAUDE.md / SKILL.md as part of this skill. Let the engine's explicit adopt or user-requested --auto-adopt path apply the staging manifest and back up existing live files first.
  • Harvest is read-only. mock replay has no side effects.
  • Real backends send truncated transcript excerpts and derived tasks to the selected provider for mining, replay, judging, and reflection. The Claude transcript path is not guaranteed to remove every secret before those calls. Review provider policy and session contents first. For sensitive data, use mock or run harvest --output <file>, inspect/redact the JSON, set "reviewed": true, and replay it with --tasks-file; real backends refuse an unreviewed task file.
  • Always show the user the held-out baseline → candidate score and the exact proposed edits before suggesting adoption. Evidence before adoption.
  • If asked to demonstrate the mechanism without provider calls, run python -m skillopt_sleep.experiments.run_experiment --persona researcher --json — a deterministic synthetic demo of held-out lift and gate rejection. It validates the mechanism, not effectiveness on the user's own tasks.

Validate / demo

# deterministic synthetic demo (no API): score rises and the gate blocks a regression
python -m skillopt_sleep.experiments.run_experiment --persona researcher --assert-improves
python -m skillopt_sleep.experiments.run_experiment --persona programmer  --assert-improves

See the SkillOpt-Sleep documentation for recorded results, limitations, and the supported integration surface.

1---
2name: skillopt-sleep
3description: "Use when the user wants their Claude agent to self-improve from past usage, asks about a nightly/offline 'sleep' or 'dream' cycle, memory/skill consolidation, or says things like 'make my agent better the more I use it', 'review my past sessions', 'learn my preferences', 'consolidate what you learned', 'run the sleep cycle', or wants to schedule background self-optimization. Drives the skillopt_sleep engine: harvest past sessions -> mine recurring tasks -> replay through a selected backend -> consolidate validated CLAUDE.md/SKILL.md behind a held-out gate."
4---
5 
6# SkillOpt-Sleep: usage-driven self-evolution for a local Claude agent
7 
8SkillOpt-Sleep gives the user's agent a **sleep cycle**. On demand or on a
9nightly schedule, it reviews real past Claude Code sessions, re-runs recurring
10tasks through the selected backend, and consolidates what it
11learns into **memory** (`CLAUDE.md`) and **skills** (`SKILL.md`). With the
12default validation gate enabled, it keeps only changes that improve a held-out
13score. Live files change only through explicit adoption or a user-requested
14`--auto-adopt`. It aims to improve this user's recurring work, while making
15each accepted proposal measurable on the run's held-out tasks,
16with no model-weight training. It is the deployment-time analogue of training:
17short-term experience → long-term competence.
18 
19It synthesizes three ideas:
20- **SkillOpt** — the skill/memory doc is trainable text; bounded add/delete/replace
21 edits; accepted only through a held-out gate; rejected edits are recorded in
22 the run report for review.
23- **Claude Dreams** — consolidation that reads past sessions and proposes changes
24 inside protected learned blocks; the input is never mutated, and output is
25 reviewed before adoption.
26- **Agent sleep** — periodic background replay turns episodes into durable skill.
27 
28## When to use this skill
29 
30Trigger when the user wants any of:
31- "make my agent learn from how I use it" / "get better the more I use it" / "remember my preferences across sessions"
32- a nightly/scheduled or on-demand **offline self-improvement / dream / sleep** run
33- to **review past sessions/trajectories** and distill recurring tasks
34- to **consolidate** feedback into `CLAUDE.md` or a managed skill
35- to **schedule** the cycle (cron) or **adopt** a staged proposal
36 
37## The cycle (six stages)
38 
391. **Harvest** — read `~/.claude/projects/*/<session>.jsonl` + `~/.claude/history.jsonl` (READ-ONLY) → session digests.
402. **Mine** — digests → `TaskRecord`s (recurring intents + outcome labels + checkable refs where possible).
413. **Replay** — re-run tasks through the selected backend under the *current*
42 skill+memory → (hard, soft) scores.
434. **Consolidate** — reflect on failures → propose bounded edits → **gate** on a held-out slice; with the default gate enabled, accept only if it strictly improves.
445. **Stage** — write the accepted `proposed_CLAUDE.md` and/or
45 `proposed_SKILL.md`, plus `report.md`, `report.json`, `manifest.json`, and
46 `diagnostics.json` into `<project>/.skillopt-sleep/staging/<timestamp>/`.
47 **Nothing live changes.** A rejected run still has a report but no proposed
48 live-file replacement.
496. **Adopt** — explicit (or opt-in auto): copy staged files over live ones, backing up first.
50 
51## How to drive it
52 
53Prefer the `/skillopt-sleep` command. Under the hood it calls the bundled runner:
54 
55```bash
56"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" status # what's happened
57"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" dry-run --project "$(pwd)" # no-staging preview
58"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" run --project "$(pwd)" # full cycle, stages a proposal
59"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" adopt --project "$(pwd)" # apply staged proposal (with backup)
60```
61 
62- Default backend is `mock` (deterministic, **no API spend**) — good for trying the plumbing.
63- Add `--backend claude` or `--backend codex` to spend the user's real budget
64 for model-driven optimization. A held-out gain is run-specific evidence, not
65 a guarantee of broader improvement; results depend on the tasks, model, and
66 checks.
67- Scope defaults to the invoked project; `--scope all` harvests every Claude
68 project into the current run's configured targets.
69- A real backend sends truncated transcript/task content to its provider. See
70 the data-boundary rules below before using one with sensitive sessions.
71 
72### Scheduling
73 
74```bash
75"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" schedule --project "$(pwd)" --hour 3 --minute 17
76"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" unschedule --project "$(pwd)"
77```
78 
79Installs a nightly cron entry. `unschedule --all` removes every managed entry.
80 
81## Common CLI flags
82 
83| Flag | Default | Description |
84|------|---------|-------------|
85| `--project PATH` | cwd | Project directory to evolve |
86| `--scope all\|invoked` | invoked | Harvest scope |
87| `--backend mock\|claude\|codex\|copilot\|handoff\|azure_openai` | mock | Backend (mock = no provider calls) |
88| `--model NAME` | backend default | Override the model used for replay |
89| `--source claude\|codex\|auto` | claude | Transcript source |
90| `--lookback-hours N` | 72 | Harvest window |
91| `--max-sessions N` | derived | Cap harvested sessions; defaults to 3 × max tasks (120 with current defaults) |
92| `--max-tasks N` | 40 | Cap mined tasks |
93| `--target-skill-path PATH` | `~/.claude/skills/skillopt-sleep-learned/SKILL.md` | Explicit SKILL.md to evolve |
94| `--tasks-file PATH` | — | Reviewed TaskRecord JSON (skip harvest) |
95| `--progress` | off | Print phase progress to stderr |
96| `--auto-adopt` | off | Auto-adopt if gate passes |
97| `--edit-budget N` | 4 | Max bounded edits per night |
98| `--preferences TEXT` | empty | Add house rules to the optimizer's reflection prior |
99| `--json` | off | Machine-readable JSON output |
100 
101The CLI also has source/runtime path overrides (`--claude-home`, `--codex-home`,
102and `--codex-path`) and action-specific flags. Use
103`python -m skillopt_sleep <action> --help` as the authoritative surface.
104 
105## Config keys (`~/.skillopt-sleep/config.json`)
106 
107Beyond the CLI flags, advanced behavior is controlled via config:
108 
109- **`preferences`** — free-text house rules injected into the optimizer's reflect step (e.g. "Always use async/await", "Answers in `\boxed{}`").
110- **`gate_mode`** — `on` (default, validation-gated) or `off` (greedy, accept all edits).
111- **`gate_metric`** — `hard`, `soft`, or `mixed` (default). Controls how the held-out gate scores.
112- **`gate_no_regression`** — `false` by default. Set to `true` to reject a candidate when any validation task's configured gate score decreases.
113- **`dream_rollouts`** — >1 enables multi-rollout contrastive reflection per task.
114- **`recall_k`** — >0 recalls K similar past tasks into the dream (long-term memory).
115- **`evolve_memory`** / **`evolve_skill`** — independently toggle CLAUDE.md vs SKILL.md consolidation.
116 
117## Memory consolidation
118 
119The sleep cycle can consolidate both:
120- **SKILL.md** — the managed skill file (bounded edits: add/delete/replace)
121- **CLAUDE.md** — the project memory (same bounded edits)
122 
123With the default gate enabled, both are evaluated by the same held-out score.
124Set `evolve_memory: false` to consolidate only skills, or `evolve_skill: false`
125for only memory.
126 
127## Hard rules
128 
129- **Never** hand-edit the user's `CLAUDE.md` / `SKILL.md` as part of this skill.
130 Let the engine's explicit `adopt` or user-requested `--auto-adopt` path apply
131 the staging manifest and back up existing live files first.
132- Harvest is read-only. `mock` replay has no side effects.
133- Real backends send truncated transcript excerpts and derived tasks to the
134 selected provider for mining, replay, judging, and reflection. The Claude
135 transcript path is not guaranteed to remove every secret before those calls.
136 Review provider policy and session contents first. For sensitive data, use
137 `mock` or run `harvest --output <file>`, inspect/redact the JSON, set
138 `"reviewed": true`, and replay it with `--tasks-file`; real backends refuse an
139 unreviewed task file.
140- Always show the user the **held-out baseline → candidate** score and the
141 exact proposed edits before suggesting adoption. Evidence before adoption.
142- If asked to demonstrate the mechanism without provider calls, run
143 `python -m skillopt_sleep.experiments.run_experiment --persona researcher --json`
144 — a deterministic synthetic demo of held-out lift and gate rejection. It
145 validates the mechanism, not effectiveness on the user's own tasks.
146 
147## Validate / demo
148 
149```bash
150# deterministic synthetic demo (no API): score rises and the gate blocks a regression
151python -m skillopt_sleep.experiments.run_experiment --persona researcher --assert-improves
152python -m skillopt_sleep.experiments.run_experiment --persona programmer --assert-improves
153```
154 
155See the [SkillOpt-Sleep documentation](https://github.com/microsoft/SkillOpt/tree/main/docs/sleep)
156for recorded results, limitations, and the supported integration surface.
157 
View all files on GitHub →

Details

Updated
Sep 5, 2026
License
MIT
Stars on the repo
★ 17,328
Checked
Source
microsoft/SkillOpt ↗
Creator
microsoft · 31 listings
View creator

Similar skills

See all →
SkillTests in real browsers via Chrome DevTools MCPBrowser testing with devtoolsaddyosmani/agent-skills · by addyosmaniTests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze network requests, profile performance, or verify visual output with real runtime data. Requires the chrome-devtools MCP server to be configured.★ 98.7k GitHub starsMCPThis MCP server attempts to exercise all the featuresEverything MCP Servermodelcontextprotocol/servers · by modelcontextprotocolThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test…★ 90.5k GitHub starsMCPA Model Context Protocol server that provides web contentFetch MCP Servermodelcontextprotocol/servers · by modelcontextprotocolA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content…★ 90.5k GitHub starsMCPNode.js server implementing Model Context ProtocolFilesystem MCP Servermodelcontextprotocol/servers · by modelcontextprotocolNode.js server implementing Model Context Protocol (MCP) for filesystem operations.★ 90.5k GitHub starsSkillAbout libraries, frameworks, API referencesContext7 MCPupstash/context7 · by upstashThis skill should be used when the user asks about libraries, frameworks, API references, or needs code examples. Activates for setup questions, code generation involving libraries, or mentions of specific frameworks like React, Vue, Next.js, Prisma, Supabase, etc.★ 62.3k GitHub starsSkillUses Chrome DevTools via MCP for efficient debuggingChromeDevTools/chrome-devtools-mcp · by ChromeDevToolsUses Chrome DevTools via MCP for efficient debugging, troubleshooting and browser automation. Use when debugging web pages, automating browser interactions, analyzing performance, or inspecting network requests. This skill does not apply to `--slim` mode (MCP configuration).★ 52.4k GitHub stars

More from microsoft

MCPYour AI opens pages, clicksPlaywright MCPmicrosoft/playwright-mcp · by microsoftMicrosoft's browser automation server: your AI opens pages, clicks, fills forms and reads the page through the accessibility tree.★ 37.5k GitHub starsSkillFrom a business idea, app ideaAzure app onboardmicrosoft/skills · by microsoftEnd-to-end orchestrator: from a business idea, app idea, or existing app to running Azure deployment with cost estimates and pre-deploy approval. Analyzes your app, auto-detects the right Azure services, scaffolds infrastructure code, and deploys — tailored to your app, not a template. Handles moving existing apps to Azure without rewriting or with minimal changes. WHEN: bring your app to Azure, plan my app, cost to run, is my code ready to deploy, deploy my app to the cloud, deploy all my services, what Azure services do I need, plan my Azure deployment, deploy my new app to Azure, one-click deploy, I have an app and want it on Azure, migrate my app to Azure, help me get started, build an app, no code yet, starter project. DO NOT USE FOR: use azd for deployment(use azure-deploy), optimizing existing costs (use cost-optimization), code readiness checks only (use azure-app-onboard-prereq).★ 3.1k GitHub starsSkillAssess whether source code is ready to deploy to AzureAzure App Onboard Prereq — Repository Evaluationmicrosoft/skills · by microsoftAssess whether source code is ready to deploy to Azure — the check BEFORE infrastructure work. Evaluates build health, app completeness, dependencies and local services, stack compatibility, and deployment feasibility. Answers questions about what your app needs before it can be deployed — frameworks, dependencies, and configuration. Checks whether dependencies are compatible and identifies deployment blockers and unsupported frameworks. WHEN: "evaluate my repo", "is my app ready to deploy", "what does my app need to deploy", "what do I need before deploying", "does my app need", "can I ship this to Azure", "scan my repo for issues", "is this app deployable", "check if my app is ready for Azure", "do I need a Dockerfile", "what's blocking my deployment", "are there any blockers", "are my dependencies compatible", "does Azure support my framework", "what needs to change before deploying", "check my app configuration".★ 3.1k GitHub starsSkillRun Azure compliance and security audits with azqr plus KeyAzure Compliance & Security Auditingmicrosoft/skills · by microsoftRun Azure compliance and security audits with azqr plus Key Vault expiration checks. Covers best-practice assessment, resource review, policy/compliance validation, and security posture checks. WHEN: compliance scan, security audit, BEFORE running azqr (compliance cli tool), Azure best practices, Key Vault expiration check, expired certificates, expiring secrets, orphaned resources, compliance assessment.★ 3.1k GitHub starsSkillConfigure Azure API Management as an AI Gateway for AIAzure aigatewaymicrosoft/azure-skills · by microsoftConfigure Azure API Management as an AI Gateway for AI models, MCP tools, and agents. WHEN: semantic caching, token limit, content safety, load balancing, AI model governance, MCP rate limiting, jailbreak detection, add Azure OpenAI backend, add AI Foundry model, test AI gateway, LLM policies, configure AI backend, token metrics, AI cost control, convert API to MCP, import OpenAPI to gateway.★ 1.6k GitHub starsSkillQuery and analyze data in Azure Data Explorer using KQLAzure Data Explorer (Kusto) Query & Analyticsmicrosoft/azure-skills · by microsoftQuery and analyze data in Azure Data Explorer (Kusto/ADX) using KQL for log analytics, telemetry, and time series analysis. WHEN: KQL queries, Kusto database queries, Azure Data Explorer, ADX clusters, log analytics, time series data, IoT telemetry, anomaly detection.★ 1.6k GitHub stars