cli-eval
GitHub提供LLM评估套件管理CLI工具,支持创建、运行评测集,实时监控基准测试进度,查看评分卡及对比模型性能,并支持与CI工作流集成。
Trigger Scenarios
Install
npx skills add diegosouzapw/OmniRoute --skill cli-eval -g -y
SKILL.md
Frontmatter
{
"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."
}
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]
OmniRoute — CLI Evals
Requires the omniroute CLI. See CLI entry-point skill 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}'
done
CI 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 createfails withinvalid rubric→ use one of:exact-match,contains,llm-judge,regexsuites runreturnsmodel not found→ verify model ID withomniroute models --search <name>eval getshowsstatus: failed→ checkomniroute logs --search evalfor error detailsscorecardreturns empty results → the run may still berunning; pollomniroute eval get <runId>untilstatusiscompleted
Version History
- 1cafd32 Current 2026-07-25 11:46


