lintmax

Output Format

Token-efficient output format for AI agents

Agent Mode (default)

Grouped by file, then linter, then rule. Each rule line is L<line>,<line>,… rule/name — the L prefix marks the numbers as source line locations, never a finding count:

file.ts
 linter
  L<line>,<line>,<line> rule/name

The L prefix exists because a bare number before a rule name (1312 noChildrenProp) reads as "1312 findings of this rule" when it is really "one finding, at line 1312". L1312 cannot be misread.

Example

apps/web/showcase.tsx
 biome
  L42,55,60,78,92,103 lint/suspicious/noExplicitAny
  L1312 lint/correctness/noChildrenProp
 eslint
  L1184,1209,1215,1220,1225 @typescript-eslint/no-unsafe-call
 oxlint
  L800,804 eslint-plugin-react-perf(jsx-no-jsx-as-prop)
 prettier
  unformatted
sync.ts
 oxlint
  L37,66 eslint-plugin-unicorn(no-await-expression-member)

Read the block above as: noExplicitAny at six lines (42, 55, …), noChildrenProp at one line (1312), and so on — the count of findings for a rule is how many L locations it lists, never the numbers themselves.

Rules

  • Prints ok on success (exit 0)
  • Exit 1 on errors with grouped output
  • Each rule's numbers are L-prefixed source line locations, comma-joined; the finding count is how many are listed
  • Deduplication across linters (biome > oxlint > eslint priority)
  • Prettier violations show as unformatted (no line numbers)
  • sort-package-json violations show as unsorted
  • Comment violations show as deletable

Human Mode (--human)

Pass --human to get full verbose output from each linter:

lintmax check --human
lintmax fix --human

CLI Reference

lintmax fix              # fix all, delete comments, prints `ok` on success
lintmax fix --human      # fix all, show verbose output
lintmax check            # compact error output
lintmax check --human    # verbose output from each tool
lintmax rules            # list all enabled rules (compact)
lintmax rules --human    # list all enabled rules (table)

On this page