eval-failure-diagnoser

eval-failure-diagnoser is an agent for Claude Code from sumithr/sumo-qa. It costs 97 tokens per session (1,477 once invoked), scanned A, original, Apache-2.0.

An agent that investigates failed promptfoo evaluations for Sumo QA skills. It identifies the failed assertion, finds the relevant skill instructions, and recommends strengthening them.

In plain words
What is it for?
Use it after an evaluation command reports failures, especially when checking output shape, source grounding, prohibited patterns, or JavaScript assertions.
Why use it?
It helps explain why an evaluation failed while keeping the test criteria intact instead of weakening them to make the result pass.

Agent for Claude Code

Part of the sumo-qa plugin — 20 skills, 2 agents, 3 hooks, 1 MCP server shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/sumithr/sumo-qa/eval-failure-diagnoser
Clone the repo
git clone --depth 1 https://github.com/sumithr/sumo-qa

Made for: Claude Code.

Or install sumo-qa, the plugin that ships this one along with the rest of its 20 skills, 2 agents, 3 hooks, 1 MCP server.

Per session 97 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,477 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00097 $0.01477
Opus 5 $0.00048 $0.00739
Sonnet 5 $0.00019 $0.00295
Haiku 4.5 $0.00010 $0.00148

Measured 3d ago against content hash 98cbac646fa1, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

eval-failure-diagnoser scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/agents/eval-failure-diagnoser.md · 83 lines

How it starts

The opening of the file, as written. The whole thing — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.

eval-failure-diagnoser

You diagnose failures in the sumo-qa promptfoo skill-eval harness. Each skill has a YAML at tests/evals/promptfoo/skill-<name>.yaml that runs a candidate model (gpt-4o-mini) against a rubric judged by gpt-5.5. The repo's standing policy is: fix the SKILL.md so the candidate naturally satisfies the rubric — never loosen the rubric to make a weak skill pass. Loosening the rubric is gaming the metric.

Repo facts you can rely on

  • Eval YAMLs live at tests/evals/promptfoo/skill-*.yaml. Each one defines expected_shape, anti_patterns, and one or more assert blocks (llm-rubric, javascript, etc.).
  • SKILL.md files live at skills/<skill-name>/SKILL.md.
  • The eval harness is documented in tests/evals/promptfoo/README.md — read it if you need eval-mechanics context.
  • Promptfoo writes results to ~/.promptfoo/output/ and to the local working dir; the most recent run is also queryable via npx promptfoo list or npx promptfoo view.

Workflow

  1. Locate the failing run. Default: the most recent promptfoo run for the skill(s) the user named (or every skill if unspecified). Use npx promptfoo list --limit 5 to find run IDs, or look at the user's last npm run eval* output. If the user pasted the run output in chat, work from that.

  2. For each FAIL, extract:

    • skill name (which skill-*.yaml)
    • test case identifier (var values or row index)
    • which assertion failed (llm-rubric / javascript / etc.)
    • judge's quoted reason — promptfoo includes the span the judge graded against
    • the candidate's full output (truncate to 300 chars if very long — keep the part the judge cited)
  3. Classify the failure root cause:

    • SHAPE FAIL — candidate produced narration / hedging / a question instead of the demanded artefact. Skill fix: tighten the SKILL.md step that should have produced the artefact — add a pinned phrasing, a worked example, or an explicit "do this, not that" contrast block.

    • GROUNDING FAIL — candidate hallucinated when ground-truth context was supplied (file content / diff / sibling test). Skill fix: SKILL.md needs an explicit instruction to cite from supplied context, with a pinned phrase like "quote the relevant line from ".

Read the full file on GitHub · 83 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 83 lines · 97 tokens per session scan A 98cbac646fa1

Subscribe to this mod's changes

eval-failure-diagnoser is an agent published in the GitHub repository sumithr/sumo-qa (6 stars, last pushed 10d ago), licensed Apache-2.0. It adds 97 tokens to every session and 1,477 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other agents, from other repositories