Skip to content
Development
Skill

/output-eval-audit

Audit an existing eval suite for trustworthiness. Use when inheriting evals, suspecting evals miss real failures, or after significant pipeline changes.

From plugin
output
44451 skills5 agents

Claude Code

$ npx -y skills add growthxai/output --skill output-eval-audit --agent claude-code

SKILL.md

output-eval-audit.SKILL.md
name: output-eval-audit
description: Audit an existing eval suite for trustworthiness. Use when inheriting evals, suspecting evals miss real failures, or after significant pipeline changes.
allowed-tools: [Bash, Read]

Auditing an Eval Suite

Overview

Audit your eval suite to determine whether it actually catches real failures. This skill provides a structured diagnostic that identifies gaps in error analysis, evaluator design, judge validation, and dataset coverage, with concrete remediation steps for each finding.

When to Use

  • Inheriting an eval suite from another team or developer
  • Suspecting that evals pass but production quality is poor
  • After switching models, rewriting prompts, or changing pipeline logic
  • Periodic health check (quarterly or after major releases)

Step 1: Gather Artifacts

Read the eval infrastructure files for the workflow being audited:

src/workflows/<workflow_name>/
├── tests/
│   ├── datasets/           # YAML dataset files
│   │   ├── *.yml
│   │   └── ...
│   └── evals/
│       ├── evaluators.ts   # Evaluator definitions
│       ├── workflow.ts      # Eval workflow definition
│       └── *.prompt         # Judge prompt files

Inventory what exists:

| Artifact | File(s) | Count | |----------|---------|-------| | Evaluators | `tests/evals/evaluators.ts` | ? | | Eval workflow | `tests/evals/workflow.ts` | ? entries in `evals` array | | Judge prompts | `tests/evals/*.prompt` | ? | | Datasets | `tests/datasets/*.yml` | ? | | Datasets with ground_truth | ? of above | ? | | Datasets with last_output | ? of above | ? |

If any of these are missing entirely, note it and skip to "Starting From Zero" at the bottom.

Step 2: Run the Diagnostic

Evaluate each of the four areas below. For each, assign a status:

  • **Pass** — Meets the standard
  • **Warn** — Partially meets the standard, improvements needed
  • **Fail** — Does not meet the standard, significant risk

---

Area 1: Error Analysis Grounding

**Question:** Were the evaluators derived from observed failure modes in real workflow traces?

**Check:**

  • Do failure categories exist (documented in a file, comments, or commit history)?
  • Does each evaluator map to a specific failure category?
  • Or are evaluators measuring generic qualities ("quality score", "overall rating")?

**Pass criteria:**

  • Each evaluator targets a named failure mode (e.g., "check_tone" targets tone mismatch, not "evaluate general quality")
  • Failure categories were derived from reviewing real traces (not brainstormed)

**Common failures:**

  • Evaluators named `evaluate_quality`, `check_overall`, `rate_output` — generic, not grounded in observed failures
  • Evaluators were written based on what seemed important, not what actually fails
  • No evidence of trace review before evaluator creation

**Remediation:** `output-eval-error-analysis` — Review 50+ traces and categorize actual failure modes before modifying evaluators

---

Area 2: Evaluator Design

**Question:** Are the evaluators well-designed for reliable automated evaluation?

**Check each evaluator in `tests/evals/evaluators.ts`:**

| Check | What to look for | |-------|------------------| | One failure mode per judge | Each `judgeVerdict()` evaluator targets exactly one criterion | | Binary verdicts | Judge prompts use pass/fail, not Likert scales (1-5) or multi-axis ratings | | Code-based where possible | Objective checks use `Verdict.*` helpers, not LLM judges | | Few-shot examples in judges | Judge `.prompt` files include pass, fail, and borderline examples | | Critique before verdict | Judge prompts request critique/reasoning before the verdict in structured output | | Appropriate criticality | `required` for blocking failures, `informational` for nice-to-have checks | | Correct interpret type | `interpret` config matches what the evaluator returns |

**Pass criteria:**

  • All checks above are met for every evaluator

**Common failures:**

  • A single judge prompt evaluates 3+ criteria simultaneously ("Rate tone, accuracy, and completeness")
  • Judge prompts have no few-shot examples
  • Deterministic checks (length, string contains, regex) use LLM judges instead of `Verdict.*`
  • `interpret` type doesn't match evaluator return type (e.g., `judgeVerdict()` with `interpret: { type: 'boolean' }`)

**Remediation:** `output-eval-judge-prompt` — Redesign judge prompts following the four-component structure

---

Area 3: Judge Validation

**Question:** Have LLM judges been validated against human labels?

**Check for each LLM-based evaluator (those using `judgeVerdict()`, `judgeScore()`, `judgeLabel()`):**

| Check | What to look for | |-------|------------------| | Human labels exist | Datasets have `ground_truth.evals.<evaluator_name>.verdict` populated | | TPR/TNR measured | Validation results documented (file, comment, or commit) | | Train/dev/test split | Few-shot examples in the judge prompt come from a designated train split, not from the same data used for measurement | | Metrics meet threshold | TPR > 80% and TNR > 80% (target: > 90%) |

**Pass criteria:**

  • Every LLM judge has documented TPR/TNR metrics above 80%
  • Train/dev/test split was used (no data leakage)

**Common failures:**

  • No validation at all — judges were written and immediately deployed
  • Few-shot examples in the judge prompt are the same examples used to measure metrics (data leakage)
  • "It seems to work" without quantitative measurement
  • Only raw accuracy reported (masks class imbalance)

**Remediation:** `output-eval-validate-judge` — Calibrate each judge against human labels using TPR/TNR

---

Area 4: Dataset Coverage

**Question:** Do the datasets adequately cover the failure space?

**Check:**

| Check | What to look for | |-------|------------------| | Dataset count | Minimum 10 for simple workflows, 20+ for complex ones | | Diversity | Datasets vary across multiple input dimensions, not just happy paths | | Failure representation | At least 30% of datasets have

Read more
@growthxai
Ships withoutput

The open-source TypeScript framework for building AI workflows and agents. Designed for Claude Code — describe what you want, Claude builds it, with all the best practices already in place. One framework.

44451 skills5 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
444
Star history of growthxai/output on GitHub, a chart by star-history.com

Other skills on output.

output-build-workflow

output-build-workflow

Implement an Output SDK workflow from a plan document. Use when the user asks to build, implement, or code a workflow from an…

@growthxai@growthxaiInstall Skill
output-credentials-edit

output-credentials-edi…

View, edit, and set encrypted credentials in an Output.ai project. Use when adding secrets, updating API keys, verifying…

@growthxai@growthxaiInstall Skill
output-credentials-init

output-credentials-ini…

Initialize encrypted credentials for an Output.ai project. Use when setting up credentials for the first time, adding…

@growthxai@growthxaiInstall Skill
output-debug-workflow

output-debug-workflow

Debug Output SDK workflow issues. Use when user reports a workflow failing, erroring, hanging, producing wrong results, or asks…

@growthxai@growthxaiInstall Skill
output-dev-agent-class

output-dev-agent-class

Use the Agent class for multi-step tool loops, conversation history, streaming progress, and reusable LLM agents. Use when…

@growthxai@growthxaiInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about output-eval-audit.

Which coding agents can use output-eval-audit?
output-eval-audit installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.