Prose quality as an exit code.
The CLI turns the analyzer into an exit code. Every scan is scored by the hosted premium analyzer. Its one design idea: writing quality should be checkable the way tests are.
Getting it
Like the MCP server, the CLI ships to beta testers on request through the feedback form, and lands on a registry after the beta. It needs Node 20 or newer.
Scan: the prose gate
The scan prints the score, every failing check, and the findings with their exact evidence. It exits 0 when all hard checks pass and 1 otherwise, which makes it a CI gate in one line:
Language is auto-detected per text; force it with --lang en or --lang ar, and pick the strictness profile with --mode full or --mode light.
Scores come from the hosted premium analyzer; there is no offline analysis mode. When the analyzer cannot be reached, or the account has no premium access, the command exits with code 2 and a clear error instead of a weaker local result. Set OFFBEAT_API_KEY (a key from your account page) once accounts gate premium; CI runs carry the same variable.
Humanize: the closed loop, your model
The loop analyzes, briefs the model on the exact findings, rewrites, and re-analyzes. Providers cover local models, your existing editor login, and keyed APIs; run offbeat providers for the live list. Exit code 0 means the final text measurably beat the baseline; 2 means it did not, and the tool says so rather than shipping a sideways rewrite.
Reading the output
- The scorecard table is the same one the web tool shows: before and after, check by check.
- --diff prints a word-level diff in the terminal.
- --report file.json saves the full machine-readable run, useful for tracking quality over time.