What Problem Evaluation Solves
Before publishing a Skill, you need to answer one question: can this Skill, as a product capability, pass a real task evaluation?comet eval is the tool that answers this. It wraps the underlying details (pytest, Docker, task registration, profiles, reports) so you can run evaluations from the project root directory.
The evaluation result is mandatory evidence for /comet-any before publishing — a Skill that hasn’t passed evaluation cannot be published.
What You Need
- A Skill already generated via
/comet-any(the artifact containscomet/eval.yaml), or - A local Skill directory (for early smoke testing).
What You Need to Prepare Before Running
The core Comet runtime forcomet eval does not need these, but because eval runs real model tasks, it depends on the following environment. If not prepared, eval will silently skip instead of erroring, so be sure to confirm.
Required
| Dependency | Description | How to check |
|---|---|---|
| uv | Python package manager; comet eval uses it internally to drive pytest | uv --version |
| Python 3.11+ | Runtime for the eval harness | python --version |
| Docker | Used to build task images, isolate the running Claude and validators | docker info |
claude CLI | On PATH; the harness invokes it inside Docker | claude --version |
ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN | Model call credentials. When neither is present the entire suite is skipped | echo $ANTHROPIC_API_KEY |
Install uv and Python
If you don’t haveuv yet:
uv will automatically manage Python versions. On first run it creates a .venv under eval/ and installs dependencies (pytest, pyyaml, pydantic, etc.).
Configure the API key
eval/.env (the harness will load it):
Optional
| Environment variable | Purpose |
|---|---|
BENCH_CC_MODEL | Override the Claude model |
BENCH_CC_VERSION | Claude Code version in the Docker image (default latest) |
BENCH_LLM_JUDGE=1 | Enable the optional LLM-as-judge override scoring |
BENCH_SIMULATOR_PROMPT_FILE | Custom user simulator prompt file (default eval/simulator-instruction.md), overrides the user behavior profile simulated in auto_user evaluation |
COMET_EVAL_REPORT_CONFIG | Report output config path (replaces --report-config) |
Using an Anthropic-compatible proxy? When
ANTHROPIC_API_KEY is not set, write ANTHROPIC_AUTH_TOKEN + ANTHROPIC_BASE_URL (BigModel / mimo / OpenRouter, etc.) into eval/.env, and the harness will have the claude inside Docker authenticate with them. For the complete variable table, see Eval harness · Environment Variable Reference.Shortest Path: Two-Step Evaluation
Once the environment is ready, evaluation takes just two steps.Step 1: Discovery pre-check (collect)
First confirm that eval can discover your Skill and tasks. This step consumes no model calls and has the lowest cost:Step 2: Execute the real evaluation (run)
After confirming discovery is fine, run the real evaluation and generate a browsable HTML report:Report path pointing to the generated report. Open it to see whether the result passed.
Without
—collect, the model is actually invoked, consuming tokens and time. The duration of one evaluation depends on the number of tasks and how many outer round-trips of “subject Agent reaches a decision point, user simulator replies, subject Agent continues” are allowed under auto_user mode. maxTurns limits this round-trip ceiling, not the Agent’s internal tool call count. Using —collect to troubleshoot first avoids waste.
First use --collect to catch path, manifest, and task discovery issues, then use --html to execute the real evaluation and generate a browsable report
Only Three Things to Focus On in the Report
- Whether the evaluation passed — the report header or CLI output will tell you clearly.
- Failure attribution — if it didn’t pass, see whether the failure is attributed to
harness,workflow,task, ormodel. This determines what you should fix. - Report location — usually
eval/local/logs/experiments/<experiment-id>/summary.html.
What to Do After the Evaluation Passes
The passing evaluation result becomes/comet-any’s pre-release evidence. Hand the result back to /comet-any to continue, or use the creator command to check readiness:
What Happens Inside a Single Evaluation
Understanding this section helps you judge whether an evaluation result is trustworthy.comet eval ... --html does the following internally:
Key points:
- The model runs inside a Docker container, isolated from your working directory to avoid contamination.
- Expected artifacts are a hard check — the files the task requires must exist.
- rubric scoring is informational (the
[RUBRIC]lines) and does not directly determine pass/fail; the real pass/fail is determined by the validators and whether the “required skill” was invoked.
FAQ
collect errors saying it can't find the manifest
collect errors saying it can't find the manifest
Check whether the path is correct and confirm the
comet/eval.yaml file exists. If you’re not in the Comet repo root directory, add --project <dir> to point to the correct root.run errors saying it can't find the report
run errors saying it can't find the report
Look at the
Experiment and Report path in the CLI output. If the path contains <experiment-id>, look it up in the eval/local/logs/experiments/ directory using the actual experiment id.The eval "passes" instantly but it doesn't feel like it really ran
The eval "passes" instantly but it doesn't feel like it really ran
Almost certainly the environment is not ready: Docker isn’t running, no
ANTHROPIC_API_KEY, or the claude CLI isn’t on PATH. In these cases the harness will skip rather than fail. First confirm What you need to prepare before running.Should I use comet eval or comet skill check
Should I use comet eval or comet skill check
To evaluate whether a Skill’s product capability can pass, use
comet eval. To check whether a specific Skill run is missing artifacts or state, use comet skill check. Pre-release evidence only needs comet eval. See Runtime check.Why run in Docker
Why run in Docker
For isolation. Each task has its own Dockerfile and environment; Claude produces files inside the container and the validator also checks inside the container, so it won’t contaminate your working directory. The image is built only once per session.
Advanced Content
The basic path ends here. If you need a deeper understanding of the evaluation system, read these pages:| Advanced topic | Suitable scenario |
|---|---|
| Evaluation System Overview | Understand where eval fits in Skill creation, validation, and publish readiness |
| Scoring Metrics and Dual-Agent Evaluation | rubric dimension details, pass@k/pass^k, dual-agent automatic interaction |
| Eval harness | Understand the collect/run internal mechanism, profiles, task selection, environment variables |
| Reading Evaluation Reports | Complete failure attribution, report signals, experiment id, and next-step judgment |
| Runtime check | Distinguish comet eval and comet skill check |
| comet eval command | Complete options, arguments, and troubleshooting reference |

