
hugging-face-evaluation
by huggingface
A repository for tooling for the community to evaluate open source models.
SKILL.md
name: hugging-face-evaluation description: Add and manage evaluation results in Hugging Face model repositories using the new .eval_results/ format. Supports extracting scores from model cards, importing from Artificial Analysis API, and batch processing trending models.
Overview
This skill adds structured evaluation results to HuggingFace model repositories using the .eval_results/ format.
What This Enables:
- Results appear on model pages with benchmark links
- Scores are aggregated into benchmark dataset leaderboards
- Community contributions via Pull Requests
- Verification of evaluation runs

Version
2.2.0
Dependencies
Core dependencies are auto-installed via PEP 723 headers when using uv run:
- huggingface_hub>=0.20.0
- markdown-it-py>=3.0.0
- python-dotenv>=1.0.0
- pyyaml>=6.0
- requests>=2.31.0
- pypdf>=4.0.0 (for paper extraction)
HF MCP Server Tools
This skill uses the HF MCP Server for model and paper discovery. Key tools:
-
hub_repo_details: Fetch model metadata and README contentmcp__hf-mcp-server__hub_repo_details repo_ids: ["org/model-name"] include_readme: true -
paper_search: Search ML papers on HuggingFacemcp__hf-mcp-server__paper_search query: "model name benchmark" results_limit: 5 -
model_search: Find models by task, author, or trendingmcp__hf-mcp-server__model_search task: "text-generation" sort: "trendingScore" limit: 20
See references/hf_papers_extraction.md and references/model_card_extraction.md for detailed usage.
IMPORTANT: Check for Existing PRs
Before creating ANY pull request, ALWAYS check for existing open PRs:
uv run scripts/evaluation_manager.py get-prs --repo-id "username/model-name"
If open PRs exist:
- DO NOT create a new PR - this creates duplicate work for maintainers
- Warn the user about existing PRs
- Show the PR URLs so they can review them
- Only proceed if user explicitly confirms
Core Workflows
1. Add Single Benchmark (Recommended)
Add a specific benchmark score to a model from various sources.
# Preview (default - prints YAML)
uv run scripts/evaluation_manager.py add-eval \
--benchmark HLE \
--repo-id "moonshotai/Kimi-K2-Thinking"
# From Artificial Analysis
uv run scripts/evaluation_manager.py add-eval \
--benchmark HLE \
--repo-id "model/name" \
--source aa
# Create PR
uv run scripts/evaluation_manager.py add-eval \
--benchmark HLE \
--repo-id "model/name" \
--create-pr
# Push directly (your own model)
uv run scripts/evaluation_manager.py add-eval \
--benchmark HLE \
--repo-id "your-username/your-model" \
--apply
Sources:
model_card(default): Extract from README tables (usehub_repo_detailsMCP tool)aa: Query Artificial Analysis API (requiresAA_API_KEY)- Manual: Extract from linked papers using
paper_searchMCP tool
2. Batch Process Trending Models
Process multiple models at once using the HuggingFace API.
# Preview (dry run)
uv run scripts/batch_eval_prs.py --limit 10 --benchmark HLE --dry-run
# Create PRs for trending LLMs
uv run scripts/batch_eval_prs.py --limit 10 --benchmark HLE
# Use Artificial Analysis as source
uv run scripts/batch_eval_prs.py --limit 10 --benchmark HLE --source aa
# Sort by downloads instead of trending
uv run scripts/batch_eval_prs.py --limit 20 --sort downloads --benchmark GPQA
# Filter by pipeline tag (default: text-generation)
uv run scripts/batch_eval_prs.py --limit 10 --benchmark HLE --pipeline-tag text-generation
Options:
--limit N: Number of models to process--benchmark NAME: Benchmark to add (HLE, GPQA, MMLU-Pro, etc.)--source SOURCE: Score source (model_card, aa)--sort FIELD: Sort by trending (default), downloads, or likes--pipeline-tag TAG: Filter by pipeline tag (default: text-generation)--dry-run: Preview without creating PRs--runs-dir DIR: Directory for results (default: repo root/runs/)
Results Tracking:
Results are saved to runs/{benchmark}_{date}_{hash}.json:
{
"benchmark": "HLE",
"source": "aa",
"source_url": "https://artificialanalysis.ai",
"created": "2026-01-14T08:00:00Z",
"results": [
{
"repo_id": "MiniMaxAI/MiniMax-M2.1",
"value": 22.2,
"status": "pr_created",
"source_url": "https://artificialanalysis.ai"
}
]
}
Status values: pr_created, uploaded, not_found, dry_run, error
3. Extract from README Tables
For models with evaluation tables in their README:
# 1. Inspect tables to find structure
uv run scripts/evaluation_manager.py inspect-tables --repo-id "model/name"
# 2. Extract specific table (prints YAML)
uv run scripts/evaluation_manager.py extract-readme \
--repo-id "model/name" \
--table 1
# 3. Create PR
uv run scripts/evaluation_manager.py extract-readme \
--repo-id "model/name" \
--table 1 \
--create-pr
4. Extract from Papers
For models with linked papers on HuggingFace, use the HF MCP Server tools:
Step 1: Find linked papers
mcp__hf-mcp-server__hub_repo_details
repo_ids: ["meta-llama/Llama-3.1-8B-Instruct"]
include_readme: true
Look for arxiv: tags in the response.
Step 2: Search for paper content
mcp__hf-mcp-server__paper_search
query: "Llama 3.1 2407.21783"
results_limit: 3
Step 3: Extract scores and create PR
uv run scripts/evaluation_manager.py add-eval \
--benchmark MMLU \
--repo-id "meta-llama/Llama-3.1-8B-Instruct" \
--value 73.5 \
--create-pr
How it works:
- Use
hub_repo_detailsto find arxiv paper IDs in model tags - Use
paper_searchto retrieve paper abstracts with benchmark scores - Extract scores from paper content and create eval results
See references/hf_papers_extraction.md for detailed instructions.
Environment Setup
# Required for creating PRs
export HF_TOKEN="your-huggingface-token"
# Optional: for Artificial Analysis source
export AA_API_KEY="your-aa-api-key"
# Or use .env file
echo "HF_TOKEN=your-token" >> .env
echo "AA_API_KEY=your-aa-key" >> .env
.eval_results/ Format
Results are stored as YAML files in .eval_results/:
# .eval_results/hle.yaml
- dataset:
id: cais/hle # Required: Hub Benchmark dataset ID
task_id: default # Optional: specific task/leaderboard
value: 22.2 # Required: metric value
date: "2026-01-14" # Optional: ISO-8601 date
source: # Optional: attribution
url: https://artificialanalysis.ai
name: Artificial Analysis
Minimal example:
- dataset:
id: Idavidrein/gpqa
task_id: gpqa_diamond
value: 0.412
Result Badges:
| Badge | Condition |
|---|---|
| verified | Valid verifyToken (ran in HF Jobs with inspect-ai) |
| community-provided | Result submitted via open PR |
| leaderboard | Links to benchmark dataset |
| source | Links to evaluation logs |
Supported Benchmarks
Benchmarks are mapped via examples/metric_mapping.json:
| Benchmark | Hub Dataset ID | Task ID |
|---|---|---|
| HLE | cais/hle | default |
| GPQA | Idavidrein/gpqa | gpqa_diamond |
| MMLU-Pro | TIGER-Lab/MMLU-Pro | - |
| GSM8K | openai/gsm8k | - |
To add a new benchmark, update examples/metric_mapping.json.
Commands Reference
# Check for existing PRs (ALWAYS do this first)
uv run scripts/evaluation_manager.py get-prs --repo-id "model/name"
# Add single benchmark
uv run scripts/evaluation_manager.py add-eval \
--benchmark HLE \
--repo-id "model/name" \
[--source model_card|aa] \
[--value 84.5] \
[--apply | --create-pr]
# Batch process trending models
uv run scripts/batch_eval_prs.py \
--limit N \
--benchmark NAME \
[--source model_card|aa] \
[--sort trending|downloads|likes] \
[--pipeline-tag text-generation] \
[--dry-run]
# Inspect README tables
uv run scripts/evaluation_manager.py inspect-tables --repo-id "model/name"
# Extract from README table
uv run scripts/evaluation_manager.py extract-readme \
--repo-id "model/name" \
--table N \
[--apply | --create-pr]
# Extract from linked papers (use HF MCP Server tools first)
# See references/hf_papers_extraction.md for MCP-based workflow
# View current evaluations
uv run scripts/evaluation_manager.py show --repo-id "model/name"
# Validate format
uv run scripts/evaluation_manager.py validate --repo-id "model/name"
# Get help
uv run scripts/evaluation_manager.py --help
uv run scripts/evaluation_manager.py add-eval --help
Troubleshooting
"AA_API_KEY not set" → Set environment variable or add to .env file
"Token does not have write access" → Ensure HF_TOKEN has write permissions
"No evaluation tables found in README" → Check if README contains markdown tables with numeric scores
"Could not find benchmark in model card" → The benchmark name may be formatted differently; check the README manually
"Model not found in Artificial Analysis"
→ Not all models are tracked by AA; try --source model_card instead
"No papers found linked to model"
→ The model doesn't have any arxiv papers linked in its metadata; use hub_repo_details to check tags
"Paper search returns no results" → Try different query terms (model name, arxiv ID, benchmark name)
Advanced: Run Custom Evaluations
For running evaluations (not just importing existing scores), see the vLLM and inspect-ai scripts in scripts/:
inspect_eval_uv.py- Run inspect-ai evaluations via HF Jobslighteval_vllm_uv.py- Run lighteval with vLLM backendinspect_vllm_uv.py- Run inspect-ai with vLLM backendrun_eval_job.py- Helper for submitting HF Jobsrun_vllm_eval_job.py- Helper for vLLM job submission
These require GPU hardware and are for generating new evaluation results, not importing existing ones.
Best Practices
- Always check for existing PRs before creating new ones
- Preview first - default behavior prints YAML without uploading
- Use dry-run for batch processing to verify which models have scores
- Create PRs for models you don't own; use
--applyfor your own - Verify scores - compare output against source before submitting
- Track results - use the
--runs-diroption to track results and never delete run logs.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon