Add Benchmark
Use this skill when working on benchmark adapters in the Exgentic repository.
First read
Start with:
docs/adding-benchmarks.mdsrc/exgentic/core/benchmark.pysrc/exgentic/interfaces/registry.py
Then inspect the most relevant existing adapters:
src/exgentic/benchmarks/tau2/tau2_benchmark.pysrc/exgentic/benchmarks/bfcl/bfcl_benchmark.py
Workflow
Define the benchmark contract before writing code. Decide the real
task, the agent-relevantcontext, the semanticactions, the finish condition, and the scoring boundary.Keep the agent-facing contract protocol-agnostic. Do not define the benchmark in terms of one provider's chat or tool-calling format.
Prefer the thinnest possible wrapper. Make the benchmark accessible to any Exgentic agent with the minimum translation surface necessary. Do not add extra abstraction, copied logic, or runtime machinery unless it is needed to preserve benchmark meaning.
Decide the source-of-truth boundary. Reuse external benchmark assets, setup, and scoring where possible, but do not let an external harness dictate the wrong runtime contract for Exgentic.
Implement runtime, setup, and registration separately. Prefer a benchmark module, a
setup.sh, and a registry entry with clear responsibilities.Validate the adapter as a benchmark, not just as code. Check task listing, subset listing, happy-path scoring, failure-path scoring, and error semantics.
Non-negotiable rules
taskmust be the actual task.contextmust include only what the agent should know.- subset names and internal metadata stay out of
context. - Prefer the thinnest wrapper that preserves the benchmark's meaning.
- Actions should describe semantic operations, not protocol artifacts.
- Use
finishonly when it is part of the benchmark contract. - If outputs are not real execution results, say so plainly in the benchmark contract.
- Keep success, unsuccessful completion, unfinished runs, and errors distinct.
Validation
Before finishing, run at least:
python -m py_compileon changed benchmark filespre-commit run --files ...git diff --check
Also run benchmark-specific smoke tests that prove:
- one passing case works
- one failing case is represented correctly
- one real error is surfaced as an error
Source: Exgentic/exgentic — distributed by TomeVault.