MCPcopy Index your code
hub / github.com/vale-cli/vale

github.com/vale-cli/vale @v3.15.1

repository ↗ · DeepWiki ↗ · release v3.15.1 ↗ · Ask this repo → · + Follow
684 symbols 2,240 edges 142 files 332 documented · 49% updated 2d agov3.15.1 · 2026-06-12★ 5,53358 open issues
README

Vale: Your style, our editor Build status GitHub All Releases Docker Pulls Chocolatey Homebrew Gurubase

Vale is a command-line tool that brings code-like linting to prose. It's fast, cross-platform (Windows, macOS, and Linux), and highly customizable.

A demo screenshot.

Docs Vale Studio Package Hub Rule Explorer Config Generator

:heart: Sponsors

Hi there! I'm @jdkato, the sole developer of Vale. If you'd like to help me dedicate more time to developing, documenting, and supporting Vale, feel free to donate through GitHub Sponsors or Open Collective. Any donation—big, small, one-time, or recurring—is greatly appreciated!

Organizations

Other

Thanks to DigitalOcean for providing hosting credits for Vale Studio.

DigitalOcean Referral Badge

Deploy now on DigitalOcean and get $200 in free credits!

Individuals

:boom: Key Features

  • [x] Support for markup: Vale has a rich understanding of many markup formats, allowing it to avoid syntax-related false positives and intelligently exclude code snippets from prose-related rules.

  • [x] A highly customizable extension system: Vale is capable of enforcing your style—be it a standard editorial style guide or a custom in-house set of rules (see examples).

  • [x] Easy-to-install, stand-alone binaries: Unlike other tools, Vale doesn't require you to install and configure a particular programming language and its related tooling (such as Python/pip or Node.js/npm).

See the documentation for more information.

:mag: At a Glance: Vale vs. <...>

NOTE: While all of the options listed below are open-source (CLI-based) linters for prose, their implementations and features vary significantly. And so, the "best" option will depends on your specific needs and preferences.

Functionality

Tool Extensible Checks Supports Markup Built With License
Vale Yes (via YAML) spelling, style Yes (Markdown, AsciiDoc, reStructuredText, HTML, XML, Org) Go MIT
textlint Yes (via JavaScript) spelling, style Yes (Markdown, AsciiDoc, reStructuredText, HTML, Re:VIEW) JavaScript MIT
RedPen Yes (via Java) spelling, style Yes (Markdown, AsciiDoc, reStructuredText, Textile, Re:VIEW, and LaTeX) Java Apache-2.0
write-good Yes (via JavaScript) style No JavaScript MIT
proselint No style No Python BSD 3-Clause
Joblint No style No JavaScript MIT
alex No style Yes (Markdown) JavaScript MIT

The exact definition of "Supports Markup" varies by tool but, in general, it means that the format is understood at a higher level than a regular plain-text file (for example, features like excluding code blocks from spell check).

Extensibility means that there's a built-in means of creating your own rules without modifying the original source code.

Benchmarks

This benchmark has all three tools configured to use their implementations of the write-good rule set and Unix-style output. This benchmark runs Vale's implementation of proselint's rule set against the original. Both tools are configured to use JSON output.
This benchmark runs Vale's implementation of Joblint's rule set against the original. Both tools are configured to use JSON output. This benchmark has all three tools configured to perform only English spell checking using their default output styles.

All benchmarking was performed using the open-source hyperfine tool on a MacBook Pro (2.9 GHz Intel Core i7):

hyperfine --warmup 3 '<command>'

The corpus IDs in the above plots—gitlab and ydkjs—correspond to the following files:

  • A snapshot of GitLab's open-source documentation (1,500 Markdown files).

  • A chapter from the open-source book You Don't Know JS.

Extension points exported contracts — how you extend this code

Rule (Interface)
Rule represents in individual writing construct to enforce. [12 implementers]
internal/check/definition.go
CheckerOption (FuncType)
A CheckerOption is a setting that changes the checker-creation process.
internal/spell/multi.go
Tokenizer (Interface)
(no doc) [1 implementers]
internal/nlp/tokenize.go
User (Interface)
(no doc)
testdata/fixtures/formats/test.ts
TokenTester (FuncType)
(no doc)
internal/nlp/tokenize.go
TokenizerOptFunc (FuncType)
(no doc)
internal/nlp/tokenize.go

Core symbols most depended-on inside this repo

NewE100
called by 52
internal/core/error.go
StringInSlice
called by 52
internal/core/util.go
FileExists
called by 41
internal/system/file.go
String
called by 40
internal/core/config.go
NewE201FromTarget
called by 28
internal/core/error.go
IsDir
called by 26
internal/system/dir.go
NewE201FromPosition
called by 23
internal/core/error.go
Contains
called by 23
internal/check/scope.go

Shape

Function 411
Method 182
Struct 69
Class 7
FuncType 7
TypeAlias 5
Interface 3

Languages

Go93%
Python5%
TypeScript2%
Java1%

Modules by API surface

internal/core/util.go23 symbols
internal/core/config.go21 symbols
internal/check/definition.go21 symbols
internal/lint/walk.go20 symbols
testdata/fixtures/fragments/test2.py18 symbols
internal/nlp/tokenize.go18 symbols
internal/core/view.go17 symbols
internal/spell/multi.go16 symbols
internal/lint/lint.go16 symbols
internal/check/manager.go16 symbols
cmd/vale/command.go14 symbols
internal/core/file.go13 symbols

Dependencies from manifests, versioned

dario.cat/mergov1.0.1 · 1×
github.com/MarvinJWendt/testzav0.4.2 · 1×
github.com/Masterminds/goutilsv1.1.1 · 1×
github.com/Masterminds/semver/v3v3.3.1 · 1×
github.com/adrg/frontmatterv0.2.0 · 1×
github.com/adrg/strutilv0.3.1 · 1×
github.com/adrg/xdgv0.5.3 · 1×
github.com/atomicgo/cursorv0.0.1 · 1×
github.com/bmatcuk/doublestar/v4v4.7.1 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×

For agents

$ claude mcp add vale \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact