Command shape

Updated Jul 27, 2026

The standalone command is:

odw-lint check [path-or-glob ...]

The currently implemented entrypoint accepts explicit workflow file paths:

bun run src/cli/main.ts check <workflow.js> [more-workflows.js ...]

The default full output is one diagnostic per line. Use --output-format json to emit the versioned report envelope shown in Diagnostic reports:

bun run src/cli/main.ts check --output-format json workflows/example.js

Shell-expanded globs, configured discovery, and the published odw-lint binary remain planned. When no files are passed, the planned v1 command checks configured include globs. If no configuration exists, it checks these roots when they are present:

  • .odw/workflows/**/*.js
  • .claude/workflows/**/*.js
  • workflows/**/*.js

The standalone command is path-first. It does not resolve bare ODW workflow names. A future ODW-owned integration may expose odw check, but that command is outside the v1 standalone contract.

The available options follow ruff check where the concepts map cleanly:

  • --output-format full|json selects output. full is the default text output, and json emits the versioned diagnostic report.
  • --output-file <path> writes diagnostics to a file instead of standard output.
  • --strict-claude promotes Claude Code portability warnings to errors.
  • --max-warnings <n> fails the run when warning counts exceed the threshold; warnings within the budget no longer fail the run.
  • --config <path> loads a JSON configuration file. --isolated ignores configuration files.
  • --force-exclude applies configured exclusions to explicit paths.
  • --respect-gitignore and --no-respect-gitignore record the discovery posture. They do not filter explicit paths in the current explicit-path command slice.
  • --stdin-filename <path> analyses standard input and gives diagnostics a stable path.
  • --exit-zero keeps diagnostic findings and unreadable input files from failing the command.
  • --exit-non-zero-on-fix is accepted and will fail when fixes are applied once fix support lands.
  • --help and --version print command discovery information.

The following options remain planned:

  • JSON Lines, GitHub, GitLab, JUnit, and SARIF-style output.
  • --fix, --unsafe-fixes, --diff, and --fix-only.
  • Inline --config overrides.
  • Configured discovery, glob operand expansion, --exclude, and --extend-exclude.
  • --color auto|always|never, --verbose, --quiet, and --silent.