alint 0.15.0

Language-agnostic linter for repository structure, file existence, filename conventions, and file content rules.
Language-agnostic linter for repository structure, existence, naming, and content rules

Usage: alint[EXE] [OPTIONS] [COMMAND]

Commands:
  check             Run linters against the current (or given) directory. Default command
  list              List the rules configured in this repo
  explain           Show a rule's definition
  fix               Apply automatic fixes for violations whose rules declare one
  baseline          Snapshot current violations so later runs fail only on new ones
  facts             Evaluate the config's `facts:` entries and print resolved values
  init              Scaffold a starter `.alint.yml` for the detected ecosystem
  export-agents-md  Generate an `AGENTS.md` section from the active rule set
  suggest           Scan for antipatterns and propose rules that would catch them
  validate-config   Parse-validate an `.alint.yml` without walking the tree
  lsp               Start the alint language server (LSP over stdio)
  rules             Browse the catalog of rule kinds alint ships (config-independent)
  help              Print this message or the help of the given subcommand(s)

Options:
  -c, --config <CONFIG>
          Path to a config file

  -f, --format <FORMAT>
          Output format
          
          [default: human]

      --no-gitignore
          Disable .gitignore handling (overrides config)

      --fail-on-warning
          Treat warnings as errors for exit-code purposes

      --show-notes
          List informational notes in full on stderr.
          
          Notes are non-violation findings — e.g. entries a rule skipped rather than failed on. By
          default only a one-line count is shown.

      --color <WHEN>
          When to emit ANSI color codes in human output.
          
          `auto` (the default) inspects TTY + `NO_COLOR` + `CLICOLOR_FORCE`. Only affects the
          `human` format; `json` / `sarif` / `github` / `markdown` / `junit` / `gitlab` / `agent`
          are always plain bytes.
          
          [default: auto]
          [possible values: auto, always, never]

      --ascii
          Force ASCII glyphs in human output.
          
          E.g. `x` instead of `✗`. Auto-enabled when `TERM=dumb`.

      --compact
          Compact one-line-per-violation human output.
          
          Suitable for piping into editors / grep / `wc -l`. Format: `path:line:col: level: rule-id:
          message` (the `:line:col` is omitted for findings with no specific location).

      --width <COLS>
          Override the human-output column width.
          
          Default: detected terminal width (TTY only) or 80. Useful for reproducible captures
          (asciinema/screen recordings) and for piping into fixed-width log viewers. Clamped to [40,
          120].

      --no-docs
          Suppress per-violation `docs:` URLs in human output.
          
          Useful for narrow terminals, screen recordings, and CI logs where long URLs disrupt visual
          alignment. URLs remain in JSON / SARIF / GitHub / markdown output regardless.

      --progress <WHEN>
          When to render progress on stderr for slow operations.
          
          Currently just `alint suggest`. `auto` (the default) renders when stderr is a TTY;
          `always` forces; `never` silences. Progress always lives on stderr — `--format` JSON
          output on stdout stays byte-clean.
          
          [default: auto]
          [possible values: auto, always, never]

  -q, --quiet
          Suppress progress and stderr summary lines.
          
          Alias for `--progress=never` plus suppression of the "found N proposals in Ts" footer that
          `suggest` prints.

      --baseline <FILE>
          Suppress violations recorded in a baseline file.
          
          See `alint baseline` to create one; only new violations are reported. Pre-existing
          findings are grandfathered so `check` can gate a legacy repo on new violations only. A
          missing or unreadable baseline is an error (never a silent no-op). The path is resolved
          relative to the current directory (not the checked PATH); the `baseline:` config key, by
          contrast, resolves against the repo root.

      --strict-baseline
          With `--baseline`, fail on stale baseline entries.
          
          Exits 1 when the baseline has stale entries: recorded findings that no longer fire,
          usually because they were fixed. Forces the committed baseline to stay exactly accurate.
          Off by default: fixing things never fails the build.

      --show-baselined
          With `--baseline`, list suppressed findings on stderr.
          
          Lists them in full, rather than just a one-line count. Parallels `--show-notes`.

      --only <RULE_ID>
          Restrict the run to the named rule id(s).
          
          Taken from the effective config (repeatable). Other rules are skipped entirely. An id that
          matches no loaded rule is an error, so typos fail loudly rather than silently linting
          nothing. Applies to `check` and `fix` (the `agent` format emits `fix --only <rule-id>`);
          rejected on any other subcommand. Global, so the bare `alint --only <id>` lints the
          current directory like `alint check --only <id>` — to lint a different path, use the
          explicit form `alint check --only <id> <path>`.

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version