Designs trustworthy LLM/agent evals and optimization loops. Use when building graders, calibrating judges, choosing eval/fine-tune methods, thresholds, or fixing noisy scores.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add majiayu000/claude-skill-registry --skill ai-evals-vasilyu1983-ai-agents-public --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ai Evals Vasilyu1983 Ai Agents Public?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-ai-evals-vasilyu1983-ai-agents-public)More formats (shields.io, HTML) on the badges page.
---
name: ai-evals
description: "Designs trustworthy LLM/agent evals and optimization loops. Use when building graders, calibrating judges, choosing eval/fine-tune methods, thresholds, or fixing noisy scores."
compatibility: Portable core. Works on Claude Code and Codex.
version: "1.3"
last_validated: 2026-07-11
---
# AI Evaluation and Fine-Tuning Methodology Skill
**Core stance**: an eval is an instrument. An untrusted instrument is worse than
no instrument, because it produces confident wrong numbers that ship regressions.
Fine-tuning is an optimization loop around that instrument. If the instrument is
weak, training just makes the model better at gaming bad measurement. This skill
is the cross-domain methodology layer that domain eval and model-lifecycle skills
defer to: how to keep an LLM-as-judge honest, integrate eval frameworks, choose
between prompting/context/tools/test-time compute/SFT/preference/RFT/PEFT/
distillation, derive thresholds instead of guessing them, and stop flaky runs or
training leakage from masquerading as progress.
This is the **methodology umbrella** for evals. Domain skills own *what* to
measure; this skill owns *whether you can trust the measurement*.
- Building an eval system for a **coding agent** -> [ai-coding-agents-observability-evals](../ai-coding-agents-observability-evals/SKILL.md)
- Evaluating **RAG / retrieval / search** -> [ai-rag](../ai-rag/SKILL.md)
- Running **Hub model benchmarks** (inspect-ai, lighteval) -> use the `huggingface-skills:` plugin (external)
- General **LLM lifecycle** decisions -> [ai-llm](../ai-llm/SKILL.md)
- This skill: **judge bias, framework choice, calibration, reproducibility,
optimization technique gates** —
the parts those four share and none owns in depth.
## ASCII Flow
```text
eval need
|
v
define verifiable goal (what would FAIL if the requirement reverted?)
|
v
choose grader
deterministic check -> LLM-as-judge -> human label (cheapest that works)
|
v
control judge bias
position / length / self-preference / verbosity
|
v
derive thresholds from a labeled calibration set (not vibes)
|
v
choose optimization path (prompt/RAG/tools -> SFT -> preference/RFT/PEFT)
|
v
choose inference-time lift (self-consistency / rerank / verify / refine)
|
v
control flake (pass@k, low temp, quarantine unstable cases)
|
v
trustworthy gate -> train / block / ship / rollback
```
## Quick Reference
| Task | Read or Run | Outcome |
|------|-------------|---------|
| Build a (question, ideal-answer) set and tune it | `references/dataset-construction.md` | Sourcing, ideal-answer authoring, run→compare→tune loop |
| Stop a judge from rating its own output high | `references/llm-judge-bias.md` | Self-preference, position, length, verbosity controls |
| Pick / wire an eval framework | `references/framework-integration.md` | inspect-ai, lighteval, Ragas, DeepEval, promptfoo, Braintrust integration snippets + when to use each |
| Choose a pass threshold defensibly | `references/threshold-derivation.md` | Derive thresholds from a labeled set; inter-rater agreement; gate design |
| Stop flaky runs reading as regressions | `references/flake-and-reproducibility.md` | pass@k, seeds, temperature, quarantine, contamination/leakage |
| Decide if "A beats B" is real, size the set | `references/eval-statistics.md` | Bootstrap CIs, McNemar, power/MDE sizing, FDR, variance reduction |
| Get maximum from an LLM | `references/llm-optimization-technique-map.md` | Technique ladder across prompts, data, RAG/tools, test-time compute, SFT, preference/RFT, PEFT, distillation |
| Decide whether and how to fine-tune | `references/fine-tuning-eval-loop.md` | Prompt/RAG/tool baseline, SFT vs preference/RFT vs PEFT, split hygiene, promotion gates |
| Evaluate on live/production traffic | `references/online-production-eval.md` | Offline-online correlation, A/B+guardrails, shadow/canary, drift, regression replay, HITL |
| Evaluate refusals, jailbreaks, harm | `references/safety-redteam-eval.md` | Over/under-refusal, ASR per attack family, injection, harm rubrics, robustness |
| Go beyond one judge | `references/advanced-judging.md` | Juries, fine-tuned judges, CoT/probability scoring, calibration (kappa/ECE), agentic reward |
## When to Use This Skill
Activate when the user asks for:
- An LLM-as-judge / LLM grader and how to keep it honest
- Why eval scores look inflated, noisy, or contradictory
- Which eval framework to use, or how to integrate one
- How to set or justify a pass/fail threshold or release gate
- Pairwise / preference evaluation between two prompts, models, or harnesses
- Reducing eval flakiness, contamination, or testset leakage
- Calibrating a judge against human labels
- Deciding whether to fine-tune, how to select SFT vs preference/RFT vs PEFT, or
whether a fine-tuned model is genuinely better than a prompt/RAG/tool baseline
- Getting maximum performance from an LLM using known techniques, including
prompt/context/tool changes, test-time compute, reranking, distillation, or
post-training
## Scope Boundaries (Use These Skills for Depth)
- **Domain metrics for retrieval** (nDCG/MRR/recall, faithfulness) -> [ai-rag](../ai-rag/SKILL.md)
- **Agent golden tasks, tool-call grading, cost ops** -> [ai-coding-agents-observability-evals](../ai-coding-agents-observability-evals/SKILL.md)
- **Running benchmark harnesses on Hub models** -> use the `huggingface-skills:` plugin (external)
- **Prompt CI/CD and structured output contracts** -> [ai-prompt-engineering](../ai-prompt-engineering/SKILL.md)
- **General model selection, serving, quantization, and deployment economics** ->
[ai-llm](../ai-llm/SKILL.md) and [ai-llm-inference](../ai-llm-inference/SKILL.md)
## Workflow
1. **Transform the vague ask into a verifiable goal.** "Is it good?" is not
gradeable. Ask: which case would fail first if the requirement reverted?
2. **Build the dataset before the grader.** Source real questions, author ideal
answers from the system's allowed context, and plan the run→compare→tune loop
— see `references/dataset-construction.md`. No dataset, no eval.
3. **Pick the cheapest grader that works.** Deterministic check > LLM judge >
human. Reserve the LLM judge for what code cannot decide (Rule 5: use the
model only for judgment calls).
4. **If using an LLM judge, control its bias** before trusting any number — see
`references/llm-judge-bias.md`. Untreated judge bias is the #1 source of
confidently-wrong eval scores. When one judge isn't enough (high stakes, weak
agreement, open-ended), escalate to juries / fine-tuned judges / calibrated
scoring — see `references/advanced-judging.md`.
5. **Control flake and leakage** with pass@k, low judge temperature, seed
pinning, and held-out testsets — see `references/flake-and-reproducibility.md`.
6. **Derive thresholds from a labeled calibration set**, not intuition or copied
targets — see `references/threshold-derivation.md`. **Size the gating set and
judge "A beats B" with statistics** (bootstrap CIs, McNemar, power/MDE, FDR) —
see `references/eval-statistics.md`. A score difference without a CI is not a
result.
7. **Only fine-tune after the baseline has earned it.** Compare prompt/RAG/tool
fixes first, then choose SFT for imitation/style/format/tool-call behavior,
preference/RFT for rubric-scored reasoning or tradeoffs, and PEFT/LoRA/QLoRA
when adapting an open model under compute or deployment constraints — see
`references/fine-tuning-eval-loop.md`. Training loss is telemetry; held-out
behavior is the verdict.
8. **Apply the full optimization ladder, not one pet method.** For maximum LLM
performance, evaluate cheap prompt/context/tool fixes, then inference-time
methods (self-consistency, best-of-N, rerank/verify/refine), then data/SFT,
preference/RFT/RLVR, PEFT, and distillation as the evidence warrants — see
`references/llm-optimization-technique-map.md`. Each technique gets its own
failure mode and gate.
9. **Gate loudly.** A gate that passes while silently skipping cases is a
failure dressed as success (Rule 12: fail loud). Report skipped/quarantined
cases in the gate output.
10. **Extend past the offline gate where the system warrants it.** Add
safety/red-team evaluation (refusal precision/recall, jailbreak ASR,
injection, harm rubrics) — see `references/safety-redteam-eval.md` — and, once
in production, online evaluation (offline-online correlation, A/B with
guardrails, drift, regression replay) — see `references/online-production-eval.md`.
The offline gate is a filter; production is the verdict.
## Core Principles
- **The judge is a model with failure modes.** Treat its scores as one
calibrated input, never as ground truth.
- **Different judge than the one under test.** Self-preference bias is real and
large; never gate on a model grading its own family/config.
- **Behavior, not plausibility.** Rubrics that reward "looks good" reward length
and confidence. Pin rubrics to verifiable behavior.
- **No threshold without a labeled set.** A copied target (">95%") is a guess
until validated on your own distribution.
- **No fine-tune without a baseline and a holdout.** A tuned model that beats no
prompt/RAG/tool baseline, or only wins on the training/dev set, has not earned
release.
- **No "maximum performance" without a technique ladder.** The best result often
comes from composition: cleaner data + stronger retrieval/tool contracts +
calibrated judge + small test-time search + selective post-training. Test the
cheapest credible lift before moving weights.
- **Optimize behavior, not hidden knowledge.** Fine-tune for stable formatting,
domain style, tool-use patterns, rubric-following, or compact specialized
behavior. Use retrieval/context for facts that change or must be cited.
- **Flake is a broken test, not a regression.** A verdict that flips run-to-run
means the eval is wrong, not the system.
- **Held-out or it's contaminated.** If tuning ever saw the eval cases, the
scores are inflated.
- **Goodhart's Law is the default outcome, not an edge case.** Any metric that
becomes a target (a threshold, a bonus, a promotion gate) will eventually be
gamed — by the system under test, by whoever tunes against it, or by the judge
itself. Every trap and anti-pattern in this file is a specific instance of
this one law; treat a metric that stops correlating with the outcome you
actually care about as expected decay, and re-anchor it against production
outcomes or fresh human judgment on a schedule, not only when someone notices.
- **A point estimate is not a result.** Every reported number in this skill's
gates — pass rate, win rate, judge-human agreement — is a sample statistic
with sampling error. Report it with a confidence interval or it is not
reportable; see `references/eval-statistics.md`.
## Known Traps
- Grading an agent with the same model that produced the output (self-preference)
- Comparing two candidates in fixed order and trusting the winner (position bias)
- Copying a `>95%` threshold from a blog without validating it on your data
- One judge call per request with no cheap deterministic pre-filter (cost blowup)
- Treating a run-to-run verdict flip as a real regression instead of quarantining
- Generating a synthetic testset from the same docs used to tune the system
- Reporting "all passed" when some cases were skipped or errored (silent success)
- Claiming "A beats B" from a point estimate with no confidence interval or test
- Gating a small regression on a set far too small to detect it (no power check)
- Tuning safety to block harm without a benign set, so the model over-refuses
- Trusting a seed for reproducibility through a hosted API that isn't deterministic
- Fine-tuning because the prompt is messy, the retrieval is broken, or the tool
contract is ambiguous
- Declaring the fine-tune better from training loss, validation loss, or one
cherry-picked demo instead of a paired held-out eval with CIs
- Letting the training set, grader calibration set, and release gate share cases
- Training a judge or reward model on labels produced only by the same model
family it will later grade
## Common Anti-Patterns
- Vibes-based eval: spot-checking a few outputs and calling it evaluation
- Single-metric gates: one aggregate number hiding per-slice regressions
- LLM-judge-only: no deterministic floor, so the gate inherits the judge's noise
- Threshold-on-the-fly: setting the cutoff after seeing results to make it pass
- Framework-as-strategy: adopting one vendor tool as the whole eval program
- Fine-tune-as-strategy: reaching for SFT/RFT/LoRA before proving the failure is
learned behavior rather than prompt, context, tools, or product spec
- Technique soup: stacking CoT, self-consistency, rerankers, judges, and
post-training without isolating which intervention caused the lift
## Navigation
Resources:
- [references/dataset-construction.md](references/dataset-construction.md) - Sourcing questions, authoring ideal answers, run→compare→tune loop
- [references/llm-judge-bias.md](references/llm-judge-bias.md) - Judge bias taxonomy and controls
- [references/framework-integration.md](references/framework-integration.md) - Framework selection and integration snippets
- [references/threshold-derivation.md](references/threshold-derivation.md) - Deriving thresholds and gates from labeled data
- [references/flake-and-reproducibility.md](references/flake-and-reproducibility.md) - Flake, seeds, contamination, leakage
- [references/eval-statistics.md](references/eval-statistics.md) - Bootstrap CIs, McNemar, power/MDE, FDR, variance reduction
- [references/llm-optimization-technique-map.md](references/llm-optimization-technique-map.md) - Maximum-performance technique ladder and eval gates
- [references/fine-tuning-eval-loop.md](references/fine-tuning-eval-loop.md) - Eval-first fine-tuning decisions, SFT/preference/RFT/PEFT selection, split hygiene, promotion gates
- [references/online-production-eval.md](references/online-production-eval.md) - Offline-online correlation, A/B+guardrails, drift, replay, HITL
- [references/safety-redteam-eval.md](references/safety-redteam-eval.md) - Refusal precision/recall, jailbreak/injection, harm rubrics, robustness
- [references/advanced-judging.md](references/advanced-judging.md) - Juries, fine-tuned judges, scoring methods, calibration, agentic reward
- [data/sources.json](data/sources.json) - Sources to verify against
Related skills:
- [ai-llm](../ai-llm/SKILL.md), [ai-rag](../ai-rag/SKILL.md), [ai-coding-agents-observability-evals](../ai-coding-agents-observability-evals/SKILL.md)
## Fact-Checking
- Eval framework APIs (inspect-ai, lighteval, Ragas, DeepEval, promptfoo,
Braintrust) change across releases. Verify current API and version against
official docs before recommending a specific call or flag.
- Fine-tuning platform support, model eligibility, dataset schemas, and RFT/grader
APIs move quickly. Verify the current official docs before recommending a
specific model, endpoint, hyperparameter, or CLI.
- Optimization-method papers from arXiv are often preprint-only and
benchmark-sensitive. Treat unreplicated methods as `validate`, not `promote`,
until they beat a strong local baseline with cost/latency/safety gates.
- Judge-bias findings (position, length, self-preference) are well-replicated
through 2025-2026, but specific magnitudes are model- and prompt-dependent —
re-measure on your own setup; do not quote a fixed number as universal.
- Fine-tuned-judge models (Prometheus, JudgeLM, and successors) and jailbreak
attack/defense results move fast — verify the current model, license, and
benchmark-agreement claims before recommending a specific judge or asserting a
model is robust to a given attack family.
- Indirect prompt injection is the dominant agentic attack as of 2026; treat any
"the agent is safe against injection" claim as requiring fresh adaptive testing.
- Statistics methods (bootstrap, McNemar, FDR, power/MDE) are stable, but verify
the exact API (scipy/statsmodels) before copying a call.
- If web access is unavailable, mark framework-version claims as unverified.
## Learnings Loop
Before applying this skill on a non-trivial task, read `learnings.consolidated.md`
(and `learnings.md` if present). After applying it, append one dated bullet to
`learnings.md` via `agents-skills-feedback-loop/scripts/append_learning.py` if you
hit a pattern, mistake, or surprising fact. Do not modify `SKILL.md` itself.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!