# Prose Lint

The deterministic house-style linter for Adom copy. It flags em-dashes and the
tics that make AI-written text read as AI-written, so anything we ship (READMEs,
wiki pages, release notes, chat announcements, UI strings) sounds like a person
wrote it.

`prose-lint` is the mechanical half of the house style. The judgment half lives in
the `prose-style` skill; read that for *how* to rewrite what this flags.

## Install

```
adom-wiki install adom/prose-lint
```

Ships as part of `adom/core`, so a normal Adom workstation already has it. Needs
Node 16+ (already present on Adom containers).

## Usage

```
prose-lint README.md                  # lint one or more files
prose-lint docs/*.md                   # globs
cat page.md | prose-lint               # or stdin
prose-lint --fix README.md             # apply safe 1:1 word swaps in place
prose-lint --strict page.md            # fail on ANY finding, not just em-dashes
prose-lint --json page.md              # { status, data, hints[] } for machines
```

Exit codes: `0` clean or soft-only, `1` hard findings (em-dashes / spaced `--`),
`2` usage error. `--strict` makes any finding fail (useful in CI / publish gates).

## What it flags

<!-- prose-lint-disable (the table below quotes the banned words on purpose) -->

| Severity | Rule | Example |
|---|---|---|
| hard | em-dash, en-dash-in-prose, spaced `--` | `a game-changer — really` |
| warn | tell-words | delve, seamless, robust, leverage, utilize, showcase, in-depth, myriad |
| warn | boilerplate cadence | "it's not just X, it's Y", "in today's world", "when it comes to", "plays a pivotal role" |
| info | filler | "in order to", "a variety of", empty intensifiers |

<!-- prose-lint-enable -->

It is markdown- and code-aware. It will not flag a `--flag` in a code span, a
number range like `2-5 V`, a URL, or YAML front matter, so it is safe over mixed
prose + code files.

## Wiring it into a publish flow

Run it non-blocking before publishing and show the findings:

```sh
prose-lint page.md || true   # advisory: print findings, never abort the publish
```

Or gate hard in CI with `--strict` when you want zero tolerance.
