create-eval
Skill3.7k starsChanged 8 months agoApache-2.0View on GitHub
This skill should be used when the user asks to "create an eval", "write an eval test", "add a new eval", "create a test case", "write a test for Holmes", or discusses LLM evaluation tests, eval fixtures, or test_case.yaml files for the HolmesGPT project.
We split this skill into the rules it gives an agent
21 rules. About 0 are common, 11 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 30
Check existing tests to find the next available number:
- Very specific: line 40
Only use tags that exist in pyproject.toml markers section.
- Distinctive: line 70
When the test requires specific toolsets (Prometheus, Grafana, Elasticsearch, etc.):
- Very specific: line 82
When a toolsets.yaml exists, only explicitly enabled toolsets are available to the LLM.
- Very specific: line 88
Always start with set -e to fail on any error
- Very specific: line 89
Use kubectl create namespace app-NNN --dry-run=client -o yaml | kubectl apply -f - for idempotent namespace creation
- Very specific: line 90
Use exit 1 when verification fails to fail the test early
- Distinctive: line 108
Every eval must be designed so the LLM cannot pass by guessing.
- Distinctive: line 112
Test for specific values discoverable only by querying
- Distinctive: line 113
Use neutral resource names that don't hint at the problem
- Distinctive: line 114
Write prompts that test discovery ability, not domain knowledge
- Distinctive: line 120
Always run evals before submitting when possible: Follow this sequence:
- Distinctive: line 136
Verify setup completes without errors.
- Very specific: line 144
Use --skip-setup to reuse the infrastructure from Phase 2.
- Very specific: line 152
Should return NotFound after the test completes (unless --skip-cleanup was used).
- Very specific: line 156
Namespace isolation: Every test uses app-<testid> namespace
- Distinctive: line 157
Unique resource names: Never reuse pod/service names across tests
- Very specific: line 158
No
:latesttags: Always use specific container image versions - Distinctive: line 159
Secrets for scripts: Use Kubernetes Secrets for scripts, not ConfigMaps or inline
- Very specific: line 160
No hints in names: Avoid broken-pod, crashloop-app — use neutral names
- Distinctive: line 161
Sign commits: Always use git commit -s for DCO compliance
≈ “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
Creating HolmesGPT Eval Tests
This skill provides the complete workflow for creating LLM evaluation tests in the HolmesGPT project. Eval tests validate that Holmes can correctly answer questions by querying real infrastructure and services.
Test Structure
Each eval lives in its own directory under tests/llm/fixtures/test_ask_holmes/:
tests/llm/fixtures/test_ask_holmes/<NNN>_<descriptive_name>/
├── test_case.yaml # Required: test definition
├── toolsets.yaml # Optional: enable specific toolsets
├── manifest.yaml # Optional: Kubernetes manifests
├── generate_*.py # Optional: data generation scripts
└── other supporting filesNaming convention: <3-digit-number>_<snake_case_description> (e.g., 212_large_configmap_needle).
Creation Workflow
Step 1: Choose Test Number and Namespace
Check existing tests to find the next available number:
ls tests/llm/fixtures/test_ask_holmes/ | sort -n | tail -5The namespace must be app-<testid> (e.g., app-212). All pod and resource names must be unique across all tests.
Step 2: Validate Tags
Only use tags that exist in pyproject.toml markers section. Using invalid tags causes test collection failures. Read pyproject.toml and check the [tool.pytest.ini_options] markers list before assigning tags. Ask the user before adding any new tag.
Step 3: Write test_case.yaml
Core fields:
user_prompt: "Specific question for Holmes to answer"
expected_output:
- "Criterion 1: Must report exact value X"
- "Criterion 2: Must include specific identifier Y"
tags:
- kubernetes
- question-answer
- hard
before_test: |
set -e
# Setup infrastructure...
after_test: |
kubectl delete namespace app-NNN --ignore-not-foundFor the complete field reference and all available options, consult references/test-case-format.md.
Step 4: Write toolsets.yaml (if needed)
When the test requires specific toolsets (Prometheus, Grafana, Elasticsearch, etc.):
toolsets:
kubernetes/core:
enabled: true
prometheus/metrics:
enabled: true
config:
prometheus_url: http://localhost:10033When a toolsets.yaml exists, only explicitly enabled toolsets are available to the LLM. All others are disabled.
Step 5: Write Setup Scripts
The before_test script runs from the test's directory via /bin/bash. Key rules:
- Always start with
set -eto fail on any error - Use
kubectl create namespace app-NNN --dry-run=client -o yaml | kubectl apply -f -for idempotent namespace creation - Use
exit 1when verification fails to fail the test early - Clean up temp files at the end of before_test
Verification focus: verify the needle, not the haystack. The only verification that matters is that Holmes can discover the answer. Run the same kind of query Holmes would run and check that the expected value (the "smoking gun") is present. Do NOT exhaustively verify every piece of infrastructure — if the needle is queryable, the environment is working. Keep setup scripts short and readable.
# GOOD - verify the needle is discoverable (one targeted check)
kubectl get configmap platform-config -n app-212 \
-o jsonpath='{.data.platform-config\.yaml}' | grep -q '7k3m9x'
# BAD - verifying everything (pod health, service endpoints, API responses, readiness...)
# This bloats the script without adding valueFor retry loop patterns and other infrastructure details, consult references/infrastructure-patterns.md.
Step 6: Design Anti-Hallucination Measures
Every eval must be designed so the LLM cannot pass by guessing. This is the most critical aspect of eval design.
Key principles:
- Embed unique random identifiers that cannot be guessed (e.g.,
7k3m9x) - Test for specific values discoverable only by querying
- Use neutral resource names that don't hint at the problem
- Write prompts that test discovery ability, not domain knowledge
For detailed anti-hallucination patterns and examples, consult references/anti-hallucination.md.
Mandatory Testing Workflow
Always run evals before submitting when possible. Follow this sequence:
Phase 1: Verify Collection
poetry run pytest -k "test_name" --collect-only -q --no-covConfirm the test appears in the output. If not, check for tag or YAML errors.
Phase 2: Run Setup Only
poetry run pytest -k "test_name" --only-setup --no-covVerify setup completes without errors. Check that infrastructure is ready.
Phase 3: Run Full Test
poetry run pytest -k "test_name" --no-cov --skip-setupUse --skip-setup to reuse the infrastructure from Phase 2. Verify the test passes.
Phase 4: Verify Cleanup
kubectl get namespace app-NNNShould return NotFound after the test completes (unless --skip-cleanup was used).
Key Rules
- Namespace isolation: Every test uses
app-<testid>namespace - Unique resource names: Never reuse pod/service names across tests
- No
:latesttags: Always use specific container image versions - Secrets for scripts: Use Kubernetes Secrets for scripts, not ConfigMaps or inline
- No hints in names: Avoid
broken-pod,crashloop-app— use neutral names - Sign commits: Always use
git commit -sfor DCO compliance
Quick Reference: Common Patterns
| Pattern | Example |
| Simple K8s test | Deploy pod, ask about status |
| Log analysis | Generate logs via script, ask Holmes to analyze |
| Metrics query | Deploy Prometheus + exporters, query metrics |
| Large data needle | Create large ConfigMap/resource, find specific value |
| Cloud service | Test against Elasticsearch/external API via env vars |
Additional Resources
Reference Files
For detailed documentation, consult:
references/test-case-format.md— Complete test_case.yaml field reference with all optionsreferences/anti-hallucination.md— Anti-cheat testing patterns and prompt designreferences/infrastructure-patterns.md— Setup scripts, retry loops, port forwards, shared infrareferences/running-evals.md— CLI flags, environment variables, model comparison, debugging
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 versions3 projects use a version of this.
Word for word · 1
- HolmesGPT/holmesgpt★ 3.7k100% same
Edited · 0
None found.
Wrote their own version · 2
- UKGovernmentBEIS/inspect_evals★ 731same name
- microsoft/skills-for-copilot-studio★ 486same name
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
- patch-cveSkill
- review-eval-runSkill
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.

