.otto/verify.yml file in your repository.
verify.yml applies to code Otto writes during ticket
automation. It doesn’t affect pull request reviews;
those are configured with otto.yml.Quick start
Most repositories don’t need averify.yml. Otto detects your project type and runs the usual commands. Add one only to change the defaults:
.otto/verify.yml
Reference
Full example
.otto/verify.yml
Auto-detection
Wheninstall and verify are omitted, Otto detects your project type:
For Node.js, only scripts that exist in
package.json are run. For Makefiles, only targets that exist are run.
Runtime versions
Whenruntime is omitted, Otto detects versions:
- Node.js, checked in order:
.node-version,.nvmrc, thenodejsentry in.tool-versions, then the major version inpackage.jsonengines.node. - .NET:
sdk.versioninglobal.json. - Go, Python, Rust:
latest.
runtime, for example java: "21" or ruby: "3.3".
Partial configuration
Set only what you need; Otto auto-detects the rest:How verification works
1
Install runtimes
Each version in
runtime is installed with mise.2
Install dependencies
install commands run in order and stop at the first failure.3
Verify
verify commands run in order. Every result is collected; a failure doesn’t
stop the rest.4
Fix and retry
If any command fails, a fix agent gets the errors, corrects the code, and
verification runs again, up to
max_retries times.5
Report
The results are included in the pull request description.
Best practices
- Start with auto-detection. Add a
verify.ymlonly when the defaults don’t fit. - Keep verify commands fast. Run lint, build, and unit tests; leave slow integration suites to CI.
- Use
enabled: falsesparingly. Otto’s code won’t be checked before the PR opens. - Raise timeouts for large monorepos and
max_retriesfor strict lint or build setups.
