Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches. Co-authored-by: Cursor <cursoragent@cursor.com>
4.0 KiB
4.0 KiB
SkillsBench
Overview
SkillsBench evaluates whether coding agents can discover and apply task-bundled Agent Skills. Each task contains an instruction, an optional skill directory, a Docker environment, an oracle solution, and a verifier. EvalScope builds the task Docker image, runs the selected agent or oracle in that image, then executes the task verifier.
Task Description
- Task Type: Agent skill usage / tool-assisted task completion
- Input: The natural-language task prompt from
task.md - Output: Files or state changes produced inside the task container, scored by the task verifier
- Dataset: Local SkillsBench task repository supplied through
extra_params.tasks_dir - Environment: Per-task Docker image built from
environment/Dockerfile - Skills: Optional task-bundled skills from
environment/skills - Metric:
scorefrom/logs/verifier/reward.txt;successis 1 whenscore > 0
Key Features
- Builds or reuses a content-hashed Docker image for each selected task.
- Runs the task in
no-skillorwith-skillmode without mixing the two conditions in one EvalScope run. - Injects task-bundled skills through EvalScope's agent skill runtime instead of baking runner-specific skill paths into the image.
- Supports EvalScope native agents and external agent runners through the shared agent environment interface.
- Saves verifier stdout, reward, and optional CTRF artifacts under the run output directory.
Evaluation Notes
- Default
skill_modeisno-skill. - Run
no-skillandwith-skillseparately, then compare runs with EvalScope's run comparison tools. self-genandtasks-extraare not supported by this adapter version.runner='oracle'runs the officialoracle/solve.shfor smoke testing; agent runs requireagent_config.- The verifier executes
verifier/test.shand may install dependencies from the network.
Scoring and Comparison
scoreis the verifier reward parsed from/logs/verifier/reward.txt.successis derived locally as1.0whenscore > 0, otherwise0.0.- EvalScope does not automatically compute the no-skill versus with-skill delta; run both modes and compare their reports.
Properties
| Property | Value |
|---|---|
| Benchmark Name | skillsbench |
| Dataset ID | skillsbench |
| Paper | N/A |
| Tags | Agent, MultiTurn |
| Metrics | normalized_score |
| Default Shots | 0-shot |
| Evaluation Split | N/A |
Data Statistics
Statistics not available.
Sample Example
Sample example not available.
Prompt Template
Prompt Template:
{question}
Extra Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
tasks_dir |
str |
`` | Path to the SkillsBench tasks directory. |
task_ids |
list |
[] |
Optional list of task ids to run. |
skill_mode |
str |
no-skill |
SkillsBench skill mode. Choices: ['no-skill', 'with-skill'] |
force_rebuild |
bool |
False |
Force rebuilding task Docker images. |
agent_timeout_sec |
float |
None |
Override task agent timeout. |
verifier_timeout_sec |
float |
None |
Override task verifier timeout. |
runner |
str |
agent |
Use "oracle" to run oracle/solve.sh instead of an agent. Choices: ['agent', 'oracle'] |
Usage
Using CLI
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets skillsbench \
--limit 10 # Remove this line for formal evaluation
Using Python
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['skillsbench'],
dataset_args={
'skillsbench': {
# extra_params: {} # uses default extra parameters
}
},
limit=10, # Remove this line for formal evaluation
)
run_task(task_cfg=task_cfg)