Skip to content

Configuration Reference

Two files, same format, repo overrides global field-by-field:

  • ~/.config/flawless/config.yaml — machine scope
  • <repo>/.flawless.yaml — repo scope

Unknown keys are errors. All fields optional.

FieldTypeDefaultEffect
agentstringautoauto, claude, codex, none, or a custom command containing {prompt_file} (details)
targetstringremote’s default branchbase branch for rebase and PR
remotestringorigingit remote pushed to
ignorelist[]path prefixes excluded from the review diff
docs_instructionsstring""extra guidance appended to the docs-step prompt
FieldTypeDefaultEffect
commands.teststringauto-detectedtest command, run with sh -c in the worktree
commands.lintstringauto-detectedlint command

Auto-detection order: Makefile target with the step’s name → language file (go.modgo test ./... / go vet ./...; package.json script; Cargo.tomlcargo test / clippy-or-check; pyproject.toml/setup.py → pytest / ruff when installed). Nothing detected → the step is skipped with that reason.

FieldDefaultNotes
steps.reviewtrueneeds an agent
steps.testtrue
steps.linttrue
steps.docsfalseopt-in; needs an agent
steps.prtrueneeds gh; skips itself otherwise
steps.cifalseopt-in; needs gh

sync and push are not configurable — a gate that neither syncs nor publishes isn’t a gate. Both can still be skipped for a single run with --skip.

FieldDefaultMeaning
auto_fix.review1fix rounds for blocking review findings
auto_fix.test3fix attempts for a failing test command
auto_fix.lint3fix attempts for a failing lint command

0 disables automation for that step (gates offer accept/skip/quit only).

FieldDefaultMeaning
pr.draftfalseopen PRs as drafts
pr.base"" (= target)PR base branch when it differs from the rebase target
agent: claude
target: main
commands:
test: make test
lint: make lint
steps:
docs: true
auto_fix:
test: 2
pr:
draft: true
ignore:
- vendor/
- gen/
docs_instructions: |
User docs live in docs/. Update the CLI reference when flags change.