llm-evaluation — Claude skill: evaluate LLM apps
A skill for evaluating LLM applications: automated metrics, human feedback, LLM-as-judge and benchmarking. Useful when comparing models or catching regressions before deploy.
/plugin marketplace add wshobson/agents
/plugin install llm-application-dev@claude-code-workflowsWhat llm-evaluation does
The skill covers the boring parts of LLM evaluation. It lays out three families of methods: automated metrics (BLEU, ROUGE, METEOR, BERTScore, perplexity for text generation; accuracy, precision, recall, F1, confusion matrix, AUC-ROC for classification; MRR, NDCG, Precision@K, Recall@K for RAG retrieval), human evaluation across accuracy, coherence, relevance, fluency, safety and helpfulness, and LLM-as-judge in four modes — pointwise, pairwise, reference-based and reference-free.
The quick start ships Python code: a Metric dataclass with accuracy(), bleu(), bertscore() and custom() factories, plus an EvaluationSuite class whose async evaluate() runs test cases through a model and averages the scores. Deeper patterns live in references/details.md, which the skill reads when the top-level guidance is not enough.
Worth installing if you already run LLMs in production or compare prompts and models on a schedule. For a one-off check, a couple of scripts by hand will do — the skill is overkill there.
What it helps with
- compare two models or two prompts on the same test set
- catch a quality regression before shipping to production
- compute BLEU and ROUGE scores for generated text
- evaluate RAG retrieval with MRR and NDCG
- set up LLM-as-judge scoring without reference answers
Example prompts for the agent
- run my prompt through EvaluationSuite with accuracy and bertscore
- compare two prompt versions pairwise with LLM-as-judge
- add a custom groundedness metric to the llm-evaluation skill
How to install llm-evaluation
1Plugin marketplace
/plugin marketplace add wshobson/agents/plugin install llm-application-dev@claude-code-workflowsThis installs the whole llm-application-dev plugin with all its skills
2Skills CLI (Vercel)
npx skills add wshobson/agents --skill llm-evaluation -a claude-code3Manually: put the files in place
~/.claude/skills/llm-evaluation/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/llm-evaluation/
1Skills CLI (Vercel)
npx skills add wshobson/agents --skill llm-evaluation -a codex2Manually: put the files in place
.agents/skills/llm-evaluation/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add wshobson/agents --skill llm-evaluation -a cursor2Manually: put the files in place
.cursor/skills/llm-evaluation/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install wshobson/agents llm-evaluation2Manually: put the files in place
.github/skills/llm-evaluation/SKILL.mdPlatform CLI
gemini skills install https://github.com/wshobson/agents --path plugins/llm-application-dev/skills/llm-evaluationManually: put the files in place
.devin/skills/llm-evaluation/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set213
The whole set →Similar
Questions about llm-evaluation
How do I install llm-evaluation in Claude?
Use the plugin marketplace: /plugin marketplace add wshobson/agents, then /plugin install llm-application-dev@claude-code-workflows. Or run npx skills add wshobson/agents --skill llm-evaluation -a claude-code.
What does the llm-evaluation skill do?
It documents evaluation strategies for LLM applications: automated metrics, human feedback, LLM-as-judge and benchmarking. It also provides a Python EvaluationSuite scaffold for running test cases.
Which metrics does the skill cover?
Text generation: BLEU, ROUGE, METEOR, BERTScore, perplexity. Classification: accuracy, precision, recall, F1, confusion matrix, AUC-ROC. RAG: MRR, NDCG, Precision@K, Recall@K.
Source text
SKILL.md · MIT
---
name: llm-evaluation
description: Implement comprehensive evaluation strategies for LLM applications using automated metrics, human feedback, and benchmarking. Use when testing LLM performance, measuring AI application quality, or establishing evaluation frameworks.
---
# LLM Evaluation
Master comprehensive evaluation strategies for LLM applications, from automated metrics to human evaluation and A/B testing.
## When to Use This Skill
- Measuring LLM application performance systematically
- Comparing different models or prompts
- Detecting performance regressions before deployment
- Validating improvements from prompt changes
- Building confidence in production systems
- Establishing baselines and tracking progress over time
- Debugging unexpected model behavior
## Core Evaluation Types
### 1. Automated Metrics
Fast, repeatable, scalable evaluation using computed scores.
**Text Generation:**
- **BLEU**: N-gram overlap (translation)
- **ROUGE**: Recall-oriented (summarization)
- **METEOR**: Semantic similarity
- **BERTScore**: Embedding-based similarity
- **Perplexity**: Language model confidence
**Classification:**
- **Accuracy**: Percentage correct
- **Precision/Recall/F1**: Class-specific performance
- **Confusion Matrix**: Error patterns
- **AUC-ROC**: Ranking quality
**Retrieval (RAG):**
- **MRR**: Mean Reciprocal Rank
- **NDCG**: Normalized Discounted Cumulative Gain
- **Precision@K**: Relevant in top K
- **Recall@K**: Coverage in top K
### 2. Human Evaluation
Manual assessment for quality aspects difficult to automate.
**Dimensions:**
- **Accuracy**: Factual correctness
- **Coherence**: Logical flow
- **Relevance**: Answers the question
- **Fluency**: Natural language quality
- **Safety**: No harmful content
- **Helpfulness**: Useful to the user
### 3. LLM-as-Judge
Use stronger LLMs to evaluate weaker model outputs.
**Approaches:**
- **Pointwise**: Score individual responses
- **Pairwise**: Compare two responses
- **Reference-based**: Compare to gold standard
- **Reference-free**: Judge without ground truth
## Quick Start
```python
from dataclasses import dataclass
from typing import Callable
import numpy as np
@dataclass
class Metric:
name: str
fn: Callable
@staticmethod
def accuracy():
return Metric("accuracy", calculate_accuracy)
@staticmethod
def bleu():
return Metric("bleu", calculate_bleu)
@staticmethod
def bertscore():
return Metric("bertscore", calculate_bertscore)
@staticmethod
def custom(name: str, fn: Callable):
return Metric(name, fn)
class EvaluationSuite:
def __init__(self, metrics: list[Metric]):
self.metrics = metrics
async def evaluate(self, model, test_cases: list[dict]) -> dict:
results = {m.name: [] for m in self.metrics}
for test in test_cases:
prediction = await model.predict(test["input"])
for metric in self.metrics:
score = metric.fn(
prediction=prediction,
reference=test.get("expected"),
context=test.get("context")
)
results[metric.name].append(score)
return {
"metrics": {k: np.mean(v) for k, v in results.items()},
"raw_scores": results
}
# Usage
suite = EvaluationSuite([
Metric.accuracy(),
Metric.bleu(),
Metric.bertscore(),
Metric.custom("groundedness", check_groundedness)
])
test_cases = [
{
"input": "What is the capital of France?",
"expected": "Paris",
"context": "France is a country in Europe. Paris is its capital."
},
]
results = await suite.evaluate(model=your_model, test_cases=test_cases)
```
## Detailed patterns and worked examples
Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.
© Seth Hobson · MIT · wshobson/agents