Official agent skill

Sanity Radar Investigate

by sanity-io in sanity-io/sanity

Investigate a suspected Studio performance regression surfaced by Studio Radar or the bench suite — confirm the signal against host calibration, narrow the commit range, confirm with an A/B…

OfficialMITAuto-check passedDevelopment

Install Sanity Radar Investigate

skills CLI
$ npx skills add sanity-io/sanity --skill sanity-radar-investigate -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sanity-io/sanity sanity-radar-investigate --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sanity-io/sanity.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/sanity-radar-investigate .claude/skills/sanity-radar-investigate && rm -rf skills-src

Use ~/.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/

Facts

Skill name
sanity-radar-investigate
GitHub stars
6.4k
Token cost
~1.5k tokens
SKILL.md length
708 words
Files
1
Skills in repo
34
Repo updated
First seen
Licence
MIT

At a glance

Investigate a suspected Studio performance regression surfaced by Studio Radar or the bench suite — confirm the signal against host calibration, narrow the commit range, confirm with an A/B…

  • Works in 7 steps: Pin the signal. From the prompt/flag:… → Rule out the host and the harness.… → Narrow the range. GitHub compare… → …
  • Handed a Radar investigation prompt (starts with Investigate a suspected performance regression in the sanity-io/sanity monorepo)
  • SKILL.md covers Rules that keep the verdict…, Procedure and Priors from past investigations
  • Calls gh and pnpm

What it does

Sanity Radar Investigate is an agent skill from sanity-io/sanity, published by the product's own GitHub organization. Investigate a suspected Studio performance regression surfaced by Studio Radar or the bench suite — confirm the signal against host calibration, narrow the commit range, confirm with an A/B dispatch, bisect, and name the culprit or call it noise. Use when handed a Radar "investigation prompt" (starts with "Investigate a suspected performance regression in the sanity-io/sanity monorepo"), a drift flag, a red 🔴 verdict in a bench PR comment, or asked whether commit X, PR Y or release Z regressed a studio metric.

Its SKILL.md is about 1.5k 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 Development, covering Performance reviews and Monorepo tooling. The repository describes itself as: Sanity Studio – Rapidly configure content workspaces powered by structured content. The licence is MIT.

When your agent uses it

  • Handed a Radar investigation prompt (starts with Investigate a suspected performance regression in the sanity-io/sanity monorepo)
  • A red 🔴 verdict in a bench PR comment
  • Asked whether commit X
  • Release Z regressed a studio metric

Example prompts

  • “investigation prompt”
  • “/sanity-radar-investigate”

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Pin the signal. From the prompt/flag: series (scenario · metric), the suspicious run's sha and the previous run's sha, the delta. Fetch…
  2. Rule out the host and the harness. Calibration and CPU model steady across the step → proceed. Otherwise note it and let the A/B decide…
  3. Narrow the range. GitHub compare https://github.com/sanity-io/sanity/compare/... or the gitCommit window query. Shortlist commits that…
  4. Confirm with an A/B dispatch (the same harness CI uses, bootstrap-gated verdicts)
  5. Bisect if the range is long. Halve with further dispatches: log₂(N) runs find the commit. Each result is stored, so a session survives…
  6. Reproduce locally when the mechanism is unclear (numbers are host-relative; use for profiling, not verdicts)
  7. Report. Culprit sha + PR (or "host"/"noise"), the metric table (reference → experiment, Δ with CI, verdict) copied from the A/B run, the…

What it can do on your machine

Read from SKILL.md and the folder at commit efa15fb. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • pnpm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh and pnpm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Sanity Radar Investigate loads about 1.5k tokens when it runs. Until then it costs about 135 tokens; SKILL.md has 708 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~135
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from sanity-io/sanity at commit efa15fb, republished under its MIT licence (© sanity-io). 708 words, ~1,483 tokens.

Download SKILL.mdSave it as .claude/skills/sanity-radar-investigate/SKILL.md (or your agent's skills folder).
name
sanity-radar-investigate
description
Investigate a suspected Studio performance regression surfaced by Studio Radar or the bench suite — confirm the signal against host calibration, narrow the commit range, confirm with an A/B dispatch, bisect, and name the culprit or call it noise. Use when handed a Radar "investigation prompt" (starts with "Investigate a suspected performance regression in the sanity-io/sanity monorepo"), a drift flag, a red 🔴 verdict in a bench PR comment, or asked whether commit X, PR Y or release Z regressed a studio metric.

Investigating a studio performance regression

The output is a verdict with evidence: culprit commit/PR, host or harness artifact, or noise. Trend points are host-relative daily samples; only an interleaved A/B run decides. Data access and query shapes are in the sanity-radar skill (references/groq-recipes.md); dispatching runs is in sanity-bench.

Rules that keep the verdict honest

  • Never conclude from two absolute points. Run-to-run noise on main is ~12% at the median, above the gate's 5% threshold. A point-to-point delta is a hypothesis, an A/B verdict is evidence.
  • Read the host first. runner.calibrationMs (higher = slower) and runner.cpuModel per run and per scenario shard. A metric step that coincides with a calibration step, or a CPU model change, is the host until an A/B says otherwise. GitHub rotates runner hardware under the same vCPU shape.
  • Check the instrument. A Playwright/Chromium bump moves INP and vitals with no studio change (runner.browserVersion). A change under perf/bench/ (scenario, mock, harness) moves everything in that scenario at once.
  • ⚪ inconclusive means widen, not shrug. The CI stayed too wide within the budget; re-dispatch, or look at which side had failures (scenarios[].failures).
  • A level step is not a leak. DOM nodes, listeners or heap moving to a new plateau (and staying) is a behavior change; the soak slope (soak) is what detects leaks.
  • Say what you did not verify. A shortlist is a shortlist until a dispatch confirms it.

Procedure

  1. Pin the signal. From the prompt/flag: series (scenario · metric), the suspicious run's sha and the previous run's sha, the delta. Fetch both runs with calibration/cpuModel/browserVersion, and every other run of the same sha (re-runs exist; if a re-run on a faster host reproduces the value, it is the commit). Confirm the metric moved on the same field in other scenarios or stayed local to one.
  2. Rule out the host and the harness. Calibration and CPU model steady across the step → proceed. Otherwise note it and let the A/B decide; do not stop here, a real regression can land on a slow day.
  3. Narrow the range. GitHub compare https://github.com/sanity-io/sanity/compare/<from>...<to> or the gitCommit window query. Shortlist commits that could move this metric: studio runtime under packages/sanity/src, dependency bumps (@sanity/ui, react, rxjs, styled-components, vite), build config, perf/bench itself. Ignore docs/test/CI-only commits unless the harness is the suspect.
  4. Confirm with an A/B dispatch (the same harness CI uses, bootstrap-gated verdicts):
    bash
    gh workflow run bench.yml -R sanity-io/sanity -f ab_from=<full reference sha> -f ab_to=<full experiment sha>
    gh run list -R sanity-io/sanity --workflow bench.yml --event workflow_dispatch --limit 3   # find the run id
    gh run watch -R sanity-io/sanity <run-id>
    gh run view  -R sanity-io/sanity <run-id> --json jobs --jq '.jobs[] | {name, conclusion}'
    ~30 minutes. The verdict table is on the run's summary page (gh run view --web), and the comparison is stored as a mode: "ab" benchRun (Comparisons tool, or the GROQ recipe). Both builds fail loudly; a failed build/build-reference job usually means one sha predates the tarball recipe or does not install with --frozen-lockfile.
  5. Bisect if the range is long. Halve with further dispatches: log₂(N) runs find the commit. Each result is stored, so a session survives context loss — list mode == "ab" runs to resume. For regressions a human can see (jank, a slow open) use the Radar Bisect tool instead: it walks the first-parent chain and hands out each commit's testStudioUrl preview build.
  6. Reproduce locally when the mechanism is unclear (numbers are host-relative; use for profiling, not verdicts):
    bash
    pnpm build:bench && pnpm bench run --scenario <scenario> --sessions 4 --headed
    pnpm bench prepare-backfill --sha <sha>   # build a historical commit into perf/bench/dist
    LoAF attribution (scenarios[].loafAttribution) and CLS attribution in the stored run name the scripts/elements involved.
  7. Report. Culprit sha + PR (or "host"/"noise"), the metric table (reference → experiment, Δ with CI, verdict) copied from the A/B run, the mechanism if known, confidence, and what was not checked. Note whether the change is a deliberate trade (say so, and where the trade is documented) or an unintended regression worth a fix or an upstream issue. For a shipped regression, attribute it to the release that first contained the commit (Releases tool → "Add regression" creates the record).
Show full SKILL.md (95 more words)Show less

Priors from past investigations

  • @sanity/ui v4 (bdf98a3448) doubled DOM nodes and listeners across every scenario: overlays keep children mounted via <Activity>. A deliberate level step, not a leak — but it also added an auth round trip at boot by mounting deferred workspace-menu probes.
  • Auth round trips (boot-cold · auth round trips, auth in flight) grow by whole emulated round trips (~45ms each) — count real requests in resources.experiment.byClass[endpointClass == "auth"][0].count (the session-wide ledger), not just the boot window.
  • Runs of one sha often differ by ~20% of calibration across hosts; that is the noise floor for absolute reads.

© sanity-io, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/sanity-radar-investigate of sanity-io/sanity.

Open the folder on GitHubat commit efa15fb

Compare with similar skills

Sanity Radar Investigate 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.

Sanity Radar Investigate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Sanity Radar Investigate this skillsanity-io/sanity6.4k—~1.5kAutomated safety check: PassMIT
Pioreactor CLIPioreactor/pioreactor149—~1.2kAutomated safety check: PassMIT
Reviewpigweed-project/pigweed548—~3kAutomated safety check: PassApache-2.0
Routine Abstraction Improverbex-co/beancount-io296—~810Automated safety check: PassMIT
Routine Dup Unifierbex-co/beancount-io296—~837Automated safety check: PassMIT
Routine Logic Simplifierbex-co/beancount-io296—~834Automated safety check: PassMIT

Similar skills

  • Pioreactor CLI

    Pioreactor/pioreactor

    A skill your agent uses when running, debugging, documenting, or changing Pioreactor command-line workflows with pio or pios, including local job control, logs, MQTT, config, plugins, calibrations…

    149 GitHub stars~1.2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Review

    pigweed-project/pigweed

    High-signal, embedded-aware Pigweed code review skill with strict comment calibration.

    548 GitHub stars~3k tokensUpdated today
    DevelopmentAuto-check passed
  • Routine Abstraction Improver

    bex-co/beancount-io

    Autonomous maintenance routine that flattens over-engineered abstractions in a monorepo package — interfaces with one implementation and no stated reason, passthrough wrappers, one-product…

    296 GitHub stars~810 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Routine Dup Unifier

    bex-co/beancount-io

    Autonomous maintenance routine that finds duplicated implementations of the same logic within one monorepo package, merges them into the single best copy, repoints every caller, deletes the rest…

    296 GitHub stars~837 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Routine Logic Simplifier

    bex-co/beancount-io

    Autonomous maintenance routine that finds one convoluted unit of business logic in a monorepo package — deep nesting, boolean spaghetti, interleaved concerns — pins its behavior with tests…

    296 GitHub stars~834 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Nx Import

    nrwl/nx

    Import, merge, or combine repositories into an Nx workspace using nx import.

    29k GitHub starsUsed in 6 repos~3.5k tokens
    DevelopmentAuto-check passed

More from sanity-io/sanity

All 34 skills in this repo
  • Playwright CLI

    sanity-io/sanity

    Official

    Automates browser interactions for web testing, form filling, screenshots, and data extraction.

    6.4k GitHub starsUsed in 18 repos~1.9k tokens
    Auto-check passed
  • Find Skills

    sanity-io/sanity

    Official

    Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities.

    6.4k GitHub starsUsed in 67 repos~1.2k tokens
    Auto-check passed
  • Official

    React and Next.js performance optimization guidelines from Vercel Engineering.

    6.4k GitHub starsUsed in 129 repos~1.6k tokens
    Auto-check passed
  • Before And After

    sanity-io/sanity

    Official

    Add existing screenshots or screen recordings to a GitHub pull request as a before/after or preview block.

    6.4k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • React Devtools

    sanity-io/sanity

    Official

    React DevTools CLI for AI agents. An agent skill from sanity-io/sanity.

    6.4k GitHub starsUsed in 3 repos~2.1k tokens
    Auto-check passed
  • TDD

    sanity-io/sanity

    Official

    Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.

    6.4k GitHub starsUsed in 20 repos~1k tokens
    Auto-check passed

Questions about Sanity Radar Investigate

What does Sanity Radar Investigate do?

Investigate a suspected Studio performance regression surfaced by Studio Radar or the bench suite — confirm the signal against host calibration, narrow the commit range, confirm with an A/B…. Sanity Radar Investigate is an agent skill from sanity-io/sanity, published by the product's own GitHub organization. Investigate a suspected Studio performance regression surfaced by Studio Radar or the bench suite — confirm the signal against host calibration, narrow the commit range, confirm with an A/B dispatch, bisect, and name the culprit or call it noise.

When should I use Sanity Radar Investigate?

Sanity Radar Investigate fits situations like: handed a Radar investigation prompt (starts with Investigate a suspected performance regression in the sanity-io/sanity monorepo); A red 🔴 verdict in a bench PR comment; asked whether commit X; release Z regressed a studio metric.

How do I install Sanity Radar Investigate in Claude Code?

Run `npx skills add sanity-io/sanity --skill sanity-radar-investigate -a claude-code`. Or copy the skill folder (.agents/skills/sanity-radar-investigate in sanity-io/sanity) into .claude/skills/sanity-radar-investigate in your project. Claude Code loads it when a task matches its description.

How do I install Sanity Radar Investigate in Codex?

Run `npx skills add sanity-io/sanity --skill sanity-radar-investigate -a codex`. Or copy the skill folder (.agents/skills/sanity-radar-investigate in sanity-io/sanity) into .agents/skills/sanity-radar-investigate in your project. Codex loads it when a task matches its description.

Can I use Sanity Radar Investigate in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sanity-io/sanity --skill sanity-radar-investigate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sanity-radar-investigate, .gemini/skills/sanity-radar-investigate, .github/skills/sanity-radar-investigate and .opencode/skills/sanity-radar-investigate in your project.

What does Sanity Radar Investigate need to run?

Going by SKILL.md and its folder, Sanity Radar Investigate needs the command-line tools its instructions call (gh and pnpm).

Does Sanity Radar Investigate access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Sanity Radar Investigate safe to install?

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.

What licence does Sanity Radar Investigate use?

Sanity Radar Investigate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Sanity Radar Investigate use?

About 1.5k tokens (SKILL.md is roughly 5.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Sanity Radar Investigate?

Skills that share tags, products or a category with Sanity Radar Investigate: Pioreactor CLI (Pioreactor/pioreactor, 149 stars), Review (pigweed-project/pigweed, 548 stars), Routine Abstraction Improver (bex-co/beancount-io, 296 stars) and Routine Dup Unifier (bex-co/beancount-io, 296 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Sanity Radar Investigate?

sanity-io (a GitHub organization, an official publisher) maintains it in sanity-io/sanity, which has 6,352 GitHub stars. The repository holds 34 skills in this directory. The repository was last updated on October 9, 2026.

Source: sanity-io/sanity on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.