LLM Evaluation

SkillMonitoring & ops

llm-evaluation is a skill that guides an AI agent in implementing evaluation strategies for LLM applications. It covers automated metrics, human feedback, and benchmarking, so the agent can help test LLM performance, measure application quality, and set up evaluation frameworks.

Use LLM Evaluation in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add LLM Evaluation and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the LLM Evaluation skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Have an agent that supports loading skills.

LLM EvaluationStart free

What your AI can do with it

  • Implement comprehensive evaluation strategies for LLM applications
  • Apply automated metrics to measure LLM performance
  • Incorporate human feedback into evaluation workflows
  • Run benchmarking of LLM applications
  • Establish evaluation frameworks for AI application quality

Getting started

  1. Have an agent that supports loading skills.
  2. Add the llm-evaluation skill to the agent's available skills.
  3. Ask the agent to test LLM performance, measure application quality, or establish an evaluation framework, and it will apply the skill.

What this skill tells your AI

The instructions your AI receives, as published by wshobson/agents in plugins/llm-application-dev/skills/llm-evaluation/SKILL.md and read by ahel’s review.

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

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.

Signals

GitHub stars
40k
Forks
4k
Last commit
Sep 2026

Others that do the same job

Questions

When should this skill be used?
Use it when testing LLM performance, measuring AI application quality, or establishing evaluation frameworks.
What evaluation methods does it cover?
It covers automated metrics, human feedback, and benchmarking as the three approaches to evaluating LLM applications.
Does it require any special setup?
It only requires an agent that can load skills; once added, the agent applies it when handling evaluation tasks.
Advanced
Item type
skill
Key
llm-evaluation-wshobson
Source
github.com/wshobson/agents