Keeper Stress Analysis
ClickHouse/ClickHouse
Analyze ClickHouse Keeper stress-test results from play.clickhouse.com / keeperstresstests data warehouse.
Selects Garnet spin-wait policies based on the slow-path cost.
$ npx skills add microsoft/garnet --skill adaptive-spin-wait -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/garnet adaptive-spin-wait --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/microsoft/garnet.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/adaptive-spin-wait .claude/skills/adaptive-spin-wait && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "adaptive-spin-wait" agent skill from https://github.com/microsoft/garnet/tree/main/.github/skills/adaptive-spin-wait into .claude/skills/adaptive-spin-wait/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive-spin-wait", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/microsoft/garnet/tree/main/.github/skills/adaptive-spin-waitType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add microsoft/garnet --skill adaptive-spin-wait -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/garnet adaptive-spin-wait --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/garnet.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/adaptive-spin-wait .agents/skills/adaptive-spin-wait && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "adaptive-spin-wait" agent skill from https://github.com/microsoft/garnet/tree/main/.github/skills/adaptive-spin-wait into .agents/skills/adaptive-spin-wait/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive-spin-wait", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/garnet --skill adaptive-spin-wait -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/garnet adaptive-spin-wait --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/garnet.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/adaptive-spin-wait .cursor/skills/adaptive-spin-wait && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "adaptive-spin-wait" agent skill from https://github.com/microsoft/garnet/tree/main/.github/skills/adaptive-spin-wait into .cursor/skills/adaptive-spin-wait/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive-spin-wait", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/microsoft/garnet.git --path .github/skills/adaptive-spin-wait--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add microsoft/garnet --skill adaptive-spin-wait -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/garnet adaptive-spin-wait --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/garnet.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/adaptive-spin-wait .gemini/skills/adaptive-spin-wait && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "adaptive-spin-wait" agent skill from https://github.com/microsoft/garnet/tree/main/.github/skills/adaptive-spin-wait into .gemini/skills/adaptive-spin-wait/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive-spin-wait", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install microsoft/garnet adaptive-spin-waitInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add microsoft/garnet --skill adaptive-spin-wait -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microsoft/garnet.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/adaptive-spin-wait .github/skills/adaptive-spin-wait && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "adaptive-spin-wait" agent skill from https://github.com/microsoft/garnet/tree/main/.github/skills/adaptive-spin-wait into .github/skills/adaptive-spin-wait/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive-spin-wait", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/garnet --skill adaptive-spin-wait -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microsoft/garnet adaptive-spin-wait --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/garnet.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/adaptive-spin-wait .opencode/skills/adaptive-spin-wait && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "adaptive-spin-wait" agent skill from https://github.com/microsoft/garnet/tree/main/.github/skills/adaptive-spin-wait into .opencode/skills/adaptive-spin-wait/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive-spin-wait", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
adaptive-spin-waitSelects Garnet spin-wait policies based on the slow-path cost.
Adaptive Spin Wait is an agent skill from microsoft/garnet, published by the product's own GitHub organization. Selects Garnet spin-wait policies based on the slow-path cost. Use when adding or changing spin loops, busy waits, retry polling, SpinWait, Thread.SpinWait, fixed spin counts, or spin-to-block/backoff transitions.
Its SKILL.md is about 1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Databases. The repository describes itself as: Garnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration… The licence is MIT.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 77d6770. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Adaptive Spin Wait loads about 1k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 442 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from microsoft/garnet at commit 77d6770, republished under its MIT licence (© microsoft). 442 words, ~1,009 tokens.
.claude/skills/adaptive-spin-wait/SKILL.md (or your agent's skills folder).Use this skill whenever code aggressively spins while waiting for another thread or asynchronous operation to make progress.
There is no universal spin policy. Choose based on the expected hold time, condition cost, and
the cost of entering the slow path. Use ConfiguredSpinWait so that choice is explicit at the call
site instead of encoding policy in a raw loop.
Use NextSpinWillYield when the slow path is cheap and should begin as soon as CPU-local spinning
would yield:
var spinner = ConfiguredSpinWait.CpuLocal();
while (true)
{
if (ConditionSatisfied())
return;
if (!spinner.TryWait())
break;
}
WaitSlowPath();This policy performs only CPU-local spins. It does not use SpinWait's allocation-free
Thread.Yield, Sleep(0), or Sleep(1) progression.
Use a measured fixed number of SpinOnce calls when the slow path is comparatively expensive, such
as allocating an asynchronous timer or arming and blocking on a waiter:
var spinner = ConfiguredSpinWait.BoundedProgressive(
maxIterations,
sleep1Threshold: -1);
while (true)
{
if (ConditionSatisfied())
return;
if (!spinner.TryWait())
break;
}
WaitSlowPath();SpinOnce starts with CPU-local spinning and then progressively uses scheduler yielding. Passing
sleep1Threshold: -1 permits Thread.Yield and Sleep(0) but prevents Sleep(1). Use the default
overload when occasional millisecond sleeps are acceptable.
Use bounded Thread.SpinWait only for calibrated ultra-short waits where scheduler yielding would
be more expensive:
for (var i = 0; i < maxIterations && !ConditionSatisfied(); i++)
Thread.SpinWait(pauseIterations);Retain a duration-based loop when the configured or public behavior is explicitly expressed as time.
Do not replace a time budget with an iteration count or NextSpinWillYield.
ConfiguredSpinWait.CpuLocal() or ConfiguredSpinWait.BoundedProgressive(...) for these
policies; do not reproduce their mechanics inline.ValueTask directly when the slow path can complete synchronously. Do not call
AsTask() unless an API specifically requires Task.Exponential backoff is an asynchronous slow path, not a spin policy. Task.Delay can allocate when
the operation suspends. A bounded progressive wait can avoid that cost for short transitions, while
the capped backoff still prevents long-held operations from burning a core. Cap and jitter the delay,
honor cancellation, and measure polling CPU, allocations, and release-to-observation latency.
Exercise at least:
For performance-sensitive changes, compare CPU, allocations, slow-path entry count, wait latency percentiles, and predicate invocation count across short and long hold times. Treat calibrated fixed counts as application-specific values and preserve the benchmark evidence supporting them.
© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/adaptive-spin-wait of microsoft/garnet.
Open the folder on GitHubat commit 77d6770
Adaptive Spin Wait next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Adaptive Spin Wait this skillmicrosoft/garnet | 12k | — | ~1k | Automated safety check: Pass | MIT | |
| Keeper Stress AnalysisClickHouse/ClickHouse | 50k | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| Perf ComparisonClickHouse/ClickHouse | 50k | — | ~3.9k | Automated safety check: Notes | Apache-2.0 | |
| Patch Release CheckClickHouse/ClickHouse | 50k | — | ~4k | Automated safety check: Notes | Apache-2.0 | |
| Evolving The Data ModelTriliumNext/Trilium | 38k | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 | |
| Hybrid Cloud Outboxesgetsentry/sentry | 46k | — | ~4.8k | Automated safety check: Pass | Custom licence |
ClickHouse/ClickHouse
Analyze ClickHouse Keeper stress-test results from play.clickhouse.com / keeperstresstests data warehouse.
ClickHouse/ClickHouse
Evaluate ClickHouse performance test results from existing CI/dashboard data or local perf.py runs.
ClickHouse/ClickHouse
Check whether ClickHouse's supported versions (last 3 majors + latest LTS) have recent stable patch releases, diagnose why the scheduled AutoReleases pipeline failed, and identify which releases…
TriliumNext/Trilium
A skill your agent uses when adding a DB migration or a new column/field to a Becca entity in Trilium ("add a migration", "new column on notes/attributes", "ALTER TABLE", "add a field to…
getsentry/sentry
Guide for creating and maintaining outbox-based eventually consistent operations in Sentry.
4gray/iptvnator
A skill your agent uses when changing Electron SQLite IPC, database-worker operations, request-scoped progress or cancellation, worker packaging, or runtime verification of non-EPG database work.
microsoft/garnet
Checks that a pull request's title and description match its implementation and reviews the code for Garnet best practices, reporting findings without posting them.
microsoft/garnet
Step-by-step guide for adding a new built-in RESP command to Garnet, from the command enum and parser to storage callbacks, command metadata JSON and tests.
Categories
Selects Garnet spin-wait policies based on the slow-path cost. Adaptive Spin Wait is an agent skill from microsoft/garnet, published by the product's own GitHub organization. Selects Garnet spin-wait policies based on the slow-path cost.
Adaptive Spin Wait fits situations like: changing spin loops; thread.SpinWait; fixed spin counts; spin-to-block/backoff transitions.
Run `npx skills add microsoft/garnet --skill adaptive-spin-wait -a claude-code`. Or copy the skill folder (.github/skills/adaptive-spin-wait in microsoft/garnet) into .claude/skills/adaptive-spin-wait in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/garnet --skill adaptive-spin-wait -a codex`. Or copy the skill folder (.github/skills/adaptive-spin-wait in microsoft/garnet) into .agents/skills/adaptive-spin-wait in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/garnet --skill adaptive-spin-wait -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/adaptive-spin-wait, .gemini/skills/adaptive-spin-wait, .github/skills/adaptive-spin-wait and .opencode/skills/adaptive-spin-wait in your project.
SKILL.md names no scripts, command-line tools or credentials: Adaptive Spin Wait is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Adaptive Spin Wait is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1k tokens (SKILL.md is roughly 4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Adaptive Spin Wait: Keeper Stress Analysis (ClickHouse/ClickHouse, 50k stars), Perf Comparison (ClickHouse/ClickHouse, 50k stars), Patch Release Check (ClickHouse/ClickHouse, 50k stars) and Evolving The Data Model (TriliumNext/Trilium, 38k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
microsoft (a GitHub organization, an official publisher) maintains it in microsoft/garnet, which has 12,045 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 8, 2026.
Source: microsoft/garnet on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.