Skip to navigation

CLI Reference

View as Markdown

This page lists every skillevaluator command with its full flag set and exact defaults. If you want task-oriented guidance instead, start from the tier guides: Tier 1: Validation, Tier 2: Deduplication, and Tier 3: Live Evaluation.

Harbor is the open-source agent evaluation framework behind the Tier 3 task, environment, trial, and trajectory commands referenced below.

Command map

CommandPurposeNeeds
tier1 PATHRun Tier 1 static and configured LLM checksExternal scanners; provider for LLM stages
tier2 PATHRun intra-skill dedup; include inter-skill comparison with --catalogChat and embeddings provider
tier3 PATHPrepare a missing starter dataset and run live evaluationProvider, supported agent, and sandbox
validateRun all three tiers for skills, including Tier 3 autopilot, with explicit scope and gating controlsProvider access, scanners, supported agent, and sandbox; --tiers 1 selects static checks
quality-checkScore skill quality across four weighted categoriesNothing
rubric-evalLLM-as-judge rubric evaluationLLM provider key
security-scanScan for security vulnerabilitiesNothing (key only with --llm/--llm-verify)
pii-scanScan for PII and local identifiersNothing (key only with --llm-verify)
lint-scriptsAdvisory lint checks on skill scriptsNothing
context-optimization-checkDetect redundant content within one skillEmbeddings + LLM provider key
dedup-scanAlias of context-optimization-checkEmbeddings + LLM provider key
similarity-checkDetect duplicate content across a collectionEmbeddings provider key
tier3 evaluateRun Tier 3 live agent evaluationProvider key plus a credential the selected agents can use (one NVIDIA_API_KEY covers both on NVIDIA Build), backend (Docker by default)
tier3 select-decoysSave a reproducible set of neighboring skills for group evaluationLocal description-embedding catalog, skill collection, embeddings provider key
create-eval-datasetGenerate synthetic eval datasetsLLM provider key (none with --no-llm)
init-custom-graderScaffold a bring-your-own-grader starterNothing
init-harbor-taskScaffold a bring-your-own-task Harbor starterNothing
viewOpen the latest HTML live-evaluation reportA previous tier3 evaluate run
compareCompare live-evaluation results across agentsA previous tier3 evaluate run
dashboardFilter quantitative tables and paired usage differencesSaved JSON reports or retained runs; dashboard extra
harbor-viewBrowse retained Harbor job artifactsA run made with --harbor-keep-jobs
doctorLive-evaluation readiness check, or Tier 1 scanners and Tier 2 providers with --tierNothing
health-checkQuick CLI + backend readiness check, or another tier with --tierNothing
modelsList models visible through the selected provider’s catalogProvider configuration/key
tier3 validateValidate evals/ and the optional Harbor contractNothing

Global conventions

Reports. Every Tier 1 and Tier 2 command accepts the same two report options. Direct tier1 PATH, tier1 validate PATH, and tier2 PATH default to cli,json,html; focused expert commands default to cli:

FlagDefaultEffect
-r, --report [cli|json|html|markdown|sarif]cli,json,html for direct workflows; cli for focused commandsReport format(s). Accepts comma- or space-separated values (-r cli,json,html or -r cli json html) and may be repeated. The compact default view writes html+json unless -r is passed explicitly, which is honored exactly (including cli).
-o, --output-dir DIRECTORYreportsDirectory for generated reports.

In practice: a default validate run (no -r) shows the compact pipeline view and writes json + html report files; passing -r takes over completely — -r cli really means terminal output only, no files. The focused expert commands take the cli default literally: they print the full terminal report and write files only for the formats you request with -r. A validate run writes skillevaluator-output-<timestamp>.json / .html (plus .md with -r markdown or .sarif.json with -r sarif); standalone commands write a fixed skillevaluator-<kind> basename (for example skillevaluator-quality.json), so a re-run overwrites the previous report. Direct workflows write skillevaluator-tier1 or skillevaluator-tier2 reports in the selected formats and also overwrite previous files with that basename. Filename conventions and report anatomy live in Reports & Results.

Exit codes. Commands communicate through a small exit-code contract — this is what your CI gates on (see Gate Your CI):

CodeMeaning
0Success
1Validation failed, the run could not complete, or an unexpected internal error occurred
2Usage error — an unknown flag, a value outside an option’s type or choices, or a target path that does not exist

Global options. skillevaluator --version prints the installed version. -v, --verbose, given before the command (skillevaluator -v validate ./my-skill), enables debug logging; for validate it also replaces the compact pipeline view with the full detail stream. Every command accepts -h as a short form of --help.

Direct tier workflows

Run each tier independently
skillevaluator tier1 ./my-skill
skillevaluator tier2 ./my-skill --catalog ./skill-catalog.json
skillevaluator tier3 ./my-skill

There is no required run subcommand. A bare tier1, tier2, or tier3 shows help and does not evaluate the current directory. Prefix a path with ./ when its name matches an expert command: tier1 ./validate evaluates a directory named validate; tier1 validate ./my-skill invokes the Tier 1 workflow.

WorkflowDefault scopeScope controls
tier1 PATHAll static checks including dependencies; rubric, LLM security, and finding verification when a provider is configured--no-llm skips LLM stages; --llm requires provider access; --checks selects static checks
tier2 PATHIntra-skill analysis--catalog FILE adds inter-skill comparison against a saved JSON catalog; without it, inter-skill is explicitly not run
tier3 PATHOne missing starter case is generated, then the provider-native agent runs in Docker with and without the skillAccepts the tier3 evaluate options; missing-source generation is implicit

Direct Tier 1 can run keyless, but marks its LLM stages as skipped. Missing required scanner evidence remains incomplete. Direct Tier 2 needs both chat and embedding access and takes one skill, not a collection. Create its catalog with similarity-check ./skills --save-catalog ./skill-catalog.json. Direct Tier 3 preserves valid existing sources and rejects invalid ones; it does not overwrite a dataset to repair it.

validate PATH runs all three tiers for skills by default, including Tier 3 autopilot. It is separate from these tier-only workflows.

Direct tiers compared with validate --tiers

validate --tiers narrows the combined pipeline; it does not run a tier on its own. Tier 1 always runs and gates the exit code, so --tiers 2, --tiers 3, and --tiers 2,3 are rejected. Use tier2 PATH or tier3 PATH to run Tier 2 or Tier 3 without Tier 1.

Direct workflowsvalidate PATH --tiers ...
Tiers runOnly the named tierTier 1 plus any selected tiers
Tier 1 dependency auditIncluded in tier1 PATHOpt-in with --checks, which replaces the default list, so name every check you want plus dependency (selection rules)
Tier 1 LLM stagesRubric, LLM security, and verification run when a provider is configured; --no-llm skips themLLM security analysis runs only with --llm, and finding verification only with --llm-verify; no rubric stage
Reportstier1 and tier2 default to -r cli,json,html and write skillevaluator-tier1.* or skillevaluator-tier2.* under -o. tier3 writes its run under --results-dir and does not accept -r or -oThe compact view writes HTML and JSON as skillevaluator-output-<timestamp>.*; skill targets also get BENCHMARK.md
Exit code 1tier1: a check failed or required evidence is incomplete. tier2: HIGH or CRITICAL findings or a blocking analysis error. tier3: the run did not complete; a FAIL verdict alone exits 0Tier 1 failed; Tier 2 findings unless --no-block-on-dedup; Tier 3 only with --block-on-agent-eval

For tier2 PATH, tier3 PATH, and tier1 PATH --llm, a missing provider is a configuration error that exits 1 before any report is written. tier1 PATH without --llm runs keyless. validate records Tier 2 and Tier 3 as skipped and still writes its reports.

Direct Tier 3 checks provider, option, and runtime configuration before it generates a starter case, so a configuration error leaves evals/ unchanged and no paid generation or agent run starts. The exception is --env-mode ack, cwsandbox, langsmith, openshift, and wandb: their backend checks contact a remote control plane, so they run after the starter case is generated. Usage errors, such as an option the workflow does not accept, exit 2.

Direct Tier 1 options

FlagDefaultEffect
--checks TEXTAll applicable static checks, including dependency auditingComma-separated subset of static checks
--skip CHECKSnoneComma-separated checks to leave out, e.g. secrets for the Gitleaks scan. Skipped checks are shown and reported as skipped, nothing is installed for them, and the run cannot certify Tier 1 for publication
--llm / --no-llmEnabled when a provider is configuredEnable or skip rubric, LLM security, and finding verification; explicit --llm requires valid provider configuration
--min-score INTEGER70Minimum passing quality and rubric score, from 0 to 100; quality severity overrides cannot waive the minimum
--quality-config PATHpackaged quality-default.yamlYAML file that replaces the quality check’s expected-heading rules. See Tier 1: Validation.
--profile TEXTSKILLEVALUATOR_PROFILE, then externalValidation policy profile
--previous-version TEXTSKILLEVALUATOR_PREVIOUS_VERSION, else unsetPrevious version for version checks
--skillspector-baseline FILEunsetAudited SkillSpector suppression baseline; never discovered from the skill. See Audited SkillSpector baselines.

Also accepts -r/--report and -o/--output-dir described above.

Direct Tier 2 options

FlagDefaultEffect
--catalog FILEunsetSaved JSON catalog for inter-skill comparison
--threshold FLOAT0.80Intra-skill candidate similarity threshold
--similarity-threshold FLOAT0.75Inter-skill reporting threshold
--full-bodyoffCompare the full SKILL.md against a catalog created in full-body mode

Both thresholds accept values from 0 to 1. Also accepts -r/--report and -o/--output-dir. Direct Tier 3 accepts the options in tier3 evaluate, with missing-source generation already enabled.

Expert tier subcommands

The commands below remain available for focused operations. skillevaluator tier1 validate PATH runs the same isolated Tier 1 workflow as tier1 PATH. Use top-level skillevaluator validate PATH for the combined pipeline.

GroupMembers
tier1validate, quality-check, rubric-eval, security-scan, pii-scan, lint-scripts
tier2context-optimization-check, dedup-scan, similarity-check
tier3evaluate, select-decoys, create-eval-dataset, init-custom-grader, init-harbor-task, doctor, view, compare, validate, harbor-view

health-check and models are top-level only. The expert commands tier3 evaluate, tier3 select-decoys, and tier3 validate are advertised only inside the tier3 group:

tier3 validate

Validate the Tier 3 evals/ directory and the optional Harbor bring-your-own-task contract before you spend money on a live run. The dataset and directory rules it enforces are documented in Eval Datasets.

Check evals/ before a live run
skillevaluator tier3 validate ./my-skill --strict
FlagDefaultEffect
--jsonoffEmit JSON output.
--strictoffTreat warnings as failures.
--harbor-contractoffValidate the Harbor task and reward contract (see Custom Graders & Tasks).

validate

Validate a skill, rule, workflow, or plugin. For skills, all three tiers run by default. Tier 3 uses autopilot to reuse an existing evaluation source or generate one starter case when none exists; invalid sources are reported rather than replaced. Tier 1 static, security, and quality checks always gate the exit code. Tier 2 deduplication runs and gates by default, but --no-block-on-dedup keeps the scan while making its findings advisory. Tier 3 is advisory unless --block-on-agent-eval is set. Rules, workflows, and plugins retain their applicable validation stages without automatically enabling live skill evaluation.

Common invocations
skillevaluator validate ./my-skill # Tier 1 + Tier 2 + Tier 3 autopilot
skillevaluator validate ./my-skill --llm # add LLM security analysis
skillevaluator validate ./my-skill -r cli,json,html # multiple report formats
skillevaluator validate ./my-skill --no-dedup # skip Tier 2 dedup
skillevaluator validate ./my-skill --no-block-on-dedup # run Tier 2 as advisory
skillevaluator validate ./my-skill --external # strict publication profile
skillevaluator validate ./my-skill -a codex # choose the Tier 3 agent
skillevaluator validate ./my-skill -a codex \
--block-on-agent-eval # gate on Tier 3 too
skillevaluator validate ./my-skill --no-autopilot # require an existing eval source
skillevaluator validate ./my-skill --full -a codex # compatibility: same default scope
skillevaluator validate ./my-skill --tiers 1,2 # skip live evaluation
skillevaluator validate ./my-skill --tiers 1 # static checks only
skillevaluator validate ./my-skill --tiers 1,3 # explicit tier selection
skillevaluator validate ./skills-folder # whole catalog, serially
skillevaluator validate ./my-skill -a codex,claude-code \
--env-mode docker --harbor-keep-jobs # Tier 3, retain Harbor jobs

Pointing validate at a directory of skills (one with no root SKILL.md) runs the whole pipeline for each skill inside it, writes each skill’s reports under <output-dir>/<skill>/, and finishes with a per-skill summary — catalog validation in one command. Skills run serially by default; --workers N validates up to N skills at once in parallel processes. --previous-version is rejected for a directory of skills. By default the terminal shows a compact pipeline view; --verbose switches to the full per-check detail stream.

--help groups the flags into four panels, mirrored by the subsections below.

Run & Reports

Applies to the whole run: target typing, policy profile, reports, tier selection.

FlagDefaultEffect
--type [skill|rules|workflows|plugin|auto]autoForce the content type instead of auto-detecting it from the target path.
--tiers TEXTall three for skillsExplicit tier selection, e.g. --tiers 1,2 skips live evaluation and --tiers 1,3 skips dedup. Tier 1 always runs.
--fullunnecessary for skillsCompatibility flag for all three tiers with autopilot. Explicit tier selection and disable flags still apply.
--verboseoffPrint the full per-check detail stream instead of the compact pipeline view.
--profile TEXT$SKILLEVALUATOR_PROFILE, then externalValidation profile: external or a custom name.
--external—Shortcut for --profile external (validate for public publication).
--policy FILEnoneCustom policy YAML overlaid on top of --profile.
--workers INTEGER RANGE1Concurrent skill jobs when validating a folder of skills (x>=1). Values above 1 run skills in parallel processes and disable the per-skill pipeline view.

The evaluated source provenance flags also appear in this panel.

Auto-detection recognizes: a SKILL.md for skills, .mdc files for rules, workflow-rules.mdc for workflows, and — for plugins — a bundle-reference agent_plugin.yaml/.yml manifest or a contained .claude-plugin/plugin.json manifest. Plugins are validated against their public contract; quality, lint, and version checks are skill-only and skipped for plugins.

validate also takes the standard -r/--report and -o/--output-dir options described under Global conventions.

Tier 1 · Static & Security

Static checks; LLM-free by default. Tier 1 gates the exit code and always runs.

FlagDefaultEffect
--checks, --tier1-checks TEXTall applicableComma-separated subset of Tier 1 checks. Default choices: schema, version, security, pii, license, code-integrity, unicode, quality, lint; opt-in (not run by default): dependency. quality/lint/version are skill-only and skipped for rules and workflows.
--skip CHECKSnoneComma-separated Tier 1 checks to leave out: any check above or secrets (the Gitleaks scan inside code-integrity). Skipped checks show as skipped in the terminal and reports, nothing is installed for them, and the run cannot certify Tier 1 for publication.
--previous-version VERSIONSKILLEVALUATOR_PREVIOUS_VERSION, else unsetPrevious released version; the skill’s version must be a strictly greater SemVer. Single-skill targets only.
--fail-fastoffStop on the first failing check instead of collecting all issues.
-c, --continue-on-failureoffRun the full pipeline without stopping early; record all issues in the reports. Overrides --fail-fast, and for folder validation keeps scanning every skill past a CRITICAL finding.
--llm, --tier1-llm / --no-llm, --no-tier1-llmno-llmEnable LLM-backed security analysis (requires a configured public provider — see Providers & Credentials).
--llm-verifyoffRun a second LLM pass to suppress false-positive findings.
--skillspector-baseline FILEunsetAudited SkillSpector suppression baseline for the security check; never discovered from the skill. See Audited SkillSpector baselines.
--min-score INTEGER70Minimum quality score (0–100) required per skill when the quality check runs; policy severity overrides cannot waive this gate.
--quality-config PATHpackaged quality-default.yamlYAML file that replaces the quality check’s expected-heading rules. See Tier 1: Validation.

Tier 2 · Deduplication

Embedding + LLM dedup; on by default, skips gracefully without a provider key.

FlagDefaultEffect
--dedup, --tier2 / --no-dedup, --no-tier2dedupRun Tier 2 intra-skill semantic-overlap checks. On by default; skipped gracefully without public embedding access. Use --no-tier2 (or --no-dedup) to disable.
--block-on-dedup / --no-block-on-dedupblockingChoose whether Tier 2 findings participate in the validate exit gate. The scan and its report entries still run with --no-block-on-dedup.

Tier 3 · Live Agent Evaluation

The following flags are forwarded to the live-eval engine when Tier 3 is enabled, which is the default for skills. They do not re-enable a stage excluded by --tiers or --no-tier3. The Dockerfile-, workspace-, resource-, and progress-tuning flags (--custom-dockerfile-mode, --skill-workspace-mode, the --override-* flags, --progress, and --progress-interval) are not forwardable — use the standalone tier3 evaluate command for those.

FlagDefaultEffect
--tier3 / --no-tier3enabled for skillsRun or skip Tier 3 live agent evaluation. Accepts a supported YAML/JSON dataset or native Harbor source and validates it before execution. --agent-eval / --no-agent-eval are compatibility aliases. Explicit --tiers selection controls scope; --no-tier3 also disables autopilot.
--block-on-agent-eval / --no-block-on-agent-evaladvisoryChoose whether Tier 3 findings, including missing or invalid selected task-source evidence, participate in the validate exit gate. When blocking, only a completed PASS verdict with complete attempt coverage passes; NEUTRAL and FAIL exit 1. This flag does not enable Tier 3 by itself.
--autopilot / --no-autopilotenabled for skillsGenerate one starter case when no evaluation source exists, then run Tier 3. Existing sources are reused unchanged; invalid sources are reported. --no-autopilot requires an existing source. Explicit tier selection or --no-tier3 can exclude Tier 3.
-a, --agents TEXTprovider-nativeComma-separated Harbor agents to evaluate. Defaults: NVIDIA Build=opencode, OpenAI=codex, Anthropic=claude-code.
--env-modedockerHarbor environment backend (full list under tier3 evaluate).
--environment-kwarg, --eknoneOperator-only KEY=VALUE constructor option for Harbor-native non-Docker backends (repeatable). Forwarded only when Tier 3 is enabled; skill-owned evals/config.yml cannot set these values. Never pass secrets.
--skip-baselineoffSkip the without-skill baseline (no lift analysis, faster).
--n-concurrent INTEGERunsetConcurrent eval cases per agent.
--max-agents INTEGERunsetMaximum agents to run in parallel.
--max-cases INTEGER RANGEunsetRun only the first N eval cases in staged order (minimum 1); without a limit every case runs. A run that skips cases is recorded in run_config.json and is never publication evidence.
--n-attempts INTEGERunsetAttempts per eval case (pass@k).
--pass-threshold FLOATunsetScore threshold (0.0–1.0) for a case to count as passed.
--stop-on-pass / --no-stop-on-passunsetStop a case’s remaining attempts once one passes.
--model TEXTunsetGlobal agent model override.
--agent-model TEXTunsetPer-agent model override, AGENT=MODEL (repeatable).
--grading-mode [default|default_plus_custom|custom_only]unsetReward/grading mode for live eval.
--results-dir DIRECTORYunsetDirectory for Harbor live-eval results.
--include-skills PATHnoneAdditional skill(s) to mount into the eval environment (repeatable; paths must exist). Requires group workspace mode, set via skill_workspace.mode: group in evals/config.yml.
--copy-repooffCopy the surrounding repo into the eval environment.
--timeout-multiplier FLOATunsetScale Harbor’s agent, verifier, and environment-build timeouts (built-in default 1.0). Must be a finite number greater than 0.
--harbor-keep-jobsoffRetain Harbor job dirs and artifacts after the run for inspection.
--agent-runtime-preflight / --no-agent-runtime-preflightdisabledOpt into an extra agent-only execution of the first staged task before the measured A/B matrix. The CLI value overrides harbor.agent_runtime_preflight; without either, no extra agent runs.

Flags marked “unset” fall back to their matching keys in evals/config.yml where one exists, then to the built-in defaults (Eval Datasets documents the config keys and precedence). The exception is --results-dir, which resolves independently of evals/config.yml (see Reports & Results).

Evaluated source provenance

FlagDefaultEffect
--evaluated-source-repository TEXTunsetRepository (owner/name) of the source tree being evaluated.
--evaluated-source-revision TEXTunsetImmutable revision of the evaluated source: a full Git object id, or a sha256/sha384/sha512 digest. A short prefix is refused.
--evaluator-container-revision TEXTunsetDigest-pinned evaluator image reference recorded beside the evaluated source.

The identity is recorded on BENCHMARK.md, forwarded to every child of a parallel catalog run so each card names the same source tree, and persisted into a Tier 3 run’s run_config.json (see Reports & Results).

quality-check

Score skill quality across correctness, discoverability, reliability, and efficiency. Runs entirely offline — no API key.

Keyless quality score
skillevaluator quality-check ./my-skill
FlagDefaultEffect
--min-score INTEGER70Minimum composite score required per skill; passing also requires no HIGH or CRITICAL quality findings.
--quality-config PATHpackaged quality-default.yamlYAML file with expected section headers and rules for grading.

Plus the standard report options. A collection’s displayed average does not replace the minimum required of each skill. Scoring weights, grade bands, the independent minimum-score gate, and the --quality-config file format are documented in Tier 1: Validation.

rubric-eval

Run LLM-as-judge rubric evaluation for a skill against nine weighted criteria. Requires a configured LLM provider.

LLM rubric evaluation
skillevaluator rubric-eval ./my-skill
FlagDefaultEffect
--min-score INTEGER70Minimum weighted rubric score required to pass; every criterion must also score at least 7/10.

Plus the standard report options.

security-scan

Scan for security vulnerabilities using the static scanner stack. Keyless by default; the LLM flags require a configured provider.

Static security scan
skillevaluator security-scan ./my-skill
FlagDefaultEffect
--llm / --no-llmno-llmEnable LLM security analysis.
--llm-verifyoffUse LLM verification to reduce false positives.
--skillspector-baseline FILEunsetAudited SkillSpector suppression baseline; never discovered from the skill. See Audited SkillSpector baselines.

Plus the standard report options.

pii-scan

Scan for PII and local identifiers (emails, credentials, home paths, and more).

PII scan
skillevaluator pii-scan ./my-skill
FlagDefaultEffect
--llm-verifyoffUse LLM verification to reduce false positives.

Plus the standard report options.

lint-scripts

Run advisory lint checks on skill scripts. Takes only the standard report options.

Advisory script lint
skillevaluator lint-scripts ./my-skill

context-optimization-check

Detect redundant content within one skill (intra-skill deduplication). Needs an embeddings-capable provider plus a chat LLM for the verification stage — see Tier 2: Deduplication.

Intra-skill redundancy check
skillevaluator context-optimization-check ./my-skill
FlagDefaultEffect
--threshold FLOAT0.8Similarity threshold for clustering candidate duplicates.
--model TEXTprovider defaultEmbedding model override.
--llm-model TEXTprovider defaultLLM model override for the verification stage.

Plus the standard report options.

dedup-scan

Alias of context-optimization-check — same behavior, same flags (--threshold default 0.8, --model, --llm-model, plus the standard report options). Only the report basename differs: skillevaluator-dedup instead of skillevaluator-context.

Same check, alias name
skillevaluator dedup-scan ./my-skill

similarity-check

Detect duplicate content across a collection with embedding similarity (inter-skill deduplication). Takes a content path — a single item or a folder of them.

Compare a collection
skillevaluator similarity-check ./skills
FlagDefaultEffect
--type [skill|rules|workflows|auto]autoContent type of the target.
--threshold FLOAT0.75Minimum similarity to report.
--full-bodyoffEmbed full file bodies instead of descriptions.
--model TEXTprovider defaultEmbedding model override.
--catalog FILEnoneCompare exactly one skill against a local catalog.
--save-catalog FILEnoneBuild and save a versioned local catalog from this collection.
--max-entries INTEGER1024Maximum selected manifests for a fresh collection; range 1–5000. Does not restrict loaded catalog queries.
--max-scalar-comparisons INTEGER128000000Maximum comparisons multiplied by embedding dimensions; must be positive. Applies to pairwise scans and catalog queries.

Plus the standard report options. Classification tiers and catalog rules are in Tier 2: Deduplication.

For older scripts, the hidden deprecated aliases --cache and --save-cache still map to --catalog and --save-catalog, respectively. Use the catalog spellings for new commands. A catalog query and a catalog build cannot be combined in one invocation, and each alias cannot be supplied alongside its replacement.

tier3 select-decoys

Choose neighboring skills from a local description-embedding catalog and save a frozen JSON manifest for group evaluation. This command makes an embedding request for the target; it does not launch an agent or modify the run policy.

Save a group-workspace selection
skillevaluator tier3 select-decoys ./skills/my-skill \
--catalog ./skill-catalog.json --catalog-root ./skills \
--count 4 --output ./skills/my-skill/evals/decoys.json
FlagDefaultEffect
--catalog FILErequiredSkill-only catalog with at most 1,000 entries, saved by similarity-check --save-catalog without --full-body.
--catalog-root DIRECTORYrequiredLocal collection root corresponding to catalog-relative skill paths.
--count INTEGER4Number of eligible skills to select, from 1 to 1000; fails if fewer are available.
--exclude PATHnoneExclude a catalog-relative skill path; repeatable.
--model TEXTconfigured embedding modelEmbedding model override; must match the catalog.
-o, --output FILErequiredSelection manifest to write, outside the collection or inside the target’s evals/ directory.

The manifest records the catalog hash and embedding identity, selected paths and scores, target manifest hash, and selected runtime-content hashes. The target’s own collection uses a root relative to its parent directory, so an identical checkout can reuse the manifest. The hashes cover everything staging copies from a selected skill, including ignored or untracked files and empty folders, so generate a manifest you plan to commit from a fresh clone. Unrelated external collections retain an absolute root. Evaluator-only files are excluded from decoy hashes; changing a decoy’s evaluation config does not require a new selection. Output cannot overwrite evaluation inputs or an existing non-manifest file. Set skill_workspace.mode: group and skill_workspace.decoy_manifest in evals/config.yml to consume it. The manifest path is relative to the target skill’s parent directory. Evaluation validates and reuses the selection without contacting the embedding provider. See Select a reproducible decoy set for a complete example and the limits of similarity-based selection.

tier3 evaluate

Run Tier 3 live agent evaluation: real agents attempt your eval cases with and without the skill, and the difference becomes Skill Lift. Requires the tier3 extra, a provider key for grading, a credential the selected agents can use — with NVIDIA Build in --env-mode docker, kata, or local, the one NVIDIA_API_KEY covers both roles — and a running backend (Docker by default). The full walkthrough is Tier 3: Live Evaluation.

Live evaluation with codex in Docker
skillevaluator tier3 evaluate ./my-skill --agents codex --env-mode docker

Use skillevaluator tier3 PATH for the complete workflow with automatic missing-source generation. tier3 evaluate retains explicit execution and opt-in --autopilot. The old top-level spelling skillevaluator evaluate still works for existing scripts but does not appear in --help.

FlagDefaultEffect
-a, --agents TEXTprovider-nativeComma-separated Harbor agents. Defaults: NVIDIA Build=opencode, OpenAI=codex, Anthropic=claude-code. Supported: claude-code, codex, opencode; the alias claude is accepted for claude-code. See Agents & Sandboxes.
--env-modedockerWhere trials run. SkillEvaluator exposes 27 environment modes: 26 Harbor-native modes — docker, daytona, e2b, modal, runloop, langsmith, ec2, gke, ack, openshift, novita, apple-container, singularity, islo, tensorlake, cwsandbox, wandb, use-computer, blaxel, beam, skypilot, hyperbrowser, vercel, kata, runta, mosaic — plus SkillEvaluator local mode. wandb runs Harbor’s cwsandbox backend with W&B authentication, so it needs the harbor[cwsandbox]==0.24.0 extra; Harbor 0.24 has no wandb extra. Harbor’s cua-cloud, opensandbox, hf-sandbox, podman, prime, and smol backends are not selectable. See the complete extras and prerequisites matrix in Agents & Sandboxes. Installed packages can add more modes; see Custom execution backends.
--environment-kwarg, --eknoneOperator-only KEY=VALUE constructor option for Harbor-native non-Docker backends (repeatable). Values accept JSON-compatible types; skill-owned evals/config.yml cannot set them. Never pass secrets. Docker and local reject all kwargs, Kata accepts only kata_runtime and kata_dns, and Harbor runtime-policy fields for overrides, mounts, networks, extra Compose, lifecycle, and pod security are reserved, as are stream, enable_environment_dir_upload, and auth for cwsandbox/wandb. Names the selected backend does not accept in Harbor 0.24.0 are rejected. See Native backend constructor options.
--autopilotoffCreate one eval case when no dataset/task source exists, then evaluate. The case is LLM-generated with the configured provider, with a deterministic keyless template fallback; an existing source is never overwritten.
--skip-baselineoffSkip the without-skill baseline (no lift analysis, faster).
--skip-with-skilloffRun only the without-skill baseline, for example to calibrate a task set or measure a model change before running the skill. The report is marked baseline-only: the overall score is the baseline score, with-skill and lift are unavailable (shown as skipped or N/A, never 0.0), and no skill verdict is given. Mutually exclusive with --skip-baseline. Not available on validate.
--n-attempts INTEGERunsetAttempts per eval case (pass@k).
--pass-threshold FLOATunsetScore threshold (0.0–1.0) for a case to count as passed.
--stop-on-pass / --no-stop-on-passunsetStop a case’s remaining attempts once one passes.
--n-concurrent INTEGERunsetConcurrent eval cases per agent.
--max-agents INTEGERunsetMaximum agents to run in parallel.
--max-cases INTEGER RANGEunsetRun only the first N eval cases in staged order (minimum 1); without a limit every case runs. A run that skips cases is recorded in run_config.json and is never publication evidence.
--model TEXTunsetGlobal agent model override.
--agent-model TEXTunsetPer-agent model override, AGENT=MODEL (repeatable), e.g. --agent-model codex=gpt-6.1-sol. Accepts the claude alias for claude-code.
--custom-dockerfile-mode [preserve|rebase]unsetHow a custom evals/environment/Dockerfile is applied: rebase (built-in default) swaps its FROM line onto the eval base image; preserve keeps your FROM and appends the eval dependencies.
--skill-workspace-mode [isolated|group]unsetisolated (built-in default) stages only the target skill in the agent workspace; group also stages the skills from --include-skills / skill_workspace.include.
--include-skills PATHnoneAdditional skill(s) to mount into the eval environment (repeatable; paths must exist). Requires group workspace mode (--skill-workspace-mode group or skill_workspace.mode: group in evals/config.yml).
--copy-repooffCopy the surrounding repo into the eval environment.
--grading-mode [default|default_plus_custom|custom_only]unsetReward/grading mode — see Custom Graders & Tasks. The legacy aliases aces_default (→ default) and aces_plus_custom (→ default_plus_custom) are still accepted.
--results-dir DIRECTORYunsetDirectory for live-eval results (precedence rules in Reports & Results).
--harbor-keep-jobsoffRetain Harbor job dirs and artifacts for inspection with harbor-view.
--verboseoffAlso print the per-evaluator and per-dimension tables and the metric findings after the case summary.
--agent-runtime-preflight / --no-agent-runtime-preflightdisabledOpt into an extra agent-only execution of the first staged task before the full A/B evaluation matrix.
--timeout-multiplier FLOATunsetScale Harbor’s agent, verifier, and environment-build timeouts (built-in default 1.0). Must be a finite number greater than 0.
--override-cpus INTEGERunsetOverride eval-environment CPU allocation (passed through to Harbor).
--override-memory-mb INTEGERunsetOverride eval-environment memory in MB (passed through to Harbor).
--override-storage-mb INTEGERunsetOverride eval-environment storage in MB (passed through to Harbor).
--evaluated-source-repository TEXTunsetRepository (owner/name) of the source tree being evaluated, persisted into the run’s run_config.json.
--evaluated-source-revision TEXTunsetImmutable revision of the evaluated source: a full Git object id, or a sha256/sha384/sha512 digest. A short prefix is refused.
--evaluator-container-revision TEXTunsetDigest-pinned evaluator image reference recorded beside the evaluated source.
--progress [auto|rich|plain|off]autoProgress display for the run: rich live view, plain line output, or off.
--progress-interval SECONDSmode defaultSeconds between progress heartbeats, from 0.05 to 86400: how often the rich view refreshes elapsed times and how often plain output repeats a still running line for active stages. Defaults to 1 second for rich and 60 seconds for plain, including auto with redirected or CI output.

Without a --model/--agent-model override, agent execution uses gpt-6.1-sol for OpenAI (OpenCode: openai/gpt-5.6-sol unless SKILL_EVAL_LLM_MODEL is set), claude-opus-5-5 for Anthropic, and nvidia/nemotron-3-super-120b-a12b for NVIDIA Build. OpenCode displays the last value as nvidia/nvidia/nemotron-3-super-120b-a12b because its adapter namespace precedes the NVIDIA catalog ID.

Flags marked “unset” fall back to their matching keys in evals/config.yml where one exists, then to the built-in defaults. The exception is --results-dir, which resolves independently of evals/config.yml.

create-eval-dataset

Create synthetic eval datasets for agent skill evaluation, written to evals/evals.json. Uses the configured LLM provider unless you pass --no-llm. Dataset anatomy and the four case buckets are documented in Eval Datasets.

Generate the full dataset
skillevaluator create-eval-dataset ./my-skill --full

--force overwrites an existing evals/evals.json, including any hand-edited cases, and --refine implies --force. Use --dry-run first if you are unsure.

FlagDefaultEffect
--fulloffGenerate the full four-bucket dataset (LLM). With --no-llm, template mode omits the negative bucket without an authored off-skill prompt in EVAL.md.
--no-llmoffUse local templates only (no API key needed).
--dry-runoffPreview without writing.
--forceoffOverwrite existing evals/evals.json.
--prompt PATHnoneDeveloper eval-guidance file for generation (default: auto-detects evals/EVAL.md).
--refineoffRefine cases using existing or collected trajectories. Reading trajectories from existing results does not require the tier3 extra; when none exist, collecting one runs claude-code through Harbor and needs the tier3 extra, Docker, and a configured provider (see Eval Datasets).
--from-results PATHnoneWith --refine: results path containing agent trajectories (default: latest results).
--results-dir DIRECTORYunsetWith --refine: external results root to search for trajectories.

init-custom-grader

Create a bring-your-own-grader (BYOG) starter under evals/. The grader contract it scaffolds is documented in Custom Graders & Tasks.

Scaffold a Python grader
skillevaluator init-custom-grader ./my-skill
FlagDefaultEffect
--mode [default_plus_custom|custom_only]default_plus_customHow the custom grader combines with the default graders.
--language [python|shell]pythonGrader language.
--forceoffOverwrite an existing top-level custom grader.
--no-configoffOnly create the grader file; do not create or update evals/config.yml.

init-harbor-task

Create a bring-your-own-task (BYOT) Harbor starter template under evals/harbor/. See Custom Graders & Tasks for how case IDs map to eval entries.

Scaffold a Harbor task
skillevaluator init-harbor-task ./my-skill
FlagDefaultEffect
--forceoffOverwrite an existing starter case.
--case-id TEXTcase-001Harbor case directory and eval entry id.
--mode [default|default_plus_custom|custom_only]custom_onlyGrading mode the starter configures.
--language [python|shell]pythonGrader language.
--with-configoffCreate or update evals/config.yml for native Harbor mode.

view

Open the latest HTML live-evaluation report for a skill. If the results exist but report.html is missing, view regenerates it before opening.

Open the latest report
skillevaluator view ./my-skill
FlagDefaultEffect
--results-dir DIRECTORYunsetResults directory to read from (default resolution in Reports & Results).

compare

Compare live-evaluation results across agents from previous runs.

Compare agents
skillevaluator compare ./my-skill
FlagDefaultEffect
--results-dir DIRECTORYunsetResults directory to read from.

dashboard

Open the optional local tables dashboard. Install the dashboard extra first, then pass JSON reports, retained run directories, or directories containing reports. With no paths, upload JSON files in the browser.

skillevaluator dashboard reports/run-a.json reports/run-b.json
skillevaluator dashboard --no-browser --port 8502
OptionDefaultDescription
--port8501, or the next free portLocal port on 127.0.0.1, from 1 through 65535. Pass it to require a specific port; the command fails if that port is busy.
--no-browseroffStart the server without opening a browser.

The server listens on 127.0.0.1; Ctrl+C stops it. See the dashboard guide for measurements and comparison eligibility.

harbor-view

Open retained Harbor job artifacts with Harbor’s trajectory browser. Takes a jobs directory as its argument and has no options. Jobs are only retained when the original run passed --harbor-keep-jobs. skillevaluator tier3 harbor-view is an identical tier-prefixed spelling.

Browse retained trajectories
skillevaluator harbor-view ./path/to/jobs-dir

doctor

Check live-evaluation runtime readiness: the CLI install, the configured provider, the requested agents and their credentials, and the selected backend. Run it before your first tier3 evaluate — see Agents & Sandboxes for what each check means.

Deep readiness check
skillevaluator doctor --env-mode docker

--tier selects other readiness checks. Without it, doctor checks Tier 3 only, as above.

Tier 1 scanners and Tier 2 providers
skillevaluator doctor --tier 1 --checks security,code-integrity,dependency
skillevaluator doctor --tier 2 --verify-models
skillevaluator doctor --tier all
  • Tier 1 reports each external scanner the selected checks run: SkillSpector for security, Bandit, Semgrep and Gitleaks for code-integrity, and pip-audit for dependency. Each row shows the resolved executable, the override variable when one selected it, and the version from a bounded version probe. The probe never starts a shell. A scanner fails when it is missing, its override is malformed, or the probe exits nonzero or times out. It also fails when it is older than the release the validators parse: Bandit 1.9.4 or Gitleaks 8. An unreported version is a warning.
  • Tier 2 checks that the embedding provider and the LLM provider used for duplicate analysis resolve, without a network request. With --verify-models, it also sends one embedding request and one chat request, each bounded by --timeout and sent without retries. Failures show only the HTTP status and a remedy, never the provider’s response body.
  • all runs Tiers 1, 2 and 3 in order. A failed tier does not stop the next, and the exit code is nonzero when any tier fails.

An option for a tier that is not selected exits with a usage error before any check runs. For example, --checks without --tier 1 or all is an error, and so is --timeout with --tier 2 but no --verify-models, because offline Tier 2 sends no request.

FlagDefaultEffect
--tier [1|2|3|all]3Readiness to check: Tier 1 scanners, Tier 2 providers, Tier 3 live evaluation, or all three in order.
--checks TEXTvalidate’s default checksTier 1 only. Comma-separated checks whose scanners to probe, with the same names as validate --checks; add dependency to include pip-audit.
--timeout FLOAT60Tier 1, and Tier 2 with --verify-models. Seconds allowed for each scanner version probe and each Tier 2 live request, including a Bedrock chat request; must be finite, greater than 0 and at most 3600.
-a, --agents TEXTprovider-nativeComma-separated agents to check. Defaults: NVIDIA Build=opencode, OpenAI=codex, Anthropic=claude-code.
--env-modedockerBackend to check (same 27 modes as tier3 evaluate).
--environment-kwarg, --eknoneKEY=VALUE non-secret constructor option for a Harbor-native non-Docker backend (repeatable). Pass the same values intended for evaluation. Docker and local reject all kwargs, and Kata accepts only kata_runtime and kata_dns; policy-owned fields are rejected for every eligible backend.
--agent-model TEXTunsetPer-agent model override, AGENT=MODEL (repeatable) — check readiness with the model each agent will actually run.
--verify-modelsoffTier 3: live per-agent catalog probe. Prints pass for verified access, warn for an inconclusive or non-authoritative result (success or failure), and fail only for a definitive credential, model, or configuration rejection. Tier 2: one embedding and one chat request.

-a, --env-mode, --environment-kwarg and --agent-model apply to Tier 3 only. skillevaluator tier3 doctor checks only Tier 3. It takes the Tier 3 flags, including --agent-model and --verify-models, and has no --tier, --checks or --timeout.

health-check

Quick readiness check for the CLI and the selected live-eval backend. Use it as an install smoke test or a fast CI preflight. It differs from doctor by two flags: health-check has no --agent-model and no --verify-models, so it never sends a live provider request. --tier and --checks work as in doctor, and --timeout bounds only the Tier 1 scanner probes.

Quick readiness check
skillevaluator health-check
skillevaluator health-check --tier 1 # CI preflight for the Tier 1 scanners
FlagDefaultEffect
--tier [1|2|3|all]3Readiness to check, as in doctor. Tier 2 resolves providers offline.
--checks TEXTvalidate’s default checksTier 1 only. Checks whose scanners to probe.
--timeout FLOAT60Tier 1 only. Seconds allowed for each scanner version probe; must be finite, greater than 0 and at most 3600.
-a, --agents TEXTprovider-nativeComma-separated agents to check. Defaults: NVIDIA Build=opencode, OpenAI=codex, Anthropic=claude-code.
--env-modedockerBackend to check (same 27 modes as tier3 evaluate).
--environment-kwarg, --eknoneKEY=VALUE non-secret constructor option for a Harbor-native non-Docker backend (repeatable). Pass the same values intended for evaluation. Docker and local reject all kwargs, and Kata accepts only kata_runtime and kata_dns; policy-owned fields are rejected for every eligible backend.

models

List models visible through the selected provider’s catalog. It uses the same provider and credential resolution as evaluation (see Providers & Credentials), so it checks catalog reachability and model membership. NVIDIA Build and some compatible gateways expose public catalogs, so a listed model does not prove that the inference key works or that the model is compatible with the evaluation harness. doctor --verify-models reports such successful but non-authoritative checks as warnings. Top-level only; there is no tier-prefixed twin.

List the provider's models
skillevaluator models --limit 20
FlagDefaultEffect
--limit INTEGER RANGE10Maximum number of catalog entries to show (1<=x<=100).
--jsonoffEmit machine-readable JSON.

See also