review-eval-run
Skill3.7k starsChanged 8 months agoApache-2.0View on GitHub
This skill should be used when the user asks to "review an eval run", "check a benchmark run", "investigate eval results", "are these failures real", or shares a GitHub Actions eval/benchmark run URL or Braintrust experiment and wants to know whether failures are model failures or bad evals.
- Reads credentials
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 27
If the run is still in progress, check gh run view <id> --json status,jobs first.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Reviewing an Eval Run
Goal: separate real model failures from broken evals, harness bugs and judge mistakes before anyone trusts the numbers.
Step 1: Get the inputs and run the checks
The run's pytest report (eval_results.json, in the eval-results-<run_id> artifact) is the source of truth for pass/fail, answers, the judge's rationale (judge_rationale), provider errors and skill-check failures. Braintrust (experiment ci-benchmark-<run_id>) only adds trace links and tool spans: it drops rows, and the script warns which runs it is missing.
# A run id downloads the artifact (cached under $TMPDIR/review-eval-run/<run_id>/);
# a path to eval_results.json works too.
poetry run python .claude/skills/review-eval-run/review_eval_run.py <run_id> \
--baseline <previous_run_id | eval_results.json | committed report .md> \
--exclude-tests 101_loki_historical_logs_pod_deleted,... \
--model <newest-model> [--min-cache 50] [--braintrust <events.json | experiment>] [--no-braintrust]- Artifact by hand:
gh api repos/HolmesGPT/holmesgpt/actions/runs/<run_id>/artifactsfor the id, thengh api repos/HolmesGPT/holmesgpt/actions/artifacts/<id>/zip > results.zip. Artifacts expire; a committed report then works as the baseline (docs/development/evaluations/history/results_*.md, orgit show <commit>:docs/development/evaluations/fast-benchmark-results.md) but carries only status and cost per run. - Full job log:
gh run view <run_id> --json jobsfor the job id, thengh api repos/HolmesGPT/holmesgpt/actions/jobs/<job_id>/logs > job.log. The GitHub MCPget_job_logsreturns only the last 5,000 lines. - Network:
api.braintrust.dev(withBRAINTRUST_API_KEY; logging eval runs also needswww.braintrust.dev, where the SDK logs in), and the blob host GitHub redirects artifact and log downloads to,productionresultssa<N>.blob.core.windows.net.Ndiffers per run (sa2,sa6,sa11seen), so allow the wildcard; a 403 "Forbidden" fromgh api .../zipmeans that shard is blocked. - If the run is still in progress, check
gh run view <id> --json status,jobsfirst.
The script output is a guideline, not a verdict: it only catches known patterns. Always also open the failing traces in Braintrust, read the rendered prompts and tool outputs, and look for anything the script doesn't check.
Step 2: Act on each section
Pass rate and cost: per model, raw (passed / all runs) and clean (passed / executed runs, without the --exclude-tests eval bugs), next to the baseline. Cost is the sum of per-test cost, as in the markdown report; COST SPIKE means more than 1.5× the baseline. Models new to this run show no baseline. Compare clean rates: raw rates move with provider outages.
Regressions vs baseline: tests a model passed in every baseline run and now fails at least once. Read each before calling it a model regression; fixture changes between the two runs show up here too.
Never-executed runs: ⚠️ provider errors, ⏱️ timeouts/rate limits, setup failures, skips and crashes before the model answered. They say nothing about the model; report them apart and leave them out of success rates.
Skill-check failures: runs failed by the deterministic skill-suggestion check (fail_reason), with the judge's own verdict and the suggested skill titles. A correct judge verdict means the answer was right and only the suggestion was wrong — report these apart from wrong answers, and decide whether the suggested skill was genuinely bad or the eval's memories_generated: false is too strict. Reports from before ROB-1715 show not recorded: the check overwrote the judge's score.
Suspect tests: each pattern almost always means an eval problem, not a model problem. Only executed runs count.
fails for N/M models that ran it(one iteration per test) — at least half the models fail it. Check the fixture data and whether outputs actually contain the expected answer.fails for every model— check the harness/feature flags the test depends on (e.g.enable_todovsDISABLED_BY_DEFAULTinholmes/core/prompt.py).passes only on first iteration— shared setup state decays between iterations (iterations run ~35 min apart on the same cluster). Compare tool outputs of iteration 1 vs 2: if the same query returns data thenNone, the fixture is broken (e.g. Loki flushing idle streams).no model passes every iteration— read the failing outputs; flaky setup or an over-strictexpected_output.
Prompt caching: every model should be at or above --min-cache (default 50%). LOW means the prompt prefix is changing between calls (e.g. timestamps or per-call data early in the system prompt); NOT REPORTED means the provider/litellm returns no cached_tokens — say so, don't call it a caching bug.
Tool errors: high rates usually mean a broken toolset config or port-forward in the fixture; the most frequent error is printed (repeated Refusing to run this tool call means the model is looping on one call).
Failures for --model: for every failure, compare OUTPUT against EXPECTED and the tool calls, then classify:
- Eval/harness bug — the data the model needed wasn't there, or a required tool/prompt was missing.
- Judge false negative — the output contains the expected answer but was scored 0.
- Real model failure — the data was available in tool output and the model missed or misread it.
Quote the specific tool output or line of the answer that proves each verdict.
Step 3: Report
End with one table: Test | Verdict (eval bug / judge false negative / real failure) | Evidence, plus success rates recomputed without the eval-bug tests.
Other things worth checking
- Latency regressions against the previous benchmark:
compare_with_benchmarkintests/llm/utils/braintrust_history.py. - Runs that hit
max_stepsor timed out (long duration, no final answer). - Rendered
system_promptin the eval metadata missing a component the test expects.
Running evals locally
CI builds the model list from the MODEL_LIST_YAML secret, which can't be read outside Actions. Locally, write your own and point MODEL_LIST_FILE_LOCATION at it. Each top-level key is the model name passed in MODEL (comma-separated) and its value is litellm parameters; {{ env.X }} is filled from the environment:
sonnet-5.5-medium:
model: bedrock/global.anthropic.claude-sonnet-5-5
aws_access_key_id: '{{ env.EVALS_AWS_ACCESS_KEY_ID }}'
aws_secret_access_key: '{{ env.EVALS_AWS_SECRET_ACCESS_KEY }}'
aws_region_name: us-east-1
reasoning_effort: medium
kimi-k3:
model: openrouter/moonshotai/kimi-k3
api_key: '{{ env.EVALS_OPENROUTER_API_KEY }}'By convention the credentials live in EVALS_-prefixed variables so they don't collide with the provider SDKs' own: EVALS_AWS_ACCESS_KEY_ID / EVALS_AWS_SECRET_ACCESS_KEY (Bedrock Claude models), EVALS_AZURE_SWEDEN_API_KEY (Azure gpt-6.1-sol, also the judge), EVALS_OPENAI_API_KEY, EVALS_GEMINI_API_KEY and EVALS_OPENROUTER_API_KEY (deepseek, kimi, glm, qwen). Keep only the benchmark models (DEFAULT_BENCHMARK_MODELS in .github/workflows/eval-benchmarks.yaml) plus the judge (set CLASSIFIER_MODEL to its name), and allow each provider's host: bedrock-runtime.<region>.amazonaws.com, *.cognitiveservices.azure.com, api.openai.com, generativelanguage.googleapis.com, openrouter.ai.
Trending
Steady talk.about the whole repository
Who's talking about robusta-dev/holmesgpt
- cncf/sandbox“[Sandbox] HolmesGPT”GitHub · Jun 15, 2025 · 37 reactions
- @kube.archi“HolmesGPT is a tool that investigates incidents and provides root cause analysis for various issues, …”Bluesky · Jul 10, 2025 · 4 likes
- A Hacker News story“HolmesGPT – The Open Source On-Call/DevOps Agent”Hacker News · Aug 23, 2024 · 4 points
- vscode-kubernetes-tools/vscode-kubernetes-tools“Feature Request: Add HolmesGPT as a built-in diagnostic command for Kubernetes clusters”GitHub · Feb 3, 2026 · 3 reactions
- HolmesGPT/holmesgpt“HolmesGPT Operator (checks)”GitHub · Sep 22, 2025 · 3 reactions
The biggest 5 of 55 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 55
Talked about on GitHub, Hacker News and Bluesky (55 times).
On GitHub · 50
- Jun 15, 2025[Sandbox] HolmesGPT — cncf/sandbox37 reactions · 22 comments
- Feb 3, 2026Feature Request: Add HolmesGPT as a built-in diagnostic command for Kubernetes clusters — vscode-kubernetes-tools/vscode-kubernetes-tools3 reactions · 1 comment
- Sep 22, 2025HolmesGPT Operator (checks) — HolmesGPT/holmesgpt3 reactions
- Oct 6, 2025feat: Add experimental AG-UI supported chat endpoint and PPL query assist — HolmesGPT/holmesgpt1 reaction · 10 comments
- Jul 21, 2025Interactive mode: show truncation line in /show — HolmesGPT/holmesgpt1 reaction
45 more on GitHub
- May 25, 2025fix typer compatibility issue — HolmesGPT/holmesgpt1 reaction · 2 comments
- Mar 14, 2025brew install fails on ubuntu 22.04 — HolmesGPT/holmesgpt1 reaction · 2 comments
- Oct 12, 2026Broken links detected by scheduled check — be-next/awesome-performance-engineering0 reactions · 1 comment
- Aug 1, 2026docs(1806): Tier C PR3b batch 1 — mechanical HAPI/HolmesGPT -> KA sweep (37 files) — jordigilh/kubernaut0 reactions
- Mar 31, 2026Support pluggable LLM providers — eliminate mandatory Anthropic API key for local use — muras3/3am0 reactions · 1 comment
- Mar 26, 2026feat: add holmesgpt.dev CRD schemas (HealthCheck, ScheduledHealthCheck v1alpha1) — datreeio/CRDs-catalog0 reactions
- Mar 15, 2026Pin HolmesGPT submodule to commit 85ce5b39 and remove branch=master tracking — jordigilh/kubernaut0 reactions
- Feb 3, 2026analysisコマンド: 根本原因分析(RCA)の実装 — 3-shake/alert-menta0 reactions
- Dec 18, 2025chore(deps): update dependency holmesgpt/holmesgpt to v0.17.0 — uniget-org/tools0 reactions · 3 comments
- Nov 9, 2025helm: Add dedicated clusterName Helm value — HolmesGPT/holmesgpt0 reactions · 1 comment
- Nov 3, 2025Change license to apache 2.0 — HolmesGPT/holmesgpt0 reactions · 4 comments
- Oct 27, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.21.0 — killo431/tools0 reactions
- Oct 13, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.16.0 — uniget-org/tools0 reactions · 1 comment
- Oct 7, 2025fix: allow the user to config api key in config file — HolmesGPT/holmesgpt0 reactions · 2 comments
- Oct 3, 2025[DRAFT] Add experimental AG-UI supported chat endpoint and PPL query assist — kylehounslow/holmesgpt0 reactions
- Sep 16, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.14.2 — uniget-org/tools0 reactions · 3 comments
- Sep 7, 2025add free form tempo toolset — HolmesGPT/holmesgpt0 reactions · 2 comments
- Sep 4, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.13.3 — uniget-org/tools0 reactions · 1 comment
- Aug 27, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.13.1 — uniget-org/tools0 reactions · 3 comments
- Aug 22, 2025Fixes to `holmes version` — HolmesGPT/holmesgpt0 reactions · 5 comments
- Aug 21, 2025holmes version does not return expectedly — HolmesGPT/holmesgpt0 reactions · 2 comments
- Aug 19, 2025toolset/mcp: Add support for enum for input schema — HolmesGPT/holmesgpt0 reactions · 4 comments
- Aug 15, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.12.5 — uniget-org/tools0 reactions · 3 comments
- Aug 13, 2025Fix case sensitivity in model cost-lookup — HolmesGPT/holmesgpt0 reactions · 3 comments
- Aug 4, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.12.4 — uniget-org/tools0 reactions · 3 comments
- Jul 31, 2025make agent name in welcome banner configurable — HolmesGPT/holmesgpt0 reactions · 2 comments
- Jul 28, 2025[ROB-1732] Holmes able to unzip logs from findings — HolmesGPT/holmesgpt0 reactions · 2 comments
- Jul 25, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.12.3 — uniget-org/tools0 reactions · 3 comments
- Jul 22, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.12.0 — uniget-org/tools0 reactions · 3 comments
- Jul 22, 2025Support otel for tracing llm calls — HolmesGPT/holmesgpt0 reactions · 2 comments
- Jul 18, 2025feat: add flag to refresh toolsets status — HolmesGPT/holmesgpt0 reactions · 2 comments
- Jul 17, 2025ROB-1740: datadog metrics toolset — HolmesGPT/holmesgpt0 reactions · 2 comments
- Jul 3, 2025homesgpt complain `invalid sort-by value` for --sort-by=.lastTimestamp, which is valid — HolmesGPT/holmesgpt0 reactions · 2 comments
- Jul 1, 2025chore: check toolset prerequisites in parallel — HolmesGPT/holmesgpt0 reactions · 3 comments
- Jun 25, 2025Tool output can be printed out of order due to parallel tool calling — HolmesGPT/holmesgpt0 reactions
- Jun 17, 2025bash toolset breaks — HolmesGPT/holmesgpt0 reactions · 1 comment
- Jun 5, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.11.5 — uniget-org/tools0 reactions · 3 comments
- May 16, 2025Broken install because of codesign failure — robusta-dev/homebrew-holmesgpt0 reactions · 2 comments
- May 16, 2025Speed up cli startup time — HolmesGPT/holmesgpt0 reactions · 5 comments
- May 13, 2025Wrong permissions prevent `codesign` from succeeding — Homebrew/brew0 reactions · 4 comments
- May 13, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.11.4 — uniget-org/tools0 reactions · 3 comments
- May 12, 2025chore(deps): update dependency robusta-dev/holmesgpt to v0.11.1 — uniget-org/tools0 reactions · 3 comments
- May 6, 2025[bug]The CLI install instructions , does not install the latest version of Holmes GPT — HolmesGPT/holmesgpt0 reactions · 4 comments
- Mar 19, 2025Installing 0.10.3-alpha shows error using brew on M1 — HolmesGPT/holmesgpt0 reactions · 1 comment
- Feb 11, 2025How to set temperature from 0.00000001 to 0.01 — HolmesGPT/holmesgpt0 reactions · 2 comments
On Hacker News · 3
- Aug 23, 2024HolmesGPT – The Open Source On-Call/DevOps Agent4 points
- Mar 24, 2025Show HN: HolmesGPT – OSS AI Agent for On-Call and Observability2 points
- Nov 6, 2024Show HN: We released an AI Agent for Prometheus alerts and on-call1 point
On Bluesky · 2
- Jul 10, 2025HolmesGPT is a tool that investigates incidents and provides root cause analysis for various issues, including Kubernetes, Prometheus,… — @kube.archi4 likes and reposts
- Jun 10, 2025HolmesGPT is a tool that investigates incidents and provides root cause analysis for various issues, including Kubernetes, Prometheus,… — @kube.archi3 likes and reposts · 1 reply
Other versions1 project uses a version of this.
Word for word · 1
- HolmesGPT/holmesgpt★ 3.7k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- benchmark-judgeSkill
- create-evalSkill
- patch-cveSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

