Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 81% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 54% | 0% |
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->
Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
bashnpm install -g omniroute # or: npx omniroute omniroute --version
evalExample:
bashomniroute eval
eval suitesExample:
bashomniroute eval suites
eval listExample:
bashomniroute eval list
eval get <suiteId>Example:
bashomniroute eval get <suiteId>
eval createFlags:
--file <path>Example:
bashomniroute eval create
eval run <suiteId>Flags:
-m, --model <id>--combo <name>--concurrency <n>--tag <tag>--watchExample:
bashomniroute eval run <suiteId>
eval listFlags:
--suite <id>--status <s>--since <ts>--limit <n>Example:
bashomniroute eval list
eval get <runId>Example:
bashomniroute eval get <runId>
eval results <runId>Flags:
--failedExample:
bashomniroute eval results <runId>
eval cancel <runId>Flags:
--yesExample:
bashomniroute eval cancel <runId>
eval scorecard <runId>Example:
bashomniroute eval scorecard <runId>
simulate [prompt]Flags:
--file <path>-m, --model <id>--combo <name>--reasoning-effort <level>--thinking-budget <n>--explainExample:
bashomniroute simulate [prompt]
<!-- skill:custom-start --> <!-- Migrated from skills/omniroute-cli-eval/SKILL.md (preserved curated content) -->
Requires the omniroute CLI. See CLI entry-point skill for install + global flags.
Evals are automated test suites that score LLM outputs against expected answers or rubrics. OmniRoute stores suites and run results in its local database.
bashomniroute eval suites list # List all eval suites omniroute eval suites list --json # JSON output omniroute eval suites get <suiteId> # Full suite definition
bashomniroute eval suites create \ --name "code-quality" \ --rubric "exact-match" \ --samples-file ./samples.jsonl # JSONL: {input, expected_output}
Rubric options: exact-match, contains, llm-judge, regex.
--samples-file format (one JSON object per line):
jsonl{"input": "What is 2+2?", "expected_output": "4"} {"input": "Translate 'hello' to Spanish", "expected_output": "hola"}
bashomniroute eval suites run <suiteId> \ --model claude-sonnet-4-6 # Run suite against a specific model omniroute eval suites run <suiteId> \ --model gpt-4o \ --watch # Live TUI progress (EvalWatch)
The run is asynchronous. Use --watch for a live terminal dashboard or poll manually:
bashRUN_ID=$(omniroute eval suites run <suiteId> --model claude-sonnet-4-6 --output json | jq -r '.id') omniroute eval get $RUN_ID
bashomniroute eval list # List all eval runs omniroute eval list --json omniroute eval get <runId> # Run details (status, model, score) omniroute eval results <runId> # Per-sample results omniroute eval scorecard <runId> # Full scorecard with pass/fail per sample omniroute eval cancel <runId> # Cancel a running eval
bashomniroute eval scorecard <runId> --output json
Response fields per sample:
json{ "id": "sample-1", "score": 0.95, "passed": true, "input": "What is 2+2?", "output": "4", "expected": "4" }
Run the same suite against multiple models and compare:
bashfor MODEL in claude-sonnet-4-6 gpt-4o gemini-2.0-flash; do omniroute eval suites run $SUITE_ID --model $MODEL --output json | jq '{model: .model, score: .score}' done
bash# Run and fail CI if score drops below threshold SCORE=$(omniroute eval suites run $SUITE_ID --model claude-sonnet-4-6 --output json | jq -r '.score') python3 -c "import sys; score=float('$SCORE'); sys.exit(0 if score >= 0.90 else 1)"
suites create fails with invalid rubric → use one of: exact-match, contains, llm-judge, regexsuites run returns model not found → verify model ID with omniroute models --search <name>eval get shows status: failed → check omniroute logs --search eval for error detailsscorecard returns empty results → the run may still be running; poll omniroute eval get <runId> until status is completed<!-- skill:custom-end -->
Other measured skills in the registry, with their headline benchmark lift.