PageSourceSearch

https://vale.sh/_app/immutable/chunks/plus.BcrEkn_p.js

js vale.sh collected 2026-09-25 18:42:53 UTC 252,315 bytes, 1 lines download raw bytes

1import{c as a,a as r}from"./disclose-version.DE-liGRC.js";import"./legacy.B3rupc9m.js";import{f as l}from"./runtime.vEvs2zhv.js";import{I as c,d}from"./Icon.VaO0A4Wf.js";import{l as m,a as g}from"./props.CdrK0jyI.js";const k=[{name:"AiTells",description:"Flags the tells of AI-written prose: em-dash habits, epigrams, abstract-noun triads, clichés, and 13 more benchmarked rules.",homepage:"https://github.com/krishnasunkam/vale-ai-tells",url:"https://github.com/krishnasunkam/vale-ai-tells/releases/latest/download/AiTells.zip",logo:"https://github.com/krishnasunkam.png",tags:["style"],host:"github",site:"krishnasunkam/vale-ai-tells",repo:"krishnasunkam/vale-ai-tells",stars:1,downloads:895,version:"v1.0.0",released:"2026-08-25",rules:[{name:"AbstractTriad",extends:"existence",level:"suggestion",scope:"text",message:"Abstract-noun triad '%s': name one concrete thing instead of three abstractions.",link:""},{name:"Adverb",extends:"existence",level:"suggestion",scope:"text",message:"Filler adverb '%s': let the verb carry it.",link:""},{name:"Cliche",extends:"existence",level:"suggestion",scope:"text",message:"Cliche '%s': cut it or say the literal thing.",link:""},{name:"CodeToken",extends:"existence",level:"error",scope:"text",message:"Code-like token '%s' in prose: use a human name, not a CONSTANT or formula.",link:""},{name:"CopulaInflation",extends:"existence",level:"suggestion",scope:"text",message:"Copula inflation '%s': use a plain verb.",link:""},{name:"Dash",extends:"existence",level:"error",scope:"text",message:"Em/en dash: recast with a period, comma, colon, or 'to' for a range.",link:""},{name:"EpigramContrast",extends:"existence",level:"suggestion",scope:"text",message:"Epigram contrast '%s': cut the negated half; the positive claim is stronger.",link:""},{name:"FilePath",extends:"existence",level:"error",scope:"text",message:"Raw file path '%s' in prose: name the document by its human title.",link:""},{name:"HiddenVerb",extends:"existence",level:"suggestion",scope:"text",message:"Hidden verb '%s': use the direct verb (analyze, not conduct an analysis).",link:""},{name:"LinkText",extends:"existence",level:"suggestion",scope:"text",message:"Vague link text '%s': describe the destination.",link:""},{name:"NegParallel",extends:"existence",level:"suggestion",scope:"text",message:"'not just X, but Y' escalation: say Y.",link:""},{name:"NeverTag",extends:"existence",level:"error",scope:"text",message:"', never X' antithesis tag: state the behavior once and stop.",link:""},{name:"Passive",extends:"existence",level:"suggestion",scope:"text",message:"Passive voice '%s': name who does the verb.",link:""},{name:"SectionCode",extends:"existence",level:"error",scope:"text",message:"Section/source code '%s' in prose: name it, do not cite a code.",link:""},{name:"StatusBracket",extends:"existence",level:"error",scope:"text",message:"Status bracket '%s': keep grades in a source-notes block, not inline prose.",link:""},{name:"VirtueHonest",extends:"existence",level:"suggestion",scope:"text",message:"Claimed honesty '%s': cut the claim and state the thing plainly.",link:""},{name:"WeakResume",extends:"existence",level:"suggestion",scope:"text",message:"Weak duty-phrasing '%s': lead with a quantified outcome (X by Y measured Z).",link:""}],assets:[],valeVersion:""},{name:"AsciiDoc",description:"A Vale-compatible implementation of select AsciiDoc syntax rules.",homepage:"https://redhat-documentation.github.io/vale-at-red-hat/index.html#asciidoc-style-for-vale",url:"https://github.com/redhat-documentation/vale-at-red-hat/releases/latest/download/AsciiDoc.zip",logo:"https://github.com/redhat-documentation.png",tags:["style"],host:"web",site:"redhat-documentation.github.io",repo:"redhat-documentation/vale-at-red-hat",stars:56,downloads:178681,version:"v678",released:"2026-09-10",rules:[{name:"ClosedAttributeBlocks",extends:"existence",level:"error",scope:"raw",message:"Attribute block is not closed.",link:""},{name:"ClosedIdQuotes",extends:"existence",level:"error",scope:"raw",message:"Quoted ID value is not closed.",link:""},{name:"CodeBlockSubsVerbatim",extends:"script",level:"error",scope:"raw",message:`Code block contains shell redirection '%s' but is missing 'subs=verbatim'. Add 'subs=verbatim' or 'subs="+quotes,verbatim"' to prevent parsing issues.`,link:"https://docs.asciidoctor.org/asciidoc/latest/subs/apply-subs-to-blocks/"},{name:"ImageContainsAltText",extends:"existence",level:"warning",scope:"raw",message:"Image is missing accessibility alt tags.",link:"https://redhat-d
1ocumentation.github.io/supplementary-style-guide/#cloud-services-images"},{name:"LinkContainsLinkText",extends:"existence",level:"warning",scope:"raw",message:"Link is missing descriptive link text for accessibility.",link:"https://redhat-documentation.github.io/supplementary-style-guide/#cloud-services-links-hypertext"},{name:"MatchingDotCallouts",extends:"script",level:"warning",scope:"raw",message:"Corresponding callout not found.",link:"https://docs.asciidoctor.org/asciidoc/latest/verbatim/callouts/"},{name:"MatchingNumberedCallouts",extends:"script",level:"warning",scope:"raw",message:"Corresponding callout not found.",link:"https://docs.asciidoctor.org/asciidoc/latest/verbatim/callouts/"},{name:"SequentialNumberedCallouts",extends:"script",level:"warning",scope:"raw",message:"Numbered callout does not follow sequentially.",link:"https://docs.asciidoctor.org/asciidoc/latest/verbatim/callouts/"},{name:"UnsetAttributes",extends:"script",level:"suggestion",scope:"raw",message:"Set attribute directive does not have a corresponding unset attribute directive.",link:"https://docs.asciidoctor.org/asciidoc/latest/attributes/unset-attributes/#unset-a-document-attribute-in-the-body"},{name:"ValidAdmonitionBlocks",extends:"script",level:"error",scope:"raw",message:"Unterminated admonition block found in file.",link:"https://docs.asciidoctor.org/asciidoc/latest/blocks/admonitions/"},{name:"ValidCodeBlocks",extends:"script",level:"error",scope:"raw",message:"Unterminated listing block found in file.",link:"https://docs.asciidoctor.org/asciidoc/latest/verbatim/listing-blocks/"},{name:"ValidConditions",extends:"script",level:"error",scope:"raw",message:"File contains unbalanced if statements. Review the file to ensure it contains matching opening and closing if statements.",link:"https://docs.asciidoctor.org/asciidoc/latest/directives/ifdef-ifndef/"},{name:"ValidOpenBlocks",extends:"script",level:"error",scope:"raw",message:"Unterminated open block found in file.",link:"https://docs.asciidoctor.org/asciidoc/latest/blocks/open-blocks/"},{name:"ValidTableBlocks",extends:"script",level:"error",scope:"raw",message:"Unterminated table block found in file.",link:"https://docs.asciidoctor.org/asciidoc/latest/tables/build-a-basic-table/"}],assets:[],valeVersion:""},{name:"AsciiDocDITA",description:"A Vale-compatible implementation of select DITA transformation guidelines for transforming existing AsciiDoc files into a DITA-compatible format.",homepage:"https://github.com/jhradilek/asciidoctor-dita-vale",url:"https://github.com/jhradilek/asciidoctor-dita-vale/releases/latest/download/AsciiDocDITA.zip",logo:"https://github.com/redhat-documentation.png",tags:["style"],host:"github",site:"jhradilek/asciidoctor-dita-vale",repo:"jhradilek/asciidoctor-dita-vale",stars:7,downloads:72248,version:"v1.1.14",released:"2026-09-07",rules:[{name:"AdmonitionTitle",extends:"script",level:"warning",scope:"raw",message:"Admonition titles are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"AssemblyContents",extends:"script",level:"warning",scope:"raw",message:"Content other than additional resources cannot follow include directives.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"AttributeDefinition",extends:"existence",level:"suggestion",scope:"raw",message:"%s",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#suggestions"},{name:"AttributeReference",extends:"existence",level:"suggestion",scope:"raw",message:"%s",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#suggestions"},{name:"AuthorLine",extends:"script",level:"warning",scope:"raw",message:"Author lines are not supported for topics.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"BlockTitle",extends:"script",level:"warning",scope:"raw",message:"Block titles can only be assigned to examples, figures, and tables in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"CalloutList",extends:"script",level:"warning",scope:"raw",message:"Callouts are not supported in DITA.",link:""},{name:"ConceptLink",extends:"script",level:"warning",scope:"raw",message:"Move all links and cross references to Additional resources.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"ConditionalCode",extends:"script",level:"suggestion",scope:"raw",message:"%s",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#suggestions"},{name:"ContentType",extends:"occurrence",level:"warning",scope:"raw",message:"The '_mod-docs-content-type' attribute definition is missing.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"DiscreteHeading",extends:"script",level:"warning",scope:"raw",message:"Discrete headings are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"DocumentId",extends:"script",level:"warning",scope:"raw",message:"The document ID assigned to the level 0 (=) heading is missing.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"DocumentTitle",extends:"script",level:"warning",scope:"raw",message:"The document title (=) is missing.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"EntityReference",extends:"script",level:"error",scope:"raw",message:"HTML character entity references are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#errors"},{name:"EquationFormula",extends:"script",level:"warning",scope:"raw",message:"Equations and formulas are not implemented.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"ExampleBlock",extends:"script",level:"error",scope:"raw",message:"Example blocks can not be inside of other blocks in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#errors"},{name:"IgnoredFile",extends:"existence",level:"suggestion",scope:"raw",message:"%s",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#suggestions"},{name:"IncludeDirective",extends:"existence",level:"suggestion",scope:"raw",message:"%s",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#suggestions"},{name:"IntrinsicAttribute",extends:"existence",level:"suggestion",scope:"raw",message:"%s",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#suggestions"},{name:"LineBreak",extends:"script",level:"warning",scope:"raw",message:"Hard line breaks are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"MapAttribute",extends:"script",level:"warning",scope:"raw",message:"The selected attribute definition is not supported in maps.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"MapChunk",extends:"script",level:"warning",scope:"raw",message:'The chunk="to-content" attribute cannot be nested.',link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"MapContents",extends:"script",level:"warning",scope:"raw",message:"Maps only support document titles, IDs, include directives, and attribute definitions.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"MapFilename",extends:"script",level:"warning",scope:"raw",message:"Use only lowercase alphanumeric characters and hyphens (a-z, 0-9, and -) in file names.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"MapLevel",extends:"script",level:"warning",scope:"raw",message:"Invalid leveloffset value.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"MapSize",extends:"script",level:"warning",scope:"raw",message:"The number of include directives exceeds 200.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"MapToc",extends:"script",level:"warning",scope:"raw",message:'The toc="no" attribute is missing.',link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"MismatchedId",extends:"script",level:"error",scope:"raw",message:"The quotes in the ID are mismatched.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#errors"},{name:"NestedSection",extends:"script",level:"error",scope:"raw",message:"Level 2, 3, 4, and 5 sections (=== and deeper) are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#errors"},{name:"PageBreak",extends:"script",level:"warning",scope:"raw",message:"Page breaks are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"RelatedLinks",extends:"script",level:"warning",scope:"raw",message:"Content other than links cannot be mapped to DITA related-links.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"ShortDescription",extends:"script",level:"warning",scope:"raw",message:'Assign [role="_abstract"] to a paragraph to use it as <shortdesc> in DITA.',link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"SidebarBlock",extends:"script",level:"warning",scope:"raw",message:"Sidebars are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"SnippetLink",extends:"script",level:"suggestion",scope:"raw",message:"%s",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#suggestions"},{name:"TableFooter",extends:"script",level:"warning",scope:"raw",message:"Table footers are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"TagDirective",extends:"existence",level:"suggestion",scope:"raw",message:"%s",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#suggestions"},{name:"TaskContents",extends:"script",level:"warning",scope:"raw",message:"The '.Procedure' block title is missing.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"}
1,{name:"TaskDuplicate",extends:"script",level:"warning",scope:"raw",message:"Duplicate titles cannot be mapped to DITA tasks.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"TaskExample",extends:"script",level:"error",scope:"raw",message:"Examples are allowed only once in DITA tasks.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#errors"},{name:"TaskInclude",extends:"script",level:"warning",scope:"raw",message:"The included file may introduce content that cannot be mapped to DITA steps.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"TaskSection",extends:"script",level:"error",scope:"raw",message:"Sections (==) are not allowed in DITA tasks.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#errors"},{name:"TaskStep",extends:"script",level:"warning",scope:"raw",message:"Content other than a single list cannot be mapped to DITA steps.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"TaskTitle",extends:"script",level:"warning",scope:"raw",message:"Unsupported titles cannot be mapped to DITA tasks.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"},{name:"ThematicBreak",extends:"script",level:"warning",scope:"raw",message:"Thematic breaks are not supported in DITA.",link:"https://github.com/jhradilek/asciidoctor-dita-vale/blob/main/README.md#warnings"}],assets:[],valeVersion:""},{name:"Commits",description:"Commit messages: nine conventions and the rule set
1s of commitlint, gitlint, committed, conform, and commitizen, read through a View.",homepage:"https://github.com/jdkato/commits",url:"https://github.com/jdkato/commits/releases/latest/download/Commits.zip",logo:"https://github.com/jdkato.png",tags:["style"],host:"github",site:"jdkato/commits",repo:"jdkato/commits",stars:0,downloads:157,version:"v0.2.0",released:"2026-09-10",rules:[{name:"Blank",extends:"existence",level:"error",scope:"gap",message:"Separate the subject from the body with a blank line.",link:"https://git-scm.com/docs/git-commit#_discussion"},{name:"Body",extends:"script",level:"error",scope:"raw",message:"Commit body is empty.",link:"https://github.com/siderolabs/conform#commit-policy"},{name:"Body",extends:"conditional",level:"warning",scope:"subject",message:"A body is mandatory except for 'docs', and runs at least 20 characters: explain why.",link:"https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md#commit-message-format"},{name:"Body",extends:"occurrence",level:"error",scope:"body",message:"A body is required: say why.",link:"https://commitlint.js.org/reference/rules.html#body-empty"},{name:"BodyCase",extends:"existence",level:"error",scope:"body",message:"body-case is lower-case: '%s'.",link:"https://commitlint.js.org/reference/rules.html#body-case"},{name:"BodyFullStop",extends:"existence",level:"error",scope:"body",message:"body-full-stop: the body does not end with a period.",link:"https://commitlint.js.org/reference/rules.html#body-full-stop"},{name:"BodyIsMissing",extends:"script",level:"error",scope:"raw",message:"B6 body-is-missing.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#b6-body-is-missing"},{name:"BodyLength",extends:"Commits._shared.Wrap",level:"error",scope:"text",message:"A body line runs past 100 characters from '%s'.",link:"https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#body-max-line-length"},{name:"BodyMatchRegex",extends:"occurrence",level:"error",scope:"body",message:"B8 body-match-regex: the body does not match the required pattern.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#b8-body-match-regex"},{name:"BodyMaxLength",extends:"occurrence",level:"error",scope:"body",message:"A body of %d characters, past body-max-length.",link:"https://commitlint.js.org/reference/rules.html#body-max-length"},{name:"BodyMaxLineLength",extends:"script",level:"error",scope:"raw",message:"B1 body-max-line-length: this line runs past 80 from '%s'.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#b1-body-max-line-length"},{name:"BodyMinLength",extends:"script",level:"error",scope:"raw",message:"B5 body-min-length: a body of %d characters.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#b5-body-min-length"},{name:"BodyMinLength",extends:"script",level:"error",scope:"raw",message:"A body of %d characters, under body-min-length.",link:"https://commitlint.js.org/reference/rules.html#body-min-length"},{name:"BodyTrailingWhitespace",extends:"script",level:"error",scope:"raw",message:"B2 body-trailing-whitespace.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#b2-body-trailing-whitespace"},{name:"Breaking",extends:"existence",level:"error",scope:"trailer",message:"'%s' is the one token the spec reads case-sensitively: write 'BREAKING CHANGE:'.",link:"https://www.conventionalcommits.org/en/v1.0.0/#specification"},{name:"BreakingBang",extends:"conditional",level:"error",scope:"trailer",message:"A 'BREAKING CHANGE:' footer goes with a '!' in the header.",link:"https://commitlint.js.org/reference/rules.html#breaking-change-exclamation-mark"},{name:"Capital",extends:"existence",level:"warning",scope:"subject",message:"The summary completes 'This change modifies Go to ...', so it does not start with a capital: '%s'.",link:"https://go.dev/doc/contribute#commit_messages"},{name:"Capitalize",extends:"existence",level:"error",scope:"subject",message:"Capitalize the subject line: '%s'.",link:"https://cbea.ms/git-commit/#capitalize"},{name:"Capitalized",extends:"Commits._shared.Capitalized",level:"error",scope:"text",message:"The summary is not capitalized: '%s'.",link:"https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md#summary"},{name:"Case",extends:"existence",level:"error",scope:"subject",message:"A label is in capitals: '%s'.",link:"https://github.com/ahmadawais/Emoji-Log#getting-started"},{name:"Closes",extends:"existence",level:"error",scope:"trailer",message:"A Closes: tag takes a URL to the public report, not '%s'.",link:"https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes"},{name:"Commit",extends:"existence",level:"warning",scope:"body",message:`Refer to a commit by twelve or more characters of its SHA-1 and its summary: 'commit e21d2170f366 ("video: remove ...")'.`,link:"https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes"},{name:"DCO",extends:"occurrence",level:"error",scope:"raw",message:"Commit does not have a valid DCO: 'Signed-off
1-by: Name <email>'.",link:"https://github.com/siderolabs/conform#commit-policy"},{name:"Description",extends:"existence",level:"error",scope:"subject",message:"A description follows the type: what the change does.",link:"https://www.conventionalcommits.org/en/v1.0.0/#specification"},{name:"DescriptionCapitalized",extends:"existence",level:"error",scope:"subject",message:"subject_capitalized: '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"DescriptionLength",extends:"Commitlint.SubjectLength",level:"error",scope:"text",message:"Conventional commit description is %d characters, over descriptionLength.",link:"https://github.com/siderolabs/conform#commit-policy"},{name:"DisallowCleanupCommits",extends:"existence",level:"error",scope:"subject",message:"CC2 contrib-disallow-cleanup-commits: '%s'.",link:"https://jorisroovers.com/gitlint/latest/rules/contrib_rules/#cc2-contrib-disallow-cleanup-commits"},{name:"Exclamation",extends:"existence",level:"error",scope:"subject",message:"No '!' before the colon; mark a breaking change with a 'BREAKING CHANGE:' footer.",link:"https://commitlint.js.org/reference/rules.html#subject-exclamation-mark"},{name:"Fixes",extends:"existence",level:"error",scope:"trailer",message:`A Fixes: tag carries at least 12 characters of the SHA-1 and the summary in parentheses: 'Fixes: 54a4f0239f2e ("KVM: MMU: ...")'.`,link:"https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes"},{name:"Footer",extends:"existence",level:"warning",scope:"body",message:"'%s' is a footer. Put a blank line between the body and the footers.",link:"https://www.conventionalcommits.org/en/v1.0.0/#specification"},{name:"FooterLength",extends:"existence",level:"error",scope:"trailer",message:"A footer line runs past 100 characters from '%s'.",link:"https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#footer-max-line-length"},{name:"FooterMaxLength",extends:"occurrence",level:"error",scope:"trailer",message:"Footers of %d characters, past footer-max-length.",link:"https://commitlint.js.org/reference/rules.html#footer-max-length"},{name:"FooterRequired",extends:"occurrence",level:"error",scope:"trailer",message:"A footer is required.",link:"https://commitlint.js.org/reference/rules.html#footer-empty"},{name:"FullStop",extends:"Commits._shared.Period",level:"error",scope:"text",message:"A subject does not end with a period.",link:"https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#subject-full-stop"},{name:"HardLineLength",extends:"script",level:"error",scope:"raw",message:"hard_line_length: this line runs past 100 from '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"HardTab",extends:"script",level:"error",scope:"raw",message:"T4/B3 hard-tab: a tab character.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#t4-title-hard-tab"},{name:"HeaderCase",extends:"existence",level:"error",scope:"subject",message:"Commit header case is not lower: '%s'.",link:"https://github.com/siderolabs/conform#commit-policy"},{name:"HeaderCase",extends:"existence",level:"error",scope:"subject",message:"header-case is lower-case: '%s'.",link:"https://commitlint.js.org/reference/rules.html#header-case"},{name:"HeaderLength",extends:"Commits._shared.SubjectLength",level:"error",scope:"text",message:"Header is %d characters.",link:"https://github.com/siderolabs/conform#commit-policy"},{name:"HeaderLength",extends:"Commits._shared.SubjectLength",level:"error",scope:"text",message:"A header of %d characters, past header-max-length.",link:"https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#header-max-length"},{name:"HeaderMinLength",extends:"occurrence",level:"error",scope:"subject",message:"A header of %d characters, under header-min-length.",link:"https://commitlint.js.org/reference/rules.html#header-min-length"},{name:"Imperative",extends:"existence",level:"warning",scope:"subject",message:"Write the subject as a command: 'Add', not '%s'.",link:"https://git-scm.com/docs/SubmittingPatches#describe-changes"},{name:"Intention",extends:"existence",level:"error",scope:"subject",message:"Begin with a gitmoji, as the emoji or its ':shortcode:', then a space. '%s' is not one.",link:"https://gitmoji.dev/specification"},{name:"InvalidLastCharacter",extends:"Commits._shared.Period",level:"error",scope:"text",message:"Commit header ends in an invali
1d character.",link:"https://github.com/siderolabs/conform#commit-policy"},{name:"Issue",extends:"existence",level:"warning",scope:"body, trailer",message:"Reference an issue as 'Fixes #12345' or 'Updates #12345', not '%s'.",link:"https://go.dev/doc/contribute#commit_messages"},{name:"Jira",extends:"Jira.Key",level:"error",scope:"text",message:"Commit header does not contain a Jira issue key from the configured projects.",link:"https://github.com/siderolabs/conform#commit-policy"},{name:"Key",extends:"occurrence",level:"error",scope:"subject",message:"Include the issue key in the subject, in capitals: 'PROJ-123'.",link:"https://support.atlassian.com/jira-software-cloud/docs/reference-issues-in-your-development-work/"},{name:"Length",extends:"Commits._shared.SubjectLength",level:"warning",scope:"text",message:"A summary of %d characters; the kernel asks for no more than 70-75.",link:"https://www.kernel.org/doc/html/latest/process/submitting-patches.html#the-canonical-patch-format"},{name:"Limit",extends:"Commits._shared.SubjectLength",level:"warning",scope:"text",message:"A subject of %d characters. Shoot for 50; 72 is the hard limit.",link:"https://cbea.ms/git-commit/#limit-50"},{name:"LineLength",extends:"script",level:"error",scope:"raw",message:"line_length: this line runs past 72 from '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"Lowercase",extends:"Commits._shared.TypeCase",level:"error",scope:"text",message:"A type is lower-case: '%s'.",link:"https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md#type"},{name:"MergeCommit",extends:"existence",level:"error",scope:"subject",message:"merge_commit: '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"Message",extends:"existence",level:"error",scope:"subject",message:"A message follows the intention: what the change does.",link:"https://gitmoji.dev/specification"},{name:"NoFixup",extends:"existence",level:"error",scope:"subject",message:"no_fixup: '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"NoWip",extends:"existence",level:"error",scope:"subject",message:"no_wip: '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"Package",extends:"existence",level:"error",scope:"subject",message:"Prefix the first line with the affected package: 'net/http: %s ...'.",link:"https://go.dev/doc/contribute#commit_messages"},{name:"Period",extends:"Commits._shared.Period",level:"error",scope:"text",message:"No period at the end of the summary.",link:"https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md#summary"},{name:"Period",extends:"Commits._shared.Period",level:"error",scope:"text",message:"Do not end the subject line with a period.",link:"https://cbea.ms/git-commit/#end"},{name:"Placeholder",extends:"existence",level:"warning",scope:"subject",message:"'%s' says nothing about the change. Say what it does.",link:"https://git-scm.com/docs/SubmittingPatches#describe-changes"},{name:"References",extends:"script",level:"error",scope:"raw",message:"Reference an issue somewhere in the message: '#123'.",link:"https://commitlint.js.org/reference/rules.html#references-empty"},{name:"Revert",extends:"conditional",level:"error",scope:"subject",message:"A revert names what it reverts in the body: 'This reverts commit <SHA>'.",link:"https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md#revert-commits"},{name:"Scope",extends:"existence",level:"error",scope:"subject",message:"A scope names a section of the codebase; '()' names nothing. Drop it or fill it.",link:"https://www.conventionalcommits.org/en/v1.0.0/#specification"},{name:"Scope",extends:"existence",level:"error",scope:"subject",message:"'%s' is not one of the scopes: api, cli, docs.",link:"https://commitlint.js.org/reference/rules.html#scope-enum"},{name:"ScopeCase",extends:"existence",level:"error",scope:"subject",message:"A scope is lower-case: '%s'.",link:"https://commitlint.js.org/reference/rules.html#scope-case"},{name:"ScopeDelimiter",extends:"existence",level:"error",scope:"subject",message:"A scope uses one delimiter: '%s' mixes them.",link:"https://commitlint.js.org/reference/rules.html#scope-delimiter-style"},{name:"ScopeLength",extends:"occurrence",level:"error",scope:"subject",message:"A scope of %d characters, outside scope-min-length and scope-max-length.",link:"https://commitlint.js.org/reference/rules.html#scope-max-length"},{name:"ScopeRequired",extends:"existence",level:"error",scope:"subject",message:"A scope is required: '%s(scope):'.",link:"https://commitlint.js.org/reference/rules.html#scope-empty"},{name:"Sentence",extends:"Commits._shared.Period",level:"warning",scope:"text",message:"The summary is not a complete sentence: no period at the end.",link:"https://go.dev/doc/contribute#commit_messages"},{name:"SignedOff",extends:"occurrence",level:"error",scope:"trailer",message:"Sign the patch off: git commit -s.",link:"https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin"},{name:"Space",extends:"existence",level:"error",scope:"subject",message:"A space follows the colon.",link:"https://www.conventionalcommits.org/en/v1.0.0/#specification"},{name:"SubjectCapitalized",extends:"existence",level:"error",scope:"subject",message:"subject_capitalized: '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"SubjectCase",extends:"Commits._shared.Capitalized",level:"error",scope:"text",message:"A subject does not open with a capital: '%s'.",link:"https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#subject-case"},{name:"SubjectLength",extends:"script",level:"error",scope:"raw",message:"subject_length: the subject runs past 50 from '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"SubjectLength",extends:"occurrence",level:"error",scope:"subject",message:"A subject of %d characters, outside subject-min-length and subject-max-length.",link:"https://commitlint.js.org/reference/rules.html#subject-max-length"},{name:"SubjectNotPunctuated",extends:"existence",level:"error",scope:"subject",message:"subject_not_punctuated: '%s'.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"Subsystem",extends:"existence",level:"error",scope:"subject",message:"Prefix the summary with the subsystem: 'x86/mm: %s ...'.",link:"https://www.kernel.org/doc/html/latest/process/submitting-patches.html#the-canonical-patch-format"},{name:"ThisPatch",extends:"existence",level:"warning",scope:"subject, body",message:"Give the order, not the report: 'make xyzzy do frotz', not '%s makes'.",link:"https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes"},{name:"TitleMatchRegex",extends:"existence",level:"error",scope:"subject",message:"T7 title-match-regex: the title does not match the required pattern.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#t7-title-match-regex"},{name:"TitleMaxLength",extends:"Commits._shared.SubjectLength",level:"error",scope:"text",message:"T1 title-max-length: a title of %d characters.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#t1-title-max-length"},{name:"TitleMinLength",extends:"occurrence",level:"error",scope:"subject",message:"T8 title-min-length: a title of %d characters.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#t8-title-min-length"},{name:"TitleMustNotContainWord",extends:"existence",level:"error",scope:"subject",message:"T5 title-must-not-contain-word: '%s'.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#t5-title-must-not-contain-word"},{name:"TitleTrailingPunctuation",extends:"existence",level:"error",scope:"subject",message:"T3 title-trailing-punctuation: '%s'.",link:"https://jorisroovers.com/gitlint/latest/rules/builtin_rules/#t3-title-trailing-punctuation"},{name:"Token",extends:"existence",level:"error",scope:"body, trailer",message:"A footer token uses '-' in place of whitespace: 'Signed-off
1-by', not '%s'.",link:"https://www.conventionalcommits.org/en/v1.0.0/#specification"},{name:"Trailer",extends:"occurrence",level:"error",scope:"trailer",message:"No trailer matched the required token, by default 'Signed-off-by: '.",link:"https://commitlint.js.org/reference/rules.html#trailer-exists"},{name:"Truncated",extends:"Commits._shared.SubjectLength",level:"error",scope:"text",message:"A subject of %d characters; GitHub truncates it past 72.",link:"https://cbea.ms/git-commit/#limit-50"},{name:"Type",extends:"existence",level:"error",scope:"subject",message:"Begin with one of the seven labels: 📦 NEW:, 👌 IMPROVE:, 🐛 FIX:, 📖 DOC:, 🚀 RELEASE:, 🤖 TEST:, ‼️ BREAKING:. '%s' is not one.",link:"https://github.com/ahmadawais/Emoji-Log#getting-started"},{name:"Type",extends:"Commitlint.Type",level:"error",scope:"text",message:"allowed_types: '%s' is not one of fix, feat, chore, docs, style, refactor, perf, test.",link:"https://github.com/crate-ci/committed/blob/master/docs/reference.md"},{name:"Type",extends:"existence",level:"error",scope:"subject",message:"'%s' is not an Angular type: build, ci, docs, feat, fix, perf, refactor, test, or revert.",link:"https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md#type"},{name:"Type",extends:"existence",level:"error",scope:"subject",message:"Start with a type, then a colon: 'fix: ...', 'feat(scope)!: ...'. '%s' is not one.",link:"https://www.conventionalcommits.org/en/v1.0.0/#specification"},{name:"Type",extends:"Commitlint.Type",level:"error",scope:"text",message:"'%s' is not a commitizen type: build, bump, chore, ci, docs, feat, fix, perf, refactor, revert, style, test.",link:"https://commitizen-tools.github.io/commitizen/commands/check/"},{name:"Type",extends:"existence",level:"error",scope:"subject",message:"'%s' is not a config-conventional type: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test.",link:"https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#type-enum"},{name:"TypeCase",extends:"Commits._shared.TypeCase",level:"error",scope:"text",message:"A type is lower-case: '%s'.",link:"https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#type-case"},{name:"TypeLength",extends:"occurrence",level:"error",scope:"subject",message:"A type of %d characters, outside type-min-length and type-max-length.",link:"https://commitlint.js.org/reference/rules.html#type-max-length"},{name:"Whitespace",extends:"existence",level:"error",scope:"subject",message:"Whitespace at the edge of the subject.",link:"https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---cleanupltmodegt"},{name:"Wrap",extends:"Commits._shared.Wrap",level:"warning",scope:"text",message:"Wrap the description at around 72 columns; this line runs on from '%s'.",link:"https://go.dev/doc/contribute#commit_messages"},{name:"Wrap",extends:"Commits._shared.Wrap",level:"warning",scope:"text",message:"Wrap the explanation at 75 columns; this line runs on from '%s'.",link:"https://www.kernel.org/doc/html/latest/process/submitting-patches.html#the-canonical-patch-format"},{name:"Wrap",extends:"Commits._shared.Wrap",level:"warning",scope:"text",message:"Wrap the body at 72 characters; this line runs on from '%s'.",link:"https://cbea.ms/git-commit/#wrap-72"}],assets:[{kind:"template",name:"commitlint.tmpl"},{kind:"template",name:"committed.tmpl"},{kind:"template",name:"conform.tmpl"},{kind:"template",name:"github.tmpl"},{kind:"template",name:"gitlint.tmpl"},{kind:"template",name:"hook.tmpl"},{kind:"view",name:"Commit",engine:"textfsm",scopes:["subject","gap","body","trailer"]}],valeVersion:">=3.21.0"},{name:"Elastic",description:"Elastic Docs' style guide rules for the Vale linter.",homepage:"https://github.com/elastic/vale-rules",url:"https://github.com/elastic/vale-rules/releases/latest/download/elastic-vale.zip",logo:"https://github.com/elastic.png",tags:["style"],host:"github",site:"elastic/vale-rules",repo:"elastic/vale-rules",stars:11,downloads:40888,version:"v1.7.1",released:"2026-08-18",rules:[{name:"Acce
1ssibility",extends:"existence",level:"warning",scope:"text",message:"Don't use language (such as '%s') that defines people by their disability.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/accessibility#avoid-violent-offensive-ableist-terminology"},{name:"Articles",extends:"substitution",level:"warning",scope:"text",message:"Use '%s' instead of '%s'. The article depends on pronunciation, not spelling.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#using-the-right-article"},{name:"BritishSpellings",extends:"substitution",level:"warning",scope:"text",message:"Use American English spelling '%s' instead of British English '%s'.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#american-english"},{name:"Clone",extends:"existence",level:"suggestion",scope:"text",message:"Use `%s` only when referring to cloning a GitHub repository or creating a copy that is linked to the original. Often confused with 'copy' and 'duplicate'.",link:"https://www.elastic.co/docs/contribute-d
1ocs/style-guide/word-choice"},{name:"ConflictMarkers",extends:"existence",level:"error",scope:"raw",message:"Do not commit Git merge conflict markers in source code.",link:""},{name:"DeviceAgnosticism",extends:"substitution",level:"suggestion",scope:"text",message:"Use device-agnostic language when possible. Use '%s' instead of '%s'.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/accessibility#accessibility-guidelines"},{name:"Dimensions",extends:"existence",level:"suggestion",scope:"text",message:"Avoid using dimensions in the format 'M X N'. Use 'MxN' instead.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/formatting#dimensions"},{name:"DirectionalLanguage",extends:"substitution",level:"warning",scope:"text",message:"Don't use directional language. Use '%s' instead of '%s'.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/accessibility"},{name:"DontUse",extends:"existence",level:"warning",scope:"text",message:"Don't use '%s'. Choose a more precise or reader-focused term.",link:"https://www.elastic.co/docs/contribute-d
1ocs/style-guide/word-choice"},{name:"Ellipses",extends:"existence",level:"suggestion",scope:"text",message:"Use ellipses sparingly. Remove the ellipsis unless it appears in UI text.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/voice-tone#write-like-a-minimalist"},{name:"EndPuntuaction",extends:"existence",level:"warning",scope:"heading",message:"Don't end headings with punctuation.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#capitalization"},{name:"Exclamation",extends:"existence",level:"suggestion",scope:"text",message:"Use exclamation points sparingly. Remove the exclamation point unless it appears in UI text.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/voice-tone#tone"},{name:"FirstPerson",extends:"existence",level:"suggestion",scope:"text",message:"Use first-person pronouns sparingly. Rephrase '%s' if the sentence can focus on the user or product instead.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#use-singular-first-person-pronouns-sparingly-i-me-my-mine"},{name:"Gender",extends:"existence",level:"warning",scope:"text",message:"Don't use '%s'.",link:"https://www.elastic.co/docs/contribute-d
1ocs/style-guide/accessibility#use-gender-neutral-language"},{name:"GenderBias",extends:"substitution",level:"suggestion",scope:"text",message:"Consider using '%s' instead of '%s'.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/accessibility#use-gender-neutral-language"},{name:"HeadingColons",extends:"existence",level:"suggestion",scope:"heading",message:"Capitalize '%s'.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#colons"},{name:"KibanaChromeTerms",extends:"substitution",level:"suggestion",scope:"text",message:"Consider using '%s' instead of '%s' when referring to parts of the Kibana chrome.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/ui-writing#naming-kibana-ui-elements"},{name:"Latinisms",extends:"substitution",level:"warning",scope:"text",message:"Latin terms and abbreviations are a common source of confusion. Use '%s' instead of '%s'.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#latin-abbreviations"},{name:"MappedPages",extends:"existence",level:"warning",scope:"raw",message:"Avoid editing mapped_pages unless you are preserving an existing URL mapping. Talk with your local technical writer before changing this key.",link:""},{name:"MeaningfulCTAs",extends:"substitution",level:"warning",scope:"text",message:"Use meaningful link text. Use '%s' instead of '%s'.",link:"https://www.elastic.co/docs/contribute-d
1ocs/style-guide/accessibility#accessibility-guidelines"},{name:"MenuArrows",extends:"existence",level:"warning",scope:"text",message:"Use '→' to separate menu items, not '>' or '=>'. Example: Select Manage index → Add lifecycle policy.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/ui-writing"},{name:"MenuArrowsBold",extends:"existence",level:"warning",scope:"raw",message:"Use '→' to separate menu items, not '>' or '=>'. Example: Select Manage index → Add lifecycle policy.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/ui-writing"},{name:"Negations",extends:"existence",level:"suggestion",scope:"text",message:"Consider rephrasing to avoid negative constructions like '%s'. Try stating what something IS rather than what it is NOT.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/accessibility#write-for-an-international-audience"},{name:"OxfordComma",extends:"existence",level:"suggestion",scope:"sentence",message:"Use the Oxford comma in '%s'.",link:"https://www.elastic.co/docs/contribute-d
1ocs/style-guide/grammar-spelling#commas"},{name:"PluralAbbreviations",extends:"sequence",level:"warning",scope:"text",message:"Don't use apostrophes when making abbreviations plural. Use '%s' instead of '%s'.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#making-abbreviations-plural"},{name:"QuotesPunctuation",extends:"existence",level:"warning",scope:"text",message:"Place punctuation inside closing quotation marks.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#punctuation-with-quotation-marks"},{name:"Repetition",extends:"repetition",level:"suggestion",scope:"text",message:'"%s" is repeated.',link:"https://www.elastic.co/docs/contribute-docs/style-guide/voice-tone#write-like-a-minimalist"},{name:"Semicolons",extends:"existence",level:"suggestion",scope:"sentence",message:"Use semicolons sparingly. Consider splitting the sentence or using a comma or conjunction.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/grammar-spelling#semicolons"},{name:"Spelling",extends:"spelling",level:"warning",scope:"text",message:"'%s' is a possible misspelling.",link:""},{name:"Versions",extends:"substitution",level:"suggestion",scope:"text",message:"Use '%s' instead of '%s' when referring to versions.",link:""},{name:"WordChoice",extends:"substitution",level:"suggestion",scope:"text",message:"Consider using '%s' instead of '%s', unless the term is in the UI.",link:"https://www.elastic.co/docs/contribute-d
1ocs/style-guide/word-choice"},{name:"Wordiness",extends:"substitution",level:"suggestion",scope:"~text.frontmatter.navigation_title",message:"Consider using '%s' instead of '%s'.",link:"https://www.elastic.co/docs/contribute-docs/style-guide/voice-tone#write-like-a-minimalist"}],assets:[{kind:"vocabulary",name:"ElasticTerms",accept:165,reject:0},{kind:"vocabulary",name:"GeographicNames",accept:34,reject:0},{kind:"vocabulary",name:"TechJargon",accept:1361,reject:0},{kind:"vocabulary",name:"ThirdPartyProducts",accept:415,reject:0}],valeVersion:""},{name:"Fiction",description:"Fiction: filter words, told emotions, stock phrases, and dialogue punctuation, with the rules of Elmore Leonard, Chuck Palahniuk, and Strunk's 1918 Elements of Style.",homepage:"https://github.com/jdkato/fiction",url:"https://github.com/jdkato/fiction/releases/latest/download/Fiction.zip",logo:"https://github.com/jdkato.png",tags:["style"],host:"github",site:"jdkato/fiction",repo:"jdkato/fiction",stars:0,downloads:4,version:"v0.1.0",released:"2026-09-18",rules:[{name:"ActiveVoice",extends:"existence",level:"suggestion",scope:"text",message:"Substitute a verb in the active voice for '%s' (Rule 10).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"Adverb",extends:"existence",level:"warning",scope:"text",message:"Drop the adverb on the tag: '%s'.",link:"https://www.theguardian.com/books/2010/feb/20/ten-rules-for-writing-fiction-part-one"},{name:"BeganTo",extends:"existence",level:"suggestion",scope:"text",message:"Cut '%s' and let the action happen.",link:""},{name:"Cliches",extends:"existence",level:"suggestion",scope:"text",message:"Stock phrase: '%s'.",link:""},{name:"Dialect",extends:"occurrence",level:"suggestion",scope:"summary",message:"%d phonetic spellings. Use dialect sparingly.",link:"https://www.theguardian.com/books/2010/feb/20/ten-rules-for-writing-fiction-part-one"},{name:"DialoguePunctuation",extends:"existence",level:"warning",scope:"text",message:"Move the %s inside the closing quotation mark.",link:""},{name:"Exclamations",extends:"occurrence",level:"warning",scope:"summary",message:"%d exclamation points. Leonard allows two or three per 100,000 words.",link:"https://www.theguardian.com/books/2010/feb/20/ten-rules-for-writing-fiction-part-one"},{name:"FactThat",extends:"existence",level:"suggestion",scope:"text",message:"Revise '%s' out of the sentence (Rule 13).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"FilterWords",extends:"existence",level:"suggestion",scope:"text",message:"Filter word '%s': cut it and show the thing itself.",link:""},{name:"Hackneyed",extends:"substitution",level:"suggestion",scope:"text",message:"%s: '%s' (Chapter V).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"However",extends:"existence",level:"suggestion",scope:"text",message:"'However' meaning nevertheless should not come first in its sentence (Chapter V).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"Intensifiers",extends:"existence",level:"suggestion",scope:"text",message:"Intensifier '%s': find the stronger word instead.",link:""},{name:"LikeAs",extends:"existence",level:"suggestion",scope:"text",message:"Use 'as' before a clause, not '%s' (Chapter V).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"Misused",extends:"substitution",level:"suggestion",scope:"text",message:"Use '%s' for '%s' (Chapter V).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"Needless",extends:"substitution",level:"suggestion",scope:"text",message:"Omit needless words: '%s' for '%s' (Rule 13).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"Positive",extends:"substitution",level:"suggestion",scope:"text",message:"Put it in positive form: '%s' for '%s' (Rule 11).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"Prologue",extends:"existence",level:"suggestion",scope:"heading",message:"Avoid a prologue: it's backstory, and you can drop it in anywhere.",link:"https://www.theguardian.com/books/2010/feb/20/ten-rules-for-writing-fiction-part-one"},{name:"Said",extends:"existence",level:"warning",scope:"text",message:"Use 'said' to carry dialogue, not '%s'.",link:"https://www.theguardian.com/books/2010/feb/20/ten-rules-for-writing-fiction-part-one"},{name:"SplitInfinitive",extends:"existence",level:"suggestion",scope:"text",message:"Split infinitive: '%s' (Chapter 
1V).",link:"https://www.gutenberg.org/ebooks/37134"},{name:"Suddenly",extends:"existence",level:"error",scope:"text",message:"Never use '%s'.",link:"https://www.theguardian.com/books/2010/feb/20/ten-rules-for-writing-fiction-part-one"},{name:"TagCase",extends:"existence",level:"warning",scope:"text",message:"Lowercase the tag: '%s'.",link:""},{name:"TellingEmotion",extends:"existence",level:"suggestion",scope:"text",message:"Telling: '%s'. Show it in what the character does.",link:""},{name:"ThoughtVerbs",extends:"existence",level:"suggestion",scope:"text",message:"Unpack the thought verb '%s': show what the character does instead.",link:"https://litreactor.com/essays/chuck-palahniuk/nuts-and-bolts-“thought”-verbs"},{name:"Weather",extends:"existence",level:"warning",scope:"text & doc(h1 + p)",message:"Never open a book with weather: '%s'.",link:"https://www.theguardian.com/books/2010/feb/20/ten-rules-for-writing-fiction-part-one"}],assets:[],valeVersion:">=3.22.0"},{name:"Google",description:"A Vale-compatible implementation of the Google Developer Documentation Style Guide.",homepage:"https://github.com/vale-cli/Google",url:"https://github.com/vale-cli/Google/releases/latest/download/Google.zip",logo:"https://github.com/google.png",tags:["style"],host:"github",site:"vale-cli/Google",repo:"vale-cli/Google",stars:90,downloads:1605913,version:"v0.7.1",released:"2026-08-04",rules:[{name:"Acronyms",extends:"conditional",level:"suggestion",scope:"text",message:"Spell out '%s', if it's unfamiliar to the audience.",link:"https://developers.google.com/style/abbreviations"},{name:"AMPM",extends:"existence",level:"error",scope:"text",message:"Use 'AM' or 'PM' (preceded by a space).",link:"https://developers.google.com/style/word-list"},{name:"Anthropomorphism",extends:"existence",level:"suggestion",scope:"text",message:"Don't attribute human qualities to software or hardware ('%s').",link:"https://developers.google.com/style/anthropomorphism"},{name:"Colons",extends:"existence",level:"warning",scope:"sentence",message:"'%s' should be in lowercase.",link:"https://developers.google.com/style/colons"},{name:"Contractions",extends:"substitution",level:"suggestion",scope:"text",message:"Use '%s' instead of '%s'.",link:"https://developers.google.com/style/contractions"},{name:"DateFormat",extends:"existence",level:"error",scope:"text",message:"Use 'July 31, 2016' format, not '%s'.",link:"https://developers.google.com/style/dates-times"},{name:"Ellipses",extends:"existence",level:"warning",scope:"text",message:"In general, don't use an ellipsis.",link:"https://developers.google.com/style/ellipses"},{name:"EmDash",extends:"existence",level:"error",scope:"text",message:"Don't put a space before or after a dash.",link:"https://developers.google.com/style/dashes"},{name:"ExcessiveClaims",extends:"existence",level:"suggestion",scope:"text",message:"Avoid the unverifiable claim '%s'.",link:"https://developers.google.com/style/excessive-claims"},{name:"Exclamation",extends:"existence",level:"error",scope:"text",message:"Don't use exclamation points in text.",link:"https://developers.google.com/style/exclamation-points"},{name:"FirstPerson",extends:"existence",level:"warning",scope:"text",message:"Avoid first-person pronouns such as '%s'.",link:"https://developers.google.com/style/pronouns#personal-pronouns"},{name:"Gender",extends:"existence",level:"error",scope:"text",message:"Don't use '%s' as a gender-neutral pronoun.",link:"https://developers.google.com/style/pronouns#gender-neutral-pronouns"},{name:"GenderBias",extends:"substitution",level:"error",scope:"text",message:"Consider using '%s' instead of '%s'.",link:"https://developers.google.com/style/inclusive-documentation"},{name:"HeadingPunctuation",extends:"existence",level:"warning",scope:"heading",message:"Don't put a period at the end of a heading.",link:"https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings"},{name:"Headings",extends:"capitalization",level:"warning",scope:"heading",message:"'%s' should use sentence-style capitalization.",link:"https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings"},{name:"Jargon",extends:"existence",level:"suggestion",scope:"text",message:"Avoid the jargon '%s'.",link:"https://developers.google.com/style/jargon"},{name:"Latin",extends:"substitution",level:"error",scope:"text",message:"Use '%s' instead of '%s'.",link:"https://developers.google.com/style/abbreviations"},{name:"LyHyphens",extends:"existence",level:"error",scope:"text",message:"'%s' doesn't need a hyphen.",link:"https://developers.google.com/style/hyphens"},{name:"OptionalPlurals",extends:"existence",level:"error",scope:"text",message:"Don't use plurals in parentheses such as in '%s'.",link:"https://developers.google.com/style/plurals-parentheses"},{name:"Ordinal",extends:"existence",level:"error",scope:"text",message:"Spell out all ordinal numbers ('%s') in text.",link:"https://developers.google.com/style/numbers"},{name:"OxfordComma",extends:"existence",level:"warning",scope:"sentence",message:"Use the Oxford comma in '%s'.",link:"https://developers.google.com/style/commas"},{name:"Parens",extends:"existence",level:"suggestion",scope:"text",message:"Use parentheses judiciously.",link:"https://developers.google.com/style/parentheses"},{name:"Passive",extends:"existence",level:"suggestion",scope:"text",message:"In general, use active voice instead of passive voice ('%s').",link:"https://developers.google.com/style/voice"},{name:"Periods",extends:"existence",level:"error",scope:"text",message:"Don't use periods with acronyms or initialisms such as '%s'.",link:"https://developers.google.com/style/abbreviations"},{name:"Quotes",extends:"existence",level:"error",scope:"text",message:"Commas and periods go inside quotation marks.",link:"https://developers.google.com/style/quotation-marks"},{name:"Ranges",extends:"existence",level:"warning",scope:"text",message:"Don't add words such as 'from' or 'between' to describe a range of numbers.",link:"https://developers.google.com/style/hyphens"},{name:"Semicolons",extends:"existence",level:"suggestion",scope:"sentence",message:"Use semicolons judiciously.",link:"https://developers.google.com/style/semicolons"},{name:"Slang",extends:"existence",level:"error",scope:"text",message:"Don't use internet slang abbreviations such as '%s'.",link:"https://developers.google.com/style/abbreviations"},{name:"Spacing",extends:"existence",level:"error",scope:"text",message:"'%s' should have one space.",link:"https://developers.google.com/style/sentence-spacing"},{name:"Spelling",extends:"existence",level:"warning",scope:"text",message:"In general, use American spelling instead of '%s'.",link:"https://developers.google.com/style/spelling"},{name:"Timeless",extends:"existence",level:"suggestion",scope:"text",message:"Avoid time-based words like '%s' in product documentation.",link:"https://developers.google.com/style/timeless-documentation"},{name:"Units",extends:"existence",level:"error",scope:"text",message:"Put a nonbreaking space between the number and the unit in '%s'.",link:"https://developers.google.com/style/units-of-measure"},{name:"We",extends:"existence",level:"warning",scope:"text",message:"Try to avoid using first-person plural like '%s'.",link:"https://developers.google.com/style/pronouns#personal-pronouns"},{name:"Will",extends:"existence",level:"warning",scope:"text",message:"Avoid using '%s'.",link:"https://developers.google.com/style/tense"},{name:"WordList",extends:"substitution",level:"warning",scope:"text",message:"Use '%s' instead of '%s'.",link:"https://developers.google.com/style/word-list"},{name:"WordListCase",extends:"substitution",level:"warning",scope:"text",message:"Use '%s' instead of '%s'.",link:"https://developers.google.com/style/word-list"}],assets:[],valeVersion:">=1.0.0"},{name:"Harper",description:"A Vale-compatible implementation of the Harper grammar checker.",homepage:"https://github.com/vale-cli/Harper",url:"https://github.com/vale-cli/Harper/releases/latest/download/Harper.zip",logo:"https://writewithharper.com/apple-touch-icon.png",tags:["style","grammar"],host:"github",site:"vale-cli/Harper",repo:"vale-cli/Harper",stars:1,downloads:1423,version:"v0.1.0",released:"2026-08-05",rules:[{name:"ACoupleMore",extends:"existence",level:"suggestion",scope:"text",message:"The correct wording is `a couple more`, without the `of`.",link:""},{name:"Addicting",extends:"existence",level:"warning",scope:"text",message:"When used as an adjective, `addictive` is the traditional and more f form.",link:""},{name:"AdjectiveDoubleDegree",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the adjective on its own?",link:""},{name:"AdNauseam",extends:"existence",level:"error",scope:"text",message:"This phrase comes from Latin, where `ad` means `to`.",link:""},{name:"AfterAll",extends:"existence",level:"error",scope:"text",message:"Did you mean `after all`?",link:""},{name:"AfterAWhile",extends:"existence",level:"warning",scope:"text",message:"When describing a timeframe, use `a while`.",link:""},{name:"AfterLater",extends:"existence",level:"warning",scope:"text",message:"`after` and `later` are redundant together.",link:""},{name:"AheadAnd",extends:"existence",level:"suggestion",scope:"text",message:"Did you make a typo? Shouldn't it be `and`?",link:""},{name:"Albeit",extends:"existence",level:"error",scope:"text",message:"This should be written as a single word with a single `l`: `albeit`.",link:""},{name:"ALittleOfPractice",extends:"existence",level:"warning",scope:"text",message:"Have you perhaps confused `a little practice` or `a bit of practice`?",link:""},{name:"AllHellBreakLoose",extends:"sequence",level:"warning",scope:"text",message:"The correct idiom is `all hell breaks loose`.",link:""},{name:"AllIntentsAndPurposes",extends:"existence",level:"warning",scope:"text",message:"The idiom is `for all intents and purposes`.",link:""},{name:"AllOfASudden",extends:"existence",level:"warning",scope:"text",message:"Prefer the standard phrasing `all of a sudden`.",link:""},{name:"AllowTo1",extends:"sequence",level:"warning",scope:"text",message:"Flags erroneous usage of `allow to` without a subject.",link:""},{name:"AllowTo2",extends:"sequence",level:"warning",scope:"text",message:"Flags erroneous usage of `allow to` without a subject.",link:""},{name:"AllReady",extends:"sequence",level:"warning",scope:"text",message:"Use `already` before adjectives instead of the two-word phrase.",link:""},{name:"AllThough",extends:"existence",level:"error",scope:"text",message:"Merge `all` and `though` into the conjunction `although`.",link:""},{name:"Alongside",extends:"existence",level:"suggestion",scope:"text",message:"Use the single word `alongside`.",link:""},{name:"ALongTime",extends:"existence",level:"warning",scope:"text",message:"Use `a long time` for referring to a duration of time.",link:""},{name:"AlzheimersDisease",extends:"existence",level:"error",scope:"text",message:"Use the correct medical term.",link:""},{name:"AMeansToAnEnd",extends:"existence",level:"warning",scope:"text",message:"The correct idiom is `a means to an end`.",link:""},{name:"AmInTheMorning",extends:"existence",level:"warning",scope:"text",message:"The time period is redundant because it repeats what's already specified by the AM/PM indicator.",link:""},{name:"AmountsFor",extends:"substitution",level:"warning",scope:"text",message:"`amounts for` is not idiomatic English. You probably meant `amounts to` or `accounts for`.",link:""},{name:"AnAnother",extends:"existence",level:"suggestion",scope:"text",message:"Use `another` on its own.",link:""},{name:"AndSuch",extends:"existence",level:"warning",scope:"text",message:"Did you mean `and such`?",link:""},{name:"AndTheLike",extends:"existence",level:"warning",scope:"text",message:"If you intended the idiom meaning `similar things`, the correct form is with `the like`.",link:""},{name:"AnotherAn",extends:"existence",level:"suggestion",scope:"text",message:"Use `another` on its own.",link:""},{name:"AnotherOnes",extends:"existence",level:"warning",scope:"text",message:"`another` is singular but `ones` is plural. Or maybe you meant the possessive `one's`.",link:""},{name:"AnotherThingComing",extends:"sequence",level:"warning",scope:"text",message:"Corrects `another think coming` to `another thing coming`",link:""},{name:"AnotherThings",extends:"existence",level:"warning",scope:"text",message:"`another` is singular but `things` is plural.",link:""},{name:"AOkHyphen",extends:"existence",level:"suggestion",scope:"text",message:"Use `A-OK` when stating that something is acceptable or ready.",link:""},{name:"ApartFrom",extends:"sequence",level:"warning",scope:"text",message:"Use `from` to spell `apart from`.",link:""},{name:"AsComparedTo",extends:"existence",level:"warning",scope:"text",message:"Did you mean `as compared to`?",link:""},{name:"AsEvidentBy",extends:"substitution",level:"warning",scope:"text",message:"Did you mean `evidenced`? The correct phrase uses the past participle of the verb `evidence`.",link:""},{name:"AsFarBackAs",extends:"existence",level:"suggestion",scope:"text",message:"Use `as far back as` for referring to a time in the past.",link:""},{name:"AsFollows",extends:"existence",level:"warning",scope:"text",message:"Use `as follows`.",link:""},{name:"AsHow",extends:"existence",level:"warning",scope:"text",message:"Consider rephrasing to `as to how`.",link:""},{name:"AsIfThough",extends:"existence",level:"suggestion",scope:"text",message:"This should be `as if` or `as though`.",link:""},{name:"AsIsWithAnything",extends:"existence",level:"suggestion",scope:"text",message:"The phrase `as is with anything` is ungrammatical. Use `as with anything` or `as is the case with anything`.",link:""},{name:"AsItHappens",extends:"existence",level:"warning",scope:"text",message:"Did you mean `as it happens`?",link:""},{name:"AskNoPreposition",extends:"sequence",level:"warning",scope:"text",message:"The verb `to {verb} someone` should not be preceded by the preposition `to`.",link:""},{name:"AsLongAs",extends:"existence",level:"warning",scope:"text",message:"`As long` is two words and the last word should be `as`.",link:""},{name:"AsMuchAs",extends:"existence",level:"warning",scope:"text",message:"This epxression requires `as` and not `than`.",link:""},{name:"AsOfCurrently",extends:"existence",level:"suggestion",scope:"text",message:"Standard equivalents are `currently` or `as of now`.",link:""},{name:"AsOfLately",extends:"existence",level:"suggestion",scope:"text",message:"Standard equivalents are `lately` or `as of late`.",link:""},{name:"AsOpposedTo",extends:"existence",level:"warning",scope:"text",message:"Did you mean `as opposed to`?",link:""},{name:"AspireTo",extends:"sequence",level:"warning",scope:"text",message:"Use `aspire to` instead of `aspire for`.",link:""},{name:"AtAllCosts",extends:"existence",level:"warning",scope:"text",message:"Did you mean `at all costs`?",link:""},{name:"AtFaceValue",extends:"existence",level:"suggestion",scope:"text",message:"`at face value` is more idiomatic and more common.",link:""},{name:"AtLeasToLeast",extends:"existence",level:"error",scope:"text",message:"Use the standard phrase with `least` here.",link:""},{name:"AtLestToLeast",extends:"existence",level:"warning",scope:"text",message:"Use the standard phrase with `least` here.",link:""},{name:"AtTheBestOfTimes",extends:"existence",level:"warning",scope:"text",message:"Did you mean `at the best of times`?",link:""},{name:"AtTheEndOfTheDay",extends:"existence",level:"suggestion",scope:"text",message:"Did you mean `at the end of the day`?",link:""},{name:"AtTheExpenseOf",extends:"existence",level:"error",scope:"text",message:"In the context of tradeoffs, use `at the expense of`. `Expanse` means ",link:""},{name:"AtTheVeryLeast",extends:"existence",level:"suggestion",scope:"text",message:"Did you mean `at the very least`?",link:""},{name:"AvoidAndAlso",extends:"existence",level:"suggestion",scope:"text",message:"Consider using just `and`.",link:""},{name:"AvoidCurses",extends:"existence",level:"suggestion",scope:"text",message:"Try to avoid offensive language.",link:""},{name:"AwareOf",extends:"existence",level:"warning",scope:"text",message:"Use `aware of` instead of `aware about`.",link:""},{name:"AW
1aysToGo",extends:"substitution",level:"warning",scope:"text",message:"This idiom requires the word `a`.",link:""},{name:"AWaysToGo2",extends:"substitution",level:"warning",scope:"text",message:"This idiom requires the word `a`.",link:""},{name:"AWhile",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `a while`?",link:""},{name:"BadRap",extends:"existence",level:"error",scope:"text",message:"Did you mean `bad rap`?",link:""},{name:"BanTogether",extends:"existence",level:"error",scope:"text",message:"Did you mean `band together`?",link:""},{name:"BareInMind",extends:"existence",level:"error",scope:"text",message:"Did you mean `bear in mind`?",link:""},{name:"BatedBreath",extends:"existence",level:"error",scope:"text",message:"Did you mean `bated breath`?",link:""},{name:"BeAllowed",extends:"substitution",level:"warning",scope:"text",message:"Add `be` so this reads `be allowed`.",link:""},{name:"BeckAndCall",extends:"existence",level:"error",scope:"text",message:"Did you mean `beck and call`?",link:""},{name:"BeenThere",extends:"existence",level:"error",scope:"text",message:"Did you mean `been there`?",link:""},{name:"Beforehand",extends:"existence",level:"suggestion",scope:"text",message:"Prefer the single-word adverb `beforehand`.",link:""},{name:"BesideThePoint",extends:"existence",level:"error",scope:"text",message:"Use `beside` in the idiom `beside the point`.",link:""},{name:"BestOfAllTime",extends:"existence",level:"warning",scope:"text",message:"This expression uses singular `time`",link:""},{name:"BestRegards",extends:"existence",level:"error",scope:"text",message:"Use `best regards` to convey sincere well wishes in a closing.",link:""},{name:"BetterOffPhrase1",extends:"sequence",level:"warning",scope:"text",message:"This expression usually takes `off` instead of `of`.",link:""},{name:"BetterOffPhrase2",extends:"sequence",level:"warning",scope:"text",message:"This expression usually takes `off` instead of `of`.",link:""},{name:"BetterOffPhrasePhrases",extends:"existence",level:"warning",scope:"text",message:"This expression usually takes `off` instead of `of`.",link:""},{name:"BetterOffWith",extends:"existence",level:"error",scope:"text",message:"This phrase uses the word `off`.",link:""},{name:"BewareOf",extends:"existence",level:"warning",scope:"text",message:"Use `beware of` when naming the object you want readers to avoid.",link:""},{name:"BlacklistWhitelist",extends:"existence",level:"warning",scope:"text",message:"Treat color-based deny/allow lists as single words like `blacklist` or `whitelist`.",link:""},{name:"BlanketStatement",extends:"existence",level:"warning",scope:"text",message:"Use the more idiomatic phrasing.",link:""},{name:"BluRayHyphen",extends:"existence",level:"warning",scope:"text",message:"Use the hyphenated spelling for this media format.",link:""},{name:"BoarderBorder",extends:"substitution",level:"error",scope:"text",message:"Did you mean `border`?",link:""},{name:"Brutality",extends:"existence",level:"suggestion",scope:"text",message:"This word has a more standard, more common synonym.",link:""},{name:"ByAccident1",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `by accident`?",link:""},{name:"ByAccident2",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `by accident`?",link:""},{name:"ByOnesOwn",extends:"substitution",level:"warning",scope:"text",message:"`By one's own` is not idiomatic. Consider either `on one's own` or `by oneself`.",link:""},{name:"ByTheBook",extends:"existence",level:"warning",scope:"text",message:"Did you mean the idiom `by the book`?",link:""},{name:"CallItQuits",extends:"sequence",level:"warning",scope:"text",message:"This idiom uses the plural 'quits' to mean 'gives up' or 'stops'.",link:""},{name:"CanBeSeen",extends:"existence",level:"error",scope:"text",message:"Did you mean `can be seen`?",link:""},{name:"CantWay",extends:"substitution",level:"error",scope:"text",message:"Did you mean `wait`?",link:""},{name:"CapitalizeOn",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %[1]s?",link:""},{name:"CaseInPoint",extends:"existence",level:"error",scope:"text",message:"`Case in point` is the correct form of the phrase.",link:""},{name:"CaseSensitive",extends:"existence",level:"warning",scope:"text",message:"Use the hyphenated form for `case-sensitive`.",link:""},{name:"Catch22",extends:"substitution",level:"warning",scope:"text",message:"This idiom uses 'catch' instead of 'cache' or 'cash'.",link:""},{name:"CauseItIsBecause",extends:"existence",level:"suggestion",scope:"text",message:"Prefer `because it is` in this clause.",link:""},{name:"CautionaryTale",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `tale` (story)?",link:""},{name:"ChangeTack",extends:"existence",level:"warning",scope:"text",message:"Did you mean `tack`, as in a sailing heading?",link:""},{name:"ClicheAccent",extends:"substitution",level:"error",scope:"text",message:"Did you mean %[1]s?",link:""},{name:"ClickThroughRate",extends:"substitution",level:"warning",scope:"text",message:"Keep the metric modifier bonded so the compound explicitly names the analytics signal.",link:""},{name:"CloseTightKnit",extends:"existence",level:"warning",scope:"text",message:"Did you mean `knit`?",link:""},{name:"CodeInWriteIn",extends:"sequence",level:"warning",scope:"text",message:"For writing code, the preposition should be `in` rather than `on`.",link:""},{name:"ColdModalTypo1",extends:"sequence",level:"error",scope:"text",message:"This looks like a modal typo.",link:""},{name:"ColdModalTypo2",extends:"sequence",level:"error",scope:"text",message:"This looks like a modal typo.",link:""},{name:"ColdModalTypoPhrases",extends:"existence",level:"error",scope:"text",message:"This looks like a modal typo.",link:""},{name:"ComplainAsNoun",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the noun `complaint`?",link:""},{name:"ComplainAsNoun2",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the noun `complaints`?",link:""},{name:"ComprisesOf",extends:"existence",level:"warning",scope:"text",message:"Avoid `comprises of`;
1 let `comprises` stand on its own or choose `consists of`.",link:""},{name:"CondenseAllThe",extends:"existence",level:"suggestion",scope:"text",message:"Consider simplifying to `all the`.",link:""},{name:"Confident",extends:"sequence",level:"warning",scope:"text",message:"Use the adjective.",link:""},{name:"CoursingThroughVeins",extends:"existence",level:"error",scope:"text",message:"In this idiom, blood `courses` (flows) through veins, not `curses`.",link:""},{name:"CraveFor",extends:"substitution",level:"warning",scope:"text",message:"The verb `crave` should not be followed by `for`.",link:""},{name:"CrossPlatform",extends:"existence",level:"warning",scope:"text",message:"`Cross-platform` should always be hyphenated in all positions.",link:""},{name:"CureFor",extends:"sequence",level:"warning",scope:"text",message:"Prefer `cure for` when describing a treatment target.",link:""},{name:"CuttingAgeEggcorn",extends:"existence",level:"error",scope:"text",message:"Did you mean `cutting-edge` (adjective before a noun) or `cutting edge` (in other positions)?",link:""},{name:"Cybersec",extends:"existence",level:"suggestion",scope:"text",message:"Use `cybersecurity` instead of `cybersec`.",link:""},{name:"DampSquib",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for a disappointing outcome.",link:""},{name:"DayAndAge",extends:"existence",level:"warning",scope:"text",message:"The correct idiom is `in this day and age`.",link:""},{name:"DegreesKelvin",extends:"existence",level:"warning",scope:"text",message:"Use `kelvins` when discussing the unit Kelvin.",link:""},{name:"DegreesKelvinSymbol",extends:"existence",level:"warning",scope:"text",message:"Use just the symbol `K` when discussing the unit Kelvin.",link:""},{name:"DespiteItIs",extends:"existence",level:"warning",scope:"text",message:"Use the gerund form of the verb after `despite`.",link:""},{name:"DespiteOf",extends:"sequence",level:"warning",scope:"text",message:"The phrase “despite of” is incorrect. Please use either “despite” or “in spite of” instead.",link:""},{name:"Didnt",extends:"sequence",level:"warning",scope:"text",message:"Consider using `didn't` here.",link:""},{name:"DiscourseMarkers",extends:"existence",level:"suggestion",scope:"sentence",message:"A discourse marker needs a comma after it.",link:""},{name:"DoIAdjective",extends:"substitution",level:"warning",scope:"text",message:"When describing how you feel, `I` pairs with `am`, not `do`.",link:""},{name:"DoMistake",extends:"sequence",level:"warning",scope:"text",message:"Use `make` with `mistake`, not `do`.",link:""},{name:"DoMistake2",extends:"existence",level:"warning",scope:"text",message:"Use `make` with `mistake`, not `do`.",link:""},{name:"DoNotWant",extends:"existence",level:"error",scope:"text",message:"Use the full verb `want` after negation: `don't want` or `do not want.`",link:""},{name:"DontCan",extends:"existence",level:"warning",scope:"text",message:"The grammatically correct form is `can't` or `cannot`.",link:""},{name:"DotInitialisms",extends:"substitution",level:"warning",scope:"text",message:"Initialisms should have dot-separated letters.",link:""},{name:"DoubleCheckHyphen",extends:"existence",level:"warning",scope:"text",message:"Use the hyphenated form in this compound.",link:""},{name:"DoubleNegative",extends:"substitution",level:"warning",scope:"text",message:"With `didn't/did not`, using `no` creates a double negative; replace `no` with `any` to keep a single negation.",link:""},{name:"DueDiligence",extends:"existence",level:"warning",scope:"text",message:"If this phrase should function as a noun it should be `due diligence`. If it should function as a verb it should be `do due diligence",link:""},{name:"EachAndEveryOne",extends:"existence",level:"error",scope:"text",message:"Use `each and every one` for referring to a group of people or things.",link:""},{name:"EachOthersPossessive",extends:"substitution",level:"warning",scope:"text",message:"Use the reciprocal possessive form here.",link:""},{name:"EagleEyed",extends:"existence",level:"warning",scope:"text",message:"Hyphenate `eagle eyed` when it acts as a single adjective before a noun.",link:""},{name:"EggYolk",extends:"existence",level:"error",scope:"text",message:"Use `egg yolk` when you mean the yellow portion of an egg.",link:""},{name:"ElsePossessive",extends:"substitution",level:"warning",scope:"text",message:"Add the missing possessive apostrophe: use `else’s`.",link:""},{name:"EludedTo",extends:"existence",level:"error",scope:"text",message:"Did you mean `alluded to`?",link:""},{name:"EnRoute",extends:"existence",level:"error",scope:"text",message:"Did you mean `en route`?",link:""},{name:"EnvironmentVariable",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %[1]s?",link:""},{name:"EverPresent",extends:"existence",level:"warning",scope:"text",message:"Hyphenate `ever-present` when it functions as a compound adjective.",link:""},{name:"EverSince",extends:"existence",level:"error",scope:"text",message:"Did you mean `ever since`?",link:""},{name:"Everyday",extends:"sequence",level:"warning",scope:"text",message:"You probably mean the adverb `every day` here.",link:""},{name:"Everyday2",extends:"sequence",level:"warning",scope:"text",message:"You probably mean the adjective `everyday` here.",link:""},{name:"EveryOnceAndAgain",extends:"existence",level:"warning",scope:"text",message:"For things that happen only occasionaly use `every once in a while. For things that persistently happen use `once again`.",link:""},{name:"EverySingleOneOf",extends:"existence",level:"warning",scope:"text",message:"This phrase is missing the word `one`.",link:""},{name:"EveryTime",extends:"existence",level:"warning",scope:"text",message:"`Everytime` as a single word is proscribed. Use `every time` instead.",link:""},{name:"Excellent",extends:"existence",level:"suggestion",scope:"text",message:"Vocabulary enhancement: use `excellent` instead of `very good`",link:""},{name:"ExitedExcitedContext1",extends:"sequence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExitedExcitedContext2",extends:"sequence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExitedExcitedContext3",extends:"sequence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExitedExcitedContext4",extends:"sequence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExitedExcitedContext5",extends:"sequence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExitedExcitedContext6",extends:"sequence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExitedExcitedContext7",extends:"sequence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExitedExcitedContext8",extends:"sequence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExitedExcitedContextPhrases",extends:"existence",level:"error",scope:"text",message:"This word choice looks off for this meaning.",link:""},{name:"ExpandBecause",extends:"existence",level:"suggestion",scope:"text",message:"Use `because` instead of informal `cuz`",link:""},{name:"ExpandConfiguration",extends:"substitution",level:"suggestion",scope:"text",message:"Prose usually spells this out.",link:""},{name:"ExpandControl",extends:"existence",level:"suggestion",scope:"text",message:"Use `control` instead of informal `ctrl`",link:""},{name:"ExpandForward",extends:"existence",level:"suggestion",scope:"text",message:"Use `forward` instead of `fwd`",link:""},{name:"ExpandMemoryShorthands",extends:"substitution",level:"suggestion",scope:"text",message:"Prose usually spells out the unit.",link:""},{name:"ExpandMinimum",extends:"substitution",level:"suggestion",scope:"text",message:"Use `minimum` instead of `min`",link:""},{name:"ExpandPerformance",extends:"existence",level:"suggestion",scope:"text",message:"Use `performance` instead of `perf`",link:""},{name:"ExpandPreference",extends:"substitution",level:"suggestion",scope:"text",message:"Use %[1]s instead of %[2]s",link:""},{name:"ExpandPrevious",extends:"existence",level:"suggestion",scope:"text",message:"Use `previous` instead of `prev`",link:""},{name:"ExpandThough",extends:"existence",level:"suggestion",scope:"text",message:"Use `though` instead of `tho`",link:""},{name:"ExpandThrough",extends:"existence",level:"suggestion",scope:"text",message:"Use `thru` instead of `through`",link:""},{name:"ExpandTimeShorthands",extends:"substitution",level:"suggestion",scope:"text",message:"Prose usually spells out the unit.",link:""},{name:"ExpandWithout",extends:"existence",level:"suggestion",scope:"text",message:"Use `without` instead of `w/o`",link:""},{name:"FaceFirst",extends:"existence",level:"warning",scope:"text",message:"Should this be `face-first`?",link:""},{name:"FairBit",extends:"existence",level:"error",scope:"text",message:"A `decent amount` is a `fair bit`. `Fare` is the price of a ticket.",link:""},{name:"FallBelow",extends:"existence",level:"warning",scope:"text",message:"`below` is redundant after a distance fallen.",link:""},{name:"FarAndFewBetween",extends:"existence",level:"error",scope:"text",message:"The correct idiom is `few and far between`?",link:""},{name:"FascinatedBy",extends:"existence",level:"warning",scope:"text",message:"The correct prepositions to use with `fascinated` are `by` or `with`.",link:""},{name:"FastPaste",extends:"existence",level:"error",scope:"text",message:"Did you mean `fast-paced`?",link:""},{name:"FatalOutcome",extends:"existence",level:"suggestion",scope:"text",message:"Consider using `death` for clarity.",link:""},{name:"FeelFell",extends:"existence",level:"warning",scope:"text",message:"Did you mean `feel`?",link:""},{name:"FellowCoRedundancy",extends:"existence",level:"warning",scope:"text",message:"Using `fellow` with `co` is redundant.",link:""},{name:"FetalPosition",extends:"existence",level:"error",scope:"text",message:"Use the correct term for a curled-up posture.",link:""},{name:"FindFine",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `fine`?",link:""},{name:"FindOut",extends:"sequence",level:"suggestion",scope:"text",message:"Use `find` instead of `find out` when you mean to discover something directly.",link:""},{name:"FirstAidKit",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `kit` (a set of items) instead of “kid”?",link:""},{name:"FleshOutVsFullFledged",extends:"substitution",level:"warning",scope:"text",message:"Did you mean the other word?",link:""},{name:"FondOn",extends:"existence",level:"suggestion",scope:"text",message:"Use `found on` or `fond of` instead of `fond on`.",link:""},{name:"FootInchMinuteSecondSymbols",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %s?",link:""},{name:"ForALongTime",extends:"existence",level:"warning",scope:"text",message:"Use the standard phrase `for a long time` to indicate an extended duration.",link:""},{name:"ForArgumentsSake",extends:"existence",level:"warning",scope:"text",message:"Use the possessive `argument's`.",link:""},{name:"ForAWhile",extends:"existence",level:"error",scope:"text",message:"When describing a timeframe, use `a while`.",link:""},{name:"ForFreeOfCharge",extends:"sequence",level:"warning",scope:"text",message:"Use only either `for free` or `free of charge`",link:""},{name:"FormativeYears",extends:"existence",level:"error",scope:"text",message:"Did you mean `formative years`? Use `formative` to de
1scribe a period of growth or influence. `Formidable` is typically used for something intimidating.",link:""},{name:"ForTheMostPart",extends:"existence",level:"warning",scope:"text",message:"Use `for the most part` instead of `for most part`.",link:""},{name:"ForTheNthTime",extends:"existence",level:"warning",scope:"sentence",message:"The standard form of this construction requires the word 'the' to precede the ordinal.",link:""},{name:"FreePredicate",extends:"substitution",level:"warning",scope:"text",message:"Use `free` here to show that something costs nothing.",link:""},{name:"FreeRein",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for unrestricted control.",link:""},{name:"Freezing",extends:"existence",level:"suggestion",scope:"text",message:"A more vivid adjective would better capture extreme cold.",link:""},{name:"FriendOfMe",extends:"existence",level:"warning",scope:"text",message:"Use a possessive pronoun -- `mine`, `yours`, `his`, `ours`, `theirs` -- instead of an object pronoun.",link:""},{name:"FromTheGetGo",extends:"existence",level:"warning",scope:"text",message:"Use the hyphenated form: `from the get-go`.",link:""},{name:"GildedAge",extends:"existence",level:"error",scope:"text",message:"The period of economic prosperity is called the `Gilded Age`.",link:""},{name:"GoggleBrand",extends:"substitution",level:"error",scope:"text",message:"You probably meant to spell the company name `Google`.",link:""},{name:"GoingTo",extends:"existence",level:"error",scope:"text",message:"Did you mean `going to`?",link:""},{name:"GoodAt",extends:"sequence",level:"warning",scope:"text",message:"Use 'good at' to describe proficiency with a skill.",link:""},{name:"GoSoFarAsTo1",extends:"sequence",level:"warning",scope:"text",message:"If this is intended to express going beyond what's expected, the standard idiom is `go so far as to`",link:""},{name:"GoToWar",extends:"existence",level:"warning",scope:"text",message:"Use `to` instead of `at`.",link:""},{name:"GuineaBissau",extends:"existence",level:"warning",scope:"text",message:"The official spelling is hyphenated.",link:""},{name:"HadOf",extends:"existence",level:"warning",scope:"text",message:"Did you mean `had have` or `had've`?",link:""},{name:"HalfAnHour",extends:"existence",level:"error",scope:"text",message:"Remember the silent 'h' when writing `hour`: `half an hour`.",link:""},{name:"Handful",extends:"substitution",level:"warning",scope:"text",message:"Write this quantity as the single word `handful`.",link:""},{name:"Haphazard",extends:"existence",level:"error",scope:"text",message:"Use `haphazard` for randomness or lack of organization.",link:""},{name:"HaveAHardTime",extends:"substitution",level:"warning",scope:"text",message:"The idiom is `have a hard time`.",link:""},{name:"HaveNegNoAny1",extends:"sequence",level:"warning",scope:"text",message:"This negative form sounds nonstandard; use `any` after the negated auxiliary.",link:""},{name:"HaveNegNoAny2",extends:"sequence",level:"warning",scope:"text",message:"This negative form sounds nonstandard; use `any` after the negated auxiliary.",link:""},{name:"HaveNegNoAny3",extends:"sequence",level:"warning",scope:"text",message:"This negative form sounds nonstandard; use `any` after the negated auxiliary.",link:""},{name:"HaveNegNoAny4",extends:"sequence",level:"warning",scope:"text",message:"This negative form sounds nonstandard; use `any` after the negated auxiliary.",link:""},{name:"HaveNegNoAny5",extends:"sequence",level:"warning",scope:"text",message:"This negative form sounds nonstandard; use `any` after the negated auxiliary.",link:""},{name:"HaveNegNoAny6",extends:"sequence",level:"warning",scope:"text",message:"This negative form sounds nonstandard; use `any` after the negated auxiliary.",link:""},{name:"HaveNegNoAny7",extends:"sequence",level:"warning",scope:"text",message:"This negative form sounds nonstandard; use `any` after the negated auxiliary.",link:""},{name:"Hazzle",extends:"substitution",level:"error",scope:"text",message:"Did you mean %[1]s?",link:""},{name:"HeartToHeard1",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the verb `heard` (= past tense of `hear`)?",link:""},{name:"HeartToHeard2",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the verb `heard` (= past tense of `hear`)?",link:""},{name:"HeartToHeard3",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the verb `heard` (= past tense of `hear`)?",link:""},{name:"HeartToHeard4",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the verb `heard` (= past tense of `hear`)?",link:""},{name:"HeartToHeard5",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the verb `heard` (= past tense of `hear`)?",link:""},{name:"HeartToHeard6",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the verb `heard` (= past tense of `hear`)?",link:""},{name:"HeartToHeardPhrases",extends:"existence",level:"warning",scope:"text",message:"Did you mean the verb `heard` (= past tense of `hear`)?",link:""},{name:"HeDos1",extends:"sequence",level:"error",scope:"text",message:"Did you mean `does`?",link:""},{name:"HeDos2",extends:"sequence",level:"error",scope:"text",message:"Did you mean `does`?",link:""},{name:"HeDos3",extends:"sequence",level:"error",scope:"text",message:"Did you mean `does`?",link:""},{name:"HeDosPhrases",extends:"existence",level:"error",scope:"text",message:"Did you mean `does`?",link:""},{name:"HelloGreeting",extends:"existence",level:"warning",scope:"text",message:"Prefer `hello` as a greeting; `halo` refers to the optical effect.",link:""},{name:"Hereby",extends:"substitution",level:"warning",scope:"text",message:"Did you mean the closed compound `hereby`?",link:""},{name:"HiddenIn",extends:"existence",level:"warning",scope:"text",message:"Did you mean `hidden in`?",link:""},{name:"HowDoesCompared",extends:"substitution",level:"warning",scope:"text",message:"Use the base form of the verb `compare`.",link:""},{name:"HumanBeings",extends:"existence",level:"warning",scope:"text",message:"Use `human beings` to refer to people collectively.",link:""},{name:"HumanLife",extends:"existence",level:"error",scope:"text",message:"Did you mean `human life`?",link:""},{name:"HungerPang",extends:"existence",level:"error",scope:"text",message:"Did you mean `hunger pang`?",link:""},{name:"IAm",extends:"existence",level:"error",scope:"text",message:"Did you mean `I am`?",link:""},{name:"IDo",extends:"existence",level:"warning",scope:"text",message:"`I` pairs with the bare verb `do`; the –s inflection `does` is reserved for third-person singular subjects.",link:""},{name:"IfWouldve",extends:"substitution",level:"warning",scope:"text",message:"If this is counterfactual or hypothetical, use `had` after `if` rather than `would have` or `had have`.",link:""},{name:"ImitateFrom",extends:"existence",level:"warning",scope:"text",message:"Use `of` with `imitate` when naming the source you copy.",link:""},{name:"Impressed",extends:"existence",level:"warning",scope:"text",message:"The correct preposition after `impressed` is `by` or `with`.",link:""},{name:"InADifferentDirection",extends:"existence",level:"error",scope:"text",message:"Did you mean `in a different direction`?",link:""},{name:"InAHurry",extends:"existence",level:"warning",scope:"text",message:"The correct idiom is `in a hurry`.",link:""},{name:"InAnyWay",extends:"existence",level:"error",scope:"text",message:"Use `in any way` for emphasizing a point.",link:""},{name:"InAWhile",extends:"existence",level:"warning",scope:"text",message:"When describing a timeframe, use `a while`.",link:""},{name:"IncidentReport",extends:"substitution",level:"suggestion",scope:"text",message:"Did you mean %[1]s?",link:""},{name:"InDueCourse",extends:"existence",level:"error",scope:"text",message:"Use `in due course` instead of `in do course`.",link:""},{name:"InFavourOfDoing",extends:"sequence",level:"warning",scope:"text",message:"The word `of` is missing.",link:""},{name:"InHindsight",extends:"existence",level:"warning",scope:"text",message:"Use `in hindsight` when reflecting on past events with the benefit of current knowledge.",link:""},{name:"Initiatively",extends:"existence",level:"warning",scope:"text",message:"Did you mean `proactive` (taking initiative, acting in advance) or `initially` (at first, in the beginning)?",link:""},{name:"InLieuOf",extends:"existence",level:"error",scope:"text",message:"Did you mean `in lieu of`?",link:""},{name:"InNeedOf",extends:"existence",level:"warning",scope:"text",message:"Use `in need of` for when something is required or necessary.",link:""},{name:"InOfItself",extends:"existence",level:"warning",scope:"text",message:"Use `in itself` (more common) or `in and of itself` (more formal) to mean 'intrinsically'.",link:""}
1,{name:"Insensitive",extends:"existence",level:"suggestion",scope:"text",message:"This word has a more standard, more common synonym.",link:""},{name:"InspiredBy",extends:"existence",level:"warning",scope:"text",message:"Use `inspired by` instead of `inspired from` when citing a source of inspiration.",link:""},{name:"InsteadOf",extends:"existence",level:"error",scope:"text",message:"Use the modern single word `instead of` to indicate a replacement.",link:""},{name:"Insurmountable",extends:"existence",level:"suggestion",scope:"text",message:"This word has a more standard, more common synonym.",link:""},{name:"InterestedIn",extends:"existence",level:"warning",scope:"text",message:"Use `interested in`.",link:""},{name:"InThe",extends:"existence",level:"error",scope:"text",message:"Did you mean `in the`?",link:""},{name:"InTimeFromNow",extends:"existence",level:"warning",scope:"text",message:"Avoid redundancy by using either `in [period of time]` or `[period of time] from now`, but not both together.",link:""},{name:"IntroCueCommaBeforeThanks",extends:"existence",level:"warning",scope:"text",message:"Set off `no` with a comma in the response phrase `no, thanks`.",link:""},{name:"IsBeenAuxSequence",extends:"existence",level:"warning",scope:"text",message:"This helper sequence is nonstandard in edited English.",link:""},{name:"IsKnownFor",extends:"existence",level:"error",scope:"text",message:"Did you mean `is known for`?",link:""},{name:"ItCan",extends:"existence",level:"error",scope:"text",message:"Did you mean `It can`?",link:""},{name:"ItsPossessive",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive `its` here.",link:""},{name:"ItsPossessive2",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive `its` here.",link:""},{name:"ItsPossessive3",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive `its` here.",link:""},{name:"ItsPossessive4",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive `its` here.",link:""},{name:"ItTimeAuxiliary",extends:"substitution",level:"warning",scope:"text",message:"This phrase usually needs the contraction `it's` before `time` in this construction.",link:""},{name:"IveGotTo",extends:"existence",level:"error",scope:"text",message:"Use `I've got to` for necessity or obligation.",link:""},{name:"JawDropping",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for something astonishing.",link:""},{name:"JumpTheGun",extends:"existence",level:"warning",scope:"text",message:"The correct idiom is `jump the gun`.",link:""},{name:"JustDeserts",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for receiving what one deserves.",link:""},{name:"KindOf",extends:"existence",level:"suggestion",scope:"text",message:"`Kinda` already means `kind of`, so `kinda of` is redundant.",link:""},{name:"KindRegards",extends:"existence",level:"error",scope:"text",message:"Did you mean `kind regards`?",link:""},{name:"KnowNothingVerb",extends:"substitution",level:"warning",scope:"text",message:"This looks like a misspelled verb in this phrase.",link:""},{name:"LastButNotLeast",extends:"existence",level:"warning",scope:"text",message:"Use the more idiomatic phrasing.",link:""},{name:"LastDitch",extends:"existence",level:"warning",scope:"text",message:"In this idiom, `ditch` is a noun and a hyphen is needed.",link:""},{name:"LastNight",extends:"existence",level:"suggestion",scope:"text",message:"The idiomatic phrase is `last night`.",link:""},{name:"LaughOfAt",extends:"sequence",level:"warning",scope:"text",message:"Use `laugh at ...` instead of `laugh of ...` when pointing at someone.",link:""},{name:"LaughOfAt2",extends:"sequence",level:"warning",scope:"text",message:"Use `laugh at ...` instead of `laugh of ...` when pointing at someone.",link:""},{name:"LeadRiseTo",extends:"sequence",level:"warning",scope:"text",message:"The correct idiom is `give rise to`.",link:""},{name:"LeaveToFor",extends:"sequence",level:"warning",scope:"text",message:"Use `for` when pointing a departure toward a place.",link:""},{name:"LeavingInDroves",extends:"sequence",level:"warning",scope:"text",message:"`Drones` is an eggcorn. The correct word is `droves`.",link:""},{name:"LeftRightHand",extends:"sequence",level:"warning",scope:"text",message:"Use a hyphen in `left-hand` or `right-hand` when modifying a noun.",link:""},{name:"LessWorse",extends:"substitution",level:"warning",scope:"text",message:"Suggests alternatives to `less/least worse/worst` for more standard, clearer comparisons.",link:""},{name:"LetAlone",extends:"existence",level:"error",scope:"text",message:"Did you mean `let alone`?",link:""},{name:"LetToDo1",extends:"sequence",level:"warning",scope:"text",message:"The word `to` should not be used with `let` in this way.",link:""},{name:"LetToDo2",extends:"sequence",level:"warning",scope:"text",message:"The word `to` should not be used with `let` in this way.",link:""},{name:"LetToDo3",extends:"sequence",level:"warning",scope:"text",message:"The word `to` should not be used with `let` in this way.",link:""},{name:"LikeAsIf",extends:"existence",level:"suggestion",scope:"text",message:"Avoid redundancy. Use either `like` or `as if`.",link:""},{name:"LikelyHood",extends:"existence",level:"warning",scope:"text",message:"Merge `likely hood` into the established noun `likelihood`.",link:""},{name:"LikeThePlague",extends:"existence",level:"warning",scope:"text",message:"`Things are avoided `like the plague` not `like a plague`.",link:""},{name:"LikeTheresNoTomorrow",extends:"existence",level:"warning",scope:"text",message:"The correct phrase is `like there's no tomorrow`.",link:""},{name:"LinesOfCode",extends:"existence",level:"warning",scope:"text",message:"The correct plural is `lines of code`.",link:""},{name:"LinkedList",extends:"substitution",level:"warning",scope:"text",message:"If you mean the low-level data structure, use %[1]s instead of %[2]s.",link:""},{name:"LittleKnown",extends:"substitution",level:"warning",scope:"text",message:"The idiom is `a little known fact`.",link:""},{name:"LittleKnown2",extends:"existence",level:"warning",scope:"text",message:"This reads better without the article.",link:""}
1,{name:"LookDownOnesNose",extends:"sequence",level:"warning",scope:"text",message:"The correct idiom is `look down one's nose`.",link:""},{name:"LookInto",extends:"substitution",level:"warning",scope:"text",message:"Keep `look into` together before question words so the verb stays idiomatic.",link:""},{name:"LooksLikes",extends:"substitution",level:"error",scope:"text",message:"Drop the extra `s` in `likes` when it immediately follows a form of `look`.",link:""},{name:"LowHangingFruit",extends:"existence",level:"warning",scope:"text",message:"The standard form is `low-hanging fruit` with a hyphen and singular form.",link:""},{name:"ManagerialReins",extends:"existence",level:"error",scope:"text",message:"Swap in `reins` when talking about control of a team or project.",link:""},{name:"MassExodus",extends:"existence",level:"error",scope:"text",message:"Corrects `max exodues` to `mass exodus`.",link:""},{name:"MayOfPronoun",extends:"substitution",level:"error",scope:"text",message:"Did you mean %[1]s?",link:""},{name:"MeansALotTo",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %s?",link:""},{name:"MercedesBenzHyphen",extends:"existence",level:"error",scope:"text",message:"Hyphenate the two components of this classic Mercedes-Benz trademark.",link:""},{name:"Misspell",extends:"sequence",level:"warning",scope:"text",message:"Write `misspell` and its inflections as a single word.",link:""},{name:"MixedBag",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `mixed bag`?",link:""},{name:"MoreAdjective1",extends:"substitution",level:"suggestion",scope:"text",message:"This is not an error, but an inflected form of this adjective also exists",link:""},{name:"MoreAdjective2",extends:"substitution",level:"suggestion",scope:"text",message:"This is not an error, but an inflected form of this adjective also exists",link:""},{name:"MoreAdjective3",extends:"substitution",level:"suggestion",scope:"text",message:"This is not an error, but an inflected form of this adjective also exists",link:""},{name:"MoreAdjective4",extends:"substitution",level:"suggestion",scope:"text",message:"This is not an error, but an inflected form of this adjective also exists",link:""},{name:"MoreAdjective5",extends:"substitution",level:"suggestion",scope:"text",message:"This is not an error, but an inflected form of this adjective also exists",link:""},{name:"MoreAdjective6",extends:"substitution",level:"suggestion",scope:"text",message:"This is not an error, but an inflected form of this adjective also exists",link:""},{name:"MoreAdjective7",extends:"substitution",level:"suggestion",scope:"text",message:"This is not an error, but an inflected form of this adjective also exists",link:""},{name:"MoreAdjective8",extends:"substitution",level:"suggestion",scope:"text",message:"This is not an error, but an inflected form of this adjective also exists",link:""},{name:"MoreBetter",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %s?",link:""},{name:"MoreThanMeetsTheEye",extends:"existence",level:"warning",scope:"text",message:"For something that has hidden complexity or depth, `more than meets the eye` is the most idiomatic and most standard.",link:""},{name:"MoreThatLikely",extends:"existence",level:"error",scope:"text",message:"Did you mean `more than likely`?",link:""},{name:"MostNumber",extends:"substitution",level:"warning",scope:"text",message:"`Most` is not standard before a count.",link:""},{name:"MostOfTheTimes",extends:"substitution",level:"warning",scope:"text",message:"Singular `time` is usually the correct form in this phrase.",link:""},{name:"MyHouse",extends:"existence",level:"error",scope:"text",message:"Did you mean `my house`?",link:""},{name:"NailOnTheHead",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `head`?",link:""},{name:"NeedHelp",extends:"existence",level:"error",scope:"text",message:"Did you mean `need help`?",link:""},{name:"NeitherHereNorThere",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %[1]s?",link:""},{name:"NerveRacking",extends:"existence",level:"error",scope:"text",message:"Use `nerve-racking` for something that causes anxiety or tension.",link:""},{name:"NobelPeacePrize",extends:"existence",level:"error",scope:"text",message:"Spell the name of the international peace award as Nobel Peace Prize.",link:""},{name:"NoHarmNoFoul",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %s?",link:""},{name:"NoLongerPronoun",extends:"substitution",level:"warning",scope:"text",message:"Put the subject before `no longer`.",link:""},{name:"NoMatchFor",extends:"substitution",level:"warning",scope:"text",message:"If you mean the idiom, it's `no match for`.",link:""},{name:"NominalWants",extends:"substitution",level:"warning",scope:"text",message:"Did you mean `{replacement}`?",link:""},{name:"NorModalPronoun",extends:"existence",level:"warning",scope:"text",message:"Invert the subject and the modal verb after `nor`.",link:""},{name:"NotBeAfterNot1",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNot2",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNot3",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNot4",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNot5",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNot6",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNot7",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNot8",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNot9",extends:"sequence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotBeAfterNotPhrases",extends:"existence",level:"warning",scope:"text",message:"When a negative clause already uses `be`, drop the extra `be` that follows `not`.",link:""},{name:"NotIn",extends:"existence",level:"error",scope:"text",message:"Use `not in` for correct grammar.",link:""},{name:"NotLongAfter",extends:"substitution",level:"error",scope:"text",message:"Did you mean %[1]s?",link:""},{name:"NotOnlyInversion",extends:"existence",level:"warning",scope:"text",message:"Invert the subject and the verb after `not only`.",link:""},{name:"NotTo",extends:"existence",level:"error",scope:"text",message:"Did you mean `not to`?",link:""},{name:"NowKnownAs",extends:"existence",level:"warning",scope:"text",message:"Use `now known as` instead of `now know as`.",link:""},{name:"NowWay",extends:"substitution",level:"error",scope:"text",message:"Did you mean `no way`?",link:""},{name:"NumericRangeEnDash",extends:"substitution",level:"warning",scope:"text",message:"Use an en dash (–) in ranges of numbers. Ignore this if it is math.",link:""},{name:"OfCourse",extends:"substitution",level:"warning",scope:"text",message:"Did you mean `of course`?",link:""},{name:"OffTheCuff",extends:"existence",level:"warning",scope:"text",message:"Use the hyphenated form for `off-the-cuff`.",link:""},{name:"OkToOkay",extends:"existence",level:"error",scope:"text",message:"Use `okay` instead of `ok`.",link:""},{name:"OldestInTheBook",extends:"existence",level:"warning",scope:"text",message:"Did you mean `in the book`?",link:""},{name:"OldWivesTale",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for a superstition or myth.",link:""},{name:"OnceInAWhile",extends:"existence",level:"warning",scope:"text",message:"The correct idiom is `once in a while`.",link:""},{name:"OnceOrTwice",extends:"sequence",level:"warning",scope:"text",message:"Did you mean “or”?",link:""},{name:"OneFellSwoop",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for something happening suddenly.",link:""},{name:"OnesOwnAccord",extends:"sequence",level:"warning",scope:"text",message:"The correct preposition is `of`.",link:""},{name:"OnesSelf",extends:"existence",level:"warning",scope:"text",message:"If you mean the reflexive pronoun for a generic or unspecified person, use `oneself`. Ignore this if you 're referring to an individual's distinct identity or ego.",link:""},{name:"OnFirstGlance",extends:"substitution",level:"warning",scope:"text",message:"Use `at first glance` instead of `on first glance` when describing an immediate impression.",link:""},{name:"OnSecondThought",extends:"substitution",level:"error",scope:"text",message:"Idiomatic expression: use `on second thought` instead of `on second though`",link:""},{name:"OnTheSpurOfTheMoment",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for acting spontaneously.",link:""},{name:"OnTopOf",extends:"existence",level:"warning",scope:"text",message:"Did you mean `on top of`?",link:""},{name:"OpenCompounds",extends:"substitution",level:"warning",scope:"text",message:"`{phrase}` should be written as two words.",link:""},{name:"OughtToBe",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `ought to be`?",link:""},{name:"OutOfSync",extends:"existence",level:"error",scope:"text",message:"Did you mean `out of sync` or `out of synch`?",link:""},{name:"OverPlus",extends:"existence",level:"warning",scope:"text",message:"It's redundant to use both `over` and `plus`.",link:""},{name:"PaleByComparison",extends:"substitution",level:"warning",scope:"text",message:"In this idiom, the word `pale` is correctly a verb, not an adjective.",link:""},{name:"PartsOfSpeech",extends:"existence",level:"warning",scope:"text",message:"The correct plural is `parts of speech`.",link:""},{name:"PassionateAbout",extends:"substitution",level:"warning",scope:"text",message:"Use `about` instead of `of` with `passionate`",link:""},{name:"PasswordProtectedHyphen",extends:"substitution",level:"suggestion",scope:"text",message:"Hyphenate `password-protected` when the phrase modifies a following resource.",link:""},{name:"PeaceOfMind",extends:"existence",level:"error",scope:"text",message:"The phrase is `peace of mind`, meaning `calm`. A `piece` is a `part` of something.",link:""},{name:"PedalToTheMetal",extends:"existence",level:"error",scope:"text",message:"Use the idiom `pedal to the metal`.",link:""},{name:"PerSe",extends:"existence",level:"error",scope:"text",message:"The correct spelling is `per se` (with no hyphen)",link:""},{name:"PleasRequestVerb",extends:"substitution",level:"error",scope:"text",message:"Use `please` as the request opener.",link:""},{name:"PluralWrongWordOfPhrase",extends:"substitution",level:"warning",scope:"text",message:"This phrase is pluralized on the main noun, not on the last noun.",link:""},{name:"PointsOfView",extends:"existence",level:"warning",scope:"text",message:"The correct plural is `points of view`.",link:""},{name:"PortAuPrince",extends:"existence",level:"warning",scope:"text",message:"The official spelling is hyphenated.",link:""},{name:"PortoNovo",extends:"existence",level:"warning",scope:"text",message:"The official spelling is hyphenated.",link:""},{name:"PossessiveYour",extends:"substitution",level:"warning",scope:"text",message:"The possessive version of this word 
1is more common in this context.",link:""},{name:"PrayingMantis",extends:"existence",level:"error",scope:"text",message:"Use the insect's correct name.",link:""},{name:"PrincipleToPrincipalRoleNoun",extends:"substitution",level:"warning",scope:"text",message:"Use `principal` for the adjective meaning `main` in this phrase.",link:""},{name:"ProgressiveNeedsBe",extends:"sequence",level:"warning",scope:"text",message:"A progressive verb after `have` needs `been`.",link:""},{name:"ProgressiveNeedsBeContracted",extends:"sequence",level:"warning",scope:"text",message:"A progressive verb after `have` needs `been`.",link:""},{name:"PronounAre",extends:"existence",level:"warning",scope:"text",message:"Use the full verb or the contraction after this pronoun.",link:""},{name:"QuantifierNeedsOf",extends:"sequence",level:"warning",scope:"text",message:"Add `of` in this quantity phrase.",link:""},{name:"QuiteMany",extends:"existence",level:"warning",scope:"text",message:"Use `quite a few` instead of `quite many`.",link:""},{name:"RapidFire",extends:"existence",level:"warning",scope:"text",message:"It is more idiomatic to hypenate `rapid-fire`.",link:""},{name:"ReadsAndWrites",extends:"existence",level:"warning",scope:"text",message:"Did you mean `reads and writes` or `read and write`? If they are main nouns they should probably both be plural (disk reads and writes). If they describe another noun, they should probably both be singular (read and write permissions).",link:""},{name:"RealTrouper",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for someone who perseveres.",link:""},{name:"ReasonForDoing",extends:"sequence",level:"warning",scope:"text",message:"Use 'for' instead of 'of' with 'reason' and progressive verbs.",link:""},{name:"ReasonForDoing2",extends:"sequence",level:"warning",scope:"text",message:"Use 'for' instead of 'of' with 'reason' and progressive verbs.",link:""},{name:"RedundantAcronyms",extends:"substitution",level:"warning",scope:"text",message:"The acronym's last letter already stands for the last word. Use just the acronym or the full phrase.",link:""},{name:"RedundantAcronyms2",extends:"substitution",level:"warning",scope:"text",message:"The acronym's last letter already stands for the last word. Use just the acronym or the full phrase.",link:""},{name:"RedundantAdditiveAdverbs",extends:"sequence",level:"warning",scope:"text",message:"Two additive adverbs together say the same thing twice.",link:""},{name:"RedundantFirsts",extends:"existence",level:"warning",scope:"text",message:"This verb already means the action happened first.",link:""},{name:"RedundantIIRC",extends:"existence",level:"suggestion",scope:"text",message:"`IIRC` already means 'if I recall correctly', so adding 'if' or 'correctly' is redundant.",link:""},{name:"RedundantPretty",extends:"existence",level:"suggestion",scope:"text",message:"Avoid redundancy.",link:""},{name:"RedundantProgressiveComparative",extends:"sequence",level:"warning",scope:"text",message:"This phrasing is redundant; use a direct comparative like `more and more`.",link:""},{name:"RedundantSelf",extends:"existence",level:"warning",scope:"text",message:"Avoid redundancy by using `self` only once.",link:""},{name:"RedundantThat",extends:"existence",level:"suggestion",scope:"text",message:"Consider whether the second `that` adds meaning in this context.",link:""},{name:"RelayOnForRely",extends:"existence",level:"warning",scope:"text",message:"Use `rely on` when you mean depend on something.",link:""},{name:"RifeWith",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for something abundant.",link:""},{name:"RiseTheRanks",extends:"substitution",level:"warning",scope:"text",message:"Did you mean `through the ranks`?",link:""},{name:"RoadMap",extends:"existence",level:"suggestion",scope:"text",message:"Did you mean `road map`?",link:""},{name:"RollerSkated",extends:"sequence",level:"warning",scope:"text",message:"Hyphenate this verb as `roller-skated`.",link:""},{name:"RollerSkated2",extends:"existence",level:"warning",scope:"sentence",message:"Hyphenate this verb as `roller-skated`.",link:""},{name:"RulesOfThumb",extends:"existence",level:"warning",scope:"text",message:"The correct plural is `rules of thumb`.",link:""},{name:"RunIntoProblemsOrTrouble",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %s?",link:""},{name:"SameAs",extends:"existence",level:"warning",scope:"text",message:"Did you mean `same as`?",link:""}
1,{name:"ScantilyClad",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for minimal attire.",link:""},{name:"SendAnEmailTo",extends:"existence",level:"suggestion",scope:"text",message:"Use the shorter verb form.",link:""},{name:"ShootOneselfInTheFoot",extends:"existence",level:"warning",scope:"text",message:"The idiom is `shoot oneself in the foot`.",link:""},{name:"ShutdownVerb",extends:"substitution",level:"warning",scope:"text",message:"Use the verbal phrase `shut down` when an auxiliary pulls it into a predicate.",link:""},{name:"SimilarLike",extends:"existence",level:"warning",scope:"text",message:"Prefer 'similar to' instead of 'similar like'.",link:""},{name:"SimpleGrammatical",extends:"existence",level:"warning",scope:"text",message:"Use `simple grammatical` for correct adjective usage.",link:""},{name:"SimplePastToPastParticiple",extends:"substitution",level:"warning",scope:"text",message:"Use the past participle after a form of `have` or `be`.",link:""},{name:"SinceDuration",extends:"existence",level:"warning",scope:"text",message:"`since` takes a point in time; use `for` with a length of time.",link:""},{name:"SneakingSuspicion",extends:"existence",level:"error",scope:"text",message:"Did you mean `sneaking suspicion`?",link:""},{name:"SneakPeekPreview",extends:"existence",level:"suggestion",scope:"text",message:"Use `peek` for the preview phrase.",link:""},{name:"SomebodyElses",extends:"existence",level:"warning",scope:"text",message:"This should be `somebody else's`?",link:""},{name:"SomeOfThe",extends:"existence",level:"error",scope:"text",message:"Add `of` to form the partitive phrase: `some of the`.",link:""},{name:"SomethingIs",extends:"substitution",level:"warning",scope:"text",message:"Prefer the contraction or full `is` rather than pluralizing this pronoun.",link:""},{name:"SomewhatSomething",extends:"sequence",level:"warning",scope:"text",message:"Consider using `something of a` in more formal writing.",link:""},{name:"SomeWithoutArticle",extends:"sequence",level:"warning",scope:"text",message:"Detects the redundant article in front of `some` and suggests more natural phrasing.",link:""},{name:"SoonerOrLater",extends:"existence",level:"warning",scope:"text",message:"Did you mean `sooner rather than later` or `sooner or later`?",link:""},{name:"SoonToBe",extends:"sequence",level:"warning",scope:"text",message:"Use hyphens when `soon to be` modifies a noun.",link:""},{name:"SoonToBe2",extends:"sequence",level:"warning",scope:"text",message:"Use hyphens when `soon to be` modifies a noun.",link:""},{name:"SoonToBe3",extends:"sequence",level:"warning",scope:"text",message:"Use hyphens when `soon to be` modifies a noun.",link:""},{name:"SoughtAfter",extends:"existence",level:"warning",scope:"text",message:"Did you mean `sought after`?",link:""},{name:"SoughtAfter2",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `sought after`?",link:""},{name:"SpecialAttention",extends:"existence",level:"error",scope:"text",message:"Did you mean `special attention`?",link:""},{name:"SpinalChord",extends:"substitution",level:"error",scope:"text",message:"Drop the `h` after these anatomical or wiring descriptors; the structure is a `cord`.",link:""},{name:"Starving",extends:"existence",level:"suggestion",scope:"text",message:"A more vivid adjective would better convey intense hunger.",link:""},{name:"StateOfTheArt",extends:"existence",level:"warning",scope:"text",message:"Did you mean `state of the art`?",link:""},{name:"StatuteOfLimitations",extends:"existence",level:"error",scope:"text",message:"A `statue` is a sculpture; in legal terms, the correct word is `statute`.",link:""},{name:"StrikeChord",extends:"existence",level:"error",scope:"text",message:"Use the idiom with `chord` when describing a feeling or reaction.",link:""},{name:"SubjectPronoun",extends:"substitution",level:"warning",scope:"text",message:"Put the other person first and use `I` in this compound subject.",link:""},{name:"SufficeItToSay",extends:"existence",level:"warning",scope:"text",message:"`Suffice it to say` is the more standard and more common variant.",link:""},{name:"SupposedTo",extends:"existence",level:"warning",scope:"text",message:"Did you mean `supposed to`?",link:""},{name:"TakeItPersonally",extends:"existence",level:"warning",scope:"text",message:"The more standard, less colloquial form is `take it personally`.",link:""},{name:"ThanksALot",extends:"existence",level:"warning",scope:"text",message:"The indefinite article `a` is required in `thanks a lot`.",link:""},{name:"ThatChallenged",extends:"existence",level:"suggestion",scope:"text",message:"Use `that challenged` for correct relative clause.",link:""},{name:"ThatThis",extends:"existence",level:"error",scope:"text",message:"Did you mean `that this`?",link:""},{name:"The",extends:"existence",level:"error",scope:"text",message:"Did you mean the definite article?",link:""},{name:"TheAnother",extends:"existence",level:"warning",scope:"text",message:"Use `the other` or `another`, not both.",link:""},{name:"TheDifferenceBetween",extends:"existence",level:"warning",scope:"text",message:"The correct word is `difference`, not `different` or `differents`.",link:""},{name:"TheEntiretyOf",extends:"existence",level:"warning",scope:"text",message:"Use `the entirety of` instead of `the entire of`.",link:""},{name:"TheMy",extends:"sequence",level:"warning",scope:"text",message:"Use either the definite article 'the' or the possessive. Using both together is ungrammatical in English.",link:""},{name:"TheMy2",extends:"sequence",level:"warning",scope:"text",message:"Use either the definite article 'the' or the possessive. Using both together is ungrammatical in English.",link:""},{name:"ThenThan",extends:"existence",level:"warning",scope:"text",message:"Use `than` for comparisons.",link:""},{name:"ThenThanMoreLess",extends:"sequence",level:"warning",scope:"text",message:"Use `than` for comparisons.",link:""},{name:"ThePointFor",extends:"substitution",level:"warning",scope:"text",message:"Did you mean `the point of`?",link:""},{name:"ThereAfterCompound",extends:"sequence",level:"warning",scope:"text",message:"This two-word form is likely intended as the single adverb.",link:""},{name:"ThereAfterCompound2",extends:"existence",level:"warning",scope:"text",message:"This two-word form is likely intended as the single adverb.",link:""},{name:"ThereIsAgreement",extends:"sequence",level:"warning",scope:"text",message:"There is disagreement in number between the verb and the noun.",link:""},{name:"ThereIsAgreementContracted",extends:"sequence",level:"warning",scope:"text",message:"There is disagreement in number between the verb and the noun.",link:""},{name:"ThereIsAgreementInverted",extends:"sequence",level:"warning",scope:"text",message:"There is disagreement in number between the verb and the noun.",link:""},{name:"ThereIsAgreementInvertedPast",extends:"sequence",level:"warning",scope:"text",message:"There is disagreement in number between the verb and the noun.",link:""},{name:"ThereIsAgreementPluralBe",extends:"sequence",level:"warning",scope:"text",message:"There is disagreement in number between the verb and the noun.",link:""},{name:"ThereIsAgreementPluralBeInverted",extends:"sequence",level:"warning",scope:"text",message:"There is disagreement in number between the verb and the noun.",link:""},{name:"ThereMissingIsClause",extends:"substitution",level:"warning",scope:"text",message:"This clause usually needs a linking verb after `there`.",link:""},{name:"ThereOwn",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the possessive `their`?",link:""},{name:"ThereOwn2",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the possessive `their`?",link:""},{name:"ThereOwn3",extends:"existence",level:"warning",scope:"sentence",message:"Did you mean the possessive `their`?",link:""},{name:"ThereOwn4",extends:"sequence",level:"warning",scope:"text",message:"Did you mean the possessive `their`?",link:""},{name:"TheTheToThatThe",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `that the` or just `the`?",link:""},{name:"TheWhetherWeather",extends:"existence",level:"suggestion",scope:"text",message:"This phrase likely uses the noun for atmospheric conditions.",link:""},{name:"TheyreToTheir",extends:"substitution",level:"warning",scope:"text",message:"Did you mean `their`?",link:""},{name:"TheyToThem",extends:"substitution",level:"warning",scope:"text",message:"Use `them` when the pronoun follows a preposition or transitive verb.",link:""},{name:"ThieveNoun",extends:"sequence",level:"error",scope:"text",message:"Use `thief` for a single person who steals.",link:""},{name:"ThieveNounPhrases",extends:"existence",level:"error",scope:"text",message:"Use `thief` for a single person who steals.",link:""},{name:"ThingThink",extends:"existence",level:"warning",scope:"text",message:"Did you mean `think`?",link:""},{name:"ThinkKnowOff1",extends:"sequence",level:"warning",scope:"text",message:"This collocation usually takes `of` rather than `off`.",link:""},{name:"ThinkKnowOff2",extends:"sequence",level:"warning",scope:"text",message:"This collocation usually takes `of` rather than `off`.",link:""},{name:"ThisTypeOfThing",extends:"existence",level:"warning",scope:"text",message:"The grammatical number of the determiner and the two nouns must agree.",link:""},{name:"ThoughtProcess",extends:"existence",level:"error",scope:"text",message:"Did you mean `thought process`?",link:""},{name:"ThreatenVerb1",extends:"sequence",level:"warning",scope:"text",message:"Modal verbs followed by `threat` almost always intend the verb `threaten`.",link:""},{name:"ThreatenVerb2",extends:"sequence",level:"warning",scope:"text",message:"Modal verbs followed by `threat` almost always intend the verb `threaten`.",link:""},{name:"ThreatenVerb3",extends:"sequence",level:"warning",scope:"text",message:"Modal verbs followed by `threat` almost always intend the verb `threaten`.",link:""},{name:"ThreatenVerb4",extends:"sequence",level:"warning",scope:"text",message:"Modal verbs followed by `threat` almost always intend the verb `threaten`.",link:""},{name:"ThreatenVerb5",extends:"sequence",level:"warning",scope:"text",message:"Modal verbs followed by `threat` almost always intend the verb `threaten`.",link:""},{name:"ThreatenVerbPhrases",extends:"existence",level:"warning",scope:"text",message:"Modal verbs followed by `threat` almost always intend the verb `threaten`.",link:""},{name:"ThriveOn",extends:"substitution",level:"warning",scope:"text",message:"Did you mean `thrive on`?",link:""}
1,{name:"ThrowAway",extends:"sequence",level:"warning",scope:"text",message:"Use `throw away` or `threw away`, depending on the tense you need.",link:""},{name:"TickingTimeClock",extends:"existence",level:"warning",scope:"text",message:"Use `ticking time bomb` for disastrous consequences, otherwise avoid redundancy with just `ticking clock`.",link:""},{name:"ToBackOut",extends:"existence",level:"warning",scope:"text",message:"Separate `backout` into the verb `back out` after `to`.",link:""},{name:"ToDoHyphen",extends:"existence",level:"suggestion",scope:"text",message:"Hyphenate `to-do`.",link:""},{name:"ToGreatLengths",extends:"existence",level:"suggestion",scope:"text",message:"The idiom is to go `to great lengths`.",link:""},{name:"ToLoseTooLoose",extends:"existence",level:"error",scope:"text",message:"For `not to win`, use `to lose`. For `not tight enough`, use `too loose`.",link:""},{name:"TomorrowPossessiveModifier1",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive form when this time word modifies a following noun phrase.",link:""},{name:"TomorrowPossessiveModifier3",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive form when this time word modifies a following noun phrase.",link:""},{name:"TomorrowPossessiveModifier4",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive form when this time word modifies a following noun phrase.",link:""},{name:"TomorrowPossessiveModifier5",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive form when this time word modifies a following noun phrase.",link:""},{name:"TomorrowPossessiveModifier6",extends:"sequence",level:"warning",scope:"text",message:"Use the possessive form when this time word modifies a following noun phrase.",link:""},{name:"TongueInCheek",extends:"existence",level:"suggestion",scope:"text",message:"Use `tongue in cheek` for the idiom.",link:""},{name:"ToSomeDegree",extends:"existence",level:"error",scope:"text",message:"The correct preposition in this phrase is 'to', not 'in'.",link:""},{name:"ToTheMannerBorn",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for being naturally suited to something.",link:""},{name:"Touristic",extends:"sequence",level:"warning",scope:"text",message:"The word `touristic` is rarely used by native speakers.",link:""},{name:"Towards",extends:"existence",level:"suggestion",scope:"text",message:"Use `towards` without the preceding `to`.",link:""},{name:"ToWorryAbout",extends:"existence",level:"suggestion",scope:"text",message:"Did you mean the progressive form?",link:""},{name:"TrialAndError",extends:"existence",level:"error",scope:"text",message:"You misspelled `trial`.",link:""},{name:"TrueToWord",extends:"substitution",level:"suggestion",scope:"text",message:"Replace the plural `words` with the idiomatic singular form when someone stays true to a promise.",link:""},{name:"TruthToTheFact",extends:"existence",level:"suggestion",scope:"text",message:"A `fact` is something that is true. Did you mean a `claim`, `story`, `allegation`, or etc.?",link:""},{name:"TryOnesHandAt",extends:"sequence",level:"warning",scope:"text",message:"This idiom uses the singular `hand`.",link:""},{name:"TryOnesLuck",extends:"sequence",level:"warning",scope:"text",message:"`Try out` is a different idiom than `try one's luck`",link:""},{name:"TuffEnough",extends:"substitution",level:"error",scope:"text",message:"Swap `tuff` for `tough` when it describes strength or difficulty followed by 'enough' or 'like'.",link:""},{name:"TurnItOff",extends:"existence",level:"error",scope:"text",message:"Did you mean `turn it off`?",link:""},{name:"Unless",extends:"existence",level:"warning",scope:"text",message:"`Unless if` is not idiomatic English. `Unless`, `except if`, and `except when` express a condition that is true in all cases except one.",link:""},{name:"VeryKnown",extends:"existence",level:"warning",scope:"text",message:"Replace `very known` with the idiomatic phrasing that mentions recognition explicitly.",link:""},{name:"VeryLess",extends:"existence",level:"warning",scope:"text",message:"English doesn't use `very` with `less`.",link:""},{name:"VeryUnique",extends:"sequence",level:"warning",scope:"text",message:"`Unique` is absolute, so consider using `unique` alone or a more precise adjective such as `special`, `rare`, or `unusual`.",link:""},{name:"ViceVersa",extends:"substitution",level:"warning",scope:"text",message:'The expression "vice versa" is spelled 
1without hyphens.',link:""},{name:"WantBe",extends:"existence",level:"suggestion",scope:"text",message:"Did you mean `won't be` or `want to be`?",link:""},{name:"WasAloud",extends:"sequence",level:"warning",scope:"text",message:"Did you mean `{verb} allowed`?",link:""},{name:"WasComprisedOf",extends:"existence",level:"suggestion",scope:"text",message:"Many style guides treat this wording as nonstandard; consider a clearer construction.",link:""},{name:"WaveFunction",extends:"existence",level:"suggestion",scope:"text",message:"Did you mean `wave function`?",link:""},{name:"WebScraping",extends:"substitution",level:"warning",scope:"text",message:"Use %s: `scrape` means to extract, `scrap` means to discard.",link:""},{name:"WellBeing",extends:"existence",level:"warning",scope:"text",message:"Use the hyphenated form for `well-being`.",link:""},{name:"WellEducated",extends:"substitution",level:"warning",scope:"text",message:"Prefer `well-educated` for this compound.",link:""},{name:"WellKept",extends:"existence",level:"warning",scope:"text",message:"`Highly-kept` is not standard. To describe secrets, `well-kept` is the most used phrase.",link:""},{name:"WereWhere",extends:"substitution",level:"warning",scope:"text",message:"Did you mean %s?",link:""},{name:"Whereas",extends:"sequence",level:"warning",scope:"text",message:"`Whereas` is commonly mistaken for `where as`.",link:""},{name:"WhetYourAppetite",extends:"existence",level:"error",scope:"text",message:"Use the correct phrase for stimulating desire.",link:""},{name:"WidelyAccepted",extends:"sequence",level:"warning",scope:"text",message:"Use the adverb `widely` in this context. For example, `widely accepted` or `widely used` is standard usage.",link:""},{name:"WillContain",extends:"existence",level:"warning",scope:"text",message:"Did you mean `will contain`?",link:""},{name:"WillNonLemma",extends:"sequence",level:"warning",scope:"text",message:"`Will` and `shall` should be followed by a verb in its base form.",link:""},{name:"WinPrize",extends:"substitution",level:"warning",scope:"text",message:"Perhaps you meant the word for an award.",link:""},{name:"WishCould1",extends:"sequence",level:"warning",scope:"text",message:"Use 'could' instead of 'can' after 'wish'.",link:""},{name:"WishCould2",extends:"sequence",level:"warning",scope:"text",message:"Use 'could' instead of 'can' after 'wish'.",link:""},{name:"WithoutOut",extends:"existence",level:"error",scope:"text",message:"Drop the duplicated `out` when it follows `without`.",link:""},{name:"WokVerbTypo1",extends:"sequence",level:"error",scope:"text",message:"Did you mean `work`?",link:""},{name:"WokVerbTypo2",extends:"sequence",level:"error",scope:"text",message:"Did you mean `work`?",link:""},{name:"WokVerbTypo3",extends:"sequence",level:"error",scope:"text",message:"Did you mean `work`?",link:""},{name:"WokVerbTypo4",extends:"sequence",level:"error",scope:"text",message:"Did you mean `work`?",link:""},{name:"WokVerbTypoPhrases",extends:"existence",level:"error",scope:"text",message:"Did you mean `work`?",link:""},{name:"WorstCaseScenario",extends:"existence",level:"warning",scope:"text",message:"Hyphenate `worst-case`.",link:""},{name:"WorthToDo",extends:"sequence",level:"warning",scope:"text",message:"Use the `gerund` of the verb, the form that ends in `-ing`",link:""},{name:"WouldNeverHave",extends:"substitution",level:"warning",scope:"text",message:"For a more standard style, consider using %s.",link:""},{name:"WrongApostrophe",extends:"substitution",level:"warning",scope:"text",message:"Did you mean `{replacement_str}`?",link:""},{name:"WroughtIron",extends:"existence",level:"error",scope:"text",message:"Prefer the standard term `wrought iron`.",link:""},{name:"YeaToYeah",extends:"existence",level:"error",scope:"text",message:"If you mean the informal word for `yes` and not the biblical or legalistic `yea`, the standard spelling is `yeah`.",link:""},{name:"YehToYeah",extends:"existence",level:"error",scope:"text",message:"If you mean the informal word for `yes`, the standard spelling is `yeah`.",link:""},{name:"YourOutClauseAgreement",extends:"sequence",level:"warning",scope:"text",message:"Use the contraction for `you are` in this clause.",link:""},{name:"YourOutClauseAgreementPhrases",extends:"existence",level:"warning",scope:"text",message:"Use the contraction for `you are` in this clause.",link:""},{name:"YourPredicateAdjective",extends:"substitution",level:"warning",scope:"text",message:"Use the contraction `you're` (you are) before predicate adjectives instead of the possessive `your` or its variants.",link:""},{name:"Yourself",extends:"sequence",level:"suggestion",scope:"text",message:"Did you mean the closed compound `yourself`?",link:""}],assets:[{kind:"dictionary",name:"harper.dict"}],valeVersion:""}
1,{name:"Hugo",description:"Adds support for Hugo shortcodes and other non-standard markup.",homepage:"https://github.com/vale-cli/Hugo",url:"https://github.com/vale-cli/Hugo/releases/latest/download/Hugo.zip",logo:"https://github.com/gohugoio.png",tags:["config"],host:"github",site:"vale-cli/Hugo",repo:"vale-cli/Hugo",stars:7,downloads:124876,version:"v0.4.0",released:"2026-08-28",rules:[],assets:[],valeVersion:""},{name:"Joblint",description:"Test tech job posts for issues with sexism, culture, expectations, and recruiter fails.",homepage:"https://github.com/vale-cli/Joblint",url:"https://github.com/vale-cli/Joblint/releases/latest/download/Joblint.zip",logo:"https://github.com/npm.png",tags:["style"],host:"github",site:"vale-cli/Joblint",repo:"vale-cli/Joblint",stars:14,downloads:131115,version:"v0.4.1",released:"2021-04-07",rules:[{name:"Acronyms",extends:"substitution",level:"warning",scope:"text",message:"Use '%s' instead of '%s'",link:""},{name:"Benefits",extends:"existence",level:"warning",scope:"text",message:"Avoid using '%s'",link:""},{name:"Bro",extends:"existence",level:"error",scope:"text",message:"Avoid using '%s'",link:""},{name:"Competitive",extends:"existence",level:"suggestion",scope:"text",message:"Avoid using '%s'",link:""},{name:"Derogatory",extends:"existence",level:"error",scope:"text",message:"Avoid using '%s'",link:""},{name:"DevEnv",extends:"existence",level:"suggestion",scope:"text",message:"Don't specify a development environment unless absolutely necessary.",link:""},{name:"DumbTitles",extends:"existence",level:"warning",scope:"text",message:"Avoid using '%s'",link:""},{name:"Gendered",extends:"existence",level:"error",scope:"text",message:"Avoid using '%s'",link:""},{name:"Hair",extends:"existence",level:"error",scope:"text",message:"Avoid using '%s'",link:""},{name:"LegacyTech",extends:"existence",level:"suggestion",scope:"text",message:"Avoid using '%s'",link:""},{name:"Meritocracy",extends:"existence",level:"suggestion",scope:"text",message:"Reevaluate the use of '%s'",link:""},{name:"Profanity",extends:"existence",level:"warning",scope:"text",message:"Remove '%s'",link:""},{name:"Reassure",extends:"existence",level:"suggestion",scope:"text",message:"Avoid using '%s'",link:""},{name:"Sexualised",extends:"existence",level:"warning",scope:"text",message:"Avoid using '%s'",link:""},{name:"Starter",extends:"existence",level:"suggestion",scope:"text",message:"Avoid using '%s'",link:""},{name:"TechTerms",extends:"substitution",level:"error",scope:"text",message:"Use '%s' instead of '%s'",link:""},{name:"Visionary",extends:"existence",level:"warning",scope:"text",message:"Avoid using '%s'",link:""}],assets:[],valeVersion:">=1.0.0"},{name:"Journals",description:"Scientific manuscripts: a core of conventions for units, statistics, figures, and citations, the IMRaD structure, the Nature and PLOS ONE author guidelines, and the CONSORT, STROBE, and PRISMA checklists.",homepage:"https://github.com/jdkato/journals",url:"https://github.com/jdkato/journals/releases/latest/download/Journals.zip",logo:"https://github.com/jdkato.png",tags:["style"],host:"github",site:"jdkato/journals",repo:"jdkato/journals",stars:0,downloads:33,version:"v0.1.0",released:"2026-09-17",rules:[{name:"Abbreviations",extends:"existence",level:"suggestion",scope:"raw",message:"'%s' is defined but used fewer than three times; write it out instead.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-abbreviations"},{name:"Abstract",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("Abstract"),h2:contains("Abstract")))',message:"An Abstract section.",link:""},{name:"AbstractAbbreviations",extends:"existence",level:"suggestion",scope:'doc(section:haschild(h1:contains("Abstract"),h2:contains("Abstract")))',message:"Avoid abbreviations in the abstract: '%s'.",link:""},{name:"AbstractCitations",extends:"existence",level:"warning",scope:'doc(section:haschild(h1:contains("Abstract"),h2:contains("Abstract")))',message:"The abstract stands alone; cite in the body, not '%s'.",link:""},{name:"AbstractLength",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Abstract"),h2:contains("Abstract")))',message:"Abstract runs %d words.",link:""},{name:"Acknowledgements",extends:"existence",level:"suggestion",scope:'doc(section:haschild(h1:contains("cknowledg"),h2:contains("cknowledg")))',message:"Thank for assistance, not 'excellent' assistance; cut '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"Acronyms",extends:"Std.Abbreviations.Acronyms",level:"suggestion",scope:"text",message:"",link:""},{name:"Alpha",extends:"occurrence",level:"suggestion",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods state the threshold for significance (alpha).",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-statistical-reporting"},{name:"Analyzed",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Results"),h2:contains("Results")))',message:"Results give the number analyzed in each group and the analysis population (items 19 and 21).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Availability",extends:"occurrence",level:"warning",scope:"raw",message:"Say which data, code, and materials are available and where (item 27).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Baseline",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Results"),h2:contains("Results")))',message:"Results present baseline characteristics for each group (item 18).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Bias",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods describe efforts to address potential sources of bias (item 9).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Blinding",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods say who was blinded, or that the trial was open label (item 13).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Certainty",extends:"occurrence",level:"warning",scope:"raw",message:"Assess and report the certainty of evidence for each outcome (items 15 and 22).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Citations",extends:"existence",level:"warning",scope:"text",message:"PLOS cites by number in square brackets, not '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-references"},{name:"Citations",extends:"existence",level:"warning",scope:'~doc(section:haschild(h1:contains("References"),h2:contains("References")))',message:"Nature sets reference numbers as superscripts, not in brackets: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"CodeAvailability",extends:"occurrence",level:"warning",scope:"raw",message:"A Code Availability statement.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"Concealment",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods describe how allocation was concealed until assignment (item 12a).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Conflicts",extends:"occurrence",level:"warning",scope:"raw",message:"Declare competing interests (item 5b).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Conflicts",extends:"occurrence",level:"warning",scope:"raw",message:"Declare competing interests (item 26).",link:"https://doi.org/10.1136/bmj.n71"},{name:"DataAvailability",extends:"occurrence",level:"error",scope:"raw",message:"A Data Availability Statement.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-data-availability"},{name:"DataAvailability",extends:"occurrence",level:"error",scope:"raw",message:"A Data Availability statement.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"DataCollection",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods describe how data were collected from reports (item 9).",link:"https://doi.org/10.1136/bmj.n71"},{name:"DataPlural",extends:"existence",level:"suggestion",scope:"text",message:"'data' is plural in a manuscript: 'data are', not '%s'.",link:""},{name:"DataSharing",extends:"occurrence",level:"warning",scope:"raw",message:"State whether and where participant-level data and code are available (item 4).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"DataSources",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods give the sources of data and the methods of measurement (item 8).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Degree",extends:"existence",level:"suggestion",scope:"text",message:"A single space between the number and the unit: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"DescriptiveData",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Results"),h2:contains("Results")))',message:"Results give the characteristics of participants (item 14).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Discussion",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("Discussion"),h2:contains("Discussion")))',message:"A Discussion section.",link:""},{name:"DoubleHedge",extends:"existence",level:"suggestion",scope:"text",message:"One hedge is enough: '%s'.",link:""},{name:"EffectMeasures",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods specify the effect measure for each outcome (item 12).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Eligibility",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods state the eligibility criteria for participants (item 6a).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Eligibility",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods specify the inclusion and exclusion criteria (item 5).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Eligibility",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods give the eligibility criteria and how participants were selected (item 6).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"EtAl",extends:"substitution",level:"warning",scope:"text",message:"Write '%s', not '%s'.",link:""},{name:"Ethics",extends:"existence",level:"error",scope:"raw",message:"The study has human or animal subjects; name the committee that approved it.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-
1human-subjects-research"},{name:"Excluded",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Results"),h2:contains("Results")))',message:"Results cite the studies that looked eligible but were excluded, and say why (item 16b).",link:"https://doi.org/10.1136/bmj.n71"},{name:"ExtendedData",extends:"substitution",level:"warning",scope:"text",message:"Cite an online-only figure as '%s', not '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"FigureAbbreviation",extends:"consistency",level:"suggestion",scope:"text",message:"Inconsistent figure label: '%s'.",link:""},{name:"FigureLabel",extends:"substitution",level:"warning",scope:"text",message:"Cite a figure as '%s', not '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-figures-and-tables"},{name:"FigureLabel",extends:"substitution",level:"warning",scope:"text",message:"Cite a figure as '%s', not '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"FlowDiagram",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("Results"),h2:contains("Results")))',message:"Results describe the search and selection, ideally with a flow diagram (item 16a).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Footnotes",extends:"existence",level:"error",scope:"raw",message:"Footnotes are not permitted; move '%s' into the text.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-manuscript-organization"},{name:"Funding",extends:"occurrence",level:"warning",scope:"raw",message:"Name the sources of funding and their role (item 5a).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Funding",extends:"occurrence",level:"warning",scope:"raw",message:"Describe the sources of support and the funders' role (item 25).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Funding",extends:"occurrence",level:"warning",scope:"raw",message:"Give the source of funding and the funders' role (item 22).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Generalizability",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Discussion"),h2:contains("Discussion")))',message:"Discussion addresses the generalizability of the results (item 21).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Harms",extends:"occurrence",level:"warning",scope:"raw",message:"Describe how harms were assessed and report them (items 15 and 27).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Headings",extends:"existence",level:"warning",scope:"heading.h5, heading.h6",message:"PLOS allows three heading levels below the title: '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-manuscript-organization"},{name:"HereWeShow",extends:"occurrence",level:"suggestion",scope:"text & doc(h1 + p)",message:"Introduce the main conclusion with 'Here we show' or an equivalent.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"Heterogeneity",extends:"occurrence",level:"warning",scope:"raw",message:"Describe how heterogeneity was explored and report it (items 13e and 20c).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Hype",extends:"existence",level:"suggestion",scope:"text",message:"Let the result carry the weight; cut '%s'.",link:""},{name:"InformationSources",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods name the sources searched and the date last searched (item 6).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Intensifiers",extends:"existence",level:"suggestion",scope:"text",message:"Intensifier '%s' adds nothing a number would not.",link:""},{name:"Introduction",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("Introduction"),h2:contains("Introduction")))',message:"An Introduction section.",link:""},{name:"LabelCase",extends:"existence",level:"warning",scope:"text",message:"Capitalize a numbered label: '%s'.",link:""},{name:"Legends",extends:"occurrence",level:"warning",scope:'paragraph & doc(section:haschild(h1:contains("egend"),h2:contains("egend")))',message:"A figure legend runs %d words; fewer than 300 each.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"Limitations",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Discussion"),h2:contains("Discussion")))',message:"Discussion addresses the trial's limitations (item 28).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Limitations",extends:"occurrence",level:"suggestion",scope:'doc(section:haschild(h1:contains("Discussion"),h2:contains("Discussion")))',message:"The Discussion names the study's limitations.",link:""},{name:"Limitations",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Discussion"),h2:contains("Discussion")))',message:"Discussion addresses the limitations of the evidence and of the review process (items 23b and 23c).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Limitations",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Discussion"),h2:contains("Discussion")))',message:"Discussion addresses the study's limitations, including sources of bias (item 19).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"MainResults",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("Results"),h2:contains("Results")))',message:"Results give adjusted estimates with their precision, such as a confidence interval (item 16).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Methods",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"A Methods section: a heading containing 'Method' opens it.",link:""},{name:"Methods",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods runs %d words; typically no more than 3,000.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"MissingData",extends:"occurrence",level:"suggestion",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods explain how missing data were addressed (item 12c).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Participants",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("Results"),h2:contains("Results")))',message:"Results report the numbers of participants at each stage (item 13).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Placeholder",extends:"existence",level:"error",scope:"text",message:"Placeholder left in the manuscript: '%s'.",link:""},{name:"Positional",extends:"existence",level:"warning",scope:"text",message:"Cite the figure by number, not by position: '%s'.",link:""},{name:"PrimaryOutcome",extends:"occurrence",level:"error",scope:"raw",message:"Define the primary outcome and report it (items 14 and 26).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Protocol",extends:"occurrence",level:"warning",scope:"raw",message:"Say where the protocol and statistical analysis plan can be accessed (item 3).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Protocol",extends:"occurrence",level:"warning",scope:"raw",message:"Say where the protocol can be accessed, or that one was not prepared (item 24b).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Prove",extends:"existence",level:"suggestion",scope:"text",message:"Results show or support; '%s' claims more than data can.",link:""},{name:"PublicInvolvement",extends:"occurrence",level:"suggestion",scope:"raw",message:"Describe how patients or the public were involved, or that they were not (item 8).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"PValueCase",extends:"consistency",level:"warning",scope:"text",message:"Inconsistent case for the p-value: '%s'.",link:""},{name:"PValues",extends:"existence",level:"warning",scope:"text",message:"Report the exact p-value at or above 0.001, not '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-statistical-reporting"},{name:"PValueSpacing",extends:"existence",level:"suggestion",scope:"text",message:"Space the operator: 'p = 0.03', not '%s'.",link:""},{name:"PValueZero",extends:"existence",level:"warning",scope:"text",message:"Report '%s' as 'p < 0.001'; a p-value is never zero.",link:""},{name:"Randomization",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods describe how the allocation sequence was generated (item 11).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Ranges",extends:"existence",level:"suggestion",scope:"text",message:"Use an en dash in a range: '%s'.",link:""},{name:"ReferenceAuthors",extends:"existence",level:"warning",scope:'list & doc(section:haschild(h1:contains("References"),h2:contains("References")))',message:"List the first six authors, then et al.: '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-references"},{name:"ReferenceAuthors",extends:"existence",level:"warning",scope:'list & doc(section:haschild(h1:contains("References"),h2:contains("References")))',message:"Past five authors, give the first author et al.: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"References",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("References"),h2:contains("References")))',message:"A References section.",link:""},{name:"References",extends:"existence",level:"suggestion",scope:'list & doc(section:haschild(h1:contains("References"),h2:contains("References")))',message:"Vancouver style ends 'Journal. Year;Vol(Issue):pages.', not '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-references"},{name:"References",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("References"),h2:contains("References")))',message:"%d references; Articles typically have no more than 50.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"ReferenceShape",extends:"existence",level:"suggestion",scope:'list & doc(section:haschild(h1:contains("References"),h2:contains("References")))',message:"A Nature reference ends with the year in parentheses: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"Registration",extends:"occurrence",level:"error",scope:"raw",message:"Give the trial registry and registration number (item 2).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Registration",extends:"occurrence",level:"warning",scope:"raw",message:"Give the registration and registry, or say the review was not registered (item 24a).",link:"https://doi.org/10.1136/bmj.n71"},{name:"ReportingBias",extends:"occurrence",level:"warning",scope:"raw",message:"Assess the risk of bias from missing results and report it (items 14 and 21).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Results",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("Results"),h2:contains("Results")))',message:"A Results section.",link:""},{name:"RiskOfBias",extends:"occurrence",level:"error",scope:"raw",message:"Assess and report the risk of bias in included 
1studies (items 11 and 18).",link:"https://doi.org/10.1136/bmj.n71"},{name:"SampleSize",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods say how the sample size was determined (item 16).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"SampleSize",extends:"occurrence",level:"suggestion",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods give the sample sizes and how they were determined.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-statistical-reporting"},{name:"SearchStrategy",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods present the full search strategy for at least one source (item 7).",link:"https://doi.org/10.1136/bmj.n71"},{name:"SelectionProcess",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods say how many reviewers screened each record and whether they worked independently (item 8).",link:"https://doi.org/10.1136/bmj.n71"},{name:"SentenceNumeral",extends:"existence",level:"warning",scope:"text",message:"Spell out a number that starts a sentence, or recast it: '%s'.",link:""},{name:"Setting",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods describe the setting, locations, and dates (item 5).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Significant",extends:"existence",level:"suggestion",scope:"sentence",message:"'%s' without a statistic in the sentence: give the test, or say 'large'.",link:""},{name:"Software",extends:"occurrence",level:"suggestion",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods name the software package and its version.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-statistical-reporting"},{name:"Species",extends:"existence",level:"warning",scope:"raw",message:"Write a species name in italics: '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-nomenclature"},{name:"StatisticalMethods",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods describe the statistical methods, including those for confounding (item 12).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"StudySize",extends:"occurrence",level:"warning",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods explain how the study size was arrived at (item 10).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Subheadings",extends:"existence",level:"warning",scope:"heading.h2, heading.h3",message:"Subheading runs past 40 characters: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"Summary",extends:"occurrence",level:"warning",scope:"text & doc(h1 + p)",message:"The summary paragraph runs %d words; ideally no more than 200.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"SummaryContent",extends:"existence",level:"suggestion",scope:"text & doc(h1 + p)",message:"The summary paragraph avoids numbers, abbreviations, and measurements unless essential: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"SupportingInformation",extends:"existence",level:"warning",scope:"text",message:"Name supporting information 'S1 Fig', 'S1 Table', 'S1 Appendix': '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-supporting-information"},{name:"Symbols",extends:"substitution",level:"suggestion",scope:"text",message:"Use '%s', not '%s'.",link:""},{name:"Synthesis",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods describe the synthesis methods (item 13).",link:"https://doi.org/10.1136/bmj.n71"},{name:"TableLabel",extends:"substitution",level:"warning",scope:"text",message:"Cite a table as '%s', not '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-figures-and-tables"},{name:"Thousands",extends:"existence",level:"suggestion",scope:"text",message:"Separate thousands with commas: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"Title",extends:"occurrence",level:"error",scope:"heading.h1",message:"Identify the study as a randomized trial in the title (item 1).",link:"https://doi.org/10.1371/journal.pmed.1004587"},{name:"Title",extends:"occurrence",level:"error",scope:"heading.h1",message:"Identify the report as a systematic review in the title (item 1).",link:"https://doi.org/10.1136/bmj.n71"},{name:"Title",extends:"existence",level:"error",scope:"heading.h1",message:"Title runs past 250 characters.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-title"},{name:"Title",extends:"occurrence",level:"error",scope:"heading.h1",message:"Indicate the study's design with a common term in the title (item 1).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Title",extends:"existence",level:"error",scope:"heading.h1",message:"Title runs past 75 characters, including space
1s.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"TitleAbbreviations",extends:"existence",level:"suggestion",scope:"heading.h1",message:"Avoid specialist abbreviations in the title: '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-title"},{name:"TitleCase",extends:"capitalization",level:"warning",scope:"heading.h1",message:"Write the title in sentence case: '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-title"},{name:"TitleContent",extends:"existence",level:"warning",scope:"heading.h1",message:"A Nature title avoids numbers, acronyms, abbreviations, and punctuation: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"UnitSpacing",extends:"existence",level:"warning",scope:"text",message:"Put a space between the number and the unit: '%s'.",link:"https://www.nature.com/nature/for-authors/formatting-guide"},{name:"UnitSymbols",extends:"substitution",level:"warning",scope:"text",message:"Write the unit as '%s', not '%s'.",link:"https://journals.plos.org/plosone/s/submission-guidelines#loc-nomenclature"},{name:"Variables",extends:"occurrence",level:"error",scope:'doc(section:haschild(h1:contains("ethod"),h2:contains("ethod")))',message:"Methods define the outcomes, exposures, predictors, and confounders (item 7).",link:"https://doi.org/10.1371/journal.pmed.0040296"},{name:"Wordy",extends:"substitution",level:"suggestion",scope:"text",message:"Use '%s' instead of '%s'.",link:"https://www.plainlanguage.gov/guidelines/words/use-simple-words-phrases/"}],assets:[{kind:"view",name:"Notebook",engine:"dasel",scopes:["cell"]},{kind:"vocabulary",name:"Journals",accept:149,reject:0}],valeVersion:">=3.22.0"},{name:"A11y",description:"Accessible writing: alt text, link text, heading structure, table headers, instructions that rely on color or position, a reading grade per paragraph, and an inclusive-language word list, from the parts of WCAG 2.2 that live in the text.",homepage:"https://github.com/jdkato/a11y",url:"https://github.com/jdkato/a11y/releases/latest/download/A11y.zip",logo:"https://github.com/jdkato.png",tags:["style"],host:"github",site:"jdkato/a11y",repo:"jdkato/a11y",rules:[{name:"Ableist",extends:"substitution",level:"suggestion",scope:"text",message:"Consider '%s' instead of '%s'.",link:""},{name:"AltEmpty",extends:"existence",level:"warning",scope:"raw.md",message:`An image with no alt text. Describe what it shows, or, if it's decorative, write it as an HTML img with alt="".`,link:"https://www.w3.org/WAI/tutorials/images/decision-tree/"},{name:"AltFileName",extends:"existence",level:"warning",scope:"alt",message:"Alt text '%s' is a file name. Describe the image.",link:"https://webaim.org/techniques/alttext/"},{name:"AltLength",extends:"metric",level:"suggestion",scope:"alt",message:"Alt text of %s characters. Keep it under 125, and put the detail in the body or a caption.",link:"https://www.w3.org/WAI/tutorials/images/complex/"},{name:"AltMissing",extends:"existence",level:"error",scope:"raw",message:'An img without an alt attribute. Describe it, or mark it decorative with alt="".',link:"https://www.w3.org/WAI/tutorials/images/decision-tree/"},{name:"AltPlaceholder",extends:"existence",level:"warning",scope:"alt",message:"Alt text '%s' describes nothing. Say what the image shows.",link:"https://webaim.org/techniques/alttext/"},{name:"AltRedundant",extends:"existence",level:"suggestion",scope:"alt",message:"Alt text opens with '%s'. A screen reader already says it's an image; start with what it shows.",link:"https://webaim.org/techniques/alttext/"},{name:"Gendered",extends:"substitution",level:"suggestion",scope:"text",message:"Consider '%s' instead of '%s'.",link:""},{name:"Grade",extends:"metric",level:"suggestion",scope:"paragraph",message:"This paragraph reads at grade %s. The reading-level target is about grade 9; shorter sentences and plainer words bring it down.",link:"https://www.w3.org/WAI/WCAG22/Understanding/reading-level"},{name:"HeadingLength",extends:"occurrence",level:"suggestion",scope:"heading",message:"%d words in a heading. Keep it short enough to skim.",link:"https://www.w3.org/WAI/WCAG22/Understanding/headings-and-labels"},{name:"HeadingMultiple",extends:"metric",level:"suggestion",scope:"text",message:"%s top-level headings. A page has one; the rest are sections.",link:"https://www.w3.org/WAI/tutorials/page-structure/headings/"},{name:"HeadingSkip",extends:"existence",level:"error",scope:"doc(section:has(> h1) > section:has(> h3)), doc(section:has(> h1) > section:has(> h4)), doc(section:has(> h1) > section:has(> h5)), doc(section:has(> h1) > section:has(> h6)), doc(section:has(> h2) > section:has(> h4)), doc(section:has(> h2) > section:has(> h5)), doc(section:has(> h2) > section:has(> h6)), doc(section:has(> h3) > section:has(> h5)), doc(section:has(> h3) > section:has(> h6)), doc(section:has(> h4) > section:has(> h6))",message:"This heading skips a level. Screen reader users navigate by heading level; use the next one down.",link:"https://www.w3.org/WAI/tutorials/page-structure/headings/"},{name:"LinkGeneric",extends:"existence",level:"warning",scope:"link",message:"'%s' says nothing about where the link goes. Name the page or the action.",link:"https://www.w3.org/WAI/WCAG22/Understanding/link-purpose-in-context"},{name:"LinkURL",extends:"existence",level:"warning",scope:"raw",message:"A URL as link text. A screen reader spells it out; name the page instead.",link:"https://www.w3.org/WAI/WCAG22/Understanding/link-purpose-in-context"},{name:"Loaded",extends:"substitution",level:"suggestion",scope:"text",message:"Consider '%s' instead of '%s'.",link:""},{name:"Sensory",extends:"existence",level:"suggestion",scope:"text",message:"'%s' points by color, shape, or position. Name the control, or add a label.",link:"https://www.w3.org/WAI/WCAG22/Understanding/sensory-characteristics"},{name:"Sentence",extends:"occurrence",level:"suggestion",scope:"sentence",message:"%d words in one sentence. Split it.",link:"https://www.w3.org/WAI/WCAG22/Understanding/reading-level"},{name:"Shouting",extends:"existence",level:"suggestion",scope:"text",message:"'%s' is in all caps. Use emphasis markup, which a screen reader can announce.",link:""},{name:"TableHeader",extends:"existence",level:"error",scope:"doc(table:not(:has(th)))",message:"A table without a header row. A screen reader announces the header with each cell; give the first row th cells.",link:"https://www.w3.org/WAI/tutorials/tables/"}],assets:[],valeVersion:">=3.23.0"},{name:"Comments",description:"The comments in code: Go doc comments, Javadoc, and KDoc conventions, plus owned TODOs and no commented-out code in any language Vale extracts comments from.",homepage:"https://github.com/jdkato/comments",url:"https://github.com/jdkato/comments/releases/latest/download/Comments.zip",logo:"https://github.com/jdkato.png",tags:["style"],host:"github",site:"jdkato/comments",repo:"jdkato/comments",rules:[{name:"Code",extends:"existence",level:"suggestion",scope:"comment",message:"Commented-out code. Delete it; version control remembers.",link:""},{name:"Deprecated",extends:"existence",level:"warning",scope:"comment.go",message:"Mark deprecation with a 'Deprecated: ' paragraph, which the tools read.",link:"https://go.dev/wiki/Deprecated"},{name:"EmptyTag",extends:"existence",level:"error",scope:"comment.block.java",message:"'%s' says nothing. Describe it, or drop the tag.",link:"https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html"},{name:"EmptyTag",extends:"existence",level:"error",scope:"comment.block.kt",message:"'%s' says nothing. Describe it, or drop the tag.",link:"https://kotlinlang.org/docs/kotlin-doc.html"},{name:"Markers",extends:"substitution",level:"suggestion",scope:"comment",message:"Use 'TODO(name):' instead of '%s', so the note is collected with the rest.",link:""},{name:"Package",extends:"existence",level:"warning",scope:"comment.go",message:"A package comment reads 'Package name ...'.",link:"https://go.dev/doc/comment#package"},{name:"Sentence",extends:"existence",level:"warning",scope:"comment.go",message:"A doc comment is a complete sentence: end it with a period.",link:"https://go.dev/doc/comment"},{name:"Summary",extends:"existence",level:"warning",scope:"comment.block.java",message:"The first sentence is the summary the tools show; end it with a period.",link:"https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html"},{name:"Summary",extends:"existence",level:"warning",scope:"comment.block.kt",message:"The first sentence is the summary the tools show; end it with a period.",link:"https://kotlinlang.org/docs/kotlin-doc.html"},{name:"TagOrder",extends:"existence",level:"warning",scope:"comment.block.java",message:"Order the tags @param, @return, then @throws.",link:"https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html"},{name:"This",extends:"existence",level:"warning",scope:"comment.block.java",message:"Say what it does, not '%s'.",link:"https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html"},{name:"This",extends:"existence",level:"warning",scope:"comment.go",message:"Start with the name it documents, not '%s'.",link:"https://go.dev/doc/comment#func"},{name:"This",extends:"existence",level:"warning",scope:"comment.block.kt",message:"Say what it does, not '%s'.",link:"https://kotlinlang.org/docs/kotlin-doc.html"},{name:"Todo",extends:"existence",level:"warning",scope:"comment",message:"'%s' names no owner. Write TODO(name): or TODO(#issue): so it can be followed up.",link:"https://google.github.io/styleguide/go/best-practices#todos"}],assets:[],valeVersion:">=3.23.0"}
1,{name:"Diataxis",description:"The four kinds of documentation in Diátaxis, each checked against its job: tutorials that walk, how-to guides that reach a goal, reference that describes, explanation that answers why.",homepage:"https://github.com/jdkato/diataxis",url:"https://github.com/jdkato/diataxis/releases/latest/download/Diataxis.zip",logo:"https://github.com/jdkato.png",tags:["style"],host:"github",site:"jdkato/diataxis",repo:"jdkato/diataxis",rules:[{name:"Examples",extends:"occurrence",level:"suggestion",scope:"raw",message:"Reference provides examples. There is no code block on this page.",link:"https://diataxis.fr/reference/#provide-examples"},{name:"Expectations",extends:"occurrence",level:"suggestion",scope:"summary",message:"Tell the learner what they will see at some point: 'You will see ...', 'Notice that ...'.",link:"https://diataxis.fr/tutorials/#the-language-of-tutorials"},{name:"Explanation",extends:"existence",level:"suggestion",scope:"text",message:"'%s' opens an explanation. Keep it to the step; link to the explanation instead.",link:"https://diataxis.fr/tutorials/#the-language-of-tutorials"},{name:"Explanation",extends:"existence",level:"suggestion",scope:"text",message:"'%s' opens an explanation. Keep the guide to the steps; link to the explanation.",link:"https://diataxis.fr/how-to-guides/#the-language-of-how-to-guides"},{name:"Imperative",extends:"existence",level:"suggestion",scope:"list",message:"'%s' softens an instruction. Write the step as a command.",link:"https://diataxis.fr/how-to-guides/#the-language-of-how-to-guides"},{name:"Instruction",extends:"existence",level:"warning",scope:"list",message:"'%s' is an instruction. Explanation discusses; put the steps in a how-to guide.",link:"https://diataxis.fr/explanation/#the-language-of-explanation"},{name:"Instruction",extends:"existence",level:"error",scope:"text",message:"'%s' instructs or advises. Reference describes; put the guidance in a how-to guide.",link:"https://diataxis.fr/reference/#the-language-of-reference"},{name:"Opening",extends:"occurrence",level:"warning",scope:"text & doc(h1 + p)",message:"Open by saying what the learner will build or be able to do by the end.",link:"https://diataxis.fr/tutorials/"},{name:"Opening",extends:"occurrence",level:"warning",scope:"text & doc(h1 + p)",message:"Open by saying what the guide shows the reader how to do.",link:"https://diataxis.fr/how-to-guides/#the-language-of-how-to-guides"},{name:"Opinion",extends:"existence",level:"warning",scope:"text",message:"'%s' is an opinion. Reference states what is.",link:"https://diataxis.fr/reference/#the-language-of-reference"},{name:"Options",extends:"existence",level:"warning",scope:"text",message:"'%s' offers a choice. A tutorial takes one path; alternatives belong in a how-to guide.",link:"https://diataxis.fr/tutorials/#the-language-of-tutorials"},{name:"Reference",extends:"occurrence",level:"suggestion",scope:"raw",message:"%d tables. Explanation gives the shape; the full listing is reference, so link to it.",link:"https://diataxis.fr/explanation/#the-language-of-explanation"},{name:"Reference",extends:"occurrence",level:"suggestion",scope:"raw",message:"%d table rows. Refer to the reference for the full list of options rather than carrying it here.",link:"https://diataxis.fr/how-to-guides/#the-language-of-how-to-guides"},{name:"Steps",extends:"occurrence",level:"warning",scope:"doc(ol)",message:"A tutorial walks the learner through numbered steps; there is no numbered list here.",link:"https://diataxis.fr/tutorials/"},{name:"Steps",extends:"occurrence",level:"warning",scope:"doc(ol)",message:"A how-to guide is a sequence of steps; there is no numbered list here.",link:"https://diataxis.fr/how-to-guides/"},{name:"Teaching",extends:"existence",level:"warning",scope:"text",message:"'%s' is teaching. A how-to guide assumes the reader knows the basics; a tutorial teaches them.",link:"https://diataxis.fr/how-to-guides/#how-to-guides-are-not-tutorials"},{name:"Title",extends:"occurrence",level:"warning",scope:"heading.h1",message:"Name the guide for its goal: 'How to ...' or a verb phrase such as 'Deploying to ...'.",link:"https://diataxis.fr/how-to-guides/#the-language-of-how-to-guides"},{name:"Walkthrough",extends:"existence",level:"warning",scope:"text",message:"'%s' narrates. Reference states; a tutorial walks.",link:"https://diataxis.fr/reference/#the-language-of-reference"},{name:"We",extends:"occurrence",level:"suggestion",scope:"summary",message:"A tutorial says 'we': the tutor is beside the learner. Nothing here does.",link:"https://diataxis.fr/tutorials/#the-language-of-tutorials"},{name:"Why",extends:"occurrence",level:"suggestion",scope:"summary",message:"Explanation answers why. Nothing here says because, the reason, or in order to.",link:"https://diataxis.fr/explanation/#the-language-of-explanation"}],assets:[],valeVersion:">=3.23.0"},{name:"MDX",description:"Adds support for MDX comments and other non-standard markup.",homepage:"https://github.com/vale-cli/MDX",url:"https://github.com/vale-cli/MDX/releases/latest/download/MDX.zip",logo:"https://github.com/mdx-js.png",tags:["config"],host:"github",site:"vale-cli/MDX",repo:"vale-cli/MDX",stars:3,downloads:123952,version:"v0.3.0",released:"2026-07-31",rules:[],assets:[],valeVersion:""},{name:"Microsoft",description:"A Vale-compatible implementation of the Microsoft Writing Style Guide.",homepage:"https://github.com/vale-cli/Microsoft",url:"https://github.com/vale-cli/Microsoft/releases/latest/download/Microsoft.zip",logo:"https://github.com/microsoft.png",tags:["style"],host:"github",site:"vale-cli/Microsoft",repo:"vale-cli/Microsoft",stars:112,downloads:796807,version:"v0.15.1",released:"2026-08-04",rules:[{name:"Acce
1ssibility",extends:"existence",level:"suggestion",scope:"text",message:"Don't use language (such as '%s') that defines people by their disability.",link:"https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/accessibility-terms"},{name:"Acronyms",extends:"conditional",level:"suggestion",scope:"text",message:"'%s' has no definition.",link:"https://learn.microsoft.com/en-us/style-guide/acronyms"},{name:"Adverbs",extends:"existence",level:"warning",scope:"text",message:"Remove '%s' if it's not important to the meaning of the statement.",link:"https://learn.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences"},{name:"AMPM",extends:"existence",level:"error",scope:"text",message:"Use 'AM' or 'PM' (preceded by a space).",link:"https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms"},{name:"Auto",extends:"existence",level:"error",scope:"text",message:"In general, don't hyphenate '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/auto"},{name:"Avoid",extends:"existence",level:"error",scope:"text",message:"Don't use '%s'. See the A-Z word list for details.",link:"https://learn.microsoft.com/en-us/style-guide"},{name:"BiasFree",extends:"substitution",level:"warning",scope:"text",message:"Consider '%s' instead of '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/bias-free-communication"},{name:"Contractions",extends:"substitution",level:"error",scope:"text",message:"Use '%s' instead of '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/word-choice/use-contractions"},{name:"Dashes",extends:"existence",level:"error",scope:"text",message:"Remove the spaces around '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/emes"},{name:"DateFormat",extends:"existence",level:"error",scope:"text",message:"Use 'July 31, 2016' format, not '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms"},{name:"DateNumbers",extends:"existence",level:"error",scope:"text",message:"Don't use ordinal numbers for dates.",link:"https://learn.microsoft.com/en-us/style-guide/numbers#numbers-in-dates"},{name:"DateOrder",extends:"existence",level:"error",scope:"text",message:"Always spell out the name of the month.",link:"https://learn.microsoft.com/en-us/style-guide/numbers#numbers-in-dates"},{name:"Ellipses",extends:"existence",level:"warning",scope:"text",message:"In general, don't use an ellipsis.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/ellipses"},{name:"ExclamationPoints",extends:"existence",level:"suggestion",scope:"text",message:"Use exclamation points sparingly.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/exclamation-points"},{name:"FirstPerson",extends:"existence",level:"warning",scope:"text",message:"Use first person (such as '%s') sparingly.",link:"https://learn.microsoft.com/en-us/style-guide/grammar/person"},{name:"Foreign",extends:"substitution",level:"error",scope:"text",message:"Use '%s' instead of '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words"},{name:"Gender",extends:"existence",level:"error",scope:"text",message:"Don't use '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/grammar/nouns-pronouns#pronouns-and-gender"},{name:"GenderBias",extends:"substitution",level:"error",scope:"text",message:"Consider using '%s' instead of '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/bias-free-communication"},{name:"GeneralURL",extends:"existence",level:"warning",scope:"text",message:"For a general audience, use 'address' rather than 'URL'.",link:"https://learn.microsoft.com/en-us/style-guide/urls-web-addresses"},{name:"HeadingAcronyms",extends:"existence",level:"warning",scope:"heading",message:"Avoid using acronyms in a title or heading.",link:"https://learn.microsoft.com/en-us/style-guide/acronyms#be-careful-with-acronyms-in-titles-and-headings"},{name:"HeadingColons",extends:"existence",level:"error",scope:"heading",message:"Capitalize '%s'.",link:"https://learn.microsoft.com/en-us
1/style-guide/punctuation/colons"},{name:"HeadingPunctuation",extends:"existence",level:"warning",scope:"heading",message:"Don't use end punctuation in headings.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/periods"},{name:"Headings",extends:"capitalization",level:"suggestion",scope:"heading",message:"'%s' should use sentence-style capitalization.",link:"https://learn.microsoft.com/en-us/style-guide/capitalization"},{name:"Hyphens",extends:"existence",level:"warning",scope:"text",message:"'%s' doesn't need a hyphen.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens"},{name:"Jargon",extends:"substitution",level:"suggestion",scope:"text",message:"Consider using '%s' instead of the jargon '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/word-choice/avoid-jargon"},{name:"Militaristic",extends:"substitution",level:"suggestion",scope:"text",message:"Consider '%s' instead of '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/militaristic-language"},{name:"Negative",extends:"existence",level:"error",scope:"text",message:"Form a negative number with an en dash, not a hyphen.",link:"https://learn.microsoft.com/en-us/style-guide/numbers"},{name:"Ordinal",extends:"existence",level:"error",scope:"text",message:"Don't add -ly to an ordinal number.",link:"https://learn.microsoft.com/en-us/style-guide/numbers"},{name:"OxfordComma",extends:"existence",level:"suggestion",scope:"sentence",message:"Use the Oxford comma in '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/commas"},{name:"Passive",extends:"existence",level:"suggestion",scope:"text",message:"'%s' looks like passive voice.",link:""},{name:"Percentages",extends:"existence",level:"error",scope:"text",message:"Use a numeral plus the units.",link:"https://learn.microsoft.com/en-us/style-guide/numbers"},{name:"Plurals",extends:"existence",level:"error",scope:"text",message:"Don't add '%s' to a singular noun. Use plural instead.",link:"https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/s-es"},{name:"QuestionMarks",extends:"existence",level:"suggestion",scope:"text",message:"Use questions sparingly.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/question-marks"},{name:"Quotes",extends:"existence",level:"error",scope:"text",message:"Punctuation should be inside the quotes.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/quotation-marks"},{name:"RangeTime",extends:"existence",level:"error",scope:"text",message:"Use 'to' instead of a dash in '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/numbers"},{name:"Semicolon",extends:"existence",level:"suggestion",scope:"sentence",message:"Try to simplify this sentence.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/semicolons"},{name:"SentenceLength",extends:"occurrence",level:"suggestion",scope:"sentence",message:"Try to keep sentences short (< 30 words).",link:""},{name:"Spacing",extends:"existence",level:"error",scope:"text",message:"'%s' should have one space.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/periods"},{name:"Suspended",extends:"existence",level:"warning",scope:"text",message:"Don't use '%s' unless space is limited.",link:"https://learn.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens"},{name:"Terms",extends:"substitution",level:"warning",scope:"text",message:"Prefer '%s' over '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/adapter"},{name:"UIVerbs",extends:"existence",level:"warning",scope:"text",message:"Use 'select' instead of the input-specific verb '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/procedures-instructions/describing-interactions-with-ui"},{name:"Units",extends:"existence",level:"error",scope:"text",message:"Don't spell out the number in '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/units-of-measure-terms"},{name:"Uppercase",extends:"existence",level:"suggestion",scope:"text",message:"Don't use all uppercase for emphasis.",link:"https://learn.microsoft.com/en-us
1/style-guide/capitalization"},{name:"URLFormat",extends:"substitution",level:"suggestion",scope:"text",message:"Use 'of' (not 'for') to describe the relationship of the word URL to a resource.",link:"https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/u/url"},{name:"Vocab",extends:"existence",level:"suggestion",scope:"text",message:"Verify your use of '%s' with the A-Z word list.",link:"https://learn.microsoft.com/en-us/style-guide"},{name:"We",extends:"existence",level:"warning",scope:"text",message:"Try to avoid using first-person plural like '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/grammar/person#avoid-first-person-plural"},{name:"Wordiness",extends:"substitution",level:"suggestion",scope:"text",message:"Consider using '%s' instead of '%s'.",link:"https://learn.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences"}],assets:[],valeVersion:">=1.0.0"},{name:"OpenShiftAsciiDoc",description:"A Vale-compatible implementation of select AsciiDoc guidance from the OpenShift docs contributor guidelines.",homepage:"https://redhat-documentation.github.io/vale-at-red-hat/index.html#asciidoc-openshift-style-for-vale",url:"https://github.com/redhat-documentation/vale-at-red-hat/releases/latest/download/OpenShiftAsciiDoc.zip",logo:"https://github.com/redhat-documentation.png",tags:["style"],host:"web",site:"redhat-documentation.github.io",repo:"redhat-documentation/vale-at-red-hat",stars:56,downloads:105306,version:"v678",released:"2026-09-10",rules:[{name:"AdditionalResourcesHeadingHasRoleID",extends:"existence",level:"suggestion",scope:"raw",message:"Additional resources heading is missing the '_additional-resources' role attribute declaration",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#additional-resources-sections"},{name:"CheckDollarSymbolInTerminalBlock",extends:"existence",level:"suggestion",scope:"raw",message:"Terminal code block missing a command prompt at the beginning of the line. For example output, prepend the code block with '.Example output'.",link:"https://redhat-documentation.github.io/supplementary-style-guide/#commands-with-root-privileges"},{name:"HardWrappedLines",extends:"script",level:"warning",scope:"raw",message:"Avoid hard-wrapped lines.",link:""},{name:"IdHasContextVariable",extends:"existence",level:"error",scope:"raw",message:"ID is missing the '_{context}' variable at the end of the ID.",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#anchoring-in-module-files"},{name:"ModuleContainsContentType",extends:"occurrence",level:"error",scope:"raw",message:"Module is missing the '_mod-docs-content-type' variable.",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#module-file-metadata"},{name:"ModuleContainsParentAssemblyComment",extends:"occurrence",level:"suggestion",scope:"raw",message:"The comment at the beginning of the module that lists the parent assembly is missing.",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#module-file-metadata"},{name:"NoLineRanges",extends:"existence",level:"error",scope:"raw",message:"Do not use line ranges for included files.",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#assembly-file-metadata"},{name:"NoNestingInModules",extends:"existence",level:"error",scope:"raw",message:"You can only nest snippets or GitHub raw user content in modules.",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#links-hyperlinks-and-cross-references"},{name:"NoOptionalTitles",extends:"existence",level:"error",scope:"raw",message:"Do not begin a module or assembly title with 'Optional:'.",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#assembly-file-metadata"},{name:"NoTocInModules",extends:"existence",level:"error",scope:"raw",message:"Do not include TOCs in modules, only assemblies.",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#module-file-metadata"},{name:"NoXrefInModules",extends:"existence",level:"error",scope:"raw",message:"Do not include xrefs in modules, only assemblies (exception: release notes modules).",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#links-hyperlinks-and-cross-references"},{name:"SuggestAttribute",extends:"substitution",level:"error",scope:"text",message:"Use the AsciiDoc attribute '%s' rather than the plain text product term '%s', unless your use case is an exception.",link:"https://github.com/openshift/openshift-docs/blob/main/_attributes/common-attributes.adoc"},{name:"TrailingBackslash",extends:"existence",level:"error",scope:"raw",message:"Code example ends with an unescaped trailing backslash.",link:""},{name:"XrefContainsAnchorID",extends:"existence",level:"error",scope:"raw",message:"The xref is missing an anchor ID.",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#links-hyperlinks-and-cross-references"},{name:"XrefContainsHTML",extends:"existence",level:"error",scope:"raw",message:"Use .adoc instead of .html in xrefs",link:"https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#links-hyperlinks-and-cross-references"},{name:"XrefMustNotHaveNakedLabel",extends:"existence",level:"error",scope:"raw",message:"The xref is missing link text.",link:"https://redhat-d
1ocumentation.github.io/supplementary-style-guide/#link-text"}],assets:[],valeVersion:""},{name:"Readability",description:"Readability scores: Automated Readability Index, Coleman-Liau, Flesch-Kincaid, Flesch reading ease, Gunning fog, LIX, and SMOG, with a rule that names the polysyllables behind them.",homepage:"https://github.com/vale-cli/readability",url:"https://github.com/vale-cli/readability/releases/latest/download/Readability.zip",logo:"https://github.com/vale-cli.png",tags:["style"],host:"github",site:"vale-cli/readability",repo:"vale-cli/readability",stars:29,downloads:226e3,version:"v0.1.1",released:"2022-10-31",rules:[{name:"AutomatedReadability",extends:"metric",level:"suggestion",scope:"text",message:"Try to keep the Automated Readability Index (%s) below 8.",link:"https://en.wikipedia.org/wiki/Automated_readability_index"},{name:"ColemanLiau",extends:"metric",level:"suggestion",scope:"text",message:"Try to keep the Coleman–Liau Index grade (%s) below 9.",link:"https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index"},{name:"FleschKincaid",extends:"metric",level:"suggestion",scope:"text",message:"Try to keep the Flesch–Kincaid grade level (%s) below 8.",link:"https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests"},{name:"FleschReadingEase",extends:"metric",level:"suggestion",scope:"text",message:"Try to keep the Flesch reading ease score (%s) above 70.",link:"https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests"},{name:"GunningFog",extends:"metric",level:"suggestion",scope:"text",message:"Try to keep the Gunning-Fog index (%s) below 10.",link:"https://en.wikipedia.org/wiki/Gunning_fog_index"},{name:"LIX",extends:"metric",level:"suggestion",scope:"text",message:"Try to keep the LIX score (%s) below 35.",link:"https://en.wikipedia.org/wiki/Lix_(readability_test)"},{name:"Polysyllables",extends:"script",level:"suggestion",scope:"paragraph",message:"'%s' has three or more syllables. It counts toward the SMOG and Gunning fog scores.",link:"https://en.wikipedia.org/wiki/SMOG"},{name:"SMOG",extends:"metric",level:"suggestion",scope:"text",message:"Try to keep the SMOG grade (%s) below 10.",link:"https://en.wikipedia.org/wiki/SMOG"}],assets:[],valeVersion:">=2.13.0"},{name:"RedHat",description:"A Vale-compatible implementation of the Red Hat Supplementary Style Guide.",homepage:"https://redhat-documentation.github.io/vale-at-red-hat/index.html#redhat-style-for-vale",url:"https://github.com/redhat-documentation/vale-at-red-hat/releases/latest/download/RedHat.zip",logo:"https://github.com/redhat-documentation.png",tags:["style"],host:"web",site:"redhat-documentation.github.io",repo:"redhat-documentation/vale-at-red-hat",stars:56,downloads:328542,version:"v678",released:"2026-09-10",rules:[{name:"Abbreviations",extends:"existence",level:"error",scope:"text",message:"Do not use periods in all-uppercase abbreviations such as '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#abbreviations"},{name:"CaseSensitiveTerms",extends:"substitution",level:"warning",scope:"text",message:"Use '%s' rather than '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#case-sensitive-terms"},{name:"Conjunctions",extends:"existence",level:"suggestion",scope:"paragraph",message:"Do not overuse beginning sentences with '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#conjunctions"},{name:"ConsciousLanguage",extends:"substitution",level:"warning",scope:"text",message:"Use %s rather than '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#conscious-language"},{name:"Contractions",extends:"substitution",level:"suggestion",scope:"text",message:"Avoid contractions. Use '%s' rather than '%s.'",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#contractions"},{name:"Definitions",extends:"conditional",level:"suggestion",scope:"text",message:"Define acronyms and abbreviations (such as '%s') on first occurrence if they're likely to be unfamiliar.",link:"https://redhat-d
1ocumentation.github.io/vale-at-red-hat/reference-guide.html#definitions"},{name:"DoNotUseTerms",extends:"substitution",level:"warning",scope:"text",message:"%s",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#do-not-use-terms"},{name:"Ellipses",extends:"existence",level:"suggestion",scope:"text",message:"Avoid the ellipsis (...) except to indicate omitted words.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#ellipses"},{name:"EmDash",extends:"existence",level:"warning",scope:"raw",message:"Do not use em dashes. Use punctuation marks such as commas, parentheses, or colons instead.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#em-dash"},{name:"GitLinks",extends:"existence",level:"warning",scope:"raw",message:"Do not include a link to %s unless it is explicitly approved.",link:""},{name:"HeadingPunctuation",extends:"existence",level:"warning",scope:"heading",message:"Do not use end punctuation in headings.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#heading-punctuation"},{name:"Headings",extends:"capitalization",level:"suggestion",scope:"heading",message:"Use sentence-style capitalization in '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#headings"},{name:"Hyphens",extends:"substitution",level:"warning",scope:"text",message:"Use %s rather than '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#hyphens"},{name:"MergeConflictMarkers",extends:"existence",level:"error",scope:"raw",message:"Do not commit Git merge conflict markers in source code.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#merge-conflict-markers"},{name:"NoGerundsInTitles",extends:"existence",level:"suggestion",scope:"heading",message:"Where possible, avoid using gerunds in topic titles. Use the imperative form instead.",link:""},{name:"ObviousTerms",extends:"existence",level:"suggestion",scope:"sentence",message:"Consider not documenting %s because it is self-explanatory.",link:""},{name:"OxfordComma",extends:"existence",level:"suggestion",scope:"sentence",message:"Use the Oxford comma in '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#oxford-comma"},{name:"PascalCamelCase",extends:"existence",level:"suggestion",scope:"list, sentence",message:"Consider wrapping this Pascal or Camel case term ('%s') in backticks.",link:"https://redhat-documentation.github.io/asciidoc-markup-conventions"},{name:"PassiveVoice",extends:"existence",level:"suggestion",scope:"text",message:"'%s' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#passive-voice"},{name:"ProductCentricWriting",extends:"existence",level:"suggestion",scope:"text",message:"Do not use transitive verb constructions like '%s' to grant abilities to inanimate objects. Whenever possible, use direct, user-focused sentences where the subject of the sentence performs the action.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#product-centric-writing"},{name:"ReadabilityGrade",extends:"readability",level:"suggestion",scope:"text",message:"Simplify your language. The calculated Flesch–Kincaid grade level of %s is above the recommended reading grade level of 9.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#readability-grade"},{name:"ReleaseNotes",extends:"substitution",level:"suggestion",scope:"text",message:"For release notes, consider using '%s' rather than '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#release-notes"},{name:"RepeatedWords",extends:"repetition",level:"warning",scope:"text",message:"'%s' is repeated.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#repeated-words"},{name:"SelfReferentialText",extends:"existence",level:"suggestion",scope:"text",message:"Avoid using self
1-referential text such as '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#self-referential-text"},{name:"SentenceLength",extends:"occurrence",level:"suggestion",scope:"sentence",message:"Try to keep sentences to an average of 32 words or fewer.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#sentence-length"},{name:"SessionId",extends:"existence",level:"error",scope:"raw",message:"Do not publish URLs that contain session identifiers. Exposed session IDs enable session hijacking and unauthorized account access.",link:""},{name:"SimpleWords",extends:"substitution",level:"suggestion",scope:"text",message:"Use simple language. Consider using '%s' rather than '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#simple-words"},{name:"Slash",extends:"existence",level:"warning",scope:"sentence, heading",message:"Use either 'or' or 'and' in '%s'",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#slash"},{name:"SmartQuotes",extends:"substitution",level:"warning",scope:"raw",message:"Do not use smart quotation marks. Use %s rather than %s.",link:""},{name:"Spacing",extends:"existence",level:"error",scope:"text",message:"Keep one space between words in '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#spacing"},{name:"Spelling",extends:"spelling",level:"warning",scope:"heading, sentence, list, alt, table.header, table.cell, table.caption, figure.caption",message:"Verify the word '%s'. It is not in the American English or Red Hat terminology spelling dictionaries used by Vale.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#spelling"},{name:"Symbols",extends:"existence",level:"suggestion",scope:"text",message:"Do not use the '%s' symbol.",link:"https://redhat-documentation.github.io/supplementary-style-guide/#_symbols"},{name:"TermsErrors",extends:"substitution",level:"error",scope:"text",message:"Use '%s' rather than '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#terms-errors"},{name:"TermsSuggestions",extends:"substitution",level:"suggestion",scope:"sentence",message:"Depending on the context, consider using '%s' rather than '%s'.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#terms-suggestions"},{name:"TermsWarnings",extends:"substitution",level:"warning",scope:"text",message:"Consider using '%s' rather than '%s' unless updating existing content that uses the term.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#terms-warnings"},{name:"UserReplacedValues",extends:"existence",level:"suggestion",scope:"raw",message:"Separate words by underscores in user-replaced values.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#user-replaced-values"},{name:"Using",extends:"sequence",level:"warning",scope:"~heading",message:"Use 'by using' instead of 'using' when it follows a noun for clarity and grammatical correctness.",link:"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#using"}],assets:[],valeVersion:">=2.20.0"},{name:"Salesforce",description:"A Vale-compatible implementation of the Salesforce Writing Style Guide.",homepage:"https://github.com/sfadriaan/Salesforce",url:"https://github.com/sfadriaan/Salesforce/releases/latest/download/Salesforce.zip",logo:"https://github.com/salesforce.png",tags:["style"],host:"github",site:"sfadriaan/Salesforce",repo:"sfadriaan/Salesforce",stars:1,downloads:331,version:"v0.1.0",released:"2026-07-30",rules:[{name:"AppExchange",extends:"existence",level:"suggestion",scope:"text",message:"Use 'AppExchange' (one word, capital A and E) instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/glossary_master.htm"},{name:"Application",extends:"existence",level:"suggestion",scope:"text",message:"Use 'Salesforce' instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_application.htm"},{name:"BoldButtonText",extends:"existence",level:"error",scope:"raw",message:"Use bold text when referring to buttons, such as Click **Save**.",link:""},{name:"Checkbox",extends:"existence",level:"error",scope:"text",message:"'Checkbox' is one word.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_checkboxes.htm"},{name:"CustomerSupport",extends:"existence",level:"error",scope:"text",message:"Capitalize 'Customer Support' and use it with the company name, for example 'Salesforce Customer Support'.",link:""},{name:"Databasecom",extends:"existence",level:"suggestion",scope:"text",message:"Use 'Database.com' instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/glossary_master.htm"},{name:"Datasheet",extends:"substitution",level:"suggestion",scope:"text",message:"'%s' is one word. Don't split it into two words.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_datasheet.htm"},{name:"Deprecated",extends:"existence",level:"suggestion",scope:"text",message:"Don't use 'deprecated' for a feature that's available but no longer supported. Use 'not supported' instead.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_deprecated.htm"},{name:"Desupported",extends:"existence",level:"suggestion",scope:"text",message:"Don't use 'desupp
1orted' for a removed feature. Use 'no longer available' instead.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_desupported.htm"},{name:"Editions",extends:"existence",level:"suggestion",scope:"text",message:"Capitalize both words in an edition name, for example 'Enterprise Edition'. Found '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_editions.htm"},{name:"Hover",extends:"substitution",level:"suggestion",scope:"text",message:"Use '%s' to describe moving the pointer over an element, not 'mouse over'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_hover.htm"},{name:"ListElementTypes",extends:"existence",level:"error",scope:"text",message:"Write 'click **Save**', not 'click the **Save** button'. Similarly, do not write '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_buttons.htm"},{name:"ListViews",extends:"existence",level:"suggestion",scope:"text",message:"'%s' is a Salesforce component. Capitalize it, for example 'List View' or 'List Views'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_list_views.htm"},{name:"MouseTerminology",extends:"existence",level:"suggestion",scope:"text",message:"Don't use '%s'. Use 'click' instead.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_mouse_terminology.htm"},{name:"Multitenant",extends:"existence",level:"suggestion",scope:"text",message:"Spell 'multitenant' as one word instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_multitenant.htm"},{name:"ObjectManager",extends:"existence",level:"suggestion",scope:"text",message:"Capitalize 'Object Manager' (and use the article 'the') instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_object_manager.htm"},{name:"Org",extends:"existence",level:"suggestion",scope:"text",message:"Use 'Salesforce org' (or 'org') instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_org.htm"},{name:"Picklist",extends:"existence",level:"suggestion",scope:"text",message:"Use 'picklist' (one word) instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_picklists.htm"},{name:"RichTextArea",extends:"existence",level:"suggestion",scope:"text",message:"'%s' is a Salesforce component. Capitalize it as 'Rich Text Area'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_rich_text_area.htm"},{name:"SalesforceAdmin",extends:"existence",level:"suggestion",scope:"text",message:"Use 'Salesforce admin' instead of '%s'. Note: For UI text and login documentation, use 'Salesforce administrator'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_administrator.htm"},{name:"SalesforceHelp",extends:"existence",level:"suggestion",scope:"text",message:"Use 'the Salesforce Help' instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_online_help.htm"},{name:"SelectCheckbox",extends:"existence",level:"error",scope:"text",message:"Use 'select' or 'deselect' when referring to a checkbox. Avoid verbs like '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_checkboxes.htm"},{name:"Subtab",extends:"existence",level:"suggestion",scope:"text",message:"Spell 'subtab' as one word instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_subtab.htm"},{name:"SupportAgent",extends:"existence",level:"suggestion",scope:"text",message:"Use 'support agent' instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_support_agent.htm"},{name:"SystemAdministrator",extends:"existence",level:"suggestion",scope:"text",message:"Use 'Salesforce admin' instead of '%s'. Note: Use 'Salesforce administrator' for UI text and login documentation.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_system_administrator.htm"},{name:"Trailhead",extends:"existence",level:"suggestion",scope:"text",message:"Use 'Trailhead' instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/glossary_master.htm"},{name:"Unavailable",extends:"existence",level:"suggestion",scope:"text",message:"Don't use '%s' for a UI state. Use 'unavailable' or 'disabled' instead.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/style_unavailable.htm"},{name:"Visualforce",extends:"existence",level:"suggestion",scope:"text",message:"Use 'Visualforce' instead of '%s'.",link:"https://developer.salesforce.com/docs/atlas.en-us.salesforce_pubs_style_guide.meta/salesforce_pubs_style_guide/glossary_master.htm"}],assets:[],valeVersion:""},{name:"Std",description:"The standard library for Vale: general-purpose rules you extend to build your own style.",homepage:"https://github.com/vale-cli/Std",url:"https://github.com/vale-cli/Std/releases/latest/download/Std.zip",logo:"https://github.com/vale-cli.png",tags:["style"],host:"github",site:"vale-cli/Std",repo:"vale-cli/Std",stars:2,downloads:1258,version:"v0.2.0",released:"2026-09-08",rules:[{name:"Abbreviations.Acronyms",extends:"conditional",level:"suggestion",scope:"text",message:"Spell out '%s' on first use.",link:""},{name:"Abbreviations.Latin",extends:"substitution",level:"suggestion",scope:"text",message:"Use '%s' instead of '%s'.",link:""},{name:"DateTime.DateFormat",extends:"existence",level:"suggestion",scope:"text",message:"Ambiguous date format: '%s'.",link:""},{name:"DateTime.TimeFormat",extends:"existence",level:"suggestion",scope:"text",message:"Inconsistent time format: '%s'.",link:""},{name:"Grammar.Contractions",extends:"substitution",level:"suggestion",scope:"text",message:"Use '%s' instead of '%s'.",link:""},{name:"Grammar.PassiveVoice",extends:"existence",level:"suggestion",scope:"text",message:"'%s' looks like passive voice.",link:""},{name:"Punctuation.Ellipses",extends:"existence",level:"suggestion",scope:"text",message:"Ellipsis.",link:""},{name:"Punctuation.OxfordComma",extends:"existence",level:"suggestion",scope:"sentence",message:"Missing serial comma before '%s'.",link:""},{name:"Punctuation.Spacing",extends:"existence",level:"suggestion",scope:"text",message:"'%s' should have one space.",link:""},{name:"Readability.SentenceLength",extends:"occurrence",level:"suggestion",scope:"sentence",message:"Long sentence: %d words.",link:""},{name:"Usage.FirstPersonPlural",extends:"existence",level:"suggestion",scope:"text",message:"First-person plural: '%s'.",link:""},{name:"Usage.FirstPersonSingular",extends:"existence",level:"suggestion",scope:"text",message:"First-person singular: '%s'.",link:""},{name:"Usage.GenderedPronouns",extends:"existence",level:"suggestion",scope:"text",message:"'%s' is not a gender-neutral pronoun.",link:""},{name:"Usage.GenderedTerms",extends:"substitution",level:"suggestion",scope:"text",message:"Consider '%s' instead of '%s'.",link:""}],assets:[],valeVersion:">=3.20.0"},{name:"ai-tells",description:"Flags the fingerprints of AI-written prose, with rule messages that name the fix rather than only the phrase.",homepage:"https://github.com/tbhb/vale-ai-tells",url:"https://github.com/tbhb/vale-ai-tells/releases/latest/download/ai-tells.zip",logo:"https://github.com/tbhb.png",tags:["style"],host:"github",site:"tbhb/vale-ai-tells",repo:"tbhb/vale-ai-tells",stars:91,downloads:53729,version:"v1.34.0",released:"2026-09-07",rules:[{name:"AbsoluteAssertions",extends:"existence",level:"error",scope:"text",message:"AI overreach: '%s'. Verify this claim or soften it.",link:""},{name:"AbstractionSubject",extends:"existence",level:"error",scope:"text",message:"AI abstraction subject: '%s'. State what the demonstrative stands for, then say what it does.",link:""},{name:"AffirmativeFormulas",extends:"existence",level:"error",scope:"text",message:"AI affirmation: '%s'. Cut the flourish and state the point plainly.",link:""},{name:"AIAdjectiveNounPairs",extends:"sequence",level:"error",scope:"text",message:"AI adjective-noun pair: '%s %s'. Use concrete description instead.",link:""},{name:"AICompoundPhrases",extends:"existence",level:"error",scope:"text",message:"AI fingerprint: '%s'. Rewrite with concrete specifics instead of this clichéd phrase.",link:""},{name:"AnnouncementHeadings",extends:"existence",level:"error",scope:"heading",message:"AI announcement heading: '%s'. Cut the heading or rename it to the topic.",link:""},{name:"AnthropomorphicAdjectives",extends:"existence",level:"error",scope:"text",message:"AI anthropomorphic adjective: '%s'. Say what the thing does or measures instead of grading its character. Disable this rule for medical or community prose.",link:""},{name:"AnthropomorphicCognition",extends:"existence",level:"error",scope:"text",message:"AI anthropomorphism: '%s'. State what the tool checks or produces. Disable this rule for prose about people.",link:""},{name:"AnthropomorphicJustification",extends:"existence",level:"error",scope:"text",message:"AI cliché: '%s'. Say what you mean directly.",link:""},{name:"BareHolds",extends:"existence",level:"error",scope:"text",message:"AI possession verb: '%s'. Say what it contains or stores. Disable this rule for concurrency or physical-object prose.",link:""},{name:"BareNames",extends:"existence",level:"error",scope:"text",message:"AI designation verb: '%s'. Say that it specifies or references the thing, or tell the reader to state it. Disable this rule for API reference prose.",link:""},{name:"BareReaches",extends:"existence",level:"error",scope:"text",message:"AI arrival metaphor: '%s'. Say which step handles it, or where it is sent. Disable this rule for transit or physics prose.",link:""},{name:"CataphoricForecasting",extends:"existence",level:"error",scope:"text",message:"AI numbered lead-in: '%s'. Present the items or the measured figures directly instead of leading with a count.",link:""},{name:"ClosingPleasantries",extends:"existence",level:"error",scope:"text",message:"AI closing: '%s'. Delete it and end with your actual content.",link:""},{name:"ColloquialAssessments",extends:"existence",level:"error",scope:"text",message:"AI colloquial assessment: '%s'. State the assessment directly.",link:""},{name:"ColonUsage",extends:"existence",level:"error",scope:"~heading",message:"AI punctuation: '%s'. Lowercase the word after the colon unless it is a proper noun.",link:""},{name:"ConclusionMarkers",extends:"existence",level:"error",scope:"text",message:"AI conclusion: '%s'. Delete this and end on your final point.",link:""},{name:"ConsequenceClause",extends:"existence",level:"error",scope:"text",message:"AI consequence clause: '%s'. End the sentence before the comma and state the effect as its own claim.",link:""},{name:"ConsequenceParticiple",extends:"existence",level:"error",scope:"text",message:"AI consequence tail: '%s'. End the sentence there and state the effect as its own claim.",link:""},{name:"ContrastiveFormulas",extends:"existence",level:"error",scope:"text",message:"AI contrast: '%s'. State the positive claim directly without the 'n
1ot X, but Y' formula.",link:""},{name:"ContrastiveNegation",extends:"existence",level:"error",scope:"text",message:"AI contrast by negation: '%s'. State the positive directly without the trailing negation.",link:""},{name:"CoordinatedReveal",extends:"existence",level:"error",scope:"text",message:"AI quantified reveal: '%s'. The totality word replaces a contrast the sentence never states. Say what it rules out, or drop the word.",link:""},{name:"DefensiveHedges",extends:"existence",level:"error",scope:"text",message:"AI defensive hedge: '%s'. State your point directly without pre-defending it.",link:""},{name:"DepletionMetaphors",extends:"existence",level:"error",scope:"text",message:"AI depletion metaphor: '%s'. Say what ran out, failed, or slowed, and give the limit. Disable this rule for prose about engines or nutrition.",link:""},{name:"DespiteChallenges",extends:"existence",level:"error",scope:"text",message:"AI despite-formula: '%s'. Engage with the challenges substantively or remove the hedge.",link:""},{name:"DoubleHyphen",extends:"existence",level:"error",scope:"text",message:"AI punctuation: '%s'. Backtick it if it is a CLI flag or literal, or use a real em dash for punctuation.",link:""},{name:"EmDashUsage",extends:"existence",level:"error",scope:"text",message:"AI punctuation: em-dash detected. Use a comma, period, or parentheses instead.",link:""},{name:"EmphaticCopula",extends:"existence",level:"error",scope:"raw",message:"AI emphasis: '%s'. Remove the italics. Emphasizing a common word rarely adds meaning.",link:""},{name:"EnforcementMetaphors",extends:"existence",level:"error",scope:"text",message:"AI enforcement metaphor: '%s'. Say what the check refuses or allows. Disable this rule for security or law-enforcement prose.",link:""},{name:"EvasionMetaphors",extends:"existence",level:"error",scope:"text",message:"AI evasion metaphor: '%s'. Say what the check missed and why.",link:""},{name:"ExplainerHeadings",extends:"existence",level:"error",scope:"heading",message:"AI explainer heading: '%s'. State the topic instead.",link:""},{name:"ExplainerLeads",extends:"existence",level:"error",scope:"~heading",message:"AI explainer lead: '%s'. State the point directly instead of announcing it.",link:""},{name:"FalseBalance",extends:"existence",level:"error",scope:"text",message:"AI evasion: '%s'. Take a clear position or remove the hedge.",link:""},{name:"FalseExclusivity",extends:"existence",level:"error",scope:"text",message:"AI false exclusivity: '%s'. State the point directly without claiming insider knowledge.",link:""},{name:"FigurativeBreeds",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say the one causes the other. Disable this rule for husbandry or biology prose.",link:""},{name:"FigurativeCarries",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say what it contains or entails. Disable this rule for freight or logistics prose.",link:""},{name:"FigurativeCasts",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. State the doubt or the effect directly. Disable this rule for fishing, metalwork, or theater prose.",link:""},{name:"FigurativeClears",extends:"existence",level:"error",scope:"text",message:"AI hurdle metaphor: '%s'. Say the check passed. Disable this rule for athletics prose.",link:""},{name:"FigurativeDemands",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say the work requires it. Disable this rule for labor or economics prose.",link:""},{name:"FigurativeDisguises",extends:"existence",level:"error",scope:"text",message:"AI disguise metaphor: '%s'. State what the thing is, then say how it differs from what it resembles. Disable this rule for security, forensics, or costume prose.",link:""},{name:"FigurativeDraws",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Give the source or the comparison directly. Disable this rule for art or card-game prose.",link:""},{name:"FigurativeEarns",extends:"existence",level:"error",scope:"text",message:"AI wage metaphor: '%s'. Say what the thing gets or requires. Disable this rule for payroll or finance prose.",link:""},{name:"FigurativeFalls",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. State the shortfall or the membership directly. Disable this rule for gravity or weather prose.",link:""},{name:"FigurativeFires",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say the rule matches or reports. Disable this rule for firearms or ceramics prose.",link:""},{name:"FigurativeHolds",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. State the comparison or the claim directly. Disable this rule for legal or wrestling prose.",link:""},{name:"FigurativeIdioms",extends:"existence",level:"error",scope:"text",message:"AI idiom: '%s'. State the literal outcome instead.",link:""},{name:"FigurativeKeeps",extends:"existence",level:"error",scope:"text",message:"AI upkeep frame: '%s'. Say what the mechanism does to the thing, not what state it keeps it in.",link:""},{name:"FigurativeLands",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Use the literal action: is merged or is routed to. Disable this rule for aviation or nature prose.",link:""},{name:"FigurativeLends",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. State what it adds or enables directly. Disable this rule for library or finance prose.",link:""},{name:"FigurativeLives",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say where the item is defined or stored. Disable this rule for biography or housing prose.",link:""},{name:"FigurativeLoud",extends:"existence",level:"error",scope:"text",message:"AI overused word: '%s'. Describe the actual behavior instead of calling emphasis volume. Disable this rule for prose about sound.",link:""},{name:"FigurativeMints",extends:"existence",level:"error",scope:"text",message:"AI coinage metaphor: '%s'. Use the literal action: creates an identifier, or requests a token. Disable this rule for currency prose.",link:""},{name:"FigurativeNouns",extends:"existence",level:"error",scope:"text",message:"AI figurative noun: '%s'. Say what concrete thing it stands for.",link:""},{name:"FigurativeOwns",extends:"existence",level:"error",scope:"text",message:"AI ownership metaphor: '%s'. Say which file defines it or which tool writes it. Disable this rule for concurrency or memory prose.",link:""},{name:"FigurativePays",extends:"existence",level:"error",scope:"text",message:"AI money metaphor: '%s'. State the plain benefit or cost. Disable this rule for finance or commerce prose.",link:""},{name:"FigurativeQuantities",extends:"existence",level:"error",scope:"text",message:"AI quantity metaphor: '%s'. Give the count, or write 'a few' or 'many'.",link:""},{name:"FigurativeQuiet",extends:"existence",level:"error",scope:"text",message:"AI overused word: '%s'. Describe the actual behavior instead of calling inaction silence. Disable this rule for prose about sound.",link:""},{name:"FigurativeReaches",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say uses or resorts to instead. Disable this rule for sports or robotics prose.",link:""},{name:"FigurativeRides",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. State the dependency or the mechanism directly. Disable this rule for transit or equestrian prose.",link:""},{name:"FigurativeRuns",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Describe the actual behavior. Disable this rule for athletics or plumbing prose.",link:""},{name:"FigurativeSees",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say who uses it or what changed. Disable this rule for prose about eyesight.",link:""},{name:"FigurativeSettles",extends:"existence",level:"error",scope:"text",message:"AI settlement metaphor: '%s'. State the conclusion and the evidence, or say what the stable state is. Disable this rule for legal or geology prose.",link:""},{name:"FigurativeShape",extends:"existence",level:"error",scope:"text",message:"AI figurative noun: '%s'. Say which structure, format, size, or pattern it stands for. Disable this rule for geometry, graphics, or array-dimension prose.",link:""},{name:"FigurativeSits",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Use the literal relation: is at or rests with. Disable this rule for furniture or geography prose.",link:""},{name:"FigurativeStays",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say the item is unchanged, or state what it avoids. Disable this rule for lodging or travel prose.",link:""}
1,{name:"FigurativeStrikes",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. State the effect or the tradeoff directly. Disable this rule for labor or percussion prose.",link:""},{name:"FigurativeSurfaces",extends:"existence",level:"error",scope:"text",message:"AI discovery metaphor: '%s'. Say what reported the problem and when. Disable this rule for marine or graphics prose.",link:""},{name:"FigurativeSweeps",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Use the literal action: is removed or is replaced. Disable this rule for housekeeping or weather prose.",link:""},{name:"FigurativeTravels",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Use the literal movement: is sent or is copied. Disable this rule for transit or physics prose.",link:""},{name:"FigurativeTrips",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say the text matches the check. Disable this rule for electrical or hiking prose.",link:""},{name:"FigurativeWins",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. State the benefit or the outcome directly. Disable this rule for sports or gaming prose.",link:""},{name:"FigurativeWorth",extends:"existence",level:"error",scope:"text",message:"AI value verdict: '%s'. Say what the thing does or what it costs instead of rating it. Disable this rule for finance prose.",link:""},{name:"FillerIntensifier",extends:"existence",level:"error",scope:"text",message:"AI intensifier: '%s'. Delete the intensifier. The determiner already states the count.",link:""},{name:"FillerPhrases",extends:"existence",level:"error",scope:"text",message:"AI filler: '%s'. Delete this phrase. The sentence reads the same without it.",link:""},{name:"FormalRegister",extends:"existence",level:"error",scope:"text",message:"AI formalism: '%s'. Use a plainer everyday word (e.g., 'use', 'help', 'start').",link:""},{name:"FormalTransitions",extends:"existence",level:"error",scope:"text",message:"AI transition: '%s'. Delete it, or use a simpler connector like 'and', 'but', or 'so'.",link:""},{name:"FusionMetaphors",extends:"existence",level:"error",scope:"text",message:"AI fusion metaphor: '%s'. Say merged, added, or combined, and say what went where. Disable this rule for physics or chemistry prose.",link:""},{name:"GrowthMetaphors",extends:"existence",level:"error",scope:"text",message:"AI growth metaphor: '%s'. Say what literally happens, or disable this rule for medical or nature writing.",link:""},{name:"HedgingPhrases",extends:"existence",level:"error",scope:"text",message:"AI hedge: '%s'. Delete this throat-clearing and state your point directly.",link:""},{name:"HollowAcknowledgment",extends:"existence",level:"error",scope:"text",message:"AI hollow acknowledgment: '%s'. Resolve the thing you just named or cut the clause.",link:""},{name:"HouseStyle",extends:"substitution",level:"error",scope:"text",message:"AI house compound: use %s instead of '%s'.",link:""},{name:"IncompleteComparison",extends:"existence",level:"error",scope:"text",message:"AI incomplete comparison: '%s'. Complete it with 'than' and the baseline.",link:""},{name:"JourneyMetaphors",extends:"existence",level:"error",scope:"text",message:"AI journey metaphor: '%s'. Say what literally happened and what the next step is. Disable this rule for travel writing.",link:""},{name:"LabelAndExplain",extends:"existence",level:"error",scope:"~heading",message:"AI label-and-explain: '%s'. Fold the noun-phrase label into the sentence it introduces.",link:""},{name:"ListIntroductions",extends:"existence",level:"error",scope:"text",message:"AI list intro: '%s'. Skip the announcement and present the content directly.",link:""},{name:"MarketingHeadings",extends:"existence",level:"error",scope:"heading",message:"AI marketing heading: '%s'. Strip the puffery and state the topic plainly.",link:""},{name:"Metacommentary",extends:"existence",level:"error",scope:"raw",message:"AI metacommentary: '%s'. Delete it or replace it with substantive content.",link:""},{name:"MicDrop",extends:"existence",level:"error",scope:"text",message:"AI mic-drop: '%s'. Integrate the point into the surrounding text or cut it.",link:""},{name:"MicDropHeadings",extends:"existence",level:"error",scope:"heading",message:"AI mic-drop: '%s'. Use a descriptive heading instead.",link:""},{name:"MortalityMetaphors",extends:"existence",level:"error",scope:"text",message:"AI mortality metaphor: '%s'. Say what stopped, or what was kept. Disable this rule for biology or process-lifecycle prose.",link:""},{name:"MotionMetaphors",extends:"existence",level:"error",scope:"text",message:"AI motion metaphor: '%s'. Use the literal operation: is passed to, or depends on.",link:""},{name:"NamedAdjective",extends:"existence",level:"error",scope:"text",message:"AI designation adjective: '%s'. Write the identifier itself, or say which one. Disable this rule for API reference prose.",link:""},{name:"NarrativePivots",extends:"existence",level:"error",scope:"text",message:"AI narrative pivot: '%s'. State your point directly.",link:""},{name:"NegatedObject",extends:"existence",level:"error",scope:"text",message:"AI stilted negation: '%s'. Negate the verb with 'doesn't' instead of shifting 'no' onto the object.",link:""},{name:"NegatedPair",extends:"existence",level:"error",scope:"text",message:"AI stacked absence
1: '%s'. Negate the verb once, then say what the thing does instead.",link:""},{name:"NegatedSubject",extends:"existence",level:"error",scope:"text",message:"AI negated subject: '%s'. Name who does what: 'you don't need to configure anything' instead of announcing an absence.",link:""},{name:"NounString",extends:"sequence",level:"error",scope:"text",message:"AI noun string: '%[2]s %[3]s %[4]s %[5]s'. Rewrite the stack as a phrase that shows how the nouns relate.",link:""},{name:"OpeningCliches",extends:"existence",level:"error",scope:"text",message:"AI opening: '%s'. Start with your actual point instead of this generic lead-in.",link:""},{name:"OrganicConsequence",extends:"existence",level:"error",scope:"text",message:"AI inevitability: '%s'. Say the choice was designed that way.",link:""},{name:"OverusedVocabulary",extends:"existence",level:"error",scope:"text",message:"AI vocabulary: '%s'. Replace with a more specific or common word.",link:""},{name:"OverusedVocabularyVerbs",extends:"sequence",level:"error",scope:"text",message:"AI vocabulary (verb form): '%s'. Replace with a direct verb.",link:""},{name:"ParallelStaccato",extends:"existence",level:"error",scope:"text",message:"AI staccato: '%s'. Combine these clipped parallel sentences or vary the structure.",link:""},{name:"ParticipialPadding",extends:"existence",level:"error",scope:"text",message:"AI participial padding: '%s'. Delete it or make the point concrete.",link:""},{name:"PointVerdict",extends:"existence",level:"error",scope:"text",message:"AI point verdict: '%s'. Say what the thing does or what it is for instead of grading it as the point.",link:""},{name:"PromotionalPuffery",extends:"existence",level:"error",scope:"text",message:"AI puffery: '%s'. Use neutral, specific language.",link:""},{name:"PseudoCleft",extends:"existence",level:"error",scope:"text",message:"AI pseudo-cleft: '%s'. Put the claim first as its own sentence and delete the 'What ... is' frame.",link:""},{name:"RedundantPrecaution",extends:"existence",level:"error",scope:"text",message:"AI cliché: '%s'. State the specific safeguard or cut the phrase.",link:""},{name:"ResonateOveruse",extends:"existence",level:"error",scope:"text",message:"AI overused verb: '%s'. Say what connects and why, or disable this rule for physics or audio writing.",link:""},{name:"RestatementMarkers",extends:"existence",level:"error",scope:"text",message:"AI restatement: '%s'. Delete it and trust your original phrasing. If a second case needs the point, put both cases in the sentence that makes it.",link:""},{name:"RhetoricalDevices",extends:"existence",level:"error",scope:"text",message:"AI rhetoric: '%s'. Remove it or rephrase as a plain statement.",link:""},{name:"RhetoricalSelfAnswer",extends:"existence",level:"error",scope:"raw",message:"AI rhetorical self-answer: '%s'. State the point directly instead of posing and answering your own question.",link:""},{name:"ScopePartition",extends:"existence",level:"error",scope:"text",message:"AI scope partition: '%s'. Make the scope the subject of its own sentence instead of a fronted label.",link:""},{name:"SelfReference",extends:"existence",level:"error",scope:"text",message:"AI cross-reference: '%s'. Rewrite the passage to work without the cross-reference.",link:""},{name:"SemicolonUsage",extends:"existence",level:"error",scope:"text",message:"AI punctuation: '%s'. Replace the semicolon with a period or two sentences.",link:""},{name:"SequencingMarkers",extends:"existence",level:"error",scope:"text",message:"AI sequencing: '%s'. Use natural transitions or write an actual list.",link:""},{name:"ServesAsDodge",extends:"existence",level:"error",scope:"text",message:"AI copula dodge: '%s'. Use 'is' or 'are' instead of this inflated construction.",link:""},{name:"ShellNounCopula",extends:"existence",level:"error",scope:"text",message:"AI shell noun: '%s'. Delete the noun and the copula. Start the sentence at the claim.",link:""},{name:"ShipOveruse",extends:"existence",level:"error",scope:"text",message:"AI overused word: '%s'. State the specific action or object. Disable this rule for maritime or logistics writing.",link:""},{name:"StackedAnaphora",extends:"existence",level:"error",scope:"text",message:"AI anaphora: '%s'. Vary the sentence openings or combine into one statement.",link:""},{name:"StackedHedges",extends:"existence",level:"error",scope:"text",message:"AI stacked hedge: '%s'. Drop one hedge, or give a number instead.",link:""},{name:"StrategyBuzzwords",extends:"existence",level:"error",scope:"text",message:"AI strategy buzzword: '%s'. Describe the actual mechanism or advantage plainly.",link:""},{name:"StrawmanContrast",extends:"existence",level:"error",scope:"text",message:"AI strawman contrast: '%s'. State what it does and stop. Drop the alternative nobody proposed.",link:""},{name:"StructureAnnouncements",extends:"existence",level:"error",scope:"text",message:"AI structure announcement: '%s'. Present the content instead of narrating that you're about to.",link:""},{name:"SummativeAppositive",extends:"existence",level:"error",scope:"text",message:"AI summative appositive: '%s'. The label noun restates the clause before it. Put the claim in its own sentence, or stop at the comma.",link:""},{name:"SycophancyMarkers",extends:"existence",level:"error",scope:"text",message:"AI sycophancy: '%s'. Delete this. It sounds robotic and insincere.",link:""},{name:"UnderRegime",extends:"existence",level:"error",scope:"text",message:"AI regime opener: '%s'. Lead with the subject and put the tool after the verb, with 'with' or 'when using'.",link:""},{name:"UniversalObject",extends:"existence",level:"error",scope:"text",message:"AI totality claim: '%s'. Say which cases were checked, or drop the quantifier.",link:""},{name:"UniversalSubject",extends:"existence",level:"error",scope:"text",message:"AI blanket claim: '%s'. Say which cases were checked, or drop the quantifier.",link:""},{name:"UnpackExplore",extends:"existence",level:"error",scope:"text",message:"AI explainer prompt: '%s'. Explain it directly instead of announcing it.",link:""},{name:"UrgencyInflation",extends:"existence",level:"error",scope:"text",message:"AI urgency: '%s'. Delete it or show the stakes concretely.",link:""},{name:"VagueAttributions",extends:"existence",level:"error",scope:"text",message:"AI vague attribution: '%s'. Give the specific source or delete the claim.",link:""},{name:"VerbTricolon",extends:"existence",level:"error",scope:"text",message:"AI tricolon: '%s'. Exactly three parallel verbs in series. Restructure or vary the count.",link:""},{name:"VerbTricolonDensity",extends:"occurrence",level:"error",scope:"paragraph",message:"AI tricolon: multiple verb tricolons in one paragraph (found %d). Rewrite some with two or four items.",link:""},{name:"WrapUpHeadings",extends:"existence",level:"error",scope:"heading",message:"AI wrap-up heading: '%s'. Delete the section or rename the heading to the topic.",link:""}],assets:[{kind:"template",name:"ai-tells-agent.tmpl"}],valeVersion:""},{name:"alex",description:"Catch insensitive, inconsiderate writing.",homepage:"https://github.com/vale-cli/alex",url:"https://github.com/vale-cli/alex/releases/latest/download/alex.zip",logo:"https://github.com/get-alex.png",tags:["style"],host:"github",site:"vale-cli/alex",repo:"vale-cli/alex",stars:25,downloads:314005,version:"v0.2.3",released:"2024-11-02",rules:[{name:"Ablist",extends:"substitution",level:"warning",scope:"text",message:"When referring to a person, consider using '%s' instead of '%s'.",link:""},{name:"Condescending",extends:"existence",level:"error",scope:"text",message:"Using '%s' may come across as condescending.",link:"https://css-tricks.
1com/words-avoid-educational-writing/"},{name:"Gendered",extends:"substitution",level:"warning",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"LGBTQ",extends:"substitution",level:"warning",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"OCD",extends:"substitution",level:"warning",scope:"text",message:"When referring to a person, consider using '%s' instead of '%s'.",link:""},{name:"Press",extends:"substitution",level:"warning",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"ProfanityLikely",extends:"existence",level:"warning",scope:"text",message:"Don't use '%s', it's profane.",link:""},{name:"ProfanityMaybe",extends:"existence",level:"warning",scope:"text",message:"Reconsider using '%s', it may be profane.",link:""},{name:"ProfanityUnlikely",extends:"existence",level:"warning",scope:"text",message:"Be careful with '%s', it's profane in some cases.",link:""},{name:"Race",extends:"substitution",level:"warning",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"Suicide",extends:"substitution",level:"warning",scope:"text",message:"Consider using '%s' instead of '%s' (which may be insensitive).",link:""}],assets:[],valeVersion:">=1.0.0"},{name:"neighbor",description:"Accessibility and inclusive language rules for Vale. Flags exclusionary language, ableist terms, metaphors, and complex idioms.",homepage:"https://github.com/a11yfred/neighbor",url:"https://github.com/a11yfred/neighbor/releases/latest/download/neighbor.zip",logo:"https://github.com/a11yfred.png",tags:["style","inclusive-language"],host:"github",site:"a11yfred/neighbor",repo:"a11yfred/neighbor",stars:1,downloads:992,version:"v2.2.0",released:"2026-05-26",rules:[{name:"AbleistLanguage",extends:"substitution",level:"warning",scope:"text",message:"'%s' may be ableist language. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"AllCapsProse",extends:"existence",level:"warning",scope:"text",message:"'%s' is written in ALL CAPS. Some screen readers spell it out letter by letter. Use sentence case and rely on formatting for emphasis.",link:"https://github.com/a11yfred/neighbor-vale"},{name:"AmpersandInProse",extends:"existence",level:"warning",scope:"text",message:"'&' may be announced as 'ampersand' or skipped by screen readers. Use 'and' in prose.",link:"https://github.com/a11yfred/neighbor-vale"},{name:"AntiLgbtqLanguage",extends:"substitution",level:"warning",scope:"text",message:"'%s' is outdated or offensive regarding LGBTQ+ identity. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"ColonialAndViolentLanguage",extends:"substitution",level:"warning",scope:"text",message:"'%s' has violent or colonial origins. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"CrossDialectConfusion",extends:"substitution",level:"warning",scope:"text",message:"'%s' may cause cross-dialect confusion or inappropriate double entendre. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"DeficitLanguage",extends:"substitution",level:"warning",scope:"text",message:"'%s' is deficit-based language. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"DeviceSpecificAction",extends:"substitution",level:"warning",scope:"text",message:"'%s' assumes a specific input device. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"DirectionalLanguage",extends:"existence",level:"warning",scope:"text",message:"'%s' uses layout position to give instructions. Position-based references break when users zoom, reflow, or use a screen reader. Reference content by name or heading instead.",link:"https://github.com/a11yfred/neighbor"},{name:"DisabilityMetaphor",extends:"substitution",level:"warning",scope:"text",message:"'%s' uses disability as a metaphor. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"EnglishIdiom",extends:"substitution",level:"warning",scope:"text",message:"'%s' is an idiom that may be unclear to ESL and international readers. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"ExclusiveLanguage",extends:"substitution",level:"warning",scope:"text",message:"'%s' is non-inclusive or culturally appropriated. Consider: %s",link:"https://github.com/a11yfred/neighbor"},{name:"GenderedLanguage",extends:"substitution",level:"warning",scope:"text",message:"'%s' is a generic gendered pattern. Consider: %s",link:"https://github.com/a11yfred/neighbor"}],assets:[],valeVersion:""},{name:"proselint",description:"proselint places the world’s greatest writers and editors by your side.",homepage:"https://github.com/vale-cli/proselint",url:"https://github.com/vale-cli/proselint/releases/latest/download/proselint.zip",logo:"https://github.com/amperser.png",tags:["style"],host:"github",site:"vale-cli/proselint",repo:"vale-cli/proselint",stars:45,downloads:663614,version:"v0.3.4",released:"2024-06-09",rules:[{name:"Airlinese",extends:"existence",level:"error",scope:"text",message:"'%s' is airlinese.",link:""},{name:"AnimalLabels",extends:"substitution",level:"error",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"Annotations",extends:"existence",level:"error",scope:"text",message:"'%s' left in text.",link:""},{name:"Apologizing",extends:"existence",level:"error",scope:"text",message:"Excessive apologizing: '%s'",link:""},{name:"Archaisms",extends:"existence",level:"error",scope:"text",message:"'%s' is archaic.",link:""},{name:"But",extends:"existence",level:"error",scope:"paragraph",message:"Do not start a paragraph with a 'but'.",link:""},{name:"Cliches",extends:"existence",level:"error",scope:"text",message:"'%s' is a cliche.",link:""},{name:"CorporateSpeak",extends:"existence",level:"error",scope:"text",message:"'%s' is corporate speak.",link:""},{name:"Currency",extends:"existence",level:"suggestion",scope:"text",message:"Incorrect use of symbols in '%s'.",link:""},{name:"Cursing",extends:"existence",level:"error",scope:"text",message:"Consider replacing '%s'.",link:""},{name:"DateCase",extends:"existence",level:"error",scope:"text",message:"With lowercase letters, the peri
1ods are standard.",link:""},{name:"DateMidnight",extends:"existence",level:"error",scope:"text",message:"Use 'midnight' or 'noon'.",link:""},{name:"DateRedundancy",extends:"existence",level:"error",scope:"text",message:"'a.m.' is always morning; 'p.m.' is always night.",link:""},{name:"DateSpacing",extends:"existence",level:"error",scope:"text",message:"It's standard to put a space before '%s'",link:""},{name:"DenizenLabels",extends:"substitution",level:"suggestion",scope:"text",message:"Did you mean '%s'?",link:""},{name:"Diacritical",extends:"substitution",level:"error",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"GenderBias",extends:"substitution",level:"error",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"GroupTerms",extends:"substitution",level:"suggestion",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"Hedging",extends:"existence",level:"error",scope:"text",message:"'%s' is hedging.",link:""},{name:"Hyperbole",extends:"existence",level:"error",scope:"text",message:"'%s' is hyperbolic.",link:""},{name:"Jargon",extends:"existence",level:"error",scope:"text",message:"'%s' is jargon.",link:""},{name:"LGBTOffensive",extends:"existence",level:"suggestion",scope:"text",message:"'%s' is offensive. Remove it or consider the context.",link:""},{name:"LGBTTerms",extends:"substitution",level:"suggestion",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"Malapropisms",extends:"existence",level:"error",scope:"text",message:"'%s' is a malapropism.",link:""},{name:"Needless",extends:"substitution",level:"suggestion",scope:"text",message:"Prefer '%s' over '%s'",link:""},{name:"Nonwords",extends:"substitution",level:"error",scope:"text",message:"Consider using '%s' instead of '%s'.",link:""},{name:"Oxymorons",extends:"existence",level:"error",scope:"text",message:"'%s' is an oxymoron.",link:""},{name:"P-Value",extends:"existence",level:"suggestion",scope:"text",message:"You should use more decimal places, unless '%s' is really true.",link:""},{name:"RASSyndrome",extends:"existence",level:"error",scope:"text",message:"'%s' is redundant.",link:""},{name:"Skunked",extends:"existence",level:"error",scope:"text",message:"'%s' is a bit of a skunked term — impossible to use without issue.",link:""},{name:"Spelling",extends:"consistency",level:"error",scope:"text",message:"Inconsistent spelling of '%s'.",link:""},{name:"Typography",extends:"substitution",level:"error",scope:"text",message:"Consider using the '%s' symbol instead of '%s'.",link:""},{name:"Uncomparables",extends:"existence",level:"error",scope:"text",message:"'%s' is not comparable",link:""},{name:"Very",extends:"existence",level:"error",scope:"text",message:"Remove '%s'.",link:""}],assets:[],valeVersion:">=1.0.0"},{name:"write-good",description:"Naive linter for English prose for developers who can't write good.",homepage:"https://github.com/vale-cli/write-good",url:"https://github.com/vale-cli/write-good/releases/latest/download/write-good.zip",logo:"https://github.com/npm.png",tags:["style"],host:"github",site:"vale-cli/write-good",repo:"vale-cli/write-good",stars:49,downloads:1097132,version:"v0.4.1",released:"2024-06-09",rules:[{name:"Cliches",extends:"existence",level:"warning",scope:"text",message:"Try to avoid using clichés like '%s'.",link:""},{name:"E-Prime",extends:"existence",level:"suggestion",scope:"text",message:"Try to avoid using '%s'.",link:""},{name:"Illusions",extends:"repetition",level:"warning",scope:"text",message:"'%s' is repeated!",link:""},{name:"Passive",extends:"existence",level:"warning",scope:"text",message:"'%s' may be passive voice. Use active voice if you can.",link:""},{name:"So",extends:"existence",level:"error",scope:"text",message:"Don't start a sentence with '%s'.",link:""},{name:"ThereIs",extends:"existence",level:"error",scope:"text",message:"Don't start a sentence with '%s'.",link:""},{name:"TooWordy",extends:"existence",level:"warning",scope:"text",message:"'%s' is too wordy.",link:""},{name:"Weasel",extends:"existence",level:"warning",scope:"text",message:"'%s' is a weasel word!",link:""}],assets:[],valeVersion:">=1.0.0"}];function f(t,e){const n=m(e,["children","$$slots","$$events","$$legacy"]);c(t,g({name:"plus"},()=>n,{iconNode:[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]],children:(i,u)=>{var s=a(),o=l(s);d(o,e,"default",{}),r(i,s)},$$slots:{default:!0}}
1))}export{f as P,k as p};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.