agentleFS
alexaiarchitectalexaiarchitect/google-adk-skills/skills/eval-review/SKILL.md

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

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    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.

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
  1. Distinctive:

    Never edit a golden trace to make a check pass: If a case looks wrong, say why and let the user decide.

    line 92

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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

  1. 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>
  2. 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."
  3. 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.
  4. Confirm, then hand off with the Skill tool. 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_score is the normal way to run a trajectory-first suite; an empty final_response is then a note, not a fault.
  • session_input.app_name mismatches are warnings. The run still works, since the eval runner takes its app_name from 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. EVS121 warns (info on a newer runner); suggest one list for every turn or case-level rubrics. A rubric_id repeated 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

QuestionFile
Every finding id, what triggers it, and the ADK source behind itvalidation-rules.md
How arguments are matched, and why nesting matterstool-crosscheck.md
Reading the coverage matrix, the branch rule and suite shapecoverage-matrix.md
Judging case quality beyond what a script can checkquality-review.md

Scripts

CommandChecksExit 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/bounds0 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 cases0 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.py when the target is an EVAL.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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.