{"slug": "vale-is-a-linter-for-prose", "title": "Vale Is a Linter for Prose", "summary": "Vale, an open-source command-line linter for prose, enforces consistent editorial style across documents in 12 formats entirely offline, with no runtime and parallel file linting. Written in Go and MIT-licensed, Vale is used by companies including Amazon Web Services, Microsoft, GitLab, Grafana, NVIDIA, Docker, Red Hat, and Datadog, and GitLab runs 82 rules across 2,827 documentation pages in under 20 seconds. Vale supports 19 programming languages via tree-sitter grammars and offers 12 extension points including part-of-speech patterns, readability formulas, and Tengo scripts.", "body_md": "A command-line tool that brings code-like linting to your writing. Enforce a consistent\neditorial style across **every doc**, in **any format**—entirely **offline**.\n\nThanks to [Claude for Open Source](https://claude.com/contact-sales/claude-for-oss).\n\nThese companies support Vale's future — and put it to work in their own products today.\n\nEvery team here publishes something you can open — the `.vale.ini`\n\nthey run,\nor the page they wrote about running it.\n\nThe EKS User Guide walks contributors through installing Vale for live style feedback.\n\ndocs.aws.amazon.com Cloud & infrastructureRuns a packaged PowerShell-Docs style in their Documentarian toolkit.\n\nmicrosoft/Documentarian github.comVale's built-in rules across the public API documentation.\n\n.vale.ini discord/discord-api-docsA required check in GitLab's documentation testing pipeline.\n\ndocs.gitlab.com Developer toolsPowers the prose linting rules in the Grafana Writers' Toolkit.\n\ngrafana.com Data & observabilityAll NeMo Agent Toolkit documentation is checked with Vale before it merges.\n\ndocs.nvidia.com Developer toolsEnforces style standards across the Docker product docs.\n\n.vale.ini docker/docsMaintains \"Vale at Red Hat\", a public style package and onboarding guide.\n\nredhat-documentation.github.io Open sourcePublishes datadog-vale and shifted docs quality left with it.\n\ndatadoghq.com Data & observabilityWhy Vale\n\nA heading, a code block, a comment, and a link URL are not the same thing—and a rule that can't tell them apart is a rule you end up switching off.\n\nTwelve formats, each through a real parser rather than a pattern. Rules can target headings, lists, or table cells—and code spans, URLs, and fenced blocks are skipped before a rule ever runs.\n\nVale lifts comments out of nineteen languages with tree-sitter grammars, so it knows where a comment ends and a marker inside a string literal stays code. The Markdown inside a doc comment is linted as though it were its own file.\n\nPart-of-speech patterns, cross-file relationships, readability formulas, and Tengo scripts sit alongside the token lists—twelve extension points in all. Each is a few lines of YAML in a folder you can hand around as a package.\n\n```\nextends: sequence\nmessage: \"Use 'meetup' instead of 'meet up'.\"\nlevel: error\ntokens:\n  - upos: NOUN\n    pattern: meet\n  - pattern: up\nextends: conditional\nmessage: \"'%s' has no definition.\"\nlevel: error\nscope: text\nfirst: '\\b([A-Z]{3,5})\\b'\nsecond: '(?:\\b[A-Z][a-z]+ )+\\(([A-Z]{3,5})\\)'\nexceptions:\n  - API\nextends: consistency\nmessage: \"Inconsistent spelling of '%s'.\"\nlevel: error\neither:\n  advisor: adviser\nextends: metric\nmessage: \"Grade level (%s) is above 8.\"\nlevel: warning\nformula: |\n  (0.39 * (words / sentences)) +\n  (11.8 * (syllables / words)) - 15.59\ncondition: \"> 8\"\nextends: script\nmessage: \"This paragraph runs long—consider splitting it.\"\nlevel: suggestion\nscope: raw\nscript: |\n  text := import(\"text\")\n  matches := []\n  for line in text.split(scope, \"\\n\") {\n    if len(text.split(line, \" \")) > 40 {\n      i := text.index(scope, line)\n      matches = append(matches, {begin: i, end: i + len(line)})\n    }\n  }\n```\n\nWritten in Go, with no runtime and files linted in parallel. GitLab runs 82 rules across all 2,827 pages of its documentation in under twenty seconds.\n\nNothing leaves your machine. No account, no upload, and no training on your writing.\n\nmacOS, Windows, and Linux. MIT-licensed and maintained in the open.\n\nMicrosoft, Google, Red Hat and thirteen more, each installed with one command.\n\nDistribution\n\nSources: GitHub, Docker Hub, PyPI, conda-forge, Homebrew, Chocolatey, winstall, Snapcraft, and Repology · 59 contributors · updated 2026-07-24\n\nMore than just a command-line interface.\n\nVale runs where you already write—in your editor, in your notes app, and in CI before anything merges.\n\nWherever the prose gets written, with diagnostics as you type.\n\nThe same run, before anything merges.\n\nHosted docs that run Vale for you.", "url": "https://wpnews.pro/news/vale-is-a-linter-for-prose", "canonical_source": "https://vale.sh", "published_at": "2026-08-20 21:58:58+00:00", "updated_at": "2026-08-20 22:15:21.149896+00:00", "lang": "en", "topics": ["developer-tools", "natural-language-processing"], "entities": ["Vale", "Amazon Web Services", "Microsoft", "GitLab", "Grafana", "NVIDIA", "Docker", "Red Hat"], "alternates": {"html": "https://wpnews.pro/news/vale-is-a-linter-for-prose", "markdown": "https://wpnews.pro/news/vale-is-a-linter-for-prose.md", "text": "https://wpnews.pro/news/vale-is-a-linter-for-prose.txt", "jsonld": "https://wpnews.pro/news/vale-is-a-linter-for-prose.jsonld"}}