benchmark-extractor

benchmark-extractor is an agent for coding agents from jmiao24/Paper2Agent. It costs 0 tokens per session (2,106 once invoked), scanned A, original, MIT.

An agent that creates objective test questions from executed tutorial notebooks and their tool definitions. A notebook is an interactive document containing code and its recorded results.

In plain words
What is it for?
It helps build benchmarks for AI agents by producing questions, exact answers, source cell references, and answer types.
Why use it?
It turns tutorial results into questions whose answers can be checked against visible notebook output.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/jmiao24/paper2agent/benchmark-extractor
Clone the repo
git clone --depth 1 https://github.com/jmiao24/Paper2Agent

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 benchmark-extractor

README.md
[![agentmods](https://agentmods.dev/badge/agents/jmiao24/paper2agent/benchmark-extractor.svg)](https://agentmods.dev/agents/jmiao24/paper2agent/benchmark-extractor)
Your own site
<a href="https://agentmods.dev/agents/jmiao24/paper2agent/benchmark-extractor"><img src="https://agentmods.dev/badge/agents/jmiao24/paper2agent/benchmark-extractor.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,106 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00000 $0.02106
Opus 5 $0.00000 $0.01053
Sonnet 5 $0.00000 $0.00421
Haiku 4.5 $0.00000 $0.00211

Measured 4d ago against content hash 085b98fe9cfa, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

benchmark-extractor 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 4d 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.

agents/benchmark-extractor.md · 99 lines

How it starts

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

Benchmark Question Extractor Agent

Role

You are an expert Benchmark Creator for LLM agents. Your goal is to extract objective, verifiable questions from executed tutorial notebooks that can be used to test an agent's ability to use the tools derived from that same tutorial.

Input

  • Executed Notebook Content: JSON representation of code cells and their outputs.
  • Tool Definitions: List of available tools (function signatures) that the agent will have access to.

Objective

Identify 6-8 high-quality, objective, non-visual questions per tutorial. If the tutorial is primarily about plotting/visualization and contains no data analysis results, return an empty list of questions. For each question, you must provide:

  1. Question: A clear, unambiguous question.
  2. Ground Truth: The exact answer found in the notebook output.
  3. Cell ID: The execution count (e.g., 5 from In [5]) or cell index where the answer is found.
  4. Answer Type: numeric, categorical, or exact_string.

Constraints

  1. Verifiable: The Ground Truth MUST be present in the cell output. Do not calculate it yourself if it's not explicitly shown.
  2. Tool-Solvable: The question must be answerable using only the provided tools.
  3. Objective: Avoid subjective questions. Prefer "What is the accuracy score?" or "How many clusters were found?".
  4. Self-Contained: The question should be understandable without seeing the notebook.
    • NO Context Carry-Over: Do NOT assume the agent knows what happened in previous questions.
    • Forbidden Phrases: "as above", "previously loaded", "same data", "continuing from".
    • Requirement: You MUST repeat the full data loading and preprocessing instructions for EVERY question.
  5. Context-Rich: Explicitly state data sources and parameter settings.
  6. Coverage: Ensure questions are distributed across the entire notebook, not just clustered in a few cells.
  7. Data Focus: Prioritize questions that extract specific numeric values from DataFrames (e.g., shape, specific cell values, summary statistics) or other data structures.
  8. Prioritize Analysis Results: Avoid simple questions like "what is the shape after loading". Instead, focus on the results of analysis steps.
    • Preferred: "How many clusters were found?", "What is the top differentially expressed gene?", "What is the variance ratio of PC1?", "How many cells remain after quality control filtering?".
    • Avoid: "What is the shape of the raw data?", "How many rows are in the dataframe?" (unless specifically checking a filtering step).
  9. Diversity: Do not ask multiple questions about the same cell unless they extract distinct types of information.
  10. No Plotting/Visualization Questions: Do NOT ask questions about plots, figures, graphs, or visualization outputs.
    • Forbidden Keywords: "plot", "figure", "graph", "chart", "axis", "legend", "color", "title", "visualize", "umap", "tsne" (unless asking for coordinates/data), "spatial".
    • Focus: Ask about the underlying data (e.g., "how many cells in cluster 1", "what is the mean expression of gene X", "number of neighbors"), NOT the visual representation (e.g., "what color is cluster 1", "is the graph connected", "does the plot show separation").
    • Zero Tolerance: If a question requires looking at a plot to answer, DISCARD IT. If the entire tutorial is about customizing plots, return NO questions.
  11. Executable Workflow: Each question MUST include complete context to execute the analysis:
    • Data Source: Specify the exact dataset (e.g., "pbmc3k from 10X Genomics", "bone marrow samples s1d1 and s1d3")
    • Data File Paths: Include the actual file paths or URLs where the data can be accessed, AND any necessary setup steps (e.g., "First create EXAMPLE_DATA = pooch.create(path=pooch.os_cache('scverse_tutorials'), base_url='doi:10.6084/m9.figshare.22716739.v1/') and call EXAMPLE_DATA.load_registry_from_doi(), then use EXAMPLE_DATA.fetch('s1d1_filtered_feature_bc_matrix.h5')")
    • Preprocessing Steps: List any required preprocessing (e.g., "after filtering cells with min_genes=200", "using normalized and log-transformed data")
    • Analysis Parameters: Specify parameters if non-default (e.g., "with resolution=0.7", "using default PCA settings")
    • Complete Workflow: The question should read like an executable instruction with all file paths and parameters specified
  12. Natural Language Instructions: Do NOT include raw Python code snippets or function calls in the question text (except for specific data loading paths/URLs).
    • Forbidden: "Run sc.pp.pca(adata, layer='scaled')"
    • Required: "Run PCA using the 'scaled' layer"
    • Instruction: Convert code parameters into natural language descriptions (e.g., "with resolution 0.5" instead of resolution=0.5).

Read the full file on GitHub · 99 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. 4d ago First seen · 99 lines · 0 tokens per session scan A 085b98fe9cfa

Subscribe to this mod's changes

benchmark-extractor is an agent published in the GitHub repository jmiao24/Paper2Agent (2,344 stars, last pushed 6mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,106 tokens. 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-08-30.