Repo Config Reference
Per-repo configuration lives in .no-mistakes.yaml at the root of your repository.
agent: codex
commands: lint: "golangci-lint run ./..." test: "go test -race ./..." format: "gofmt -w ."
ignore_patterns: - "*.generated.go" - "vendor/**"
auto_fix: rebase: 3 review: 3 test: 3 document: 3 lint: 5 ci: 3
intent: enabled: true threshold: 0.2 slack_days: 3 disabled_readers: []
test: evidence: store_in_repo: true dir: .no-mistakes/evidenceFields
agent
Override the default agent for this repo and its setup-wizard suggestions.
| Type | string |
| Values | auto, claude, codex, rovodev, opencode, pi, acp:<target> |
| Default | Inherits from global config |
auto resolves to the first supported native agent found on PATH in this order: claude, codex, opencode, acli with rovodev support, then pi.
acp:<target> uses the user-installed acpx binary configured in global config.
ACP agents are opt-in and are not considered by agent: auto.
commands.test
Explicit test command. Run via the platform shell - sh -c on POSIX, cmd.exe /c on Windows.
| Type | string |
| Default | Empty (agent auto-detects tests and evidence checks) |
When set, the test step runs this exact command first as the baseline and checks the exit code. When empty, the agent detects and runs relevant tests itself. When user intent is available, the agent may still run after a successful baseline command to gather evidence-oriented validation.
commands.lint
Explicit lint command. Run via the platform shell - sh -c on POSIX, cmd.exe /c on Windows.
| Type | string |
| Default | Empty (agent auto-detects) |
When set, the lint step runs this exact command and checks the exit code. When empty, the agent detects relevant linters and formatters, applies safe fixes, reruns the relevant checks, commits any agent changes, and reports only unresolved issues.
commands.format
Formatter command run before the push step commits agent fixes.
| Type | string |
| Default | Empty (no separate push-step formatter) |
This does not prevent empty commands.lint from detecting and running formatters during the lint step.
ignore_patterns
Paths to exclude from review and documentation checks.
| Type | string[] |
| Default | Empty (no ignores) |
Pattern matching rules:
| Pattern | Rule |
|---|---|
*.generated.go | No slash - matches by basename |
vendor/** | Ends with /** - matches entire subtree |
some/path/file.go | Contains a slash - full path glob |
auto_fix
Override auto-fix attempt limits for specific steps. Fields not set here inherit from global config.
| Type | object |
| Field | Type | Default |
|---|---|---|
auto_fix.rebase | int | Inherits from global (default 3) |
auto_fix.review | int | Inherits from global (default 0) |
auto_fix.test | int | Inherits from global (default 3) |
auto_fix.document | int | Inherits from global (default 3) |
auto_fix.lint | int | Inherits from global (default 3) |
auto_fix.ci | int | Inherits from global (default 3) |
Set to 0 to disable the follow-up auto-fix loop for a step (findings require manual approval).
The document step attempts documentation fixes during its initial pass, so unresolved documentation findings pause for approval instead of using an automatic follow-up loop.
For empty commands.lint, the agent still attempts safe fixes during the initial lint pass; unresolved lint findings then pause for approval instead of starting another automatic fix loop.
auto_fix.ci covers the CI step’s CI failure and merge-conflict auto-fix attempts.
Legacy alias: auto_fix.babysit.
intent
Override transcript-based user-intent extraction settings for this repo. Fields not set here inherit from global config and then the built-in defaults.
| Field | Type | Default |
|---|---|---|
intent.enabled | bool | Inherits from global (default true) |
intent.threshold | float | Inherits from global (default 0.2) |
intent.slack_days | int | Inherits from global (default 3) |
intent.disabled_readers | string[] | Adds to globally disabled readers |
Valid disabled_readers values are claude, codex, opencode, rovodev, and pi.
test.evidence
Override where evidence artifacts from the test step are stored. Fields not set here inherit from global config and then the built-in defaults.
| Field | Type | Default |
|---|---|---|
test.evidence.store_in_repo | bool | Inherits from global (default false) |
test.evidence.dir | string | Inherits from global (default .no-mistakes/evidence) |
By default, test evidence stays in a temporary directory keyed by run ID and is referenced by local path.
Set store_in_repo: true to write evidence under <dir>/<branch-slug> inside the worktree so push can commit and publish it with the branch.
Branch slashes become nested directories, unsafe branch characters are replaced, and an empty branch slug falls back to the run ID.
If dir is absolute, escapes the worktree, points into .git, crosses a symlink, or is ignored by Git, no-mistakes falls back to temporary evidence storage for that run.