{"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"migrate-from-markdownlint-and-vale","__idx":0},"children":["Migrate from markdownlint and Vale"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck"]}," command covers the ground of ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://github.com/DavidAnson/markdownlint"},"children":["markdownlint"]}," and ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://vale.sh"},"children":["Vale"]}," in one tool and one configuration file."," ","This guide maps the configuration of each tool onto Recheck."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The first step is to ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/cli/v2/installation"},"children":["install Redocly CLI"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"replace-markdownlint","__idx":1},"children":["Replace markdownlint"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"update-the-command","__idx":2},"children":["Update the command"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markdownlint docs"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markdownlint-cli2 \"docs/**/*.md\""]}," with:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"redocly recheck docs\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--fix"]}," with the same flag:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"redocly recheck docs --fix\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"translate-the-configuration","__idx":3},"children":["Translate the configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every markdownlint rule has a Recheck rule with the same name under the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/"]}," prefix."," ","Start from the preset that matches your markdownlint style, then move each override from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".markdownlint.yaml"]}," into the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck"]}," block:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"markdownlint"},"children":["markdownlint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Recheck"},"children":["Recheck"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["default: true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["extends: [recheck/markdown]"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["extends: style/relaxed.json"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["extends: [recheck/markdown-relaxed]"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MD013: false"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/line-length: off"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MD013: { line_length: 120 }"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/line-length"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assertions.line-length.lineLength: 120"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blank_lines: false"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The five ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["blanks-around-*"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["no-multiple-blanks"]}," rules set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["off"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Option names use camel case instead of snake case: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["line_length"]}," becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lineLength"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["siblings_only"]}," becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["siblingsOnly"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For example, this ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".markdownlint.yaml"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"default: true\nMD004: false\nMD013:\n  line_length: 120\n  tables: false\nMD024:\n  siblings_only: true\nMD033: false\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["becomes this ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redocly.yaml"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"extends:\n  - recheck/markdown\nrecheck:\n  rules:\n    recheck/ul-style: off\n    recheck/line-length:\n      severity: error\n      assertions:\n        line-length:\n          lineLength: 120\n          tables: false\n    recheck/no-duplicate-heading:\n      severity: error\n      assertions:\n        no-duplicate-heading:\n          siblingsOnly: true\n    recheck/no-inline-html: off\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/cli/v2/recheck/rules"},"children":["Markdown rules"]}," page lists every rule with its markdownlint id and options."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"replace-inline-comments","__idx":4},"children":["Replace inline comments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Recheck does not read markdownlint's HTML comment directives."," ","Replace each one with the equivalent ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/cli/v2/recheck/suppress-findings#inline-directives"},"children":["Recheck directive"]},", written as an HTML comment in the same place:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"markdownlint comment"},"children":["markdownlint comment"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Recheck comment"},"children":["Recheck comment"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markdownlint-disable MD013"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck-disable line-length"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markdownlint-enable MD013"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck-enable line-length"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markdownlint-disable-next-line MD013"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck-disable-next-line line-length"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markdownlint-disable-file"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck-disable-file"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Recheck names rules by name, not by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MD"]}," id."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"two-differences-in-defaults","__idx":5},"children":["Two differences in defaults"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["no-trailing-spaces"]}," allows exactly two trailing spaces by default, because that is a Markdown hard line break."," ","Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["strict: true"]}," to report every trailing space, as markdownlint does."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["no-duplicate-heading"]}," adds the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["respectSections"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["caseSensitive"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ignoreCommonHeadings"]}," options."," ","Their defaults match markdownlint."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"replace-vale","__idx":6},"children":["Replace Vale"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"update-the-command-1","__idx":7},"children":["Update the command"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vale docs"]}," with the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck"]}," command."," ","Structural and prose rules run in one pass:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"redocly recheck docs\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"translate-styles","__idx":8},"children":["Translate styles"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A Vale style is a folder of YAML rule files."," ","Each file becomes one entry in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck.rules"]},", and the Vale ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["extends"]}," type becomes the Recheck assertion:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Vale extends"},"children":["Vale ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["extends"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Recheck assertion"},"children":["Recheck assertion"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["substitution"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["swap"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["existence"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pattern"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occurrence"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["occurrence"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["repetition"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["repetition"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consistency"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consistency"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditional"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conditional"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["capitalization"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["capitalization"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metric"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metric"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["spelling"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["spelling"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sequence"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No equivalent. These rules need part-of-speech tagging."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The other Vale keys map one to one: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}," stays ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["level"]}," becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["severity"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["suggestion"]}," becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["info"]},"), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]}," stays ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["link"]}," stays ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["link"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ignorecase"]}," becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ignoreCase"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nonword"]}," stays ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nonword"]},"."," ","Vale's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["swap"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tokens"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["either"]}," keys move under the assertion."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For example, this Vale rule in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["styles/Acme/BritishEnglish.yml"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"extends: substitution\nmessage: 'Use the US spelling \"%s\" instead of British \"%s\".'\nlevel: error\nignorecase: true\nswap:\n  colour: color\n  behaviour: behavior\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["becomes:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"recheck:\n  rules:\n    acme/british-english:\n      severity: error\n      scope: summary\n      message: 'Use the US spelling \"%s\" instead of British \"%s\".'\n      assertions:\n        swap:\n          ignoreCase: true\n          wordBoundary: true\n          pairs:\n            colour: color\n            behaviour: behavior\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Vale skips code by default, and Recheck's prose scopes do the same."," ","Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope: summary"]}," to read the document's prose, or a narrower scope such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sentence"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["heading"]},"."," ","The default scope ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["all"]}," reads the whole file, code included."," ","The ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/cli/v2/recheck/assertions"},"children":["Prose rules"]}," page lists every assertion and option."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"replace-packages","__idx":9},"children":["Replace packages"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Vale packages for the Google and Microsoft style guides have Recheck presets:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Vale package"},"children":["Vale package"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Recheck preset"},"children":["Recheck preset"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Google"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/google"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Microsoft"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/microsoft"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["alex"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Inclusive"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/inclusive-language"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["proselint"]}," (in part)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/plain-language"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["write-good"]}," (in part)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/prose"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck/plain-language"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The presets are adapted from the live style guides, not from the Vale packages, so their rule sets differ in detail."," ","See ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/cli/v2/recheck/presets"},"children":["Presets"]}," for what each one contains."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"replace-the-vocabulary","__idx":10},"children":["Replace the vocabulary"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Vale's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accept.txt"]}," becomes the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["exceptions"]}," list of a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["capitalization"]}," rule or the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vocab"]}," list of a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["spelling"]}," rule."," ","Vale's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reject.txt"]}," becomes a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pattern"]}," rule."," ","Recheck adds a built-in list of technical proper nouns to both, so most entries for product names are no longer needed."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"replace-in-text-comments","__idx":11},"children":["Replace in-text comments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Vale's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vale off"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vale on"]}," comments become ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck-disable"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck-enable"]},"."," ","A comment that turns one Vale rule off, such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vale Acme.Rule = NO"]},", becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["recheck-disable acme/rule"]},"."," ","Each one stays an HTML comment in the same place."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"run-both-tools-during-the-transition","__idx":12},"children":["Run both tools during the transition"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Recheck reports in the formats that CI expects: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["github-actions"]}," for pull request annotations, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sarif"]}," for code scanning, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["json"]}," for scripts."," ","Run Recheck next to the old tools for a few pull requests, compare the findings, then remove the old configuration."," ","A ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/cli/v2/recheck/suppress-findings#use-a-baseline"},"children":["baseline"]}," keeps the switch from failing the build on findings the old tools never reported."]}]},"frontmatter":{},"tagList":[],"title":"Migrate from markdownlint and Vale","lastModified":"2026-10-05T09:58:30.000Z"}