Skip to main content
When you evaluate a coding agent, checking a single reply is not enough. You usually need to give it a real project, let it read and write files, run commands, and commit changes, then check whether the output is correct. NiceEval’s current recommended shape is a normal .eval.ts file that explicitly prepares the Sandbox workspace, sends the task, and asserts on the result. See coding-agent-skill (a separate repository) for a runnable reference.
workspaces/ holds the starting project the Agent can see. .eval.ts controls when the workspace is uploaded, the task prompt, and what to verify. experiments/ selects the Agent, the model, and whether to inject a Skill or plugin.

Prepare the workspace

Inside the eval, upload the starting project to the Sandbox:
You can also use t.sandbox.writeText() to add seed files within a single eval — a good fit for small tasks or security probes.

Write the task prompt

The prompt should read like a real work order. Describe the goal and constraints, but do not leak the verification answer.
Leave implicit quality requirements, such as whether the code defends against path traversal or reuses existing tools, for the verification phase. That is how you find out whether a Skill or plugin actually helps the agent fill in missing context on its own.

Verify files and code

t.sandbox.fileChanged() is a scoped assertion: after the run ends, it uses the agent-attributed diff to determine whether the target file actually changed.

Run project tests or probe scripts

For coding-agent tasks, real commands are usually more reliable than text matching:
You can also run the project’s own test, lint, or build scripts:

Use experiments for baselines

Do not put Agent names, plugin names, or URLs into positionals. The Experiment selects the Agent and pins the run configuration; the CLI’s eval positionals only filter eval IDs.
A typical A/B setup:
  • experiments/baseline.ts: a plain agent.
  • experiments/with-skill.ts: the same agent plus a setup hook that writes CLAUDE.md.
  • Both groups use the same eval set, model, attempt count, and budget.

When to use Sandbox Fixture

  • The agent needs to modify real files.
  • You need to run the project’s tests, build, or lint.
  • You need to compare diffs.
  • You are evaluating a coding agent such as Claude Code or Codex.
  • You are comparing whether a Skill, plugin, or Hook improves real tasks.
If you are only evaluating a direct agent application, a plain direct adapter is lighter.