Oh My Otter

CLI reference

Reference for the omot scan, checks, bench, and report commands.

The oh-my-otter npm package provides the omot executable. If the first argument is not a command, it is treated as a path to scan. With no arguments, omot scans the current directory.

omot scan [path]

Scan a repository for agent readiness. scan is the default command.

omot scan [path] [options]
OptionDescription
--runExecute repository test scripts.
--jsonPrint a machine-readable JSON report.
--fixPreview and optionally apply create-only fixes.
-y, --yesApply fixes without prompting; used with --fix.
--badgePrint a Markdown badge.
--plugin <specifier>Load a plugin by file path or package. Repeat to load more than one plugin.
--min-score <n>Fail if the score is below this threshold; n must be an integer from 0 to 100.

Without --min-score, a completed scan exits with code 0 regardless of its score. With the option, it exits with code 1 when the score is below the threshold. Invalid thresholds and other command errors also exit with code 1. --yes has no effect without --fix.

--fix previews create-only fixes. It never overwrites existing files. Use --yes to apply the planned fixes without an interactive prompt.

omot checks [path]

List built-in and plugin checks for a repository.

omot checks [path] [--plugin <specifier>] [--json]

--plugin <specifier> loads a plugin by file path or package and can be repeated. --json prints the checks as JSON. A successful listing exits with code 0; command errors exit with code 1.

omot bench

Benchmark commands use standardized tasks. Results are stored locally in .omot/run.json.

omot bench list

List the available benchmark tasks.

omot bench list [--json]

--json prints task manifests as JSON. A successful listing exits with code 0.

omot bench show <id>

Show a task's prompt and requirements.

omot bench show <id> [--param <key=value>]... [--json]
OptionDescription
--param <key=value>Fill in a prompt parameter. Repeat for multiple parameters.
--jsonPrint the task and rendered prompt as JSON.

omot bench start <id> [path]

Record a baseline in .omot/run.json and print the prompt.

omot bench start <id> [path] [options]
OptionDescription
--param <key=value>Set a task parameter. Repeat for multiple parameters.
--agent <name>Coding agent being benchmarked; stored as a slug.
--agent-version <version>Version of the coding agent.
--model <name>Model used by the coding agent; stored as a slug.
--branch <name>Create and switch to a new branch for this run.
--skip-baseline-scriptsSkip task scripts at start; baseline health will be unknown.
-y, --yesConfirm .gitignore and fix-failing-test changes without prompting.

The working tree must be clean so the baseline matches the repository. Starting a task records its baseline and readiness scan, runs available baseline scripts unless --skip-baseline-scripts is set, and writes .omot/run.json. It may append .omot/ to .gitignore or create that file. Use -y to confirm those changes and any replacement of an existing run without prompting.

With --branch, start creates and switches to the named branch before recording the baseline. If startup fails after switching, omot best-effort restores the original branch and removes the new branch. fix-failing-test creates its own branch and does not accept --branch.

omot bench verify [path]

Run the task verifier and record its result in .omot/run.json.

omot bench verify [path] [options]
OptionDescription
--corrections <n>Number of times you corrected or redirected the agent.
--minutes <n>Minutes of human effort.
--agent <name>Override the agent recorded at start.
--agent-version <version>Override the agent version recorded at start.
--model <name>Override the model recorded at start.
--jsonPrint the updated run as JSON.

When run interactively, verify asks for the correction and effort values if they are not supplied. In a non-interactive terminal, pass both --corrections <n> and --minutes <n>. It exits with code 1 for a failed verification; pass and partial outcomes exit with code 0.

omot bench clean [path]

Remove the local run file and lock, leaving .gitignore untouched.

omot bench clean [path] [--delete-branch] [--yes]
OptionDescription
--delete-branchAlso delete the branch created by omot for this run.
-y, --yesConfirm cleanup without prompting.

If no run file exists, the command prints Nothing to clean. A confirmation is required before deleting the run file or branch: interactive terminals prompt once; non-interactive runs must pass --yes. Branch deletion is refused when there are uncommitted changes outside .omot/. Without --delete-branch, omot keeps the branch and prints the Git commands to remove it manually.

omot report [path]

Preview and submit an anonymous benchmark result. Nothing is sent without confirmation.

omot report [path] [--dry-run]
OptionDescription
--dry-runPrint the report payload without submitting.

Reporting requires a verified run. The command prints the exact data it would submit, then asks whether to open a prefilled GitHub issue. Nothing is sent until you review and create the issue. --dry-run prints the payload and exits with code 0 without submitting. A missing verified result or other error exits with code 1.

On this page