Eval: Skill for Claude Code

.claude/skills/add-benchmark/SKILL.md

add-benchmark is a skill for Claude Code from ai-twinkle/Eval. It costs 151 tokens per session (3,280 once invoked), scanned A, original, MIT.

A development workflow for adding a new benchmark to Twinkle Eval. A benchmark is a repeatable test set and scoring method used to measure how well an AI model performs a particular task.

In plain words
What is it for?
Use it to prepare example data, implement answer extraction and scoring, register the method, compare it with a reference tool, and add documentation and tests.
Why use it?
It makes the required planning, implementation, comparison, documentation, and testing steps explicit before code is merged. It also distinguishes a genuinely new scoring method from merely adding another dataset.

Skill for Claude Code

Written for Claude Code: installed under .claude/. Also seen: mentions CLAUDE.md.

This is ai-twinkle/Eval's own configuration. It tells Claude Code how to work on Eval itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything Eval configures →

Reuse

Borrowing it

Nothing to install: this file belongs to ai-twinkle/Eval. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/ai-twinkle/Eval/main/.claude/skills/add-benchmark/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/ai-twinkle/Eval

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for add-benchmark

README.md
[![agentmods](https://agentmods.dev/badge/skills/ai-twinkle/eval/add-benchmark/github.svg)](https://agentmods.dev/skills/ai-twinkle/eval/add-benchmark)
Your own site
<a href="https://agentmods.dev/skills/ai-twinkle/eval/add-benchmark"><img src="https://agentmods.dev/badge/skills/ai-twinkle/eval/add-benchmark/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for add-benchmark

Your own site · 80×15
<a href="https://agentmods.dev/skills/ai-twinkle/eval/add-benchmark"><img src="https://agentmods.dev/badge/skills/ai-twinkle/eval/add-benchmark.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 151 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,280 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00151 $0.03280
Opus 5.5 $0.00060 $0.01312
Sonnet 5.5 $0.00030 $0.00656
Haiku 4.5 $0.00015 $0.00328

Measured 1mo ago against content hash ad783b22bd3a, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

add-benchmark scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/add-benchmark/SKILL.md · 240 lines

How it starts

The opening of the file, as written. The whole thing — 240 lines — stays where its author put it; the contents beside it link to each section on GitHub.

新增評測 Benchmark

CLAUDE.md §6 規定的流程,缺一步就不得合入 main。這份 skill 是那份規範的可執行版本。

動手前先確認

  • 這是新的評測方法(新的 Extractor/Scorer 配對),不是既有方法的新資料集。 若只是新資料集且能沿用既有 evaluation_method,走 twinkle_eval/benchmarks.py 的下載註冊表即可,不需要跑本流程。
  • 上一個 benchmark 已經完成(含比較報告)。§6.0.1 明訂:先完成再開始下一個。

第 0 步:先開 GitHub,再寫程式

沒有 Milestone 和 Issues 的 benchmark 實作不得開 PR。

gh api repos/ai-twinkle/Eval/milestones -f title="{Benchmark} — {一句話說明}" \
  -f description="來源:{paper/repo}|目的:{評什麼}|範圍:{預計實作到哪}"

接著開 6 個 Issue,每個都要掛 type: feature label 與該 Milestone:

# 標題格式 對應
1 feat({name}): prepare example dataset from HuggingFace §6.1
2 feat({name}): implement Extractor + Scorer (+ Checkers) §6.2
3 feat({name}): score comparison vs reference framework §6.3
4 feat({name}): speed benchmark vs reference framework §6.4
5 feat({name}): write docs/evals/{name}.md §6.5
6 feat({name}): write tests/test_{name}.py §6.6
gh issue create --title "feat({name}): ..." --label "type: feature" --milestone "{Milestone 標題}"

第 1 步:example dataset

放在 datasets/example/{name}/,10–20 筆(§6.1 規範;既有資料集實際落在 10–30 筆,如 aime2025 收了全部 30 題),涵蓋主要題型分佈。有子類別的(如 BFCL 的 simple/multiple/parallel)每個子類別至少 2–3 筆。

要求任何人不下載完整資料集就能跑通完整流程。格式必須是可直接執行的完整格式 (含 id、question、答案欄位)。

scripts/ 底下有既有的抽取腳本可以參考(prepare_bbh_example.py、 create_vision_mcq_example.py)。

資料集載入器支援 JSON / JSONL / CSV / TSV / Parquet / Arrow。twinkle_eval/datasets/file.py 的 _normalize_record() 會自動把 {"choices": [...], "answer": 1} 這種 HuggingFace 格式 正規化成 {"A": ..., "B": ..., "answer": "B"}。

第 2 步:實作 Extractor + Scorer

架構是 Extractor(從輸出抽答案)+ Scorer(比對正解) 兩個 ABC,定義在 twinkle_eval/core/abc.py。不要在 evaluators.py / main.py 加 if/elif 分支(原則 A)。

# twinkle_eval/metrics/extractors/{name}.py
from typing import Optional

from twinkle_eval.core.abc import Extractor


class MyExtractor(Extractor):
    def get_name(self) -> str:
        return "{name}"

    def extract(self, llm_output: str) -> Optional[str]:
        """抽不到回傳 None(會被計入 unparsed_count)。"""
        ...

Read the full file on GitHub · 240 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 240 lines · 151 tokens per session scan A ad783b22bd3a

Subscribe to this mod's changes

add-benchmark is a skill published in the GitHub repository ai-twinkle/Eval (117 stars, last pushed 1mo ago), licensed MIT. It adds 151 tokens to every session and 3,280 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-12.

Related

add-benchmark compared with skills from other repositories

add-benchmark next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
add-benchmarkai-twinkle/EvalSkill1171mo agoMITA151Claude Code
llm-evaluationmartineserios/thebranaSkill3todayMITA31Claude Code
eval-designerNickCrew/Claude-CortexSkill664mo agoMITD62Claude Code, Codex
ai-engineering-toolkitsickn33/agentic-awesome-skillsSkill49kyesterdayMITA47Claude Code
ai-prompt-regression-testingsickn33/agentic-awesome-skillsSkill49kyesterdayMITA37Claude Code
prompt-optimizationlangwatch/langwatchSkill5.0kyesterdayApache-2.0A105Claude Code, Codex
experimentslangwatch/langwatchSkill5.0kyesterdayApache-2.0A58Claude Code, Codex