Skip to content

Suite YAML Reference

This page documents all available fields in the suite configuration file (suite.yaml).

FieldTypeRequiredDefaultDescription
namestringNo-Test case name
descriptionstringNo-Test case description
repostringYes-Repository URL (HTTP/HTTPS)
branchstringNodefault branchGit branch to checkout
commitstringNo-Specific commit SHA
expected_sourcestringNo-Reference type (branch, commit)
expectedstringNo-Reference branch/commit
timeoutnumberNo300000Timeout in milliseconds
workspace_dirstringNo.youbencha-workspaceWorkspace directory
agentobjectYes-Agent configuration
evaluatorsarrayYes-List of evaluators
pre_executionarrayNo[]Pre-execution hooks
post_evaluationarrayNo[]Post-evaluation hooks
suite.yaml
# Test case metadata
name: add-auth-feature
description: Evaluate adding JWT authentication to the API
# Repository configuration
repo: https://github.com/example/api-server.git
branch: main
commit: abc123 # Optional: specific commit
# Expected reference (for comparison)
expected_source: branch
expected: feature/auth-complete
# Timeout configuration
timeout: 300000 # 5 minutes
# Workspace directory
workspace_dir: .youbencha-workspace
# AI Agent
agent:
type: copilot-cli
model: claude-sonnet-4.5
agent_name: my-custom-agent
config:
prompt_file: ./prompts/add-auth.md
# Pre-execution hooks
pre_execution:
- name: script
config:
command: bash
args: ["-c", "echo 'Setup complete'"]
timeout_ms: 30000
# Evaluators
evaluators:
- name: git-diff
config:
assertions:
max_files_changed: 10
- name: expected-diff
config:
threshold: 0.85
- name: agentic-judge
config:
type: copilot-cli
assertions:
auth_implemented: "JWT auth is implemented. Score 1 if yes, 0 if no."
# Post-evaluation hooks
post_evaluation:
- name: database
config:
type: json-file
output_path: ./results.jsonl
append: true
- name: webhook
config:
url: ${SLACK_WEBHOOK_URL}
method: POST

The repository URL to clone and evaluate.

repo: https://github.com/example/repo.git

Requirements:

  • Must be HTTP or HTTPS URL
  • No localhost or internal network URLs (security)

The branch to checkout.

branch: main

Default: Repository’s default branch

Checkout a specific commit SHA.

commit: abc123def456

Note: If both branch and commit are specified, the commit is checked out after the branch.

Configure a reference for comparison using expected-diff evaluator.

Type of reference source.

expected_source: branch # or: commit

The reference branch name or commit SHA.

expected_source: branch
expected: feature/completed

The agent adapter to use.

agent:
type: copilot-cli

Supported values: copilot-cli

Specify the AI model to use.

agent:
type: copilot-cli
model: claude-sonnet-4.5

Supported models:

  • claude-sonnet-4.5, claude-sonnet-4, claude-haiku-4.5
  • gpt-5, gpt-5.1, gpt-5.1-codex-mini, gpt-5.1-codex
  • gemini-3-pro-preview

Use a named agent from .github/agents/ directory.

agent:
type: copilot-cli
agent_name: my-custom-agent

When specified:

  1. The .github/agents/ directory is copied to the workspace
  2. Agent is invoked with --agent <name> flag

Inline prompt for the agent.

agent:
type: copilot-cli
config:
prompt: "Add error handling to all API endpoints"

Load prompt from an external file.

agent:
type: copilot-cli
config:
prompt_file: ./prompts/add-auth.md

Maximum time for the entire evaluation run in milliseconds.

timeout: 300000 # 5 minutes (default)
ValueDuration
600001 minute
3000005 minutes (default)
60000010 minutes
180000030 minutes

Directory where the repository is cloned and agent operates.

workspace_dir: .youbencha-workspace

Default: .youbencha-workspace

The directory is created relative to where yb run is executed.

Each evaluator in the evaluators array follows this schema:

FieldTypeRequiredDescription
namestringYes*Built-in evaluator name
filestringYes*Path to external evaluator file
configobjectNoEvaluator-specific configuration

*Either name or file is required, not both.

evaluators:
- name: git-diff
evaluators:
- name: agentic-judge
config:
type: copilot-cli
assertions:
test_added: "Tests were added. Score 1 if yes, 0 if no."

Reference an evaluator defined in a separate file:

evaluators:
- file: ./evaluators/test-coverage.yaml
OptionTypeDescription
assertions.max_files_changednumberMaximum files that can be modified
assertions.max_lines_addednumberMaximum lines that can be added
assertions.max_lines_removednumberMaximum lines that can be removed
assertions.max_total_changesnumberMaximum total changes
assertions.min_change_entropynumberMinimum entropy (enforce distributed changes)
assertions.max_change_entropynumberMaximum entropy (enforce focused changes)
evaluators:
- name: git-diff
config:
assertions:
max_files_changed: 10
max_lines_added: 200
max_total_changes: 300
OptionTypeDefaultDescription
thresholdnumber0.85Similarity threshold (0.0 - 1.0)
evaluators:
- name: expected-diff
config:
threshold: 0.85

Threshold Guidelines:

RangeDescription
1.0Exact match (very strict)
0.9-0.99Very similar, minor differences
0.7-0.89Mostly similar, moderate differences
<0.7Significantly different (lenient)
OptionTypeDescription
typestringAgent type (e.g., copilot-cli)
agent_namestringNamed agent from .github/agents/
modelstringAI model to use
prompt_filestringCustom instructions file
assertionsobjectKey-value pairs of assertions
evaluators:
- name: agentic-judge
config:
type: copilot-cli
model: claude-sonnet-4.5
assertions:
code_quality: "Code follows best practices. Score 0-1."
tests_added: "Appropriate tests were added. Score 0-1."

Run after workspace setup but before agent execution.

FieldTypeRequiredDescription
namestringYesHook type (script)
config.commandstringYesCommand to run
config.argsarrayNoCommand arguments
config.timeout_msnumberNoTimeout in milliseconds
pre_execution:
- name: script
config:
command: bash
args: ["-c", "echo 'Setup complete'"]
timeout_ms: 30000

Available Environment Variables:

VariableDescription
WORKSPACE_DIRAbsolute path to workspace directory

Run after all evaluators complete.

post_evaluation:
- name: database
config:
type: json-file
output_path: ./results.jsonl
append: true
OptionTypeDescription
typestringStorage type (json-file)
output_pathstringPath to output file
appendbooleanAppend to existing file
post_evaluation:
- name: webhook
config:
url: ${SLACK_WEBHOOK_URL}
method: POST
OptionTypeDescription
urlstringWebhook URL
methodstringHTTP method (POST)

Use ${VAR_NAME} syntax to reference environment variables:

post_evaluation:
- name: webhook
config:
url: ${SLACK_WEBHOOK_URL}