/cli-eval
Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
$ npx -y skills add diegosouzapw/OmniRoute --skill cli-eval --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/cli-eval
Context preview
The summary Claude sees to decide when to auto-load this skill.
Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
SKILL.md
cli-eval.SKILL.mdname: cli-eval
description: Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->
Overview
Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
Quick install
npm install -g omniroute # or: npx omniroute
omniroute --version
Subcommands
`eval`
**Example:**
omniroute eval
`eval suites`
**Example:**
omniroute eval suites
`eval list`
**Example:**
omniroute eval list
`eval get <suiteId>`
**Example:**
omniroute eval get <suiteId>
`eval create`
**Flags:**
- `--file <path>`
**Example:**
omniroute eval create
`eval run <suiteId>`
**Flags:**
- `-m, --model <id>`
- `--combo <name>`
- `--concurrency <n>`
- `--tag <tag>`
- `--watch`
**Example:**
omniroute eval run <suiteId>
`eval list`
**Flags:**
- `--suite <id>`
- `--status <s>`
- `--since <ts>`
- `--limit <n>`
**Example:**
omniroute eval list
`eval get <runId>`
**Example:**
omniroute eval get <runId>
`eval results <runId>`
**Flags:**
- `--failed`
**Example:**
omniroute eval results <runId>
`eval cancel <runId>`
**Flags:**
- `--yes`
**Example:**
omniroute eval cancel <runId>
`eval scorecard <runId>`
**Example:**
omniroute eval scorecard <runId>
`simulate [prompt]`
**Flags:**
- `--file <path>`
- `-m, --model <id>`
- `--combo <name>`
- `--reasoning-effort <level>`
- `--thinking-budget <n>`
- `--explain`
**Example:**
omniroute simulate [prompt]
<!-- skill:custom-start --> <!-- Migrated from skills/omniroute-cli-eval/SKILL.md (preserved curated content) -->
OmniRoute — CLI Evals
Requires the `omniroute` CLI. See [CLI entry-point skill](https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omniroute-cli/SKILL.md) for install + global flags.
What are evals?
Evals are automated test suites that score LLM outputs against expected answers or rubrics. OmniRoute stores suites and run results in its local database.
Eval suites
omniroute eval suites list # List all eval suites
omniroute eval suites list --json # JSON output
omniroute eval suites get <suiteId> # Full suite definition
Create a suite
omniroute 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):
{"input": "What is 2+2?", "expected_output": "4"}
{"input": "Translate 'hello' to Spanish", "expected_output": "hola"}Run an eval
omniroute 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:
RUN_ID=$(omniroute eval suites run <suiteId> --model claude-sonnet-4-6 --output json | jq -r '.id')
omniroute eval get $RUN_ID
Manage runs
omniroute 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
Scorecard output
omniroute eval scorecard <runId> --output json
Response fields per sample:
{
"id": "sample-1",
"score": 0.95,
"passed": true,
"input": "What is 2+2?",
"output": "4",
"expected": "4"
}Comparing models
Run the same suite against multiple models and compare:
for 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}'
doneCI integration
# 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)"Errors
- `suites create` fails with `invalid rubric` → use one of: `exact-match`, `contains`, `llm-judge`, `regex`
- `suites 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 details
- `scorecard` returns empty results → the run may still be `running`; poll `omniroute eval get <runId>` until `status` is `completed`
<!-- skill:custom-end -->
Read more
name: cli-eval description: Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->
Overview
Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
Quick install
npm install -g omniroute # or: npx omniroute omniroute --version
Subcommands
`eval`
**Example:**
omniroute eval
`eval suites`
**Example:**
omniroute eval suites
`eval list`
**Example:**
omniroute eval list
`eval get <suiteId>`
**Example:**
omniroute eval get <suiteId>
`eval create`
**Flags:**
- `--file <path>`
**Example:**
omniroute eval create
`eval run <suiteId>`
**Flags:**
- `-m, --model <id>`
- `--combo <name>`
- `--concurrency <n>`
- `--tag <tag>`
- `--watch`
**Example:**
omniroute eval run <suiteId>
`eval list`
**Flags:**
- `--suite <id>`
- `--status <s>`
- `--since <ts>`
- `--limit <n>`
**Example:**
omniroute eval list
`eval get <runId>`
**Example:**
omniroute eval get <runId>
`eval results <runId>`
**Flags:**
- `--failed`
**Example:**
omniroute eval results <runId>
`eval cancel <runId>`
**Flags:**
- `--yes`
**Example:**
omniroute eval cancel <runId>
`eval scorecard <runId>`
**Example:**
omniroute eval scorecard <runId>
`simulate [prompt]`
**Flags:**
- `--file <path>`
- `-m, --model <id>`
- `--combo <name>`
- `--reasoning-effort <level>`
- `--thinking-budget <n>`
- `--explain`
**Example:**
omniroute simulate [prompt]
<!-- skill:custom-start --> <!-- Migrated from skills/omniroute-cli-eval/SKILL.md (preserved curated content) -->
OmniRoute — CLI Evals
Requires the `omniroute` CLI. See [CLI entry-point skill](https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omniroute-cli/SKILL.md) for install + global flags.
What are evals?
Evals are automated test suites that score LLM outputs against expected answers or rubrics. OmniRoute stores suites and run results in its local database.
Eval suites
omniroute eval suites list # List all eval suites omniroute eval suites list --json # JSON output omniroute eval suites get <suiteId> # Full suite definition
Create a suite
omniroute 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):
{"input": "What is 2+2?", "expected_output": "4"}
{"input": "Translate 'hello' to Spanish", "expected_output": "hola"}Run an eval
omniroute 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:
RUN_ID=$(omniroute eval suites run <suiteId> --model claude-sonnet-4-6 --output json | jq -r '.id') omniroute eval get $RUN_ID
Manage runs
omniroute 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
Scorecard output
omniroute eval scorecard <runId> --output json
Response fields per sample:
{
"id": "sample-1",
"score": 0.95,
"passed": true,
"input": "What is 2+2?",
"output": "4",
"expected": "4"
}Comparing models
Run the same suite against multiple models and compare:
for 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}'
doneCI integration
# 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)"Errors
- `suites create` fails with `invalid rubric` → use one of: `exact-match`, `contains`, `llm-judge`, `regex`
- `suites 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 details
- `scorecard` returns empty results → the run may still be `running`; poll `omniroute eval get <runId>` until `status` is `completed`
<!-- skill:custom-end -->
Never stop coding. Free MIT AI gateway: one endpoint, 290+ providers (90+ free), 500+ models — Kimi, Claude, GPT, OpenAI, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 500+ contributors
Repo: diegosouzapw/OmniRoute
Other skills on omniroute.
- /cli-a2a
Interact with the OmniRoute A2A server from the CLI. Send tasks, inspect skill execution history, and test the JSON-RPC 2.0 agent-to-agent protocol interactively.
Open skill - /cli-backup-sync
Backup and restore OmniRoute data from the CLI. Trigger incremental snapshots, sync to cloud storage, manage backup schedules, and restore from archive files.
Open skill - /cli-batches
Submit and monitor batch inference jobs from the CLI. Upload and manage files for batch processing, retrieve results, and integrate batch pipelines with CI/CD workflows.
Open skill - /cli-chat
Send chat completions, stream responses, and start an interactive REPL session from the CLI. Supports all OmniRoute providers, combo routing, and system prompt configuration.
Open skill - /cli-compression
Configure and test prompt compression from the CLI. Manage RTK filters, Caveman rules, stacked compression modes, and preview compression output with real prompts.
Open skill - /cli-contexts
Manage context engineering configurations, RTK filter sets, and conversation sessions from the CLI. Apply context-relay settings and inspect active context pipelines.
Open skill

