claude-codes / eval
CLAUDE.md1 starsChanged 7 months agoMITView on GitHub
Evaluate any AI-powered feature: chat agents, content generators, classifiers, summarizers, code generators, or any system that takes input and produces AI output. Defines what "good" looks like through conversation, generates test cases, runs them, and scores results. When the user invokes /eval: If CONFIG_EXISTS and user did NOT pass --run: ask "You have an existing eval config with N scenarios. Want to run it, update it, or start fresh?" If CONFIG_EXISTS and user passed --run: skip to Step 4. If…
1 other project uses a version of this.
Adopted by
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Most recently taken up by
- ericosiu/ai-marketing-skillsword for word, first seen Sep 2, 2026
Other versions1 project uses a version of this.
Word for word · 1
- ericosiu/ai-marketing-skills★ 3.8k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- autoresearchSkill
- expert-panelSkill
- conversion-opsSkill
- deck-generatorSkill
- finance-opsSkill
- growth-engineSkill
- cold-outbound-optimizerSkill
- podcast-pipelineSkill
- revenue-intelligenceSkill
- sales-pipelineSkill
- sales-playbookSkill
- seo-opsSkill
- team-opsSkill
- x-longform-postSkill
- yt-competitive-analysisSkill
The file
We split this CLAUDE.md into the rules it gives an agent
12 rules. About 0 are common, 6 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 6
After changing prompts, models, or system instructions
- Distinctive: line 7
Before deploying any AI feature to production
- Distinctive: line 9
When defining quality standards for a new AI feature
- Very specific: line 22
When the user invokes /eval:
- Very specific: line 30
If CONFIG_EXISTS and user did NOT pass --run: ask "You have an existing eval config with N scenarios.
- Very specific: line 31
If CONFIG_EXISTS and user passed --run: skip to Step 4.
- Very specific: line 32
If NO_CONFIG: proceed to Step 2.
- Distinctive: line 36
Ask the user these questions ONE AT A TIME via AskUserQuestion.
- Very specific: line 97
Write the config to eval.config.json.
- Distinctive: line 111
If baseline exists: "Score changed from A% to B%"
- Very specific: line 119
Read the failing output from eval-results.json
- Distinctive: line 122
After fix: re-run to verify
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/eval — AI Output Evaluation Suite
Evaluate any AI-powered feature: chat agents, content generators, classifiers, summarizers, code generators, or any system that takes input and produces AI output. Defines what "good" looks like through conversation, generates test cases, runs them, and scores results.
When to use
- After changing prompts, models, or system instructions
- Before deploying any AI feature to production
- Weekly to catch quality drift
- When defining quality standards for a new AI feature
How to invoke
/eval # Start fresh or run existing config
/eval --run # Skip setup, run existing eval.config.json
/eval --verbose # Show full outputs during run
/eval --baseline # Save results as baseline for future comparisonsInstructions for Claude
When the user invokes /eval:
Step 1: Check for existing config
ls eval.config.json 2>/dev/null && echo "CONFIG_EXISTS" || echo "NO_CONFIG"If CONFIG_EXISTS and user did NOT pass --run: ask "You have an existing eval config with N scenarios. Want to run it, update it, or start fresh?"
If CONFIG_EXISTS and user passed --run: skip to Step 4.
If NO_CONFIG: proceed to Step 2.
Step 2: Understand what you're evaluating
Ask the user these questions ONE AT A TIME via AskUserQuestion. The first question determines the flow for the rest.
Q1: "What type of AI output are you evaluating?" Options:
- A) Chat agent / conversational AI (multi-turn: user sends messages, agent responds)
- B) Content generator (single input, long-form output: blog posts, emails, plans)
- C) Classifier / scorer (input data, output label or score)
- D) Summarizer / extractor (input document, output summary or structured data)
- E) Something else (describe it)
Q2: "Describe what it does in one sentence." Example: "It generates SEO-optimized blog post outlines from a keyword."
Q3 (varies by type):
For CHAT AGENTS (A):
- "What's the API endpoint? How do I send a message and get a response?"
- "What should a good conversation look like? List 3-5 things the agent should always do."
- "What should it never do?"
- "Who are ideal users vs. who should be turned away?"
For CONTENT GENERATORS (B):
- "What's the API endpoint or function? What input does it take?"
- "What makes the output GOOD? (length, tone, structure, accuracy, keywords)"
- "What makes the output BAD? (hallucinations, wrong tone, too short/long, missing sections)"
- "Show me one example of good output if you have it."
For CLASSIFIERS (C):
- "What's the API endpoint or function?"
- "What are the possible output labels/scores?"
- "Do you have labeled test data (known correct answers)?"
- "What's the cost of a false positive vs. false negative?"
For SUMMARIZERS (D):
- "What's the API endpoint or function?"
- "What should the summary include? What should it exclude?"
- "What's the max length?"
- "Should it preserve specific details (names, numbers, dates)?"
For OTHER (E):
- "Walk me through: what goes in, what comes out?"
- "How do you know when the output is good vs. bad?"
- "What are the failure modes you're worried about?"
Step 3: Generate eval config
Based on the user's answers, generate test cases appropriate to the type:
Chat agents: 10-20 multi-turn conversation scenarios (qualified users, unqualified users, edge cases, product knowledge tests, hostile users, capability boundaries)
Content generators: 10-15 input variations testing different topics, edge cases, and quality dimensions (accuracy, tone, length, structure, keyword inclusion)
Classifiers: 20-30 test inputs with known correct labels, covering each class, edge cases, and adversarial inputs
Summarizers: 10-15 test documents of varying length and complexity, checking for completeness, accuracy, length compliance, and hallucination
For all types, generate criteria based on:
- Things the user said make output GOOD ->
contains,regex,max_lengthchecks - Things the user said make output BAD ->
not_containschecks - Type-specific quality checks (see criterion types below)
Write the config to eval.config.json. Show the user and ask: "Does this cover what matters? Want to add or change anything?"
Step 4: Run the evals
npx tsx .claude/skills/eval/run-eval.ts [--config eval.config.json] [--verbose] [--baseline]The runner handles all types. For chat agents, it sends messages sequentially and evaluates the full conversation. For single-input types, it sends one request per scenario and evaluates the output.
Step 5: Report results
- Summary table (scenario x criterion, pass/fail)
- Overall score: "X/Y criteria passed (Z%)"
- If baseline exists: "Score changed from A% to B%"
- Regressions: scenarios that got worse since last run
- Top 3 failures with diagnosis
- Recommendation: fix or ship
Step 6: Iterate
If failures exist:
- Read the failing output from eval-results.json
- Diagnose root cause (prompt issue, missing data, model limitation)
- Suggest a fix
- After fix: re-run to verify
Config format
{
"name": "My AI Feature Eval",
"type": "chat | content | classifier | summarizer | custom",
"endpoint": "https://my-api.com/endpoint",
"method": "POST",
"headers": {},
"request_template": {},
"response_field": "response",
"threshold": 80,
"good_behaviors": [],
"bad_behaviors": [],
"scenarios": []
}The type field determines how scenarios are executed:
chat: multi-turn (sends messages sequentially, maintains history)content | classifier | summarizer | custom: single-turn (one request per scenario)
Criterion types
| Type | Works for | Description |
contains | All | Output contains a string (case-insensitive) |
not_contains | All | Output does NOT contain a string |
regex | All | Output matches a regex pattern |
max_length | All | Output is under N characters |
min_length | Content | Output is at least N characters |
max_sentences | Chat, Content | Output is under N sentences |
response_time | All | API responds within N milliseconds |
json_valid | Classifier, Custom | Output is valid JSON |
json_field_equals | Classifier | A JSON field equals an expected value |
no_hallucination | Content, Summarizer | Output doesn't contain claims not in the input |
preserves_names | Summarizer | Key names from input appear in output |
preserves_numbers | Summarizer | Key numbers from input appear in output |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

