skillpack.co
All solutions

proselint

stale

Prose linter based on advice from world-class writers and editors. 4,519 GitHub stars but 247 open issues signals maintenance debt. Vale has a proselint-compatible package.

Score 72stale

Where it wins

Based on advice from world-class writers and editors

4,519 GitHub stars — established

Where to be skeptical

247 open issues — signals significant maintenance debt

Vale has a proselint-compatible style package — effectively archived

No recent meaningful updates

Editorial verdict

Stale — high issue count (247 open), Vale covers its functionality with better maintenance. 4,519 stars. Use Vale with the proselint style package instead.

Related

Public evidence

Raw GitHub source

GitHub README peek

Constrained peek so you can sanity-check the source material without leaving the site.

<img src="https://raw.githubusercontent.com/amperser/proselint/main/logo.png" alt="proselint logo" width="200">

Workflow status codecov

Writing is notoriously hard, even for the best writers, and it's not for lack of good advice — a tremendous amount of knowledge about the craft is strewn across usage guides, dictionaries, technical manuals, essays, pamphlets, websites, and the hearts and minds of great authors and editors. But poring over Strunk & White hardly makes one a better writer — it turns you into neither Strunk nor White. And nobody has the capacity to apply all the advice from Garner’s Modern English Usage, an 1100-page usage guide, to everything they write. In fact, the whole notion that one becomes a better writer by reading advice on writing rests on untenable assumptions about learning and memory. The traditional formats of knowledge about writing are thus essentially inert, waiting to be transformed.

We devised a simple solution: proselint, a linter for English prose. A linter is a computer program that, akin to a spell checker, scans through a file and detects issues — like how a real lint roller helps you get unwanted lint off of your shirt.

proselint places the world's greatest writers and editors by your side, where they whisper suggestions on how to improve your prose. You’ll be guided by advice inspired by Bryan Garner, David Foster Wallace, Chuck Palahniuk, Steve Pinker, Mary Norris, Mark Twain, Elmore Leonard, George Orwell, Matthew Butterick, William Strunk, Elwyn White, Philip Corbett, Ernest Gowers, and the editorial staff of the world’s finest literary magazines and newspapers, among others. Our goal is to aggregate knowledge about best practices in writing and to make that knowledge immediately accessible to all authors in the form of a linter for prose; all in a neat command-line utility that you can integrate into other tools, scripts, and workflows.

Installation

To get this up and running, install it using pip.

pip install proselint
Fedora
sudo dnf install proselint
Debian
sudo apt install python3-proselint
Ubuntu
sudo add-apt-repository universe
sudo apt install python3-proselint
Nix

proselint is packaged by nixpkgs.

pre-commit

To use proselint with pre-commit, or prek, point its config at this repository:

repos:
  - repo: https://github.com/amperser/proselint
    rev: v0.16.0
    hooks:
      - id: proselint

Be sure to change rev to use the desired proselint git tag or revision.

Thanks to Andy Airey for the pre-commit configuration.

Declarative

environment.systemPackages = [pkgs.proselint];

Imperative

nix profile install nixpkgs#proselint
Plugins for other software

proselint is available on:

  • Vim via ALE
  • Emacs via Flycheck
  • CI/CD via MegaLinter
  • Neovim via none-ls.nvim

The following plugins are also available, but they are archived or unmaintained:

  • IntelliJ plugin by Victor Kropp
  • Flymake plugin by Manuel Uberti
  • Sublime Text plugin by Jordan Suchow
  • Phabricator Arc plugin by Jeff Verkoeyen
  • Visual Studio Code plugin by Patryk Peszko
  • Coala plugin by the Coala Development Group
  • Danger plugin by David Grandinetti and Orta Therox
  • Syntastic plugin by LCD 047, M Bussonnier, and Daniel M. Cappella

Usage

On the command line

Suppose you have a document text.md with the following text:

John is very unique.
View on GitHub →