eval-review
Skill0 starsChanged 12 days agoApache-2.0View on GitHub
Validates and reviews Google ADK evalsets and eval configs. Checks schema (eval_set_id format, conversation versus conversation_scenario, required fields), catches the keys ADK silently ignores, cross-checks every expected tool call and argument against the agent's real tools and Pydantic constraints, lints rubric wording, checks metric and backend compatibility, and measures coverage against the agent's instruction. Use when asked to "validate/lint/check my evalset or eval config", "why does adk eval reject this file", "are my eval cases any good", "what is my eval coverage", or before trusting a suite you did not write. Report only - it never edits. Don't use to author new cases (use `/adk:eval-create`), to choose metrics and thresholds (use `/adk:eval-criteria`), to run evals (use `/adk:eval-run`), or to interpret results (use `/adk:eval-analyze`).
1 other project uses a version of this.
Adopted by
Most recently taken up by
- buildomator/buildomatortheir own version, first seen Nov 4, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- buildomator/buildomator★ 102same 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 repository10 other files it gives its agents.
- adkSkill
- agent-createSkill
- agent-debugSkill
- agent-reviewSkill
- eval-analyzeSkill
- eval-ciSkill
- eval-createSkill
- eval-criteriaSkill
- eval-runSkill
- eval-simulationSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 92
Never edit a golden trace to make a check pass: If a case looks wrong, say why and let the user decide.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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
Review ADK evalsets and configs
An evalset is a specification. This skill checks that it says what its author
meant, that ADK will read it that way, and that it covers what the agent
promises. It reports; it does not edit. Fixing is /adk:eval-create or
/adk:eval-criteria, after the user has seen the findings.
${CLAUDE_SKILL_DIR} is set by the skill runtime to this skill's own
directory. Use it verbatim in every command below; a sibling skill's scripts
are at ${CLAUDE_SKILL_DIR}/../<skill>/scripts/.
Flow
Discover and validate. Three scripts, cheap and deterministic:
python3 ${CLAUDE_SKILL_DIR}/scripts/validate_evalset.py <agent-dir-or-file> python3 ${CLAUDE_SKILL_DIR}/scripts/crosscheck_tools.py <agent-dir-or-file> --agent-dir <agent> python3 ${CLAUDE_SKILL_DIR}/scripts/coverage_matrix.py <agent-dir>For the config, call the sibling skill's validator:
python3 ${CLAUDE_SKILL_DIR}/../eval-criteria/scripts/validate_config.py <config> --agent-dir <agent>- Report. Show
Found, then errors, warnings and notes in that order, then the coverage gaps. Lead with the count: "3 errors, 6 warnings, 7 cases short of branch coverage." - Options. Typically: fix the schema errors, close the coverage gaps, adjust the criteria, or migrate a legacy file. All are free; the work happens in another skill.
- Confirm, then hand off with the
Skilltool. Do not start editing here.
What the checks are looking for
Three classes, and the middle one is why this skill exists.
ADK will reject it. eval_set_id outside ^[a-zA-Z0-9_]+$, a case with both
conversation and conversation_scenario, a missing user_content.
ADK accepts it and ignores it. Eval cases allow unknown keys, and criterion
objects do too, so a misspelled field raises nothing and silently changes
nothing. Also here: a per-case or per-invocation rubric with no type (no
criterion will read it), and an expected call to a tool that does not exist (it can never match, so the
case fails forever without telling you anything).
It runs, but it proves less than you think. A threshold of 0, ignore_args
turned on, a rubric asking for a 1-5 rating, a suite with no case designed to
fail, a branch in the instruction with no case at all.
Decision rules
- An expected call to a nonexistent tool is an error, not a warning. The case can never pass, and it will be read as an agent regression.
- A reference-based metric with threshold 0 needs no reference response.
Disabling
response_match_scoreis the normal way to run a trajectory-first suite; an emptyfinal_responseis then a note, not a fault. session_input.app_namemismatches are warnings. The run still works, since the eval runner takes itsapp_namefrom the session the case creates. What breaks is scoping:app:state, memory and artifacts live under that name.- Coverage is evidence, not a verdict. Rule-to-case matching is heuristic. Present uncovered branches as questions for the user, not as failures.
- Per-turn rubrics are a released-version trap. Through ADK 2.13.0 every
judge reply is matched against the last turn's rubric list, so a turn whose
list differs loses its own verdicts and the case can pass with a failing
rubric.
EVS121warns (info on a newer runner); suggest one list for every turn or case-level rubrics. Arubric_idrepeated between case and turn (EVS122) stops the whole run after inference, so it is an error. - Never edit a golden trace to make a check pass. If a case looks wrong, say why and let the user decide; a changed specification is a decision, not a fix.
References
| Question | File |
| Every finding id, what triggers it, and the ADK source behind it | validation-rules.md |
| How arguments are matched, and why nesting matters | tool-crosscheck.md |
| Reading the coverage matrix, the branch rule and suite shape | coverage-matrix.md |
| Judging case quality beyond what a script can check | quality-review.md |
Scripts
| Command | Checks | Exit codes |
scripts/validate_evalset.py <path> [--agent-dir D] [--config F] [--adk-version V] [--strict] [--json] | schema, ids, structure, app_name, rubrics (EVS082: a missing text_property is an error below 2.12, a warning otherwise; --adk-version overrides the detected runner), load_skill for an unregistered skill (EVS074), a seeded state key the agent never reads (EVS075, info, needs --agent-dir), a drive-qualified eval_set_id / app_name that 2.13 rejects (EVS076), rubric lists that differ between turns (EVS121, warn ≤ 2.13.0, info newer; with --config, only the types its rubric metrics read), a rubric_id repeated across case and turn (EVS122) | 0 clean, 1 findings, 2 bad target |
scripts/crosscheck_tools.py <path> --agent-dir D [--json] | tool names, argument nesting, Literal/regex/bounds | 0 clean, 1 findings, 2 bad target |
scripts/coverage_matrix.py <agent-dir> [--evalset F] [--json] | branch coverage, suite shape, tool coverage, skills no case activates (EVS073) | 0 no gaps, 1 gaps, 2 bad target |
scripts/validate_eval_yaml.py [path] [--strict] [--json] | every EVAL.yaml under an adk-recipes plugin skill, plugin or repository: cases[].id/prompt/rubric/assertions, known assertion types and their fields, duplicate ids, empty rubrics (EVY001–EVY010); never runs the cases | 0 no errors, 1 errors (or warnings with --strict), 2 nothing to check (no EVAL.yaml under the path) |
Completion checklist
- All three validators were run, and their counts reported (plus
validate_eval_yaml.pywhen the target is anEVAL.yaml). - Every error was explained with its fix, not just its id.
- Coverage gaps were named as specific uncovered branches.
- Nothing was edited; the user chose what happens next.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

