Skip to content

jeff-bruemmer/proserunner

Repository files navigation

P R O S E R U N N E R

Fast prose linter. Finds writing issues, lets you ignore what you don't care about.

Example

$ proserunner --file document.md
document.md
[1]  3:13   "quick as lightning" -> A tired phrase.
[2]  7:15   "software program" -> Pleonastic phrase.
[3]  11:49  "hopefully" -> Skunked term: consider rephrasing.
[4]  13:8   "Female booksalesman" -> Sexist or ridiculous term.

Fix what matters, ignore the rest by number:

$ proserunner --file document.md --ignore-issues 2,3
document.md
[1]  3:13   "quick as lightning" -> A tired phrase.
[2]  13:8   "Female booksalesman" -> Sexist or ridiculous term.

Quick start

proserunner --file document.md    # Check a file
proserunner --init-project         # Set up project config

Why it's useful

  • Numbered issues - Ignore specific problems by number: --ignore-issues 1,3,5. Numbers are for the current run.
  • Customizable - Add checks as EDN files. Toggle them on/off without touching code.
  • Fast - Parallel processing, smart caching.
  • Flexible - Output formats: table, JSON, EDN, verbose.
  • Smart ignores - Run it, fix what matters, ignore the rest by number. Ignores remember location.
  • Project friendly - Commit ignore files and custom checks. Everyone sees the same issues.

What it checks

Ships with 22 checks (run proserunner --checks to see yours):

Name Kind Explanation
Annotations Case Typical markers used to signal problem sites in the text.
Archaisms Existence Outmoded word or phrase.
Clichés Existence An overused phrase or opinion that betrays a lack of original thought.
Compression Recommender Compressing common phrases. From Style: Toward Clarity and Grace by Joseph M. Williams.
Corporate-speak Existence Words and phrases that make you sound like an automaton.
Hedging Existence Say, or say not. There is no hedging.
Jargon Existence Phrases infected with bureaucracy.
Meta-discourse Existence Self-referential phrases that add no value.
Needless-variant Recommender Prefer the more common term.
Nominalization Recommender Convert weak noun phrases back to strong verbs.
Non-words Recommender Identifies sequences of letters masquerading as words, and suggests an actual word.
Not the negative. Recommender Prefer the word to the negation of the word's opposite.
Overused-adverbs Existence Use of adverbs that are weak or redundant. Consider using a stronger verb instead.
Oxymorons Existence Avoid contradictory terms (that aren't funny).
Phrasal adjectives Recommender Hyphenate phrasal adjectives.
Pompous-diction Recommender Pompous diction: use simpler words. From Style: Toward Clarity and Grace by Joseph M. Williams.
Redundancies Existence Avoid phrases that say the same thing more than once.
Regex Regex Raw regular expressions.
Repetition Repetition Catches consecutive repetition of words, like the the.
Sexism Existence Sexist or ridiculous terms (like mail person instead of mail carrier).
Skunked-terms Existence Words with controversial correct usage that are best avoided.
Weasel-words Existence Vague phrases that avoid commitment and precision.

See check definitions →

Customizing checks

Turn off checks - Edit ~/.proserunner/config.edn:

{:checks
 [{:name "default"
   :directory "default"
   :files ["cliches"
           ;; "jargon"      ; disabled
           "corporate-speak"]}]}

Add custom checks - Drop .edn files in:

  • Global: ~/.proserunner/custom/
  • Project: .proserunner/checks/

Or use: proserunner --add-checks ~/my-checks

See Usage docs for check examples.

Docs

About

A fast, customizable linter for prose.

Resources

License

Stars

Watchers

Forks

Packages

No packages published